x86/efi: Add a wrapper function efi_map_region_fixed()
Kexec kernel will use saved runtime virtual mapping, so add a new function efi_map_region_fixed() for directly mapping a md to md->virt. The md is passed in from 1st kernel, the virtual addr is saved in md->virt_addr. Signed-off-by: Dave Young <dyoung@redhat.com> Acked-by: Borislav Petkov <bp@suse.de> Tested-by: Toshi Kani <toshi.kani@hp.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
This commit is contained in:
parent
2da6e57cce
commit
3b2664964b
@ -128,6 +128,7 @@ extern void efi_call_phys_epilog(void);
|
|||||||
extern void efi_unmap_memmap(void);
|
extern void efi_unmap_memmap(void);
|
||||||
extern void efi_memory_uc(u64 addr, unsigned long size);
|
extern void efi_memory_uc(u64 addr, unsigned long size);
|
||||||
extern void __init efi_map_region(efi_memory_desc_t *md);
|
extern void __init efi_map_region(efi_memory_desc_t *md);
|
||||||
|
extern void __init efi_map_region_fixed(efi_memory_desc_t *md);
|
||||||
extern void efi_sync_low_kernel_mappings(void);
|
extern void efi_sync_low_kernel_mappings(void);
|
||||||
extern void efi_setup_page_tables(void);
|
extern void efi_setup_page_tables(void);
|
||||||
extern void __init old_map_region(efi_memory_desc_t *md);
|
extern void __init old_map_region(efi_memory_desc_t *md);
|
||||||
|
@ -47,6 +47,8 @@ void __init efi_map_region(efi_memory_desc_t *md)
|
|||||||
old_map_region(md);
|
old_map_region(md);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void __init efi_map_region_fixed(efi_memory_desc_t *md) {}
|
||||||
|
|
||||||
void efi_call_phys_prelog(void)
|
void efi_call_phys_prelog(void)
|
||||||
{
|
{
|
||||||
struct desc_ptr gdt_descr;
|
struct desc_ptr gdt_descr;
|
||||||
|
@ -199,6 +199,16 @@ void __init efi_map_region(efi_memory_desc_t *md)
|
|||||||
md->virt_addr = efi_va;
|
md->virt_addr = efi_va;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* kexec kernel will use efi_map_region_fixed to map efi runtime memory ranges.
|
||||||
|
* md->virt_addr is the original virtual address which had been mapped in kexec
|
||||||
|
* 1st kernel.
|
||||||
|
*/
|
||||||
|
void __init efi_map_region_fixed(efi_memory_desc_t *md)
|
||||||
|
{
|
||||||
|
__map_region(md, md->virt_addr);
|
||||||
|
}
|
||||||
|
|
||||||
void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
|
void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
|
||||||
u32 type, u64 attribute)
|
u32 type, u64 attribute)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user