pci: quirk: adding Ampere vendor id to ACS quirk list

Message ID 1516923367-28197-1-git-send-email-fkan@apm.com
State Changes Requested
Headers show
Series
  • pci: quirk: adding Ampere vendor id to ACS quirk list
Related show

Commit Message

Feng Kan Jan. 25, 2018, 11:36 p.m.
Adding Ampere Computing vendor id to the ACS quirk list.

Signed-off-by: Feng Kan <fkan@apm.com>
---
 Tanmay is no longer with us. After the email system is rebranded
 to the new company. We will clean up the remaining legacy items.

 drivers/pci/quirks.c    | 9 +++++++++
 include/linux/pci_ids.h | 1 +
 2 files changed, 10 insertions(+)

Comments

Bjorn Helgaas Feb. 16, 2018, 12:30 a.m. | #1
On Thu, Jan 25, 2018 at 03:36:07PM -0800, Feng Kan wrote:
> Adding Ampere Computing vendor id to the ACS quirk list.

I assume these new devices provide isolation and source validation the
same way the X-Gene devices do:

  commit a0418aa262df
  Author: Feng Kan <fkan@apm.com>
  Date:   Thu Aug 10 16:06:33 2017 -0500

    PCI: Add ACS quirk for APM X-Gene devices
    
    The APM X-Gene PCIe root port does not support ACS at this point.  However,
    the hardware provides isolation and source validation through the SMMU.
    The stream ID generated by the PCIe ports contain both the bus/device/
    function number as well as the port ID in its 3 most significant bits.
    Turn on ACS but disable all the peer-to-peer features.

If so, please repost this patch with subject and changelog similar
to the above.  I want an explicit statement about how you provide
protection equivalent to ACS so it's clear this isn't a patch that
just makes things "work" at the expense of security.

> Signed-off-by: Feng Kan <fkan@apm.com>
> ---
>  Tanmay is no longer with us. After the email system is rebranded
>  to the new company. We will clean up the remaining legacy items.
> 
>  drivers/pci/quirks.c    | 9 +++++++++
>  include/linux/pci_ids.h | 1 +
>  2 files changed, 10 insertions(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 10684b1..45d9187 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -4512,6 +4512,15 @@ static const struct pci_dev_acs_enabled {
>  	{ PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
>  	/* APM X-Gene */
>  	{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
> +	/* Ampere Computing */
> +	{ PCI_VENDOR_ID_AMPERE, 0xE005, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE006, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE007, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE008, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE009, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE00A, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE00B, pci_quirk_xgene_acs },
> +	{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
>  	{ 0 }
>  };
>  
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> index ab20dc5..c21d1f8 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -1331,6 +1331,7 @@
>  #define PCI_DEVICE_ID_IMS_TT3D		0x9135
>  
>  #define PCI_VENDOR_ID_AMCC		0x10e8
> +#define PCI_VENDOR_ID_AMPERE		0x1def
>  
>  #define PCI_VENDOR_ID_INTERG		0x10ea
>  #define PCI_DEVICE_ID_INTERG_1682	0x1682
> -- 
> 2.7.4
>

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 10684b1..45d9187 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4512,6 +4512,15 @@  static const struct pci_dev_acs_enabled {
 	{ PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
 	/* APM X-Gene */
 	{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
+	/* Ampere Computing */
+	{ PCI_VENDOR_ID_AMPERE, 0xE005, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE006, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE007, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE008, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE009, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE00A, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE00B, pci_quirk_xgene_acs },
+	{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
 	{ 0 }
 };
 
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ab20dc5..c21d1f8 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1331,6 +1331,7 @@ 
 #define PCI_DEVICE_ID_IMS_TT3D		0x9135
 
 #define PCI_VENDOR_ID_AMCC		0x10e8
+#define PCI_VENDOR_ID_AMPERE		0x1def
 
 #define PCI_VENDOR_ID_INTERG		0x10ea
 #define PCI_DEVICE_ID_INTERG_1682	0x1682