Re: [PATCH v3 0/5] Introduce "non-pixel" sub node within iris video node

From: Neil Armstrong
Date: Wed Jul 02 2025 - 03:59:45 EST


On 01/07/2025 18:11, Vikash Garodia wrote:

On 7/1/2025 6:49 PM, Neil Armstrong wrote:
Hi,

On 01/07/2025 12:23, Vikash Garodia wrote:

On 6/30/2025 11:34 PM, neil.armstrong@xxxxxxxxxx wrote:
On 27/06/2025 17:48, Vikash Garodia wrote:
This series introduces a sub node "non-pixel" within iris video node.
Video driver registers this sub node as a platform device and configure
it for DMA operations. All non pixel buffers, i.e bitstream, HFI queues
and internal buffers related to bitstream processing, would be managed
by this non_pixel device.

Purpose to add this sub-node:
Iris device limits the IOVA to an addressable range of 4GiB, and even
within that range, some of the space is used by IO registers, thereby
limiting the available IOVA to even lesser. For certain video usecase,
this limited range in not sufficient enough, hence it brings the need to
extend the possibility of higher IOVA range.

Video hardware is designed to emit different stream-ID for pixel and
non-pixel buffers, thereby introduce a non-pixel sub node to handle
non-pixel stream-ID into a separate platform device.
With this, both iris and non-pixel device can have IOVA range of
approximately 0-4GiB individually for each device, thereby doubling the
range of addressable IOVA.

Tested on SM8550 and SA8775p hardwares.

Signed-off-by: Vikash Garodia <quic_vgarodia@xxxxxxxxxxx>
---
Changes in v3:
- Add info about change in iommus binding (Thanks Krzysztof)
- Link to v2:
https://lore.kernel.org/r/20250627-video_cb-v2-0-3931c3f49361@xxxxxxxxxxx

Changes in v2:
- Add ref to reserve-memory schema and drop it from redefining it in
iris schema (Thanks Krzysztof)
- Drop underscores and add info about non pixel buffers (Thanks Dmitry)
- Link to v1:
https://lore.kernel.org/r/20250620-video_cb-v1-0-9bcac1c8800c@xxxxxxxxxxx

---
Vikash Garodia (5):
        media: dt-bindings: add non-pixel property in iris schema
        media: iris: register and configure non-pixel node as platform device
        media: iris: use np_dev as preferred DMA device in HFI queue management
        media: iris: select appropriate DMA device for internal buffers
        media: iris: configure DMA device for vb2 queue on OUTPUT plane

   .../bindings/media/qcom,sm8550-iris.yaml           | 40 ++++++++++++++++-
   drivers/media/platform/qcom/iris/iris_buffer.c     | 15 ++++++-
   drivers/media/platform/qcom/iris/iris_core.h       |  2 +
   drivers/media/platform/qcom/iris/iris_hfi_queue.c  | 20 ++++++---
   drivers/media/platform/qcom/iris/iris_probe.c      | 50
+++++++++++++++++++++-
   drivers/media/platform/qcom/iris/iris_vb2.c        |  4 ++
   6 files changed, 119 insertions(+), 12 deletions(-)
---
base-commit: 8d2b7fde56597ca912f5daaf3ab58915458ba1fc
change-id: 20250619-video_cb-ea872d6e6627

Best regards,

I tried the patchset on SM8550 QRD and SM8650 QRD/HDK and the system just
reboots
a few millisecond after probing iris, no error messages nor reboot to sahara
mode.

The DT changeset for reference:
https://git.codelinaro.org/neil.armstrong/linux/-/commit/e1b3628469c038559a60d310386f006f353e3d59

I was able to repro this case, the issue was due to a incorrect node name in
driver. Fixing the name as per binding, fixes the issue for me. I have made the
comment in your code branch [1], which should fix it for you as well. Please
share your observations.

Indeed, with:
============><========================================
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi
b/arch/arm64/boot/dts/qcom/sm8550.dtsi
index 8da2b780395d..06657b42da49 100644
--- a/arch/arm64/boot/dts/qcom/sm8550.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi
@@ -3264,6 +3264,9 @@ &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
                        iommus = <&apps_smmu 0x1947 0>;
                        dma-coherent;

+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
                        /*
                         * IRIS firmware is signed by vendors, only
                         * enable in boards where the proper signed firmware
diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi
b/arch/arm64/boot/dts/qcom/sm8650.dtsi
index b53a9aa5adbf..7ada62ee411e 100644
--- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
@@ -5011,6 +5011,9 @@ &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,

                        dma-coherent;

+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
                        /*
                         * IRIS firmware is signed by vendors, only
                         * enable in boards where the proper signed firmware
diff --git a/drivers/media/platform/qcom/iris/iris_probe.c
b/drivers/media/platform/qcom/iris/iris_probe.c
index 8fe87e30bd40..c57645a60bc4 100644
--- a/drivers/media/platform/qcom/iris/iris_probe.c
+++ b/drivers/media/platform/qcom/iris/iris_probe.c
@@ -136,7 +136,7 @@ static int iris_init_non_pixel_node(struct iris_core *core)
        struct device_node *np_node;
        int ret;

-       np_node = of_get_child_by_name(core->dev->of_node, "non_pixel");
+       np_node = of_get_child_by_name(core->dev->of_node, "non-pixel");
        if (!np_node)
                return 0;

============><========================================

It boots again and I can run some decodes on 8550 and 8650.
Nice. Thank you for your efforts in trying out the patches. Would that be ok
with you if i can put the tested-by tags in next revision with the amendments ?

Sure please add:

Tested-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>

with those changes

Neil


Regards,
Vikash

Thanks,
Neil


Regards,
Vikash

[1]
https://git.codelinaro.org/neil.armstrong/linux/-/commit/e1b3628469c038559a60d310386f006f353e3d59#note_23930047


Neil