Hi Peter, I love your patch! Yet something to improve:
[auto build test ERROR on tip/perf/core] [also build test ERROR on arm64/for-next/core arm-perf/for-next/perf linus/master v5.7-rc5 next-20200512] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Peter-Zijlstra/arm64-perf-Proper-cap_user_time-support/20200512-205141 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 059c6d68cfc5f85ba3ab71d71a6de380016f7936 config: arm64-allyesconfig (attached as .config) compiler: aarch64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <l...@intel.com> All errors (new ones prefixed by >>): arch/arm64/kernel/perf_event.c: In function 'arch_perf_update_userpage': >> arch/arm64/kernel/perf_event.c:1205:12: error: 'struct perf_event_mmap_page' >> has no member named 'shift' 1205 | if (userpg->shift == 32) { | ^~ arch/arm64/kernel/perf_event.c:1206:9: error: 'struct perf_event_mmap_page' has no member named 'shift' 1206 | userpg->shift = 31; | ^~ vim +1205 arch/arm64/kernel/perf_event.c 1165 1166 void arch_perf_update_userpage(struct perf_event *event, 1167 struct perf_event_mmap_page *userpg, u64 now) 1168 { 1169 struct clock_read_data *rd; 1170 unsigned int seq; 1171 1172 /* 1173 * Internal timekeeping for enabled/running/stopped times 1174 * is always computed with the sched_clock. 1175 */ 1176 userpg->cap_user_time = 1; 1177 userpg->cap_user_time_zero = 1; 1178 1179 do { 1180 rd = sched_clock_read_begin(&seq); 1181 1182 userpg->time_mult = rd->mult; 1183 userpg->time_shift = rd->shift; 1184 userpg->time_zero = rd->epoch_ns; 1185 1186 /* 1187 * This isn't strictly correct, the ARM64 counter can be 1188 * 'short' and then we get funnies when it wraps. The correct 1189 * thing would be to extend the perf ABI with a cycle and mask 1190 * value, but because wrapping on ARM64 is very rare in 1191 * practise this 'works'. 1192 */ 1193 userpg->time_zero -= (rd->epoch_cyc * rd->mult) >> rd->shift; 1194 1195 } while (sched_clock_read_retry(seq)); 1196 1197 userpg->time_offset = userpg->time_zero - now; 1198 1199 /* 1200 * time_shift is not expected to be greater than 31 due to 1201 * the original published conversion algorithm shifting a 1202 * 32-bit value (now specifies a 64-bit value) - refer 1203 * perf_event_mmap_page documentation in perf_event.h. 1204 */ > 1205 if (userpg->shift == 32) { 1206 userpg->shift = 31; 1207 userpg->time_mult >>= 1; 1208 } 1209 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip