From: yuanfang zhang <yuanfang.zhang@oss.qualcomm.com>
To: Suzuki K Poulose <suzuki.poulose@arm.com>,
Mike Leach <mike.leach@linaro.org>,
James Clark <james.clark@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Leo Yan <leo.yan@linux.dev>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Sudeep Holla <sudeep.holla@arm.com>
Cc: kernel@oss.qualcomm.com, coresight@lists.linaro.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
maulik.shah@oss.qualcomm.com, Jie Gan <jie.gan@oss.qualcomm.com>
Subject: Re: [PATCH v2 00/12] coresight: Add CPU cluster funnel/replicator/tmc support
Date: Fri, 19 Dec 2025 00:18:31 +0800 [thread overview]
Message-ID: <8cb8fad9-c54e-43a3-a769-5452119cc2a1@oss.qualcomm.com> (raw)
In-Reply-To: <47191600-260a-46aa-9af8-dff2b08dc2e8@arm.com>
On 12/18/2025 5:32 PM, Suzuki K Poulose wrote:
> Cc: Sudeep
>
> On 18/12/2025 08:09, Yuanfang Zhang wrote:
>> This patch series adds support for CoreSight components local to CPU clusters,
>> including funnel, replicator, and TMC, which reside within CPU cluster power
>> domains. These components require special handling due to power domain
>> constraints.
>>
>> Unlike system-level CoreSight devices, these components share the CPU cluster's
>> power domain. When the cluster enters low-power mode (LPM), their registers
>> become inaccessible. Notably, `pm_runtime_get` alone cannot bring the cluster
>> out of LPM, making standard register access unreliable.
>
> Why ? AFAIU, we have ways to tie the power-domain to that of the cluster
> and that can auto-magically keep the cluster power ON as long as you
> want to use them.
>
> Suzuki
>
Hi Suzuki
Runtime PM for CPU devices works little different, it is mostly used to manage hierarchical
CPU topology (PSCI OSI mode) to talk with genpd framework to manage the last CPU handling in
cluster.
It doesn’t really send IPI to wakeup CPU device (It don’t have .power_on/.power_off) callback
implemented which gets invoked from .runtime_resume callback. This behavior is aligned with
the upstream Kernel.
Yuanfang
>
>>
>> To address this, the series introduces:
>> - Identifying cluster-bound devices via a new `qcom,cpu-bound-components`
>> device tree property.
>> - Implementing deferred probing: if associated CPUs are offline during
>> probe, initialization is deferred until a CPU hotplug notifier detects
>> the CPU coming online.
>> - Utilizing `smp_call_function_single()` to ensure register accesses
>> (initialization, enablement, sysfs reads) are always executed on a
>> powered CPU within the target cluster.
>> - Extending the CoreSight link `enable` callback to pass the `cs_mode`.
>> This allows drivers to distinguish between SysFS and Perf modes and
>> apply mode-specific logic.
>>
>> Jie Gan (1):
>> arm64: dts: qcom: hamoa: add Coresight nodes for APSS debug block
>>
>> Yuanfang Zhang (11):
>> dt-bindings: arm: coresight: Add 'qcom,cpu-bound-components' property
>> coresight: Pass trace mode to link enable callback
>> coresight-funnel: Support CPU cluster funnel initialization
>> coresight-funnel: Defer probe when associated CPUs are offline
>> coresight-replicator: Support CPU cluster replicator initialization
>> coresight-replicator: Defer probe when associated CPUs are offline
>> coresight-replicator: Update management interface for CPU-bound devices
>> coresight-tmc: Support probe and initialization for CPU cluster TMCs
>> coresight-tmc-etf: Refactor enable function for CPU cluster ETF support
>> coresight-tmc: Update management interface for CPU-bound TMCs
>> coresight-tmc: Defer probe when associated CPUs are offline
>>
>> Verification:
>>
>> This series has been verified on sm8750.
>>
>> Test steps for delay probe:
>>
>> 1. limit the system to enable at most 6 CPU cores during boot.
>> 2. echo 1 >/sys/bus/cpu/devices/cpu6/online.
>> 3. check whether ETM6 and ETM7 have been probed.
>>
>> Test steps for sysfs mode:
>>
>> echo 1 >/sys/bus/coresight/devices/tmc_etf0/enable_sink
>> echo 1 >/sys/bus/coresight/devices/etm0/enable_source
>> echo 1 >/sys/bus/coresight/devices/etm6/enable_source
>> echo 0 >/sys/bus/coresight/devices/etm0/enable_source
>> echo 0 >/sys/bus/coresight/devicse/etm6/enable_source
>> echo 0 >/sys/bus/coresight/devices/tmc_etf0/enable_sink
>>
>> echo 1 >/sys/bus/coresight/devices/tmc_etf1/enable_sink
>> echo 1 >/sys/bus/coresight/devcies/etm0/enable_source
>> cat /dev/tmc_etf1 >/tmp/etf1.bin
>> echo 0 >/sys/bus/coresight/devices/etm0/enable_source
>> echo 0 >/sys/bus/coresight/devices/tmc_etf1/enable_sink
>>
>> echo 1 >/sys/bus/coresight/devices/tmc_etf2/enable_sink
>> echo 1 >/sys/bus/coresight/devices/etm6/enable_source
>> cat /dev/tmc_etf2 >/tmp/etf2.bin
>> echo 0 >/sys/bus/coresight/devices/etm6/enable_source
>> echo 0 >/sys/bus/coresight/devices/tmc_etf2/enable_sink
>>
>> Test steps for sysfs node:
>>
>> cat /sys/bus/coresight/devices/tmc_etf*/mgmt/*
>>
>> cat /sys/bus/coresight/devices/funnel*/funnel_ctrl
>>
>> cat /sys/bus/coresight/devices/replicator*/mgmt/*
>>
>> Test steps for perf mode:
>>
>> perf record -a -e cs_etm//k -- sleep 5
>>
>> Signed-off-by: Yuanfang Zhang <yuanfang.zhang@oss.qualcomm.com>
>> ---
>> Changes in v2:
>> - Use the qcom,cpu-bound-components device tree property to identify devices
>> bound to a cluster.
>> - Refactor commit message.
>> - Introduce a supported_cpus field in the drvdata structure to record the CPUs
>> that belong to the cluster where the local component resides.
>> - Link to v1: https://lore.kernel.org/r/20251027-cpu_cluster_component_pm-v1-0-31355ac588c2@oss.qualcomm.com
>>
>> ---
>> Jie Gan (1):
>> arm64: dts: qcom: hamoa: Add CoreSight nodes for APSS debug block
>>
>> Yuanfang Zhang (11):
>> dt-bindings: arm: coresight: Add 'qcom,cpu-bound-components' property
>> coresight-funnel: Support CPU cluster funnel initialization
>> coresight-funnel: Defer probe when associated CPUs are offline
>> coresight-replicator: Support CPU cluster replicator initialization
>> coresight-replicator: Defer probe when associated CPUs are offline
>> coresight-replicator: Update management interface for CPU-bound devices
>> coresight-tmc: Support probe and initialization for CPU cluster TMCs
>> coresight-tmc-etf: Refactor enable function for CPU cluster ETF support
>> coresight-tmc: Update management interface for CPU-bound TMCs
>> coresight-tmc: Defer probe when associated CPUs are offline
>> coresight: Pass trace mode to link enable callback
>>
>> .../bindings/arm/arm,coresight-dynamic-funnel.yaml | 5 +
>> .../arm/arm,coresight-dynamic-replicator.yaml | 5 +
>> .../devicetree/bindings/arm/arm,coresight-tmc.yaml | 5 +
>> arch/arm64/boot/dts/qcom/hamoa.dtsi | 926 +++++++++++++++++++++
>> arch/arm64/boot/dts/qcom/purwa.dtsi | 12 +
>> drivers/hwtracing/coresight/coresight-core.c | 7 +-
>> drivers/hwtracing/coresight/coresight-funnel.c | 258 +++++-
>> drivers/hwtracing/coresight/coresight-replicator.c | 341 +++++++-
>> drivers/hwtracing/coresight/coresight-tmc-core.c | 387 +++++++--
>> drivers/hwtracing/coresight/coresight-tmc-etf.c | 106 ++-
>> drivers/hwtracing/coresight/coresight-tmc.h | 10 +
>> drivers/hwtracing/coresight/coresight-tnoc.c | 3 +-
>> drivers/hwtracing/coresight/coresight-tpda.c | 3 +-
>> include/linux/coresight.h | 3 +-
>> 14 files changed, 1902 insertions(+), 169 deletions(-)
>> ---
>> base-commit: 008d3547aae5bc86fac3eda317489169c3fda112
>> change-id: 20251016-cpu_cluster_component_pm-ce518f510433
>>
>> Best regards,
>
next prev parent reply other threads:[~2025-12-18 16:18 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-18 8:09 [PATCH v2 00/12] coresight: Add CPU cluster funnel/replicator/tmc support Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 01/12] dt-bindings: arm: coresight: Add 'qcom,cpu-bound-components' property Yuanfang Zhang
2025-12-18 11:37 ` Sudeep Holla
2025-12-18 8:09 ` [PATCH v2 02/12] coresight-funnel: Support CPU cluster funnel initialization Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 03/12] coresight-funnel: Defer probe when associated CPUs are offline Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 04/12] coresight-replicator: Support CPU cluster replicator initialization Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 05/12] coresight-replicator: Defer probe when associated CPUs are offline Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 06/12] coresight-replicator: Update management interface for CPU-bound devices Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 07/12] coresight-tmc: Support probe and initialization for CPU cluster TMCs Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 08/12] coresight-tmc-etf: Refactor enable function for CPU cluster ETF support Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 09/12] coresight-tmc: Update management interface for CPU-bound TMCs Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 10/12] coresight-tmc: Defer probe when associated CPUs are offline Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 11/12] coresight: Pass trace mode to link enable callback Yuanfang Zhang
2025-12-18 8:09 ` [PATCH v2 12/12] arm64: dts: qcom: hamoa: Add CoreSight nodes for APSS debug block yuanfang Zhang
2025-12-18 9:32 ` [PATCH v2 00/12] coresight: Add CPU cluster funnel/replicator/tmc support Suzuki K Poulose
2025-12-18 16:18 ` yuanfang zhang [this message]
2025-12-18 17:04 ` Suzuki K Poulose
2025-12-19 10:06 ` Sudeep Holla
2025-12-18 10:40 ` Leo Yan
2025-12-19 1:50 ` yuanfang zhang
2025-12-19 10:42 ` Leo Yan
2025-12-18 11:33 ` Sudeep Holla
2025-12-19 2:13 ` yuanfang zhang
2025-12-19 10:21 ` Sudeep Holla
2025-12-19 10:28 ` Suzuki K Poulose
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=8cb8fad9-c54e-43a3-a769-5452119cc2a1@oss.qualcomm.com \
--to=yuanfang.zhang@oss.qualcomm.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=coresight@lists.linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=james.clark@linaro.org \
--cc=jie.gan@oss.qualcomm.com \
--cc=kernel@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=leo.yan@linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=maulik.shah@oss.qualcomm.com \
--cc=mike.leach@linaro.org \
--cc=robh@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=suzuki.poulose@arm.com \
/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