Re: [RFC PATCH 07/11] arm64: dts: qcom: hamoa: Move Iris IOMMUs to sub nodes
From: Dmitry Baryshkov
Date: Fri Jul 10 2026 - 17:10:10 EST
On Fri, Jul 10, 2026 at 11:35:45AM +0530, Vikash Garodia wrote:
> On 7/9/2026 6:33 PM, Dmitry Baryshkov wrote:
> > On Thu, Jul 09, 2026 at 06:05:53PM +0530, Vikash Garodia wrote:
> > > The Iris VPU has separate streams with different IOVA constraints. The
> > > non-pixel stream must be limited to the 0-600 MB IOVA range, while the
> > > pixel stream can use the full IOVA space.
> > > Using a single set of IOMMU entries for the Iris node does not describe
> > > these per-stream limits and can allow accesses outside the supported
> > > range, which may lead to device crashes. One such issue was reported at:
> > > https://gitlab.freedesktop.org/drm/msm/-/work_items/100
> > >
> > > Add non-pixel and pixel child nodes, move each stream ID to its
> > > corresponding child node, and add a reserved IOVA range for the
> > > non-pixel stream.
> > >
> > > Co-developed-by: Vishnu Reddy <busanna.reddy@xxxxxxxxxxxxxxxx>
> > > Signed-off-by: Vishnu Reddy <busanna.reddy@xxxxxxxxxxxxxxxx>
> > > Signed-off-by: Vikash Garodia <vikash.garodia@xxxxxxxxxxxxxxxx>
> > > ---
> > > arch/arm64/boot/dts/qcom/hamoa.dtsi | 18 ++++++++++++++++--
> > > 1 file changed, 16 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi
> > > index 60f485a4892e062980d01f0b930af4b02f36513c..a2baa2c9f46dc19c3db11dc784358223a035475f 100644
> > > --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi
> > > +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi
> > > @@ -657,6 +657,10 @@ smem_mem: smem@ffe00000 {
> > > hwlocks = <&tcsr_mutex 3>;
> > > no-map;
> > > };
> > > +
> > > + iris_resv: reservation-iris {
> > > + iommu-addresses = <&iris_non_pixel 0x0 0x0 0x0 0x25800000>;
> > > + };
> > > };
> > > qup_opp_table_100mhz: opp-table-qup100mhz {
> > > @@ -5435,10 +5439,11 @@ &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
> > > resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>;
> > > reset-names = "bus";
> > > - iommus = <&apps_smmu 0x1940 0>,
> > > - <&apps_smmu 0x1947 0>;
> > > dma-coherent;
> > > + #address-cells = <2>;
> > > + #size-cells = <2>;
> > > +
> > > /*
> > > * IRIS firmware is signed by vendors, only
> > > * enable on boards where the proper signed firmware
> > > @@ -5446,6 +5451,15 @@ &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
> > > */
> > > status = "disabled";
> > > + iris_non_pixel: non-pixel {
> > > + iommus = <&apps_smmu 0x1940 0x0>;
> > > + memory-region = <&iris_resv>;
> > > + };
> > > +
> > > + iris_pixel: pixel {
> >
> > Unused label.
>
> Kept it for consistency with others, it can be dropped though.
Consistency would be to have only the useful labels.
> > Also, shouldn't you specify the IOMMU region for this one
> > too?
>
> There is no iova restriction for pixel domain, hence region is not needed
> there.
Ok. I was under impression that SIDs are generated based on the address.
--
With best wishes
Dmitry