|
@@ -658,15 +658,18 @@ __init void e820_setup_gap(void)
|
|
* boot_params.e820_map, others are passed via SETUP_E820_EXT node of
|
|
* boot_params.e820_map, others are passed via SETUP_E820_EXT node of
|
|
* linked list of struct setup_data, which is parsed here.
|
|
* linked list of struct setup_data, which is parsed here.
|
|
*/
|
|
*/
|
|
-void __init parse_e820_ext(struct setup_data *sdata)
|
|
|
|
|
|
+void __init parse_e820_ext(u64 phys_addr, u32 data_len)
|
|
{
|
|
{
|
|
int entries;
|
|
int entries;
|
|
struct e820entry *extmap;
|
|
struct e820entry *extmap;
|
|
|
|
+ struct setup_data *sdata;
|
|
|
|
|
|
|
|
+ sdata = early_memremap(phys_addr, data_len);
|
|
entries = sdata->len / sizeof(struct e820entry);
|
|
entries = sdata->len / sizeof(struct e820entry);
|
|
extmap = (struct e820entry *)(sdata->data);
|
|
extmap = (struct e820entry *)(sdata->data);
|
|
__append_e820_map(extmap, entries);
|
|
__append_e820_map(extmap, entries);
|
|
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
|
|
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
|
|
|
|
+ early_iounmap(sdata, data_len);
|
|
printk(KERN_INFO "e820: extended physical RAM map:\n");
|
|
printk(KERN_INFO "e820: extended physical RAM map:\n");
|
|
e820_print_map("extended");
|
|
e820_print_map("extended");
|
|
}
|
|
}
|