aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-08-20 07:19:57 -0400
committerThomas Gleixner <tglx@linutronix.de>2009-08-31 03:35:45 -0400
commit6f30c1ac3fcf11e08f00670f293546a112cdf4e3 (patch)
treed392c751369ea01055a5fc2aeb5320cde13abe0d
parent42bbdb43b16d233b2dacb4cd76e28f61c2a86dc6 (diff)
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>
-rw-r--r--arch/x86/include/asm/paravirt.h6
-rw-r--r--arch/x86/include/asm/paravirt_types.h3
-rw-r--r--arch/x86/include/asm/x86_init.h2
-rw-r--r--arch/x86/kernel/paravirt.c10
-rw-r--r--arch/x86/kernel/setup.c1
-rw-r--r--arch/x86/kernel/x86_init.c2
-rw-r--r--arch/x86/xen/enlighten.c2
7 files changed, 12 insertions, 14 deletions
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 22cb3872f6d1..3de6435a106a 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -918,6 +918,8 @@ static inline unsigned long __raw_local_irq_save(void)
918#undef PVOP_VCALL4 918#undef PVOP_VCALL4
919#undef PVOP_CALL4 919#undef PVOP_CALL4
920 920
921extern void default_banner(void);
922
921#else /* __ASSEMBLY__ */ 923#else /* __ASSEMBLY__ */
922 924
923#define _PVSITE(ptype, clobbers, ops, word, algn) \ 925#define _PVSITE(ptype, clobbers, ops, word, algn) \
@@ -1058,5 +1060,7 @@ static inline unsigned long __raw_local_irq_save(void)
1058#endif /* CONFIG_X86_32 */ 1060#endif /* CONFIG_X86_32 */
1059 1061
1060#endif /* __ASSEMBLY__ */ 1062#endif /* __ASSEMBLY__ */
1061#endif /* CONFIG_PARAVIRT */ 1063#else /* CONFIG_PARAVIRT */
1064# define default_banner x86_init_noop
1065#endif /* !CONFIG_PARAVIRT */
1062#endif /* _ASM_X86_PARAVIRT_H */ 1066#endif /* _ASM_X86_PARAVIRT_H */
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index a05085e5fdbb..ce7723c81a1e 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -81,9 +81,6 @@ struct pv_init_ops {
81 81
82 /* Basic arch-specific setup */ 82 /* Basic arch-specific setup */
83 void (*post_allocator_init)(void); 83 void (*post_allocator_init)(void);
84
85 /* Print a banner to identify the environment */
86 void (*banner)(void);
87}; 84};
88 85
89 86
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index ceffbf358fc0..ee7c59df7814 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -59,9 +59,11 @@ struct x86_init_irqs {
59/** 59/**
60 * struct x86_init_oem - oem platform specific customizing functions 60 * struct x86_init_oem - oem platform specific customizing functions
61 * @arch_setup: platform specific architecure setup 61 * @arch_setup: platform specific architecure setup
62 * @banner: print a platform specific banner
62 */ 63 */
63struct x86_init_oem { 64struct x86_init_oem {
64 void (*arch_setup)(void); 65 void (*arch_setup)(void);
66 void (*banner)(void);
65}; 67};
66 68
67/** 69/**
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 80275ef1651a..f7a5fb79d18a 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -54,7 +54,7 @@ u64 _paravirt_ident_64(u64 x)
54 return x; 54 return x;
55} 55}
56 56
57static void __init default_banner(void) 57void __init default_banner(void)
58{ 58{
59 printk(KERN_INFO "Booting paravirtualized kernel on %s\n", 59 printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
60 pv_info.name); 60 pv_info.name);
@@ -208,13 +208,6 @@ extern void native_irq_enable_sysexit(void);
208extern void native_usergs_sysret32(void); 208extern void native_usergs_sysret32(void);
209extern void native_usergs_sysret64(void); 209extern void native_usergs_sysret64(void);
210 210
211static int __init print_banner(void)
212{
213 pv_init_ops.banner();
214 return 0;
215}
216core_initcall(print_banner);
217
218static struct resource reserve_ioports = { 211static struct resource reserve_ioports = {
219 .start = 0, 212 .start = 0,
220 .end = IO_SPACE_LIMIT, 213 .end = IO_SPACE_LIMIT,
@@ -310,7 +303,6 @@ struct pv_info pv_info = {
310 303
311struct pv_init_ops pv_init_ops = { 304struct pv_init_ops pv_init_ops = {
312 .patch = native_patch, 305 .patch = native_patch,
313 .banner = default_banner,
314}; 306};
315 307
316struct pv_time_ops pv_time_ops = { 308struct pv_time_ops pv_time_ops = {
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index d12aa82c9c32..bc5f0e561cfd 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1012,6 +1012,7 @@ void __init setup_arch(char **cmdline_p)
1012 conswitchp = &dummy_con; 1012 conswitchp = &dummy_con;
1013#endif 1013#endif
1014#endif 1014#endif
1015 x86_init.oem.banner();
1015} 1016}
1016 1017
1017#ifdef CONFIG_X86_32 1018#ifdef CONFIG_X86_32
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
index fa2d849be35a..08fea49d59a2 100644
--- a/arch/x86/kernel/x86_init.c
+++ b/arch/x86/kernel/x86_init.c
@@ -6,6 +6,7 @@
6#include <linux/init.h> 6#include <linux/init.h>
7 7
8#include <asm/bios_ebda.h> 8#include <asm/bios_ebda.h>
9#include <asm/paravirt.h>
9#include <asm/mpspec.h> 10#include <asm/mpspec.h>
10#include <asm/setup.h> 11#include <asm/setup.h>
11#include <asm/e820.h> 12#include <asm/e820.h>
@@ -45,5 +46,6 @@ struct __initdata x86_init_ops x86_init = {
45 46
46 .oem = { 47 .oem = {
47 .arch_setup = x86_init_noop, 48 .arch_setup = x86_init_noop,
49 .banner = default_banner,
48 }, 50 },
49}; 51};
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 73c7b1d610f3..46e23cde143a 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -840,7 +840,6 @@ static const struct pv_info xen_info __initdata = {
840static const struct pv_init_ops xen_init_ops __initdata = { 840static const struct pv_init_ops xen_init_ops __initdata = {
841 .patch = xen_patch, 841 .patch = xen_patch,
842 842
843 .banner = xen_banner,
844 .post_allocator_init = xen_post_allocator_init, 843 .post_allocator_init = xen_post_allocator_init,
845}; 844};
846 845
@@ -982,6 +981,7 @@ asmlinkage void __init xen_start_kernel(void)
982 981
983 x86_init.resources.memory_setup = xen_memory_setup; 982 x86_init.resources.memory_setup = xen_memory_setup;
984 x86_init.oem.arch_setup = xen_arch_setup; 983 x86_init.oem.arch_setup = xen_arch_setup;
984 x86_init.oem.banner = xen_banner;
985 985
986#ifdef CONFIG_X86_64 986#ifdef CONFIG_X86_64
987 /* 987 /*