[PATCH AUTOSEL 6.17-6.12] arm64: zynqmp: Disable coresight by default
Sasha Levin
sashal at kernel.org
Thu Oct 9 08:55:41 PDT 2025
From: Quanyang Wang <quanyang.wang at windriver.com>
[ Upstream commit 0e3f9140ad04dca9a6a93dd6a6decdc53fd665ca ]
When secure-boot mode of bootloader is enabled, the registers of
coresight are not permitted to access that's why disable it by default.
Signed-off-by: Quanyang Wang <quanyang.wang at windriver.com>
Signed-off-by: Michal Simek <michal.simek at amd.com>
Link: https://lore.kernel.org/r/7e308b8efe977c4912079b4d1b1ab3d24908559e.1756799774.git.michal.simek@amd.com
Signed-off-by: Sasha Levin <sashal at kernel.org>
---
LLM Generated explanations, may be completely bogus:
YES – default‑disabling the ZynqMP CPU debug Coresight nodes is a
necessary regression fix for stable kernels that picked up the earlier
enablement.
- **Regression introduced**: Commit `fbce12d2899c4` (“arm64: zynqmp: Add
coresight cpu debug support”) first added the `cpu[0-3]_debug` nodes
without a `status` property, so they now probe by default; this change
landed in v6.11 (`arch/arm64/boot/dts/xilinx/zynqmp.dtsi:548`, `:555`,
`:562`, `:569`).
- **Failure mode**: On secure‑boot deployments the firmware prevents
access to those debug registers, causing the `coresight-cpu-debug`
driver to hit denied reads/writes during probe (see the unconditional
register accesses in `drivers/hwtracing/coresight/coresight-cpu-
debug.c:135` and :327). Because the driver auto-loads (module alias on
the AMBA bus) with `CONFIG_CORESIGHT_CPU_DEBUG=m`
(`arch/arm64/configs/defconfig`), this results in synchronous
aborts/panics rather than a recoverable error.
- **What the patch does**: Adding `status = "disabled";` to each node
(`arch/arm64/boot/dts/xilinx/zynqmp.dtsi:548`, `:555`, `:562`, `:569`)
restores the pre‑v6.11 behavior: the coresight CPU debug blocks stay
off unless a board DTS explicitly re-enables them. This mirrors how
other SoCs handle similar hardware constraints (e.g.
`arch/arm64/boot/dts/qcom/msm8916.dtsi` already defaults these nodes
to `"disabled"`), and keeps the existing clock wiring in `zynqmp-clk-
ccf.dtsi` harmless for boards that opt in.
- **Risk assessment**: The change is minimal, device-tree only, and
reverts functionality that was never present before v6.11. Systems
depending on the new default-on behavior can still override the status
in board-specific DTS, while the patch prevents fatal boot failures on
secure-booted systems. No additional dependencies are required for
stable backports.
Given the severity of the regression and the contained nature of the
fix, this commit is a solid candidate for backporting to all stable
series that include `fbce12d2899c4`.
arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
index e11d282462bd3..23d867c03263d 100644
--- a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
+++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
@@ -550,6 +550,7 @@ cpu0_debug: debug at fec10000 {
reg = <0x0 0xfec10000 0x0 0x1000>;
clock-names = "apb_pclk";
cpu = <&cpu0>;
+ status = "disabled";
};
cpu1_debug: debug at fed10000 {
@@ -557,6 +558,7 @@ cpu1_debug: debug at fed10000 {
reg = <0x0 0xfed10000 0x0 0x1000>;
clock-names = "apb_pclk";
cpu = <&cpu1>;
+ status = "disabled";
};
cpu2_debug: debug at fee10000 {
@@ -564,6 +566,7 @@ cpu2_debug: debug at fee10000 {
reg = <0x0 0xfee10000 0x0 0x1000>;
clock-names = "apb_pclk";
cpu = <&cpu2>;
+ status = "disabled";
};
cpu3_debug: debug at fef10000 {
@@ -571,6 +574,7 @@ cpu3_debug: debug at fef10000 {
reg = <0x0 0xfef10000 0x0 0x1000>;
clock-names = "apb_pclk";
cpu = <&cpu3>;
+ status = "disabled";
};
/* GDMA */
--
2.51.0
More information about the linux-arm-kernel
mailing list