On Mon, Jul 06, 2015 at 04:32:48PM +0300, Max Filippov wrote: > +static int xtensa_pmu_event_init(struct perf_event *event) > +{ > + int ret; > + > + switch (event->attr.type) { > + case PERF_TYPE_HARDWARE: > + if (event->attr.config >= ARRAY_SIZE(xtensa_hw_ctl) || > + xtensa_hw_ctl[event->attr.config] == 0) > + return -ENOENT; > + event->hw.config = xtensa_hw_ctl[event->attr.config]; > + return 0; > + > + case PERF_TYPE_HW_CACHE: > + ret = xtensa_pmu_cache_event(event->attr.config); > + if (ret < 0) > + return ret; > + event->hw.config = ret; > + return 0; > + > + case PERF_TYPE_RAW: > + /* Not 'previous counter' select */ > + if ((event->attr.config & XTENSA_PMU_PMCTRL_SELECT) == > + (1 << XTENSA_PMU_PMCTRL_SELECT_SHIFT)) > + return -ENOENT; > + event->hw.config = (event->attr.config & > + (XTENSA_PMU_PMCTRL_KRNLCNT | > + XTENSA_PMU_PMCTRL_TRACELEVEL | > + XTENSA_PMU_PMCTRL_SELECT | > + XTENSA_PMU_PMCTRL_MASK)) | > + XTENSA_PMU_PMCTRL_INTEN; > + return 0;
Since this PMU implements TYPE_HARDWARE/TYPE_HW_CACHE/TYPE_RAW, returning -ENOENT for those is wrong. If the configuration is invalid, return -EINVAL. > + > + default: > + return -ENOENT; > + } > +} -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/