mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
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: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
42bbdb43b1
commit
6f30c1ac3f
@ -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)
|
|||||||
#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 {
|
|||||||
|
|
||||||
/* 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 {
|
|||||||
/**
|
/**
|
||||||
* 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)
|
|||||||
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);
|
|||||||
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 = {
|
|||||||
|
|
||||||
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)
|
|||||||
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 @@
|
|||||||
#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 = {
|
|||||||
|
|
||||||
.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 = {
|
|||||||
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)
|
|||||||
|
|
||||||
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
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user