I am working with SR-IOV and I have a question regarding the function sriov_init() in ../drivers/pci/iov.c (linux versions 3.4.9 and 3.13.4) In sriov_init() the code first checks whether the PF is a Root complex endpoint (0x9) or an Express Endpoint (0x0) as shown in the code snippet below. If it is neither it returns the No device error. static int sriov_init(struct pci_dev *dev, int pos) { int i; int rc; int nres; u32 pgsz; u16 ctrl, total, offset, stride; struct pci_sriov *iov; struct resource *res; struct pci_dev *pdev; if (pci_pcie_type(dev) != PCI_EXP_TYPE_RC_END && pci_pcie_type(dev) != PCI_EXP_TYPE_ENDPOINT) return -ENODEV; My question is why PCI_EXP_TYPE_LEG_END (0x1) is omitted as being a valid endpoint. By excluding Legacy endpoints it fails enabling SR-IOV on a VGA PF. Is there a design/specification reason why legacy was excluded or was it just an assumption that VGA would never support SR-IOV? If there is no valid reason to exclude PCI_EXP_TYPE_LEG_END, I would like to discuss having it included as a valid endpoint for SR-IOV. Thanks, Kelly -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html