diff options
author | Ricardo Neri <ricardo.neri-calderon@linux.intel.com> | 2014-03-27 18:10:42 -0400 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2014-04-17 08:26:32 -0400 |
commit | de05764e0b2a3d9559e099a2e134f8cef4500fdd (patch) | |
tree | cc42a9d42aad04402b2fdeecfbd8010fc17b1b97 | |
parent | 982e239cd2c73d2c70e14615a42c0c7391415a44 (diff) |
x86/efi: Save and restore FPU context around efi_calls (x86_64)
Do a complete FPU context save/restore around the EFI calls. This required
as runtime EFI firmware may potentially use the FPU.
This change covers only the x86_64 configuration.
Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Cc: Borislav Petkov <bp@suse.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r-- | arch/x86/include/asm/efi.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index 19292e7cae58..0b19187cc882 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_X86_EFI_H | 1 | #ifndef _ASM_X86_EFI_H |
2 | #define _ASM_X86_EFI_H | 2 | #define _ASM_X86_EFI_H |
3 | 3 | ||
4 | #include <asm/i387.h> | ||
4 | /* | 5 | /* |
5 | * We map the EFI regions needed for runtime services non-contiguously, | 6 | * We map the EFI regions needed for runtime services non-contiguously, |
6 | * with preserved alignment on virtual addresses starting from -4G down | 7 | * with preserved alignment on virtual addresses starting from -4G down |
@@ -54,7 +55,9 @@ extern u64 asmlinkage efi_call(void *fp, ...); | |||
54 | \ | 55 | \ |
55 | efi_sync_low_kernel_mappings(); \ | 56 | efi_sync_low_kernel_mappings(); \ |
56 | preempt_disable(); \ | 57 | preempt_disable(); \ |
58 | __kernel_fpu_begin(); \ | ||
57 | __s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \ | 59 | __s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \ |
60 | __kernel_fpu_end(); \ | ||
58 | preempt_enable(); \ | 61 | preempt_enable(); \ |
59 | __s; \ | 62 | __s; \ |
60 | }) | 63 | }) |