aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Neri <ricardo.neri-calderon@linux.intel.com>2014-03-27 18:10:42 -0400
committerMatt Fleming <matt.fleming@intel.com>2014-04-17 08:26:32 -0400
commitde05764e0b2a3d9559e099a2e134f8cef4500fdd (patch)
treecc42a9d42aad04402b2fdeecfbd8010fc17b1b97
parent982e239cd2c73d2c70e14615a42c0c7391415a44 (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.h3
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})