lkml.org 
[lkml]   [2008]   [May]   [13]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateTue, 13 May 2008 12:25:26 +0200
FromEric Dumazet <>
SubjectRe: oprofile BUG() in current kernel.
Gianni Tedesco a écrit :
>
>
> Nope, exact same bad paging request in kernel mode... probably the bug
> is something deep in oprofile then?
> 
Hum... Are you using oprofile as a module or statically included in kernel ?

Current module loader only allocates percpu room by examining 
".data.percpu" section and should be augmented to also look at 
".data.percpu.shared_aligned"
Or, change DEFINE_PER_CPU_SHARED_ALIGNED() for modules (to use 
".data.percpu" only)

Anyway, with the per_cpu conversion of cpu_buffer, we dont need to 
request cache_line alignment anymore

[PATCH] oprofile: Dont request cache line alignment for cpu_buffer

Alignment was previously requested because cpu_buffer was an [NR_CPUS] 
array, to avoid cache line sharing between CPUS.

After commit 608dfddd845da5ab6accef70154c8910529699f7 ( 
oprofile: change cpu_buffer from array to per_cpu variable ),
we dont need to force an alignement anymore since cpu_buffer sits in 
per_cpu zone.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>


diff --git a/drivers/oprofile/cpu_buffer.c b/drivers/oprofile/cpu_buffer.c
index efcbf4b..2450b3a 100644
--- a/drivers/oprofile/cpu_buffer.c
+++ b/drivers/oprofile/cpu_buffer.c
@@ -27,7 +27,7 @@
 #include "buffer_sync.h"
 #include "oprof.h"
 
-DEFINE_PER_CPU_SHARED_ALIGNED(struct oprofile_cpu_buffer, cpu_buffer);
+DEFINE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer);
 
 static void wq_sync_buffer(struct work_struct *work);
 
diff --git a/drivers/oprofile/cpu_buffer.h b/drivers/oprofile/cpu_buffer.h
index 1358817..c3e366b 100644
--- a/drivers/oprofile/cpu_buffer.h
+++ b/drivers/oprofile/cpu_buffer.h
@@ -46,7 +46,7 @@ struct oprofile_cpu_buffer {
 	unsigned long sample_invalid_eip;
 	int cpu;
 	struct delayed_work work;
-} ____cacheline_aligned;
+};
 
 DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer);
 
\
 
 \ /
  Last update: 2008-05-13 12:29    [from the cache]
©2003-2008