RE: [PATCH] PCI: Add quirk for VCA NTB

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

 



On Mon, Sep 16, 2019 at 6:00:00PM +0000, Andrew Murray wrote:
> On Fri, Sep 13, 2019 at 12:22:38PM +0000, Kitszel, PrzemyslawX wrote:
> > From 863d9ea0d888233dbfcbf52212ae97b2bc557ae6 Mon Sep 17 00:00:00 2001
> > From: Slawomir Pawlowski <slawomir.pawlowski@xxxxxxxxx>
> > Date: Fri, 21 Sep 2018 15:55:12 +0200
> > Subject: [PATCH] PCI: Add quirk for VCA NTB
> > 
> > Intel Visual Compute Accelerator (VCA) is a family of PCIe add-in devices
> > exposing computational units via Non Transparent Bridges (NTB, PEX 87xx).
> > 
> > Similarly to MIC x200, there is need to add DMA aliases to allow buffer
> > access when IOMMU is enabled.
> > Following aliases are allowing host device and computational unit to access
> > each other.
> > Together those aliases marks whole VCA device as one IOMMU group.
> > 
> > All possible slot numbers (0x20) are used, sine we are unable to tell what
> 
> s/sine/since/g
> 
> Thanks,
> 
> Andrew Murray
>

Thanks,

I will sent v2 patch in a moment.

Przemek Kitszel

> > slot is used on other side.
> > This quirk is intended for both host and computational unit sides.
> > The VCA devices have up to 5 functions - 4 for DMA channels and one
> > additional.
> > 
> > Signed-off-by: Slawomir Pawlowski <slawomir.pawlowski@xxxxxxxxx>
> > Signed-off-by: Przemek Kitszel <przemyslawx.kitszel@xxxxxxxxx>
> > ---
> >  drivers/pci/quirks.c | 32 ++++++++++++++++++++++++++++++++
> >  1 file changed, 32 insertions(+)
> > 
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > index ded60757a573..349ca28e0ae4 100644
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
> > @@ -4062,6 +4062,38 @@ static void quirk_mic_x200_dma_alias(struct pci_dev *pdev)
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2260, quirk_mic_x200_dma_alias);
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2264, quirk_mic_x200_dma_alias);
> >  
> > +/*
> > + * Intel Visual Compute Accelerator (VCA) is a family of PCIe add-in devices
> > + * exposing computational units via Non Transparent Bridges (NTB, PEX 87xx).
> > + * Similarly to MIC x200, there is need to add DMA aliases to allow buffer
> > + * access when IOMMU is enabled.
> > + * Following aliases are allowing host device and computational unit to access
> > + * each other. Together those aliases marks whole VCA device as one IOMMU group.
> > + * All possible slot numbers (0x20) are used, sine we are unable to tell what
> > + * slot is used on other side.
> > + * This quirk is intended for both host and computational unit sides.
> > + * The VCA devices have up to 5 functions (4 for DMA channels and 1 additional).
> > + */
> > +static void quirk_pex_vca_alias(struct pci_dev *pdev)
> > +{
> > +	const unsigned int num_pci_slots = 0x20;
> > +	unsigned int slot;
> > +
> > +	for (slot = 0; slot < num_pci_slots; slot++) {
> > +		pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x0));
> > +		pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x1));
> > +		pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x2));
> > +		pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x3));
> > +		pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x4));
> > +	}
> > +}
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2954, quirk_pex_vca_alias);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2955, quirk_pex_vca_alias);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2956, quirk_pex_vca_alias);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2958, quirk_pex_vca_alias);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2959, quirk_pex_vca_alias);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x295A, quirk_pex_vca_alias);
> > +
> >  /*
> >   * The IOMMU and interrupt controller on Broadcom Vulcan/Cavium ThunderX2 are
> >   * associated not at the root bus, but at a bridge below. This quirk avoids
> > -- 
> > 2.22.0
> >




[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