bus/pci: assign driver pointer before mapping
Patch changing the way of accessing interrupt handle also changed order
of the rte_pci_map_device() call and rte_pci_device:driver assignment.
It was causing issues with Write Combine mapping on the Linux platform
if it was used with the igb_uio module.
Linux implementation of pci_uio_map_resource_by_index(), which is called
by rte_pci_map_device(), needs access to the device's driver. Otherwise
it won't be able to check the driver's flags and won't respect them.
Fixes: d61138d4f0
("drivers: remove direct access to interrupt handle")
Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
This commit is contained in:
parent
356a2aa054
commit
6b92f18468
@ -247,9 +247,12 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
dev->driver = dr;
|
||||
|
||||
if (dr->drv_flags & RTE_PCI_DRV_NEED_MAPPING) {
|
||||
ret = rte_pci_map_device(dev);
|
||||
if (ret != 0) {
|
||||
dev->driver = NULL;
|
||||
rte_intr_instance_free(dev->vfio_req_intr_handle);
|
||||
dev->vfio_req_intr_handle = NULL;
|
||||
rte_intr_instance_free(dev->intr_handle);
|
||||
@ -257,8 +260,6 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr,
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
dev->driver = dr;
|
||||
}
|
||||
|
||||
RTE_LOG(INFO, EAL, "Probe PCI driver: %s (%x:%x) device: "PCI_PRI_FMT" (socket %i)\n",
|
||||
|
Loading…
Reference in New Issue
Block a user