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:
Коммит
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 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;
|
||||
|
||||
/*
|
||||
|
@ -584,7 +584,8 @@ static __init int bts_init(void)
|
|||
if (!boot_cpu_has(X86_FEATURE_DTES64) || !x86_pmu.bts)
|
||||
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.event_init = bts_event_init;
|
||||
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)
|
||||
{
|
||||
if ((e1->pmu->capabilities & PERF_PMU_CAP_EXCLUSIVE) &&
|
||||
if ((e1->pmu == e2->pmu) &&
|
||||
(e1->cpu == e2->cpu ||
|
||||
e1->cpu == -1 ||
|
||||
e2->cpu == -1))
|
||||
|
|
Загрузка…
Ссылка в новой задаче