* [PATCH 0/6] fsl-mc: Move fsl_over to device MSI
@ 2026-02-18 13:51 Marc Zyngier
2026-02-18 13:51 ` [PATCH 1/6] fsl-mc: Remove MSI domain propagation to sub-devices Marc Zyngier
` (7 more replies)
0 siblings, 8 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
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
--
2.47.3
^ permalink raw reply [flat|nested] 18+ messages in thread
* [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
* [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 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 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 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
* 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
end of thread, other threads:[~2026-02-24 10:19 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [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
2026-02-23 13:02 ` Thomas Gleixner
2026-02-23 13:22 ` Marc Zyngier
2026-02-24 6:52 ` Thomas Gleixner
2026-02-18 13:52 ` [PATCH 4/6] fsl_mc: Switch over to per-device platform MSI Marc Zyngier
2026-02-18 13:52 ` [PATCH 5/6] fsl_mc: Remove legacy MSI implementation Marc Zyngier
2026-02-18 13:52 ` [PATCH 6/6] platform-msi: Remove stale comment 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
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox