All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Paul Mackerras <paulus@samba.org>,
	David Miller <davem@davemloft.net>,
	Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH 1/2] perf: Correctly align perf event tracing buffer
Date: Mon, 29 Mar 2010 10:51:31 +0200	[thread overview]
Message-ID: <1269852691.12097.162.camel@laptop> (raw)
In-Reply-To: <1269753066-17246-2-git-send-regression-fweisbec@gmail.com>

On Sun, 2010-03-28 at 07:11 +0200, Frederic Weisbecker wrote:
> The trace event buffer used by perf to record raw sample events
> is typed as an array of char and may then not be aligned to 8
> by alloc_percpu().
> 
> But we need it to be aligned to 8 in sparc64 because we cast
> this buffer into a random structure type built by the TRACE_EVENT()
> macro to store the traces. So if a random 64 bits field is accessed
> inside, it may be not under an expected good alignment.
> 
> Use an array of long instead to force the appropriate alignment, and
> perform a compile time check to ensure the size in byte of the buffer
> is a multiple of sizeof(long) so that its actual size doesn't get
> shrinked under us.
> 
> This fixes unaligned accesses reported while using perf lock
> in sparc 64.
> 
> Suggested-by: David Miller <davem@davemloft.net>
> Suggested-by: Tejun Heo <htejun@gmail.com>
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: David Miller <davem@davemloft.net>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> ---
>  kernel/trace/trace_event_perf.c |   11 +++++++++--
>  1 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
> index 0709e4f..69941f3 100644
> --- a/kernel/trace/trace_event_perf.c
> +++ b/kernel/trace/trace_event_perf.c
> @@ -15,7 +15,12 @@ EXPORT_PER_CPU_SYMBOL_GPL(perf_trace_regs);
>  static char *perf_trace_buf;
>  static char *perf_trace_buf_nmi;
>  
> -typedef typeof(char [PERF_MAX_TRACE_SIZE]) perf_trace_t ;
> +/*
> + * Force it to be aligned to unsigned long to avoid misaligned accesses
> + * suprises
> + */
> +typedef typeof(unsigned long [PERF_MAX_TRACE_SIZE / sizeof(unsigned long)])
> +	perf_trace_t;
>  

wouldn't __aligned(8) be simpler?


  reply	other threads:[~2010-03-29  9:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-28  5:11 [GIT PULL] perf fixes Frederic Weisbecker
2010-03-28  5:11 ` [PATCH 1/2] perf: Correctly align perf event tracing buffer Frederic Weisbecker
2010-03-29  8:51   ` Peter Zijlstra [this message]
2010-03-29 17:16     ` Frederic Weisbecker
2010-03-29 17:20       ` Peter Zijlstra
2010-03-29 17:51         ` Frederic Weisbecker
2010-03-28  5:11 ` [PATCH 2/2] perf: Use hot regs with software sched switch/migrate events Frederic Weisbecker
2010-03-29  8:49   ` Peter Zijlstra
2010-03-29 17:47     ` Frederic Weisbecker
2010-03-29 18:05       ` Peter Zijlstra
2010-03-29 22:43         ` Frederic Weisbecker
2010-03-29 22:53           ` Frederic Weisbecker
2010-03-30 18:54           ` Peter Zijlstra
2010-03-30 19:14             ` Frederic Weisbecker
2010-03-29  3:33 ` [GIT PULL] perf fixes Ingo Molnar

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=1269852691.12097.162.camel@laptop \
    --to=peterz@infradead.org \
    --cc=acme@redhat.com \
    --cc=davem@davemloft.net \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=rostedt@goodmis.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.