есть следующий код в модуле ядра
struct pci_dev *hostbridge;
hostbridge = pci_get_device(8086, 1237, NULL);
if (NULL == hostbridge)
printk ("hostbridge == NULL");
else if (NULL != hostbridge && hostbridge->revision != 02)
printk("hostbridge->revision: %d", hostbridge->revision);
ядро собирается и запускается на одной машине
вывод lspci:
lspci -nn | grep 8086 | grep 1237
00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
dmesg | grep host
[ 0.149511] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[ 0.150655] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored)
[ 0.150663] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored)
[ 0.150671] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[ 0.150679] pci_root PNP0A03:00: host bridge window [mem 0x40000000-0xffdfffff] (ignored)
[ 0.150739] PCI host bridge to bus 0000:00
[ 1.230825] hostbridge == NULL
По каким причинам pci_get_device может возвращать NULL, при условии что искомый device существует и vendor_id & device_id также переданы верные?