• Yicong Yang's avatar
    arm64: arm_pmuv3: Correctly extract and check the PMUVer · b782e8d0
    Yicong Yang authored
    Currently we're using "sbfx" to extract the PMUVer from ID_AA64DFR0_EL1
    and skip the init/reset if no PMU present when the extracted PMUVer is
    negative or is zero. However for PMUv3p8 the PMUVer will be 0b1000 and
    PMUVer extracted by "sbfx" will always be negative and we'll skip the
    init/reset in __init_el2_debug/reset_pmuserenr_el0 unexpectedly.
    
    So this patch use "ubfx" instead of "sbfx" to extract the PMUVer. If
    the PMUVer is implementation defined (0b1111) or not implemented(0b0000)
    then skip the reset/init. Previously we'll also skip the init/reset
    if the PMUVer is higher than the version we known (currently PMUv3p9),
    with this patch we'll only skip if the PMU is not implemented or
    implementation defined. This keeps consistence with how we probe
    the PMU in the driver with pmuv3_implemented().
    Signed-off-by: default avatarYicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20240411123030.7201-1-yangyicong@huawei.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    b782e8d0
el2_setup.h 9.01 KB