Skip to content

Commit 9c0e28a

Browse files
committed
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Thomas Gleixner: "Three fixlets for perf: - add a missing NULL pointer check in the intel BTS driver - make BTS an exclusive PMU because BTS can only handle one event at a time - ensure that exclusive events are limited to one PMU so that several exclusive events can be scheduled on different PMU instances" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/core: Limit matching exclusive events to one PMU perf/x86/intel/bts: Make it an exclusive PMU perf/x86/intel/bts: Make sure debug store is valid
2 parents 2507c85 + 3bf6215 commit 9c0e28a

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

arch/x86/events/intel/bts.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ int intel_bts_interrupt(void)
455455
* The only surefire way of knowing if this NMI is ours is by checking
456456
* the write ptr against the PMI threshold.
457457
*/
458-
if (ds->bts_index >= ds->bts_interrupt_threshold)
458+
if (ds && (ds->bts_index >= ds->bts_interrupt_threshold))
459459
handled = 1;
460460

461461
/*
@@ -584,7 +584,8 @@ static __init int bts_init(void)
584584
if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts)
585585
return -ENODEV;
586586

587-
bts_pmu.capabilities = PERF_PMU_CAP_AUX_NO_SG | PERF_PMU_CAP_ITRACE;
587+
bts_pmu.capabilities = PERF_PMU_CAP_AUX_NO_SG | PERF_PMU_CAP_ITRACE |
588+
PERF_PMU_CAP_EXCLUSIVE;
588589
bts_pmu.task_ctx_nr = perf_sw_context;
589590
bts_pmu.event_init = bts_event_init;
590591
bts_pmu.add = bts_event_add;

kernel/events/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3929,7 +3929,7 @@ static void exclusive_event_destroy(struct perf_event *event)
39293929

39303930
static bool exclusive_event_match(struct perf_event *e1, struct perf_event *e2)
39313931
{
3932-
if ((e1->pmu->capabilities & PERF_PMU_CAP_EXCLUSIVE) &&
3932+
if ((e1->pmu == e2->pmu) &&
39333933
(e1->cpu == e2->cpu ||
39343934
e1->cpu == -1 ||
39353935
e2->cpu == -1))

0 commit comments

Comments
 (0)