From: Marc Zyngier <maz@kernel.org>
To: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
Cc: "Nipun Gupta" <nipun.gupta@amd.com>,
"Nikhil Agarwal" <nikhil.agarwal@amd.com>,
"Joerg Roedel" <joro@8bytes.org>, "Will Deacon" <will@kernel.org>,
"Robin Murphy" <robin.murphy@arm.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Thomas Gleixner" <tglx@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Saravana Kannan" <saravanak@kernel.org>,
"Richard Zhu" <hongxing.zhu@nxp.com>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Frank Li" <Frank.Li@nxp.com>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"Juergen Gross" <jgross@suse.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
"Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>,
"Konrad Dybcio" <konrad.dybcio@oss.qualcomm.com>,
"Bjorn Andersson" <bjorn.andersson@oss.qualcomm.com>,
"Conor Dooley" <conor+dt@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Prakash Gupta" <prakash.gupta@oss.qualcomm.com>,
"Vikash Garodia" <vikash.garodia@oss.qualcomm.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-pci@vger.kernel.org, imx@lists.linux.dev,
xen-devel@lists.xenproject.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v9 1/3] of: Add convenience wrappers for of_map_id()
Date: Sun, 01 Mar 2026 09:46:34 +0000 [thread overview]
Message-ID: <86342janlx.wl-maz@kernel.org> (raw)
In-Reply-To: <20260301-parse_iommu_cells-v9-1-4d1bceecc5e1@oss.qualcomm.com>
On Sun, 01 Mar 2026 08:34:19 +0000,
Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com> wrote:
>
> From: Robin Murphy <robin.murphy@arm.com>
>
> Since we now have quite a few users parsing "iommu-map" and "msi-map"
> properties, give them some wrappers to conveniently encapsulate the
> appropriate sets of property names. This will also make it easier to
> then change of_map_id() to correctly account for specifier cells.
>
> Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> Reviewed-by: Frank Li <Frank.Li@nxp.com>
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Vijayanand Jitta <vijayanand.jitta@oss.qualcomm.com>
> ---
> drivers/cdx/cdx_msi.c | 3 +--
> drivers/iommu/of_iommu.c | 4 +---
> drivers/irqchip/irq-gic-its-msi-parent.c | 2 +-
> drivers/of/irq.c | 3 +--
> drivers/pci/controller/dwc/pci-imx6.c | 6 ++----
> drivers/pci/controller/pcie-apple.c | 3 +--
> drivers/xen/grant-dma-ops.c | 3 +--
> include/linux/of.h | 14 ++++++++++++++
> 8 files changed, 22 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/cdx/cdx_msi.c b/drivers/cdx/cdx_msi.c
> index 91b95422b263..63b3544ec997 100644
> --- a/drivers/cdx/cdx_msi.c
> +++ b/drivers/cdx/cdx_msi.c
> @@ -128,8 +128,7 @@ static int cdx_msi_prepare(struct irq_domain *msi_domain,
> int ret;
>
> /* Retrieve device ID from requestor ID using parent device */
> - ret = of_map_id(parent->of_node, cdx_dev->msi_dev_id, "msi-map", "msi-map-mask",
> - NULL, &dev_id);
> + ret = of_map_msi_id(parent->of_node, cdx_dev->msi_dev_id, NULL, &dev_id);
> if (ret) {
> dev_err(dev, "of_map_id failed for MSI: %d\n", ret);
> return ret;
> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
> index 6b989a62def2..a511ecf21fcd 100644
> --- a/drivers/iommu/of_iommu.c
> +++ b/drivers/iommu/of_iommu.c
> @@ -48,9 +48,7 @@ static int of_iommu_configure_dev_id(struct device_node *master_np,
> struct of_phandle_args iommu_spec = { .args_count = 1 };
> int err;
>
> - err = of_map_id(master_np, *id, "iommu-map",
> - "iommu-map-mask", &iommu_spec.np,
> - iommu_spec.args);
> + err = of_map_iommu_id(master_np, *id, &iommu_spec.np, iommu_spec.args);
> if (err)
> return err;
>
> diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c
> index d36b278ae66c..b63343a227a9 100644
> --- a/drivers/irqchip/irq-gic-its-msi-parent.c
> +++ b/drivers/irqchip/irq-gic-its-msi-parent.c
> @@ -180,7 +180,7 @@ static int of_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, u
>
> struct device_node *msi_ctrl __free(device_node) = NULL;
>
> - return of_map_id(dev->of_node, dev->id, "msi-map", "msi-map-mask", &msi_ctrl, dev_id);
> + return of_map_msi_id(dev->of_node, dev->id, &msi_ctrl, dev_id);
> }
>
> static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 6367c67732d2..e37c1b3f8736 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -817,8 +817,7 @@ u32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)
> * "msi-map" or an "msi-parent" property.
> */
> for (parent_dev = dev; parent_dev; parent_dev = parent_dev->parent) {
> - if (!of_map_id(parent_dev->of_node, id_in, "msi-map",
> - "msi-map-mask", msi_np, &id_out))
> + if (!of_map_msi_id(parent_dev->of_node, id_in, msi_np, &id_out))
> break;
> if (!of_check_msi_parent(parent_dev->of_node, msi_np))
> break;
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index a5b8d0b71677..bff8289f804a 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -1144,8 +1144,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
> u32 sid = 0;
>
> target = NULL;
> - err_i = of_map_id(dev->of_node, rid, "iommu-map", "iommu-map-mask",
> - &target, &sid_i);
> + err_i = of_map_iommu_id(dev->of_node, rid, &target, &sid_i);
> if (target) {
> of_node_put(target);
> } else {
> @@ -1158,8 +1157,7 @@ static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
> }
>
> target = NULL;
> - err_m = of_map_id(dev->of_node, rid, "msi-map", "msi-map-mask",
> - &target, &sid_m);
> + err_m = of_map_msi_id(dev->of_node, rid, &target, &sid_m);
>
> /*
> * err_m target
> diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
> index 2d92fc79f6dd..a0937b7b3c4d 100644
> --- a/drivers/pci/controller/pcie-apple.c
> +++ b/drivers/pci/controller/pcie-apple.c
> @@ -764,8 +764,7 @@ static int apple_pcie_enable_device(struct pci_host_bridge *bridge, struct pci_d
> dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
> pci_name(pdev->bus->self), port->idx);
>
> - err = of_map_id(port->pcie->dev->of_node, rid, "iommu-map",
> - "iommu-map-mask", NULL, &sid);
> + err = of_map_iommu_id(port->pcie->dev->of_node, rid, NULL, &sid);
> if (err)
> return err;
>
> diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
> index c2603e700178..1b7696b2d762 100644
> --- a/drivers/xen/grant-dma-ops.c
> +++ b/drivers/xen/grant-dma-ops.c
> @@ -325,8 +325,7 @@ static int xen_dt_grant_init_backend_domid(struct device *dev,
> struct pci_dev *pdev = to_pci_dev(dev);
> u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
>
> - if (of_map_id(np, rid, "iommu-map", "iommu-map-mask", &iommu_spec.np,
> - iommu_spec.args)) {
> + if (of_map_iommu_id(np, rid, &iommu_spec.np, iommu_spec.args)) {
> dev_dbg(dev, "Cannot translate ID\n");
> return -ESRCH;
> }
> diff --git a/include/linux/of.h b/include/linux/of.h
> index be6ec4916adf..824649867810 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -1457,6 +1457,20 @@ static inline int of_property_read_s32(const struct device_node *np,
> return of_property_read_u32(np, propname, (u32*) out_value);
> }
>
> +static inline int of_map_iommu_id(const struct device_node *np, u32 id,
> + struct device_node **target, u32 *id_out)
> +{
> + return of_map_id(np, id, "iommu-map", "iommu-map-mask",
> + target, id_out);
> +}
> +
> +static inline int of_map_msi_id(const struct device_node *np, u32 id,
> + struct device_node **target, u32 *id_out)
> +{
> + return of_map_id(np, id, "msi-map", "msi-map-mask",
> + target, id_out);
> +}
> +
Any particular reason why this is made inline instead of out of line
in of/base.c? Also, some documentation would be helpful for the
aspiring hackers dipping into this.
Other than that,
Acked-by: Marc Zyngier <maz@kernel.org>
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2026-03-01 9:46 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-01 8:34 [PATCH v9 0/3] of: parsing of multi #{iommu,msi}-cells in maps Vijayanand Jitta
2026-03-01 8:34 ` [PATCH v9 1/3] of: Add convenience wrappers for of_map_id() Vijayanand Jitta
2026-03-01 9:46 ` Marc Zyngier [this message]
2026-03-04 9:32 ` Vijayanand Jitta
2026-03-04 23:48 ` Dmitry Baryshkov
2026-03-05 21:47 ` Rob Herring
2026-03-04 22:34 ` Bjorn Helgaas
2026-03-01 8:34 ` [PATCH v9 2/3] of: factor arguments passed to of_map_id() into a struct Vijayanand Jitta
2026-03-01 10:02 ` Dmitry Baryshkov
2026-03-04 9:34 ` Vijayanand Jitta
2026-03-01 10:02 ` Marc Zyngier
2026-03-01 10:46 ` Dmitry Baryshkov
2026-03-01 11:42 ` Marc Zyngier
2026-03-01 12:00 ` Dmitry Baryshkov
2026-03-01 10:59 ` Dmitry Baryshkov
2026-03-01 11:45 ` Marc Zyngier
2026-03-04 9:34 ` Vijayanand Jitta
2026-03-01 8:34 ` [PATCH v9 3/3] of: Respect #{iommu,msi}-cells in maps Vijayanand Jitta
2026-03-01 10:14 ` Dmitry Baryshkov
2026-03-04 9:34 ` Vijayanand Jitta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86342janlx.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=Frank.Li@nxp.com \
--cc=bhelgaas@google.com \
--cc=bjorn.andersson@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=festevam@gmail.com \
--cc=hongxing.zhu@nxp.com \
--cc=imx@lists.linux.dev \
--cc=iommu@lists.linux.dev \
--cc=jgross@suse.com \
--cc=joro@8bytes.org \
--cc=kernel@pengutronix.de \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=nikhil.agarwal@amd.com \
--cc=nipun.gupta@amd.com \
--cc=oleksandr_tyshchenko@epam.com \
--cc=prakash.gupta@oss.qualcomm.com \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=s.hauer@pengutronix.de \
--cc=saravanak@kernel.org \
--cc=sstabellini@kernel.org \
--cc=tglx@kernel.org \
--cc=vijayanand.jitta@oss.qualcomm.com \
--cc=vikash.garodia@oss.qualcomm.com \
--cc=will@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.