Commit 1361b83a authored by Linus Torvalds's avatar Linus Torvalds Committed by H. Peter Anvin

i387: Split up <asm/i387.h> into exported and internal interfaces

While various modules include <asm/i387.h> to get access to things we
actually *intend* for them to use, most of that header file was really
pretty low-level internal stuff that we really don't want to expose to
others.

So split the header file into two: the small exported interfaces remain
in <asm/i387.h>, while the internal definitions that are only used by
core architecture code are now in <asm/fpu-internal.h>.

The guiding principle for this was to expose functions that we export to
modules, and leave them in <asm/i387.h>, while stuff that is used by
task switching or was marked GPL-only is in <asm/fpu-internal.h>.

The fpu-internal.h file could be further split up too, especially since
arch/x86/kvm/ uses some of the remaining stuff for its module.  But that
kvm usage should probably be abstracted out a bit, and at least now the
internal FPU accessor functions are much more contained.  Even if it
isn't perhaps as contained as it _could_ be.
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1202211340330.5354@i5.linux-foundation.orgSigned-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent 8546c008
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/ucontext.h> #include <asm/ucontext.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/ia32_unistd.h> #include <asm/ia32_unistd.h>
#include <asm/user32.h> #include <asm/user32.h>
......
This diff is collapsed.
This diff is collapsed.
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/desc.h> #include <asm/desc.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/mtrr.h> #include <asm/mtrr.h>
#include <linux/numa.h> #include <linux/numa.h>
#include <asm/asm.h> #include <asm/asm.h>
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/user.h> #include <asm/user.h>
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
...@@ -124,7 +125,7 @@ EXPORT_SYMBOL_GPL(xstate_size); ...@@ -124,7 +125,7 @@ EXPORT_SYMBOL_GPL(xstate_size);
unsigned int sig_xstate_ia32_size = sizeof(struct _fpstate_ia32); unsigned int sig_xstate_ia32_size = sizeof(struct _fpstate_ia32);
static struct i387_fxsave_struct fx_scratch __cpuinitdata; static struct i387_fxsave_struct fx_scratch __cpuinitdata;
void __cpuinit mxcsr_feature_mask_init(void) static void __cpuinit mxcsr_feature_mask_init(void)
{ {
unsigned long mask = 0; unsigned long mask = 0;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <asm/idle.h> #include <asm/idle.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/debugreg.h> #include <asm/debugreg.h>
struct kmem_cache *task_xstate_cachep; struct kmem_cache *task_xstate_cachep;
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include <asm/ldt.h> #include <asm/ldt.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/desc.h> #include <asm/desc.h>
#ifdef CONFIG_MATH_EMULATION #ifdef CONFIG_MATH_EMULATION
#include <asm/math_emu.h> #include <asm/math_emu.h>
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/prctl.h> #include <asm/prctl.h>
#include <asm/desc.h> #include <asm/desc.h>
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/debugreg.h> #include <asm/debugreg.h>
#include <asm/ldt.h> #include <asm/ldt.h>
#include <asm/desc.h> #include <asm/desc.h>
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/ucontext.h> #include <asm/ucontext.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/vdso.h> #include <asm/vdso.h>
#include <asm/mce.h> #include <asm/mce.h>
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include <asm/traps.h> #include <asm/traps.h>
#include <asm/desc.h> #include <asm/desc.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/mach_traps.h> #include <asm/mach_traps.h>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/compat.h> #include <linux/compat.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h>
#ifdef CONFIG_IA32_EMULATION #ifdef CONFIG_IA32_EMULATION
#include <asm/sigcontext32.h> #include <asm/sigcontext32.h>
#endif #endif
......
...@@ -1457,7 +1457,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx) ...@@ -1457,7 +1457,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx)
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base); wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);
#endif #endif
if (__thread_has_fpu(current)) if (user_has_fpu())
clts(); clts();
load_gdt(&__get_cpu_var(host_gdt)); load_gdt(&__get_cpu_var(host_gdt));
} }
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
#include <asm/mtrr.h> #include <asm/mtrr.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/fpu-internal.h> /* Ugh! */
#include <asm/xcr.h> #include <asm/xcr.h>
#include <asm/pvclock.h> #include <asm/pvclock.h>
#include <asm/div64.h> #include <asm/div64.h>
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <asm/xcr.h> #include <asm/xcr.h>
#include <asm/suspend.h> #include <asm/suspend.h>
#include <asm/debugreg.h> #include <asm/debugreg.h>
#include <asm/fpu-internal.h> /* pcntxt_mask */
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
static struct saved_context saved_context; static struct saved_context saved_context;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment