aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-generic/vmlinux.lds.h4
-rw-r--r--include/linux/percpu-defs.h9
2 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 8a92a170fb7d..d7e7b21511b1 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -677,7 +677,9 @@
677 - LOAD_OFFSET) { \ 677 - LOAD_OFFSET) { \
678 VMLINUX_SYMBOL(__per_cpu_start) = .; \ 678 VMLINUX_SYMBOL(__per_cpu_start) = .; \
679 *(.data..percpu..first) \ 679 *(.data..percpu..first) \
680 . = ALIGN(PAGE_SIZE); \
680 *(.data..percpu..page_aligned) \ 681 *(.data..percpu..page_aligned) \
682 *(.data..percpu..readmostly) \
681 *(.data..percpu) \ 683 *(.data..percpu) \
682 *(.data..percpu..shared_aligned) \ 684 *(.data..percpu..shared_aligned) \
683 VMLINUX_SYMBOL(__per_cpu_end) = .; \ 685 VMLINUX_SYMBOL(__per_cpu_end) = .; \
@@ -703,6 +705,8 @@
703 VMLINUX_SYMBOL(__per_cpu_load) = .; \ 705 VMLINUX_SYMBOL(__per_cpu_load) = .; \
704 VMLINUX_SYMBOL(__per_cpu_start) = .; \ 706 VMLINUX_SYMBOL(__per_cpu_start) = .; \
705 *(.data..percpu..first) \ 707 *(.data..percpu..first) \
708 . = ALIGN(PAGE_SIZE); \
709 *(.data..percpu..readmostly) \
706 *(.data..percpu..page_aligned) \ 710 *(.data..percpu..page_aligned) \
707 *(.data..percpu) \ 711 *(.data..percpu) \
708 *(.data..percpu..shared_aligned) \ 712 *(.data..percpu..shared_aligned) \
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
index ce2dc655cd1d..27ef6b190ea6 100644
--- a/include/linux/percpu-defs.h
+++ b/include/linux/percpu-defs.h
@@ -139,6 +139,15 @@
139 __aligned(PAGE_SIZE) 139 __aligned(PAGE_SIZE)
140 140
141/* 141/*
142 * Declaration/definition used for per-CPU variables that must be read mostly.
143 */
144#define DECLARE_PER_CPU_READ_MOSTLY(type, name) \
145 DECLARE_PER_CPU_SECTION(type, name, "..readmostly")
146
147#define DEFINE_PER_CPU_READ_MOSTLY(type, name) \
148 DEFINE_PER_CPU_SECTION(type, name, "..readmostly")
149
150/*
142 * Intermodule exports for per-CPU variables. sparse forgets about 151 * Intermodule exports for per-CPU variables. sparse forgets about
143 * address space across EXPORT_SYMBOL(), change EXPORT_SYMBOL() to 152 * address space across EXPORT_SYMBOL(), change EXPORT_SYMBOL() to
144 * noop if __CHECKER__. 153 * noop if __CHECKER__.