From: Bjorn Helgaas <helgaas@kernel.org>
To: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
Dmitry Safonov <dima@arista.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
linux-pci@vger.kernel.org, Logan Gunthorpe <logang@deltatee.com>
Subject: Re: [PATCH] Ensure pci transactions coming from PLX NTB are handled when IOMMU is turned on
Date: Wed, 20 Nov 2019 13:32:28 -0600 [thread overview]
Message-ID: <20191120193228.GA103670@google.com> (raw)
In-Reply-To: <5c3b56dd-7088-e544-6628-01506f7b84e8@gmail.com>
[+cc Alex]
Hi James,
Thanks for the patch, and thanks, Dmitry for the cc!
"scripts/get_maintainer.pl -f drivers/pci/quirks.c" will give you a
list of relevant email addresses to post patches. It was a good idea
to augment that list with related addresses, e.g., Logan and the iommu
list.
Follow existing style for subject, e.g.,
PCI: Add DMA alias quirk for Microsemi Switchtec NTB
for a recent similar patch.
On Wed, Nov 20, 2019 at 05:48:45PM +0000, 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>
Conventionally capitalized as:
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)
Conventional style is all lower-case (e.g.
quirk_switchtec_ntb_dma_alias()) for function and variable names, and
upper-case in English text.
> >> +{
> >> + 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");
pci_warn()
> >> + return;
> >> + }
> >> +
> >> + // PLX NTB may use all 256 devfns
> >> + memset(pdev->dma_alias_mask, U8_MAX, (U8_MAX+1)/BITS_PER_BYTE);
Use C (not C++) comment style, as the rest of the file does.
I was about to suggest using pci_add_dma_alias(), but as currently
implemented that would generate 256 messages in dmesg, which seems
like overkill.
But I think it would still be good to allocate the mask the same way
(using bitmap_zalloc()) and to set the bits using bitmap_set().
It would also be nice to have one line in dmesg about these aliases,
as a hint when debugging IOMMU faults.
> >> +}
> >> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b0, quirk_PLX_NTB_dma_alias);
> >> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b1, quirk_PLX_NTB_dma_alias);
> >> +
> >> /*
> >> * On Lenovo Thinkpad P50 SKUs with a Nvidia Quadro M1000M, the BIOS does
> >> * not always reset the secondary Nvidia GPU between reboots if the system
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: 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, Logan Gunthorpe <logang@deltatee.com>,
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:32:28 -0600 [thread overview]
Message-ID: <20191120193228.GA103670@google.com> (raw)
In-Reply-To: <5c3b56dd-7088-e544-6628-01506f7b84e8@gmail.com>
[+cc Alex]
Hi James,
Thanks for the patch, and thanks, Dmitry for the cc!
"scripts/get_maintainer.pl -f drivers/pci/quirks.c" will give you a
list of relevant email addresses to post patches. It was a good idea
to augment that list with related addresses, e.g., Logan and the iommu
list.
Follow existing style for subject, e.g.,
PCI: Add DMA alias quirk for Microsemi Switchtec NTB
for a recent similar patch.
On Wed, Nov 20, 2019 at 05:48:45PM +0000, 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>
Conventionally capitalized as:
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)
Conventional style is all lower-case (e.g.
quirk_switchtec_ntb_dma_alias()) for function and variable names, and
upper-case in English text.
> >> +{
> >> + 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");
pci_warn()
> >> + return;
> >> + }
> >> +
> >> + // PLX NTB may use all 256 devfns
> >> + memset(pdev->dma_alias_mask, U8_MAX, (U8_MAX+1)/BITS_PER_BYTE);
Use C (not C++) comment style, as the rest of the file does.
I was about to suggest using pci_add_dma_alias(), but as currently
implemented that would generate 256 messages in dmesg, which seems
like overkill.
But I think it would still be good to allocate the mask the same way
(using bitmap_zalloc()) and to set the bits using bitmap_set().
It would also be nice to have one line in dmesg about these aliases,
as a hint when debugging IOMMU faults.
> >> +}
> >> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b0, quirk_PLX_NTB_dma_alias);
> >> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, 0x87b1, quirk_PLX_NTB_dma_alias);
> >> +
> >> /*
> >> * On Lenovo Thinkpad P50 SKUs with a Nvidia Quadro M1000M, the BIOS does
> >> * not always reset the secondary Nvidia GPU between reboots if the system
next prev parent reply other threads:[~2019-11-20 19:32 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 via iommu
2019-10-24 12:52 ` James Sewart
2019-11-05 12:17 ` James Sewart via iommu
2019-11-05 12:17 ` James Sewart
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
2019-11-20 19:49 ` Bjorn Helgaas
2019-11-20 19:32 ` Bjorn Helgaas [this message]
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 via iommu
2019-11-26 17:03 ` James Sewart
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 via iommu
2019-11-26 17:36 ` James Sewart
2019-11-26 17:37 ` [PATCH v3 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart via iommu
2019-11-26 17:37 ` James Sewart
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 via iommu
2019-11-27 13:27 ` James Sewart
2019-11-27 13:28 ` [PATCH v3 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart via iommu
2019-11-27 13:28 ` James Sewart
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 via iommu
2019-11-29 12:49 ` James Sewart
2019-11-29 12:49 ` [PATCH v4 2/2] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart via iommu
2019-11-29 12:49 ` James Sewart
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 via iommu
2019-11-29 17:19 ` James Sewart
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 via iommu
2019-11-29 17:56 ` James Sewart
2019-11-29 17:56 ` [PATCH v5 2/3] PCI: Add parameter nr_devfns to pci_add_dma_alias James Sewart via iommu
2019-11-29 17:56 ` James Sewart
2019-11-29 17:57 ` [PATCH v5 3/3] PCI: Add DMA alias quirk for PLX PEX NTB James Sewart via iommu
2019-11-29 17:57 ` James Sewart
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=20191120193228.GA103670@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=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.