History

Merge branch 'for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu

Pull percpu updates from Tejun Heo: "Contains Alex Shi's three patches to remove percpu_xxx() which overlap with this_cpu_xxx(). There shouldn't be any functional change." * 'for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: percpu: remove percpu_xxx() functions x86: replace percpu_xxx funcs with this_cpu_xxx net: replace percpu_xxx funcs with this_cpu_xxx or __this_cpu_xxx

Linus Torvalds committed 14 years ago

Commit f5c10182 parents c54894c 641b69525 files · +69 −124Browse files

Unified · Split

25 files
  1. arch/x86/include/asm/compat.h +1 −1
  2. arch/x86/include/asm/current.h +1 −1
  3. arch/x86/include/asm/desc.h +1 −0
  4. arch/x86/include/asm/fpu-internal.h +3 −3
  5. arch/x86/include/asm/hardirq.h +5 −4
  6. arch/x86/include/asm/irq_regs.h +2 −2
  7. arch/x86/include/asm/mmu_context.h +6 −6
  8. arch/x86/include/asm/percpu.h +10 −14
  9. arch/x86/include/asm/smp.h +2 −2
  10. arch/x86/include/asm/stackprotector.h +2 −2
  11. arch/x86/include/asm/thread_info.h +1 −1
  12. arch/x86/include/asm/tlbflush.h +2 −2
  13. arch/x86/kernel/cpu/common.c +1 −1
  14. arch/x86/kernel/cpu/mcheck/mce.c +2 −2
  15. arch/x86/kernel/i387.c +1 −1
  16. arch/x86/kernel/nmi_selftest.c +1 −0
  17. arch/x86/kernel/paravirt.c +6 −6
  18. arch/x86/kernel/process.c +1 −1
  19. arch/x86/kernel/process_32.c +1 −1
  20. arch/x86/kernel/process_64.c +5 −5
  21. arch/x86/mm/tlb.c +5 −5
  22. include/linux/percpu.h +0 −54
  23. include/linux/topology.h +2 −2
  24. net/netfilter/xt_TEE.c +6 −6
  25. net/socket.c +2 −2
