RTE_LOG(DEBUG, EAL, " probe driver: %x:%x %s\n", dev->id.vendor_id,
dev->id.device_id, dr->driver.name);
- /*
- * reference driver structure
- * This needs to be before rte_pci_map_device(), as it enables to use
- * driver flags for adjusting configuration.
- */
if (!already_probed) {
enum rte_iova_mode dev_iova_mode;
enum rte_iova_mode iova_mode;
return -ENOMEM;
}
- if (dr->drv_flags & RTE_PCI_DRV_NEED_MAPPING) {
+ /*
+ * Reference driver structure.
+ * This needs to be before rte_pci_map_device(), as it enables
+ * to use driver flags for adjusting configuration.
+ */
+ dev->driver = dr;
+ if (dev->driver->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);
return ret;
}
}
-
- dev->driver = dr;
}
RTE_LOG(INFO, EAL, "Probe PCI driver: %s (%x:%x) device: "PCI_PRI_FMT" (socket %i)\n",