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
This commit is contained in:
commit
9c0e28a7be
@ -455,7 +455,7 @@ int intel_bts_interrupt(void)
|
|||||||
* The only surefire way of knowing if this NMI is ours is by checking
|
* The only surefire way of knowing if this NMI is ours is by checking
|
||||||
* the write ptr against the PMI threshold.
|
* the write ptr against the PMI threshold.
|
||||||
*/
|
*/
|
||||||
if (ds->bts_index >= ds->bts_interrupt_threshold)
|
if (ds && (ds->bts_index >= ds->bts_interrupt_threshold))
|
||||||
handled = 1;
|
handled = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -584,7 +584,8 @@ static __init int bts_init(void)
|
|||||||
if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts)
|
if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
bts_pmu.capabilities = PERF_PMU_CAP_AUX_NO_SG | PERF_PMU_CAP_ITRACE;
|
bts_pmu.capabilities = PERF_PMU_CAP_AUX_NO_SG | PERF_PMU_CAP_ITRACE |
|
||||||
|
PERF_PMU_CAP_EXCLUSIVE;
|
||||||
bts_pmu.task_ctx_nr = perf_sw_context;
|
bts_pmu.task_ctx_nr = perf_sw_context;
|
||||||
bts_pmu.event_init = bts_event_init;
|
bts_pmu.event_init = bts_event_init;
|
||||||
bts_pmu.add = bts_event_add;
|
bts_pmu.add = bts_event_add;
|
||||||
|
@ -3929,7 +3929,7 @@ static void exclusive_event_destroy(struct perf_event *event)
|
|||||||
|
|
||||||
static bool exclusive_event_match(struct perf_event *e1, struct perf_event *e2)
|
static bool exclusive_event_match(struct perf_event *e1, struct perf_event *e2)
|
||||||
{
|
{
|
||||||
if ((e1->pmu->capabilities & PERF_PMU_CAP_EXCLUSIVE) &&
|
if ((e1->pmu == e2->pmu) &&
|
||||||
(e1->cpu == e2->cpu ||
|
(e1->cpu == e2->cpu ||
|
||||||
e1->cpu == -1 ||
|
e1->cpu == -1 ||
|
||||||
e2->cpu == -1))
|
e2->cpu == -1))
|
||||||
|
Loading…
Reference in New Issue
Block a user