From: Gatien CHEVALLIER <gatien.chevallier@foss.st.com>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
<Oleksii_Moisieiev@epam.com>, <gregkh@linuxfoundation.org>,
<herbert@gondor.apana.org.au>, <davem@davemloft.net>,
<robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>,
<conor+dt@kernel.org>, <alexandre.torgue@foss.st.com>,
<vkoul@kernel.org>, <jic23@kernel.org>,
<olivier.moysan@foss.st.com>, <arnaud.pouliquen@foss.st.com>,
<mchehab@kernel.org>, <fabrice.gasnier@foss.st.com>,
<andi.shyti@kernel.org>, <ulf.hansson@linaro.org>,
<edumazet@google.com>, <kuba@kernel.org>, <pabeni@redhat.com>,
<hugues.fruchet@foss.st.com>, <lee@kernel.org>, <will@kernel.org>,
<catalin.marinas@arm.com>, <arnd@kernel.org>,
<richardcochran@gmail.com>
Cc: <linux-crypto@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-stm32@st-md-mailman.stormreply.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <dmaengine@vger.kernel.org>,
<linux-i2c@vger.kernel.org>, <linux-iio@vger.kernel.org>,
<alsa-devel@alsa-project.org>, <linux-media@vger.kernel.org>,
<linux-mmc@vger.kernel.org>, <netdev@vger.kernel.org>,
<linux-phy@lists.infradead.org>, <linux-serial@vger.kernel.org>,
<linux-spi@vger.kernel.org>, <linux-usb@vger.kernel.org>
Subject: Re: [PATCH 02/10] dt-bindings: bus: add device tree bindings for RIFSC
Date: Thu, 20 Jul 2023 16:58:35 +0200 [thread overview]
Message-ID: <6edb1d1e-ae6b-486a-9548-4b2e0353f3dc@foss.st.com> (raw)
In-Reply-To: <1ac0f2e0-4ec1-3871-d0a3-3ccc2eb687e5@foss.st.com>
Hello Krzysztof,
On 7/6/23 11:29, Gatien CHEVALLIER wrote:
> Hello Krzysztof,
>
> Firstly, I will correct the bindings error pointed by Rob's robot.
> Obviously, I did not pass the bindings check the proper way or maybe I'm
> running an old version.
>
> On 7/6/23 08:28, Krzysztof Kozlowski wrote:
>> On 05/07/2023 19:27, Gatien Chevallier wrote:
>>> Document RIFSC (RIF security controller). RIFSC is a firewall controller
>>> composed of different kinds of hardware resources.
>>>
>>> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
>>
>> A nit, subject: drop second/last, redundant "device tree bindings for".
>> The "dt-bindings" prefix is already stating that these are bindings. 4
>> words of your 6 word subject is meaningless...
>
> Ack, I will rephrase, it is indeed redundant
>
>>
>>> ---
>>> .../bindings/bus/st,stm32-rifsc.yaml | 101 ++++++++++++++++++
>>> 1 file changed, 101 insertions(+)
>>> create mode 100644
>>> Documentation/devicetree/bindings/bus/st,stm32-rifsc.yaml
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/bus/st,stm32-rifsc.yaml
>>> b/Documentation/devicetree/bindings/bus/st,stm32-rifsc.yaml
>>> new file mode 100644
>>> index 000000000000..68d585ed369c
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/bus/st,stm32-rifsc.yaml
>>
>> Filename like compatible, unless you know list of compatibles will
>> grow... but then add them.
>>
>>> @@ -0,0 +1,101 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/bus/st,stm32-rifsc.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: STM32 Resource isolation framework security controller bindings
>>
>> Drop bindings
>
> Ack
>
>>
>>> +
>>> +maintainers:
>>> + - Gatien Chevallier <gatien.chevallier@foss.st.com>
>>> +
>>> +description: |
>>> + Resource isolation framework (RIF) is a comprehensive set of
>>> hardware blocks
>>> + designed to enforce and manage isolation of STM32 hardware
>>> resources like
>>> + memory and peripherals.
>>> +
>>> + The RIFSC (RIF security controller) is composed of three sets of
>>> registers,
>>> + each managing a specific set of hardware resources:
>>> + - RISC registers associated with RISUP logic (resource isolation
>>> device unit
>>> + for peripherals), assign all non-RIF aware peripherals to
>>> zero, one or
>>> + any security domains (secure, privilege, compartment).
>>> + - RIMC registers: associated with RIMU logic (resource isolation
>>> master
>>> + unit), assign all non RIF-aware bus master to one security
>>> domain by
>>> + setting secure, privileged and compartment information on the
>>> system bus.
>>> + Alternatively, the RISUP logic controlling the device port
>>> access to a
>>> + peripheral can assign target bus attributes to this peripheral
>>> master port
>>> + (supported attribute: CID).
>>> + - RISC registers associated with RISAL logic (resource isolation
>>> device unit
>>> + for address space - Lite version), assign address space
>>> subregions to one
>>> + security domains (secure, privilege, compartment).
>>> +
>>> +properties:
>>> + compatible:
>>> + const: st,stm32mp25-rifsc
>>> +
>>> + reg:
>>> + maxItems: 1
>>> +
>>> + "#address-cells":
>>> + const: 1
>>> +
>>> + "#size-cells":
>>> + const: 1
>>> +
>>> + "#feature-domain-cells":
>>> + const: 1
>>> +
>>> + ranges: true
>>> +
>>> + feature-domain-controller: true
>>> +
>>> +patternProperties:
>>> + "^.*@[0-9a-f]+$":
>>> + description: Peripherals
>>> + type: object
>>> + properties:
>>> + feature-domains:
>>> + minItems: 1
>>> + maxItems: 2
>>> + description:
>>> + The first argument must always be a phandle that
>>> references to the
>>> + firewall controller of the peripheral. The second can
>>> contain the
>>> + platform specific firewall ID of the peripheral.
>>
>> It does not make much sense to me to have hierarchy parent-child and via
>> phandle at the same time. You express the similar relationship twice
> Thank you for pointing this out.
>
> About the parent-child relation:
>
> The bus-like device tree architecture allows a bus-probe mechanism with
> which we want to check accesses of peripherals before probing their
> driver. This has several advantages:
> -This bus architecture provides a clearer view of the hardware.
> -No peripheral driver modifications as it is fully handled by the
> firewall drivers.
> -Drivers for devices that aren't accessible will not even be probed =>
> no probe fail.
>
> It would be possible to manage this mechanism another way by handling
> probe deferrals in drivers. But it would mean modifying every driver
> with a check on ST firewall that we probe and some of them aren't from
> STMicroelectronics.
>
> About the phandle relation:
>
> I agree on the fact that this double expression of the relationship is
> redundant.
>
> I've done it this way because there will be other nodes outside the
> RIFSC node that will need to reference it as their feature-domain
> controller. I kept the same information in the property to be coherent
> between all.
>
> For nodes under the RIFSC, the phandle is indeed useless and could be
> removed, just to leave the firewall ID. And I'm inclined to do so. I
> just have one worry on the YAML binding files where I will have a
> pattern property in the RIFSC that will state something and maybe
> another description in the peripheral YAML files. What is your take on
> that?
>
Looking back at it, feature-domains is a phandle-array. I guess I can't
derogate to the following architecture:
items:
- items:
- description: A phandle
- description: 1st arg cell
- description: 2nd arg cell
can I?
Some devices' nodes that are not subnodes of the firewall controllers
will need the phandle reference. Should I keep the redundant information
then?
Best regards,
Gatien
>>
>>> +
>>> +required:
>>> + - compatible
>>> + - reg
>>> + - "#address-cells"
>>> + - "#size-cells"
>>> + - feature-domain-controller
>>> + - "#feature-domain-cells"
>>> + - ranges
>>> +
>>> +additionalProperties: false
>>> +
>>> +examples:
>>> + - |
>>> + // In this example, the usart2 device refers to rifsc as its domain
>>> + // controller.
>>> + // Access rights are verified before creating devices.
>>> +
>>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>>> +
>>> + rifsc: rifsc-bus@42080000 {
>>> + compatible = "st,stm32mp25-rifsc";
>>> + reg = <0x42080000 0x1000>;
>>> + #address-cells = <1>;
>>> + #size-cells = <1>;
>>> + ranges;
>>> + feature-domain-controller;
>>> + #feature-domain-cells = <1>;
>>> +
>>> + usart2: serial@400e0000 {
>>> + compatible = "st,stm32h7-uart";
>>> + reg = <0x400e0000 0x400>;
>>> + interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
>>> + clocks = <&ck_flexgen_08>;
>>> + feature-domains = <&rifsc 32>;
>>> + status = "disabled";
>>
>> No status in the examples.
>>
>>> + };
>>> + };
>>
>> Best regards,
>> Krzysztof
>>
>
> Best regards,
> Gatien
next prev parent reply other threads:[~2023-07-20 14:59 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-05 17:27 [PATCH 00/10] Introduce STM32 Firewall framework Gatien Chevallier
2023-07-05 17:27 ` [IGNORE][PATCH 01/10] dt-bindings: Document common device controller bindings Gatien Chevallier
2023-07-05 19:39 ` Rob Herring
2023-07-05 17:27 ` [PATCH 02/10] dt-bindings: bus: add device tree bindings for RIFSC Gatien Chevallier
2023-07-05 19:39 ` Rob Herring
2023-07-06 6:28 ` Krzysztof Kozlowski
2023-07-06 9:29 ` Gatien CHEVALLIER
2023-07-20 14:58 ` Gatien CHEVALLIER [this message]
2023-07-05 17:27 ` [PATCH 03/10] dt-bindings: bus: add device tree bindings for ETZPC Gatien Chevallier
2023-07-05 19:39 ` Rob Herring
2023-07-05 17:27 ` [PATCH 04/10] dt-bindings: treewide: add feature-domains description in binding files Gatien Chevallier
2023-07-06 14:51 ` Rob Herring
2023-07-07 12:28 ` Gatien CHEVALLIER
2023-07-07 15:20 ` Rob Herring
2023-07-10 8:22 ` Gatien CHEVALLIER
2023-07-10 14:42 ` Rob Herring
2023-07-07 14:07 ` Oleksii Moisieiev
2023-07-07 15:26 ` Gatien CHEVALLIER
2023-07-07 15:27 ` Rob Herring
2023-07-07 16:10 ` Oleksii Moisieiev
2023-07-07 20:33 ` Rob Herring
2023-07-10 6:27 ` Oleksii Moisieiev
2023-07-05 17:27 ` [PATCH 05/10] firewall: introduce stm32_firewall framework Gatien Chevallier
2023-07-06 15:09 ` Rob Herring
2023-07-07 13:43 ` Gatien CHEVALLIER
2023-07-07 15:07 ` Rob Herring
2023-07-13 13:58 ` Gatien CHEVALLIER
2023-07-13 14:13 ` Oleksii Moisieiev
2023-07-07 10:37 ` Greg KH
2023-07-07 14:00 ` Gatien CHEVALLIER
2023-07-07 15:10 ` Greg KH
2023-07-07 15:44 ` Gatien CHEVALLIER
2023-07-07 13:50 ` Oleksii Moisieiev
2023-07-07 15:01 ` Gatien CHEVALLIER
2023-07-07 16:01 ` Oleksii Moisieiev
2023-07-05 17:27 ` [PATCH 06/10] bus: rifsc: introduce RIFSC firewall controller driver Gatien Chevallier
2023-07-05 17:27 ` [PATCH 07/10] arm64: dts: st: add RIFSC as a domain controller for STM32MP25x boards Gatien Chevallier
2023-07-06 9:25 ` Alexandre TORGUE
2023-07-06 9:30 ` Gatien CHEVALLIER
2023-07-25 14:07 ` Gatien CHEVALLIER
2023-07-05 17:27 ` [PATCH 08/10] bus: etzpc: introduce ETZPC firewall controller driver Gatien Chevallier
2023-07-05 17:27 ` [PATCH 09/10] ARM: dts: stm32: add ETZPC as a system bus for STM32MP15x boards Gatien Chevallier
2023-07-05 17:27 ` [PATCH 10/10] ARM: dts: stm32: add ETZPC as a system bus for STM32MP13x boards Gatien Chevallier
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=6edb1d1e-ae6b-486a-9548-4b2e0353f3dc@foss.st.com \
--to=gatien.chevallier@foss.st.com \
--cc=Oleksii_Moisieiev@epam.com \
--cc=alexandre.torgue@foss.st.com \
--cc=alsa-devel@alsa-project.org \
--cc=andi.shyti@kernel.org \
--cc=arnaud.pouliquen@foss.st.com \
--cc=arnd@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=edumazet@google.com \
--cc=fabrice.gasnier@foss.st.com \
--cc=gregkh@linuxfoundation.org \
--cc=herbert@gondor.apana.org.au \
--cc=hugues.fruchet@foss.st.com \
--cc=jic23@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=kuba@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux-usb@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olivier.moysan@foss.st.com \
--cc=pabeni@redhat.com \
--cc=richardcochran@gmail.com \
--cc=robh+dt@kernel.org \
--cc=ulf.hansson@linaro.org \
--cc=vkoul@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).