fix UIO resource mapping in secondary process
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com> (cherry picked from commit 995630c7cd13b2dd46372cc3ebe094c662723660)
This commit is contained in:
parent
2088b9623f
commit
c0a187635f
@ -0,0 +1,75 @@
|
||||
From 9e0a0e38ecaa7efaca9d349737d0a5ef9ca33a57 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] 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>
|
||||
---
|
||||
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 ff1b02b6bd..65f72b7cc6 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
|
||||
*/
|
||||
@@ -70,7 +78,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.21.0
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
|
||||
Name: dpdk
|
||||
Version: 23.11
|
||||
Release: 22
|
||||
Release: 23
|
||||
URL: http://dpdk.org
|
||||
Source: https://fast.dpdk.org/rel/dpdk-%{version}.tar.xz
|
||||
|
||||
@ -72,6 +72,8 @@ Patch9037: 0043-remove-symbol-for-examples-and-app.patch
|
||||
Patch6044: 0044-net-hns3-support-more-VLAN-fields-matching.patch
|
||||
Patch6045: 0045-net-hns3-add-Rx-DMA-address-align-check.patch
|
||||
|
||||
Patch6046: 0046-bus-pci-fix-UIO-resource-mapping-in-secondary-process.patch
|
||||
|
||||
BuildRequires: meson
|
||||
BuildRequires: python3-pyelftools
|
||||
BuildRequires: diffutils
|
||||
@ -275,6 +277,9 @@ fi
|
||||
/usr/sbin/depmod
|
||||
|
||||
%changelog
|
||||
* Fri Oct 11 2024 huangdengdui <huangdengui@huawei.com> - 23.11-23
|
||||
Fix UIO resource mapping in secondary process
|
||||
|
||||
* Wed Oct 09 2024 lifeifei <lifeifei@kylinos.cn> - 23.11-22
|
||||
create weak dependency for ko files
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user