mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
coresight: trace-id: Add API to dynamically assign Trace ID values
The existing mechanism to assign Trace ID values to sources is limited and does not scale for larger multicore / multi trace source systems. The API introduces functions that reserve IDs based on availabilty represented by a coresight_trace_id_map structure. This records the used and free IDs in a bitmap. CPU bound sources such as ETMs use the coresight_trace_id_get_cpu_id coresight_trace_id_put_cpu_id pair of functions. The API will record the ID associated with the CPU. This ensures that the same ID will be re-used while perf events are active on the CPU. The put_cpu_id function will pend release of the ID until all perf cs_etm sessions are complete. For backward compatibility the functions will attempt to use the same CPU IDs as the legacy system would have used if these are still available. Non-cpu sources, such as the STM can use coresight_trace_id_get_system_id / coresight_trace_id_put_system_id. Signed-off-by: Mike Leach <mike.leach@linaro.org> [ Fix checkpatch warning in drivers/hwtracing/coresight/coresight-trace-id.c ] Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20230116124928.5440-2-mike.leach@linaro.org
This commit is contained in:
committed by
Suzuki K Poulose
parent
3f3047493b
commit
338a588e9d
@@ -10,6 +10,16 @@
|
||||
#define CORESIGHT_ETM_PMU_NAME "cs_etm"
|
||||
#define CORESIGHT_ETM_PMU_SEED 0x10
|
||||
|
||||
/*
|
||||
* The legacy Trace ID system based on fixed calculation from the cpu
|
||||
* number. This has been replaced by drivers using a dynamic allocation
|
||||
* system - but need to retain the legacy algorithm for backward comparibility
|
||||
* in certain situations:-
|
||||
* a) new perf running on older systems that generate the legacy mapping
|
||||
* b) older tools that may not update at the same time as the kernel.
|
||||
*/
|
||||
#define CORESIGHT_LEGACY_CPU_TRACE_ID(cpu) (0x10 + (cpu * 2))
|
||||
|
||||
/*
|
||||
* Below are the definition of bit offsets for perf option, and works as
|
||||
* arbitrary values for all ETM versions.
|
||||
|
||||
Reference in New Issue
Block a user