Messages in this thread | | | Date | Wed, 17 Aug 2016 15:01:51 +0800 | From | Dave Young <> | Subject | Re: [PATCH] Map in physical addresses in efi_map_region_fixed |
| |
> > Why do you guys need the physical mapping all of a sudden? > > It's not that we need it all of the sudden, necessarily, it's just that > we've had to make other changes to make things work with the new, > (almost) completely isolated, EFI page tables. We ended up choosing the > lesser of two evils, and have decided to temporarily rely on the > physical address of our runtime code, instead of continuing to rely on > EFI_OLD_MEMMAP.
In efi_map_region, there is already mapped md->phys_addr for broken firmware. SGI still need EFI_OLD_MEMMAP? I means in 1st kernel instead of kexec kernel.
void __init efi_map_region(efi_memory_desc_t *md) { unsigned long size = md->num_pages << PAGE_SHIFT; u64 pa = md->phys_addr;
if (efi_enabled(EFI_OLD_MEMMAP)) return old_map_region(md);
/* * Make sure the 1:1 mappings are present as a catch-all for * b0rked * firmware which doesn't update all internal pointers after * switching * to virtual mode and would otherwise crap on us. */ __map_region(md, md->phys_addr);
[snip]
Thanks Dave
| |