diff --git a/0484-bus-pci-fix-UIO-resource-mapping-in-secondary-proces.patch b/0484-bus-pci-fix-UIO-resource-mapping-in-secondary-proces.patch new file mode 100644 index 0000000000000000000000000000000000000000..7a7aeb376a16b5b4b90457c093162675e73ee2d8 --- /dev/null +++ b/0484-bus-pci-fix-UIO-resource-mapping-in-secondary-proces.patch @@ -0,0 +1,77 @@ +From d322cdf1a702fe56219c059dae9e360b1a3f0f8b Mon Sep 17 00:00:00 2001 +From: Zerun Fu +Date: Tue, 2 Jul 2024 15:40:06 +0800 +Subject: [PATCH 484/485] bus/pci: fix UIO resource mapping in secondary + process + +[ upstream commit 9e0a0e38ecaa7efaca9d349737d0a5ef9ca33a57 ] + +For the primary process, the logic loops all BARs and will skip +the map of BAR with an invalid physical address (0), also will +assign 'uio_res->nb_maps' with the real mapped BARs number. But +for the secondary process, instead of loops all BARs, the logic +using the 'uio_res->nb_map' as index. If the device uses continuous +BARs there will be no problem, whereas if it uses discrete BARs, +it will lead to mapping errors. + +Fix this problem by also loops all BARs and skip the map of BAR +with an invalid physical address in secondary process. + +Fixes: 9b957f378abf ("pci: merge uio functions for linux and bsd") +Cc: stable@dpdk.org + +Signed-off-by: Zerun Fu +Reviewed-by: Chaoyong He +Reviewed-by: Long Wu +Reviewed-by: Peng Zhang +Acked-by: Anatoly Burakov +Reviewed-by: Chenbo Xia +Signed-off-by: chenyi +--- + drivers/bus/pci/pci_common_uio.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/drivers/bus/pci/pci_common_uio.c b/drivers/bus/pci/pci_common_uio.c +index 76c661f054..f44ccdf27c 100644 +--- a/drivers/bus/pci/pci_common_uio.c ++++ b/drivers/bus/pci/pci_common_uio.c +@@ -26,7 +26,7 @@ EAL_REGISTER_TAILQ(rte_uio_tailq) + static int + pci_uio_map_secondary(struct rte_pci_device *dev) + { +- int fd, i, j; ++ int fd, i = 0, j, res_idx; + struct mapped_pci_resource *uio_res; + struct mapped_pci_res_list *uio_res_list = + RTE_TAILQ_CAST(rte_uio_tailq.head, mapped_pci_res_list); +@@ -37,7 +37,15 @@ pci_uio_map_secondary(struct rte_pci_device *dev) + if (rte_pci_addr_cmp(&uio_res->pci_addr, &dev->addr)) + continue; + +- for (i = 0; i != uio_res->nb_maps; i++) { ++ /* Map all BARs */ ++ for (res_idx = 0; res_idx != PCI_MAX_RESOURCE; res_idx++) { ++ /* skip empty BAR */ ++ if (dev->mem_resource[res_idx].phys_addr == 0) ++ continue; ++ ++ if (i >= uio_res->nb_maps) ++ return -1; ++ + /* + * open devname, to mmap it + */ +@@ -71,7 +79,9 @@ pci_uio_map_secondary(struct rte_pci_device *dev) + } + return -1; + } +- dev->mem_resource[i].addr = mapaddr; ++ dev->mem_resource[res_idx].addr = mapaddr; ++ ++ i++; + } + return 0; + } +-- +2.33.0 + diff --git a/dpdk.spec b/dpdk.spec index a01b730c071d7f56a7aed589da4c0c04a19cbd8e..f643f80efb8f2e04220557efa62d8348e8584085 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,6 +1,6 @@ Name: dpdk Version: 21.11 -Release: 77 +Release: 78 Packager: packaging@6wind.com URL: http://dpdk.org %global source_version 21.11 @@ -519,6 +519,8 @@ Patch9482: 0482-af_xdp-del-XDP_USE_SG-and-XDP_PKT_CONTD-definition.patch Patch9483: 0483-af_xdp-fix-mbuf-ol_flags-not-init.patch +Patch9484: 0484-bus-pci-fix-UIO-resource-mapping-in-secondary-proces.patch + Summary: Data Plane Development Kit core Group: System Environment/Libraries License: BSD and LGPLv2 and GPLv2 @@ -685,6 +687,10 @@ fi /usr/sbin/depmod %changelog +* Wed Oct 23 2024 chenyi - 21.11-78 + Sync some patches from upstream about bugfix, modifies are as follow: +- bus/pci: fix UIO resource mapping in secondary process + * Wed Oct 09 2024 jiangheng - 21.11-77 af_xdp: fix mbuf ol_flags not init