Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Li <Frank.li@nxp.com>
To: Marc Zyngier <maz@kernel.org>
Cc: "Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Anup Patel" <apatel@ventanamicro.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Arnd Bergmann" <arnd@arndb.de>, "Shuah Khan" <shuah@kernel.org>,
	"Richard Zhu" <hongxing.zhu@nxp.com>,
	"Lucas Stach" <l.stach@pengutronix.de>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Niklas Cassel" <cassel@kernel.org>,
	dlemoal@kernel.org, jdmason@kudzu.us,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	linux-kselftest@vger.kernel.org, imx@lists.linux.dev,
	devicetree@vger.kernel.org
Subject: Re: [PATCH v15 07/15] PCI: endpoint: pci-ep-msi: Add MSI address/data pair mutable check
Date: Mon, 3 Mar 2025 11:27:11 -0500	[thread overview]
Message-ID: <Z8XYX/D5c/+PuOg5@lizhi-Precision-Tower-5810> (raw)
In-Reply-To: <86mse5otzh.wl-maz@kernel.org>

On Sat, Mar 01, 2025 at 11:44:50AM +0000, Marc Zyngier wrote:
> On Tue, 11 Feb 2025 19:22:00 +0000,
> Frank Li <Frank.Li@nxp.com> wrote:
> >
> > Some MSI controller change address/data pair when irq_set_affinity().
> > Current PCI endpoint can't support this type MSI controller. So add flag
> > MSI_FLAG_MUTABLE in include/linux/msi.h and check it when allocate
> > doorbell.
> >
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> > change from v14 to v15
> > - none
> >
> > change from  v13 to v14
> > - bring v10 back
> >
> > Change from v9 to v10
> > - new patch
> > ---
> >  drivers/pci/endpoint/pci-ep-msi.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-ep-msi.c
> > index 549b55b864d0e..c0e2d806ee658 100644
> > --- a/drivers/pci/endpoint/pci-ep-msi.c
> > +++ b/drivers/pci/endpoint/pci-ep-msi.c
> > @@ -44,6 +44,14 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db)
> >
> >  	dev_set_msi_domain(dev, dom);
> >
> > +	if (!irq_domain_is_msi_parent(dom))
> > +		return -EINVAL;
> > +
> > +	if (!irq_domain_is_msi_immutable(dom)) {
> > +		dev_err(dev, "Can't support mutable address/data pair MSI controller\n");
> > +		return -EINVAL;
> > +	}
> > +
> >  	msg = kcalloc(num_db, sizeof(struct pci_epf_doorbell_msg), GFP_KERNEL);
> >  	if (!msg)
> >  		return -ENOMEM;
> >
>
> I really don't think this brings much to the table. These systems are
> not built by picking up random bits that can be put together by hand.
> They are integrated in an SoC, and I can't imagine that the MSI
> controller is picked randomly.
>
> So my conclusion is that this is either *designed* to work, or it
> doesn't exist, and that this code is just dead code.

I think Thomas answer this question. This code is actually safty check MSI
provider's capablity. If MSI provider can't address/pair is not immutable,
there are big risk when irq change affinity.

https://lore.kernel.org/imx/87senwd3mo.ffs@tglx/

"Yes and no. The problem is that the EP implementation is meant to be a
generic library and while GIC-ITS guarantees immutability of the
address/data pair after setup, there are architectures (x86, loongson,
riscv) where the base MSI controller does not and immutability is only
achieved when interrupt remapping is enabled. The latter can be disabled
at boot-time and then the EP implementation becomes a lottery across
affinity changes.

That was my concern about this library implementation and that's why I
asked for a mechanism to ensure that the underlying irqdomain provides a
immutable address/data pair.

So it does not matter for GIC-ITS, but in the larger picture it matters.
"

Let me know if I miss understand your means.

Frank


>
> Thanks,
>
> 	M.
>
> --
> Without deviation from the norm, progress is not possible.


  reply	other threads:[~2025-03-03 16:29 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-11 19:21 [PATCH v15 00/15] PCI: EP: Add RC-to-EP doorbell with platform MSI controller Frank Li
2025-02-11 19:21 ` [PATCH v15 01/15] platform-msi: Add msi_remove_device_irq_domain() in platform_device_msi_free_irqs_all() Frank Li
2025-03-01 12:17   ` Marc Zyngier
2025-02-11 19:21 ` [PATCH v15 02/15] irqdomain: Add IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and irq_domain_is_msi_immutable() Frank Li
2025-03-01 11:10   ` Marc Zyngier
2025-03-03 17:01     ` Frank Li
2025-02-11 19:21 ` [PATCH v15 03/15] irqchip/gic-v3-its: Set IRQ_DOMAIN_FLAG_MSI_IMMUTABLE for ITS Frank Li
2025-02-11 19:21 ` [PATCH v15 04/15] irqchip/gic-v3-its: Add support for device tree msi-map and msi-mask Frank Li
2025-03-01 11:37   ` Marc Zyngier
2025-03-03 16:52     ` Frank Li
2025-02-11 19:21 ` [PATCH v15 05/15] PCI: endpoint: Set ID and of_node for function driver Frank Li
2025-02-11 19:21 ` [PATCH v15 06/15] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controller Frank Li
2025-02-11 19:22 ` [PATCH v15 07/15] PCI: endpoint: pci-ep-msi: Add MSI address/data pair mutable check Frank Li
2025-03-01 11:44   ` Marc Zyngier
2025-03-03 16:27     ` Frank Li [this message]
2025-02-11 19:22 ` [PATCH v15 08/15] PCI: endpoint: Add pci_epf_align_inbound_addr() helper for address alignment Frank Li
2025-02-11 19:22 ` [PATCH v15 09/15] PCI: endpoint: pci-epf-test: Add doorbell test support Frank Li
2025-02-11 19:22 ` [PATCH v15 10/15] misc: pci_endpoint_test: Add doorbell test case Frank Li
2025-02-11 19:22 ` [PATCH v15 11/15] selftests: pci_endpoint: " Frank Li
2025-02-11 19:22 ` [PATCH v15 12/15] pci: imx6: Add helper function imx_pcie_add_lut_by_rid() Frank Li
2025-02-11 19:22 ` [PATCH v15 13/15] pci: imx6: Add LUT setting for MSI/IOMMU in Endpoint mode Frank Li
2025-02-11 19:22 ` [PATCH v15 14/15] arm64: dts: imx95: Add msi-map for pci-ep device Frank Li
2025-02-11 19:22 ` [PATCH v15 15/15] arm64: dts: imx95-19x19-evk: Add PCIe1 endpoint function overlay file Frank Li
2025-02-20 20:01 ` [PATCH v15 00/15] PCI: EP: Add RC-to-EP doorbell with platform MSI controller Frank Li
2025-02-20 20:42   ` Thomas Gleixner
2025-02-28 17:07     ` Frank Li
2025-03-01 12:02   ` Marc Zyngier
2025-03-01 18:09     ` Thomas Gleixner
2025-03-10 21:08       ` Frank Li

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=Z8XYX/D5c/+PuOg5@lizhi-Precision-Tower-5810 \
    --to=frank.li@nxp.com \
    --cc=apatel@ventanamicro.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=cassel@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=dakr@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlemoal@kernel.org \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hongxing.zhu@nxp.com \
    --cc=imx@lists.linux.dev \
    --cc=jdmason@kudzu.us \
    --cc=kernel@pengutronix.de \
    --cc=kishon@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=kw@linux.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lpieralisi@kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=maz@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox