From: Frank Li <Frank.Li@nxp.com>
To: tglx@linutronix.de
Cc: agross@kernel.org, ammarfaizi2@gnuweeb.org, andersson@kernel.org,
andrew@lunn.ch, bhelgaas@google.com, festevam@gmail.com,
gregkh@linuxfoundation.org, gregory.clement@bootlin.com,
jgg@mellanox.com, kristo@kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
lorenzo.pieralisi@arm.com, lpieralisi@kernel.org,
mark.rutland@arm.com, maz@kernel.org, nm@ti.com,
okaya@kernel.org, robin.murphy@arm.com, s.hauer@pengutronix.de,
sebastian.hesselbarth@gmail.com,
shameerali.kolothum.thodi@huawei.com, shawnguo@kernel.org,
ssantosh@kernel.org, vkoul@kernel.org, will@kernel.org,
yuzenghui@huawei.com, imx@lists.linux.dev
Subject: Re: [patch V2 33/40] irqchip/imx-mu-msi: Switch to MSI parent
Date: Mon, 28 Nov 2022 15:47:10 -0500 [thread overview]
Message-ID: <20221128204710.2084706-1-Frank.Li@nxp.com> (raw)
In-Reply-To: <20221121140050.386216606@linutronix.de>
From: Frank Li <Frank.li@nxp.com>
On Mon, Nov 21, 2022 at 03:40:09PM +0100, Thomas Gleixner wrote:
> All platform MSI users and the PCI/MSI code handle per device MSI domains
> when the irqdomain associated to the device provides MSI parent
> functionality.
>
> Remove the "global" platform domain related code and provide the MSI parent
> functionality by filling in msi_parent_ops.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> ---
> drivers/irqchip/Kconfig | 1
> drivers/irqchip/irq-gic-msi-lib.c | 2 +
> drivers/irqchip/irq-imx-mu-msi.c | 53 +++++++++++++++-----------------------
> 3 files changed, 25 insertions(+), 31 deletions(-)
>
> --- a/drivers/irqchip/Kconfig
> +++ b/drivers/irqchip/Kconfig
> @@ -494,6 +494,7 @@ config IMX_MU_MSI
> select IRQ_DOMAIN
> select IRQ_DOMAIN_HIERARCHY
> select GENERIC_MSI_IRQ
> + select ARM_GIC_MSI_LIB
> help
> Provide a driver for the i.MX Messaging Unit block used as a
> CPU-to-CPU MSI controller. This requires a specially crafted DT
> --- a/drivers/irqchip/irq-gic-msi-lib.c
> +++ b/drivers/irqchip/irq-gic-msi-lib.c
> @@ -90,6 +90,8 @@ bool gic_msi_lib_init_dev_msi_info(struc
> /* Chip updates for all child bus types */
> if (!info->chip->irq_eoi)
> info->chip->irq_eoi = irq_chip_eoi_parent;
> + if (!info->chip->irq_ack)
> + info->chip->irq_ack = irq_chip_ack_parent;
>
> /*
> * The device MSI domain can never have a set affinity callback it
> --- a/drivers/irqchip/irq-imx-mu-msi.c
> +++ b/drivers/irqchip/irq-imx-mu-msi.c
> @@ -24,6 +24,8 @@
> #include <linux/pm_domain.h>
> #include <linux/spinlock.h>
>
> +#include "irq-gic-msi-lib.h"
> +
I think irq-gic-msi-lib.h is not good name. Actually mu-msi is not arm gic.
irq-gic-msi-lib do common work, which not related arm gic at all.
> #define IMX_MU_CHANS 4
>
> enum imx_mu_xcr {
> @@ -114,20 +116,6 @@ static void imx_mu_msi_parent_ack_irq(st
> imx_mu_read(msi_data, msi_data->cfg->xRR + data->hwirq * 4);
> }
>
> -static struct irq_chip imx_mu_msi_irq_chip = {
> - .name = "MU-MSI",
> - .irq_ack = irq_chip_ack_parent,
> -};
> -
> -static struct msi_domain_ops imx_mu_msi_irq_ops = {
> -};
> -
> -static struct msi_domain_info imx_mu_msi_domain_info = {
> - .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
> - .ops = &imx_mu_msi_irq_ops,
> - .chip = &imx_mu_msi_irq_chip,
> -};
> -
> static void imx_mu_msi_parent_compose_msg(struct irq_data *data,
> struct msi_msg *msg)
> {
> @@ -195,6 +183,7 @@ static void imx_mu_msi_domain_irq_free(s
> }
>
> static const struct irq_domain_ops imx_mu_msi_domain_ops = {
> + .select = gic_msi_lib_irq_domain_select,
> .alloc = imx_mu_msi_domain_irq_alloc,
> .free = imx_mu_msi_domain_irq_free,
> };
> @@ -216,35 +205,37 @@ static void imx_mu_msi_irq_handler(struc
> chained_irq_exit(chip, desc);
> }
>
> +#define IMX_MU_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \
> + MSI_FLAG_USE_DEF_CHIP_OPS | \
> + MSI_FLAG_PARENT_PM_DEV)
> +
> +#define IMX_MU_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK)
> +
> +static const struct msi_parent_ops imx_mu_msi_parent_ops = {
> + .supported_flags = IMX_MU_MSI_FLAGS_SUPPORTED,
> + .required_flags = IMX_MU_MSI_FLAGS_REQUIRED,
> + .bus_select_token = DOMAIN_BUS_NEXUS,
> + .bus_select_mask = MATCH_PLATFORM_MSI,
> + .prefix = "MU-MSI-",
> + .init_dev_msi_info = gic_msi_lib_init_dev_msi_info,
> +};
> +
> static int imx_mu_msi_domains_init(struct imx_mu_msi *msi_data, struct device *dev)
> {
> struct fwnode_handle *fwnodes = dev_fwnode(dev);
> struct irq_domain *parent;
>
> /* Initialize MSI domain parent */
> - parent = irq_domain_create_linear(fwnodes,
> - IMX_MU_CHANS,
> - &imx_mu_msi_domain_ops,
> - msi_data);
> + parent = irq_domain_create_linear(fwnodes, IMX_MU_CHANS, &imx_mu_msi_domain_ops, msi_data);
coding style change should be in sperated patch.
> if (!parent) {
> dev_err(dev, "failed to create IRQ domain\n");
> return -ENOMEM;
> }
>
> irq_domain_update_bus_token(parent, DOMAIN_BUS_NEXUS);
> -
> - msi_data->msi_domain = platform_msi_create_irq_domain(fwnodes,
> - &imx_mu_msi_domain_info,
> - parent);
> -
> - if (!msi_data->msi_domain) {
> - dev_err(dev, "failed to create MSI domain\n");
> - irq_domain_remove(parent);
> - return -ENOMEM;
> - }
> -
> - irq_domain_set_pm_device(msi_data->msi_domain, dev);
> -
> + parent->dev = parent->pm_dev = dev;
> + parent->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT;
> + parent->msi_parent_ops = &imx_mu_msi_parent_ops;
> return 0;
> }
next prev parent reply other threads:[~2022-11-28 20:48 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-21 14:39 [patch V2 00/40] genirq, irqchip: Convert ARM MSI handling to per device MSI domains Thomas Gleixner
2022-11-21 14:39 ` [patch V2 01/40] irqchip/irq-mvebu-icu: Fix works by chance pointer assignment Thomas Gleixner
2022-11-24 12:50 ` Marc Zyngier
2022-12-06 11:57 ` [tip: irq/core] " tip-bot2 for Thomas Gleixner
2022-11-21 14:39 ` [patch V2 02/40] ACPI/IORT: Make prototype of iort_pmsi_get_dev_id() always available Thomas Gleixner
2022-11-21 15:13 ` Robin Murphy
2022-11-21 14:39 ` [patch V2 03/40] irqchip/gic-v2m: Include arm-gic-common.h Thomas Gleixner
2022-11-24 12:51 ` Marc Zyngier
2022-12-06 11:57 ` [tip: irq/core] " tip-bot2 for Thomas Gleixner
2022-11-21 14:39 ` [patch V2 04/40] irqchip/gic-v2m: Mark a few functions __init Thomas Gleixner
2022-11-24 12:54 ` Marc Zyngier
2022-12-06 11:57 ` [tip: irq/core] " tip-bot2 for Thomas Gleixner
2022-11-21 14:39 ` [patch V2 05/40] irqchip/ti-sci-inta: Fix kernel doc Thomas Gleixner
2022-11-24 12:54 ` Marc Zyngier
2022-12-06 11:57 ` [tip: irq/core] " tip-bot2 for Thomas Gleixner
2022-11-21 14:39 ` [patch V2 06/40] PCI/MSI: Provide static key for parent mask/unmask Thomas Gleixner
2022-11-24 13:04 ` Marc Zyngier
2022-11-24 13:17 ` Thomas Gleixner
2022-11-24 13:38 ` Marc Zyngier
2022-11-25 0:11 ` Thomas Gleixner
2023-05-22 14:19 ` Thomas Gleixner
2023-05-23 10:25 ` Marc Zyngier
2023-05-23 13:05 ` Thomas Gleixner
2023-05-31 8:35 ` Marc Zyngier
2022-11-21 14:39 ` [patch V2 07/40] irqchip/gic-v3: Make gic_irq_domain_select() robust for zero parameter count Thomas Gleixner
2022-11-21 14:39 ` [patch V2 08/40] genirq/irqdomain: Remove the param count restriction from select() Thomas Gleixner
2022-11-21 14:39 ` [patch V2 09/40] genirq/msi: Extend msi_parent_ops Thomas Gleixner
2022-11-21 14:39 ` [patch V2 10/40] irqchip: Provide irq-gic-lib Thomas Gleixner
2022-11-21 14:39 ` [patch V2 11/40] irqchip/gic-v3-its: Provide MSI parent infrastructure Thomas Gleixner
2022-11-21 14:39 ` [patch V2 12/40] irqchip/gic-msi-lib: Prepare for PCI MSI/MSIX Thomas Gleixner
2022-11-21 14:39 ` [patch V2 13/40] irqchip/gic-v3-its: Provide MSI parent for PCI/MSI[-X] Thomas Gleixner
2022-11-21 14:39 ` [patch V2 14/40] genirq/irqdomain: Add BUS_DOMAIN_DEVICE_MSI Thomas Gleixner
2022-11-21 14:39 ` [patch V2 15/40] irqchip/gic-msi-lib: Prepare for DEVICE MSI to replace platform MSI Thomas Gleixner
2022-11-21 14:39 ` [patch V2 16/40] platform-msi: Prepare for real per device domains Thomas Gleixner
2022-11-21 14:39 ` [patch V2 17/40] irqchip: Convert all platform MSI users to the new API Thomas Gleixner
2022-11-21 14:39 ` [patch V2 18/40] genirq/msi: Provide optional translation op Thomas Gleixner
2022-11-21 14:39 ` [patch V2 19/40] genirq/msi: Split msi_domain_alloc_irq_at() Thomas Gleixner
2022-11-21 14:39 ` [patch V2 20/40] genirq/msi: Provide BUS DEVICE_MSI_WIRED Thomas Gleixner
2022-11-21 14:39 ` [patch V2 21/40] genirq/msi: Optionally use dev->fwnode for device domain Thomas Gleixner
2022-11-21 14:39 ` [patch V2 22/40] genirq/msi: Provide allocation/free functions for "wired" MSI interrupts Thomas Gleixner
2022-11-21 14:39 ` [patch V2 23/40] genirq/irqdomain: Reroute device MSI create_mapping Thomas Gleixner
2022-11-21 14:39 ` [patch V2 24/40] irqchip/mbigen: Prepare for real per device MSI Thomas Gleixner
2022-11-21 14:39 ` [patch V2 25/40] irqchip/gic-msi-lib: Prepare for DOMAIN_BUS_WIRED_TO_MSI Thomas Gleixner
2022-11-21 14:40 ` [patch V2 26/40] irqchip/gic-v3-its: Switch platform MSI to MSI parent Thomas Gleixner
2022-11-21 14:40 ` [patch V2 27/40] irqchip/mbigen: Remove platform_msi_create_device_domain() fallback Thomas Gleixner
2022-11-21 14:40 ` [patch V2 28/40] genirq/msi: Remove platform_msi_create_device_domain() Thomas Gleixner
2022-11-21 14:40 ` [patch V2 29/40] genirq/gic-v3-mbi: Remove unused wired MSI mechanics Thomas Gleixner
2022-11-21 14:40 ` [patch V2 30/40] genirq/gic-v3-mbi: Switch to MSI parent Thomas Gleixner
2022-11-21 14:40 ` [patch V2 31/40] irqchip/gic-v2m: Switch to device MSI Thomas Gleixner
2022-11-21 14:40 ` [patch V2 32/40] genirq/msi: Provide MSI_FLAG_PARENT_PM_DEV Thomas Gleixner
2022-11-21 14:40 ` [patch V2 33/40] irqchip/imx-mu-msi: Switch to MSI parent Thomas Gleixner
2022-11-28 20:47 ` Frank Li [this message]
2022-11-28 21:03 ` Thomas Gleixner
2022-11-21 14:40 ` [patch V2 34/40] irqchip/irq-mvebu-icu: Prepare for real per device MSI Thomas Gleixner
2022-11-21 14:40 ` [patch V2 35/40] irqchip/mvebu-gicp: Switch to MSI parent Thomas Gleixner
2022-11-21 14:40 ` [patch V2 36/40] irqchip/mvebu-odmi: Switch to parent MSI Thomas Gleixner
2022-11-21 14:40 ` [patch V2 37/40] irqchip/irq-mvebu-sei: Switch to MSI parent Thomas Gleixner
2022-11-21 14:40 ` [patch V2 38/40] irqchip/irq-mvebu-icu: Remove platform MSI leftovers Thomas Gleixner
2022-11-21 14:40 ` [patch V2 39/40] genirq/msi: " Thomas Gleixner
2022-11-21 14:40 ` [patch V2 40/40] genirq/msi: Move msi_device_data to core Thomas Gleixner
2023-01-11 19:29 ` [patch V2 00/40] genirq, irqchip: Convert ARM MSI handling to per device MSI domains 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=20221128204710.2084706-1-Frank.Li@nxp.com \
--to=frank.li@nxp.com \
--cc=agross@kernel.org \
--cc=ammarfaizi2@gnuweeb.org \
--cc=andersson@kernel.org \
--cc=andrew@lunn.ch \
--cc=bhelgaas@google.com \
--cc=festevam@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=gregory.clement@bootlin.com \
--cc=imx@lists.linux.dev \
--cc=jgg@mellanox.com \
--cc=kristo@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=nm@ti.com \
--cc=okaya@kernel.org \
--cc=robin.murphy@arm.com \
--cc=s.hauer@pengutronix.de \
--cc=sebastian.hesselbarth@gmail.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shawnguo@kernel.org \
--cc=ssantosh@kernel.org \
--cc=tglx@linutronix.de \
--cc=vkoul@kernel.org \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®