• Anshuman Khandual's avatar
    drivers: perf: arm_pmuv3: Read PMMIR_EL1 unconditionally · 58f8fc57
    Anshuman Khandual authored
    Currently the PMUv3 driver only reads PMMIR_EL1 if the PMU implements
    FEAT_PMUv3p4 and the STALL_SLOT event, but the check for STALL_SLOT event
    isn't necessary and can be removed.
    
    The check for STALL_SLOT event was introduced with the read of PMMIR_EL1 in
    commit f5be3a61 ("arm64: perf: Add support caps under sysfs")
    
    When this logic was written, the ARM ARM said:
    
    | If STALL_SLOT is not implemented, it is IMPLEMENTATION DEFINED whether
    | the PMMIR System registers are implemented.
    
    ... and thus the driver had to check for STALL_SLOT event to verify that
    PMMIR_EL1 was implemented and accesses to PMMIR_EL1 would not be UNDEFINED.
    
    Subsequently, the architecture was retrospectively tightened to require
    that any FEAT_PMUv3p4 implementation implements PMMIR_EL1. Since the G.b
    release of the ARM ARM, the wording regarding STALL_SLOT event has been
    removed, and the description of PMMIR_EL1 says:
    
    | This register is present only when FEAT_PMUv3p4 is implemented.
    
    Drop the unnecessary check for STALL_SLOT event when reading PMMIR_EL1.
    
    Cc: Will Deacon <will@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Reviewed-by: default avatarJames Clark <james.clark@arm.com>
    Signed-off-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
    Link: https://lore.kernel.org/r/20231013024354.1289070-1-anshuman.khandual@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    58f8fc57
arm_pmuv3.c 43.7 KB