/* Because of the size limitation of struct boot_params, only first 128 E820 memory entries are passed to kernel via boot_params.e820_map, others are passed via SETUP_E820_EXT node of linked list of struct setup_data, which is parsed here.  */
void __init parse_e820_ext(struct setup_data *sdata, unsigned long pa_data)
/* Because of the size limitation of struct boot_params, only first 128 E820 memory entries are passed to kernel via boot_params.e820_map, others are passed via SETUP_E820_EXT node of linked list of struct setup_data, which is parsed here.  */
void __init parse_e820_ext(struct setup_data *sdata, unsigned long pa_data)
{
	u32 map_len;
	int entries;
	struct e820entry *extmap;
	entries = sdata->len / sizeof(struct e820entry);
	map_len = sdata->len + sizeof(struct setup_data);
	if (map_len > PAGE_SIZE)
		sdata = early_ioremap(pa_data, map_len);
	extmap = (struct e820entry *)(sdata->data);
	__append_e820_map(extmap, entries);
	sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
	if (map_len > PAGE_SIZE)
		early_iounmap(sdata, map_len);
	printk(KERN_INFO "extended physical RAM map:\n");
	e820_print_map("extended");
}