[PATCH v10 0/5] Add Qualcomm extended CTI support

Jie Gan jie.gan at oss.qualcomm.com
Tue Sep 1 23:04:01 PDT 2026



On 6/15/2026 8:32 PM, Yingchao Deng wrote:
> The Qualcomm extended CTI is a heavily parameterized version of ARM’s
> CSCTI. It allows a debugger to send to trigger events to a processor or to
> send a trigger event to one or more processors when a trigger event occurs
> on another processor on the same SoC, or even between SoCs.
> 
> Qualcomm extended CTI supports up to 128 triggers. And some of the register
> offsets are changed.
> 
> The commands to configure CTI triggers are the same as ARM's CTI.
> 

Gentle reminder

> Changes in v10:
> 1. rebase on top of linux-next-20260609.
> 2. patch 1: Add a bounds check in cti_allocate_trig_con() to guard
>     against in_sigs / out_sigs exceeding nr_trig_max; carry forward
>     Reviewed-by tag from v8/v9.
> 3. patch 2: Move __reg_addr(), cti_read/write_single_reg() helpers into
>     coresight-cti.h as static inlines; add cti_read/write_single_reg_index()
>     variants.
> 4. patch 3: Replace the direct CLAIMSET clear-to-zero with thin wrapper
>     helpers (cti_claim_device, cti_disclaim_device_unlocked,
>     cti_clear_self_claim_tag) that early-return when is_qcom_cti is set,
>     bypassing claim operations entirely for Qualcomm CTIs. Fold qcom-cti.h
>     into coresight-cti.h
> 5. patch 4: Add Reviewed-by tag.
> 6. patch 5: New patch. Document the banked trigger status and integration
>     test registers added in patch 4 (triginstatus[1-3], trigoutstatus[1-3],
>     ittrigin[1-3], ittrigout[1-3], ittrigoutack[1-3], ittriginack[1-3]).
>     Also document the previously undocumented base integration test
>     registers (itctrl, itchin, itchinack, ittrigin, ittriginack, itchout,
>     itchoutack, ittrigout, ittrigoutack) introduced in kernel 5.7.
> 
> Changes in v9:
> 1. rebase on top of linux-next-20260518.
> 2. patch 2: Replace the "encode index into offset high bits" scheme with a cleaner
>     __reg_addr(drvdata, off, index) helper; update cti_read/write_single_reg() to
>     take separate off and index arguments; add u32 index field to cs_off_attribute
>     (moved to coresight-priv.h); drop CTI_REG_SET/GET/CLR_NR macros and
>     <linux/bitfield.h>; update commit subject accordingly.
> 3. patch 4: Add three index-aware sysfs macros (coresight_cti_reg_index,
>     _rw_index, _wo_index); replace string-matching visibility logic with
>     cs_off_attribute.index field check;
> Link to v8 - https://lore.kernel.org/all/20260426-extended-cti-v8-0-23b900a4902f@oss.qualcomm.com/
> 
> Changes in v8:
> 1. Rebased on top of linux-next-20260424.
> 2. patch 1: Use devm_bitmap_zalloc() with nr_trig_max instead of per-connection
>     signal counts; add bitmap_zalloc() for filter trigger group.
> 3. patch 2: Add #include <linux/bitfield.h>; move CTIINOUTEN_MAX expansion
>     to patch3.
> 4. patch 3: wrap CLAIMSET clear with CS_UNLOCK/CS_LOCK; move CTIINOUTEN_MAX
>     to 128 here with comment; fix macro alignment in qcom-cti.h.
> 5. patch 4: Make qcom_suffix_registers[] static.
> Link to v7 - https://lore.kernel.org/all/20260325-extended_cti-v7-0-bb406005089f@oss.qualcomm.com/
> 
> Changes in v7:
> 1. Split the extended CTI support into smaller, logically independent
>     patches to improve reviewability.
> 2. Removed the dual offset-array based register access used in v6 for
>     standard and Qualcomm CTIs. Register addressing is now unified through
>     a single code path by encoding the register index together with the base
>     offset and applying variant-specific translation at the final MMIO
>     access point.
> 3. Removed ext_reg_sel, extend the CTI sysfs interface to expose banked
>     register instances on Qualcomm CTIs only. Numbered sysfs nodes are
>     hidden on standard ARM CTIs, and on Qualcomm CTIs their visibility is
>     derived from nr_trig_max (32 triggers per bank), ensuring that only
>     registers backed by hardware are exposed.
> Link to v6 - https://lore.kernel.org/all/20251202-extended_cti-v6-0-ab68bb15c4f5@oss.qualcomm.com/
> 
> Changes in v6:
> 1. Rename regs_idx to ext_reg_sel and add information in documentation
>     file.
> 2. Reset CLAIMSET to zero for qcom-cti during probe.
> 3. Retrieve idx value under spinlock.
> 4. Use yearless copyright for qcom-cti.h.
> Link to v5 - https://lore.kernel.org/all/20251020-extended_cti-v5-0-6f193da2d467@oss.qualcomm.com/
> 
> Changes in v5:
> 1. Move common part in qcom-cti.h to coresight-cti.h.
> 2. Convert trigger usage fields to dynamic bitmaps and arrays.
> 3. Fix holes in struct cti_config to save some space.
> 4. Revert the previous changes related to the claim tag in
>     cti_enable/disable_hw.
> Link to v4 - https://lore.kernel.org/linux-arm-msm/20250902-extended_cti-v4-1-7677de04b416@oss.qualcomm.com/
> 
> Changes in v4:
> 1. Read the DEVARCH registers to identify Qualcomm CTI.
> 2. Add a reg_idx node, and refactor the coresight_cti_reg_show() and
> coresight_cti_reg_store() functions accordingly.
> 3. The register offsets specific to Qualcomm CTI are moved to qcom_cti.h.
> Link to v3 - https://lore.kernel.org/linux-arm-msm/20250722081405.2947294-1-quic_jinlmao@quicinc.com/
> 
> Changes in v3:
> 1. Rename is_extended_cti() to of_is_extended_cti().
> 2. Add the missing 'i' when write the CTI trigger registers.
> 3. Convert the multi-line output in sysfs to single line.
> 4. Initialize offset arrays using designated initializer.
> Link to V2 - https://lore.kernel.org/all/20250429071841.1158315-3-quic_jinlmao@quicinc.com/
> 
> Changes in V2:
> 1. Add enum for compatible items.
> 2. Move offset arrays to coresight-cti-core
> 
> Signed-off-by: Yingchao Deng <yingchao.deng at oss.qualcomm.com>
> ---
> Yingchao Deng (5):
>        coresight: cti: Convert trigger usage fields to dynamic
>        coresight: cti: use __reg_addr() helper for register access
>        coresight: cti: add Qualcomm extended CTI identification and quirks
>        coresight: cti: expose banked sysfs registers for Qualcomm extended CTI
>        coresight: cti: document banked and missing base CTI sysfs registers
> 
>   .../ABI/testing/sysfs-bus-coresight-devices-cti    |  90 ++++++++++++
>   drivers/hwtracing/coresight/coresight-cti-core.c   | 153 ++++++++++++++-------
>   .../hwtracing/coresight/coresight-cti-platform.c   |  26 ++--
>   drivers/hwtracing/coresight/coresight-cti-sysfs.c  |  89 ++++++++++--
>   drivers/hwtracing/coresight/coresight-cti.h        | 122 ++++++++++++++--
>   drivers/hwtracing/coresight/coresight-priv.h       |   4 +-
>   6 files changed, 404 insertions(+), 80 deletions(-)
> ---
> base-commit: 49e02880ec0a8c378e811bc9d85da188d7c6204c
> change-id: 20260611-extended_cti-dd4971ef98fa
> 
> Best regards,




More information about the linux-arm-kernel mailing list