Merge commit '63cc8c75156462d4b42cbdd76c293b7eee7ddbfe':
"percpu: introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro" into x86/core Conflicts: arch/x86/kernel/cpu/common.c Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
commit
d3d0ba7b8f
4 changed files with 10 additions and 1 deletions
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
static struct cpu_dev *this_cpu __cpuinitdata;
|
static struct cpu_dev *this_cpu __cpuinitdata;
|
||||||
|
|
||||||
DEFINE_PER_CPU(struct gdt_page, gdt_page) = { .gdt = {
|
DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {
|
||||||
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } },
|
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } },
|
||||||
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } },
|
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } },
|
||||||
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } },
|
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } },
|
||||||
|
|
|
@ -180,6 +180,7 @@ SECTIONS
|
||||||
. = ALIGN(PAGE_SIZE);
|
. = ALIGN(PAGE_SIZE);
|
||||||
.data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
|
.data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
|
||||||
__per_cpu_start = .;
|
__per_cpu_start = .;
|
||||||
|
*(.data.percpu.page_aligned)
|
||||||
*(.data.percpu)
|
*(.data.percpu)
|
||||||
*(.data.percpu.shared_aligned)
|
*(.data.percpu.shared_aligned)
|
||||||
__per_cpu_end = .;
|
__per_cpu_end = .;
|
||||||
|
|
|
@ -385,6 +385,7 @@
|
||||||
. = ALIGN(align); \
|
. = ALIGN(align); \
|
||||||
VMLINUX_SYMBOL(__per_cpu_start) = .; \
|
VMLINUX_SYMBOL(__per_cpu_start) = .; \
|
||||||
.data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \
|
.data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \
|
||||||
|
*(.data.percpu.page_aligned) \
|
||||||
*(.data.percpu) \
|
*(.data.percpu) \
|
||||||
*(.data.percpu.shared_aligned) \
|
*(.data.percpu.shared_aligned) \
|
||||||
} \
|
} \
|
||||||
|
|
|
@ -23,12 +23,19 @@
|
||||||
__attribute__((__section__(SHARED_ALIGNED_SECTION))) \
|
__attribute__((__section__(SHARED_ALIGNED_SECTION))) \
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name \
|
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name \
|
||||||
____cacheline_aligned_in_smp
|
____cacheline_aligned_in_smp
|
||||||
|
|
||||||
|
#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
|
||||||
|
__attribute__((__section__(".data.percpu.page_aligned"))) \
|
||||||
|
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
||||||
#else
|
#else
|
||||||
#define DEFINE_PER_CPU(type, name) \
|
#define DEFINE_PER_CPU(type, name) \
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
||||||
|
|
||||||
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
|
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
|
||||||
DEFINE_PER_CPU(type, name)
|
DEFINE_PER_CPU(type, name)
|
||||||
|
|
||||||
|
#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
|
||||||
|
DEFINE_PER_CPU(type, name)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
|
#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
|
||||||
|
|
Loading…
Reference in a new issue