Hi Rob, I love your patch! Yet something to improve: [auto build test ERROR on arm64/for-next/core] [also build test ERROR on tip/perf/core arm-perf/for-next/perf v5.14-rc4 next-20210806] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Rob-Herring/arm64-userspace-counter-support/20210807-065350 base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core config: arm64-randconfig-s031-20210804 (attached as .config) compiler: aarch64-linux-gcc (GCC) 10.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-348-gf0e6938b-dirty # https://github.com/0day-ci/linux/commit/adad74b0c7d118897326c670eec1ec5ec6b9a2b6 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Rob-Herring/arm64-userspace-counter-support/20210807-065350 git checkout adad74b0c7d118897326c670eec1ec5ec6b9a2b6 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm64 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): arch/arm64/kernel/perf_event.c:143:41: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_RD' 143 | [C(L1D)][C(OP_READ)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:111:45: warning: initialized field overwritten [-Woverride-init] 111 | #define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR 0x41 | ^~~~ arch/arm64/kernel/perf_event.c:144:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR' 144 | [C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:111:45: note: (near initialization for 'armv8_vulcan_perf_cache_map[0][1][0]') 111 | #define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR 0x41 | ^~~~ arch/arm64/kernel/perf_event.c:144:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR' 144 | [C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:113:51: warning: initialized field overwritten [-Woverride-init] 113 | #define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR 0x43 | ^~~~ arch/arm64/kernel/perf_event.c:145:42: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR' 145 | [C(L1D)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:113:51: note: (near initialization for 'armv8_vulcan_perf_cache_map[0][1][1]') 113 | #define ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR 0x43 | ^~~~ arch/arm64/kernel/perf_event.c:145:42: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR' 145 | [C(L1D)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_CACHE_REFILL_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:122:44: warning: initialized field overwritten [-Woverride-init] 122 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD 0x4E | ^~~~ arch/arm64/kernel/perf_event.c:147:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD' 147 | [C(DTLB)][C(OP_READ)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:122:44: note: (near initialization for 'armv8_vulcan_perf_cache_map[3][0][0]') 122 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD 0x4E | ^~~~ arch/arm64/kernel/perf_event.c:147:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD' 147 | [C(DTLB)][C(OP_READ)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:123:44: warning: initialized field overwritten [-Woverride-init] 123 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR 0x4F | ^~~~ arch/arm64/kernel/perf_event.c:148:45: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR' 148 | [C(DTLB)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:123:44: note: (near initialization for 'armv8_vulcan_perf_cache_map[3][1][0]') 123 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR 0x4F | ^~~~ arch/arm64/kernel/perf_event.c:148:45: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR' 148 | [C(DTLB)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:120:50: warning: initialized field overwritten [-Woverride-init] 120 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD 0x4C | ^~~~ arch/arm64/kernel/perf_event.c:149:42: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD' 149 | [C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:120:50: note: (near initialization for 'armv8_vulcan_perf_cache_map[3][0][1]') 120 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD 0x4C | ^~~~ arch/arm64/kernel/perf_event.c:149:42: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD' 149 | [C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:121:50: warning: initialized field overwritten [-Woverride-init] 121 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR 0x4D | ^~~~ arch/arm64/kernel/perf_event.c:150:43: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR' 150 | [C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:121:50: note: (near initialization for 'armv8_vulcan_perf_cache_map[3][1][1]') 121 | #define ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR 0x4D | ^~~~ arch/arm64/kernel/perf_event.c:150:43: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR' 150 | [C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV8_IMPDEF_PERFCTR_L1D_TLB_REFILL_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:137:46: warning: initialized field overwritten [-Woverride-init] 137 | #define ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD 0x60 | ^~~~ arch/arm64/kernel/perf_event.c:152:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD' 152 | [C(NODE)][C(OP_READ)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:137:46: note: (near initialization for 'armv8_vulcan_perf_cache_map[6][0][0]') 137 | #define ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD 0x60 | ^~~~ arch/arm64/kernel/perf_event.c:152:44: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD' 152 | [C(NODE)][C(OP_READ)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:138:46: warning: initialized field overwritten [-Woverride-init] 138 | #define ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR 0x61 | ^~~~ arch/arm64/kernel/perf_event.c:153:45: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR' 153 | [C(NODE)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/include/asm/perf_event.h:138:46: note: (near initialization for 'armv8_vulcan_perf_cache_map[6][1][0]') 138 | #define ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR 0x61 | ^~~~ arch/arm64/kernel/perf_event.c:153:45: note: in expansion of macro 'ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR' 153 | [C(NODE)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/kernel/perf_event.c: In function 'armv8pmu_event_can_chain': >> arch/arm64/kernel/perf_event.c:403:29: error: 'PERF_EVENT_FLAG_USER_READ_CNT' undeclared (first use in this function) 403 | return !(event->hw.flags & PERF_EVENT_FLAG_USER_READ_CNT) && | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/kernel/perf_event.c:403:29: note: each undeclared identifier is reported only once for each function it appears in arch/arm64/kernel/perf_event.c: In function 'armv8pmu_start': >> arch/arm64/kernel/perf_event.c:825:31: error: 'struct perf_event_context' has no member named 'nr_user' 825 | if (atomic_read(&cpuctx->ctx.nr_user) || | ^ arch/arm64/kernel/perf_event.c:826:41: error: 'struct perf_event_context' has no member named 'nr_user' 826 | (task_ctx && atomic_read(&task_ctx->nr_user))) | ^~ arch/arm64/kernel/perf_event.c: In function 'armv8pmu_access_event_idx': arch/arm64/kernel/perf_event.c:980:26: error: 'PERF_EVENT_FLAG_USER_READ_CNT' undeclared (first use in this function) 980 | !(event->hw.flags & PERF_EVENT_FLAG_USER_READ_CNT)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/kernel/perf_event.c: In function 'armv8pmu_event_mapped': arch/arm64/kernel/perf_event.c:996:29: error: 'struct perf_event_context' has no member named 'nr_user' 996 | if (atomic_read(&event->ctx->nr_user) != 1) | ^~ arch/arm64/kernel/perf_event.c: In function 'armv8pmu_event_unmapped': arch/arm64/kernel/perf_event.c:1004:29: error: 'struct perf_event_context' has no member named 'nr_user' 1004 | if (atomic_read(&event->ctx->nr_user) != 1) | ^~ arch/arm64/kernel/perf_event.c: In function '__armv8_pmuv3_map_event': arch/arm64/kernel/perf_event.c:1117:22: error: 'PERF_EVENT_FLAG_USER_READ_CNT' undeclared (first use in this function) 1117 | event->hw.flags |= PERF_EVENT_FLAG_USER_READ_CNT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/arm64/kernel/perf_event.c: In function 'armv8_pmu_init': >> arch/arm64/kernel/perf_event.c:1251:28: error: assignment to 'void (*)(struct perf_event *, struct mm_struct *)' from incompatible pointer type 'void (*)(struct perf_event *)' [-Werror=incompatible-pointer-types] 1251 | cpu_pmu->pmu.event_mapped = armv8pmu_event_mapped; | ^ arch/arm64/kernel/perf_event.c:1252:30: error: assignment to 'void (*)(struct perf_event *, struct mm_struct *)' from incompatible pointer type 'void (*)(struct perf_event *)' [-Werror=incompatible-pointer-types] 1252 | cpu_pmu->pmu.event_unmapped = armv8pmu_event_unmapped; | ^ arch/arm64/kernel/perf_event.c: In function 'armv8pmu_event_can_chain': arch/arm64/kernel/perf_event.c:406:1: error: control reaches end of non-void function [-Werror=return-type] 406 | } | ^ cc1: some warnings being treated as errors vim +/PERF_EVENT_FLAG_USER_READ_CNT +403 arch/arm64/kernel/perf_event.c 398 399 static inline bool armv8pmu_event_can_chain(struct perf_event *event) 400 { 401 struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); 402 > 403 return !(event->hw.flags & PERF_EVENT_FLAG_USER_READ_CNT) && 404 armv8pmu_event_is_64bit(event) && 405 !armv8pmu_has_long_event(cpu_pmu); 406 } 407 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org