[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Dom0 PCI: fix SR-IOV function dependency link problem
On Wed, Jun 03, 2009 at 01:41:34PM +0800, Yu Zhao wrote: > PCIe Root Complex Integrated Endpoint does not implement ARI, so this > kind of endpoint uses 3-bit function number. The function dependency > link of the integrated endpoint should be calculated using the device > number field in conjunction with the value from function dependency > link register. > > Normal SR-IOV endpoint always implements ARI and the function dependency > link register contains 8-bit function number (i.e. `devfn' from software > perspective). > > Signed-off-by: Yu Zhao <yu.zhao@xxxxxxxxx> > # HG changeset patch > # User Yu Zhao <yu.zhao@xxxxxxxxx> > # Date 1244007161 -28800 > # Node ID 3a959a6975152b741389d2eed1823d55be4f2889 > # Parent ec3442c2ed48eb11fcacd3fe31af48932f0a6645 > PCI: fix SR-IOV function dependency link problem > > PCIe Root Complex Integrated Endpoint does not implement ARI, so this > kind of endpoint uses 3-bit function number. The function dependency > link of the integrated endpoint should be calculated using the device > number field in conjunction with the value from function dependency > link register. > > Normal SR-IOV endpoint always implements ARI and the function dependency > link register contains 8-bit function number (i.e. `devfn' from software > perspective). > > Signed-off-by: Yu Zhao <yu.zhao@xxxxxxxxx> > > diff -r ec3442c2ed48 -r 3a959a697515 drivers/pci/iov.c > --- a/drivers/pci/iov.c Wed Jun 03 13:30:08 2009 +0800 > +++ b/drivers/pci/iov.c Wed Jun 03 13:32:41 2009 +0800 > @@ -366,6 +366,8 @@ > iov->self = dev; > pci_read_config_dword(dev, pos + PCI_SRIOV_CAP, &iov->cap); > pci_read_config_byte(dev, pos + PCI_SRIOV_FUNC_LINK, &iov->link); > + if (!dev->bus->number) /* Root Complex Integrated Endpoint */ > + iov->link = PCI_DEVFN(PCI_SLOT(dev->devfn), iov->link); > > if (pdev) > iov->dev = pci_dev_get(pdev); Possibly the above check may work. But pci capability list should be examined. something like rpcap = pci_find_capability(pdev, PCI_CAP_ID_EXP); if (!rpcap) pci_read_config_word(pdev, rpcap + PCI_CAP_FLAGS, &cap); if (cap == PCI_EXP_TYPE_RC_END) ... thanks, -- yamahata _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |