Messages in this thread | | | Date | Thu, 17 Oct 2013 19:22:12 +0000 | From | Christoph Lameter <> | Subject | Re: [PATCH 6/6] percpu: Add preemption checks to __this_cpu ops |
| |
On Wed, 16 Oct 2013, Peter Zijlstra wrote:
> On Wed, Oct 16, 2013 at 06:25:37PM +0200, Peter Zijlstra wrote: > > To rename __this_cpu to raw_cpu; it would then need a little manual > > fixup and generic __this_cpu -> raW_cpu map, which can add the > > preemption check. > > Something like so perhaps... only lightly compile tested > (x86_64-defconfig).
First portion looks good to me on first glance.
> diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h > index 8729723..95e3532 100644 > --- a/arch/x86/include/asm/preempt.h > +++ b/arch/x86/include/asm/preempt.h > @@ -13,12 +13,12 @@ DECLARE_PER_CPU(int, __preempt_count); > */ > static __always_inline int preempt_count(void) > { > - return __this_cpu_read_4(__preempt_count) & ~PREEMPT_NEED_RESCHED; > + return raw_cpu_read_4(__preempt_count) & ~PREEMPT_NEED_RESCHED; > } > > static __always_inline void preempt_count_set(int pc) > { > - __this_cpu_write_4(__preempt_count, pc); > + raw_cpu_write_4(__preempt_count, pc); > }
Huh? What happened here? Why do we use the __this_cpu_read_4 here? This should be just raw_cpu_write()
And more following
> diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h > index d17784e..b5aca54 100644 > --- a/include/asm-generic/percpu.h > +++ b/include/asm-generic/percpu.h > @@ -56,17 +56,18 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; > #define per_cpu(var, cpu) \ > (*SHIFT_PERCPU_PTR(&(var), per_cpu_offset(cpu))) > > -#ifndef __this_cpu_ptr > -#define __this_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset) > +#ifndef raw_cpu_ptr > +#define raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset) > #endif
Got another patch here that gets rid of __this_cpu_ptr and uses raw_cpu_ptr everywhere instead. Would be good to make this all symmetric.
| |