aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/irq_32.c4
-rw-r--r--arch/x86/kernel/vmlinux.lds.S2
-rw-r--r--include/linux/percpu-defs.h12
3 files changed, 15 insertions, 3 deletions
diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index 3b5609f54c4b..50fbbe60e507 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -60,8 +60,8 @@ union irq_ctx {
60static DEFINE_PER_CPU(union irq_ctx *, hardirq_ctx); 60static DEFINE_PER_CPU(union irq_ctx *, hardirq_ctx);
61static DEFINE_PER_CPU(union irq_ctx *, softirq_ctx); 61static DEFINE_PER_CPU(union irq_ctx *, softirq_ctx);
62 62
63static DEFINE_PER_CPU_PAGE_ALIGNED(union irq_ctx, hardirq_stack); 63static DEFINE_PER_CPU_MULTIPAGE_ALIGNED(union irq_ctx, hardirq_stack, THREAD_SIZE);
64static DEFINE_PER_CPU_PAGE_ALIGNED(union irq_ctx, softirq_stack); 64static DEFINE_PER_CPU_MULTIPAGE_ALIGNED(union irq_ctx, softirq_stack, THREAD_SIZE);
65 65
66static void call_on_stack(void *func, void *stack) 66static void call_on_stack(void *func, void *stack)
67{ 67{
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index d0bb52296fa3..bb899475355d 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -273,7 +273,7 @@ SECTIONS
273 } 273 }
274 274
275#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP) 275#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
276 PERCPU(PAGE_SIZE) 276 PERCPU(THREAD_SIZE)
277#endif 277#endif
278 278
279 . = ALIGN(PAGE_SIZE); 279 . = ALIGN(PAGE_SIZE);
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
index ce2dc655cd1d..ab20d119a85d 100644
--- a/include/linux/percpu-defs.h
+++ b/include/linux/percpu-defs.h
@@ -139,6 +139,18 @@
139 __aligned(PAGE_SIZE) 139 __aligned(PAGE_SIZE)
140 140
141/* 141/*
142 * Declaration/definition used for large per-CPU variables that must be
143 * aligned to something larger than the pagesize.
144 */
145#define DECLARE_PER_CPU_MULTIPAGE_ALIGNED(type, name, size) \
146 DECLARE_PER_CPU_SECTION(type, name, "..page_aligned") \
147 __aligned(size)
148
149#define DEFINE_PER_CPU_MULTIPAGE_ALIGNED(type, name, size) \
150 DEFINE_PER_CPU_SECTION(type, name, "..page_aligned") \
151 __aligned(size)
152
153/*
142 * Intermodule exports for per-CPU variables. sparse forgets about 154 * Intermodule exports for per-CPU variables. sparse forgets about
143 * address space across EXPORT_SYMBOL(), change EXPORT_SYMBOL() to 155 * address space across EXPORT_SYMBOL(), change EXPORT_SYMBOL() to
144 * noop if __CHECKER__. 156 * noop if __CHECKER__.