arch/x86/include/asm/compat.h+1−1
@@ -229,7 +229,7 @@ static inline void __user *arch_compat_alloc_user_space(long len) · 228 unmodified lines
229229 sp = task_pt_regs(current)->sp;
230230 } else {
231231 /* -128 for the x32 ABI redzone */
232− sp = percpu_read(old_rsp) - 128;
232+ sp = this_cpu_read(old_rsp) - 128;
233233 }
234234
235235 return (void __user *)round_down(sp - len, 16);
arch/x86/include/asm/current.h+1−1
@@ -11,7 +11,7 @@ DECLARE_PER_CPU(struct task_struct *, current_task); · 10 unmodified lines
1111
1212 static __always_inline struct task_struct *get_current(void)
1313 {
14− return percpu_read_stable(current_task);
14+ return this_cpu_read_stable(current_task);
1515 }
1616
1717 #define current get_current()
arch/x86/include/asm/desc.h+1−0
@@ -6,6 +6,7 @@ · 5 unmodified lines
66 #include <asm/mmu.h>
77
88 #include <linux/smp.h>
9+#include <linux/percpu.h>
910
1011 static inline void fill_ldt(struct desc_struct *desc, const struct user_desc *info)
1112 {
arch/x86/include/asm/fpu-internal.h+3−3
@@ -290,14 +290,14 @@ static inline int __thread_has_fpu(struct task_struct *tsk) · 289 unmodified lines
290290 static inline void __thread_clear_has_fpu(struct task_struct *tsk)
291291 {
292292 tsk->thread.fpu.has_fpu = 0;
293− percpu_write(fpu_owner_task, NULL);
293+ this_cpu_write(fpu_owner_task, NULL);
294294 }
295295
296296 /* Must be paired with a 'clts' before! */
297297 static inline void __thread_set_has_fpu(struct task_struct *tsk)
298298 {
299299 tsk->thread.fpu.has_fpu = 1;
300− percpu_write(fpu_owner_task, tsk);
300+ this_cpu_write(fpu_owner_task, tsk);
301301 }
302302
303303 /*
@@ -344,7 +344,7 @@ typedef struct { int preload; } fpu_switch_t; · 40 unmodified lines
344344 */
345345 static inline int fpu_lazy_restore(struct task_struct *new, unsigned int cpu)
346346 {
347− return new == percpu_read_stable(fpu_owner_task) &&
347+ return new == this_cpu_read_stable(fpu_owner_task) &&
348348 cpu == new->thread.fpu.last_cpu;
349349 }
350350
arch/x86/include/asm/hardirq.h+5−4
@@ -35,14 +35,15 @@ DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); · 34 unmodified lines
3535
3636 #define __ARCH_IRQ_STAT
3737
38−#define inc_irq_stat(member) percpu_inc(irq_stat.member)
38+#define inc_irq_stat(member) this_cpu_inc(irq_stat.member)
3939
40−#define local_softirq_pending() percpu_read(irq_stat.__softirq_pending)
40+#define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending)
4141
4242 #define __ARCH_SET_SOFTIRQ_PENDING
4343
44−#define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x))
45−#define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x))
44+#define set_softirq_pending(x) \
45+ this_cpu_write(irq_stat.__softirq_pending, (x))
46+#define or_softirq_pending(x) this_cpu_or(irq_stat.__softirq_pending, (x))
4647
4748 extern void ack_bad_irq(unsigned int irq);
4849
arch/x86/include/asm/irq_regs.h+2−2
@@ -15,7 +15,7 @@ DECLARE_PER_CPU(struct pt_regs *, irq_regs); · 14 unmodified lines
1515
1616 static inline struct pt_regs *get_irq_regs(void)
1717 {
18− return percpu_read(irq_regs);
18+ return this_cpu_read(irq_regs);
1919 }
2020
2121 static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs)
@@ -23,7 +23,7 @@ static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) · 1 unmodified line
2323 struct pt_regs *old_regs;
2424
2525 old_regs = get_irq_regs();
26− percpu_write(irq_regs, new_regs);
26+ this_cpu_write(irq_regs, new_regs);
2727
2828 return old_regs;
2929 }
arch/x86/include/asm/mmu_context.h+6−6
@@ -25,8 +25,8 @@ void destroy_context(struct mm_struct *mm); · 24 unmodified lines
2525 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
2626 {
2727 #ifdef CONFIG_SMP
28− if (percpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
29− percpu_write(cpu_tlbstate.state, TLBSTATE_LAZY);
28+ if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
29+ this_cpu_write(cpu_tlbstate.state, TLBSTATE_LAZY);
3030 #endif
3131 }
3232
@@ -37,8 +37,8 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, · 4 unmodified lines
3737
3838 if (likely(prev != next)) {
3939 #ifdef CONFIG_SMP
40− percpu_write(cpu_tlbstate.state, TLBSTATE_OK);
41− percpu_write(cpu_tlbstate.active_mm, next);
40+ this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK);
41+ this_cpu_write(cpu_tlbstate.active_mm, next);
4242 #endif
4343 cpumask_set_cpu(cpu, mm_cpumask(next));
4444
@@ -56,8 +56,8 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, · 11 unmodified lines
5656 }
5757 #ifdef CONFIG_SMP
5858 else {
59− percpu_write(cpu_tlbstate.state, TLBSTATE_OK);
60− BUG_ON(percpu_read(cpu_tlbstate.active_mm) != next);
59+ this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK);
60+ BUG_ON(this_cpu_read(cpu_tlbstate.active_mm) != next);
6161
6262 if (!cpumask_test_and_set_cpu(cpu, mm_cpumask(next))) {
6363 /* We were in lazy tlb mode and leave_mm disabled
arch/x86/include/asm/percpu.h+10−14
@@ -46,7 +46,7 @@ · 45 unmodified lines
4646
4747 #ifdef CONFIG_SMP
4848 #define __percpu_prefix "%%"__stringify(__percpu_seg)":"
49−#define __my_cpu_offset percpu_read(this_cpu_off)
49+#define __my_cpu_offset this_cpu_read(this_cpu_off)
5050
5151 /*
5252 * Compared to the generic __my_cpu_offset version, the following
@@ -351,23 +351,15 @@ do { \ · 298 unmodified lines
351351 })
352352
353353 /*
354− * percpu_read() makes gcc load the percpu variable every time it is
355− * accessed while percpu_read_stable() allows the value to be cached.
356− * percpu_read_stable() is more efficient and can be used if its value
354+ * this_cpu_read() makes gcc load the percpu variable every time it is
355+ * accessed while this_cpu_read_stable() allows the value to be cached.
356+ * this_cpu_read_stable() is more efficient and can be used if its value
357357 * is guaranteed to be valid across cpus. The current users include
358358 * get_current() and get_thread_info() both of which are actually
359359 * per-thread variables implemented as per-cpu variables and thus
360360 * stable for the duration of the respective task.
361361 */
362−#define percpu_read(var) percpu_from_op("mov", var, "m" (var))
363−#define percpu_read_stable(var) percpu_from_op("mov", var, "p" (&(var)))
364−#define percpu_write(var, val) percpu_to_op("mov", var, val)
365−#define percpu_add(var, val) percpu_add_op(var, val)
366−#define percpu_sub(var, val) percpu_add_op(var, -(val))
367−#define percpu_and(var, val) percpu_to_op("and", var, val)
368−#define percpu_or(var, val) percpu_to_op("or", var, val)
369−#define percpu_xor(var, val) percpu_to_op("xor", var, val)
370−#define percpu_inc(var) percpu_unary_op("inc", var)
362+#define this_cpu_read_stable(var) percpu_from_op("mov", var, "p" (&(var)))
371363
372364 #define __this_cpu_read_1(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
373365 #define __this_cpu_read_2(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
@@ -512,7 +504,11 @@ static __always_inline int x86_this_cpu_constant_test_bit(unsigned int nr, · 138 unmodified lines
512504 {
513505 unsigned long __percpu *a = (unsigned long *)addr + nr / BITS_PER_LONG;
514506
515− return ((1UL << (nr % BITS_PER_LONG)) & percpu_read(*a)) != 0;
507+#ifdef CONFIG_X86_64
508+ return ((1UL << (nr % BITS_PER_LONG)) & __this_cpu_read_8(*a)) != 0;
509+#else
510+ return ((1UL << (nr % BITS_PER_LONG)) & __this_cpu_read_4(*a)) != 0;
511+#endif
516512 }
517513
518514 static inline int x86_this_cpu_variable_test_bit(int nr,
arch/x86/include/asm/smp.h+2−2
@@ -191,11 +191,11 @@ extern unsigned disabled_cpus __cpuinitdata; · 190 unmodified lines
191191 * from the initial startup. We map APIC_BASE very early in page_setup(),
192192 * so this is correct in the x86 case.
193193 */
194−#define raw_smp_processor_id() (percpu_read(cpu_number))
194+#define raw_smp_processor_id() (this_cpu_read(cpu_number))
195195 extern int safe_smp_processor_id(void);
196196
197197 #elif defined(CONFIG_X86_64_SMP)
198−#define raw_smp_processor_id() (percpu_read(cpu_number))
198+#define raw_smp_processor_id() (this_cpu_read(cpu_number))
199199
200200 #define stack_smp_processor_id() \
201201 ({ \
arch/x86/include/asm/stackprotector.h+2−2
@@ -75,9 +75,9 @@ static __always_inline void boot_init_stack_canary(void) · 74 unmodified lines
7575
7676 current->stack_canary = canary;
7777 #ifdef CONFIG_X86_64
78− percpu_write(irq_stack_union.stack_canary, canary);
78+ this_cpu_write(irq_stack_union.stack_canary, canary);
7979 #else
80− percpu_write(stack_canary.canary, canary);
80+ this_cpu_write(stack_canary.canary, canary);
8181 #endif
8282 }
8383
arch/x86/include/asm/thread_info.h+1−1
@@ -204,7 +204,7 @@ DECLARE_PER_CPU(unsigned long, kernel_stack); · 203 unmodified lines
204204 static inline struct thread_info *current_thread_info(void)
205205 {
206206 struct thread_info *ti;
207− ti = (void *)(percpu_read_stable(kernel_stack) +
207+ ti = (void *)(this_cpu_read_stable(kernel_stack) +
208208 KERNEL_STACK_OFFSET - THREAD_SIZE);
209209 return ti;
210210 }
arch/x86/include/asm/tlbflush.h+2−2
@@ -156,8 +156,8 @@ DECLARE_PER_CPU_SHARED_ALIGNED(struct tlb_state, cpu_tlbstate); · 155 unmodified lines
156156
157157 static inline void reset_lazy_tlbstate(void)
158158 {
159− percpu_write(cpu_tlbstate.state, 0);
160− percpu_write(cpu_tlbstate.active_mm, &init_mm);
159+ this_cpu_write(cpu_tlbstate.state, 0);
160+ this_cpu_write(cpu_tlbstate.active_mm, &init_mm);
161161 }
162162
163163 #endif /* SMP */
arch/x86/kernel/cpu/common.c+1−1
@@ -1185,7 +1185,7 @@ void __cpuinit cpu_init(void) · 1184 unmodified lines
11851185 oist = &per_cpu(orig_ist, cpu);
11861186
11871187 #ifdef CONFIG_NUMA
1188− if (cpu != 0 && percpu_read(numa_node) == 0 &&
1188+ if (cpu != 0 && this_cpu_read(numa_node) == 0 &&
11891189 early_cpu_to_node(cpu) != NUMA_NO_NODE)
11901190 set_numa_node(early_cpu_to_node(cpu));
11911191 #endif
arch/x86/kernel/cpu/mcheck/mce.c+2−2
@@ -583,7 +583,7 @@ void machine_check_poll(enum mcp_flags flags, mce_banks_t *b) · 582 unmodified lines
583583 struct mce m;
584584 int i;
585585
586− percpu_inc(mce_poll_count);
586+ this_cpu_inc(mce_poll_count);
587587
588588 mce_gather_info(&m, NULL);
589589
@@ -1017,7 +1017,7 @@ void do_machine_check(struct pt_regs *regs, long error_code) · 427 unmodified lines
10171017
10181018 atomic_inc(&mce_entry);
10191019
1020− percpu_inc(mce_exception_count);
1020+ this_cpu_inc(mce_exception_count);
10211021
10221022 if (!banks)
10231023 goto out;
arch/x86/kernel/i387.c+1−1
@@ -88,7 +88,7 @@ void kernel_fpu_begin(void) · 87 unmodified lines
8888 __thread_clear_has_fpu(me);
8989 /* We do 'stts()' in kernel_fpu_end() */
9090 } else {
91− percpu_write(fpu_owner_task, NULL);
91+ this_cpu_write(fpu_owner_task, NULL);
9292 clts();
9393 }
9494 }
arch/x86/kernel/nmi_selftest.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
1313 #include <linux/cpumask.h>
1414 #include <linux/delay.h>
1515 #include <linux/init.h>
16+#include <linux/percpu.h>
1617
1718 #include <asm/apic.h>
1819 #include <asm/nmi.h>
arch/x86/kernel/paravirt.c+6−6
@@ -241,16 +241,16 @@ static DEFINE_PER_CPU(enum paravirt_lazy_mode, paravirt_lazy_mode) = PARAVIRT_LA · 240 unmodified lines
241241
242242 static inline void enter_lazy(enum paravirt_lazy_mode mode)
243243 {
244− BUG_ON(percpu_read(paravirt_lazy_mode) != PARAVIRT_LAZY_NONE);
244+ BUG_ON(this_cpu_read(paravirt_lazy_mode) != PARAVIRT_LAZY_NONE);
245245
246− percpu_write(paravirt_lazy_mode, mode);
246+ this_cpu_write(paravirt_lazy_mode, mode);
247247 }
248248
249249 static void leave_lazy(enum paravirt_lazy_mode mode)
250250 {
251− BUG_ON(percpu_read(paravirt_lazy_mode) != mode);
251+ BUG_ON(this_cpu_read(paravirt_lazy_mode) != mode);
252252
253− percpu_write(paravirt_lazy_mode, PARAVIRT_LAZY_NONE);
253+ this_cpu_write(paravirt_lazy_mode, PARAVIRT_LAZY_NONE);
254254 }
255255
256256 void paravirt_enter_lazy_mmu(void)
@@ -267,7 +267,7 @@ void paravirt_start_context_switch(struct task_struct *prev) · 10 unmodified lines
267267 {
268268 BUG_ON(preemptible());
269269
270− if (percpu_read(paravirt_lazy_mode) == PARAVIRT_LAZY_MMU) {
270+ if (this_cpu_read(paravirt_lazy_mode) == PARAVIRT_LAZY_MMU) {
271271 arch_leave_lazy_mmu_mode();
272272 set_ti_thread_flag(task_thread_info(prev), TIF_LAZY_MMU_UPDATES);
273273 }
@@ -289,7 +289,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void) · 15 unmodified lines
289289 if (in_interrupt())
290290 return PARAVIRT_LAZY_NONE;
291291
292− return percpu_read(paravirt_lazy_mode);
292+ return this_cpu_read(paravirt_lazy_mode);
293293 }
294294
295295 void arch_flush_lazy_mmu_mode(void)
arch/x86/kernel/process.c+1−1
@@ -385,7 +385,7 @@ static inline void play_dead(void) · 384 unmodified lines
385385 #ifdef CONFIG_X86_64
386386 void enter_idle(void)
387387 {
388− percpu_write(is_idle, 1);
388+ this_cpu_write(is_idle, 1);
389389 atomic_notifier_call_chain(&idle_notifier, IDLE_START, NULL);
390390 }
391391
arch/x86/kernel/process_32.c+1−1
@@ -302,7 +302,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 301 unmodified lines
302302
303303 switch_fpu_finish(next_p, fpu);
304304
305− percpu_write(current_task, next_p);
305+ this_cpu_write(current_task, next_p);
306306
307307 return prev_p;
308308 }
arch/x86/kernel/process_64.c+5−5
@@ -237,7 +237,7 @@ start_thread_common(struct pt_regs *regs, unsigned long new_ip, · 236 unmodified lines
237237 current->thread.usersp = new_sp;
238238 regs->ip = new_ip;
239239 regs->sp = new_sp;
240− percpu_write(old_rsp, new_sp);
240+ this_cpu_write(old_rsp, new_sp);
241241 regs->cs = _cs;
242242 regs->ss = _ss;
243243 regs->flags = X86_EFLAGS_IF;
@@ -359,11 +359,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 115 unmodified lines
359359 /*
360360 * Switch the PDA and FPU contexts.
361361 */
362− prev->usersp = percpu_read(old_rsp);
363− percpu_write(old_rsp, next->usersp);
364− percpu_write(current_task, next_p);
362+ prev->usersp = this_cpu_read(old_rsp);
363+ this_cpu_write(old_rsp, next->usersp);
364+ this_cpu_write(current_task, next_p);
365365
366− percpu_write(kernel_stack,
366+ this_cpu_write(kernel_stack,
367367 (unsigned long)task_stack_page(next_p) +
368368 THREAD_SIZE - KERNEL_STACK_OFFSET);
369369
arch/x86/mm/tlb.c+5−5
@@ -61,10 +61,10 @@ static DEFINE_PER_CPU_READ_MOSTLY(int, tlb_vector_offset); · 60 unmodified lines
6161 */
6262 void leave_mm(int cpu)
6363 {
64− if (percpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
64+ if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
6565 BUG();
6666 cpumask_clear_cpu(cpu,
67− mm_cpumask(percpu_read(cpu_tlbstate.active_mm)));
67+ mm_cpumask(this_cpu_read(cpu_tlbstate.active_mm)));
6868 load_cr3(swapper_pg_dir);
6969 }
7070 EXPORT_SYMBOL_GPL(leave_mm);
@@ -152,8 +152,8 @@ void smp_invalidate_interrupt(struct pt_regs *regs) · 81 unmodified lines
152152 * BUG();
153153 */
154154
155− if (f->flush_mm == percpu_read(cpu_tlbstate.active_mm)) {
156− if (percpu_read(cpu_tlbstate.state) == TLBSTATE_OK) {
155+ if (f->flush_mm == this_cpu_read(cpu_tlbstate.active_mm)) {
156+ if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) {
157157 if (f->flush_va == TLB_FLUSH_ALL)
158158 local_flush_tlb();
159159 else
@@ -322,7 +322,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long va) · 162 unmodified lines
322322 static void do_flush_tlb_all(void *info)
323323 {
324324 __flush_tlb_all();
325− if (percpu_read(cpu_tlbstate.state) == TLBSTATE_LAZY)
325+ if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_LAZY)
326326 leave_mm(smp_processor_id());
327327 }
328328
include/linux/percpu.h+0−54
@@ -165,60 +165,6 @@ extern phys_addr_t per_cpu_ptr_to_phys(void *addr); · 164 unmodified lines
165165 #define alloc_percpu(type) \
166166 (typeof(type) __percpu *)__alloc_percpu(sizeof(type), __alignof__(type))
167167
168−/*
169− * Optional methods for optimized non-lvalue per-cpu variable access.
170− *
171− * @var can be a percpu variable or a field of it and its size should
172− * equal char, int or long. percpu_read() evaluates to a lvalue and
173− * all others to void.
174− *
175− * These operations are guaranteed to be atomic.
176− * The generic versions disable interrupts. Archs are
177− * encouraged to implement single-instruction alternatives which don't
178− * require protection.
179− */
180−#ifndef percpu_read
181−# define percpu_read(var) \
182− ({ \
183− typeof(var) *pr_ptr__ = &(var); \
184− typeof(var) pr_ret__; \
185− pr_ret__ = get_cpu_var(*pr_ptr__); \
186− put_cpu_var(*pr_ptr__); \
187− pr_ret__; \
188− })
189−#endif
190−
191−#define __percpu_generic_to_op(var, val, op) \
192−do { \
193− typeof(var) *pgto_ptr__ = &(var); \
194− get_cpu_var(*pgto_ptr__) op val; \
195− put_cpu_var(*pgto_ptr__); \
196−} while (0)
197−
198−#ifndef percpu_write
199−# define percpu_write(var, val) __percpu_generic_to_op(var, (val), =)
200−#endif
201−
202−#ifndef percpu_add
203−# define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=)
204−#endif
205−
206−#ifndef percpu_sub
207−# define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=)
208−#endif
209−
210−#ifndef percpu_and
211−# define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=)
212−#endif
213−
214−#ifndef percpu_or
215−# define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=)
216−#endif
217−
218−#ifndef percpu_xor
219−# define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=)
220−#endif
221−
222168 /*
223169 * Branching function to split up a function into a set of functions that
224170 * are called for different scalar sizes of the objects handled.
include/linux/topology.h+2−2
@@ -239,7 +239,7 @@ static inline int cpu_to_node(int cpu) · 238 unmodified lines
239239 #ifndef set_numa_node
240240 static inline void set_numa_node(int node)
241241 {
242− percpu_write(numa_node, node);
242+ this_cpu_write(numa_node, node);
243243 }
244244 #endif
245245
@@ -274,7 +274,7 @@ DECLARE_PER_CPU(int, _numa_mem_); · 28 unmodified lines
274274 #ifndef set_numa_mem
275275 static inline void set_numa_mem(int node)
276276 {
277− percpu_write(_numa_mem_, node);
277+ this_cpu_write(_numa_mem_, node);
278278 }
279279 #endif
280280
net/netfilter/xt_TEE.c+6−6
@@ -87,7 +87,7 @@ tee_tg4(struct sk_buff *skb, const struct xt_action_param *par) · 86 unmodified lines
8787 const struct xt_tee_tginfo *info = par->targinfo;
8888 struct iphdr *iph;
8989
90− if (percpu_read(tee_active))
90+ if (__this_cpu_read(tee_active))
9191 return XT_CONTINUE;
9292 /*
9393 * Copy the skb, and route the copy. Will later return %XT_CONTINUE for
@@ -124,9 +124,9 @@ tee_tg4(struct sk_buff *skb, const struct xt_action_param *par) · 30 unmodified lines
124124 ip_send_check(iph);
125125
126126 if (tee_tg_route4(skb, info)) {
127− percpu_write(tee_active, true);
127+ __this_cpu_write(tee_active, true);
128128 ip_local_out(skb);
129− percpu_write(tee_active, false);
129+ __this_cpu_write(tee_active, false);
130130 } else {
131131 kfree_skb(skb);
132132 }
@@ -168,7 +168,7 @@ tee_tg6(struct sk_buff *skb, const struct xt_action_param *par) · 35 unmodified lines
168168 {
169169 const struct xt_tee_tginfo *info = par->targinfo;
170170
171− if (percpu_read(tee_active))
171+ if (__this_cpu_read(tee_active))
172172 return XT_CONTINUE;
173173 skb = pskb_copy(skb, GFP_ATOMIC);
174174 if (skb == NULL)
@@ -186,9 +186,9 @@ tee_tg6(struct sk_buff *skb, const struct xt_action_param *par) · 11 unmodified lines
186186 --iph->hop_limit;
187187 }
188188 if (tee_tg_route6(skb, info)) {
189− percpu_write(tee_active, true);
189+ __this_cpu_write(tee_active, true);
190190 ip6_local_out(skb);
191− percpu_write(tee_active, false);
191+ __this_cpu_write(tee_active, false);
192192 } else {
193193 kfree_skb(skb);
194194 }
net/socket.c+2−2
@@ -479,7 +479,7 @@ static struct socket *sock_alloc(void) · 478 unmodified lines
479479 inode->i_uid = current_fsuid();
480480 inode->i_gid = current_fsgid();
481481
482− percpu_add(sockets_in_use, 1);
482+ this_cpu_add(sockets_in_use, 1);
483483 return sock;
484484 }
485485
@@ -522,7 +522,7 @@ void sock_release(struct socket *sock) · 36 unmodified lines
522522 if (rcu_dereference_protected(sock->wq, 1)->fasync_list)
523523 printk(KERN_ERR "sock_release: fasync list not empty!\n");
524524
525− percpu_sub(sockets_in_use, 1);
525+ this_cpu_sub(sockets_in_use, 1);
526526 if (!sock->file) {
527527 iput(SOCK_INODE(sock));
528528 return;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t