aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup_64.c
diff options
context:
space:
mode:
authorHuang, Ying <ying.huang@intel.com>2008-03-27 22:49:44 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-26 15:34:42 -0400
commit8b664aa66e824a0ddf4ec56d41fa0cf7bb374de6 (patch)
tree57c5de72c38f630e126964b922c379c4a7e49100 /arch/x86/kernel/setup_64.c
parent50eae2a7c9862afe263a2003c12f457ecfc9e6a2 (diff)
x86, boot: add linked list of struct setup_data
This patch adds a field of 64-bit physical pointer to NULL terminated single linked list of struct setup_data to real-mode kernel header. This is used as a more extensible boot parameters passing mechanism. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/setup_64.c')
-rw-r--r--arch/x86/kernel/setup_64.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 17bdf2343095..e1a21d6b3671 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -264,6 +264,26 @@ void __attribute__((weak)) __init memory_setup(void)
264 machine_specific_memory_setup(); 264 machine_specific_memory_setup();
265} 265}
266 266
267static void __init parse_setup_data(void)
268{
269 struct setup_data *data;
270 unsigned long pa_data;
271
272 if (boot_params.hdr.version < 0x0209)
273 return;
274 pa_data = boot_params.hdr.setup_data;
275 while (pa_data) {
276 data = early_ioremap(pa_data, PAGE_SIZE);
277 switch (data->type) {
278 default:
279 break;
280 }
281 free_early(pa_data, pa_data+sizeof(*data)+data->len);
282 pa_data = data->next;
283 early_iounmap(data, PAGE_SIZE);
284 }
285}
286
267/* 287/*
268 * setup_arch - architecture-specific boot-time initializations 288 * setup_arch - architecture-specific boot-time initializations
269 * 289 *
@@ -316,6 +336,8 @@ void __init setup_arch(char **cmdline_p)
316 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); 336 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
317 *cmdline_p = command_line; 337 *cmdline_p = command_line;
318 338
339 parse_setup_data();
340
319 parse_early_param(); 341 parse_early_param();
320 342
321#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT 343#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT