From: kernel test robot <lkp@intel.com> To: Anshuman Khandual <anshuman.khandual@arm.com>, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peterz@infradead.org, acme@kernel.org, mark.rutland@arm.com, will@kernel.org, catalin.marinas@arm.com Cc: kbuild-all@lists.01.org, Anshuman Khandual <anshuman.khandual@arm.com>, James Clark <james.clark@arm.com>, Rob Herring <robh@kernel.org>, Marc Zyngier <maz@kernel.org>, Ingo Molnar <mingo@redhat.com> Subject: Re: [PATCH V2 6/7] arm64/perf: Add BRBE driver Date: Thu, 8 Sep 2022 17:23:49 +0800 [thread overview] Message-ID: <202209081717.00OiPpzm-lkp@intel.com> (raw) In-Reply-To: <20220908051046.465307-7-anshuman.khandual@arm.com> Hi Anshuman, Thank you for the patch! Yet something to improve: [auto build test ERROR on acme/perf/core] [also build test ERROR on tip/perf/core arm64/for-next/core linus/master v6.0-rc4 next-20220907] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Anshuman-Khandual/arm64-perf-Enable-branch-stack-sampling/20220908-131425 base: https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/core config: arm64-buildonly-randconfig-r002-20220907 (https://download.01.org/0day-ci/archive/20220908/202209081717.00OiPpzm-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/5b70e42a715860504646cb5bd1788ddb823dd50b git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Anshuman-Khandual/arm64-perf-Enable-branch-stack-sampling/20220908-131425 git checkout 5b70e42a715860504646cb5bd1788ddb823dd50b # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/perf/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_type': >> drivers/perf/arm_pmu_brbe.c:251:24: error: 'PERF_BR_ARM64_DEBUG_HALT' undeclared (first use in this function) 251 | return PERF_BR_ARM64_DEBUG_HALT; | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c:251:24: note: each undeclared identifier is reported only once for each function it appears in >> drivers/perf/arm_pmu_brbe.c:253:24: error: 'PERF_BR_SERROR' undeclared (first use in this function); did you mean 'PERF_BR_ERET'? 253 | return PERF_BR_SERROR; | ^~~~~~~~~~~~~~ | PERF_BR_ERET >> drivers/perf/arm_pmu_brbe.c:256:24: error: 'PERF_BR_ARM64_DEBUG_INST' undeclared (first use in this function) 256 | return PERF_BR_ARM64_DEBUG_INST; | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:259:24: error: 'PERF_BR_ARM64_DEBUG_DATA' undeclared (first use in this function) 259 | return PERF_BR_ARM64_DEBUG_DATA; | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:262:24: error: 'PERF_BR_NEW_FAULT_ALGN' undeclared (first use in this function) 262 | return PERF_BR_NEW_FAULT_ALGN; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:265:24: error: 'PERF_BR_NEW_FAULT_INST' undeclared (first use in this function) 265 | return PERF_BR_NEW_FAULT_INST; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:268:24: error: 'PERF_BR_NEW_FAULT_DATA' undeclared (first use in this function) 268 | return PERF_BR_NEW_FAULT_DATA; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:271:24: error: 'PERF_BR_ARM64_FIQ' undeclared (first use in this function); did you mean 'PERF_REG_ARM64_MAX'? 271 | return PERF_BR_ARM64_FIQ; | ^~~~~~~~~~~~~~~~~ | PERF_REG_ARM64_MAX >> drivers/perf/arm_pmu_brbe.c:274:24: error: 'PERF_BR_ARM64_DEBUG_EXIT' undeclared (first use in this function) 274 | return PERF_BR_ARM64_DEBUG_EXIT; | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_priv': >> drivers/perf/arm_pmu_brbe.c:287:23: error: 'PERF_BR_PRIV_USER' undeclared (first use in this function) 287 | return PERF_BR_PRIV_USER; | ^~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:289:23: error: 'PERF_BR_PRIV_KERNEL' undeclared (first use in this function); did you mean 'PERF_SECURITY_KERNEL'? 289 | return PERF_BR_PRIV_KERNEL; | ^~~~~~~~~~~~~~~~~~~ | PERF_SECURITY_KERNEL >> drivers/perf/arm_pmu_brbe.c:293:23: error: 'PERF_BR_PRIV_HV' undeclared (first use in this function) 293 | return PERF_BR_PRIV_HV; | ^~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c: In function 'capture_brbe_flags': >> drivers/perf/arm_pmu_brbe.c:306:14: error: implicit declaration of function 'branch_sample_no_cycles' [-Werror=implicit-function-declaration] 306 | if (!branch_sample_no_cycles(event)) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:309:13: error: implicit declaration of function 'branch_sample_type' [-Werror=implicit-function-declaration] 309 | if (branch_sample_type(event)) { | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:312:56: error: 'PERF_BR_EXTEND_ABI' undeclared (first use in this function) 312 | cpuc->brbe_entries[idx].type = PERF_BR_EXTEND_ABI; | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:313:48: error: 'struct perf_branch_entry' has no member named 'new_type' 313 | cpuc->brbe_entries[idx].new_type = branch_type; | ^ >> drivers/perf/arm_pmu_brbe.c:319:14: error: implicit declaration of function 'branch_sample_no_flags' [-Werror=implicit-function-declaration] 319 | if (!branch_sample_no_flags(event)) { | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:341:13: error: implicit declaration of function 'branch_sample_priv' [-Werror=implicit-function-declaration] 341 | if (branch_sample_priv(event)) { | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:347:48: error: 'struct perf_branch_entry' has no member named 'priv' 347 | cpuc->brbe_entries[idx].priv = brbe_fetch_perf_priv(brbinf); | ^ drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_type': >> drivers/perf/arm_pmu_brbe.c:250:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 250 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:252:9: note: here 252 | case BRBINF_TYPE_SERROR: | ^~~~ drivers/perf/arm_pmu_brbe.c:255:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 255 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:257:9: note: here 257 | case BRBINF_TYPE_DATA_DEBUG: | ^~~~ drivers/perf/arm_pmu_brbe.c:258:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 258 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:260:9: note: here 260 | case BRBINF_TYPE_ALGN_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:261:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 261 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:263:9: note: here 263 | case BRBINF_TYPE_INST_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:264:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 264 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:266:9: note: here 266 | case BRBINF_TYPE_DATA_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:267:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 267 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:269:9: note: here 269 | case BRBINF_TYPE_FIQ: | ^~~~ drivers/perf/arm_pmu_brbe.c:270:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 270 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:272:9: note: here 272 | case BRBINF_TYPE_DEBUG_EXIT: | ^~~~ drivers/perf/arm_pmu_brbe.c:273:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 273 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:275:9: note: here 275 | default: | ^~~~~~~ cc1: some warnings being treated as errors vim +/PERF_BR_ARM64_DEBUG_HALT +251 drivers/perf/arm_pmu_brbe.c 222 223 static int brbe_fetch_perf_type(u64 brbinf, bool *new_branch_type) 224 { 225 int brbe_type = brbe_fetch_type(brbinf); 226 *new_branch_type = false; 227 228 switch (brbe_type) { 229 case BRBINF_TYPE_UNCOND_DIR: 230 return PERF_BR_UNCOND; 231 case BRBINF_TYPE_INDIR: 232 return PERF_BR_IND; 233 case BRBINF_TYPE_DIR_LINK: 234 return PERF_BR_CALL; 235 case BRBINF_TYPE_INDIR_LINK: 236 return PERF_BR_IND_CALL; 237 case BRBINF_TYPE_RET_SUB: 238 return PERF_BR_RET; 239 case BRBINF_TYPE_COND_DIR: 240 return PERF_BR_COND; 241 case BRBINF_TYPE_CALL: 242 return PERF_BR_CALL; 243 case BRBINF_TYPE_TRAP: 244 return PERF_BR_SYSCALL; 245 case BRBINF_TYPE_RET_EXCPT: 246 return PERF_BR_ERET; 247 case BRBINF_TYPE_IRQ: 248 return PERF_BR_IRQ; 249 case BRBINF_TYPE_DEBUG_HALT: > 250 *new_branch_type = true; > 251 return PERF_BR_ARM64_DEBUG_HALT; 252 case BRBINF_TYPE_SERROR: > 253 return PERF_BR_SERROR; 254 case BRBINF_TYPE_INST_DEBUG: 255 *new_branch_type = true; > 256 return PERF_BR_ARM64_DEBUG_INST; 257 case BRBINF_TYPE_DATA_DEBUG: 258 *new_branch_type = true; > 259 return PERF_BR_ARM64_DEBUG_DATA; 260 case BRBINF_TYPE_ALGN_FAULT: 261 *new_branch_type = true; > 262 return PERF_BR_NEW_FAULT_ALGN; 263 case BRBINF_TYPE_INST_FAULT: 264 *new_branch_type = true; > 265 return PERF_BR_NEW_FAULT_INST; 266 case BRBINF_TYPE_DATA_FAULT: 267 *new_branch_type = true; > 268 return PERF_BR_NEW_FAULT_DATA; 269 case BRBINF_TYPE_FIQ: 270 *new_branch_type = true; > 271 return PERF_BR_ARM64_FIQ; 272 case BRBINF_TYPE_DEBUG_EXIT: 273 *new_branch_type = true; > 274 return PERF_BR_ARM64_DEBUG_EXIT; 275 default: 276 pr_warn("unknown branch type captured\n"); 277 return PERF_BR_UNKNOWN; 278 } 279 } 280 281 static int brbe_fetch_perf_priv(u64 brbinf) 282 { 283 int brbe_el = brbe_fetch_el(brbinf); 284 285 switch (brbe_el) { 286 case BRBINF_EL_EL0: > 287 return PERF_BR_PRIV_USER; 288 case BRBINF_EL_EL1: > 289 return PERF_BR_PRIV_KERNEL; 290 case BRBINF_EL_EL2: 291 if (is_kernel_in_hyp_mode()) 292 return PERF_BR_PRIV_KERNEL; > 293 return PERF_BR_PRIV_HV; 294 default: 295 pr_warn("unknown branch privilege captured\n"); 296 return -1; 297 } 298 } 299 300 static void capture_brbe_flags(struct pmu_hw_events *cpuc, struct perf_event *event, 301 u64 brbinf, int idx) 302 { 303 int branch_type, type = brbe_record_valid(brbinf); 304 bool new_branch_type; 305 > 306 if (!branch_sample_no_cycles(event)) 307 cpuc->brbe_entries[idx].cycles = brbe_fetch_cycles(brbinf); 308 > 309 if (branch_sample_type(event)) { 310 branch_type = brbe_fetch_perf_type(brbinf, &new_branch_type); 311 if (new_branch_type) { > 312 cpuc->brbe_entries[idx].type = PERF_BR_EXTEND_ABI; > 313 cpuc->brbe_entries[idx].new_type = branch_type; 314 } else { 315 cpuc->brbe_entries[idx].type = branch_type; 316 } 317 } 318 > 319 if (!branch_sample_no_flags(event)) { 320 /* 321 * BRBINF_LASTFAILED does not indicate that the last transaction 322 * got failed or aborted during the current branch record itself. 323 * Rather, this indicates that all the branch records which were 324 * in transaction until the curret branch record have failed. So 325 * the entire BRBE buffer needs to be processed later on to find 326 * all branch records which might have failed. 327 */ 328 cpuc->brbe_entries[idx].abort = brbinf & BRBINF_LASTFAILED; 329 330 /* 331 * All these information (i.e transaction state and mispredicts) 332 * are not available for target only branch records. 333 */ 334 if (type != BRBINF_VALID_TARGET) { 335 cpuc->brbe_entries[idx].mispred = brbinf & BRBINF_MPRED; 336 cpuc->brbe_entries[idx].predicted = !(brbinf & BRBINF_MPRED); 337 cpuc->brbe_entries[idx].in_tx = brbinf & BRBINF_TX; 338 } 339 } 340 > 341 if (branch_sample_priv(event)) { 342 /* 343 * All these information (i.e branch privilege level) are not 344 * available for source only branch records. 345 */ 346 if (type != BRBINF_VALID_SOURCE) > 347 cpuc->brbe_entries[idx].priv = brbe_fetch_perf_priv(brbinf); 348 } 349 } 350 -- 0-DAY CI Kernel Test Service https://01.org/lkp
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com> To: Anshuman Khandual <anshuman.khandual@arm.com>, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peterz@infradead.org, acme@kernel.org, mark.rutland@arm.com, will@kernel.org, catalin.marinas@arm.com Cc: kbuild-all@lists.01.org, Anshuman Khandual <anshuman.khandual@arm.com>, James Clark <james.clark@arm.com>, Rob Herring <robh@kernel.org>, Marc Zyngier <maz@kernel.org>, Ingo Molnar <mingo@redhat.com> Subject: Re: [PATCH V2 6/7] arm64/perf: Add BRBE driver Date: Thu, 8 Sep 2022 17:23:49 +0800 [thread overview] Message-ID: <202209081717.00OiPpzm-lkp@intel.com> (raw) In-Reply-To: <20220908051046.465307-7-anshuman.khandual@arm.com> Hi Anshuman, Thank you for the patch! Yet something to improve: [auto build test ERROR on acme/perf/core] [also build test ERROR on tip/perf/core arm64/for-next/core linus/master v6.0-rc4 next-20220907] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Anshuman-Khandual/arm64-perf-Enable-branch-stack-sampling/20220908-131425 base: https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/core config: arm64-buildonly-randconfig-r002-20220907 (https://download.01.org/0day-ci/archive/20220908/202209081717.00OiPpzm-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/5b70e42a715860504646cb5bd1788ddb823dd50b git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Anshuman-Khandual/arm64-perf-Enable-branch-stack-sampling/20220908-131425 git checkout 5b70e42a715860504646cb5bd1788ddb823dd50b # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/perf/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_type': >> drivers/perf/arm_pmu_brbe.c:251:24: error: 'PERF_BR_ARM64_DEBUG_HALT' undeclared (first use in this function) 251 | return PERF_BR_ARM64_DEBUG_HALT; | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c:251:24: note: each undeclared identifier is reported only once for each function it appears in >> drivers/perf/arm_pmu_brbe.c:253:24: error: 'PERF_BR_SERROR' undeclared (first use in this function); did you mean 'PERF_BR_ERET'? 253 | return PERF_BR_SERROR; | ^~~~~~~~~~~~~~ | PERF_BR_ERET >> drivers/perf/arm_pmu_brbe.c:256:24: error: 'PERF_BR_ARM64_DEBUG_INST' undeclared (first use in this function) 256 | return PERF_BR_ARM64_DEBUG_INST; | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:259:24: error: 'PERF_BR_ARM64_DEBUG_DATA' undeclared (first use in this function) 259 | return PERF_BR_ARM64_DEBUG_DATA; | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:262:24: error: 'PERF_BR_NEW_FAULT_ALGN' undeclared (first use in this function) 262 | return PERF_BR_NEW_FAULT_ALGN; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:265:24: error: 'PERF_BR_NEW_FAULT_INST' undeclared (first use in this function) 265 | return PERF_BR_NEW_FAULT_INST; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:268:24: error: 'PERF_BR_NEW_FAULT_DATA' undeclared (first use in this function) 268 | return PERF_BR_NEW_FAULT_DATA; | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:271:24: error: 'PERF_BR_ARM64_FIQ' undeclared (first use in this function); did you mean 'PERF_REG_ARM64_MAX'? 271 | return PERF_BR_ARM64_FIQ; | ^~~~~~~~~~~~~~~~~ | PERF_REG_ARM64_MAX >> drivers/perf/arm_pmu_brbe.c:274:24: error: 'PERF_BR_ARM64_DEBUG_EXIT' undeclared (first use in this function) 274 | return PERF_BR_ARM64_DEBUG_EXIT; | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_priv': >> drivers/perf/arm_pmu_brbe.c:287:23: error: 'PERF_BR_PRIV_USER' undeclared (first use in this function) 287 | return PERF_BR_PRIV_USER; | ^~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:289:23: error: 'PERF_BR_PRIV_KERNEL' undeclared (first use in this function); did you mean 'PERF_SECURITY_KERNEL'? 289 | return PERF_BR_PRIV_KERNEL; | ^~~~~~~~~~~~~~~~~~~ | PERF_SECURITY_KERNEL >> drivers/perf/arm_pmu_brbe.c:293:23: error: 'PERF_BR_PRIV_HV' undeclared (first use in this function) 293 | return PERF_BR_PRIV_HV; | ^~~~~~~~~~~~~~~ drivers/perf/arm_pmu_brbe.c: In function 'capture_brbe_flags': >> drivers/perf/arm_pmu_brbe.c:306:14: error: implicit declaration of function 'branch_sample_no_cycles' [-Werror=implicit-function-declaration] 306 | if (!branch_sample_no_cycles(event)) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:309:13: error: implicit declaration of function 'branch_sample_type' [-Werror=implicit-function-declaration] 309 | if (branch_sample_type(event)) { | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:312:56: error: 'PERF_BR_EXTEND_ABI' undeclared (first use in this function) 312 | cpuc->brbe_entries[idx].type = PERF_BR_EXTEND_ABI; | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:313:48: error: 'struct perf_branch_entry' has no member named 'new_type' 313 | cpuc->brbe_entries[idx].new_type = branch_type; | ^ >> drivers/perf/arm_pmu_brbe.c:319:14: error: implicit declaration of function 'branch_sample_no_flags' [-Werror=implicit-function-declaration] 319 | if (!branch_sample_no_flags(event)) { | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:341:13: error: implicit declaration of function 'branch_sample_priv' [-Werror=implicit-function-declaration] 341 | if (branch_sample_priv(event)) { | ^~~~~~~~~~~~~~~~~~ >> drivers/perf/arm_pmu_brbe.c:347:48: error: 'struct perf_branch_entry' has no member named 'priv' 347 | cpuc->brbe_entries[idx].priv = brbe_fetch_perf_priv(brbinf); | ^ drivers/perf/arm_pmu_brbe.c: In function 'brbe_fetch_perf_type': >> drivers/perf/arm_pmu_brbe.c:250:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 250 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:252:9: note: here 252 | case BRBINF_TYPE_SERROR: | ^~~~ drivers/perf/arm_pmu_brbe.c:255:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 255 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:257:9: note: here 257 | case BRBINF_TYPE_DATA_DEBUG: | ^~~~ drivers/perf/arm_pmu_brbe.c:258:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 258 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:260:9: note: here 260 | case BRBINF_TYPE_ALGN_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:261:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 261 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:263:9: note: here 263 | case BRBINF_TYPE_INST_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:264:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 264 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:266:9: note: here 266 | case BRBINF_TYPE_DATA_FAULT: | ^~~~ drivers/perf/arm_pmu_brbe.c:267:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 267 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:269:9: note: here 269 | case BRBINF_TYPE_FIQ: | ^~~~ drivers/perf/arm_pmu_brbe.c:270:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 270 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:272:9: note: here 272 | case BRBINF_TYPE_DEBUG_EXIT: | ^~~~ drivers/perf/arm_pmu_brbe.c:273:34: warning: this statement may fall through [-Wimplicit-fallthrough=] 273 | *new_branch_type = true; | ~~~~~~~~~~~~~~~~~^~~~~~ drivers/perf/arm_pmu_brbe.c:275:9: note: here 275 | default: | ^~~~~~~ cc1: some warnings being treated as errors vim +/PERF_BR_ARM64_DEBUG_HALT +251 drivers/perf/arm_pmu_brbe.c 222 223 static int brbe_fetch_perf_type(u64 brbinf, bool *new_branch_type) 224 { 225 int brbe_type = brbe_fetch_type(brbinf); 226 *new_branch_type = false; 227 228 switch (brbe_type) { 229 case BRBINF_TYPE_UNCOND_DIR: 230 return PERF_BR_UNCOND; 231 case BRBINF_TYPE_INDIR: 232 return PERF_BR_IND; 233 case BRBINF_TYPE_DIR_LINK: 234 return PERF_BR_CALL; 235 case BRBINF_TYPE_INDIR_LINK: 236 return PERF_BR_IND_CALL; 237 case BRBINF_TYPE_RET_SUB: 238 return PERF_BR_RET; 239 case BRBINF_TYPE_COND_DIR: 240 return PERF_BR_COND; 241 case BRBINF_TYPE_CALL: 242 return PERF_BR_CALL; 243 case BRBINF_TYPE_TRAP: 244 return PERF_BR_SYSCALL; 245 case BRBINF_TYPE_RET_EXCPT: 246 return PERF_BR_ERET; 247 case BRBINF_TYPE_IRQ: 248 return PERF_BR_IRQ; 249 case BRBINF_TYPE_DEBUG_HALT: > 250 *new_branch_type = true; > 251 return PERF_BR_ARM64_DEBUG_HALT; 252 case BRBINF_TYPE_SERROR: > 253 return PERF_BR_SERROR; 254 case BRBINF_TYPE_INST_DEBUG: 255 *new_branch_type = true; > 256 return PERF_BR_ARM64_DEBUG_INST; 257 case BRBINF_TYPE_DATA_DEBUG: 258 *new_branch_type = true; > 259 return PERF_BR_ARM64_DEBUG_DATA; 260 case BRBINF_TYPE_ALGN_FAULT: 261 *new_branch_type = true; > 262 return PERF_BR_NEW_FAULT_ALGN; 263 case BRBINF_TYPE_INST_FAULT: 264 *new_branch_type = true; > 265 return PERF_BR_NEW_FAULT_INST; 266 case BRBINF_TYPE_DATA_FAULT: 267 *new_branch_type = true; > 268 return PERF_BR_NEW_FAULT_DATA; 269 case BRBINF_TYPE_FIQ: 270 *new_branch_type = true; > 271 return PERF_BR_ARM64_FIQ; 272 case BRBINF_TYPE_DEBUG_EXIT: 273 *new_branch_type = true; > 274 return PERF_BR_ARM64_DEBUG_EXIT; 275 default: 276 pr_warn("unknown branch type captured\n"); 277 return PERF_BR_UNKNOWN; 278 } 279 } 280 281 static int brbe_fetch_perf_priv(u64 brbinf) 282 { 283 int brbe_el = brbe_fetch_el(brbinf); 284 285 switch (brbe_el) { 286 case BRBINF_EL_EL0: > 287 return PERF_BR_PRIV_USER; 288 case BRBINF_EL_EL1: > 289 return PERF_BR_PRIV_KERNEL; 290 case BRBINF_EL_EL2: 291 if (is_kernel_in_hyp_mode()) 292 return PERF_BR_PRIV_KERNEL; > 293 return PERF_BR_PRIV_HV; 294 default: 295 pr_warn("unknown branch privilege captured\n"); 296 return -1; 297 } 298 } 299 300 static void capture_brbe_flags(struct pmu_hw_events *cpuc, struct perf_event *event, 301 u64 brbinf, int idx) 302 { 303 int branch_type, type = brbe_record_valid(brbinf); 304 bool new_branch_type; 305 > 306 if (!branch_sample_no_cycles(event)) 307 cpuc->brbe_entries[idx].cycles = brbe_fetch_cycles(brbinf); 308 > 309 if (branch_sample_type(event)) { 310 branch_type = brbe_fetch_perf_type(brbinf, &new_branch_type); 311 if (new_branch_type) { > 312 cpuc->brbe_entries[idx].type = PERF_BR_EXTEND_ABI; > 313 cpuc->brbe_entries[idx].new_type = branch_type; 314 } else { 315 cpuc->brbe_entries[idx].type = branch_type; 316 } 317 } 318 > 319 if (!branch_sample_no_flags(event)) { 320 /* 321 * BRBINF_LASTFAILED does not indicate that the last transaction 322 * got failed or aborted during the current branch record itself. 323 * Rather, this indicates that all the branch records which were 324 * in transaction until the curret branch record have failed. So 325 * the entire BRBE buffer needs to be processed later on to find 326 * all branch records which might have failed. 327 */ 328 cpuc->brbe_entries[idx].abort = brbinf & BRBINF_LASTFAILED; 329 330 /* 331 * All these information (i.e transaction state and mispredicts) 332 * are not available for target only branch records. 333 */ 334 if (type != BRBINF_VALID_TARGET) { 335 cpuc->brbe_entries[idx].mispred = brbinf & BRBINF_MPRED; 336 cpuc->brbe_entries[idx].predicted = !(brbinf & BRBINF_MPRED); 337 cpuc->brbe_entries[idx].in_tx = brbinf & BRBINF_TX; 338 } 339 } 340 > 341 if (branch_sample_priv(event)) { 342 /* 343 * All these information (i.e branch privilege level) are not 344 * available for source only branch records. 345 */ 346 if (type != BRBINF_VALID_SOURCE) > 347 cpuc->brbe_entries[idx].priv = brbe_fetch_perf_priv(brbinf); 348 } 349 } 350 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-09-08 9:25 UTC|newest] Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-08 5:10 [PATCH V2 0/7] arm64/perf: Enable branch stack sampling Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 5:10 ` [PATCH V2 1/7] arm64/perf: Add register definitions for BRBE Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-12 9:57 ` Mark Brown 2022-09-12 9:57 ` Mark Brown 2022-09-13 6:24 ` Anshuman Khandual 2022-09-13 6:24 ` Anshuman Khandual 2022-09-13 11:30 ` Mark Brown 2022-09-13 11:30 ` Mark Brown 2022-09-08 5:10 ` [PATCH V2 2/7] arm64/perf: Update struct arm_pmu " Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 5:10 ` [PATCH V2 3/7] arm64/perf: Update struct pmu_hw_events " Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 12:32 ` kernel test robot 2022-09-09 3:11 ` Anshuman Khandual 2022-09-09 3:11 ` Anshuman Khandual 2022-09-09 3:11 ` Anshuman Khandual 2022-09-08 14:14 ` kernel test robot 2022-09-09 3:14 ` Anshuman Khandual 2022-09-09 3:14 ` Anshuman Khandual 2022-09-09 3:14 ` Anshuman Khandual 2022-09-12 10:12 ` Mark Brown 2022-09-12 10:12 ` Mark Brown 2022-09-13 5:33 ` Anshuman Khandual 2022-09-13 5:33 ` Anshuman Khandual 2022-09-13 11:43 ` Mark Brown 2022-09-13 11:43 ` Mark Brown 2022-09-14 3:39 ` Anshuman Khandual 2022-09-14 3:39 ` Anshuman Khandual 2022-09-14 9:35 ` Mark Brown 2022-09-14 9:35 ` Mark Brown 2022-09-08 5:10 ` [PATCH V2 4/7] driver/perf/arm_pmu_platform: Add support for BRBE attributes detection Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 5:10 ` [PATCH V2 5/7] arm64/perf: Drive BRBE from perf event states Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 15:31 ` kernel test robot 2022-09-08 15:31 ` kernel test robot 2022-09-08 5:10 ` [PATCH V2 6/7] arm64/perf: Add BRBE driver Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-08 9:23 ` kernel test robot [this message] 2022-09-08 9:23 ` kernel test robot 2022-09-08 10:16 ` Anshuman Khandual 2022-09-08 10:16 ` Anshuman Khandual 2022-09-08 10:16 ` Anshuman Khandual 2022-09-13 10:39 ` James Clark 2022-09-13 10:39 ` James Clark 2022-09-13 11:38 ` Anshuman Khandual 2022-09-13 11:38 ` Anshuman Khandual 2022-09-08 5:10 ` [PATCH V2 7/7] arm64/perf: Enable branch stack sampling Anshuman Khandual 2022-09-08 5:10 ` Anshuman Khandual 2022-09-13 10:55 ` [PATCH V2 0/7] " James Clark 2022-09-13 10:55 ` James Clark 2022-09-13 12:12 ` Anshuman Khandual 2022-09-13 12:12 ` Anshuman Khandual 2022-09-13 13:12 ` James Clark 2022-09-13 13:12 ` James Clark 2022-09-14 4:43 ` Anshuman Khandual 2022-09-14 4:43 ` Anshuman Khandual
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=202209081717.00OiPpzm-lkp@intel.com \ --to=lkp@intel.com \ --cc=acme@kernel.org \ --cc=anshuman.khandual@arm.com \ --cc=catalin.marinas@arm.com \ --cc=james.clark@arm.com \ --cc=kbuild-all@lists.01.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=maz@kernel.org \ --cc=mingo@redhat.com \ --cc=peterz@infradead.org \ --cc=robh@kernel.org \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.