!659 [sync] PR-657: Sync DPDK upstream patch about bugfix

From: @openeuler-sync-bot 
Reviewed-by: @li-huisong 
Signed-off-by: @li-huisong
This commit is contained in:
openeuler-ci-bot 2024-10-28 06:51:08 +00:00 committed by Gitee
commit d785f482df
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 84 additions and 1 deletions

View File

@ -0,0 +1,77 @@
From d322cdf1a702fe56219c059dae9e360b1a3f0f8b Mon Sep 17 00:00:00 2001
From: Zerun Fu <zerun.fu@corigine.com>
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 <zerun.fu@corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Chenbo Xia <chenbox@nvidia.com>
Signed-off-by: chenyi <chenyi211@huawei.com>
---
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

View File

@ -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 <chenyi211@huawei.com> - 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 <jiangheng14@huawei.com> - 21.11-77
af_xdp: fix mbuf ol_flags not init