When doing IO port map for legacy device in sencondary process,
vfio_cfg setup for leagacy device like vfio_group_fd and vfio_dev_fd
is missing. So, in sencondary process, rte_pci_map_device is added
for legacy device to setup vfio_cfg and fill region info like in
primary process.

Fixes: 512e27eeb743 ("net/virtio: move PCI specific dev init to PCI ethdev 
init")
Cc: sta...@dpdk.org

Signed-off-by: Miao Li <miao...@intel.com>
---
 drivers/net/virtio/virtio_pci_ethdev.c | 34 +++++++++++++-------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/net/virtio/virtio_pci_ethdev.c 
b/drivers/net/virtio/virtio_pci_ethdev.c
index 9b4b846f8a..dc11a6e82f 100644
--- a/drivers/net/virtio/virtio_pci_ethdev.c
+++ b/drivers/net/virtio/virtio_pci_ethdev.c
@@ -44,23 +44,23 @@ virtio_remap_pci(struct rte_pci_device *pci_dev, struct 
virtio_pci_dev *dev)
 {
        struct virtio_hw *hw = &dev->hw;
 
-       if (dev->modern) {
-               /*
-                * We don't have to re-parse the PCI config space, since
-                * rte_pci_map_device() makes sure the mapped address
-                * in secondary process would equal to the one mapped in
-                * the primary process: error will be returned if that
-                * requirement is not met.
-                *
-                * That said, we could simply reuse all cap pointers
-                * (such as dev_cfg, common_cfg, etc.) parsed from the
-                * primary process, which is stored in shared memory.
-                */
-               if (rte_pci_map_device(pci_dev)) {
-                       PMD_INIT_LOG(DEBUG, "failed to map pci device!");
-                       return -1;
-               }
-       } else {
+       /*
+        * We don't have to re-parse the PCI config space, since
+        * rte_pci_map_device() makes sure the mapped address
+        * in secondary process would equal to the one mapped in
+        * the primary process: error will be returned if that
+        * requirement is not met.
+        *
+        * That said, we could simply reuse all cap pointers
+        * (such as dev_cfg, common_cfg, etc.) parsed from the
+        * primary process, which is stored in shared memory.
+        */
+       if (rte_pci_map_device(pci_dev)) {
+               PMD_INIT_LOG(DEBUG, "failed to map pci device!");
+               return -1;
+       }
+
+       if (!dev->modern) {
                if (vtpci_legacy_ioport_map(hw) < 0)
                        return -1;
        }
-- 
2.25.1

Reply via email to