* [PATCH 1/6] fsl-mc: Remove MSI domain propagation to sub-devices
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
@ 2026-02-18 13:51 ` Marc Zyngier
2026-02-18 13:51 ` [PATCH 2/6] fsl_mc: Add minimal infrastructure to use platform MSI Marc Zyngier
` (6 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:51 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
Only the root device generates MSIs (it is the only one talking to
the ITS), so propagating the domain is pretty pointless. Remove it.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/bus/fsl-mc/fsl-mc-bus.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc-bus.c
index 25845c04e5620..b4a47e6956bf2 100644
--- a/drivers/bus/fsl-mc/fsl-mc-bus.c
+++ b/drivers/bus/fsl-mc/fsl-mc-bus.c
@@ -865,14 +865,12 @@ int fsl_mc_device_add(struct fsl_mc_obj_desc *obj_desc,
} else {
/*
* A non-DPRC object has to be a child of a DPRC, use the
- * parent's ICID and interrupt domain.
+ * parent's ICID.
*/
mc_dev->icid = parent_mc_dev->icid;
mc_dev->dma_mask = FSL_MC_DEFAULT_DMA_MASK;
mc_dev->dev.dma_mask = &mc_dev->dma_mask;
mc_dev->dev.coherent_dma_mask = mc_dev->dma_mask;
- dev_set_msi_domain(&mc_dev->dev,
- dev_get_msi_domain(&parent_mc_dev->dev));
}
/*
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 2/6] fsl_mc: Add minimal infrastructure to use platform MSI
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
2026-02-18 13:51 ` [PATCH 1/6] fsl-mc: Remove MSI domain propagation to sub-devices Marc Zyngier
@ 2026-02-18 13:51 ` Marc Zyngier
2026-02-18 13:52 ` [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling Marc Zyngier
` (5 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:51 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
Add the tiny bit of infrastructure to be able to use platform MSI
instead of the current hack. This means providing a write_msi_msg
callback, as well as irq domain and devid retrieval helpers.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/bus/fsl-mc/fsl-mc-msi.c | 50 ++++++++++++++++++++++++-----
drivers/bus/fsl-mc/fsl-mc-private.h | 1 +
include/linux/fsl/mc.h | 2 ++
3 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/drivers/bus/fsl-mc/fsl-mc-msi.c b/drivers/bus/fsl-mc/fsl-mc-msi.c
index 82cd69f7884c6..c9f50969e88ce 100644
--- a/drivers/bus/fsl-mc/fsl-mc-msi.c
+++ b/drivers/bus/fsl-mc/fsl-mc-msi.c
@@ -110,13 +110,8 @@ static void __fsl_mc_msi_write_msg(struct fsl_mc_device *mc_bus_dev,
}
}
-/*
- * NOTE: This function is invoked with interrupts disabled
- */
-static void fsl_mc_msi_write_msg(struct irq_data *irq_data,
- struct msi_msg *msg)
+static void fsl_mc_write_msi_msg(struct msi_desc *msi_desc, struct msi_msg *msg)
{
- struct msi_desc *msi_desc = irq_data_get_msi_desc(irq_data);
struct fsl_mc_device *mc_bus_dev = to_fsl_mc_device(msi_desc->dev);
struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev);
struct fsl_mc_device_irq *mc_dev_irq =
@@ -130,6 +125,17 @@ static void fsl_mc_msi_write_msg(struct irq_data *irq_data,
__fsl_mc_msi_write_msg(mc_bus_dev, mc_dev_irq, msi_desc);
}
+/*
+ * NOTE: This function is invoked with interrupts disabled
+ */
+static void fsl_mc_msi_write_msg(struct irq_data *irq_data,
+ struct msi_msg *msg)
+{
+ struct msi_desc *msi_desc = irq_data_get_msi_desc(irq_data);
+
+ fsl_mc_write_msi_msg(msi_desc, msg);
+}
+
static void fsl_mc_msi_update_chip_ops(struct msi_domain_info *info)
{
struct irq_chip *chip = info->chip;
@@ -209,6 +215,20 @@ struct irq_domain *fsl_mc_find_msi_domain(struct device *dev)
return msi_domain;
}
+struct irq_domain *fsl_mc_get_msi_parent(struct device *dev)
+{
+ struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
+ struct device *root_dprc_dev;
+ struct device *bus_dev;
+
+ fsl_mc_get_root_dprc(dev, &root_dprc_dev);
+ bus_dev = root_dprc_dev->parent;
+
+ return (bus_dev->of_node ?
+ of_msi_get_domain(bus_dev, bus_dev->of_node, DOMAIN_BUS_NEXUS) :
+ iort_get_device_domain(bus_dev, mc_dev->icid, DOMAIN_BUS_NEXUS));
+}
+
int fsl_mc_msi_domain_alloc_irqs(struct device *dev, unsigned int irq_count)
{
int error = msi_setup_device_data(dev);
@@ -220,8 +240,10 @@ int fsl_mc_msi_domain_alloc_irqs(struct device *dev, unsigned int irq_count)
* NOTE: Calling this function will trigger the invocation of the
* its_fsl_mc_msi_prepare() callback
*/
- error = msi_domain_alloc_irqs_range(dev, MSI_DEFAULT_DOMAIN, 0, irq_count - 1);
-
+ if (!irq_domain_is_msi_parent(dev_get_msi_domain(dev)))
+ error = msi_domain_alloc_irqs_range(dev, MSI_DEFAULT_DOMAIN, 0, irq_count - 1);
+ else
+ error = platform_device_msi_init_and_alloc_irqs(dev, irq_count, fsl_mc_write_msi_msg);
if (error)
dev_err(dev, "Failed to allocate IRQs\n");
return error;
@@ -231,3 +253,15 @@ void fsl_mc_msi_domain_free_irqs(struct device *dev)
{
msi_domain_free_irqs_all(dev, MSI_DEFAULT_DOMAIN);
}
+
+u32 fsl_mc_get_msi_id(struct device *dev)
+{
+ struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
+ struct device *root_dprc_dev;
+
+ fsl_mc_get_root_dprc(dev, &root_dprc_dev);
+
+ return (root_dprc_dev->parent->of_node ?
+ of_msi_xlate(dev, NULL, mc_dev->icid) :
+ iort_msi_map_id(dev, mc_dev->icid));
+}
diff --git a/drivers/bus/fsl-mc/fsl-mc-private.h b/drivers/bus/fsl-mc/fsl-mc-private.h
index beed4c53533d8..44868f874fd66 100644
--- a/drivers/bus/fsl-mc/fsl-mc-private.h
+++ b/drivers/bus/fsl-mc/fsl-mc-private.h
@@ -642,6 +642,7 @@ int fsl_mc_msi_domain_alloc_irqs(struct device *dev,
void fsl_mc_msi_domain_free_irqs(struct device *dev);
struct irq_domain *fsl_mc_find_msi_domain(struct device *dev);
+struct irq_domain *fsl_mc_get_msi_parent(struct device *dev);
int __must_check fsl_create_mc_io(struct device *dev,
phys_addr_t mc_portal_phys_addr,
diff --git a/include/linux/fsl/mc.h b/include/linux/fsl/mc.h
index 897d6211c1635..bcc38c0fc230a 100644
--- a/include/linux/fsl/mc.h
+++ b/include/linux/fsl/mc.h
@@ -361,9 +361,11 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd);
#ifdef CONFIG_FSL_MC_BUS
#define dev_is_fsl_mc(_dev) ((_dev)->bus == &fsl_mc_bus_type)
+u32 fsl_mc_get_msi_id(struct device *dev);
#else
/* If fsl-mc bus is not present device cannot belong to fsl-mc bus */
#define dev_is_fsl_mc(_dev) (0)
+#define fsl_mc_get_msi_id(_dev) (0)
#endif
/* Macro to check if a device is a container device */
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
2026-02-18 13:51 ` [PATCH 1/6] fsl-mc: Remove MSI domain propagation to sub-devices Marc Zyngier
2026-02-18 13:51 ` [PATCH 2/6] fsl_mc: Add minimal infrastructure to use platform MSI Marc Zyngier
@ 2026-02-18 13:52 ` Marc Zyngier
2026-02-22 22:57 ` Thomas Gleixner
2026-02-18 13:52 ` [PATCH 4/6] fsl_mc: Switch over to per-device platform MSI Marc Zyngier
` (4 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:52 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
Make the ITS code aware of fsl_mc devices by plumbing the devid
retrieval primitive.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/irqchip/irq-gic-its-msi-parent.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
index 12f45228c8674..532c0d626ca04 100644
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -7,6 +7,7 @@
#include <linux/acpi_iort.h>
#include <linux/of_address.h>
#include <linux/pci.h>
+#include <linux/fsl/mc.h>
#include "irq-gic-its-msi-parent.h"
#include <linux/irqchip/irq-msi-lib.h>
@@ -186,9 +187,11 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
{
struct msi_domain_info *msi_info;
u32 dev_id;
- int ret;
+ int ret = 0;
- if (dev->of_node)
+ if (dev_is_fsl_mc(dev))
+ dev_id = fsl_mc_get_msi_id(dev);
+ else if (dev->of_node)
ret = of_pmsi_get_msi_info(domain->parent, dev, &dev_id, NULL);
else
ret = iort_pmsi_get_dev_id(dev, &dev_id);
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-18 13:52 ` [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling Marc Zyngier
@ 2026-02-22 22:57 ` Thomas Gleixner
2026-02-23 9:01 ` Marc Zyngier
0 siblings, 1 reply; 18+ messages in thread
From: Thomas Gleixner @ 2026-02-22 22:57 UTC (permalink / raw)
To: Marc Zyngier, Ioana Ciornei, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
On Wed, Feb 18 2026 at 13:52, Marc Zyngier wrote:
> Make the ITS code aware of fsl_mc devices by plumbing the devid
> retrieval primitive.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> drivers/irqchip/irq-gic-its-msi-parent.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
> index 12f45228c8674..532c0d626ca04 100644
> --- a/drivers/irqchip/irq-gic-its-msi-parent.c
> +++ b/drivers/irqchip/irq-gic-its-msi-parent.c
> @@ -7,6 +7,7 @@
> #include <linux/acpi_iort.h>
> #include <linux/of_address.h>
> #include <linux/pci.h>
> +#include <linux/fsl/mc.h>
>
> #include "irq-gic-its-msi-parent.h"
> #include <linux/irqchip/irq-msi-lib.h>
> @@ -186,9 +187,11 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
> {
> struct msi_domain_info *msi_info;
> u32 dev_id;
> - int ret;
> + int ret = 0;
>
> - if (dev->of_node)
> + if (dev_is_fsl_mc(dev))
> + dev_id = fsl_mc_get_msi_id(dev);
> + else if (dev->of_node)
> ret = of_pmsi_get_msi_info(domain->parent, dev, &dev_id, NULL);
> else
> ret = iort_pmsi_get_dev_id(dev, &dev_id);
This rejects as you are building against an unmerged change (I assume
it's Lorenzos GIC5 stuff). I can fix it up when applying.
Thanks,
tglx
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-22 22:57 ` Thomas Gleixner
@ 2026-02-23 9:01 ` Marc Zyngier
2026-02-23 13:02 ` Thomas Gleixner
0 siblings, 1 reply; 18+ messages in thread
From: Marc Zyngier @ 2026-02-23 9:01 UTC (permalink / raw)
To: Thomas Gleixner
Cc: Ioana Ciornei, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Sun, 22 Feb 2026 22:57:44 +0000,
Thomas Gleixner <tglx@kernel.org> wrote:
>
> On Wed, Feb 18 2026 at 13:52, Marc Zyngier wrote:
> > Make the ITS code aware of fsl_mc devices by plumbing the devid
> > retrieval primitive.
> >
> > Signed-off-by: Marc Zyngier <maz@kernel.org>
> > ---
> > drivers/irqchip/irq-gic-its-msi-parent.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
> > index 12f45228c8674..532c0d626ca04 100644
> > --- a/drivers/irqchip/irq-gic-its-msi-parent.c
> > +++ b/drivers/irqchip/irq-gic-its-msi-parent.c
> > @@ -7,6 +7,7 @@
> > #include <linux/acpi_iort.h>
> > #include <linux/of_address.h>
> > #include <linux/pci.h>
> > +#include <linux/fsl/mc.h>
> >
> > #include "irq-gic-its-msi-parent.h"
> > #include <linux/irqchip/irq-msi-lib.h>
> > @@ -186,9 +187,11 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
> > {
> > struct msi_domain_info *msi_info;
> > u32 dev_id;
> > - int ret;
> > + int ret = 0;
> >
> > - if (dev->of_node)
> > + if (dev_is_fsl_mc(dev))
> > + dev_id = fsl_mc_get_msi_id(dev);
> > + else if (dev->of_node)
> > ret = of_pmsi_get_msi_info(domain->parent, dev, &dev_id, NULL);
> > else
> > ret = iort_pmsi_get_dev_id(dev, &dev_id);
>
> This rejects as you are building against an unmerged change (I assume
> it's Lorenzos GIC5 stuff). I can fix it up when applying.
That was against vanilla 6.19. I'll rebase on -rc1 to satisfy myself
that this is still doing the right thing after the ACPI crap fest, and
repost the result.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-23 9:01 ` Marc Zyngier
@ 2026-02-23 13:02 ` Thomas Gleixner
2026-02-23 13:22 ` Marc Zyngier
0 siblings, 1 reply; 18+ messages in thread
From: Thomas Gleixner @ 2026-02-23 13:02 UTC (permalink / raw)
To: Marc Zyngier
Cc: Ioana Ciornei, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Mon, Feb 23 2026 at 09:01, Marc Zyngier wrote:
> On Sun, 22 Feb 2026 22:57:44 +0000,
> Thomas Gleixner <tglx@kernel.org> wrote:
>> This rejects as you are building against an unmerged change (I assume
>> it's Lorenzos GIC5 stuff). I can fix it up when applying.
>
> That was against vanilla 6.19. I'll rebase on -rc1 to satisfy myself
> that this is still doing the right thing after the ACPI crap fest, and
> repost the result.
Ah. The other way round :)
My resolution is simple and it looks about right. Please note the
cosmetic changes I did on the way :)
Thanks,
tglx
---
--- a/drivers/irqchip/irq-gic-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-its-msi-parent.c
@@ -5,6 +5,7 @@
// Copyright (C) 2022 Intel
#include <linux/acpi_iort.h>
+#include <linux/fsl/mc.h>
#include <linux/of_address.h>
#include <linux/pci.h>
@@ -186,10 +187,12 @@ static int its_pmsi_prepare(struct irq_d
int nvec, msi_alloc_info_t *info)
{
struct msi_domain_info *msi_info;
+ int ret = 0;
u32 dev_id;
- int ret;
- if (dev->of_node)
+ if (dev_is_fsl_mc(dev))
+ dev_id = fsl_mc_get_msi_id(dev);
+ else if (dev->of_node)
ret = of_pmsi_get_msi_info(domain->parent, dev, &dev_id, NULL);
else
ret = iort_pmsi_get_msi_info(dev, &dev_id, NULL);
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-23 13:02 ` Thomas Gleixner
@ 2026-02-23 13:22 ` Marc Zyngier
2026-02-24 6:52 ` Thomas Gleixner
0 siblings, 1 reply; 18+ messages in thread
From: Marc Zyngier @ 2026-02-23 13:22 UTC (permalink / raw)
To: Thomas Gleixner
Cc: Ioana Ciornei, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Mon, 23 Feb 2026 13:02:50 +0000,
Thomas Gleixner <tglx@kernel.org> wrote:
>
> On Mon, Feb 23 2026 at 09:01, Marc Zyngier wrote:
> > On Sun, 22 Feb 2026 22:57:44 +0000,
> > Thomas Gleixner <tglx@kernel.org> wrote:
> >> This rejects as you are building against an unmerged change (I assume
> >> it's Lorenzos GIC5 stuff). I can fix it up when applying.
> >
> > That was against vanilla 6.19. I'll rebase on -rc1 to satisfy myself
> > that this is still doing the right thing after the ACPI crap fest, and
> > repost the result.
>
> Ah. The other way round :)
>
> My resolution is simple and it looks about right. Please note the
> cosmetic changes I did on the way :)
Yup, looks good to me. And yes, moving the include up is the right
thing to do.
I have another small change in my current stack that also drops
DOMAIN_BUS_FSL_MC_MSI from include/linux/irqdomain_defs.h. Could be
folded into patch #5.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling
2026-02-23 13:22 ` Marc Zyngier
@ 2026-02-24 6:52 ` Thomas Gleixner
0 siblings, 0 replies; 18+ messages in thread
From: Thomas Gleixner @ 2026-02-24 6:52 UTC (permalink / raw)
To: Marc Zyngier
Cc: Ioana Ciornei, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Mon, Feb 23 2026 at 13:22, Marc Zyngier wrote:
> On Mon, 23 Feb 2026 13:02:50 +0000,
> Thomas Gleixner <tglx@kernel.org> wrote:
>>
>> On Mon, Feb 23 2026 at 09:01, Marc Zyngier wrote:
>> > On Sun, 22 Feb 2026 22:57:44 +0000,
>> > Thomas Gleixner <tglx@kernel.org> wrote:
>> >> This rejects as you are building against an unmerged change (I assume
>> >> it's Lorenzos GIC5 stuff). I can fix it up when applying.
>> >
>> > That was against vanilla 6.19. I'll rebase on -rc1 to satisfy myself
>> > that this is still doing the right thing after the ACPI crap fest, and
>> > repost the result.
>>
>> Ah. The other way round :)
>>
>> My resolution is simple and it looks about right. Please note the
>> cosmetic changes I did on the way :)
>
> Yup, looks good to me. And yes, moving the include up is the right
> thing to do.
>
> I have another small change in my current stack that also drops
> DOMAIN_BUS_FSL_MC_MSI from include/linux/irqdomain_defs.h. Could be
> folded into patch #5.
Just resend the pile.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 4/6] fsl_mc: Switch over to per-device platform MSI
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
` (2 preceding siblings ...)
2026-02-18 13:52 ` [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent handling Marc Zyngier
@ 2026-02-18 13:52 ` Marc Zyngier
2026-02-18 13:52 ` [PATCH 5/6] fsl_mc: Remove legacy MSI implementation Marc Zyngier
` (3 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:52 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
Obtain the msi-parent irqdomain instead of the fsl_mc domain,
which magically engages the per-device infrastructure.
Additionally, simplify the overly complicated error handling.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/bus/fsl-mc/dprc-driver.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/fsl-mc/dprc-driver.c b/drivers/bus/fsl-mc/dprc-driver.c
index c63a7e688db6a..8ee5fb3c2d416 100644
--- a/drivers/bus/fsl-mc/dprc-driver.c
+++ b/drivers/bus/fsl-mc/dprc-driver.c
@@ -620,9 +620,8 @@ int dprc_setup(struct fsl_mc_device *mc_dev)
{
struct device *parent_dev = mc_dev->dev.parent;
struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_dev);
- struct irq_domain *mc_msi_domain;
+ struct irq_domain *mc_msi_domain = NULL;
bool mc_io_created = false;
- bool msi_domain_set = false;
bool uapi_created = false;
u16 major_ver, minor_ver;
size_t region_size;
@@ -663,14 +662,12 @@ int dprc_setup(struct fsl_mc_device *mc_dev)
uapi_created = true;
}
- mc_msi_domain = fsl_mc_find_msi_domain(&mc_dev->dev);
- if (!mc_msi_domain) {
+ mc_msi_domain = fsl_mc_get_msi_parent(&mc_dev->dev);
+ if (!mc_msi_domain)
dev_warn(&mc_dev->dev,
"WARNING: MC bus without interrupt support\n");
- } else {
+ else
dev_set_msi_domain(&mc_dev->dev, mc_msi_domain);
- msi_domain_set = true;
- }
error = dprc_open(mc_dev->mc_io, 0, mc_dev->obj_desc.id,
&mc_dev->mc_handle);
@@ -710,8 +707,7 @@ int dprc_setup(struct fsl_mc_device *mc_dev)
(void)dprc_close(mc_dev->mc_io, 0, mc_dev->mc_handle);
error_cleanup_msi_domain:
- if (msi_domain_set)
- dev_set_msi_domain(&mc_dev->dev, NULL);
+ dev_set_msi_domain(&mc_dev->dev, NULL);
if (mc_io_created) {
fsl_destroy_mc_io(mc_dev->mc_io);
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 5/6] fsl_mc: Remove legacy MSI implementation
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
` (3 preceding siblings ...)
2026-02-18 13:52 ` [PATCH 4/6] fsl_mc: Switch over to per-device platform MSI Marc Zyngier
@ 2026-02-18 13:52 ` Marc Zyngier
2026-02-18 13:52 ` [PATCH 6/6] platform-msi: Remove stale comment Marc Zyngier
` (2 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:52 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
Get rid of the most of the fsl_mc MSI infrastructure, which is
now totally unused.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/bus/fsl-mc/fsl-mc-msi.c | 140 +---------------
drivers/bus/fsl-mc/fsl-mc-private.h | 1 -
drivers/irqchip/Kconfig | 6 -
drivers/irqchip/Makefile | 1 -
drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c | 168 --------------------
include/linux/fsl/mc.h | 4 -
6 files changed, 1 insertion(+), 319 deletions(-)
delete mode 100644 drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c
diff --git a/drivers/bus/fsl-mc/fsl-mc-msi.c b/drivers/bus/fsl-mc/fsl-mc-msi.c
index c9f50969e88ce..8ee4796040a8d 100644
--- a/drivers/bus/fsl-mc/fsl-mc-msi.c
+++ b/drivers/bus/fsl-mc/fsl-mc-msi.c
@@ -15,46 +15,6 @@
#include "fsl-mc-private.h"
-#ifdef GENERIC_MSI_DOMAIN_OPS
-/*
- * Generate a unique ID identifying the interrupt (only used within the MSI
- * irqdomain. Combine the icid with the interrupt index.
- */
-static irq_hw_number_t fsl_mc_domain_calc_hwirq(struct fsl_mc_device *dev,
- struct msi_desc *desc)
-{
- /*
- * Make the base hwirq value for ICID*10000 so it is readable
- * as a decimal value in /proc/interrupts.
- */
- return (irq_hw_number_t)(desc->msi_index + (dev->icid * 10000));
-}
-
-static void fsl_mc_msi_set_desc(msi_alloc_info_t *arg,
- struct msi_desc *desc)
-{
- arg->desc = desc;
- arg->hwirq = fsl_mc_domain_calc_hwirq(to_fsl_mc_device(desc->dev),
- desc);
-}
-#else
-#define fsl_mc_msi_set_desc NULL
-#endif
-
-static void fsl_mc_msi_update_dom_ops(struct msi_domain_info *info)
-{
- struct msi_domain_ops *ops = info->ops;
-
- if (!ops)
- return;
-
- /*
- * set_desc should not be set by the caller
- */
- if (!ops->set_desc)
- ops->set_desc = fsl_mc_msi_set_desc;
-}
-
static void __fsl_mc_msi_write_msg(struct fsl_mc_device *mc_bus_dev,
struct fsl_mc_device_irq *mc_dev_irq,
struct msi_desc *msi_desc)
@@ -125,96 +85,6 @@ static void fsl_mc_write_msi_msg(struct msi_desc *msi_desc, struct msi_msg *msg)
__fsl_mc_msi_write_msg(mc_bus_dev, mc_dev_irq, msi_desc);
}
-/*
- * NOTE: This function is invoked with interrupts disabled
- */
-static void fsl_mc_msi_write_msg(struct irq_data *irq_data,
- struct msi_msg *msg)
-{
- struct msi_desc *msi_desc = irq_data_get_msi_desc(irq_data);
-
- fsl_mc_write_msi_msg(msi_desc, msg);
-}
-
-static void fsl_mc_msi_update_chip_ops(struct msi_domain_info *info)
-{
- struct irq_chip *chip = info->chip;
-
- if (!chip)
- return;
-
- /*
- * irq_write_msi_msg should not be set by the caller
- */
- if (!chip->irq_write_msi_msg)
- chip->irq_write_msi_msg = fsl_mc_msi_write_msg;
-}
-
-/**
- * fsl_mc_msi_create_irq_domain - Create a fsl-mc MSI interrupt domain
- * @fwnode: Optional firmware node of the interrupt controller
- * @info: MSI domain info
- * @parent: Parent irq domain
- *
- * Updates the domain and chip ops and creates a fsl-mc MSI
- * interrupt domain.
- *
- * Returns:
- * A domain pointer or NULL in case of failure.
- */
-struct irq_domain *fsl_mc_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent)
-{
- struct irq_domain *domain;
-
- if (WARN_ON((info->flags & MSI_FLAG_LEVEL_CAPABLE)))
- info->flags &= ~MSI_FLAG_LEVEL_CAPABLE;
- if (info->flags & MSI_FLAG_USE_DEF_DOM_OPS)
- fsl_mc_msi_update_dom_ops(info);
- if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
- fsl_mc_msi_update_chip_ops(info);
- info->flags |= MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS | MSI_FLAG_FREE_MSI_DESCS;
-
- domain = msi_create_irq_domain(fwnode, info, parent);
- if (domain)
- irq_domain_update_bus_token(domain, DOMAIN_BUS_FSL_MC_MSI);
-
- return domain;
-}
-
-struct irq_domain *fsl_mc_find_msi_domain(struct device *dev)
-{
- struct device *root_dprc_dev;
- struct device *bus_dev;
- struct irq_domain *msi_domain;
- struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
-
- fsl_mc_get_root_dprc(dev, &root_dprc_dev);
- bus_dev = root_dprc_dev->parent;
-
- if (bus_dev->of_node) {
- msi_domain = of_msi_map_get_device_domain(dev,
- mc_dev->icid,
- DOMAIN_BUS_FSL_MC_MSI);
-
- /*
- * if the msi-map property is missing assume that all the
- * child containers inherit the domain from the parent
- */
- if (!msi_domain)
-
- msi_domain = of_msi_get_domain(bus_dev,
- bus_dev->of_node,
- DOMAIN_BUS_FSL_MC_MSI);
- } else {
- msi_domain = iort_get_device_domain(dev, mc_dev->icid,
- DOMAIN_BUS_FSL_MC_MSI);
- }
-
- return msi_domain;
-}
-
struct irq_domain *fsl_mc_get_msi_parent(struct device *dev)
{
struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
@@ -232,18 +102,10 @@ struct irq_domain *fsl_mc_get_msi_parent(struct device *dev)
int fsl_mc_msi_domain_alloc_irqs(struct device *dev, unsigned int irq_count)
{
int error = msi_setup_device_data(dev);
-
if (error)
return error;
- /*
- * NOTE: Calling this function will trigger the invocation of the
- * its_fsl_mc_msi_prepare() callback
- */
- if (!irq_domain_is_msi_parent(dev_get_msi_domain(dev)))
- error = msi_domain_alloc_irqs_range(dev, MSI_DEFAULT_DOMAIN, 0, irq_count - 1);
- else
- error = platform_device_msi_init_and_alloc_irqs(dev, irq_count, fsl_mc_write_msi_msg);
+ error = platform_device_msi_init_and_alloc_irqs(dev, irq_count, fsl_mc_write_msi_msg);
if (error)
dev_err(dev, "Failed to allocate IRQs\n");
return error;
diff --git a/drivers/bus/fsl-mc/fsl-mc-private.h b/drivers/bus/fsl-mc/fsl-mc-private.h
index 44868f874fd66..197edcc8cde46 100644
--- a/drivers/bus/fsl-mc/fsl-mc-private.h
+++ b/drivers/bus/fsl-mc/fsl-mc-private.h
@@ -641,7 +641,6 @@ int fsl_mc_msi_domain_alloc_irqs(struct device *dev,
void fsl_mc_msi_domain_free_irqs(struct device *dev);
-struct irq_domain *fsl_mc_find_msi_domain(struct device *dev);
struct irq_domain *fsl_mc_get_msi_parent(struct device *dev);
int __must_check fsl_create_mc_io(struct device *dev,
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index f334f49c9791f..c1f2095400c74 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -51,12 +51,6 @@ config ARM_GIC_V3_ITS
default ARM_GIC_V3
select IRQ_MSI_IOMMU
-config ARM_GIC_V3_ITS_FSL_MC
- bool
- depends on ARM_GIC_V3_ITS
- depends on FSL_MC_BUS
- default ARM_GIC_V3_ITS
-
config ARM_GIC_V5
bool
select IRQ_DOMAIN_HIERARCHY
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 6a229443efe08..900f03299d9a5 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -35,7 +35,6 @@ obj-$(CONFIG_ARM_GIC_V2M) += irq-gic-v2m.o
obj-$(CONFIG_ARM_GIC_V3) += irq-gic-v3.o irq-gic-v3-mbi.o irq-gic-common.o
obj-$(CONFIG_ARM_GIC_ITS_PARENT) += irq-gic-its-msi-parent.o
obj-$(CONFIG_ARM_GIC_V3_ITS) += irq-gic-v3-its.o irq-gic-v4.o
-obj-$(CONFIG_ARM_GIC_V3_ITS_FSL_MC) += irq-gic-v3-its-fsl-mc-msi.o
obj-$(CONFIG_ARM_GIC_V5) += irq-gic-v5.o irq-gic-v5-irs.o irq-gic-v5-its.o \
irq-gic-v5-iwb.o
obj-$(CONFIG_HISILICON_IRQ_MBIGEN) += irq-mbigen.o
diff --git a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c b/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c
deleted file mode 100644
index b5785472765a3..0000000000000
--- a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c
+++ /dev/null
@@ -1,168 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Freescale Management Complex (MC) bus driver MSI support
- *
- * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
- * Author: German Rivera <German.Rivera@freescale.com>
- *
- */
-
-#include <linux/acpi.h>
-#include <linux/acpi_iort.h>
-#include <linux/irq.h>
-#include <linux/msi.h>
-#include <linux/of.h>
-#include <linux/of_irq.h>
-#include <linux/fsl/mc.h>
-
-static struct irq_chip its_msi_irq_chip = {
- .name = "ITS-fMSI",
- .irq_mask = irq_chip_mask_parent,
- .irq_unmask = irq_chip_unmask_parent,
- .irq_eoi = irq_chip_eoi_parent,
- .irq_set_affinity = msi_domain_set_affinity
-};
-
-static u32 fsl_mc_msi_domain_get_msi_id(struct irq_domain *domain,
- struct fsl_mc_device *mc_dev)
-{
- struct device_node *of_node;
- u32 out_id;
-
- of_node = irq_domain_get_of_node(domain);
- out_id = of_node ? of_msi_xlate(&mc_dev->dev, &of_node, mc_dev->icid) :
- iort_msi_map_id(&mc_dev->dev, mc_dev->icid);
-
- return out_id;
-}
-
-static int its_fsl_mc_msi_prepare(struct irq_domain *msi_domain,
- struct device *dev,
- int nvec, msi_alloc_info_t *info)
-{
- struct fsl_mc_device *mc_bus_dev;
- struct msi_domain_info *msi_info;
-
- if (!dev_is_fsl_mc(dev))
- return -EINVAL;
-
- mc_bus_dev = to_fsl_mc_device(dev);
- if (!(mc_bus_dev->flags & FSL_MC_IS_DPRC))
- return -EINVAL;
-
- /*
- * Set the device Id to be passed to the GIC-ITS:
- *
- * NOTE: This device id corresponds to the IOMMU stream ID
- * associated with the DPRC object (ICID).
- */
- info->scratchpad[0].ul = fsl_mc_msi_domain_get_msi_id(msi_domain,
- mc_bus_dev);
- msi_info = msi_get_domain_info(msi_domain->parent);
-
- /* Allocate at least 32 MSIs, and always as a power of 2 */
- nvec = max_t(int, 32, roundup_pow_of_two(nvec));
- return msi_info->ops->msi_prepare(msi_domain->parent, dev, nvec, info);
-}
-
-static struct msi_domain_ops its_fsl_mc_msi_ops __ro_after_init = {
- .msi_prepare = its_fsl_mc_msi_prepare,
-};
-
-static struct msi_domain_info its_fsl_mc_msi_domain_info = {
- .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
- .ops = &its_fsl_mc_msi_ops,
- .chip = &its_msi_irq_chip,
-};
-
-static const struct of_device_id its_device_id[] = {
- { .compatible = "arm,gic-v3-its", },
- {},
-};
-
-static void __init its_fsl_mc_msi_init_one(struct fwnode_handle *handle,
- const char *name)
-{
- struct irq_domain *parent;
- struct irq_domain *mc_msi_domain;
-
- parent = irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS);
- if (!parent || !msi_get_domain_info(parent)) {
- pr_err("%s: unable to locate ITS domain\n", name);
- return;
- }
-
- mc_msi_domain = fsl_mc_msi_create_irq_domain(handle,
- &its_fsl_mc_msi_domain_info,
- parent);
- if (!mc_msi_domain) {
- pr_err("%s: unable to create fsl-mc domain\n", name);
- return;
- }
-
- pr_info("fsl-mc MSI: %s domain created\n", name);
-}
-
-#ifdef CONFIG_ACPI
-static int __init
-its_fsl_mc_msi_parse_madt(union acpi_subtable_headers *header,
- const unsigned long end)
-{
- struct acpi_madt_generic_translator *its_entry;
- struct fwnode_handle *dom_handle;
- const char *node_name;
- int err = 0;
-
- its_entry = (struct acpi_madt_generic_translator *)header;
- node_name = kasprintf(GFP_KERNEL, "ITS@0x%lx",
- (long)its_entry->base_address);
-
- dom_handle = iort_find_domain_token(its_entry->translation_id);
- if (!dom_handle) {
- pr_err("%s: Unable to locate ITS domain handle\n", node_name);
- err = -ENXIO;
- goto out;
- }
-
- its_fsl_mc_msi_init_one(dom_handle, node_name);
-
-out:
- kfree(node_name);
- return err;
-}
-
-
-static void __init its_fsl_mc_acpi_msi_init(void)
-{
- acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
- its_fsl_mc_msi_parse_madt, 0);
-}
-#else
-static inline void its_fsl_mc_acpi_msi_init(void) { }
-#endif
-
-static void __init its_fsl_mc_of_msi_init(void)
-{
- struct device_node *np;
-
- for (np = of_find_matching_node(NULL, its_device_id); np;
- np = of_find_matching_node(np, its_device_id)) {
- if (!of_device_is_available(np))
- continue;
- if (!of_property_read_bool(np, "msi-controller"))
- continue;
-
- its_fsl_mc_msi_init_one(of_fwnode_handle(np),
- np->full_name);
- }
-}
-
-static int __init its_fsl_mc_msi_init(void)
-{
- its_fsl_mc_of_msi_init();
- its_fsl_mc_acpi_msi_init();
-
- return 0;
-}
-
-early_initcall(its_fsl_mc_msi_init);
diff --git a/include/linux/fsl/mc.h b/include/linux/fsl/mc.h
index bcc38c0fc230a..e9522233f9b57 100644
--- a/include/linux/fsl/mc.h
+++ b/include/linux/fsl/mc.h
@@ -425,10 +425,6 @@ int __must_check fsl_mc_object_allocate(struct fsl_mc_device *mc_dev,
void fsl_mc_object_free(struct fsl_mc_device *mc_adev);
-struct irq_domain *fsl_mc_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent);
-
int __must_check fsl_mc_allocate_irqs(struct fsl_mc_device *mc_dev);
void fsl_mc_free_irqs(struct fsl_mc_device *mc_dev);
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 6/6] platform-msi: Remove stale comment
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
` (4 preceding siblings ...)
2026-02-18 13:52 ` [PATCH 5/6] fsl_mc: Remove legacy MSI implementation Marc Zyngier
@ 2026-02-18 13:52 ` Marc Zyngier
2026-02-19 13:56 ` [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Sascha Bischoff
2026-02-20 15:41 ` Ioana Ciornei
7 siblings, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-18 13:52 UTC (permalink / raw)
To: Ioana Ciornei, Thomas Gleixner, Christophe Leroy (CS GROUP)
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
The backward compatibility code for the previous incarnation of
platform MSI was removed in e9894248994ca ("genirq/msi: Remove
platform MSI leftovers"), but the comment about that removal is
still present. Remove it.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
drivers/base/platform-msi.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/base/platform-msi.c b/drivers/base/platform-msi.c
index 70db08f3ac6fa..69eed058eb208 100644
--- a/drivers/base/platform-msi.c
+++ b/drivers/base/platform-msi.c
@@ -61,10 +61,6 @@ static const struct msi_domain_template platform_msi_template = {
* parent. The parent domain sets up the new domain. The domain has
* a fixed size of @nvec. The domain is managed by devres and will
* be removed when the device is removed.
- *
- * Note: For migration purposes this falls back to the original platform_msi code
- * up to the point where all platforms have been converted to the MSI
- * parent model.
*/
int platform_device_msi_init_and_alloc_irqs(struct device *dev, unsigned int nvec,
irq_write_msi_msg_t write_msi_msg)
--
2.47.3
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
` (5 preceding siblings ...)
2026-02-18 13:52 ` [PATCH 6/6] platform-msi: Remove stale comment Marc Zyngier
@ 2026-02-19 13:56 ` Sascha Bischoff
2026-02-20 15:41 ` Ioana Ciornei
7 siblings, 0 replies; 18+ messages in thread
From: Sascha Bischoff @ 2026-02-19 13:56 UTC (permalink / raw)
To: maz@kernel.org, tglx@kernel.org, ioana.ciornei@nxp.com,
chleroy@kernel.org
Cc: linux-arm-kernel@lists.infradead.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, nd
On Wed, 2026-02-18 at 13:51 +0000, Marc Zyngier wrote:
> Over the past few years, I have become increasingly annoyed by this
> sort of messages in my boot log:
>
> [ 0.067861] fsl-mc MSI: ITS@0x100100040000 domain created
> [ 0.073352] fsl-mc MSI: ITS@0x100100060000 domain created
> [ 0.078841] fsl-mc MSI: ITS@0x100100080000 domain created
> [ 0.084328] fsl-mc MSI: ITS@0x1001000a0000 domain created
> [ 0.089815] fsl-mc MSI: ITS@0x1001000c0000 domain created
> [ 0.095303] fsl-mc MSI: ITS@0x1001000e0000 domain created
> [ 0.100792] fsl-mc MSI: ITS@0x100100100000 domain created
> [ 0.106281] fsl-mc MSI: ITS@0x100100120000 domain created
>
> While this is useful on fsl-mc systems, this is completely irrelevant
> on 99.99999% of the arm64 machines, which know nothing about the
> Freescale stuff. Including all of my machine -- bar *one*.
>
> Global MSI domains such as the above have been obsoleted for the past
> two years, but nobody at NXP seems to have got the message.
>
> The obvious solution is to delete some code! While my first port of
> call would be to just 'git rm -r drivers/bus/fsl-mc' (only kidding!),
> a less invasive solution is to drag that code into the present times.
> Which is what this series is doing by converting the whole thing to
> device MSI, reusing the platform MSI infrastructure instead of
> duplicating it.
>
> This results in the expected cleanup, and kills the last user of the
> non-device-MSI stuff on arm64. You're welcome.
>
> Marc Zyngier (6):
> fsl-mc: Remove MSI domain propagation to sub-devices
> fsl_mc: Add minimal infrastructure to use platform MSI
> irqchip/gic-v3-its: Add fsl_mc device plumbing to the msi-parent
> handling
> fsl_mc: Switch over to per-device platform MSI
> fsl_mc: Remove legacy MSI implementation
> platform-msi: Remove stale comment
>
> drivers/base/platform-msi.c | 4 -
> drivers/bus/fsl-mc/dprc-driver.c | 14 +-
> drivers/bus/fsl-mc/fsl-mc-bus.c | 4 +-
> drivers/bus/fsl-mc/fsl-mc-msi.c | 142 +++--------------
> drivers/bus/fsl-mc/fsl-mc-private.h | 2 +-
> drivers/irqchip/Kconfig | 6 -
> drivers/irqchip/Makefile | 1 -
> drivers/irqchip/irq-gic-its-msi-parent.c | 7 +-
> drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c | 168 ------------------
> --
> include/linux/fsl/mc.h | 6 +-
> 10 files changed, 33 insertions(+), 321 deletions(-)
> delete mode 100644 drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c
>
I have tested this series (applied to 6.19) with a SolidRun ClearFog CX
LX2 (LX2160A-based), and can confirm that the MSIs are working as I'd
expect them to. Therefore:
Tested-by: Sascha Bischoff <sascha.bischoff@arm.com>
Thanks,
Sascha
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-18 13:51 [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Marc Zyngier
` (6 preceding siblings ...)
2026-02-19 13:56 ` [PATCH 0/6] fsl-mc: Move fsl_over to device MSI Sascha Bischoff
@ 2026-02-20 15:41 ` Ioana Ciornei
2026-02-23 13:37 ` Marc Zyngier
7 siblings, 1 reply; 18+ messages in thread
From: Ioana Ciornei @ 2026-02-20 15:41 UTC (permalink / raw)
To: Marc Zyngier
Cc: Thomas Gleixner, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Wed, Feb 18, 2026 at 01:51:57PM +0000, Marc Zyngier wrote:
> Over the past few years, I have become increasingly annoyed by this
> sort of messages in my boot log:
>
> [ 0.067861] fsl-mc MSI: ITS@0x100100040000 domain created
> [ 0.073352] fsl-mc MSI: ITS@0x100100060000 domain created
> [ 0.078841] fsl-mc MSI: ITS@0x100100080000 domain created
> [ 0.084328] fsl-mc MSI: ITS@0x1001000a0000 domain created
> [ 0.089815] fsl-mc MSI: ITS@0x1001000c0000 domain created
> [ 0.095303] fsl-mc MSI: ITS@0x1001000e0000 domain created
> [ 0.100792] fsl-mc MSI: ITS@0x100100100000 domain created
> [ 0.106281] fsl-mc MSI: ITS@0x100100120000 domain created
>
> While this is useful on fsl-mc systems, this is completely irrelevant
> on 99.99999% of the arm64 machines, which know nothing about the
> Freescale stuff. Including all of my machine -- bar *one*.
>
> Global MSI domains such as the above have been obsoleted for the past
> two years, but nobody at NXP seems to have got the message.
I do admit that I wasn't aware that this neeeded work. In the future,
please let me know of this kind of things and I will do the work.
>
> The obvious solution is to delete some code! While my first port of
> call would be to just 'git rm -r drivers/bus/fsl-mc' (only kidding!),
> a less invasive solution is to drag that code into the present times.
> Which is what this series is doing by converting the whole thing to
> device MSI, reusing the platform MSI infrastructure instead of
> duplicating it.
>
> This results in the expected cleanup, and kills the last user of the
> non-device-MSI stuff on arm64. You're welcome.
Thanks!
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> # LX2160ARDB, LS2088ARDB
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-20 15:41 ` Ioana Ciornei
@ 2026-02-23 13:37 ` Marc Zyngier
2026-02-23 13:54 ` Christophe Leroy (CS GROUP)
0 siblings, 1 reply; 18+ messages in thread
From: Marc Zyngier @ 2026-02-23 13:37 UTC (permalink / raw)
To: Ioana Ciornei
Cc: Thomas Gleixner, Christophe Leroy (CS GROUP), linux-kernel,
linux-arm-kernel, linuxppc-dev
On Fri, 20 Feb 2026 15:41:03 +0000,
Ioana Ciornei <ioana.ciornei@nxp.com> wrote:
>
> On Wed, Feb 18, 2026 at 01:51:57PM +0000, Marc Zyngier wrote:
> > Over the past few years, I have become increasingly annoyed by this
> > sort of messages in my boot log:
> >
> > [ 0.067861] fsl-mc MSI: ITS@0x100100040000 domain created
> > [ 0.073352] fsl-mc MSI: ITS@0x100100060000 domain created
> > [ 0.078841] fsl-mc MSI: ITS@0x100100080000 domain created
> > [ 0.084328] fsl-mc MSI: ITS@0x1001000a0000 domain created
> > [ 0.089815] fsl-mc MSI: ITS@0x1001000c0000 domain created
> > [ 0.095303] fsl-mc MSI: ITS@0x1001000e0000 domain created
> > [ 0.100792] fsl-mc MSI: ITS@0x100100100000 domain created
> > [ 0.106281] fsl-mc MSI: ITS@0x100100120000 domain created
> >
> > While this is useful on fsl-mc systems, this is completely irrelevant
> > on 99.99999% of the arm64 machines, which know nothing about the
> > Freescale stuff. Including all of my machine -- bar *one*.
> >
> > Global MSI domains such as the above have been obsoleted for the past
> > two years, but nobody at NXP seems to have got the message.
>
> I do admit that I wasn't aware that this neeeded work. In the future,
> please let me know of this kind of things and I will do the work.
I guess Thomas did too good a job not breaking fsl-mc when both PCI
and platform MSIs were rewritten, hence you missing on the good stuff!
>
> >
> > The obvious solution is to delete some code! While my first port of
> > call would be to just 'git rm -r drivers/bus/fsl-mc' (only kidding!),
> > a less invasive solution is to drag that code into the present times.
> > Which is what this series is doing by converting the whole thing to
> > device MSI, reusing the platform MSI infrastructure instead of
> > duplicating it.
> >
> > This results in the expected cleanup, and kills the last user of the
> > non-device-MSI stuff on arm64. You're welcome.
>
> Thanks!
>
> Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> # LX2160ARDB, LS2088ARDB
> Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Thanks for giving it a go.
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-23 13:37 ` Marc Zyngier
@ 2026-02-23 13:54 ` Christophe Leroy (CS GROUP)
2026-02-24 6:54 ` Thomas Gleixner
2026-02-24 10:19 ` Marc Zyngier
0 siblings, 2 replies; 18+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-02-23 13:54 UTC (permalink / raw)
To: Marc Zyngier, Ioana Ciornei
Cc: Thomas Gleixner, linux-kernel, linux-arm-kernel, linuxppc-dev
Hi Marc,
Le 23/02/2026 à 14:37, Marc Zyngier a écrit :
> On Fri, 20 Feb 2026 15:41:03 +0000,
> Ioana Ciornei <ioana.ciornei@nxp.com> wrote:
>>
>> On Wed, Feb 18, 2026 at 01:51:57PM +0000, Marc Zyngier wrote:
>>> Over the past few years, I have become increasingly annoyed by this
>>> sort of messages in my boot log:
>>>
>>> [ 0.067861] fsl-mc MSI: ITS@0x100100040000 domain created
>>> [ 0.073352] fsl-mc MSI: ITS@0x100100060000 domain created
>>> [ 0.078841] fsl-mc MSI: ITS@0x100100080000 domain created
>>> [ 0.084328] fsl-mc MSI: ITS@0x1001000a0000 domain created
>>> [ 0.089815] fsl-mc MSI: ITS@0x1001000c0000 domain created
>>> [ 0.095303] fsl-mc MSI: ITS@0x1001000e0000 domain created
>>> [ 0.100792] fsl-mc MSI: ITS@0x100100100000 domain created
>>> [ 0.106281] fsl-mc MSI: ITS@0x100100120000 domain created
>>>
>>> While this is useful on fsl-mc systems, this is completely irrelevant
>>> on 99.99999% of the arm64 machines, which know nothing about the
>>> Freescale stuff. Including all of my machine -- bar *one*.
>>>
>>> Global MSI domains such as the above have been obsoleted for the past
>>> two years, but nobody at NXP seems to have got the message.
>>
>> I do admit that I wasn't aware that this neeeded work. In the future,
>> please let me know of this kind of things and I will do the work.
>
> I guess Thomas did too good a job not breaking fsl-mc when both PCI
> and platform MSIs were rewritten, hence you missing on the good stuff!
>
>>
>>>
>>> The obvious solution is to delete some code! While my first port of
>>> call would be to just 'git rm -r drivers/bus/fsl-mc' (only kidding!),
>>> a less invasive solution is to drag that code into the present times.
>>> Which is what this series is doing by converting the whole thing to
>>> device MSI, reusing the platform MSI infrastructure instead of
>>> duplicating it.
>>>
>>> This results in the expected cleanup, and kills the last user of the
>>> non-device-MSI stuff on arm64. You're welcome.
>>
>> Thanks!
>>
>> Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> # LX2160ARDB, LS2088ARDB
>> Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
>
> Thanks for giving it a go.
Don't know what is your merge plan. I wanted to push it to soc fsl tree
but it doesn't apply on top of v7.0-rc1:
$ LANG= b4 shazam -l 20260218135203.2267907-1-maz@kernel.org
Grabbing thread from
lore.kernel.org/all/20260218135203.2267907-1-maz@kernel.org/t.mbox.gz
Checking for newer revisions
Grabbing search results from lore.kernel.org
Analyzing 14 messages in the thread
Analyzing 0 code-review messages
Checking attestation on all messages, may take a moment...
---
✓ [PATCH 1/6] fsl-mc: Remove MSI domain propagation to sub-devices
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-2-maz@kernel.org
✓ [PATCH 2/6] fsl_mc: Add minimal infrastructure to use platform MSI
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-3-maz@kernel.org
✓ [PATCH 3/6] irqchip/gic-v3-its: Add fsl_mc device plumbing to the
msi-parent handling
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-4-maz@kernel.org
✓ [PATCH 4/6] fsl_mc: Switch over to per-device platform MSI
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-5-maz@kernel.org
✓ [PATCH 5/6] fsl_mc: Remove legacy MSI implementation
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-6-maz@kernel.org
✓ [PATCH 6/6] platform-msi: Remove stale comment
+ Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> (✓ DKIM/nxp.com)
+ Tested-by: Sascha Bischoff <sascha.bischoff@arm.com> (✓ DKIM/arm.com)
+ Link:
https://lore.kernel.org/r/20260218135203.2267907-7-maz@kernel.org
---
✓ Signed: DKIM/kernel.org
---
Total patches: 6
---
Applying: fsl-mc: Remove MSI domain propagation to sub-devices
Applying: fsl_mc: Add minimal infrastructure to use platform MSI
Applying: irqchip/gic-v3-its: Add fsl_mc device plumbing to the
msi-parent handling
Patch failed at 0003 irqchip/gic-v3-its: Add fsl_mc device plumbing to
the msi-parent handling
error: patch failed: drivers/irqchip/irq-gic-its-msi-parent.c:186
error: drivers/irqchip/irq-gic-its-msi-parent.c: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am
--abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Let me know how you want to proceed.
Thanks
Christophe
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-23 13:54 ` Christophe Leroy (CS GROUP)
@ 2026-02-24 6:54 ` Thomas Gleixner
2026-02-24 10:19 ` Marc Zyngier
1 sibling, 0 replies; 18+ messages in thread
From: Thomas Gleixner @ 2026-02-24 6:54 UTC (permalink / raw)
To: Christophe Leroy (CS GROUP), Marc Zyngier, Ioana Ciornei
Cc: linux-kernel, linux-arm-kernel, linuxppc-dev
On Mon, Feb 23 2026 at 14:54, Christophe Leroy (CS GROUP) wrote:
> Le 23/02/2026 à 14:37, Marc Zyngier a écrit :
>> Thanks for giving it a go.
>
> Don't know what is your merge plan. I wanted to push it to soc fsl tree
> but it doesn't apply on top of v7.0-rc1:
We already established that. Marc will resend and yes, feel free to take
it through the FSL SoC tree.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
2026-02-23 13:54 ` Christophe Leroy (CS GROUP)
2026-02-24 6:54 ` Thomas Gleixner
@ 2026-02-24 10:19 ` Marc Zyngier
1 sibling, 0 replies; 18+ messages in thread
From: Marc Zyngier @ 2026-02-24 10:19 UTC (permalink / raw)
To: Christophe Leroy (CS GROUP)
Cc: Ioana Ciornei, Thomas Gleixner, linux-kernel, linux-arm-kernel,
linuxppc-dev
Hi Christophe,
On Mon, 23 Feb 2026 13:54:10 +0000,
"Christophe Leroy (CS GROUP)" <chleroy@kernel.org> wrote:
>
> Don't know what is your merge plan. I wanted to push it to soc fsl
> tree but it doesn't apply on top of v7.0-rc1:
Not completely unexpected, as -rc1 wasn't released when I posted this,
hence being based on the latest tag from Linus' tree at the point of
posting (v6.19 in this case).
[...]
> Let me know how you want to proceed.
I've since reposted the series at [1], based on -rc1, and Thomas has
indicated he was OK with you merging it directly -- works for me.
Thanks,
M.
[1] https://lore.kernel.org/r/20260224100936.3752303-1-maz@kernel.org
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 18+ messages in thread