From: Georgi Djakov <quic_c_gdjako@quicinc.com>
To: Rob Herring <robh@kernel.org>
Cc: <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>,
<will@kernel.org>, <robin.murphy@arm.com>, <joro@8bytes.org>,
<devicetree@vger.kernel.org>, <andersson@kernel.org>,
<konrad.dybcio@linaro.org>,
<linux-arm-kernel@lists.infradead.org>, <iommu@lists.linux.dev>,
<linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
<quic_cgoldswo@quicinc.com>, <quic_sukadev@quicinc.com>,
<quic_pdaly@quicinc.com>, <quic_sudaraja@quicinc.com>,
<djakov@kernel.org>
Subject: Re: [PATCH v2 1/6] dt-bindings: iommu: Add Translation Buffer Unit bindings
Date: Fri, 1 Dec 2023 01:24:48 +0200 [thread overview]
Message-ID: <cc2eb772-ae0f-4861-a36e-304a5f45b1bf@quicinc.com> (raw)
In-Reply-To: <20231127181347.GA1953740-robh@kernel.org>
Hi Rob,
Thanks for the feedback!
On 11/27/2023 8:13 PM, Rob Herring wrote:
> On Fri, Nov 17, 2023 at 08:27:25PM -0800, Georgi Djakov wrote:
>> The "apps_smmu" on the Qualcomm sdm845 platform is an implementation
>> of the SMMU-500, that consists of a single TCU (Translation Control
>> Unit) and multiple TBUs (Translation Buffer Units). The TCU is already
>> being described in the generic SMMU DT schema. Add also bindings for
>> the TBUs to describe their properties and resources that needs to be
>> managed in order to operate them.
>>
>> In this DT schema, the TBUs are modelled as child devices of the TCU
>> and each of them is described with it's register space, clocks, power
>> domains, interconnects etc.
>>
>> Signed-off-by: Georgi Djakov <quic_c_gdjako@quicinc.com>
>> ---
>> .../devicetree/bindings/iommu/arm,smmu.yaml | 25 ++++++
>> .../bindings/iommu/qcom,qsmmuv500-tbu.yaml | 89 +++++++++++++++++++
>> 2 files changed, 114 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/iommu/qcom,qsmmuv500-tbu.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> index aa9e1c0895a5..f7f89be5f7a3 100644
>> --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> @@ -231,6 +231,18 @@ properties:
>> enabled for any given device.
>> $ref: /schemas/types.yaml#/definitions/phandle
>>
>> + '#address-cells':
>> + enum: [ 1, 2 ]
>> +
>> + '#size-cells':
>> + enum: [ 1, 2 ]
>> +
>> + ranges: true
>> +
>> +patternProperties:
>> + "^tbu@[0-9a-f]*":
>> + type: object
>> +
>> required:
>> - compatible
>> - reg
>> @@ -453,6 +465,19 @@ allOf:
>> - description: Voter clock required for HLOS SMMU access
>> - description: Interface clock required for register access
>>
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,smmu-500
>
> Doesn't match your example. No failure either, so there's some problem
> with your schema. The issue is the tbu@ entry above has no constraint on
> child properties. Dropping it would solve the issue. However, having a
> TBU is not QCom specific, so that doesn't feel right.
Having a TBU is not Qcom specific. The ARM MMU-500 implementation for example has TBUs, but the registers are within the SMMU address space, there are no clocks, no power-domains or other resources. Not sure about other implementations. So should we just allow empty tbu child nodes with no properties?
>> + then:
>> + patternProperties:
>> + "^tbu@[0-9a-f]*":
>
> '+' rather than '*' as 1 is the minimum, not 0.
Ok.
>> + $ref: qcom,qsmmuv500-tbu.yaml
>> + unevaluatedProperties: false
>> + properties:
>> + ranges: true
>> +
>> # Disallow clocks for all other platforms with specific compatibles
>> - if:
>> properties:
>> diff --git a/Documentation/devicetree/bindings/iommu/qcom,qsmmuv500-tbu.yaml b/Documentation/devicetree/bindings/iommu/qcom,qsmmuv500-tbu.yaml
>> new file mode 100644
>> index 000000000000..4dc9d0ca33c9
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/iommu/qcom,qsmmuv500-tbu.yaml
>> @@ -0,0 +1,89 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/iommu/qcom,qsmmuv500-tbu.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm TBU (Translation Buffer Unit)
>> +
>> +maintainers:
>> + - Georgi Djakov <quic_c_gdjako@quicinc.com>
>> +
>> +description:
>> + The Qualcomm SMMU500 implementation consists of TCU and TBU. The TBU contains
>> + a Translation Lookaside Buffer (TLB) that caches page tables. TBUs provides
>> + debug features to trace and trigger debug transactions. There are multiple TBU
>> + instances distributes with each client core.
>> +
>> +properties:
>> + $nodename:
>> + pattern: "^tbu@[0-9a-f]+$"
>
> Drop. You defined this in the parent already.
Ok.
>> +
>> + compatible:
>> + const: qcom,qsmmuv500-tbu
>> +
>> + reg:
>> + items:
>> + - description: Address and size of the TBU's register space.
>> +
>> + reg-names:
>> + items:
>> + - const: base
>
> Not a useful name. Drop.
Agree.
>> +
>> + clocks:
>> + maxItems: 1
>> +
>> + interconnects:
>> + maxItems: 1
>> +
>> + power-domains:
>> + maxItems: 1
>> +
>> + qcom,stream-id-range:
>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>> + description: Stream ID range (address and size) that is assigned by the TBU
>> + items:
>> + minItems: 2
>> + maxItems: 2
>
> Perhaps implementations other than QCom's needs this?
Yes, maybe. A TBU can service a fixed amount of stream IDs and this looks like something common for all TBUs. I'll drop the vendor prefix.
Thanks,
Georgi
next prev parent reply other threads:[~2023-11-30 23:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-18 4:27 [PATCH v2 0/6] Add support for Translation Buffer Units Georgi Djakov
2023-11-18 4:27 ` [PATCH v2 1/6] dt-bindings: iommu: Add Translation Buffer Unit bindings Georgi Djakov
2023-11-20 15:36 ` Andrew Halaney
2023-11-27 18:13 ` Rob Herring
2023-11-30 23:24 ` Georgi Djakov [this message]
2023-11-18 4:27 ` [PATCH v2 2/6] iommu/arm-smmu-qcom: Add support for TBUs Georgi Djakov
2023-11-18 4:27 ` [PATCH v2 3/6] iommu/arm-smmu-qcom: Add Qualcomm TBU driver Georgi Djakov
2023-11-18 4:27 ` [PATCH v2 4/6] iommu/arm-smmu: Allow using a threaded handler for context interrupts Georgi Djakov
2023-11-18 4:27 ` [PATCH v2 5/6] iommu/arm-smmu-qcom: Use a custom context fault handler for sdm845 Georgi Djakov
2023-11-18 4:27 ` [PATCH v2 6/6] arm64: dts: qcom: sdm845: Add DT nodes for the TBUs Georgi Djakov
2023-11-18 11:21 ` [PATCH v2 0/6] Add support for Translation Buffer Units Bryan O'Donoghue
2023-11-30 15:19 ` Georgi Djakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cc2eb772-ae0f-4861-a36e-304a5f45b1bf@quicinc.com \
--to=quic_c_gdjako@quicinc.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=djakov@kernel.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quic_cgoldswo@quicinc.com \
--cc=quic_pdaly@quicinc.com \
--cc=quic_sudaraja@quicinc.com \
--cc=quic_sukadev@quicinc.com \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox