[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <x7xskkv6nviz3j7sr5qgs7yt7z6txqwdemfammufwdf6ji3sla@gi2a4aadt6wc>
Date: Sat, 21 Jun 2025 00:39:27 +0300
From: Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>
To: Vikash Garodia <quic_vgarodia@...cinc.com>
Cc: Dikshita Agarwal <quic_dikshita@...cinc.com>,
Abhinav Kumar <abhinav.kumar@...ux.dev>,
Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, linux-media@...r.kernel.org,
linux-arm-msm@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/5] dt-bindings: media: qcom,sm8550-iris: add non_pixel
and resv_region properties
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@...cinc.com>
> ---
> .../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
Powered by blists - more mailing lists