All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Bader <stefan.bader@canonical.com>
To: Greg KH <gregkh@suse.de>
Cc: linux-kernel@vger.kernel.org, stable@kernel.org,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@elte.hu>, Paul Mackerras <paulus@samba.org>,
	akpm@linux-foundation.org, torvalds@linux-foundation.org,
	stable-review@kernel.org, alan@lxorguk.ukuu.org.uk
Subject: Re: [Stable-review] [28/29] perf events: Dont report side-band events on each cpu for per-task-per-cpu events
Date: Sat, 23 Jan 2010 12:38:41 +0100	[thread overview]
Message-ID: <4B5ADFC1.6030909@canonical.com> (raw)
In-Reply-To: <20100123001113.778789298@mini.kroah.org>

Greg KH wrote:
> 2.6.32-stable review patch.  If anyone has any objections, please let us know.
> 
> ------------------
> 
> From: Peter Zijlstra <a.p.zijlstra@chello.nl>
> 
> commit 5d27c23df09b702868d9a3bff86ec6abd22963ac upstream.
> 
> Acme noticed that his FORK/MMAP numbers were inflated by about
> the same factor as his cpu-count.
> 
> This led to the discovery of a few more sites that need to
> respect the event->cpu filter.
> 
> Reported-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Paul Mackerras <paulus@samba.org>
> LKML-Reference: <20091217121830.215333434@chello.nl>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
> ---
>  kernel/perf_event.c |   20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> --- a/kernel/perf_event.c
> +++ b/kernel/perf_event.c
> @@ -1359,6 +1359,9 @@ static void perf_ctx_adjust_freq(struct 
>  		if (event->state != PERF_EVENT_STATE_ACTIVE)
>  			continue;
>  
> +		if (event->cpu != -1 && event->cpu != smp_processor_id())
> +			continue;
> +
>  		hwc = &event->hw;
>  
>  		interrupts = hwc->interrupts;
> @@ -3226,6 +3229,9 @@ static void perf_event_task_output(struc
>  
>  static int perf_event_task_match(struct perf_event *event)
>  {
> +	if (event->cpu != -1 && event->cpu != smp_processor_id())
> +		return 0;
> +
>  	if (event->attr.comm || event->attr.mmap || event->attr.task)
>  		return 1;
>  

> @@ -3262,6 +3268,7 @@ static void perf_event_task_event(struct
>  		ctx = rcu_dereference(task_event->task->perf_event_ctxp);
>  	if (ctx)
>  		perf_event_task_ctx(ctx, task_event);
> +	put_cpu_var(perf_cpu_context);
>  	rcu_read_unlock();
>  }

I believe this hunk drops the move of put_cpu_var. The upstream hunk looks like
this:

@ -3290,12 +3296,11 @@ static void perf_event_task_event(struct perf_task_event
        rcu_read_lock();
        cpuctx = &get_cpu_var(perf_cpu_context);
        perf_event_task_ctx(&cpuctx->ctx, task_event);
-       put_cpu_var(perf_cpu_context);
-
        if (!ctx)
                ctx = rcu_dereference(task_event->task->perf_event_ctxp);
        if (ctx)
                perf_event_task_ctx(ctx, task_event);
+       put_cpu_var(perf_cpu_context);
        rcu_read_unlock();
 }

> @@ -3338,6 +3345,9 @@ static void perf_event_comm_output(struc
>  
>  static int perf_event_comm_match(struct perf_event *event)
>  {
> +	if (event->cpu != -1 && event->cpu != smp_processor_id())
> +		return 0;
> +
>  	if (event->attr.comm)
>  		return 1;
>  
> @@ -3378,7 +3388,6 @@ static void perf_event_comm_event(struct
>  
>  	cpuctx = &get_cpu_var(perf_cpu_context);
>  	perf_event_comm_ctx(&cpuctx->ctx, comm_event);
> -	put_cpu_var(perf_cpu_context);
>  
>  	rcu_read_lock();
>  	/*
> @@ -3388,6 +3397,7 @@ static void perf_event_comm_event(struct
>  	ctx = rcu_dereference(current->perf_event_ctxp);
>  	if (ctx)
>  		perf_event_comm_ctx(ctx, comm_event);
> +	put_cpu_var(perf_cpu_context);
>  	rcu_read_unlock();
>  }
>  
> @@ -3462,6 +3472,9 @@ static void perf_event_mmap_output(struc
>  static int perf_event_mmap_match(struct perf_event *event,
>  				   struct perf_mmap_event *mmap_event)
>  {
> +	if (event->cpu != -1 && event->cpu != smp_processor_id())
> +		return 0;
> +
>  	if (event->attr.mmap)
>  		return 1;
>  
> @@ -3539,7 +3552,6 @@ got_name:
>  
>  	cpuctx = &get_cpu_var(perf_cpu_context);
>  	perf_event_mmap_ctx(&cpuctx->ctx, mmap_event);
> -	put_cpu_var(perf_cpu_context);
>  
>  	rcu_read_lock();
>  	/*
> @@ -3549,6 +3561,7 @@ got_name:
>  	ctx = rcu_dereference(current->perf_event_ctxp);
>  	if (ctx)
>  		perf_event_mmap_ctx(ctx, mmap_event);
> +	put_cpu_var(perf_cpu_context);
>  	rcu_read_unlock();
>  
>  	kfree(buf);
> @@ -3811,6 +3824,9 @@ static int perf_swevent_match(struct per
>  				enum perf_type_id type,
>  				u32 event_id, struct pt_regs *regs)
>  {
> +	if (event->cpu != -1 && event->cpu != smp_processor_id())
> +		return 0;
> +
>  	if (!perf_swevent_is_counting(event))
>  		return 0;
>  
> 
> 
> _______________________________________________
> Stable-review mailing list
> Stable-review@linux.kernel.org
> http://linux.kernel.org/mailman/listinfo/stable-review


  reply	other threads:[~2010-01-23 11:38 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-23  0:11 [00/29] 2.6.32.6 stable review Greg KH
2010-01-23  0:09 ` [01/29] x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers Greg KH
2010-01-23  0:09 ` [02/29] V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges Greg KH
2010-01-23  0:09 ` [03/29] Staging: asus_oled: fix oops in 2.6.32.2 Greg KH
2010-01-23  0:09 ` [04/29] Staging: hv: fix smp problems in the hyperv core code Greg KH
2010-01-23  0:09 ` [05/29] tty: fix race in tty_fasync Greg KH
2010-01-23  0:09 ` [06/29] ecryptfs: use after free Greg KH
2010-01-23  0:09 ` [07/29] ecryptfs: initialize private persistent file before dereferencing pointer Greg KH
2010-01-23  0:09 ` [08/29] nozomi: quick fix for the close/close bug Greg KH
2010-01-23  0:09 ` [09/29] serial: 8250_pnp: use wildcard for serial Wacom tablets Greg KH
2010-01-23  0:09 ` [10/29] usb: serial: fix memory leak in generic driver Greg KH
2010-01-23  0:09 ` [11/29] USB: fix bitmask merge error Greg KH
2010-01-23  0:09 ` [12/29] USB: Dont use GFP_KERNEL while we cannot reset a storage device Greg KH
2010-01-23  0:09 ` [13/29] USB: EHCI: fix handling of unusual interrupt intervals Greg KH
2010-01-23  0:09 ` [14/29] USB: EHCI & UHCI: fix race between root-hub suspend and port resume Greg KH
2010-01-23  0:09 ` [15/29] USB: add missing delay during remote wakeup Greg KH
2010-01-23  0:10 ` [16/29] USB: add speed values for USB 3.0 and wireless controllers Greg KH
2010-01-23  0:10 ` [17/29] ACPI: EC: Accelerate query execution Greg KH
2010-01-23  0:10 ` [18/29] ACPI: EC: Add wait for irq storm Greg KH
2010-01-23  0:10 ` [19/29] SCSI: enclosure: fix oops while iterating enclosure_status array Greg KH
2010-01-23  0:10 ` [20/29] drm/i915: Read the response after issuing DDC bus switch command Greg KH
2010-01-23  0:10 ` [21/29] drm/i915: try another possible DDC bus for the SDVO device with multiple outputs Greg KH
2010-01-23  0:10 ` [22/29] block: bdev_stack_limits wrapper Greg KH
2010-01-23  0:10 ` [23/29] DM: Fix device mapper topology stacking Greg KH
2010-01-23  0:10 ` [24/29] x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled Greg KH
2010-01-23  0:10 ` [25/29] USB: fix usbstorage for 2770:915d delivers no FAT Greg KH
2010-01-23  2:43   ` [Stable-review] " Ben Hutchings
2010-01-23  6:05     ` Greg KH
2010-01-23  0:10 ` [26/29] vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE Greg KH
2010-01-23  0:10 ` [27/29] perf timechart: Use tid not pid for COMM change Greg KH
2010-01-23  0:10 ` [28/29] perf events: Dont report side-band events on each cpu for per-task-per-cpu events Greg KH
2010-01-23 11:38   ` Stefan Bader [this message]
2010-01-23 15:33     ` [Stable-review] " Greg KH
2010-01-25 18:04     ` Greg KH
2010-01-23  0:10 ` [29/29] perf: Honour event state for aux stream data Greg KH
2010-01-24  7:21 ` [stable] [00/29] 2.6.32.6 stable review Andrew Morton
2010-01-24 16:29   ` Thomas Gleixner
2010-01-25  8:40     ` Ozan Çağlayan
2010-01-25 17:16       ` Greg KH
2010-01-25 17:39         ` Ozan Çağlayan
2010-01-25 17:46           ` Greg KH
2010-01-25 19:09             ` Greg KH
2010-01-25 18:22         ` Thomas Gleixner
2010-01-25 17:15     ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B5ADFC1.6030909@canonical.com \
    --to=stefan.bader@canonical.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.