From: Bjorn Helgaas <helgaas@kernel.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: maz@kernel.org, tglx@linutronix.de, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org,
s.hauer@pengutronix.de, kw@linux.com, bhelgaas@google.com,
kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
peng.fan@nxp.com, aisheng.dong@nxp.com, jdmason@kudzu.us,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
kishon@ti.com, lorenzo.pieralisi@arm.com, ntb@lists.linux.dev
Subject: Re: [PATCH v2 0/4] PCI EP driver support MSI doorbell from host
Date: Fri, 15 Jul 2022 16:14:45 -0500 [thread overview]
Message-ID: <20220715211445.GA1191496@bhelgaas> (raw)
In-Reply-To: <20220715192219.1489403-1-Frank.Li@nxp.com>
On Fri, Jul 15, 2022 at 02:22:15PM -0500, Frank Li wrote:
>
> ┌───────┐ ┌──────────┐
> │ │ │ │
> ┌─────────────┐ │ │ │ PCI Host │
> │ MSI │◄┐ │ │ │ │
> │ Controller │ │ │ │ │ │
> └─────────────┘ └─┼───────┼──────────┼─Bar0 │
> │ PCI │ │ Bar1 │
> │ Func │ │ Bar2 │
> │ │ │ Bar3 │
> │ │ │ Bar4 │
> │ ├─────────►│ │
> └───────┘ └──────────┘
Nice diagram and explanation. I suggest rewrapping to fit in 75
columns and including in one of the patches, probably the
pci-epf-vntb.c one. Then it will be more likely to make it to the git
history where it will be useful.
> Many PCI controllers provided Endpoint functions.
> Generally PCI endpoint is hardware, which is not running a rich OS, like linux.
>
> But Linux also supports endpoint functions. PCI Host write bar<n> space like
> write to memory. The EP side can't know memory changed by the Host driver.
>
> PCI Spec has not defined a standard method to do that. Only define MSI(x) to let
> EP notified RC status change.
>
> The basic idea is to trigger an irq when PCI RC writes to a memory address. That's
> what MSI controller provided. EP drivers just need to request a platform MSI interrupt,
> struct msi_msg *msg will pass down a memory address and data. EP driver will
> map such memory address to one of PCI bar<n>. Host just writes such an address to
> trigger EP side irq.
>
> If system have gic-its, only need update PCI EP side driver. But i.MX have not chip
> support gic-ites yet. So we have to use MU to simulate a MSI controller. Although
> only 4 MSI irqs are simulated, it matched vntd network requirmenent.
>
> After enable MSI, ping delay reduce < 1ms from ~8ms
>
> irqchip: imx mu worked as msi controller:
> let imx mu worked as MSI controllers. Although IP is not design as MSI controller,
> we still can use it if limiated irq number to 4.
>
> pcie: endpoint: pci-epf-vntb: add endpoint msi support
> Based on ntb-next branch. https://github.com/jonmason/ntb/commits/ntb-next
> Using MSI as door bell registers
>
> i.MX EP function driver is upstreaming by Richard Zhu.
> Some dts change missed at this patches. below is reference dts change
s/bar/BAR/ (several)
s/irq/IRQ/ (several)
s/irqs/IRQs/
s/msi/MSI/
s/gic-ites/? (capitalize if it's an acronym)
s/requirmenent/requirement/
s/limiated/limited/
You use both "gic-its" and "gic-ites". I assume they should be the
same.
Not sure what "vntd" refers to. Capitalize if it's an acronym.
> --- a/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi
> @@ -160,5 +160,6 @@ pcieb_ep: pcie_ep@5f010000 {
> num-ib-windows = <6>;
> num-ob-windows = <6>;
> status = "disabled";
> + msi-parent = <&lsio_mu12>;
> };
>
> --- a/arch/arm64/boot/dts/freescale/imx8-ss-lsio.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8-ss-lsio.dtsi
> @@ -172,6 +172,19 @@ lsio_mu6: mailbox@5d210000 {
> status = "disabled";
> };
>
> + lsio_mu12: mailbox@5d270000 {
> + compatible = "fsl,imx6sx-mu-msi";
> + msi-controller;
> + interrupt-controller;
> + reg = <0x5d270000 0x10000>, /* A side */
> + <0x5d300000 0x10000>; /* B side */
> + reg-names = "a", "b";
> + interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
> + power-domains = <&pd IMX_SC_R_MU_12A>,
> + <&pd IMX_SC_R_MU_12B>;
> + power-domain-names = "a", "b";
> + };
> +
>
> Change Log
> - from V1 to V2
> Fixed fsl,mu-msi.yaml's problem
> Fixed irq-imx-mu-msi.c problem according Marc Zyngier's feeback
> Added a new patch to allow pass down .pm by IRQCHIP_PLATFORM_DRIVER_END
>
> --
> 2.35.1
>
prev parent reply other threads:[~2022-07-15 21:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-15 19:22 [PATCH v2 0/4] PCI EP driver support MSI doorbell from host Frank Li
2022-07-15 19:22 ` [PATCH v2 1/4] irqchip: allow pass down .pm field at IRQCHIP_PLATFORM_DRIVER_END Frank Li
2022-07-15 19:22 ` [PATCH v2 2/4] irqchip: imx mu worked as msi controller Frank Li
2022-07-15 19:22 ` [PATCH v2 3/4] dt-bindings: irqchip: imx mu work " Frank Li
2022-07-15 23:06 ` Rob Herring
2022-07-15 19:22 ` [PATCH v2 4/4] pcie: endpoint: pci-epf-vntb: add endpoint msi support Frank Li
2022-07-15 21:06 ` Bjorn Helgaas
2022-07-15 21:14 ` Bjorn Helgaas [this message]
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=20220715211445.GA1191496@bhelgaas \
--to=helgaas@kernel.org \
--cc=Frank.Li@nxp.com \
--cc=aisheng.dong@nxp.com \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=jdmason@kudzu.us \
--cc=kernel@pengutronix.de \
--cc=kernel@vger.kernel.org \
--cc=kishon@ti.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=maz@kernel.org \
--cc=ntb@lists.linux.dev \
--cc=peng.fan@nxp.com \
--cc=robh+dt@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@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;
as well as URLs for NNTP newsgroup(s).