• Neil Leeder's avatar
    perf/smmuv3: Add arm64 smmuv3 pmu driver · 7d839b4b
    Neil Leeder authored
    Adds a new driver to support the SMMUv3 PMU and add it into the
    perf events framework.
    
    Each SMMU node may have multiple PMUs associated with it, each of
    which may support different events.
    
    SMMUv3 PMCG devices are named as smmuv3_pmcg_<phys_addr_page> where
    <phys_addr_page> is the physical page address of the SMMU PMCG
    wrapped to 4K boundary. For example, the PMCG at 0xff88840000 is
    named smmuv3_pmcg_ff88840
    
    Filtering by stream id is done by specifying filtering parameters
    with the event. options are:
       filter_enable    - 0 = no filtering, 1 = filtering enabled
       filter_span      - 0 = exact match, 1 = pattern match
       filter_stream_id - pattern to filter against
    
    Example: perf stat -e smmuv3_pmcg_ff88840/transaction,filter_enable=1,
                           filter_span=1,filter_stream_id=0x42/ -a netperf
    
    Applies filter pattern 0x42 to transaction events, which means events
    matching stream ids 0x42 & 0x43 are counted as only upper StreamID
    bits are required to match the given filter. Further filtering
    information is available in the SMMU documentation.
    
    SMMU events are not attributable to a CPU, so task mode and sampling
    are not supported.
    Signed-off-by: default avatarNeil Leeder <nleeder@codeaurora.org>
    Signed-off-by: default avatarShameer Kolothum <shameerali.kolothum.thodi@huawei.com>
    Reviewed-by: default avatarRobin Murphy <robin.murphy@arm.com>
    [will: fold in review feedback from Robin]
    [will: rewrite Kconfig text and allow building as a module]
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    7d839b4b
arm_smmuv3_pmu.c 21.4 KB