mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 21:02:19 +00:00
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>
This commit is contained in:
parent
982e239cd2
commit
de05764e0b
@ -1,6 +1,7 @@
|
|||||||
#ifndef _ASM_X86_EFI_H
|
#ifndef _ASM_X86_EFI_H
|
||||||
#define _ASM_X86_EFI_H
|
#define _ASM_X86_EFI_H
|
||||||
|
|
||||||
|
#include <asm/i387.h>
|
||||||
/*
|
/*
|
||||||
* We map the EFI regions needed for runtime services non-contiguously,
|
* We map the EFI regions needed for runtime services non-contiguously,
|
||||||
* with preserved alignment on virtual addresses starting from -4G down
|
* with preserved alignment on virtual addresses starting from -4G down
|
||||||
@ -54,7 +55,9 @@ extern u64 asmlinkage efi_call(void *fp, ...);
|
|||||||
\
|
\
|
||||||
efi_sync_low_kernel_mappings(); \
|
efi_sync_low_kernel_mappings(); \
|
||||||
preempt_disable(); \
|
preempt_disable(); \
|
||||||
|
__kernel_fpu_begin(); \
|
||||||
__s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \
|
__s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \
|
||||||
|
__kernel_fpu_end(); \
|
||||||
preempt_enable(); \
|
preempt_enable(); \
|
||||||
__s; \
|
__s; \
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user