diff options
author | Jan Beulich <JBeulich@suse.com> | 2014-11-04 03:26:42 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2014-11-04 14:13:28 -0500 |
commit | 2c773dd31fbacbbb6425f8a9d3f97e0010272368 (patch) | |
tree | 6f531b6c8527ec2adf2b892dc1b9e98be9526407 /arch/x86 | |
parent | fb7183ef3c016d9067ff83f3ff2455be1818f902 (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.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/processor.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/setup_percpu.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot.c | 2 |
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). */ |
525 | DECLARE_PER_CPU(unsigned long, this_cpu_off); | 525 | DECLARE_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]; | |||
151 | extern __u32 cpu_caps_set[NCAPINTS]; | 151 | extern __u32 cpu_caps_set[NCAPINTS]; |
152 | 152 | ||
153 | #ifdef CONFIG_SMP | 153 | #ifdef CONFIG_SMP |
154 | DECLARE_PER_CPU_SHARED_ALIGNED(struct cpuinfo_x86, cpu_info); | 154 | DECLARE_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 | ||
33 | DEFINE_PER_CPU(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET; | 33 | DEFINE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET; |
34 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); | 34 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); |
35 | 35 | ||
36 | unsigned long __per_cpu_offset[NR_CPUS] __read_mostly = { | 36 | unsigned 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); | |||
99 | DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map); | 99 | DEFINE_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 */ |
102 | DEFINE_PER_CPU_SHARED_ALIGNED(struct cpuinfo_x86, cpu_info); | 102 | DEFINE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info); |
103 | EXPORT_PER_CPU_SYMBOL(cpu_info); | 103 | EXPORT_PER_CPU_SYMBOL(cpu_info); |
104 | 104 | ||
105 | atomic_t init_deasserted; | 105 | atomic_t init_deasserted; |