summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2020-08-18 15:57:51 +0200
committerIngo Molnar <mingo@kernel.org>2020-09-01 09:58:06 +0200
commita945c8345ec0decb2f1a7f19a8c5e60bcb1dd1eb (patch)
tree11d4ff482c11945ef30fe5c88493a2b49202ad27 /arch/x86/kernel/setup.c
parent6c3fce794e9d2a5ce3a948962d0808a459c40a84 (diff)
downloadlinux-stable-a945c8345ec0decb2f1a7f19a8c5e60bcb1dd1eb.tar.gz
linux-stable-a945c8345ec0decb2f1a7f19a8c5e60bcb1dd1eb.tar.bz2
linux-stable-a945c8345ec0decb2f1a7f19a8c5e60bcb1dd1eb.zip
static_call: Allow early init
In order to use static_call() to wire up x86_pmu, we need to initialize earlier, specifically before memory allocation works; copy some of the tricks from jump_label to enable this. Primarily we overload key->next to store a sites pointer when there are no modules, this avoids having to use kmalloc() to initialize the sites and allows us to run much earlier. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Link: https://lore.kernel.org/r/20200818135805.220737930@infradead.org
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r--arch/x86/kernel/setup.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 3511736fbc74..799a6de439ea 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -19,6 +19,7 @@
#include <linux/hugetlb.h>
#include <linux/tboot.h>
#include <linux/usb/xhci-dbgp.h>
+#include <linux/static_call.h>
#include <uapi/linux/mount.h>
@@ -849,6 +850,7 @@ void __init setup_arch(char **cmdline_p)
early_cpu_init();
arch_init_ideal_nops();
jump_label_init();
+ static_call_init();
early_ioremap_init();
setup_olpc_ofw_pgd();