This series focuses on CoreSight path power management. The changes can
be divided into four parts for review:
Patches 01~06: Refactor the CPU idle flow with moving common code into
the CoreSight core layer.
Patches 07~14: Add link control during CPU idle.
Patches 15~16: Support the sink (TRBE) control during CPU idle.
Patches 17~19: Move the CPU hotplug flow into the coresight core layer
and simplify the code.
This series is rebased on the coresight-next branch and has been verified
on Juno-r2 and FVP RevC.
---
Changes in v6:
- Rebase on the latest coresight-next branch.
- Always save and restore TRBE context during idle (Will).
- Use get_cpu() / put_cpu() when set the per CPU source pointer.
- Link to v5: https://lore.kernel.org/r/20251119-arm_coresight_path_power_management_impr…
Changes in v5:
- Set the per-CPU source pointer on target CPU (Suzuki).
- Reused existed enable/disable buffer functions in TRBE callbacks
(James).
- Refactored refcount for source devices in SysFS mode.
- Released path in cpu-hotplug off flow to avoid memory leak.
- Updated ETMv3 driver when move common code into core layer.
- Rebased on the latest coresight-next branch.
- Link to v4: https://lore.kernel.org/r/20251104-arm_coresight_path_power_management_impr…
Changes in v4:
- Changed to store path pointer in coresight_device, this is easier for
fetching path pointer based on source device (Mike).
- Dropped changes in CTI driver.
- Only disabled path for CPU hot-plugged off but not enable path for
hot-plugged in.
- Removed James' test tags for modified patches.
- Link to v3: https://lore.kernel.org/r/20250915-arm_coresight_power_management_fix-v3-0-…
Signed-off-by: Leo Yan <leo.yan(a)arm.com>
---
Leo Yan (18):
coresight: sysfs: Validate CPU online status for per-CPU sources
coresight: Set per-CPU source pointer
coresight: Register CPU PM notifier in core layer
coresight: etm4x: Hook CPU PM callbacks
coresight: Add callback to determine if PM is needed
coresight: etm4x: Remove redundant condition checks in save and restore
coresight: syscfg: Use spinlock to protect active variables
coresight: Introduce coresight_enable_source() helper
coresight: Save active path for system tracers
coresight: etm4x: Set active path on target CPU
coresight: etm3x: Set active path on target CPU
coresight: sysfs: Use source's path pointer for path control
coresight: Add 'in_idle' argument to path
coresight: Control path during CPU idle
coresight: Add PM callbacks for sink device
coresight: sysfs: Increment refcount only for system tracers
coresight: Take hotplug lock in enable_source_store() for Sysfs mode
coresight: Move CPU hotplug callbacks to core layer
Yabin Cui (1):
coresight: trbe: Save and restore state across CPU low power state
drivers/hwtracing/coresight/coresight-catu.c | 1 +
drivers/hwtracing/coresight/coresight-core.c | 273 ++++++++++++++++++++-
drivers/hwtracing/coresight/coresight-ctcu-core.c | 1 +
drivers/hwtracing/coresight/coresight-cti-core.c | 1 +
drivers/hwtracing/coresight/coresight-dummy.c | 1 +
drivers/hwtracing/coresight/coresight-etb10.c | 1 +
drivers/hwtracing/coresight/coresight-etm-perf.c | 2 +-
drivers/hwtracing/coresight/coresight-etm3x-core.c | 65 ++---
drivers/hwtracing/coresight/coresight-etm4x-core.c | 153 +++---------
drivers/hwtracing/coresight/coresight-funnel.c | 1 +
drivers/hwtracing/coresight/coresight-priv.h | 3 +
drivers/hwtracing/coresight/coresight-replicator.c | 1 +
drivers/hwtracing/coresight/coresight-stm.c | 1 +
drivers/hwtracing/coresight/coresight-syscfg.c | 22 +-
drivers/hwtracing/coresight/coresight-syscfg.h | 2 +
drivers/hwtracing/coresight/coresight-sysfs.c | 126 +++-------
drivers/hwtracing/coresight/coresight-tmc-core.c | 1 +
drivers/hwtracing/coresight/coresight-tnoc.c | 2 +
drivers/hwtracing/coresight/coresight-tpda.c | 1 +
drivers/hwtracing/coresight/coresight-tpdm.c | 1 +
drivers/hwtracing/coresight/coresight-tpiu.c | 1 +
drivers/hwtracing/coresight/coresight-trbe.c | 60 ++++-
drivers/hwtracing/coresight/ultrasoc-smb.c | 1 +
include/linux/coresight.h | 11 +
24 files changed, 458 insertions(+), 274 deletions(-)
---
base-commit: 9c5ef7a30d9044f8706bd02bfdc4eff7266f3e25
change-id: 20251104-arm_coresight_path_power_management_improvement-dab4966f8280
Best regards,
--
Leo Yan <leo.yan(a)arm.com>
The CPU power management issue in the CTI driver was first observed in
series [1]; this series resolves that issue. It fixes bugs and removes
CPU PM operations from the CoreSight CTI driver, the goal is to use the
CoreSight core layer as the central place for CPU power management.
Removing CPU PM from CTI driver can avoid conflicts with the core layer.
This series can be divided into:
Patches 01 ~ 02: Fix spinlock with irqsave and register read with CS
lock.
Patches 03 ~ 08: Access ASICCTL condintioanlly, remove CPU PM code,
and refactor register access in sysfs knob.
This series is based on coresight-next branch and has been validated on
Juno r2 platforms, pass normal sysfs and perf test, as well as CPU PM
stress testing.
[1] https://lore.kernel.org/all/20250915-arm_coresight_power_management_fix-v3-…
Signed-off-by: Leo Yan <leo.yan(a)arm.com>
---
Changes in v2:
- Rebased on coresight-next branch (v7.1).
- Kept read/write cache value in sysfs knob (Mike).
- Link to v1: https://lore.kernel.org/r/20260209-arm_coresight_cti_refactor_v1-v1-0-db71a…
---
Leo Yan (8):
coresight: cti: Make spinlock usage consistent
coresight: cti: Fix register reads
coresight: cti: Access ASICCTL only when implemented
coresight: cti: Remove CPU power management code
coresight: cti: Rename cti_active() to cti_is_active()
coresight: cti: Remove hw_powered flag
coresight: cti: Remove hw_enabled flag
coresight: cti: Properly handle negative offsets in cti_reg32_{show|store}()
drivers/hwtracing/coresight/coresight-cti-core.c | 278 ++++------------------
drivers/hwtracing/coresight/coresight-cti-sysfs.c | 171 ++++++-------
drivers/hwtracing/coresight/coresight-cti.h | 13 +-
3 files changed, 137 insertions(+), 325 deletions(-)
---
base-commit: eef33a7cce239783d0422526a4d786289a936f1b
change-id: 20251223-arm_coresight_cti_refactor_v1-76e1bda8b716
Best regards,
--
Leo Yan <leo.yan(a)arm.com>
On Sat, 28 Feb 2026 18:23:44 -0400, Elsanti wrote:
> The variable 'ret' is initialized to 0, never modified, and returned
> directly. Remove it and return 0 explicitly.
>
>
Applied, thanks!
[1/1] drivers/hwtracing/coresight: remove unneeded variable in tmc_crashdata_release()
https://git.kernel.org/coresight/c/061c39a17136
Best regards,
--
Suzuki K Poulose <suzuki.poulose(a)arm.com>
Hello,
On 04/02/2026 02:22, Jie Gan wrote:
> The DT‑binding patch adds platform‑specific compatibles for the
> CTCU device, and the following Qualcomm platforms are included:
> Kaanapali
> Pakala(sm8750)
> Hamoa(x1e80100)
> Glymur
Given this is predominantly DTS changes, and there is very low chances
of a conflict with the binding yaml change, I would recommend this to go
via soc or the qcom platform tree.
For the series:
Acked-by: Suzuki K Poulose <suzuki.poulose(a)arm.com>
>
> Since the base Coresight DT patches for the Kaanapali and Glymur
> platforms have not yet been applied, I created DT patches only
> for the Pakala and Hamoa platforms. I will submit the Kaanapali
> and Glymur patches once their corresponding base Coresight DT patches
> are merged.
>
> The Hamoa‑related patches were posted in a separate email, and I
> have included them in the current patch series.
>
> Link to the previous Hamoa patch series:
> https://lore.kernel.org/all/20251106-enable-etr-and-ctcu-for-hamoa-v2-0-cdb…
>
> Signed-off-by: Jie Gan <jie.gan(a)oss.qualcomm.com>
> ---
> Changes in v3:
> - change back to the numeric compatible from hamoa to x1e80100.
> - Link to v2: https://lore.kernel.org/r/20260203-enable-ctcu-and-etr-v2-0-aacc7bd7eccb@os…
>
> Changes in v2:
> - change back to the numeric compatible from pakala to sm8750.
> - Link to v1: https://lore.kernel.org/r/20260203-enable-ctcu-and-etr-v1-0-a5371a2ec2b8@os…
>
> ---
> Jie Gan (3):
> dt-binding: document QCOM platforms for CTCU device
> arm64: dts: qcom: hamoa: enable ETR and CTCU devices
> arm64: dts: qcom: sm8750: enable ETR and CTCU devices
>
> .../bindings/arm/qcom,coresight-ctcu.yaml | 4 +
> arch/arm64/boot/dts/qcom/hamoa.dtsi | 160 ++++++++++++++++++-
> arch/arm64/boot/dts/qcom/sm8750.dtsi | 177 +++++++++++++++++++++
> 3 files changed, 340 insertions(+), 1 deletion(-)
> ---
> base-commit: 193579fe01389bc21aff0051d13f24e8ea95b47d
> change-id: 20260203-enable-ctcu-and-etr-31f9e9d1088d
>
> Best regards,
From: Mike Leach <mike.leach(a)linaro.org>
My e-mail address for linux work is changing to mike.leach(a)arm.com
from 1st Jan 2026. Update MAINTAINERS file accordingly
Updated .mailmap file accordingly.
Signed-off-by: Mike Leach <mike.leach(a)linaro.org>
Signed-off-by: Mike Leach <mike.leach(a)arm.com>
---
Changes since v1:
Add sign off in new email & change .mailmap (Suzuki)
---
.mailmap | 1 +
MAINTAINERS | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index c124a1306d26..064c00568d20 100644
--- a/.mailmap
+++ b/.mailmap
@@ -566,6 +566,7 @@ Michel Lespinasse <michel(a)lespinasse.org> <walken(a)google.com>
Michel Lespinasse <michel(a)lespinasse.org> <walken(a)zoy.org>
Mickaël Salaün <mic(a)digikod.net> <mic(a)linux.microsoft.com>
Miguel Ojeda <ojeda(a)kernel.org> <miguel.ojeda.sandonis(a)gmail.com>
+Mike Leach <mike.leach(a)arm.com> <mike.leach(a)linaro.org>
Mike Rapoport <rppt(a)kernel.org> <mike(a)compulab.co.il>
Mike Rapoport <rppt(a)kernel.org> <mike.rapoport(a)gmail.com>
Mike Rapoport <rppt(a)kernel.org> <rppt(a)linux.ibm.com>
diff --git a/MAINTAINERS b/MAINTAINERS
index 4d879f6a7b51..257d2fcb9651 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2719,7 +2719,7 @@ N: digicolor
ARM/CORESIGHT FRAMEWORK AND DRIVERS
M: Suzuki K Poulose <suzuki.poulose(a)arm.com>
-R: Mike Leach <mike.leach(a)linaro.org>
+R: Mike Leach <mike.leach(a)arm.com>
R: James Clark <james.clark(a)linaro.org>
L: coresight(a)lists.linaro.org (moderated for non-subscribers)
L: linux-arm-kernel(a)lists.infradead.org (moderated for non-subscribers)
@@ -20725,7 +20725,7 @@ PERFORMANCE EVENTS TOOLING ARM64
R: John Garry <john.g.garry(a)oracle.com>
R: Will Deacon <will(a)kernel.org>
R: James Clark <james.clark(a)linaro.org>
-R: Mike Leach <mike.leach(a)linaro.org>
+R: Mike Leach <mike.leach(a)arm.com>
R: Leo Yan <leo.yan(a)linux.dev>
L: linux-arm-kernel(a)lists.infradead.org (moderated for non-subscribers)
S: Supported
--
2.43.0
On Thu, 19 Feb 2026 22:46:57 +0800, Jie Gan wrote:
> Acquiring an uninitialized raw_spin_lock is invalid and may trigger
> unexpected behavior or spin_bug.
>
>
Applied, thanks!
[1/1] coresight: ctcu: fix the spin_bug
https://git.kernel.org/coresight/c/36ffbbc2b387
Best regards,
--
Suzuki K Poulose <suzuki.poulose(a)arm.com>
The CPU power management issue in the CTI driver was first observed in
series [1]; this series resolves that issue. It fixes bugs and removes
CPU PM operations from the CoreSight CTI driver, the goal is to use the
CoreSight core layer as the central place for CPU power management.
Removing CPU PM from CTI driver can avoid conflicts with the core layer.
Based on review of the Arm ARM, ASICCTL is the only CTI register that
could potentially reside in the CPU power domain. However, this is
considered highly unlikely for the following reasons:
- Standard Arm CTIs place the ASICCTL register in the debug power
domain;
- ASICCTL is implemented only when CTIDEVID.EXTMUXNUM is non-zero,
which is rare for CPU CTIs.
As a result, it is safe to remove the CPU PM code as done in this
series. In addition, avoiding support local CPU access (via SMP calls)
to ASICCTL significantly reduces driver complexity.
If a future hardware implements ASICCTL in the CPU power domain, we can
consider adding a property to describe that characteristic. That said,
from a software point of view, keeping all CTI registers in the same
power domain is preferable, as it makes the driver implementation much
simpler.
This series can be divided into:
Patches 01 ~ 02: Fix spinlock with irqsave and register read with CS
lock.
Patches 03 ~ 08: Access ASICCTL condintioanlly, remove CPU PM code,
and refactor register access in sysfs knob.
This series is based on coresight-next branch and has been validated on
Juno r1 and r2 platforms, pass normal sysfs and perf test, as well as
CPU PM stress testing.
[1] https://lore.kernel.org/all/20250915-arm_coresight_power_management_fix-v3-…
Signed-off-by: Leo Yan <leo.yan(a)arm.com>
---
Leo Yan (8):
coresight: cti: Make spinlock usage consistent
coresight: cti: Fix register reads
coresight: cti: Access ASICCTL only when implemented
coresight: cti: Remove CPU power management code
coresight: cti: Rename cti_active() to cti_is_active()
coresight: cti: Remove hw_powered flag
coresight: cti: Remove hw_enabled flag
coresight: cti: Refactor cti_reg32_{show|store}()
drivers/hwtracing/coresight/coresight-cti-core.c | 278 ++++------------------
drivers/hwtracing/coresight/coresight-cti-sysfs.c | 168 ++++++-------
drivers/hwtracing/coresight/coresight-cti.h | 13 +-
3 files changed, 134 insertions(+), 325 deletions(-)
---
base-commit: eebe8dbd8630f51cf70b1f68a440cd3d7f7a914d
change-id: 20251223-arm_coresight_cti_refactor_v1-76e1bda8b716
Best regards,
--
Leo Yan <leo.yan(a)arm.com>