[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <680f9ba7-1f32-4365-abd1-771b8c78e844@arm.com>
Date: Mon, 12 Feb 2024 19:12:20 +0000
From: Robin Murphy <robin.murphy@....com>
To: Rob Herring <robh@...nel.org>, Georgi Djakov <quic_c_gdjako@...cinc.com>
Cc: krzysztof.kozlowski+dt@...aro.org, conor+dt@...nel.org, will@...nel.org,
joro@...tes.org, iommu@...ts.linux.dev, devicetree@...r.kernel.org,
andersson@...nel.org, konrad.dybcio@...aro.org, robdclark@...il.com,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-arm-msm@...r.kernel.org, quic_cgoldswo@...cinc.com,
quic_sukadev@...cinc.com, quic_pdaly@...cinc.com, quic_sudaraja@...cinc.com,
djakov@...nel.org
Subject: Re: [PATCH v4 01/10] dt-bindings: iommu: Add Translation Buffer Unit
bindings
On 2024-02-02 9:17 pm, Rob Herring wrote:
> On Thu, Feb 01, 2024 at 01:05:20PM -0800, Georgi Djakov wrote:
>> Add common bindings for the TBUs to describe their properties. The
>> TBUs are modelled as child devices of the IOMMU and each of them is
>> described with their compatible, reg and stream-id-range properties.
>> There could be other implementation specific properties to describe
>> any resources like clocks, regulators, power-domains, interconnects
>> that would be needed for TBU operation. Such properties will be
>> documented in a separate vendor-specific TBU schema.
>>
>> Signed-off-by: Georgi Djakov <quic_c_gdjako@...cinc.com>
>> ---
>> .../devicetree/bindings/iommu/arm,smmu.yaml | 14 ++++++++++
>> .../devicetree/bindings/iommu/tbu-common.yaml | 28 +++++++++++++++++++
>> 2 files changed, 42 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/iommu/tbu-common.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> index a4042ae24770..ba3237023b39 100644
>> --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>> @@ -235,6 +235,20 @@ 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]+$":
>> + description: TBU child nodes
>> + type: object
>> + $ref: tbu-common.yaml#
>
> additionalProperties: false
>
>
> However, that's going to break with the extra QCom properties. In
> json-schema, you can't have 2 schemas and extend the properties of
> their child nodes. The validator doesn't "see" the child node schemas at
> the same time. You are going to have to move QCom SMMU to its own schema
> and remove it from arm,smmu.yaml.
Although this common binding is pretty pointless - sorry I missed the
previous discussion, but these TBU registers are on obscure debugging
feature of Qualcomm's own invention and definitely not generic. The
internal topology of the unmodified Arm MMU-500 implementation isn't
software-visible at all without getting into its own integration and
debug registers (and maybe to a lesser extent the PMU), and even then
everything is proxied through the TCU via an internal AXI stream
interconnect, so there aren't really any TBU-owned resources which would
warrant describing as such in DT. If anything, the way this binding is
defined as an MMIO bus with "ranges" would actively *prevent* being able
to describe the standard hardware this way, since the internal debug
stuff all wants to refer to TBUs by numerical index.
Conversely, given that the Qualcomm TBU registers seem to be describing
their own entirely independent resources and inheriting nothing from the
parent node, I'm not sure it's necessarily worth all the bother of
describing and supporting them them as children at all, when they could
just as well be standalone nodes with a phandle to associate an SMMU
instance.
Thanks,
Robin.
Powered by blists - more mailing lists