|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6 |
|
| #
4cf364ca |
| 06-Mar-2025 |
Yeoreum Yun <[email protected]> |
coresight: change coresight_trace_id_map's lock type to raw_spinlock_t
coresight_trace_id_map->lock can be acquired while coresight devices' drvdata_lock.
But the drvdata_lock can be raw_spinlock_t
coresight: change coresight_trace_id_map's lock type to raw_spinlock_t
coresight_trace_id_map->lock can be acquired while coresight devices' drvdata_lock.
But the drvdata_lock can be raw_spinlock_t (i.e) coresight-etm4x.
To address this, change type of coresight_trace_id_map->lock to raw_spinlock_t
Signed-off-by: Yeoreum Yun <[email protected]> Reviewed-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
26f060c1 |
| 06-Mar-2025 |
Yeoreum Yun <[email protected]> |
coresight: change coresight_device lock type to raw_spinlock_t
coresight_device->cscfg_csdev_lock can be held during __schedule() by perf_event_task_sched_out()/in().
Since coresight->cscfg_csdev_l
coresight: change coresight_device lock type to raw_spinlock_t
coresight_device->cscfg_csdev_lock can be held during __schedule() by perf_event_task_sched_out()/in().
Since coresight->cscfg_csdev_lock type is spinlock_t and perf_event_task_sched_out()/in() is called after acquiring rq_lock, which is raw_spinlock_t (an unsleepable lock), this poses an issue in PREEMPT_RT kernel where spinlock_t is sleepable.
To address this, change type of coresight_device->cscfg_csdev_lock from spinlock_t to raw_spinlock_t.
Reviewed-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: Yeoreum Yun <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
f78d206f |
| 03-Mar-2025 |
Jie Gan <[email protected]> |
Coresight: Add Coresight TMC Control Unit driver
The Coresight TMC Control Unit hosts miscellaneous configuration registers which control various features related to TMC ETR sink.
Based on the trac
Coresight: Add Coresight TMC Control Unit driver
The Coresight TMC Control Unit hosts miscellaneous configuration registers which control various features related to TMC ETR sink.
Based on the trace ID, which is programmed in the related CTCU ATID register of a specific ETR, trace data with that trace ID gets into the ETR buffer, while other trace data gets dropped.
Enabling source device sets one bit of the ATID register based on source device's trace ID. Disabling source device resets the bit according to the source device's trace ID.
Reviewed-by: James Clark <[email protected]> Signed-off-by: Jie Gan <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
7b365f05 |
| 03-Mar-2025 |
Jie Gan <[email protected]> |
Coresight: Change to read the trace ID from coresight_path
The source device can directly read the trace ID from the coresight_path which result in etm_read_alloc_trace_id and etm4_read_alloc_trace_
Coresight: Change to read the trace ID from coresight_path
The source device can directly read the trace ID from the coresight_path which result in etm_read_alloc_trace_id and etm4_read_alloc_trace_id being deleted.
Co-developed-by: James Clark <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Jie Gan <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
3c03c49b |
| 03-Mar-2025 |
Jie Gan <[email protected]> |
Coresight: Introduce a new struct coresight_path
Introduce a new strcuture, 'struct coresight_path', to store the data that utilized by the devices in the path. The coresight_path will be built/rele
Coresight: Introduce a new struct coresight_path
Introduce a new strcuture, 'struct coresight_path', to store the data that utilized by the devices in the path. The coresight_path will be built/released by coresight_build_path/coresight_release_path functions.
Signed-off-by: Jie Gan <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
c367a89d |
| 03-Mar-2025 |
Jie Gan <[email protected]> |
Coresight: Add trace_id function to retrieving the trace ID
Add 'trace_id' function pointer in coresight_ops. It's responsible for retrieving the device's trace ID.
Co-developed-by: James Clark <ja
Coresight: Add trace_id function to retrieving the trace ID
Add 'trace_id' function pointer in coresight_ops. It's responsible for retrieving the device's trace ID.
Co-developed-by: James Clark <[email protected]> Signed-off-by: James Clark <[email protected]> Reviewed-by: James Clark <[email protected]> Signed-off-by: Jie Gan <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
dc872c5f |
| 03-Mar-2025 |
Jie Gan <[email protected]> |
Coresight: Add support for new APB clock name
Add support for new APB clock-name. If the function fails to obtain the clock with the name "apb_pclk", it will attempt to acquire the clock with the na
Coresight: Add support for new APB clock name
Add support for new APB clock-name. If the function fails to obtain the clock with the name "apb_pclk", it will attempt to acquire the clock with the name "apb".
Reviewed-by: James Clark <[email protected]> Signed-off-by: Jie Gan <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13 |
|
| #
4ff6039f |
| 16-Jan-2025 |
Yuanfang Zhang <[email protected]> |
coresight-etm4x: add isb() before reading the TRCSTATR
As recommended by section 4.3.7 ("Synchronization when using system instructions to progrom the trace unit") of ARM IHI 0064H.b, the self-hoste
coresight-etm4x: add isb() before reading the TRCSTATR
As recommended by section 4.3.7 ("Synchronization when using system instructions to progrom the trace unit") of ARM IHI 0064H.b, the self-hosted trace analyzer must perform a Context synchronization event between writing to the TRCPRGCTLR and reading the TRCSTATR. Additionally, add an ISB between the each read of TRCSTATR on coresight_timeout() when using system instructions to program the trace unit.
Fixes: 1ab3bb9df5e3 ("coresight: etm4x: Add necessary synchronization for sysreg access") Signed-off-by: Yuanfang Zhang <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
46006ceb |
| 12-Feb-2025 |
Linu Cherian <[email protected]> |
coresight: core: Add provision for panic callbacks
Panic callback handlers allows coresight device drivers to sync relevant trace data and trace metadata to reserved memory regions so that they can
coresight: core: Add provision for panic callbacks
Panic callback handlers allows coresight device drivers to sync relevant trace data and trace metadata to reserved memory regions so that they can be retrieved later in the subsequent boot or in the crashdump kernel.
Signed-off-by: Linu Cherian <[email protected]> Reviewed-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3 |
|
| #
ec9903d6 |
| 13-Dec-2024 |
Tao Zhang <[email protected]> |
coresight: Add support for trace filtering by source
Some replicators have hard coded filtering of "trace" data, based on the source device. This is different from the trace filtering based on Trace
coresight: Add support for trace filtering by source
Some replicators have hard coded filtering of "trace" data, based on the source device. This is different from the trace filtering based on TraceID, available in the standard programmable replicators. e.g., Qualcomm replicators have filtering based on custom trace protocol format and is not programmable.
The source device could be connected to the replicator via intermediate components (e.g., a funnel). Thus we need platform information from the firmware tables to decide the source device corresponding to a given output port from the replicator. Given this affects "trace path building" and traversing the path back from the sink to source, add the concept of "filtering by source" to the generic coresight connection.
The specified source will be marked like below in the Devicetree. test-replicator { ... ... ... ... out-ports { ... ... ... ... port@0 { reg = <0>; xyz: endpoint { remote-endpoint = <&zyx>; filter-source = <&source_1>; <-- To specify the source to }; be filtered out here. };
port@1 { reg = <1>; abc: endpoint { remote-endpoint = <&cba>; filter-source = <&source_2>; <-- To specify the source to }; be filtered out here. }; }; };
Signed-off-by: Tao Zhang <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
62374ce1 |
| 13-Dec-2024 |
Tao Zhang <[email protected]> |
coresight: Add a helper to check if a device is source
Since there are a lot of places in the code to check whether the device is source, add a helper to check it.
Signed-off-by: Tao Zhang <quic_ta
coresight: Add a helper to check if a device is source
Since there are a lot of places in the code to check whether the device is source, add a helper to check it.
Signed-off-by: Tao Zhang <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.13-rc2, v6.13-rc1 |
|
| #
fd9b7e8e |
| 21-Nov-2024 |
Mao Jinlong <[email protected]> |
coresight: Add support to get static id for system trace sources
Dynamic trace id was introduced in coresight subsystem, so trace id is allocated dynamically. However, some hardware ATB source has s
coresight: Add support to get static id for system trace sources
Dynamic trace id was introduced in coresight subsystem, so trace id is allocated dynamically. However, some hardware ATB source has static trace id and it cannot be changed via software programming. For such source, it can call coresight_get_static_trace_id to get the fixed trace id from device node and pass id to coresight_trace_id_get_static_system_id to reserve the id.
Signed-off-by: Mao Jinlong <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
5aec7c06 |
| 28-Nov-2024 |
James Clark <[email protected]> |
coresight: Drop atomics in connection refcounts
These belong to the device being enabled or disabled and are only ever used inside the device's spinlock. Remove the atomics to not imply that there a
coresight: Drop atomics in connection refcounts
These belong to the device being enabled or disabled and are only ever used inside the device's spinlock. Remove the atomics to not imply that there are any other concurrent accesses.
If atomics were necessary I don't think they would have been enough anyway. There would be nothing to prevent an enable or disable running concurrently if not for the spinlock.
Signed-off-by: James Clark <[email protected]> Reviewed-by: Yeoreum Yun <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1 |
|
| #
988d40a4 |
| 22-Jul-2024 |
James Clark <[email protected]> |
coresight: Make trace ID map spinlock local to the map
Reduce contention on the lock by replacing the global lock with one for each map.
Signed-off-by: James Clark <[email protected]> Reviewed-by
coresight: Make trace ID map spinlock local to the map
Reduce contention on the lock by replacing the global lock with one for each map.
Signed-off-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
de0029fd |
| 22-Jul-2024 |
James Clark <[email protected]> |
coresight: Remove pending trace ID release mechanism
Pending the release of IDs was a way of managing concurrent sysfs and Perf sessions in a single global ID map. Perf may have finished while sysfs
coresight: Remove pending trace ID release mechanism
Pending the release of IDs was a way of managing concurrent sysfs and Perf sessions in a single global ID map. Perf may have finished while sysfs hadn't, and Perf shouldn't release the IDs in use by sysfs and vice versa.
Now that Perf uses its own exclusive ID maps, pending release doesn't result in any different behavior than just releasing all IDs when the last Perf session finishes. As part of the per-sink trace ID change, we would have still had to make the pending mechanism work on a per-sink basis, due to the overlapping ID allocations, so instead of making that more complicated, just remove it.
Signed-off-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
5ad628a7 |
| 22-Jul-2024 |
James Clark <[email protected]> |
coresight: Use per-sink trace ID maps for Perf sessions
This will allow sessions with more than CORESIGHT_TRACE_IDS_MAX ETMs as long as there are fewer than that many ETMs connected to each sink.
E
coresight: Use per-sink trace ID maps for Perf sessions
This will allow sessions with more than CORESIGHT_TRACE_IDS_MAX ETMs as long as there are fewer than that many ETMs connected to each sink.
Each sink owns its own trace ID map, and any Perf session connecting to that sink will allocate from it, even if the sink is currently in use by other users. This is similar to the existing behavior where the dynamic trace IDs are constant as long as there is any concurrent Perf session active. It's not completely optimal because slightly more IDs will be used than necessary, but the optimal solution involves tracking the PIDs of each session and allocating ID maps based on the session owner. This is difficult to do with the combination of per-thread and per-cpu modes and some scheduling issues. The complexity of this isn't likely to worth it because even with multiple users they'd just see a difference in the ordering of ID allocations rather than hitting any limits (unless the hardware does have too many ETMs connected to one sink).
Signed-off-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
d53c8253 |
| 22-Jul-2024 |
James Clark <[email protected]> |
coresight: Make CPU id map a property of a trace ID map
The global CPU ID mappings won't work for per-sink ID maps so move it to the ID map struct. coresight_trace_id_release_all_pending() is hard c
coresight: Make CPU id map a property of a trace ID map
The global CPU ID mappings won't work for per-sink ID maps so move it to the ID map struct. coresight_trace_id_release_all_pending() is hard coded to operate on the default map, but once Perf sessions use their own maps the pending release mechanism will be deleted. So it doesn't need to be extended to accept a trace ID map argument at this point.
Signed-off-by: James Clark <[email protected]> Reviewed-by: Mike Leach <[email protected]> Tested-by: Leo Yan <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
acb0184f |
| 22-Jul-2024 |
James Clark <[email protected]> |
coresight: Move struct coresight_trace_id_map to common header
The trace ID maps will need to be created and stored by the core and Perf code so move the definition up to the common header.
Reviewe
coresight: Move struct coresight_trace_id_map to common header
The trace ID maps will need to be created and stored by the core and Perf code so move the definition up to the common header.
Reviewed-by: Anshuman Khandual <[email protected]> Reviewed-by: Mike Leach <[email protected]> Signed-off-by: James Clark <[email protected]> Tested-by: Leo Yan <[email protected]> Tested-by: Ganapatrao Kulkarni <[email protected]> Signed-off-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6 |
|
| #
e8293395 |
| 24-Apr-2024 |
Jiapeng Chong <[email protected]> |
coresight: Remove duplicate linux/amba/bus.h header
./include/linux/coresight.h: linux/amba/bus.h is included more than once.
Reported-by: Abaci Robot <[email protected]> Closes: https://bugz
coresight: Remove duplicate linux/amba/bus.h header
./include/linux/coresight.h: linux/amba/bus.h is included more than once.
Reported-by: Abaci Robot <[email protected]> Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=8869 Signed-off-by: Jiapeng Chong <[email protected]> Reviewed-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1 |
|
| #
075b7cd7 |
| 14-Mar-2024 |
Anshuman Khandual <[email protected]> |
coresight: Add helpers registering/removing both AMBA and platform drivers
This adds two different helpers i.e coresight_init_driver()/remove_driver() enabling coresight devices to register or remov
coresight: Add helpers registering/removing both AMBA and platform drivers
This adds two different helpers i.e coresight_init_driver()/remove_driver() enabling coresight devices to register or remove AMBA and platform drivers. This changes replicator and funnel devices to use above new helpers.
Cc: Suzuki K Poulose <[email protected]> Cc: Mike Leach <[email protected]> Cc: James Clark <[email protected]> Cc: Leo Yan <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Reviewed-by: James Clark <[email protected]> Signed-off-by: Anshuman Khandual <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
|
Revision tags: v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3 |
|
| #
bcaabb95 |
| 29-Jan-2024 |
James Clark <[email protected]> |
coresight: Add helper for setting csdev->mode
Now that mode is in struct coresight_device, sets can be wrapped. This also allows us to add a sanity check that there have been no concurrent modificat
coresight: Add helper for setting csdev->mode
Now that mode is in struct coresight_device, sets can be wrapped. This also allows us to add a sanity check that there have been no concurrent modifications of mode. Currently all usages of local_set() were inside the device's spin locks so this new warning shouldn't be triggered.
coresight_take_mode() could maybe have been used in place of adding the warning, but there may be use cases which set the mode to the same mode which are valid but would fail in coresight_take_mode() because it requires the device to only be in the disabled state.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Suzuki K Poulose <[email protected]>
show more ...
|
| #
c95c2733 |
| 29-Jan-2024 |
James Clark <[email protected]> |
coresight: Add a helper for getting csdev->mode
Now that mode is in struct coresight_device accesses can be wrapped.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r
coresight: Add a helper for getting csdev->mode
Now that mode is in struct coresight_device accesses can be wrapped.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Suzuki K Poulose <[email protected]>
show more ...
|
| #
d724f652 |
| 29-Jan-2024 |
James Clark <[email protected]> |
coresight: Add helper for atomically taking the device
Now that mode is in struct coresight_device, this pattern can be wrapped in a helper.
Signed-off-by: James Clark <[email protected]> Link: h
coresight: Add helper for atomically taking the device
Now that mode is in struct coresight_device, this pattern can be wrapped in a helper.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Suzuki K Poulose <[email protected]>
show more ...
|
| #
053ad9ad |
| 29-Jan-2024 |
James Clark <[email protected]> |
coresight: Remove unused stubs
These are a bit annoying to keep up to date when the function signatures change. But if CONFIG_CORESIGHT isn't enabled, then they're not used anyway so just delete the
coresight: Remove unused stubs
These are a bit annoying to keep up to date when the function signatures change. But if CONFIG_CORESIGHT isn't enabled, then they're not used anyway so just delete them.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Suzuki K Poulose <[email protected]>
show more ...
|
| #
4545b38e |
| 29-Jan-2024 |
James Clark <[email protected]> |
coresight: Remove atomic type from refcnt
Refcnt is only ever accessed from either inside the coresight_mutex, or the device's spinlock, making the atomic type and atomic_dec_return() calls confusin
coresight: Remove atomic type from refcnt
Refcnt is only ever accessed from either inside the coresight_mutex, or the device's spinlock, making the atomic type and atomic_dec_return() calls confusing and unnecessary. The only point of synchronisation outside of these two types of locks is already done with a compare and swap on 'mode', which a comment has been added for.
There was one instance of refcnt being used outside of a lock in TPIU, but that can easily be fixed by making it the same as all the other devices and adding a spinlock. Potentially in the future all the refcounting and locking can be moved up into the core code, and all the mostly duplicate code from the individual devices can be removed.
Signed-off-by: James Clark <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Suzuki K Poulose <[email protected]>
show more ...
|