Re: [PATCH 1/5] dt-bindings: media: qcom,sm8550-iris: add non_pixel and resv_region properties
From: Dmitry Baryshkov
Date: Fri Jun 20 2025 - 17:39:49 EST
On Fri, Jun 20, 2025 at 11:50:51AM +0530, Vikash Garodia wrote:
> Existing definition 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. 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.
>
> With this, both iris and non_pixel device can have IOVA range of 0-4GiB
> individually. Certain video usecases like higher video concurrency needs
> IOVA higher than 4GiB.
>
> Add the "resv_region" property, which defines reserved IOVA regions that
> are *excluded* from addressable range. Video hardware generates
> different stream IDs based on the range of IOVA addresses. Thereby IOVA
> addresses for firmware and data buffers need to be non overlapping. For
> ex. 0x0-0x25800000 address range is reserved for firmware stream-ID,
> while non_pixel (bitstream ) stream-ID can be generated by hardware only
> when bitstream buffers IOVA address is from 0x25800000-0xe0000000.
>
> Signed-off-by: Vikash Garodia <quic_vgarodia@xxxxxxxxxxx>
> ---
> .../bindings/media/qcom,sm8550-iris.yaml | 35 ++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml b/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> index c79bf2101812d83b99704f38b7348a9f728dff44..a1e83bae3c36f3a4c58b212ef457905e38091b97 100644
> --- a/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> +++ b/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> @@ -65,10 +65,45 @@ properties:
> - const: core
>
> iommus:
> + minItems: 1
> maxItems: 2
>
> dma-coherent: true
>
> + resv_region:
Ugh. Underscores...
> + type: object
> + additionalProperties: false
> +
> + description:
> + Reserve region specifies regions which should be excluded from IOVA.
> +
> + properties:
> + iommu-addresses:
Missing type / ref. Also they are only described for reserved memory
regions.
> + minItems: 1
> + maxItems: 4
> +
> + required:
> + - iommu-addresses
> +
> + non_pixel:
> + type: object
> + additionalProperties: false
I still think that these usecases should be described with iommu-maps
rather than subnodes. You have a limited set of usecases: "non-pixel",
secure buffers, etc. Define an ID for each of those and then allocate a
subdevice internally, mapping it to a corresponding set of IOMMUs.
> +
> + description:
> + Non pixel context bank is needed when video hardware have distinct iommus
> + for non pixel buffers.
What does non-pixel mean? Compressed data?
> +
> + properties:
> + iommus:
> + maxItems: 1
> +
> + memory-region:
> + maxItems: 1
> +
> + required:
> + - iommus
> + - memory-region
> +
> operating-points-v2: true
>
> opp-table:
>
> --
> 2.34.1
>
--
With best wishes
Dmitry