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 > >