|
@@ -375,6 +375,31 @@ static void __init reserve_initrd(void)
|
|
}
|
|
}
|
|
#endif /* CONFIG_BLK_DEV_INITRD */
|
|
#endif /* CONFIG_BLK_DEV_INITRD */
|
|
|
|
|
|
|
|
+void __init parse_setup_data(void)
|
|
|
|
+{
|
|
|
|
+ struct setup_data *data;
|
|
|
|
+ u64 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) {
|
|
|
|
+ case SETUP_E820_EXT:
|
|
|
|
+ parse_e820_ext(data, pa_data);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+#ifndef CONFIG_DEBUG_BOOT_PARAMS
|
|
|
|
+ free_early(pa_data, pa_data+sizeof(*data)+data->len);
|
|
|
|
+#endif
|
|
|
|
+ pa_data = data->next;
|
|
|
|
+ early_iounmap(data, PAGE_SIZE);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Determine if we were loaded by an EFI loader. If so, then we have also been
|
|
* Determine if we were loaded by an EFI loader. If so, then we have also been
|
|
* passed the efi memmap, systab, etc., so we should use these data structures
|
|
* passed the efi memmap, systab, etc., so we should use these data structures
|