• L
    perf cs-etm: Set sample flags for exception return packet · 173e65f6
    Leo Yan 提交于
    When return from exception, we need to distinguish if it's system call
    return or for other type exceptions for setting sample flags.  Due to
    the exception return packet doesn't contain exception number, so we
    cannot decide sample flags based on exception number.
    
    On the other hand, the exception return packet is followed by an
    instruction range packet; this range packet deliveries the start address
    after exception handling, we can check if it is a SVC instruction just
    before the start address.  If there has one SVC instruction is found
    ahead the return address, this means it's an exception return for system
    call; otherwise it is an normal return for other exceptions.
    
    This patch is to set sample flags for exception return packet, firstly
    it simply set sample flags as PERF_IP_FLAG_INTERRUPT for all exception
    returns since at this point it doesn't know what's exactly the exception
    type.  We will defer to decide if it's an exception return for system
    call when the next instruction range packet comes, it checks if there
    has one SVC instruction prior to the start address and if so we will
    change sample flags to PERF_IP_FLAG_SYSCALLRET for system call return.
    Signed-off-by: NLeo Yan <leo.yan@linaro.org>
    Reviewed-by: NMathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Robert Walker <robert.walker@arm.com>
    Cc: Suzuki K Poulouse <suzuki.poulose@arm.com>
    Cc: coresight ml <coresight@lists.linaro.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/20190129122842.32041-9-leo.yan@linaro.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    173e65f6
cs-etm.c 51.5 KB