Commit 6f30c1ac authored by Thomas Gleixner's avatar Thomas Gleixner

x86: Move paravirt banner printout to x86_init_ops

Replace another obscure paravirt magic and move it to
x86_init_ops. Such a hook is also useful for embedded and special
hardware.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 42bbdb43
...@@ -918,6 +918,8 @@ static inline unsigned long __raw_local_irq_save(void) ...@@ -918,6 +918,8 @@ static inline unsigned long __raw_local_irq_save(void)
#undef PVOP_VCALL4 #undef PVOP_VCALL4
#undef PVOP_CALL4 #undef PVOP_CALL4
extern void default_banner(void);
#else /* __ASSEMBLY__ */ #else /* __ASSEMBLY__ */
#define _PVSITE(ptype, clobbers, ops, word, algn) \ #define _PVSITE(ptype, clobbers, ops, word, algn) \
...@@ -1058,5 +1060,7 @@ static inline unsigned long __raw_local_irq_save(void) ...@@ -1058,5 +1060,7 @@ static inline unsigned long __raw_local_irq_save(void)
#endif /* CONFIG_X86_32 */ #endif /* CONFIG_X86_32 */
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* CONFIG_PARAVIRT */ #else /* CONFIG_PARAVIRT */
# define default_banner x86_init_noop
#endif /* !CONFIG_PARAVIRT */
#endif /* _ASM_X86_PARAVIRT_H */ #endif /* _ASM_X86_PARAVIRT_H */
...@@ -81,9 +81,6 @@ struct pv_init_ops { ...@@ -81,9 +81,6 @@ struct pv_init_ops {
/* Basic arch-specific setup */ /* Basic arch-specific setup */
void (*post_allocator_init)(void); void (*post_allocator_init)(void);
/* Print a banner to identify the environment */
void (*banner)(void);
}; };
......
...@@ -59,9 +59,11 @@ struct x86_init_irqs { ...@@ -59,9 +59,11 @@ struct x86_init_irqs {
/** /**
* struct x86_init_oem - oem platform specific customizing functions * struct x86_init_oem - oem platform specific customizing functions
* @arch_setup: platform specific architecure setup * @arch_setup: platform specific architecure setup
* @banner: print a platform specific banner
*/ */
struct x86_init_oem { struct x86_init_oem {
void (*arch_setup)(void); void (*arch_setup)(void);
void (*banner)(void);
}; };
/** /**
......
...@@ -54,7 +54,7 @@ u64 _paravirt_ident_64(u64 x) ...@@ -54,7 +54,7 @@ u64 _paravirt_ident_64(u64 x)
return x; return x;
} }
static void __init default_banner(void) void __init default_banner(void)
{ {
printk(KERN_INFO "Booting paravirtualized kernel on %s\n", printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
pv_info.name); pv_info.name);
...@@ -208,13 +208,6 @@ extern void native_irq_enable_sysexit(void); ...@@ -208,13 +208,6 @@ extern void native_irq_enable_sysexit(void);
extern void native_usergs_sysret32(void); extern void native_usergs_sysret32(void);
extern void native_usergs_sysret64(void); extern void native_usergs_sysret64(void);
static int __init print_banner(void)
{
pv_init_ops.banner();
return 0;
}
core_initcall(print_banner);
static struct resource reserve_ioports = { static struct resource reserve_ioports = {
.start = 0, .start = 0,
.end = IO_SPACE_LIMIT, .end = IO_SPACE_LIMIT,
...@@ -310,7 +303,6 @@ struct pv_info pv_info = { ...@@ -310,7 +303,6 @@ struct pv_info pv_info = {
struct pv_init_ops pv_init_ops = { struct pv_init_ops pv_init_ops = {
.patch = native_patch, .patch = native_patch,
.banner = default_banner,
}; };
struct pv_time_ops pv_time_ops = { struct pv_time_ops pv_time_ops = {
......
...@@ -1012,6 +1012,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -1012,6 +1012,7 @@ void __init setup_arch(char **cmdline_p)
conswitchp = &dummy_con; conswitchp = &dummy_con;
#endif #endif
#endif #endif
x86_init.oem.banner();
} }
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <asm/bios_ebda.h> #include <asm/bios_ebda.h>
#include <asm/paravirt.h>
#include <asm/mpspec.h> #include <asm/mpspec.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/e820.h> #include <asm/e820.h>
...@@ -45,5 +46,6 @@ struct __initdata x86_init_ops x86_init = { ...@@ -45,5 +46,6 @@ struct __initdata x86_init_ops x86_init = {
.oem = { .oem = {
.arch_setup = x86_init_noop, .arch_setup = x86_init_noop,
.banner = default_banner,
}, },
}; };
...@@ -840,7 +840,6 @@ static const struct pv_info xen_info __initdata = { ...@@ -840,7 +840,6 @@ static const struct pv_info xen_info __initdata = {
static const struct pv_init_ops xen_init_ops __initdata = { static const struct pv_init_ops xen_init_ops __initdata = {
.patch = xen_patch, .patch = xen_patch,
.banner = xen_banner,
.post_allocator_init = xen_post_allocator_init, .post_allocator_init = xen_post_allocator_init,
}; };
...@@ -982,6 +981,7 @@ asmlinkage void __init xen_start_kernel(void) ...@@ -982,6 +981,7 @@ asmlinkage void __init xen_start_kernel(void)
x86_init.resources.memory_setup = xen_memory_setup; x86_init.resources.memory_setup = xen_memory_setup;
x86_init.oem.arch_setup = xen_arch_setup; x86_init.oem.arch_setup = xen_arch_setup;
x86_init.oem.banner = xen_banner;
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment