• Suzuki K Poulose's avatar
    coresight: trbe: Prohibit trace before disabling TRBE · dcfecfa4
    Suzuki K Poulose authored
    When the TRBE generates an IRQ, we stop the TRBE, collect the trace
    and then reprogram the TRBE with the updated buffer pointers, whenever
    possible. We might also leave the TRBE disabled, if there is not
    enough space left in the buffer. However, we do not touch the ETE at
    all during all of this. This means the ETE is only disabled when
    the event is disabled later (via irq_work). This is incorrect, as the
    ETE trace is still ON without actually being captured and may be routed
    to the ATB (even if it is for a short duration).
    
    So, we move the CPU into trace prohibited state always before disabling
    the TRBE, upon entering the IRQ handler. The state is restored if the
    TRBE is enabled back. Otherwise the trace remains prohibited.
    
    Since, the ETM/ETE driver now controls the TRFCR_EL1 per session, the
    tracing can be restored/enabled back when the event is rescheduled
    in.
    
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20210923143919.2944311-6-suzuki.poulose@arm.comSigned-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    dcfecfa4
coresight-self-hosted-trace.h 686 Bytes