diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-20 07:19:57 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-31 03:35:45 -0400 |
commit | 6f30c1ac3fcf11e08f00670f293546a112cdf4e3 (patch) | |
tree | d392c751369ea01055a5fc2aeb5320cde13abe0d | |
parent | 42bbdb43b16d233b2dacb4cd76e28f61c2a86dc6 (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.h | 6 | ||||
-rw-r--r-- | arch/x86/include/asm/paravirt_types.h | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/x86_init.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/paravirt.c | 10 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/x86_init.c | 2 | ||||
-rw-r--r-- | arch/x86/xen/enlighten.c | 2 |
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 | ||
921 | extern 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 | */ |
63 | struct x86_init_oem { | 64 | struct 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 | ||
57 | static void __init default_banner(void) | 57 | void __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); | |||
208 | extern void native_usergs_sysret32(void); | 208 | extern void native_usergs_sysret32(void); |
209 | extern void native_usergs_sysret64(void); | 209 | extern void native_usergs_sysret64(void); |
210 | 210 | ||
211 | static int __init print_banner(void) | ||
212 | { | ||
213 | pv_init_ops.banner(); | ||
214 | return 0; | ||
215 | } | ||
216 | core_initcall(print_banner); | ||
217 | |||
218 | static struct resource reserve_ioports = { | 211 | static 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 | ||
311 | struct pv_init_ops pv_init_ops = { | 304 | struct pv_init_ops pv_init_ops = { |
312 | .patch = native_patch, | 305 | .patch = native_patch, |
313 | .banner = default_banner, | ||
314 | }; | 306 | }; |
315 | 307 | ||
316 | struct pv_time_ops pv_time_ops = { | 308 | struct 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 = { | |||
840 | static const struct pv_init_ops xen_init_ops __initdata = { | 840 | static 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 | /* |