Architectural question regarding IOV support in Linux 3.13.4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux