aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorJan Beulich <JBeulich@suse.com>2014-11-04 03:26:42 -0500
committerThomas Gleixner <tglx@linutronix.de>2014-11-04 14:13:28 -0500
commit2c773dd31fbacbbb6425f8a9d3f97e0010272368 (patch)
tree6f531b6c8527ec2adf2b892dc1b9e98be9526407 /arch/x86
parentfb7183ef3c016d9067ff83f3ff2455be1818f902 (diff)
x86: Convert a few more per-CPU items to read-mostly ones
Both this_cpu_off and cpu_info aren't getting modified post boot, yet are being accessed on enough code paths that grouping them with other frequently read items seems desirable. For cpu_info this at the same time implies removing the cache line alignment (which afaict became pointless when it got converted to per-CPU data years ago). Signed-off-by: Jan Beulich <jbeulich@suse.com> Link: http://lkml.kernel.org/r/54589BD20200007800044A84@mail.emea.novell.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/include/asm/percpu.h2
-rw-r--r--arch/x86/include/asm/processor.h4
-rw-r--r--arch/x86/kernel/setup_percpu.c2
-rw-r--r--arch/x86/kernel/smpboot.c2
4 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
index fd472181a1d0..74da3178d776 100644
--- a/arch/x86/include/asm/percpu.h
+++ b/arch/x86/include/asm/percpu.h
@@ -522,7 +522,7 @@ static inline int x86_this_cpu_variable_test_bit(int nr,
522#include <asm-generic/percpu.h> 522#include <asm-generic/percpu.h>
523 523
524/* We can use this directly for local CPU (faster). */ 524/* We can use this directly for local CPU (faster). */
525DECLARE_PER_CPU(unsigned long, this_cpu_off); 525DECLARE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off);
526 526
527#endif /* !__ASSEMBLY__ */ 527#endif /* !__ASSEMBLY__ */
528 528
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index eb71ec794732..3aeb31cc0511 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -127,7 +127,7 @@ struct cpuinfo_x86 {
127 /* Index into per_cpu list: */ 127 /* Index into per_cpu list: */
128 u16 cpu_index; 128 u16 cpu_index;
129 u32 microcode; 129 u32 microcode;
130} __attribute__((__aligned__(SMP_CACHE_BYTES))); 130};
131 131
132#define X86_VENDOR_INTEL 0 132#define X86_VENDOR_INTEL 0
133#define X86_VENDOR_CYRIX 1 133#define X86_VENDOR_CYRIX 1
@@ -151,7 +151,7 @@ extern __u32 cpu_caps_cleared[NCAPINTS];
151extern __u32 cpu_caps_set[NCAPINTS]; 151extern __u32 cpu_caps_set[NCAPINTS];
152 152
153#ifdef CONFIG_SMP 153#ifdef CONFIG_SMP
154DECLARE_PER_CPU_SHARED_ALIGNED(struct cpuinfo_x86, cpu_info); 154DECLARE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info);
155#define cpu_data(cpu) per_cpu(cpu_info, cpu) 155#define cpu_data(cpu) per_cpu(cpu_info, cpu)
156#else 156#else
157#define cpu_info boot_cpu_data 157#define cpu_info boot_cpu_data
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
index 5cdff0357746..e4fcb87ba7a6 100644
--- a/arch/x86/kernel/setup_percpu.c
+++ b/arch/x86/kernel/setup_percpu.c
@@ -30,7 +30,7 @@ EXPORT_PER_CPU_SYMBOL(cpu_number);
30#define BOOT_PERCPU_OFFSET 0 30#define BOOT_PERCPU_OFFSET 0
31#endif 31#endif
32 32
33DEFINE_PER_CPU(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET; 33DEFINE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET;
34EXPORT_PER_CPU_SYMBOL(this_cpu_off); 34EXPORT_PER_CPU_SYMBOL(this_cpu_off);
35 35
36unsigned long __per_cpu_offset[NR_CPUS] __read_mostly = { 36unsigned long __per_cpu_offset[NR_CPUS] __read_mostly = {
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 4d2128ac70bd..a03ec604ceed 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -99,7 +99,7 @@ EXPORT_PER_CPU_SYMBOL(cpu_core_map);
99DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map); 99DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map);
100 100
101/* Per CPU bogomips and other parameters */ 101/* Per CPU bogomips and other parameters */
102DEFINE_PER_CPU_SHARED_ALIGNED(struct cpuinfo_x86, cpu_info); 102DEFINE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info);
103EXPORT_PER_CPU_SYMBOL(cpu_info); 103EXPORT_PER_CPU_SYMBOL(cpu_info);
104 104
105atomic_t init_deasserted; 105atomic_t init_deasserted;