[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251204095530.8627-1-vijayanand.jitta@oss.qualcomm.com>
Date: Thu, 4 Dec 2025 15:25:27 +0530
From: Vijayanand Jitta <vijayanand.jitta@....qualcomm.com>
To: robin.murphy@....com, will@...nel.org, joro@...tes.org, robh@...nel.org,
dmitry.baryshkov@....qualcomm.com, konrad.dybcio@....qualcomm.com,
bjorn.andersson@....qualcomm.com, bod@...nel.org, conor+dt@...nel.org,
krzk+dt@...nel.org, charan.kalla@....qualcomm.com,
prakash.gupta@....qualcomm.com, vikash.garodia@....qualcomm.com
Cc: iommu@...ts.linux.dev, linux-kernel@...r.kernel.org,
devicetree@...r.kernel.org, vijayanand.jitta@....qualcomm.com
Subject: [PATCH v2 0/3] of: parsing of multi #{iommu,msi}-cells in maps
So far our parsing of {iommu,msi}-map properites has always blindly
assumed that the output specifiers will always have exactly 1 cell.
This typically does happen to be the case, but is not actually enforced
(and the PCI msi-map binding even explicitly states support for 0 or 1
cells) - as a result we've now ended up with dodgy DTs out in the field
which depend on this behaviour to map a 1-cell specifier for a 2-cell
provider, despite that being bogus per the bindings themselves.
Since there is some potential use[1] in being able to map at least
single input IDs to multi-cell output specifiers (and properly support
0-cell outputs as well), add support for properly parsing and using the
target nodes' #cells values, albeit with the unfortunate complication of
still having to work around expectations of the old behaviour too.
-- Robin.
Unlike single #{}-cell, it is complex to establish a linear relation
between input 'id' and output specifier for multi-cell properties, thus
it is always expected that len never going to be > 1.
The motivation for this patchset originates from the multi-map use case
described in V1, which will be addressed in a subsequent series once the
current fixes for iommu-cell handling are concluded.
These changes have been tested on QEMU for the arm64 architecture. We
plan to perform more extensive testing based on community feedback and
are sending this series out early to gather review comments.
[1] https://lore.kernel.org/all/20250627-video_cb-v3-0-51e18c0ffbce@quicinc.com/
V2:
1) Incorporated the patches from Robin that does the clean implementation.
2) Dropped the patches the were adding multi-map support from this series
as suggested.
V1:
https://lore.kernel.org/all/cover.1762235099.git.charan.kalla@oss.qualcomm.com/
RFC:
https://lore.kernel.org/all/20250928171718.436440-1-charan.kalla@oss.qualcomm.com/#r
Charan Teja Kalla (1):
of: factor arguments passed to of_map_id() into a struct
Robin Murphy (2):
of: Add convenience wrappers for of_map_id()
of: Respect #{iommu,msi}-cells in maps
drivers/cdx/cdx_msi.c | 3 +-
drivers/iommu/of_iommu.c | 11 +-
drivers/irqchip/irq-gic-its-msi-parent.c | 4 +-
drivers/of/base.c | 132 ++++++++++++++++-------
drivers/of/irq.c | 3 +-
drivers/pci/controller/dwc/pci-imx6.c | 10 +-
drivers/pci/controller/pcie-apple.c | 6 +-
drivers/xen/grant-dma-ops.c | 6 +-
include/linux/of.h | 36 +++++--
9 files changed, 151 insertions(+), 60 deletions(-)
--
2.34.1
Powered by blists - more mailing lists