BCC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Huacai Chen <[email protected]>
TO: Arnd Bergmann <[email protected]>
TO: Huacai Chen <[email protected]>
TO: Peter Zijlstra <[email protected]>
TO: Ingo Molnar <[email protected]>
TO: Arnaldo Carvalho de Melo <[email protected]>
TO: Mark Rutland <[email protected]>
TO: Alexander Shishkin <[email protected]>
TO: Jiri Olsa <[email protected]>
TO: Namhyung Kim <[email protected]>
CC: [email protected]
CC: [email protected]
CC: Xuefeng Li <[email protected]>
CC: Guo Ren <[email protected]>
CC: Xuerui Wang <[email protected]>
CC: Jiaxun Yang <[email protected]>
CC: [email protected]
CC: [email protected]

Hi Huacai,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.0-rc1 next-20220815]
[cannot apply to soc/for-next]
[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/Huacai-Chen/LoongArch-Add-perf-events-support/20220815-204852
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
568035b01cfb107af8d2e4bd2fb9aea22cf5b868
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: loongarch-randconfig-c041-20220815 
(https://download.01.org/0day-ci/archive/20220816/[email protected]/config)
compiler: loongarch64-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Julia Lawall <[email protected]>

cocci warnings: (new ones prefixed by >>)
>> arch/loongarch/kernel/perf_event.c:795:2-8: preceding lock on line 785
   arch/loongarch/kernel/perf_event.c:584:4-10: preceding lock on line 578

vim +795 arch/loongarch/kernel/perf_event.c

0e6d9490ff3f61 Huacai Chen 2022-08-15  768  
0e6d9490ff3f61 Huacai Chen 2022-08-15  769  static int 
__hw_perf_event_init(struct perf_event *event)
0e6d9490ff3f61 Huacai Chen 2022-08-15  770  {
0e6d9490ff3f61 Huacai Chen 2022-08-15  771      struct perf_event_attr *attr = 
&event->attr;
0e6d9490ff3f61 Huacai Chen 2022-08-15  772      struct hw_perf_event *hwc = 
&event->hw;
0e6d9490ff3f61 Huacai Chen 2022-08-15  773      const struct 
loongarch_perf_event *pev;
0e6d9490ff3f61 Huacai Chen 2022-08-15  774      int err;
0e6d9490ff3f61 Huacai Chen 2022-08-15  775  
0e6d9490ff3f61 Huacai Chen 2022-08-15  776      /* Returning LoongArch event 
descriptor for generic perf event. */
0e6d9490ff3f61 Huacai Chen 2022-08-15  777      if (PERF_TYPE_HARDWARE == 
event->attr.type) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  778              if (event->attr.config 
>= PERF_COUNT_HW_MAX)
0e6d9490ff3f61 Huacai Chen 2022-08-15  779                      return -EINVAL;
0e6d9490ff3f61 Huacai Chen 2022-08-15  780              pev = 
loongarch_pmu_map_general_event(event->attr.config);
0e6d9490ff3f61 Huacai Chen 2022-08-15  781      } else if (PERF_TYPE_HW_CACHE 
== event->attr.type) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  782              pev = 
loongarch_pmu_map_cache_event(event->attr.config);
0e6d9490ff3f61 Huacai Chen 2022-08-15  783      } else if (PERF_TYPE_RAW == 
event->attr.type) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  784              /* We are working on 
the global raw event. */
0e6d9490ff3f61 Huacai Chen 2022-08-15 @785              
mutex_lock(&raw_event_mutex);
0e6d9490ff3f61 Huacai Chen 2022-08-15  786              pev = 
loongarch_pmu.map_raw_event(event->attr.config);
0e6d9490ff3f61 Huacai Chen 2022-08-15  787      } else {
0e6d9490ff3f61 Huacai Chen 2022-08-15  788              /* The event type is 
not (yet) supported. */
0e6d9490ff3f61 Huacai Chen 2022-08-15  789              return -EOPNOTSUPP;
0e6d9490ff3f61 Huacai Chen 2022-08-15  790      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  791  
0e6d9490ff3f61 Huacai Chen 2022-08-15  792      if (IS_ERR(pev)) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  793              if (PERF_TYPE_RAW == 
event->attr.type)
0e6d9490ff3f61 Huacai Chen 2022-08-15  794                      
mutex_unlock(&raw_event_mutex);
0e6d9490ff3f61 Huacai Chen 2022-08-15 @795              return PTR_ERR(pev);
0e6d9490ff3f61 Huacai Chen 2022-08-15  796      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  797  
0e6d9490ff3f61 Huacai Chen 2022-08-15  798      /*
0e6d9490ff3f61 Huacai Chen 2022-08-15  799       * We allow max flexibility on 
how each individual counter shared
0e6d9490ff3f61 Huacai Chen 2022-08-15  800       * by the single CPU operates 
(the mode exclusion and the range).
0e6d9490ff3f61 Huacai Chen 2022-08-15  801       */
0e6d9490ff3f61 Huacai Chen 2022-08-15  802      hwc->config_base = 
CSR_PERFCTRL_IE;
0e6d9490ff3f61 Huacai Chen 2022-08-15  803  
0e6d9490ff3f61 Huacai Chen 2022-08-15  804      hwc->event_base = 
loongarch_pmu_perf_event_encode(pev);
0e6d9490ff3f61 Huacai Chen 2022-08-15  805      if (PERF_TYPE_RAW == 
event->attr.type)
0e6d9490ff3f61 Huacai Chen 2022-08-15  806              
mutex_unlock(&raw_event_mutex);
0e6d9490ff3f61 Huacai Chen 2022-08-15  807  
0e6d9490ff3f61 Huacai Chen 2022-08-15  808      if (!attr->exclude_user) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  809              hwc->config_base |= 
CSR_PERFCTRL_PLV3;
0e6d9490ff3f61 Huacai Chen 2022-08-15  810              hwc->config_base |= 
CSR_PERFCTRL_PLV2;
0e6d9490ff3f61 Huacai Chen 2022-08-15  811      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  812      if (!attr->exclude_kernel) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  813              hwc->config_base |= 
CSR_PERFCTRL_PLV0;
0e6d9490ff3f61 Huacai Chen 2022-08-15  814      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  815      if (!attr->exclude_hv) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  816              hwc->config_base |= 
CSR_PERFCTRL_PLV1;
0e6d9490ff3f61 Huacai Chen 2022-08-15  817      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  818  
0e6d9490ff3f61 Huacai Chen 2022-08-15  819      hwc->config_base &= 
M_PERFCTL_CONFIG_MASK;
0e6d9490ff3f61 Huacai Chen 2022-08-15  820      /*
0e6d9490ff3f61 Huacai Chen 2022-08-15  821       * The event can belong to 
another cpu. We do not assign a local
0e6d9490ff3f61 Huacai Chen 2022-08-15  822       * counter for it for now.
0e6d9490ff3f61 Huacai Chen 2022-08-15  823       */
0e6d9490ff3f61 Huacai Chen 2022-08-15  824      hwc->idx = -1;
0e6d9490ff3f61 Huacai Chen 2022-08-15  825      hwc->config = 0;
0e6d9490ff3f61 Huacai Chen 2022-08-15  826  
0e6d9490ff3f61 Huacai Chen 2022-08-15  827      if (!hwc->sample_period) {
0e6d9490ff3f61 Huacai Chen 2022-08-15  828              hwc->sample_period  = 
loongarch_pmu.max_period;
0e6d9490ff3f61 Huacai Chen 2022-08-15  829              hwc->last_period    = 
hwc->sample_period;
0e6d9490ff3f61 Huacai Chen 2022-08-15  830              
local64_set(&hwc->period_left, hwc->sample_period);
0e6d9490ff3f61 Huacai Chen 2022-08-15  831      }
0e6d9490ff3f61 Huacai Chen 2022-08-15  832  
0e6d9490ff3f61 Huacai Chen 2022-08-15  833      err = 0;
0e6d9490ff3f61 Huacai Chen 2022-08-15  834      if (event->group_leader != 
event)
0e6d9490ff3f61 Huacai Chen 2022-08-15  835              err = 
validate_group(event);
0e6d9490ff3f61 Huacai Chen 2022-08-15  836  
0e6d9490ff3f61 Huacai Chen 2022-08-15  837      event->destroy = 
hw_perf_event_destroy;
0e6d9490ff3f61 Huacai Chen 2022-08-15  838  
0e6d9490ff3f61 Huacai Chen 2022-08-15  839      if (err)
0e6d9490ff3f61 Huacai Chen 2022-08-15  840              event->destroy(event);
0e6d9490ff3f61 Huacai Chen 2022-08-15  841  
0e6d9490ff3f61 Huacai Chen 2022-08-15  842      return err;
0e6d9490ff3f61 Huacai Chen 2022-08-15  843  }
0e6d9490ff3f61 Huacai Chen 2022-08-15  844  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to