]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/kernel/setup_64.c
x86, boot: add linked list of struct setup_data
[linux-2.6-omap-h63xx.git] / arch / x86 / kernel / setup_64.c
index 17bdf2343095df5e8ddfeb4d20a1a06bf7d3d8b9..e1a21d6b3671ec11dfd8b93e3073b5abef682b88 100644 (file)
@@ -264,6 +264,26 @@ void __attribute__((weak)) __init memory_setup(void)
        machine_specific_memory_setup();
 }
 
+static void __init parse_setup_data(void)
+{
+       struct setup_data *data;
+       unsigned long pa_data;
+
+       if (boot_params.hdr.version < 0x0209)
+               return;
+       pa_data = boot_params.hdr.setup_data;
+       while (pa_data) {
+               data = early_ioremap(pa_data, PAGE_SIZE);
+               switch (data->type) {
+               default:
+                       break;
+               }
+               free_early(pa_data, pa_data+sizeof(*data)+data->len);
+               pa_data = data->next;
+               early_iounmap(data, PAGE_SIZE);
+       }
+}
+
 /*
  * setup_arch - architecture-specific boot-time initializations
  *
@@ -316,6 +336,8 @@ void __init setup_arch(char **cmdline_p)
        strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
        *cmdline_p = command_line;
 
+       parse_setup_data();
+
        parse_early_param();
 
 #ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT