All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Logan Gunthorpe <logang@deltatee.com>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>,
	James Sewart <jamessewart@arista.com>,
	iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	Dmitry Safonov <dima@arista.com>,
	linux-pci@vger.kernel.org,
	Alex Williamson <alex.williamson@redhat.com>
Subject: Re: [PATCH] Ensure pci transactions coming from PLX NTB are handled when IOMMU is turned on
Date: Wed, 20 Nov 2019 13:49:48 -0600	[thread overview]
Message-ID: <20191120194948.GA117003@google.com> (raw)
In-Reply-To: <c683ec65-40a9-6430-ae85-ce3934ed8af5@deltatee.com>

On Wed, Nov 20, 2019 at 12:30:48PM -0700, Logan Gunthorpe wrote:
> On 2019-11-20 10:48 a.m., Dmitry Safonov wrote:
> > On 11/5/19 12:17 PM, James Sewart wrote:
> >>
> >>> On 24 Oct 2019, at 13:52, James Sewart <jamessewart@arista.com> wrote:
> >>>
> >>> The PLX PEX NTB forwards DMA transactions using Requester ID's that don't exist as
> >>> PCI devices. The devfn for a transaction is used as an index into a lookup table
> >>> storing the origin of a transaction on the other side of the bridge.
> >>>
> >>> This patch aliases all possible devfn's to the NTB device so that any transaction
> >>> coming in is governed by the mappings for the NTB.
> >>>
> >>> Signed-Off-By: James Sewart <jamessewart@arista.com>
> >>> ---
> >>> drivers/pci/quirks.c | 22 ++++++++++++++++++++++
> >>> 1 file changed, 22 insertions(+)
> >>>
> >>> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> >>> index 320255e5e8f8..647f546e427f 100644
> >>> --- a/drivers/pci/quirks.c
> >>> +++ b/drivers/pci/quirks.c
> >>> @@ -5315,6 +5315,28 @@ SWITCHTEC_QUIRK(0x8574);  /* PFXI 64XG3 */
> >>> SWITCHTEC_QUIRK(0x8575);  /* PFXI 80XG3 */
> >>> SWITCHTEC_QUIRK(0x8576);  /* PFXI 96XG3 */
> >>>
> >>> +/*
> >>> + * 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)
> >>> +{
> >>> +	if (!pdev->dma_alias_mask)
> >>> +		pdev->dma_alias_mask = kcalloc(BITS_TO_LONGS(U8_MAX),
> >>> +					      sizeof(long), GFP_KERNEL);
> >>> +	if (!pdev->dma_alias_mask) {
> >>> +		dev_warn(&pdev->dev, "Unable to allocate DMA alias mask\n");
> >>> +		return;
> >>> +	}
> >>> +
> >>> +	// PLX NTB may use all 256 devfns
> >>> +	memset(pdev->dma_alias_mask, U8_MAX, (U8_MAX+1)/BITS_PER_BYTE);
> 
> I think it would be better to create a pci_add_dma_alias_range()
> function instead of directly accessing dma_alias_mask. We could then use
> that function to clean up quirk_switchtec_ntb_dma_alias() which is
> essentially doing the same thing.

Great idea!

Bjorn

WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Logan Gunthorpe <logang@deltatee.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	Dmitry Safonov <dima@arista.com>,
	linux-pci@vger.kernel.org, Dmitry Safonov <0x7f454c46@gmail.com>,
	linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org
Subject: Re: [PATCH] Ensure pci transactions coming from PLX NTB are handled when IOMMU is turned on
Date: Wed, 20 Nov 2019 13:49:48 -0600	[thread overview]
Message-ID: <20191120194948.GA117003@google.com> (raw)
In-Reply-To: <c683ec65-40a9-6430-ae85-ce3934ed8af5@deltatee.com>

On Wed, Nov 20, 2019 at 12:30:48PM -0700, Logan Gunthorpe wrote:
> On 2019-11-20 10:48 a.m., Dmitry Safonov wrote:
> > On 11/5/19 12:17 PM, James Sewart wrote:
> >>
> >>> On 24 Oct 2019, at 13:52, James Sewart <jamessewart@arista.com> wrote:
> >>>
> >>> The PLX PEX NTB forwards DMA transactions using Requester ID's that don't exist as
> >>> PCI devices. The devfn for a transaction is used as an index into a lookup table
> >>> storing the origin of a transaction on the other side of the bridge.
> >>>
> >>> This patch aliases all possible devfn's to the NTB device so that any transaction
> >>> coming in is governed by the mappings for the NTB.
> >>>
> >>> Signed-Off-By: James Sewart <jamessewart@arista.com>
> >>> ---
> >>> drivers/pci/quirks.c | 22 ++++++++++++++++++++++
> >>> 1 file changed, 22 insertions(+)
> >>>
> >>> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> >>> index 320255e5e8f8..647f546e427f 100644
> >>> --- a/drivers/pci/quirks.c
> >>> +++ b/drivers/pci/quirks.c
> >>> @@ -5315,6 +5315,28 @@ SWITCHTEC_QUIRK(0x8574);  /* PFXI 64XG3 */
> >>> SWITCHTEC_QUIRK(0x8575);  /* PFXI 80XG3 */
> >>> SWITCHTEC_QUIRK(0x8576);  /* PFXI 96XG3 */
> >>>
> >>> +/*
> >>> + * 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)
> >>> +{
> >>> +	if (!pdev->dma_alias_mask)
> >>> +		pdev->dma_alias_mask = kcalloc(BITS_TO_LONGS(U8_MAX),
> >>> +					      sizeof(long), GFP_KERNEL);
> >>> +	if (!pdev->dma_alias_mask) {
> >>> +		dev_warn(&pdev->dev, "Unable to allocate DMA alias mask\n");
> >>> +		return;
> >>> +	}
> >>> +
> >>> +	// PLX NTB may use all 256 devfns
> >>> +	memset(pdev->dma_alias_mask, U8_MAX, (U8_MAX+1)/BITS_PER_BYTE);
> 
> I think it would be better to create a pci_add_dma_alias_range()
> function instead of directly accessing dma_alias_mask. We could then use
> that function to clean up quirk_switchtec_ntb_dma_alias() which is
> essentially doing the same thing.

Great idea!

Bjorn
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  reply	other threads:[~2019-11-20 19:49 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-24 12:52 [PATCH] Ensure pci transactions coming from PLX NTB are handled when IOMMU is turned on James Sewart
2019-10-24 12:52 ` James Sewart via iommu
2019-11-05 12:17 ` James Sewart
2019-11-05 12:17   ` James Sewart via iommu
2019-11-20 17:48   ` Dmitry Safonov
2019-11-20 17:48     ` Dmitry Safonov
2019-11-20 19:30     ` Logan Gunthorpe
2019-11-20 19:30       ` Logan Gunthorpe
2019-11-20 19:49       ` Bjorn Helgaas [this message]
2019-11-20 19:49         ` Bjorn Helgaas
2019-11-20 19:32     ` Bjorn Helgaas
2019-11-20 19:32       ` Bjorn Helgaas
2019-11-26 17:03       ` [PATCH v2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart
2019-11-26 17:03         ` James Sewart via iommu
2019-11-26 17:06         ` Logan Gunthorpe
2019-11-26 17:06           ` Logan Gunthorpe
2019-11-26 17:36           ` [PATCH v3 1/2] PCI: Add helper pci_add_dma_alias_range James Sewart
2019-11-26 17:36             ` James Sewart via iommu
2019-11-26 17:37             ` [PATCH v3 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart
2019-11-26 17:37               ` James Sewart via iommu
2019-11-26 17:38         ` [PATCH v2] " Christoph Hellwig
2019-11-26 17:38           ` Christoph Hellwig
2019-11-27 13:27           ` [PATCH v3 1/2] PCI: Add parameter nr_devfns to pci_add_dma_alias James Sewart
2019-11-27 13:27             ` James Sewart via iommu
2019-11-27 13:28             ` [PATCH v3 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart
2019-11-27 13:28               ` James Sewart via iommu
2019-11-27 17:38             ` [PATCH v3 1/2] PCI: Add parameter nr_devfns to pci_add_dma_alias Logan Gunthorpe
2019-11-27 17:38               ` Logan Gunthorpe
2019-11-29 12:49               ` [PATCH v4 " James Sewart
2019-11-29 12:49                 ` James Sewart via iommu
2019-11-29 12:49                 ` [PATCH v4 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart
2019-11-29 12:49                   ` James Sewart via iommu
2019-11-29 16:50                 ` [PATCH v4 1/2] PCI: Add parameter nr_devfns to pci_add_dma_alias Logan Gunthorpe
2019-11-29 16:50                   ` Logan Gunthorpe
2019-11-29 17:19                   ` James Sewart
2019-11-29 17:19                     ` James Sewart via iommu
2019-11-29 17:26                     ` Logan Gunthorpe
2019-11-29 17:26                       ` Logan Gunthorpe
2019-11-29 17:56                       ` [PATCH v5 1/3] PCI: Fix off by one in dma_alias_mask allocation size James Sewart
2019-11-29 17:56                         ` James Sewart via iommu
2019-11-29 17:56                         ` [PATCH v5 2/3] PCI: Add parameter nr_devfns to pci_add_dma_alias James Sewart
2019-11-29 17:56                           ` James Sewart via iommu
2019-11-29 17:57                           ` [PATCH v5 3/3] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart
2019-11-29 17:57                             ` James Sewart via iommu
2019-12-02 17:03                           ` [PATCH v5 2/3] PCI: Add parameter nr_devfns to pci_add_dma_alias Christoph Hellwig
2019-12-02 17:03                             ` Christoph Hellwig
2019-11-29 17:58                         ` [PATCH v5 1/3] PCI: Fix off by one in dma_alias_mask allocation size Logan Gunthorpe
2019-11-29 17:58                           ` Logan Gunthorpe
2019-12-02 17:03                         ` Christoph Hellwig
2019-12-02 17:03                           ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191120194948.GA117003@google.com \
    --to=helgaas@kernel.org \
    --cc=0x7f454c46@gmail.com \
    --cc=alex.williamson@redhat.com \
    --cc=dima@arista.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jamessewart@arista.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=logang@deltatee.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.