LINUX.ORG.RU

pci_get_device возвращает NULL

 , ,


0

1

есть следующий код в модуле ядра

        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:
 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 также переданы верные?

★★★

В примере vendor_id и device_id у тебя переданы неверные. lspci выводит их в шестнадцатеричном формате.

Deleted
()
Ответ на: комментарий от Deleted

я это уже понял, но всё равно спасибо. вопрос решён.

dhampire ★★★
() автор топика

hostbridge = pci_get_device(8086, 1237, NULL);

может надо

hostbridge = pci_get_device(0x8086, 0x1237, NULL);

в шестнадцатиричной системе?

dimon555 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.