|
@@ -303,15 +303,6 @@ int x86_setup_perfctr(struct perf_event *event)
|
|
|
hwc->sample_period = x86_pmu.max_period;
|
|
|
hwc->last_period = hwc->sample_period;
|
|
|
local64_set(&hwc->period_left, hwc->sample_period);
|
|
|
- } else {
|
|
|
- /*
|
|
|
- * If we have a PMU initialized but no APIC
|
|
|
- * interrupts, we cannot sample hardware
|
|
|
- * events (user-space has to fall back and
|
|
|
- * sample via a hrtimer based software event):
|
|
|
- */
|
|
|
- if (!x86_pmu.apic)
|
|
|
- return -EOPNOTSUPP;
|
|
|
}
|
|
|
|
|
|
if (attr->type == PERF_TYPE_RAW)
|
|
@@ -1367,6 +1358,15 @@ static void __init pmu_check_apic(void)
|
|
|
x86_pmu.apic = 0;
|
|
|
pr_info("no APIC, boot with the \"lapic\" boot parameter to force-enable it.\n");
|
|
|
pr_info("no hardware sampling interrupt available.\n");
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If we have a PMU initialized but no APIC
|
|
|
+ * interrupts, we cannot sample hardware
|
|
|
+ * events (user-space has to fall back and
|
|
|
+ * sample via a hrtimer based software event):
|
|
|
+ */
|
|
|
+ pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
static struct attribute_group x86_pmu_format_group = {
|