Merge branch 'pci/virtualization'
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 29 Jan 2020 23:00:01 +0000 (17:00 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 29 Jan 2020 23:00:01 +0000 (17:00 -0600)
  - Fix memory leak in pci_iov_add_virtfn() (Navid Emamdoost)

  - Extend pci_add_dma_alias() so it can add a range of aliases (James
    Sewart)

  - Add DMA aliases for PLX PEX NTB (James Sewart)

* pci/virtualization:
  PCI: Add DMA alias quirk for PLX PEX NTB
  PCI: Add nr_devfns parameter to pci_add_dma_alias()
  PCI: Fix pci_add_dma_alias() bitmask size
  PCI/IOV: Fix memory leak in pci_iov_add_virtfn()

1  2 
drivers/pci/pci.c
drivers/pci/quirks.c

Simple merge
@@@ -5368,26 -5368,23 +5363,41 @@@ SWITCHTEC_QUIRK(0x8573);  /* PFXI 48XG
  SWITCHTEC_QUIRK(0x8574);  /* PFXI 64XG3 */
  SWITCHTEC_QUIRK(0x8575);  /* PFXI 80XG3 */
  SWITCHTEC_QUIRK(0x8576);  /* PFXI 96XG3 */
 +SWITCHTEC_QUIRK(0x4000);  /* PFX 100XG4 */
 +SWITCHTEC_QUIRK(0x4084);  /* PFX 84XG4  */
 +SWITCHTEC_QUIRK(0x4068);  /* PFX 68XG4  */
 +SWITCHTEC_QUIRK(0x4052);  /* PFX 52XG4  */
 +SWITCHTEC_QUIRK(0x4036);  /* PFX 36XG4  */
 +SWITCHTEC_QUIRK(0x4028);  /* PFX 28XG4  */
 +SWITCHTEC_QUIRK(0x4100);  /* PSX 100XG4 */
 +SWITCHTEC_QUIRK(0x4184);  /* PSX 84XG4  */
 +SWITCHTEC_QUIRK(0x4168);  /* PSX 68XG4  */
 +SWITCHTEC_QUIRK(0x4152);  /* PSX 52XG4  */
 +SWITCHTEC_QUIRK(0x4136);  /* PSX 36XG4  */
 +SWITCHTEC_QUIRK(0x4128);  /* PSX 28XG4  */
 +SWITCHTEC_QUIRK(0x4200);  /* PAX 100XG4 */
 +SWITCHTEC_QUIRK(0x4284);  /* PAX 84XG4  */
 +SWITCHTEC_QUIRK(0x4268);  /* PAX 68XG4  */
 +SWITCHTEC_QUIRK(0x4252);  /* PAX 52XG4  */
 +SWITCHTEC_QUIRK(0x4236);  /* PAX 36XG4  */
 +SWITCHTEC_QUIRK(0x4228);  /* PAX 28XG4  */
  
  /*
+  * The PLX NTB uses devfn proxy IDs to move TLPs between NT endpoints.
+  * These IDs are used to forward responses to the originator on the other
+  * side of the NTB.  Alias all possible IDs to the NTB to permit access when
+  * the IOMMU is turned on.
+  */
+ static void quirk_plx_ntb_dma_alias(struct pci_dev *pdev)
+ {
+       pci_info(pdev, "Setting PLX NTB proxy ID aliases\n");
+       /* PLX NTB may use all 256 devfns */
+       pci_add_dma_alias(pdev, 0, 256);
+ }
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b0, quirk_plx_ntb_dma_alias);
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b1, quirk_plx_ntb_dma_alias);
+ /*
   * On Lenovo Thinkpad P50 SKUs with a Nvidia Quadro M1000M, the BIOS does
   * not always reset the secondary Nvidia GPU between reboots if the system
   * is configured to use Hybrid Graphics mode.  This results in the GPU