x86: update to account for feedback
This updates the x86 init tables to account for some initial
feedback after the v2 series. In particular, some highlights:
o removed run time sorting: this is not needed yet
o since we now have only 2 declarers:
DECLARE_LINKTABLE() -- const
DECLARE_LINKTABLE_DATA() - non const
We use use DECLARE_LINKTABLE_DATA() for the table, and the definition
actually pegs it to the right section.
o we drop x86_init_fn_setup_arch() and x86_init_fn_late_init()
as this is better evolved with time with upstream. The point
is made and I think its understood what the goal is here.
o we drop the char *name from the struct x86_init_fn given to
match the upstream kernel use. The kernel can get the name
using %pF, but we can't since libc stdio printf does not support
this. Maybe we can port this somehow in... but I can't see how.
For now just comment out %pF uses and deal with it by cluttering
our init calls so we know what triggered where.
For instance the kernel can use but we'll comment this sort of
stuff out:
pr_err("Init sequence fails to declares any supported subarchs: %pF\n", fn->early_init);
o The X86_INIT_EARLY_*() macros are simplified to only provide what we
need, we also use lower case, so x86_init_early_pc(), etc.
o The xen macro x86_init_early_xen() is added but won't be part of the
v3 upstream submission. That will later be used but we have
to re-consider a different level order for it, perhaps a hypervisor
order level. That can only happen *iff* we can get load_idt() issue
addressed. As it stands we can't use the subarch on x86_64_start_kernel()
prior to load_idt(), our userspace demo here uses it as that's the
goal but in practice this doesn't work yet on x86 kernels.. we can
only access the subarch after load_idt(), so upstream v3 submission
will use the x86_init_fn_early_init() on x86_64_start_reservations().
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
14 files changed