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]
