Hi Athira,

kernel test robot noticed the following build errors:

[auto build test ERROR on powerpc/next]
[also build test ERROR on powerpc/fixes linus/master v6.13-rc7 next-20250117]
[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/Athira-Rajeev/arch-powerpc-perf-Update-get_mem_data_src-function-to-use-saved-values-of-sier-and-mmcra-regs/20250113-143059
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
patch link:    
https://lore.kernel.org/r/20250113062818.33187-1-atrajeev%40linux.vnet.ibm.com
patch subject: [PATCH 1/2] arch/powerpc/perf: Check the instruction type before 
creating sample with perf_mem_data_src
config: powerpc-gamecube_defconfig 
(https://download.01.org/0day-ci/archive/20250118/202501180825.lprg6wye-...@intel.com/config)
compiler: clang version 16.0.6 (https://github.com/llvm/llvm-project 
7cbf1a2591520c2491aa35339f227775f4d3adf6)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20250118/202501180825.lprg6wye-...@intel.com/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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202501180825.lprg6wye-...@intel.com/

All errors (new ones prefixed by >>):

>> arch/powerpc/perf/core-book3s.c:2303:22: error: use of undeclared identifier 
>> 'ISA207_SIER_TYPE_MASK'
                   val = (regs->dar & ISA207_SIER_TYPE_MASK) >> 
ISA207_SIER_TYPE_SHIFT;
                                      ^
>> arch/powerpc/perf/core-book3s.c:2303:48: error: use of undeclared identifier 
>> 'ISA207_SIER_TYPE_SHIFT'
                   val = (regs->dar & ISA207_SIER_TYPE_MASK) >> 
ISA207_SIER_TYPE_SHIFT;
                                                                ^
   2 errors generated.


vim +/ISA207_SIER_TYPE_MASK +2303 arch/powerpc/perf/core-book3s.c

  2222  
  2223  #define PERF_SAMPLE_ADDR_TYPE  (PERF_SAMPLE_ADDR |              \
  2224                                  PERF_SAMPLE_PHYS_ADDR |         \
  2225                                  PERF_SAMPLE_DATA_PAGE_SIZE)
  2226  /*
  2227   * A counter has overflowed; update its count and record
  2228   * things if requested.  Note that interrupts are hard-disabled
  2229   * here so there is no possibility of being interrupted.
  2230   */
  2231  static void record_and_restart(struct perf_event *event, unsigned long 
val,
  2232                                 struct pt_regs *regs)
  2233  {
  2234          u64 period = event->hw.sample_period;
  2235          s64 prev, delta, left;
  2236          int record = 0;
  2237  
  2238          if (event->hw.state & PERF_HES_STOPPED) {
  2239                  write_pmc(event->hw.idx, 0);
  2240                  return;
  2241          }
  2242  
  2243          /* we don't have to worry about interrupts here */
  2244          prev = local64_read(&event->hw.prev_count);
  2245          delta = check_and_compute_delta(prev, val);
  2246          local64_add(delta, &event->count);
  2247  
  2248          /*
  2249           * See if the total period for this event has expired,
  2250           * and update for the next period.
  2251           */
  2252          val = 0;
  2253          left = local64_read(&event->hw.period_left) - delta;
  2254          if (delta == 0)
  2255                  left++;
  2256          if (period) {
  2257                  if (left <= 0) {
  2258                          left += period;
  2259                          if (left <= 0)
  2260                                  left = period;
  2261  
  2262                          /*
  2263                           * If address is not requested in the sample via
  2264                           * PERF_SAMPLE_IP, just record that sample 
irrespective
  2265                           * of SIAR valid check.
  2266                           */
  2267                          if (event->attr.sample_type & PERF_SAMPLE_IP)
  2268                                  record = siar_valid(regs);
  2269                          else
  2270                                  record = 1;
  2271  
  2272                          event->hw.last_period = event->hw.sample_period;
  2273                  }
  2274                  if (left < 0x80000000LL)
  2275                          val = 0x80000000LL - left;
  2276          }
  2277  
  2278          write_pmc(event->hw.idx, val);
  2279          local64_set(&event->hw.prev_count, val);
  2280          local64_set(&event->hw.period_left, left);
  2281          perf_event_update_userpage(event);
  2282  
  2283          /*
  2284           * Due to hardware limitation, sometimes SIAR could sample a 
kernel
  2285           * address even when freeze on supervisor state (kernel) is set 
in
  2286           * MMCR2. Check attr.exclude_kernel and address to drop the 
sample in
  2287           * these cases.
  2288           */
  2289          if (event->attr.exclude_kernel &&
  2290              (event->attr.sample_type & PERF_SAMPLE_IP) &&
  2291              is_kernel_addr(mfspr(SPRN_SIAR)))
  2292                  record = 0;
  2293  
  2294          /*
  2295           * SIER[46-48] presents instruction type of the sampled 
instruction.
  2296           * In ISA v3.0 and before values "0" and "7" are considered 
reserved.
  2297           * In ISA v3.1, value "7" has been used to indicate "larx/stcx".
  2298           * Drop the sample if "type" has reserved values for this field 
with a
  2299           * ISA version check.
  2300           */
  2301          if (event->attr.sample_type & PERF_SAMPLE_DATA_SRC &&
  2302                          ppmu->get_mem_data_src) {
> 2303                  val = (regs->dar & ISA207_SIER_TYPE_MASK) >> 
> ISA207_SIER_TYPE_SHIFT;
  2304                  if (val == 0 || (val == 7 && 
!cpu_has_feature(CPU_FTR_ARCH_31))) {
  2305                          record = 0;
  2306                          atomic64_inc(&event->lost_samples);
  2307                  }
  2308          }
  2309  
  2310          /*
  2311           * Finally record data if requested.
  2312           */
  2313          if (record) {
  2314                  struct perf_sample_data data;
  2315  
  2316                  perf_sample_data_init(&data, ~0ULL, 
event->hw.last_period);
  2317  
  2318                  if (event->attr.sample_type & PERF_SAMPLE_ADDR_TYPE)
  2319                          perf_get_data_addr(event, regs, &data.addr);
  2320  
  2321                  if (event->attr.sample_type & PERF_SAMPLE_BRANCH_STACK) 
{
  2322                          struct cpu_hw_events *cpuhw;
  2323                          cpuhw = this_cpu_ptr(&cpu_hw_events);
  2324                          power_pmu_bhrb_read(event, cpuhw);
  2325                          perf_sample_save_brstack(&data, event, 
&cpuhw->bhrb_stack, NULL);
  2326                  }
  2327  
  2328                  if (event->attr.sample_type & PERF_SAMPLE_DATA_SRC &&
  2329                                                  ppmu->get_mem_data_src) 
{
  2330                          ppmu->get_mem_data_src(&data.data_src, 
ppmu->flags, regs);
  2331                          data.sample_flags |= PERF_SAMPLE_DATA_SRC;
  2332                  }
  2333  
  2334                  if (event->attr.sample_type & PERF_SAMPLE_WEIGHT_TYPE &&
  2335                                                  ppmu->get_mem_weight) {
  2336                          ppmu->get_mem_weight(&data.weight.full, 
event->attr.sample_type);
  2337                          data.sample_flags |= PERF_SAMPLE_WEIGHT_TYPE;
  2338                  }
  2339                  if (perf_event_overflow(event, &data, regs))
  2340                          power_pmu_stop(event, 0);
  2341          } else if (period) {
  2342                  /* Account for interrupt in case of invalid SIAR */
  2343                  if (perf_event_account_interrupt(event))
  2344                          power_pmu_stop(event, 0);
  2345          }
  2346  }
  2347  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to