diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-19 08:36:27 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-27 11:12:52 -0400 |
| commit | 816c25e7d4fb6fd40022a376e8b7f45b1edf5a89 (patch) | |
| tree | 75d9b4f37396b52ee306c3acd0dc32b0881365e0 | |
| parent | 8fee697d990c54976c8dc167270633299e2515d2 (diff) | |
x86: Add reserve_ebda_region to x86_init_ops
reserve_ebda_region needs to be called befor start_kernel. Moorestown
needs to override it. Make it a x86_init_ops function and initialize
it with the default reserve_ebda_region.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | arch/x86/include/asm/x86_init.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/head32.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/head64.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/x86_init.c | 2 |
4 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index d0d9be25ed93..8a971cb3dd3f 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h | |||
| @@ -6,11 +6,13 @@ | |||
| 6 | * @probe_roms: probe BIOS roms | 6 | * @probe_roms: probe BIOS roms |
| 7 | * @reserve_resources: reserve the standard resources for the | 7 | * @reserve_resources: reserve the standard resources for the |
| 8 | * platform | 8 | * platform |
| 9 | * @reserve_ebda_region: reserve the extended bios data area | ||
| 9 | * | 10 | * |
| 10 | */ | 11 | */ |
| 11 | struct x86_init_resources { | 12 | struct x86_init_resources { |
| 12 | void (*probe_roms)(void); | 13 | void (*probe_roms)(void); |
| 13 | void (*reserve_resources)(void); | 14 | void (*reserve_resources)(void); |
| 15 | void (*reserve_ebda_region)(void); | ||
| 14 | }; | 16 | }; |
| 15 | 17 | ||
| 16 | /** | 18 | /** |
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index d91c37c02069..921a23b6c145 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <asm/setup.h> | 11 | #include <asm/setup.h> |
| 12 | #include <asm/sections.h> | 12 | #include <asm/sections.h> |
| 13 | #include <asm/e820.h> | 13 | #include <asm/e820.h> |
| 14 | #include <asm/bios_ebda.h> | 14 | #include <asm/page.h> |
| 15 | #include <asm/trampoline.h> | 15 | #include <asm/trampoline.h> |
| 16 | 16 | ||
| 17 | void __init i386_start_kernel(void) | 17 | void __init i386_start_kernel(void) |
| @@ -33,7 +33,7 @@ void __init i386_start_kernel(void) | |||
| 33 | x86_init.resources.probe_roms = probe_roms; | 33 | x86_init.resources.probe_roms = probe_roms; |
| 34 | x86_init.resources.reserve_resources = i386_reserve_resources; | 34 | x86_init.resources.reserve_resources = i386_reserve_resources; |
| 35 | 35 | ||
| 36 | reserve_ebda_region(); | 36 | x86_init.resources.reserve_ebda_region(); |
| 37 | 37 | ||
| 38 | /* | 38 | /* |
| 39 | * At this point everything still needed from the boot loader | 39 | * At this point everything still needed from the boot loader |
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 70eaa852c732..cead8149c3de 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c | |||
| @@ -23,7 +23,6 @@ | |||
| 23 | #include <asm/sections.h> | 23 | #include <asm/sections.h> |
| 24 | #include <asm/kdebug.h> | 24 | #include <asm/kdebug.h> |
| 25 | #include <asm/e820.h> | 25 | #include <asm/e820.h> |
| 26 | #include <asm/bios_ebda.h> | ||
| 27 | #include <asm/trampoline.h> | 26 | #include <asm/trampoline.h> |
| 28 | 27 | ||
| 29 | static void __init zap_identity_mappings(void) | 28 | static void __init zap_identity_mappings(void) |
| @@ -112,7 +111,7 @@ void __init x86_64_start_reservations(char *real_mode_data) | |||
| 112 | } | 111 | } |
| 113 | #endif | 112 | #endif |
| 114 | 113 | ||
| 115 | reserve_ebda_region(); | 114 | x86_init.resources.reserve_ebda_region(); |
| 116 | 115 | ||
| 117 | /* | 116 | /* |
| 118 | * At this point everything still needed from the boot loader | 117 | * At this point everything still needed from the boot loader |
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c index 68c093b67ecf..1fff49a6858c 100644 --- a/arch/x86/kernel/x86_init.c +++ b/arch/x86/kernel/x86_init.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | */ | 5 | */ |
| 6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
| 7 | 7 | ||
| 8 | #include <asm/bios_ebda.h> | ||
| 8 | #include <asm/setup.h> | 9 | #include <asm/setup.h> |
| 9 | 10 | ||
| 10 | void __cpuinit x86_init_noop(void) { } | 11 | void __cpuinit x86_init_noop(void) { } |
| @@ -18,5 +19,6 @@ struct __initdata x86_init_ops x86_init = { | |||
| 18 | .resources = { | 19 | .resources = { |
| 19 | .probe_roms = x86_init_noop, | 20 | .probe_roms = x86_init_noop, |
| 20 | .reserve_resources = reserve_standard_io_resources, | 21 | .reserve_resources = reserve_standard_io_resources, |
| 22 | .reserve_ebda_region = reserve_ebda_region, | ||
| 21 | }, | 23 | }, |
| 22 | }; | 24 | }; |
