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
|
Name: dpdk
|
||||||
Version: 23.11
|
Version: 23.11
|
||||||
Release: 22
|
Release: 23
|
||||||
URL: http://dpdk.org
|
URL: http://dpdk.org
|
||||||
Source: https://fast.dpdk.org/rel/dpdk-%{version}.tar.xz
|
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
|
Patch6044: 0044-net-hns3-support-more-VLAN-fields-matching.patch
|
||||||
Patch6045: 0045-net-hns3-add-Rx-DMA-address-align-check.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: meson
|
||||||
BuildRequires: python3-pyelftools
|
BuildRequires: python3-pyelftools
|
||||||
BuildRequires: diffutils
|
BuildRequires: diffutils
|
||||||
@ -275,6 +277,9 @@ fi
|
|||||||
/usr/sbin/depmod
|
/usr/sbin/depmod
|
||||||
|
|
||||||
%changelog
|
%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
|
* Wed Oct 09 2024 lifeifei <lifeifei@kylinos.cn> - 23.11-22
|
||||||
create weak dependency for ko files
|
create weak dependency for ko files
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user