aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/paravirt.h1
-rw-r--r--arch/x86/include/asm/paravirt_types.h1
-rw-r--r--arch/x86/include/asm/x86_init.h9
-rw-r--r--arch/x86/kernel/paravirt.c1
-rw-r--r--arch/x86/kernel/setup.c6
-rw-r--r--arch/x86/kernel/x86_init.c4
-rw-r--r--arch/x86/xen/enlighten.c2
7 files changed, 15 insertions, 9 deletions
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 6a07af432c81..22cb3872f6d1 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -24,7 +24,6 @@ static inline void load_sp0(struct tss_struct *tss,
24 PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread); 24 PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread);
25} 25}
26 26
27#define ARCH_SETUP pv_init_ops.arch_setup();
28static inline unsigned long get_wallclock(void) 27static inline unsigned long get_wallclock(void)
29{ 28{
30 return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock); 29 return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock);
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index 25922afb6347..a05085e5fdbb 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -80,7 +80,6 @@ struct pv_init_ops {
80 unsigned long addr, unsigned len); 80 unsigned long addr, unsigned len);
81 81
82 /* Basic arch-specific setup */ 82 /* Basic arch-specific setup */
83 void (*arch_setup)(void);
84 void (*post_allocator_init)(void); 83 void (*post_allocator_init)(void);
85 84
86 /* Print a banner to identify the environment */ 85 /* Print a banner to identify the environment */
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index 07c37bd879f8..ceffbf358fc0 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -57,6 +57,14 @@ struct x86_init_irqs {
57}; 57};
58 58
59/** 59/**
60 * struct x86_init_oem - oem platform specific customizing functions
61 * @arch_setup: platform specific architecure setup
62 */
63struct x86_init_oem {
64 void (*arch_setup)(void);
65};
66
67/**
60 * struct x86_init_ops - functions for platform specific setup 68 * struct x86_init_ops - functions for platform specific setup
61 * 69 *
62 */ 70 */
@@ -64,6 +72,7 @@ struct x86_init_ops {
64 struct x86_init_resources resources; 72 struct x86_init_resources resources;
65 struct x86_init_mpparse mpparse; 73 struct x86_init_mpparse mpparse;
66 struct x86_init_irqs irqs; 74 struct x86_init_irqs irqs;
75 struct x86_init_oem oem;
67}; 76};
68 77
69extern struct x86_init_ops x86_init; 78extern struct x86_init_ops x86_init;
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index d76bfbec71ae..80275ef1651a 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -311,7 +311,6 @@ struct pv_info pv_info = {
311struct pv_init_ops pv_init_ops = { 311struct pv_init_ops pv_init_ops = {
312 .patch = native_patch, 312 .patch = native_patch,
313 .banner = default_banner, 313 .banner = default_banner,
314 .arch_setup = paravirt_nop,
315}; 314};
316 315
317struct pv_time_ops pv_time_ops = { 316struct pv_time_ops pv_time_ops = {
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index bf3b87f1f7db..d12aa82c9c32 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -108,10 +108,6 @@
108#include <asm/numa_64.h> 108#include <asm/numa_64.h>
109#endif 109#endif
110 110
111#ifndef ARCH_SETUP
112#define ARCH_SETUP
113#endif
114
115/* 111/*
116 * end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries. 112 * end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries.
117 * The direct mapping extends to max_pfn_mapped, so that we can directly access 113 * The direct mapping extends to max_pfn_mapped, so that we can directly access
@@ -750,7 +746,7 @@ void __init setup_arch(char **cmdline_p)
750 } 746 }
751#endif 747#endif
752 748
753 ARCH_SETUP 749 x86_init.oem.arch_setup();
754 750
755 setup_memory_map(); 751 setup_memory_map();
756 parse_setup_data(); 752 parse_setup_data();
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
index 9f2b775dc728..fa2d849be35a 100644
--- a/arch/x86/kernel/x86_init.c
+++ b/arch/x86/kernel/x86_init.c
@@ -42,4 +42,8 @@ struct __initdata x86_init_ops x86_init = {
42 .intr_init = native_init_IRQ, 42 .intr_init = native_init_IRQ,
43 .trap_init = x86_init_noop, 43 .trap_init = x86_init_noop,
44 }, 44 },
45
46 .oem = {
47 .arch_setup = x86_init_noop,
48 },
45}; 49};
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 50b20c64f0bd..73c7b1d610f3 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -841,7 +841,6 @@ static const struct pv_init_ops xen_init_ops __initdata = {
841 .patch = xen_patch, 841 .patch = xen_patch,
842 842
843 .banner = xen_banner, 843 .banner = xen_banner,
844 .arch_setup = xen_arch_setup,
845 .post_allocator_init = xen_post_allocator_init, 844 .post_allocator_init = xen_post_allocator_init,
846}; 845};
847 846
@@ -982,6 +981,7 @@ asmlinkage void __init xen_start_kernel(void)
982 pv_mmu_ops = xen_mmu_ops; 981 pv_mmu_ops = xen_mmu_ops;
983 982
984 x86_init.resources.memory_setup = xen_memory_setup; 983 x86_init.resources.memory_setup = xen_memory_setup;
984 x86_init.oem.arch_setup = xen_arch_setup;
985 985
986#ifdef CONFIG_X86_64 986#ifdef CONFIG_X86_64
987 /* 987 /*