如何从struct pci_dev获取总线/设备/号码?

时间:2018-12-17 06:19:53

标签: linux driver pci

this

struct pci_dev,

我只能看到总线和功能:

struct pci_bus  *bus;   

unsigned int    devfn;  

似乎没有(B / D / F)的设备信息?

struct pci_slot *slot;

在我的测试中,*插槽指向NULL,为什么?

2 个答案:

答案 0 :(得分:0)

Devfn在第7:3位包含设备编号,在第2:0位包含功能编号。总线号在bus-> number中。所以BDF是

    bus->number << 8 | devfn

我不知道广告位;也许您正在查看的设备是集成设备?

答案 1 :(得分:0)

我发现:

device = PCI_SLOT(pdev->devfn);
fn =  PCI_FUNC(pdev->devfn);

https://elixir.bootlin.com/linux/v3.5/source/include/linux/pci.h#L31