如何从结构 pci_dev 中获取 bus/device/number?
How to get bus/device/number from struct pci_dev?
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;
在我的测试中,*slot 指向 NULL,为什么?
Devfn 包含 7:3 位的设备编号和 2:0 位的功能编号。总线编号在总线-> 编号中。所以 BDF 是
bus->number << 8 | devfn
我不知道插槽;也许您正在查看的设备是集成设备?
我发现:
device = PCI_SLOT(pdev->devfn);
fn = PCI_FUNC(pdev->devfn);
https://elixir.bootlin.com/linux/v3.5/source/include/linux/pci.h#L31
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;
在我的测试中,*slot 指向 NULL,为什么?
Devfn 包含 7:3 位的设备编号和 2:0 位的功能编号。总线编号在总线-> 编号中。所以 BDF 是
bus->number << 8 | devfn
我不知道插槽;也许您正在查看的设备是集成设备?
我发现:
device = PCI_SLOT(pdev->devfn);
fn = PCI_FUNC(pdev->devfn);
https://elixir.bootlin.com/linux/v3.5/source/include/linux/pci.h#L31