[RFC v2 4/6] x86/init: use linker table for i386 early setup

From: Luis R. Rodriguez
Date: Fri Feb 19 2016 - 09:17:24 EST


This also annotates this is only used for PC and
lguest hardware subarchitectures.

v2: add X86_SUBARCH_XEN as well, as noted by Konrad,
now tested by 0-day bot.

Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx>
---
arch/x86/kernel/head32.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
index 768fa3888066..0b41626e57fc 100644
--- a/arch/x86/kernel/head32.c
+++ b/arch/x86/kernel/head32.c
@@ -21,12 +21,16 @@
#include <asm/bootparam_utils.h>
#include <asm/x86_init.h>

-static void __init i386_default_early_setup(void)
+static void __init i386_set_setup_funcs(void)
{
/* Initialize 32bit specific setup functions */
x86_init.resources.reserve_resources = i386_reserve_resources;
x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc;
}
+x86_init_early(BIT(X86_SUBARCH_PC) |
+ BIT(X86_SUBARCH_LGUEST) |
+ BIT(X86_SUBARCH_XEN),
+ NULL, NULL, i386_set_setup_funcs);

asmlinkage __visible void __init i386_start_kernel(void)
{
@@ -41,9 +45,6 @@ asmlinkage __visible void __init i386_start_kernel(void)
case X86_SUBARCH_CE4100:
x86_ce4100_early_setup();
break;
- default:
- i386_default_early_setup();
- break;
}

x86_init_fn_init_tables();
--
2.7.0