[PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms

Gatien Chevallier posted 12 patches 1 month ago
.../devicetree/bindings/arm/arm,coresight-cti.yaml |   3 +
.../bindings/arm/arm,coresight-dynamic-funnel.yaml |   3 +
.../devicetree/bindings/arm/arm,coresight-etm.yaml |   3 +
.../devicetree/bindings/arm/arm,coresight-stm.yaml |   3 +
.../devicetree/bindings/arm/arm,coresight-tmc.yaml |   3 +
.../bindings/arm/arm,coresight-tpiu.yaml           |   3 +
.../bindings/bus/st,stm32mp131-dbg-bus.yaml        |  76 +++++++
.../devicetree/bindings/pinctrl/st,stm32-hdp.yaml  |   6 +
MAINTAINERS                                        |   1 +
arch/arm/boot/dts/st/stm32mp131.dtsi               | 117 ++++++++++
arch/arm/boot/dts/st/stm32mp135f-dk.dts            |  24 ++
arch/arm/boot/dts/st/stm32mp151.dtsi               | 172 ++++++++++++++
arch/arm/boot/dts/st/stm32mp153.dtsi               |  68 ++++++
arch/arm/boot/dts/st/stm32mp157c-ev1.dts           |  40 ++++
arch/arm/boot/dts/st/stm32mp15xx-dkx.dtsi          |  40 ++++
drivers/bus/Kconfig                                |  10 +
drivers/bus/Makefile                               |   1 +
drivers/bus/stm32_dbg_bus.c                        | 251 +++++++++++++++++++++
drivers/bus/stm32_firewall.c                       |  44 +++-
drivers/pinctrl/stm32/pinctrl-stm32-hdp.c          |  14 ++
include/linux/bus/stm32_firewall_device.h          |  26 +++
21 files changed, 907 insertions(+), 1 deletion(-)
[PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms
Posted by Gatien Chevallier 1 month ago
Stm32 SoCs embed debug peripherals such as Coresight. These peripherals
can monitor the activity of the cores. Because of that, they can be
used only if some features in the debug configuration are enabled.
Else, errors or firewall exceptions can be observed. Similarly to
the ETZPC(on stm32mp1x platforms) or the RIFSC(on stm32mp2x platforms),
debug-related peripherals access can be assessed at bus level to
prevent these issues from happening.

The debug configuration can only be accessed by the secure world.
That means that a service must be implemented in the secure world for
the kernel to check the firewall configuration. On OpenSTLinux, it is
done through a Debug access PTA in OP-TEE [1].
To represent the debug peripherals present on a dedicated debug bus,
create a debug bus node in the device tree and the associated driver
that will interact with this PTA.

[1]: https://github.com/OP-TEE/optee_os/pull/7673

Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
---
Changes in v6:
- Fix use of platform_driver_register() in probe of the stm32 debug bus
  (unusable since dc23806a7c47 ("driver core: enforce device_lock for driver_match_device()"))
- Added all review tags
- Link to v5: https://lore.kernel.org/r/20260123-debug_bus-v5-0-90b670844241@foss.st.com

Changes in v5:
- Take into account Rob's comments for the debug bus documentation
- Link to v4: https://lore.kernel.org/r/20260122-debug_bus-v4-0-28f0f2a25f2c@foss.st.com

Changes in v4:
- Remove reg property from the debug bus and use ranges.
- Link to v3: https://lore.kernel.org/r/20260121-debug_bus-v3-0-4d32451180d0@foss.st.com

Changes in v3:
- Collect Rob's review tags
- Add stm32_firewall_get_grant_all_access() API and use it in the HDP
  driver.
- Link to v2: https://lore.kernel.org/r/20260114-debug_bus-v2-0-5475c7841569@foss.st.com

Changes in v2:
- Fix kernel robot error by documenting the access-controllers property
  in the missing coresight peripheral binding files.
- List the access controller items for HDP
- Various minor fixes in the debug bus binding file.
- Remove clock documentation and its presence in the DT node and driver.
  Bus clock will be handled by the child nodes' drivers.
- stm32 debug bus driver:
	- Depopulate the bus when .remove() is called
	- Remove trace when error on devm_kzalloc() as the trace
	function does nothing in case of ENOMEM.
	- Remove use of of_match_ptr()
	- Use tee bus callbacks
- Link to v1: https://lore.kernel.org/r/20260109-debug_bus-v1-0-8f2142b5a738@foss.st.com

---
Gatien Chevallier (12):
      dt-bindings: document access-controllers property for coresight peripherals
      dt-bindings: pinctrl: document access-controllers property for stm32 HDP
      dt-bindings: bus: document the stm32 debug bus
      bus: stm32_firewall: allow check on different firewall controllers
      bus: stm32_firewall: add stm32_firewall_get_grant_all_access() API
      drivers: bus: add the stm32 debug bus driver
      arm: dts: stm32: introduce the debug bus for stm32mp1x platforms
      arm: dts: stm32: enable the debug bus on stm32mp1x boards
      arm: dts: stm32: enable CoreSight on stm32mp15xx-dkx boards
      arm: dts: stm32: enable CoreSight on the stm32mp157c-ev1 board
      arm: dts: stm32: enable CoreSight on the stm32mp135f-dk board
      pinctrl: stm32: add firewall checks before probing the HDP driver

 .../devicetree/bindings/arm/arm,coresight-cti.yaml |   3 +
 .../bindings/arm/arm,coresight-dynamic-funnel.yaml |   3 +
 .../devicetree/bindings/arm/arm,coresight-etm.yaml |   3 +
 .../devicetree/bindings/arm/arm,coresight-stm.yaml |   3 +
 .../devicetree/bindings/arm/arm,coresight-tmc.yaml |   3 +
 .../bindings/arm/arm,coresight-tpiu.yaml           |   3 +
 .../bindings/bus/st,stm32mp131-dbg-bus.yaml        |  76 +++++++
 .../devicetree/bindings/pinctrl/st,stm32-hdp.yaml  |   6 +
 MAINTAINERS                                        |   1 +
 arch/arm/boot/dts/st/stm32mp131.dtsi               | 117 ++++++++++
 arch/arm/boot/dts/st/stm32mp135f-dk.dts            |  24 ++
 arch/arm/boot/dts/st/stm32mp151.dtsi               | 172 ++++++++++++++
 arch/arm/boot/dts/st/stm32mp153.dtsi               |  68 ++++++
 arch/arm/boot/dts/st/stm32mp157c-ev1.dts           |  40 ++++
 arch/arm/boot/dts/st/stm32mp15xx-dkx.dtsi          |  40 ++++
 drivers/bus/Kconfig                                |  10 +
 drivers/bus/Makefile                               |   1 +
 drivers/bus/stm32_dbg_bus.c                        | 251 +++++++++++++++++++++
 drivers/bus/stm32_firewall.c                       |  44 +++-
 drivers/pinctrl/stm32/pinctrl-stm32-hdp.c          |  14 ++
 include/linux/bus/stm32_firewall_device.h          |  26 +++
 21 files changed, 907 insertions(+), 1 deletion(-)
---
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
change-id: 20260108-debug_bus-392666c7a3aa

Best regards,
-- 
Gatien Chevallier <gatien.chevallier@foss.st.com>
Re: [PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms
Posted by Alexandre TORGUE 3 weeks, 6 days ago
Hi Linus

On 2/26/26 11:30, Gatien Chevallier wrote:
> Stm32 SoCs embed debug peripherals such as Coresight. These peripherals
> can monitor the activity of the cores. Because of that, they can be
> used only if some features in the debug configuration are enabled.
> Else, errors or firewall exceptions can be observed. Similarly to
> the ETZPC(on stm32mp1x platforms) or the RIFSC(on stm32mp2x platforms),
> debug-related peripherals access can be assessed at bus level to
> prevent these issues from happening.
> 
> The debug configuration can only be accessed by the secure world.
> That means that a service must be implemented in the secure world for
> the kernel to check the firewall configuration. On OpenSTLinux, it is
> done through a Debug access PTA in OP-TEE [1].
> To represent the debug peripherals present on a dedicated debug bus,
> create a debug bus node in the device tree and the associated driver
> that will interact with this PTA.
> 
> [1]: https://github.com/OP-TEE/optee_os/pull/7673
> 
> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
> ---
> Changes in v6:
> - Fix use of platform_driver_register() in probe of the stm32 debug bus
>    (unusable since dc23806a7c47 ("driver core: enforce device_lock for driver_match_device()"))
> - Added all review tags
> - Link to v5: https://lore.kernel.org/r/20260123-debug_bus-v5-0-90b670844241@foss.st.com
> 
> Changes in v5:
> - Take into account Rob's comments for the debug bus documentation
> - Link to v4: https://lore.kernel.org/r/20260122-debug_bus-v4-0-28f0f2a25f2c@foss.st.com
> 
> Changes in v4:
> - Remove reg property from the debug bus and use ranges.
> - Link to v3: https://lore.kernel.org/r/20260121-debug_bus-v3-0-4d32451180d0@foss.st.com
> 
> Changes in v3:
> - Collect Rob's review tags
> - Add stm32_firewall_get_grant_all_access() API and use it in the HDP
>    driver.
> - Link to v2: https://lore.kernel.org/r/20260114-debug_bus-v2-0-5475c7841569@foss.st.com
> 
> Changes in v2:
> - Fix kernel robot error by documenting the access-controllers property
>    in the missing coresight peripheral binding files.
> - List the access controller items for HDP
> - Various minor fixes in the debug bus binding file.
> - Remove clock documentation and its presence in the DT node and driver.
>    Bus clock will be handled by the child nodes' drivers.
> - stm32 debug bus driver:
> 	- Depopulate the bus when .remove() is called
> 	- Remove trace when error on devm_kzalloc() as the trace
> 	function does nothing in case of ENOMEM.
> 	- Remove use of of_match_ptr()
> 	- Use tee bus callbacks
> - Link to v1: https://lore.kernel.org/r/20260109-debug_bus-v1-0-8f2142b5a738@foss.st.com
> 
> ---
> Gatien Chevallier (12):
>        dt-bindings: document access-controllers property for coresight peripherals
>        dt-bindings: pinctrl: document access-controllers property for stm32 HDP
>        dt-bindings: bus: document the stm32 debug bus
>        bus: stm32_firewall: allow check on different firewall controllers
>        bus: stm32_firewall: add stm32_firewall_get_grant_all_access() API
>        drivers: bus: add the stm32 debug bus driver
>        arm: dts: stm32: introduce the debug bus for stm32mp1x platforms
>        arm: dts: stm32: enable the debug bus on stm32mp1x boards
>        arm: dts: stm32: enable CoreSight on stm32mp15xx-dkx boards
>        arm: dts: stm32: enable CoreSight on the stm32mp157c-ev1 board
>        arm: dts: stm32: enable CoreSight on the stm32mp135f-dk board
>        pinctrl: stm32: add firewall checks before probing the HDP driver
> 

I plan to take DT & bus driver patches in my tree. Do you plan to take 
pinctrl one or would you prefer I take it also ?

regards
Alex
Re: [PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms
Posted by Alexandre TORGUE 3 weeks, 2 days ago
Hi

On 2/26/26 11:30, Gatien Chevallier wrote:
> Stm32 SoCs embed debug peripherals such as Coresight. These peripherals
> can monitor the activity of the cores. Because of that, they can be
> used only if some features in the debug configuration are enabled.
> Else, errors or firewall exceptions can be observed. Similarly to
> the ETZPC(on stm32mp1x platforms) or the RIFSC(on stm32mp2x platforms),
> debug-related peripherals access can be assessed at bus level to
> prevent these issues from happening.
> 
> The debug configuration can only be accessed by the secure world.
> That means that a service must be implemented in the secure world for
> the kernel to check the firewall configuration. On OpenSTLinux, it is
> done through a Debug access PTA in OP-TEE [1].
> To represent the debug peripherals present on a dedicated debug bus,
> create a debug bus node in the device tree and the associated driver
> that will interact with this PTA.
> 
> [1]: https://github.com/OP-TEE/optee_os/pull/7673
> 
> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
> ---
> Changes in v6:
> - Fix use of platform_driver_register() in probe of the stm32 debug bus
>    (unusable since dc23806a7c47 ("driver core: enforce device_lock for driver_match_device()"))
> - Added all review tags
> - Link to v5: https://lore.kernel.org/r/20260123-debug_bus-v5-0-90b670844241@foss.st.com
> 

...

> 
> ---
> Gatien Chevallier (12):
>        dt-bindings: document access-controllers property for coresight peripherals
>        dt-bindings: pinctrl: document access-controllers property for stm32 HDP
>        dt-bindings: bus: document the stm32 debug bus
>        bus: stm32_firewall: allow check on different firewall controllers
>        bus: stm32_firewall: add stm32_firewall_get_grant_all_access() API
>        drivers: bus: add the stm32 debug bus driver
>        arm: dts: stm32: introduce the debug bus for stm32mp1x platforms
>        arm: dts: stm32: enable the debug bus on stm32mp1x boards
>        arm: dts: stm32: enable CoreSight on stm32mp15xx-dkx boards
>        arm: dts: stm32: enable CoreSight on the stm32mp157c-ev1 board
>        arm: dts: stm32: enable CoreSight on the stm32mp135f-dk board
>        pinctrl: stm32: add firewall checks before probing the HDP driver
> 

Patch 1 to 11 applied on stm32-next. Linus, let me know if I take the 
pinctrl one or you prefer to take it.

regards
Alex
Re: [PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms
Posted by Linus Walleij 3 weeks, 1 day ago
On Tue, Mar 10, 2026 at 10:07 AM Alexandre TORGUE
<alexandre.torgue@foss.st.com> wrote:

> Patch 1 to 11 applied on stm32-next. Linus, let me know if I take the
> pinctrl one or you prefer to take it.

AFAIU you *have* to take it because there are compile-time dependencies?

I provided my Reviewed-by so go ahead and apply it!

Yours,
Linus Walleij
Re: [PATCH v6 00/12] bus: add stm32 debug bus and coresight support for stm32mp1x platforms
Posted by Alexandre TORGUE 3 weeks ago

On 3/11/26 10:28, Linus Walleij wrote:
> On Tue, Mar 10, 2026 at 10:07 AM Alexandre TORGUE
> <alexandre.torgue@foss.st.com> wrote:
> 
>> Patch 1 to 11 applied on stm32-next. Linus, let me know if I take the
>> pinctrl one or you prefer to take it.
> 
> AFAIU you *have* to take it because there are compile-time dependencies?
> 
> I provided my Reviewed-by so go ahead and apply it!

Ok done.

Thanks Linus.

alex

> 
> Yours,
> Linus Walleij