Index: sys/compat/linuxkpi/common/include/linux/pci.h =================================================================== --- sys/compat/linuxkpi/common/include/linux/pci.h +++ sys/compat/linuxkpi/common/include/linux/pci.h @@ -211,6 +211,8 @@ struct device_driver driver; const struct pci_error_handlers *err_handler; bool isdrm; + bool bsd_has_bus_probe_return; + int bsd_bus_probe_return; int (*bsd_iov_init)(device_t dev, uint16_t num_vfs, const nvlist_t *pf_config); void (*bsd_iov_uninit)(device_t dev); Index: sys/compat/linuxkpi/common/src/linux_pci.c =================================================================== --- sys/compat/linuxkpi/common/src/linux_pci.c +++ sys/compat/linuxkpi/common/src/linux_pci.c @@ -361,6 +361,9 @@ if (device_get_driver(dev) != &pdrv->bsddriver) return (ENXIO); device_set_desc(dev, pdrv->name); + /* 0 is a valid return so check the extra boolean to be set. */ + if (pdrv->bsd_has_bus_probe_return) + return (pdrv->bsd_bus_probe_return); return (BUS_PROBE_DEFAULT); }