Messages in this thread Patch in this message | | | Date | Tue, 13 May 2008 12:25:26 +0200 | From | Eric Dumazet <> | Subject | Re: 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); | |