diff mbox series

PCI: Add ACS quirk for Broadcom BCM5750x NICs

Message ID 1654796507-28610-1-git-send-email-michael.chan@broadcom.com (mailing list archive)
State Not Applicable
Headers show
Series PCI: Add ACS quirk for Broadcom BCM5750x NICs | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Michael Chan June 9, 2022, 5:41 p.m. UTC
From: Pavan Chebbi <pavan.chebbi@broadcom.com>

The Broadcom BCM5750x NICs may be multi-function devices.  They do
not advertise ACS capability. Peer-to-peer transactions are not
possible between the individual functions, so it is safe to treat
them as fully isolated.

Add an ACS quirk for these devices so the functions can be in
independent IOMMU groups and attached individually to userspace
applications using VFIO.

Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/pci/quirks.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Bjorn Helgaas June 9, 2022, 6:58 p.m. UTC | #1
On Thu, Jun 09, 2022 at 01:41:47PM -0400, Michael Chan wrote:
> From: Pavan Chebbi <pavan.chebbi@broadcom.com>
> 
> The Broadcom BCM5750x NICs may be multi-function devices.  They do
> not advertise ACS capability. Peer-to-peer transactions are not
> possible between the individual functions, so it is safe to treat
> them as fully isolated.
> 
> Add an ACS quirk for these devices so the functions can be in
> independent IOMMU groups and attached individually to userspace
> applications using VFIO.
> 
> Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
> Signed-off-by: Michael Chan <michael.chan@broadcom.com>

Applied to pci/virtualization for v5.20, thanks!

> ---
>  drivers/pci/quirks.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 41aeaa235132..2e68f50bc7ae 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -4924,6 +4924,9 @@ static const struct pci_dev_acs_enabled {
>  	{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
>  	/* Broadcom multi-function device */
>  	{ PCI_VENDOR_ID_BROADCOM, 0x16D7, pci_quirk_mf_endpoint_acs },
> +	{ PCI_VENDOR_ID_BROADCOM, 0x1750, pci_quirk_mf_endpoint_acs },
> +	{ PCI_VENDOR_ID_BROADCOM, 0x1751, pci_quirk_mf_endpoint_acs },
> +	{ PCI_VENDOR_ID_BROADCOM, 0x1752, pci_quirk_mf_endpoint_acs },
>  	{ PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs },
>  	/* Amazon Annapurna Labs */
>  	{ PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs },
> -- 
> 2.18.1
>
Bjorn Helgaas June 14, 2022, 12:15 a.m. UTC | #2
On Thu, Jun 09, 2022 at 01:58:13PM -0500, Bjorn Helgaas wrote:
> On Thu, Jun 09, 2022 at 01:41:47PM -0400, Michael Chan wrote:
> > From: Pavan Chebbi <pavan.chebbi@broadcom.com>
> > 
> > The Broadcom BCM5750x NICs may be multi-function devices.  They do
> > not advertise ACS capability. Peer-to-peer transactions are not
> > possible between the individual functions, so it is safe to treat
> > them as fully isolated.
> > 
> > Add an ACS quirk for these devices so the functions can be in
> > independent IOMMU groups and attached individually to userspace
> > applications using VFIO.
> > 
> > Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
> > Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> 
> Applied to pci/virtualization for v5.20, thanks!

I forgot to ask: is there a plan for future devices to include an ACS
capability?  Or will we be stuck adding quirks forever?

> > ---
> >  drivers/pci/quirks.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > index 41aeaa235132..2e68f50bc7ae 100644
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
> > @@ -4924,6 +4924,9 @@ static const struct pci_dev_acs_enabled {
> >  	{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
> >  	/* Broadcom multi-function device */
> >  	{ PCI_VENDOR_ID_BROADCOM, 0x16D7, pci_quirk_mf_endpoint_acs },
> > +	{ PCI_VENDOR_ID_BROADCOM, 0x1750, pci_quirk_mf_endpoint_acs },
> > +	{ PCI_VENDOR_ID_BROADCOM, 0x1751, pci_quirk_mf_endpoint_acs },
> > +	{ PCI_VENDOR_ID_BROADCOM, 0x1752, pci_quirk_mf_endpoint_acs },
> >  	{ PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs },
> >  	/* Amazon Annapurna Labs */
> >  	{ PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs },
> > -- 
> > 2.18.1
> > 
> 
>
Michael Chan June 27, 2022, 7:30 a.m. UTC | #3
On Mon, Jun 13, 2022 at 5:16 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> On Thu, Jun 09, 2022 at 01:58:13PM -0500, Bjorn Helgaas wrote:
> > On Thu, Jun 09, 2022 at 01:41:47PM -0400, Michael Chan wrote:
> > > From: Pavan Chebbi <pavan.chebbi@broadcom.com>
> > >
> > > The Broadcom BCM5750x NICs may be multi-function devices.  They do
> > > not advertise ACS capability. Peer-to-peer transactions are not
> > > possible between the individual functions, so it is safe to treat
> > > them as fully isolated.
> > >
> > > Add an ACS quirk for these devices so the functions can be in
> > > independent IOMMU groups and attached individually to userspace
> > > applications using VFIO.
> > >
> > > Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
> > > Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> >
> > Applied to pci/virtualization for v5.20, thanks!
>
> I forgot to ask: is there a plan for future devices to include an ACS
> capability?  Or will we be stuck adding quirks forever?
>
I still have not heard back definitively from the hardware team yet.
It's likely that the next device will not have ACS but the one after
that will have it.
diff mbox series

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 41aeaa235132..2e68f50bc7ae 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4924,6 +4924,9 @@  static const struct pci_dev_acs_enabled {
 	{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
 	/* Broadcom multi-function device */
 	{ PCI_VENDOR_ID_BROADCOM, 0x16D7, pci_quirk_mf_endpoint_acs },
+	{ PCI_VENDOR_ID_BROADCOM, 0x1750, pci_quirk_mf_endpoint_acs },
+	{ PCI_VENDOR_ID_BROADCOM, 0x1751, pci_quirk_mf_endpoint_acs },
+	{ PCI_VENDOR_ID_BROADCOM, 0x1752, pci_quirk_mf_endpoint_acs },
 	{ PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs },
 	/* Amazon Annapurna Labs */
 	{ PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs },