Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/117840 _apply patch failure_ Submitter: Andrew Boyer Date: Tuesday, October 11 2022 00:50:09 Applied on: CommitID:f13604fad12a81383da7b04821a4befb3d01e2ed Apply patch set 117840 failed: Checking patch drivers/net/ionic/ionic.h... error: while searching for: bool intrs[IONIC_INTR_CTRL_REGS_MAX]; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; struct rte_pci_device *pci_dev; }; /** ionic_admin_ctx - Admin command context. error: patch failed: drivers/net/ionic/ionic.h:61 Checking patch drivers/net/ionic/ionic_dev.c... error: while searching for: #include "ionic_lif.h" #include "ionic.h" int ionic_dev_setup(struct ionic_adapter *adapter) { struct ionic_dev_bar *bar = adapter->bars; unsigned int num_bars = adapter->num_bars; struct ionic_dev *idev = &adapter->idev; uint32_t sig; u_char *bar0_base; unsigned int i; /* BAR0: dev_cmd and interrupts */ if (num_bars < 1) { IONIC_PRINT(ERR, "No bars found, aborting"); return -EFAULT; } if (bar->len < IONIC_BAR0_SIZE) { IONIC_PRINT(ERR, "Resource bar size %lu too small, aborting", bar->len); return -EFAULT; } bar0_base = bar->vaddr; idev->dev_info = (union ionic_dev_info_regs *) &bar0_base[IONIC_BAR0_DEV_INFO_REGS_OFFSET]; idev->dev_cmd = (union ionic_dev_cmd_regs *) &bar0_base[IONIC_BAR0_DEV_CMD_REGS_OFFSET]; idev->intr_status = (struct ionic_intr_status *) &bar0_base[IONIC_BAR0_INTR_STATUS_OFFSET]; idev->intr_ctrl = (struct ionic_intr *) &bar0_base[IONIC_BAR0_INTR_CTRL_OFFSET]; sig = ioread32(&idev->dev_info->signature); if (sig != IONIC_DEV_INFO_SIGNATURE) { IONIC_PRINT(ERR, "Incompatible firmware signature %" PRIx32 "", sig); return -EFAULT; } for (i = 0; i < IONIC_DEVINFO_FWVERS_BUFLEN; i++) adapter->fw_version[i] = ioread8(&idev->dev_info->fw_version[i]); adapter->fw_version[IONIC_DEVINFO_FWVERS_BUFLEN - 1] = '\0'; adapter->name = adapter->pci_dev->device.name; IONIC_PRINT(DEBUG, "%s firmware version: %s", adapter->name, adapter->fw_version); /* BAR1: doorbells */ bar++; if (num_bars < 2) { IONIC_PRINT(ERR, "Doorbell bar missing, aborting"); return -EFAULT; } idev->db_pages = bar->vaddr; return 0; } /* Devcmd Interface */ uint8_t error: patch failed: drivers/net/ionic/ionic_dev.c:10 Checking patch drivers/net/ionic/ionic_dev.h... Hunk #1 succeeded at 172 (offset -1 lines). Checking patch drivers/net/ionic/ionic_dev_pci.c... Checking patch drivers/net/ionic/ionic_ethdev.c... error: while searching for: * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ #include #include #include #include #include #include #include "ionic_logs.h" #include "ionic.h" error: patch failed: drivers/net/ionic/ionic_ethdev.c:2 Hunk #2 succeeded at 57 (offset 3 lines). Hunk #3 succeeded at 321 (offset 3 lines). Hunk #4 succeeded at 927 (offset -9 lines). Hunk #5 succeeded at 945 (offset -9 lines). Hunk #6 succeeded at 978 (offset -9 lines). error: while searching for: return 0; } static int ionic_configure_intr(struct ionic_adapter *adapter) { struct rte_pci_device *pci_dev = adapter->pci_dev; struct rte_intr_handle *intr_handle = pci_dev->intr_handle; int err; IONIC_PRINT(DEBUG, "Configuring %u intrs", adapter->nintrs); if (rte_intr_efd_enable(intr_handle, adapter->nintrs)) { IONIC_PRINT(ERR, "Fail to create eventfd"); return -1; } if (rte_intr_dp_is_en(intr_handle)) { IONIC_PRINT(DEBUG, "Packet I/O interrupt on datapath is enabled"); if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", adapter->nintrs)) { IONIC_PRINT(ERR, "Failed to allocate %u vectors", adapter->nintrs); return -ENOMEM; } } err = rte_intr_callback_register(intr_handle, ionic_dev_interrupt_handler, adapter); if (err) { IONIC_PRINT(ERR, "Failure registering interrupts handler (%d)", err); return err; } /* enable intr mapping */ err = rte_intr_enable(intr_handle); if (err) { IONIC_PRINT(ERR, "Failure enabling interrupts (%d)", err); return err; } return 0; } static void ionic_unconfigure_intr(struct ionic_adapter *adapter) { struct rte_pci_device *pci_dev = adapter->pci_dev; struct rte_intr_handle *intr_handle = pci_dev->intr_handle; rte_intr_disable(intr_handle); rte_intr_callback_unregister(intr_handle, ionic_dev_interrupt_handler, adapter); } static int eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) { char name[RTE_ETH_NAME_MAX_LEN]; struct rte_mem_resource *resource; struct ionic_adapter *adapter; struct ionic_hw *hw; unsigned long i; error: patch failed: drivers/net/ionic/ionic_ethdev.c:1068 Hunk #8 succeeded at 1129 (offset 50 lines). Hunk #9 succeeded at 1136 (offset 50 lines). Hunk #10 succeeded at 1150 (offset 50 lines). Hunk #11 succeeded at 1221 (offset 50 lines). Hunk #12 succeeded at 1245 (offset 50 lines). Checking patch drivers/net/ionic/ionic_ethdev.h... error: while searching for: #define IONIC_ETH_DEV_TO_LIF(eth_dev) ((struct ionic_lif *) \ (eth_dev)->data->dev_private) int ionic_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete); #endif /* _IONIC_ETHDEV_H_ */ error: patch failed: drivers/net/ionic/ionic_ethdev.h:18 Checking patch drivers/net/ionic/ionic_main.c... Checking patch drivers/net/ionic/meson.build... Applying patch drivers/net/ionic/ionic.h with 1 reject... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Rejected hunk #4. Applying patch drivers/net/ionic/ionic_dev.c with 1 reject... Rejected hunk #1. Applied patch drivers/net/ionic/ionic_dev.h cleanly. Applied patch drivers/net/ionic/ionic_dev_pci.c cleanly. Applying patch drivers/net/ionic/ionic_ethdev.c with 2 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Hunk #6 applied cleanly. Rejected hunk #7. Hunk #8 applied cleanly. Hunk #9 applied cleanly. Hunk #10 applied cleanly. Hunk #11 applied cleanly. Hunk #12 applied cleanly. Applying patch drivers/net/ionic/ionic_ethdev.h with 1 reject... Rejected hunk #1. Applied patch drivers/net/ionic/ionic_main.c cleanly. Applied patch drivers/net/ionic/meson.build cleanly. diff a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h (rejected hunks) @@ -61,7 +64,7 @@ struct ionic_adapter { bool intrs[IONIC_INTR_CTRL_REGS_MAX]; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; - struct rte_pci_device *pci_dev; + void *bus_dev; }; /** ionic_admin_ctx - Admin command context. diff a/drivers/net/ionic/ionic_dev.c b/drivers/net/ionic/ionic_dev.c (rejected hunks) @@ -10,68 +10,6 @@ #include "ionic_lif.h" #include "ionic.h" -int -ionic_dev_setup(struct ionic_adapter *adapter) -{ - struct ionic_dev_bar *bar = adapter->bars; - unsigned int num_bars = adapter->num_bars; - struct ionic_dev *idev = &adapter->idev; - uint32_t sig; - u_char *bar0_base; - unsigned int i; - - /* BAR0: dev_cmd and interrupts */ - if (num_bars < 1) { - IONIC_PRINT(ERR, "No bars found, aborting"); - return -EFAULT; - } - - if (bar->len < IONIC_BAR0_SIZE) { - IONIC_PRINT(ERR, - "Resource bar size %lu too small, aborting", - bar->len); - return -EFAULT; - } - - bar0_base = bar->vaddr; - idev->dev_info = (union ionic_dev_info_regs *) - &bar0_base[IONIC_BAR0_DEV_INFO_REGS_OFFSET]; - idev->dev_cmd = (union ionic_dev_cmd_regs *) - &bar0_base[IONIC_BAR0_DEV_CMD_REGS_OFFSET]; - idev->intr_status = (struct ionic_intr_status *) - &bar0_base[IONIC_BAR0_INTR_STATUS_OFFSET]; - idev->intr_ctrl = (struct ionic_intr *) - &bar0_base[IONIC_BAR0_INTR_CTRL_OFFSET]; - - sig = ioread32(&idev->dev_info->signature); - if (sig != IONIC_DEV_INFO_SIGNATURE) { - IONIC_PRINT(ERR, "Incompatible firmware signature %" PRIx32 "", - sig); - return -EFAULT; - } - - for (i = 0; i < IONIC_DEVINFO_FWVERS_BUFLEN; i++) - adapter->fw_version[i] = - ioread8(&idev->dev_info->fw_version[i]); - adapter->fw_version[IONIC_DEVINFO_FWVERS_BUFLEN - 1] = '\0'; - - adapter->name = adapter->pci_dev->device.name; - - IONIC_PRINT(DEBUG, "%s firmware version: %s", - adapter->name, adapter->fw_version); - - /* BAR1: doorbells */ - bar++; - if (num_bars < 2) { - IONIC_PRINT(ERR, "Doorbell bar missing, aborting"); - return -EFAULT; - } - - idev->db_pages = bar->vaddr; - - return 0; -} - /* Devcmd Interface */ uint8_t diff a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c (rejected hunks) @@ -2,12 +2,9 @@ * Copyright 2018-2022 Advanced Micro Devices, Inc. All Rights Reserved. */ -#include -#include #include #include #include -#include #include "ionic_logs.h" #include "ionic.h" @@ -1068,73 +1059,12 @@ eth_ionic_dev_uninit(struct rte_eth_dev *eth_dev) return 0; } -static int -ionic_configure_intr(struct ionic_adapter *adapter) -{ - struct rte_pci_device *pci_dev = adapter->pci_dev; - struct rte_intr_handle *intr_handle = pci_dev->intr_handle; - int err; - - IONIC_PRINT(DEBUG, "Configuring %u intrs", adapter->nintrs); - - if (rte_intr_efd_enable(intr_handle, adapter->nintrs)) { - IONIC_PRINT(ERR, "Fail to create eventfd"); - return -1; - } - - if (rte_intr_dp_is_en(intr_handle)) { - IONIC_PRINT(DEBUG, - "Packet I/O interrupt on datapath is enabled"); - - if (rte_intr_vec_list_alloc(intr_handle, "intr_vec", - adapter->nintrs)) { - IONIC_PRINT(ERR, "Failed to allocate %u vectors", - adapter->nintrs); - return -ENOMEM; - } - } - - err = rte_intr_callback_register(intr_handle, - ionic_dev_interrupt_handler, - adapter); - - if (err) { - IONIC_PRINT(ERR, - "Failure registering interrupts handler (%d)", - err); - return err; - } - - /* enable intr mapping */ - err = rte_intr_enable(intr_handle); - - if (err) { - IONIC_PRINT(ERR, "Failure enabling interrupts (%d)", err); - return err; - } - - return 0; -} - -static void -ionic_unconfigure_intr(struct ionic_adapter *adapter) -{ - struct rte_pci_device *pci_dev = adapter->pci_dev; - struct rte_intr_handle *intr_handle = pci_dev->intr_handle; - - rte_intr_disable(intr_handle); - - rte_intr_callback_unregister(intr_handle, - ionic_dev_interrupt_handler, - adapter); -} - -static int -eth_ionic_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, - struct rte_pci_device *pci_dev) +int +eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, + struct ionic_bars *bars, const struct ionic_dev_intf *intf, + uint16_t device_id, uint16_t vendor_id) { char name[RTE_ETH_NAME_MAX_LEN]; - struct rte_mem_resource *resource; struct ionic_adapter *adapter; struct ionic_hw *hw; unsigned long i; diff a/drivers/net/ionic/ionic_ethdev.h b/drivers/net/ionic/ionic_ethdev.h (rejected hunks) @@ -18,6 +18,15 @@ #define IONIC_ETH_DEV_TO_LIF(eth_dev) ((struct ionic_lif *) \ (eth_dev)->data->dev_private) +struct ionic_bars; +struct ionic_dev_intf; + +int eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, + struct ionic_bars *bars, const struct ionic_dev_intf *intf, + uint16_t device_id, uint16_t vendor_id); +int eth_ionic_dev_remove(struct rte_device *rte_dev); + +void ionic_dev_interrupt_handler(void *param); int ionic_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete); #endif /* _IONIC_ETHDEV_H_ */ https://lab.dpdk.org/results/dashboard/patchsets/23881/ UNH-IOL DPDK Community Lab