diff options
author | Dave Young <dyoung@redhat.com> | 2013-12-20 05:02:14 -0500 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2013-12-21 10:09:51 -0500 |
commit | 3b2664964bc886ae9d5127c8d3708b1acc0626d2 (patch) | |
tree | fd6e3d90de57bf7229bdfa1376e04e8cd55acbab /arch/x86/platform/efi | |
parent | 2da6e57cce14a1c3b0692d6f877b72e185110e2e (diff) |
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>
Diffstat (limited to 'arch/x86/platform/efi')
-rw-r--r-- | arch/x86/platform/efi/efi_32.c | 2 | ||||
-rw-r--r-- | arch/x86/platform/efi/efi_64.c | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c index e94557cf5487..7b3ec6ed99af 100644 --- a/arch/x86/platform/efi/efi_32.c +++ b/arch/x86/platform/efi/efi_32.c | |||
@@ -47,6 +47,8 @@ void __init efi_map_region(efi_memory_desc_t *md) | |||
47 | old_map_region(md); | 47 | old_map_region(md); |
48 | } | 48 | } |
49 | 49 | ||
50 | void __init efi_map_region_fixed(efi_memory_desc_t *md) {} | ||
51 | |||
50 | void efi_call_phys_prelog(void) | 52 | void efi_call_phys_prelog(void) |
51 | { | 53 | { |
52 | struct desc_ptr gdt_descr; | 54 | struct desc_ptr gdt_descr; |
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index c5a6491d95da..ff08cb19630b 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c | |||
@@ -199,6 +199,16 @@ void __init efi_map_region(efi_memory_desc_t *md) | |||
199 | md->virt_addr = efi_va; | 199 | md->virt_addr = efi_va; |
200 | } | 200 | } |
201 | 201 | ||
202 | /* | ||
203 | * kexec kernel will use efi_map_region_fixed to map efi runtime memory ranges. | ||
204 | * md->virt_addr is the original virtual address which had been mapped in kexec | ||
205 | * 1st kernel. | ||
206 | */ | ||
207 | void __init efi_map_region_fixed(efi_memory_desc_t *md) | ||
208 | { | ||
209 | __map_region(md, md->virt_addr); | ||
210 | } | ||
211 | |||
202 | void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size, | 212 | void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size, |
203 | u32 type, u64 attribute) | 213 | u32 type, u64 attribute) |
204 | { | 214 | { |