Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1490731

[GIT pull] perf fixes for 4.8

From Thomas Gleixner <tglx@linutronix.de>
Newsgroups linux.kernel
Subject [GIT pull] perf fixes for 4.8
Date 2016-09-24 21:40 +0200
Message-ID <sl0XM-53s-17@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Linus,

please pull the latest perf-urgent-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-urgent-for-linus

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.

Thanks,

	tglx

------------------>
Alexander Shishkin (2):
      perf/x86/intel/bts: Make it an exclusive PMU
      perf/core: Limit matching exclusive events to one PMU

Sebastian Andrzej Siewior (1):
      perf/x86/intel/bts: Make sure debug store is valid


 arch/x86/events/intel/bts.c | 5 +++--
 kernel/events/core.c        | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c
index bdcd6510992c..982c9e31daca 100644
--- a/arch/x86/events/intel/bts.c
+++ b/arch/x86/events/intel/bts.c
@@ -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;
diff --git a/kernel/events/core.c b/kernel/events/core.c
index a54f2c2cdb20..fc9bb2225291 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -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))

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[GIT pull] perf fixes for 4.8 Thomas Gleixner <tglx@linutronix.de> - 2016-09-24 21:40 +0200

csiph-web