Re: [PATCH v3 5/7] perf: arm_pmuv3: Add pmuv3_event_implemented()
From: kernel test robot
Date: Sun Oct 25 2026 - 20:44:21 EST
Hi Amir,
kernel test robot noticed the following build errors:
[auto build test ERROR on 343cfcbb3ecfdb80aa576a428cfa3b65ad783842]
url: https://github.com/intel-lab-lkp/linux/commits/Amir-Ayupov/coresight-etm4x-Fix-event-count-decoding/20261024-233901
base: 343cfcbb3ecfdb80aa576a428cfa3b65ad783842
patch link: https://lore.kernel.org/r/cd3e622681f7254216b0488f09d2cb2d91a2d8ca.1792907333.git.aaupov%40fb.com
patch subject: [PATCH v3 5/7] perf: arm_pmuv3: Add pmuv3_event_implemented()
config: arm64-randconfig-1003-20261026 (https://download.01.org/0day-ci/archive/20261026/202610260838.P0WtLZz6-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261026/202610260838.P0WtLZz6-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610260838.P0WtLZz6-lkp@xxxxxxxxx/
All errors (new ones prefixed by >>):
In file included from include/kvm/arm_pmu.h:11,
from arch/arm64/include/asm/kvm_host.h:38,
from arch/arm64/include/asm/arm_pmuv3.h:9,
from arch/arm64/kernel/cpufeature.c:80:
include/linux/perf/arm_pmuv3.h: In function 'pmuv3_event_implemented':
include/linux/perf/arm_pmuv3.h:333:19: error: implicit declaration of function 'pmuv3_implemented'; did you mean 'pmuv3_event_implemented'? [-Werror=implicit-function-declaration]
if (id >= 64 || !pmuv3_implemented(read_pmuver()))
^~~~~~~~~~~~~~~~~
pmuv3_event_implemented
include/linux/perf/arm_pmuv3.h:333:37: error: implicit declaration of function 'read_pmuver'; did you mean 'read_tcr'? [-Werror=implicit-function-declaration]
if (id >= 64 || !pmuv3_implemented(read_pmuver()))
^~~~~~~~~~~
read_tcr
include/linux/perf/arm_pmuv3.h:336:21: error: implicit declaration of function 'read_pmceid0'; did you mean 'read_cpuid'? [-Werror=implicit-function-declaration]
pmceid = id < 32 ? read_pmceid0() : read_pmceid1();
^~~~~~~~~~~~
read_cpuid
include/linux/perf/arm_pmuv3.h:336:38: error: implicit declaration of function 'read_pmceid1'; did you mean 'read_cpuid'? [-Werror=implicit-function-declaration]
pmceid = id < 32 ? read_pmceid0() : read_pmceid1();
^~~~~~~~~~~~
read_cpuid
In file included from arch/arm64/kernel/cpufeature.c:80:
arch/arm64/include/asm/arm_pmuv3.h: At top level:
>> arch/arm64/include/asm/arm_pmuv3.h:49:19: error: conflicting types for 'read_pmuver'
static inline u32 read_pmuver(void)
^~~~~~~~~~~
In file included from include/kvm/arm_pmu.h:11,
from arch/arm64/include/asm/kvm_host.h:38,
from arch/arm64/include/asm/arm_pmuv3.h:9,
from arch/arm64/kernel/cpufeature.c:80:
include/linux/perf/arm_pmuv3.h:333:37: note: previous implicit declaration of 'read_pmuver' was here
if (id >= 64 || !pmuv3_implemented(read_pmuver()))
^~~~~~~~~~~
In file included from arch/arm64/kernel/cpufeature.c:80:
>> arch/arm64/include/asm/arm_pmuv3.h:160:19: error: conflicting types for 'read_pmceid0'
static inline u64 read_pmceid0(void)
^~~~~~~~~~~~
In file included from include/kvm/arm_pmu.h:11,
from arch/arm64/include/asm/kvm_host.h:38,
from arch/arm64/include/asm/arm_pmuv3.h:9,
from arch/arm64/kernel/cpufeature.c:80:
include/linux/perf/arm_pmuv3.h:336:21: note: previous implicit declaration of 'read_pmceid0' was here
pmceid = id < 32 ? read_pmceid0() : read_pmceid1();
^~~~~~~~~~~~
In file included from arch/arm64/kernel/cpufeature.c:80:
>> arch/arm64/include/asm/arm_pmuv3.h:165:19: error: conflicting types for 'read_pmceid1'
static inline u64 read_pmceid1(void)
^~~~~~~~~~~~
In file included from include/kvm/arm_pmu.h:11,
from arch/arm64/include/asm/kvm_host.h:38,
from arch/arm64/include/asm/arm_pmuv3.h:9,
from arch/arm64/kernel/cpufeature.c:80:
include/linux/perf/arm_pmuv3.h:336:38: note: previous implicit declaration of 'read_pmceid1' was here
pmceid = id < 32 ? read_pmceid0() : read_pmceid1();
^~~~~~~~~~~~
In file included from arch/arm64/kernel/cpufeature.c:80:
>> arch/arm64/include/asm/arm_pmuv3.h:170:20: error: conflicting types for 'pmuv3_implemented'
static inline bool pmuv3_implemented(int pmuver)
^~~~~~~~~~~~~~~~~
In file included from include/kvm/arm_pmu.h:11,
from arch/arm64/include/asm/kvm_host.h:38,
from arch/arm64/include/asm/arm_pmuv3.h:9,
from arch/arm64/kernel/cpufeature.c:80:
include/linux/perf/arm_pmuv3.h:333:19: note: previous implicit declaration of 'pmuv3_implemented' was here
if (id >= 64 || !pmuv3_implemented(read_pmuver()))
^~~~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3364:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ISAR2_EL1, LUT, LUT6, CAP_HWCAP, KERNEL_HWCAP_SVE_LUT6),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3364:21: note: (near initialization for 'arm64_elf_hwcaps[44].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ISAR2_EL1, LUT, LUT6, CAP_HWCAP, KERNEL_HWCAP_SVE_LUT6),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3366:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p3, CAP_HWCAP, KERNEL_HWCAP_SVE2P3),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3366:21: note: (near initialization for 'arm64_elf_hwcaps[46].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p3, CAP_HWCAP, KERNEL_HWCAP_SVE2P3),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3367:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p2, CAP_HWCAP, KERNEL_HWCAP_SVE2P2),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3367:21: note: (near initialization for 'arm64_elf_hwcaps[47].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p2, CAP_HWCAP, KERNEL_HWCAP_SVE2P2),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3368:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p1, CAP_HWCAP, KERNEL_HWCAP_SVE2P1),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3368:21: note: (near initialization for 'arm64_elf_hwcaps[48].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p1, CAP_HWCAP, KERNEL_HWCAP_SVE2P1),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3369:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2, CAP_HWCAP, KERNEL_HWCAP_SVE2),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3369:21: note: (near initialization for 'arm64_elf_hwcaps[49].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2, CAP_HWCAP, KERNEL_HWCAP_SVE2),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3370:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEAES),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3370:21: note: (near initialization for 'arm64_elf_hwcaps[50].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEAES),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3371:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, PMULL128, CAP_HWCAP, KERNEL_HWCAP_SVEPMULL),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3371:21: note: (near initialization for 'arm64_elf_hwcaps[51].matches')
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, PMULL128, CAP_HWCAP, KERNEL_HWCAP_SVEPMULL),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3372:21: warning: initialized field overwritten [-Woverride-init]
HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, AES2, CAP_HWCAP, KERNEL_HWCAP_SVE_AES2),
^~~~~~~~~~~~~~~
arch/arm64/kernel/cpufeature.c:3273:14: note: in definition of macro 'HWCAP_CAP_MATCH_ID'
.matches = match, \
^~~~~
arch/arm64/kernel/cpufeature.c:3372:21: note: (near initialization for 'arm64_elf_hwcaps[52].matches')
vim +/read_pmuver +49 arch/arm64/include/asm/arm_pmuv3.h
df29ddf4f04b00 Marc Zyngier 2023-03-17 48
df29ddf4f04b00 Marc Zyngier 2023-03-17 @49 static inline u32 read_pmuver(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 50 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 51 u64 dfr0 = read_sysreg(id_aa64dfr0_el1);
df29ddf4f04b00 Marc Zyngier 2023-03-17 52
df29ddf4f04b00 Marc Zyngier 2023-03-17 53 return cpuid_feature_extract_unsigned_field(dfr0,
df29ddf4f04b00 Marc Zyngier 2023-03-17 54 ID_AA64DFR0_EL1_PMUVer_SHIFT);
df29ddf4f04b00 Marc Zyngier 2023-03-17 55 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 56
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 57) static inline bool pmuv3_has_icntr(void)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 58) {
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 59) u64 dfr1 = read_sysreg(id_aa64dfr1_el1);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 60)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 61) return !!cpuid_feature_extract_unsigned_field(dfr1,
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 62) ID_AA64DFR1_EL1_PMICNTR_SHIFT);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 63) }
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 64)
403edfa436286b Ilkka Koskinen 2023-11-02 65 static inline void write_pmcr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 66 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 67 write_sysreg(val, pmcr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 68 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 69
403edfa436286b Ilkka Koskinen 2023-11-02 70 static inline u64 read_pmcr(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 71 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 72 return read_sysreg(pmcr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 73 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 74
df29ddf4f04b00 Marc Zyngier 2023-03-17 75 static inline void write_pmselr(u32 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 76 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 77 write_sysreg(val, pmselr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 78 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 79
df29ddf4f04b00 Marc Zyngier 2023-03-17 80 static inline void write_pmccntr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 81 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 82 write_sysreg(val, pmccntr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 83 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 84
df29ddf4f04b00 Marc Zyngier 2023-03-17 85 static inline u64 read_pmccntr(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 86 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 87 return read_sysreg(pmccntr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 88 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 89
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 90) static inline void write_pmicntr(u64 val)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 91) {
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 92) write_sysreg_s(val, SYS_PMICNTR_EL0);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 93) }
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 94)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 95) static inline u64 read_pmicntr(void)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 96) {
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 97) return read_sysreg_s(SYS_PMICNTR_EL0);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 98) }
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 99)
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 100) static inline void write_pmcntenset(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 101 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 102 write_sysreg(val, pmcntenset_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 103 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 104
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 105) static inline void write_pmcntenclr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 106 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 107 write_sysreg(val, pmcntenclr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 108 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 109
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 110) static inline void write_pmintenset(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 111 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 112 write_sysreg(val, pmintenset_el1);
df29ddf4f04b00 Marc Zyngier 2023-03-17 113 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 114
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 115) static inline void write_pmintenclr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 116 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 117 write_sysreg(val, pmintenclr_el1);
df29ddf4f04b00 Marc Zyngier 2023-03-17 118 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 119
403edfa436286b Ilkka Koskinen 2023-11-02 120 static inline void write_pmccfiltr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 121 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 122 write_sysreg(val, pmccfiltr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 123 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 124
741ee5284551cf Rob Herring (Arm 2024-07-31 125) static inline u64 read_pmccfiltr(void)
741ee5284551cf Rob Herring (Arm 2024-07-31 126) {
741ee5284551cf Rob Herring (Arm 2024-07-31 127) return read_sysreg(pmccfiltr_el0);
741ee5284551cf Rob Herring (Arm 2024-07-31 128) }
741ee5284551cf Rob Herring (Arm 2024-07-31 129)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 130) static inline void write_pmicfiltr(u64 val)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 131) {
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 132) write_sysreg_s(val, SYS_PMICFILTR_EL0);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 133) }
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 134)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 135) static inline u64 read_pmicfiltr(void)
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 136) {
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 137) return read_sysreg_s(SYS_PMICFILTR_EL0);
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 138) }
d8226d8cfbaf5e Rob Herring (Arm 2024-07-31 139)
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 140) static inline void write_pmovsclr(u64 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 141 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 142 write_sysreg(val, pmovsclr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 143 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 144
a4a6e2078d85a9 Rob Herring (Arm 2024-07-31 145) static inline u64 read_pmovsclr(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 146 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 147 return read_sysreg(pmovsclr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 148 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 149
df29ddf4f04b00 Marc Zyngier 2023-03-17 150 static inline void write_pmuserenr(u32 val)
df29ddf4f04b00 Marc Zyngier 2023-03-17 151 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 152 write_sysreg(val, pmuserenr_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 153 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 154
0bbff9ed81654d Rob Herring (Arm 2024-10-02 155) static inline void write_pmuacr(u64 val)
0bbff9ed81654d Rob Herring (Arm 2024-10-02 156) {
0bbff9ed81654d Rob Herring (Arm 2024-10-02 157) write_sysreg_s(val, SYS_PMUACR_EL1);
0bbff9ed81654d Rob Herring (Arm 2024-10-02 158) }
0bbff9ed81654d Rob Herring (Arm 2024-10-02 159)
403edfa436286b Ilkka Koskinen 2023-11-02 @160 static inline u64 read_pmceid0(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 161 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 162 return read_sysreg(pmceid0_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 163 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 164
403edfa436286b Ilkka Koskinen 2023-11-02 @165 static inline u64 read_pmceid1(void)
df29ddf4f04b00 Marc Zyngier 2023-03-17 166 {
df29ddf4f04b00 Marc Zyngier 2023-03-17 167 return read_sysreg(pmceid1_el0);
df29ddf4f04b00 Marc Zyngier 2023-03-17 168 }
df29ddf4f04b00 Marc Zyngier 2023-03-17 169
711432770f78e5 Zaid Al-Bassam 2023-03-17 @170 static inline bool pmuv3_implemented(int pmuver)
711432770f78e5 Zaid Al-Bassam 2023-03-17 171 {
711432770f78e5 Zaid Al-Bassam 2023-03-17 172 return !(pmuver == ID_AA64DFR0_EL1_PMUVer_IMP_DEF ||
711432770f78e5 Zaid Al-Bassam 2023-03-17 173 pmuver == ID_AA64DFR0_EL1_PMUVer_NI);
711432770f78e5 Zaid Al-Bassam 2023-03-17 174 }
711432770f78e5 Zaid Al-Bassam 2023-03-17 175
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki