https://elixir.bootlin.com/linux/latest/source/include/linux/pci.h#L286
В
struct pci_dev,
Я вижу только шины и функции:
struct pci_bus *bus;
и
unsigned int devfn;
кажетсянет информации об устройстве (B / D / F)?
struct pci_slot *slot;
В моем тесте слот * указывает на NULL, почему?
Я нашел:
device = PCI_SLOT(pdev->devfn); fn = PCI_FUNC(pdev->devfn);
https://elixir.bootlin.com/linux/v3.5/source/include/linux/pci.h#L31
Devfn содержит номер устройства в битах 7: 3 и номер функции в битах 2: 0.Номер автобуса в автобусе -> номер.Итак, BDF:
bus->number << 8 | devfn
Я не знаю про слот;Возможно, устройство, которое вы смотрите, является интегрированным?