mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
x86/cpufeature: Replace cpu_has_xsave with boot_cpu_has() usage
Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: kvm@vger.kernel.org Link: http://lkml.kernel.org/r/1459801503-15600-10-git-send-email-bp@alien8.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
01f8fd7379
commit
d366bf7eb9
7 changed files with 18 additions and 19 deletions
|
@ -357,7 +357,7 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
|
|||
put_user_ex(ptr_to_compat(&frame->uc), &frame->puc);
|
||||
|
||||
/* Create the ucontext. */
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
put_user_ex(UC_FP_XSTATE, &frame->uc.uc_flags);
|
||||
else
|
||||
put_user_ex(0, &frame->uc.uc_flags);
|
||||
|
|
|
@ -118,7 +118,6 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
|
|||
set_bit(bit, (unsigned long *)cpu_caps_set); \
|
||||
} while (0)
|
||||
|
||||
#define cpu_has_xsave boot_cpu_has(X86_FEATURE_XSAVE)
|
||||
#define cpu_has_xsaves boot_cpu_has(X86_FEATURE_XSAVES)
|
||||
/*
|
||||
* Do not add any more of those clumsy macros - use static_cpu_has() for
|
||||
|
|
|
@ -68,7 +68,7 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
|
|||
* update the header bits in the xsave header, indicating the
|
||||
* presence of FP and SSE state.
|
||||
*/
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
fpu->state.xsave.header.xfeatures |= XFEATURE_MASK_FPSSE;
|
||||
|
||||
return ret;
|
||||
|
@ -82,7 +82,7 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
|
|||
struct xregs_state *xsave;
|
||||
int ret;
|
||||
|
||||
if (!cpu_has_xsave)
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
return -ENODEV;
|
||||
|
||||
fpu__activate_fpstate_read(fpu);
|
||||
|
@ -111,7 +111,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
|
|||
struct xregs_state *xsave;
|
||||
int ret;
|
||||
|
||||
if (!cpu_has_xsave)
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
return -ENODEV;
|
||||
|
||||
fpu__activate_fpstate_write(fpu);
|
||||
|
@ -328,7 +328,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
|
|||
* update the header bit in the xsave header, indicating the
|
||||
* presence of FP.
|
||||
*/
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
fpu->state.xsave.header.xfeatures |= XFEATURE_MASK_FP;
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -190,7 +190,7 @@ void fpstate_sanitize_xstate(struct fpu *fpu)
|
|||
*/
|
||||
void fpu__init_cpu_xstate(void)
|
||||
{
|
||||
if (!cpu_has_xsave || !xfeatures_mask)
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE) || !xfeatures_mask)
|
||||
return;
|
||||
|
||||
cr4_set_bits(X86_CR4_OSXSAVE);
|
||||
|
@ -316,7 +316,7 @@ static void __init setup_init_fpu_buf(void)
|
|||
WARN_ON_FPU(!on_boot_cpu);
|
||||
on_boot_cpu = 0;
|
||||
|
||||
if (!cpu_has_xsave)
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
return;
|
||||
|
||||
setup_xstate_features();
|
||||
|
@ -630,7 +630,7 @@ void __init fpu__init_system_xstate(void)
|
|||
WARN_ON_FPU(!on_boot_cpu);
|
||||
on_boot_cpu = 0;
|
||||
|
||||
if (!cpu_has_xsave) {
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
pr_info("x86/fpu: Legacy x87 FPU detected.\n");
|
||||
return;
|
||||
}
|
||||
|
@ -678,7 +678,7 @@ void fpu__resume_cpu(void)
|
|||
/*
|
||||
* Restore XCR0 on xsave capable CPUs:
|
||||
*/
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
xsetbv(XCR_XFEATURE_ENABLED_MASK, xfeatures_mask);
|
||||
}
|
||||
|
||||
|
|
|
@ -391,7 +391,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
|
|||
put_user_ex(&frame->uc, &frame->puc);
|
||||
|
||||
/* Create the ucontext. */
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
put_user_ex(UC_FP_XSTATE, &frame->uc.uc_flags);
|
||||
else
|
||||
put_user_ex(0, &frame->uc.uc_flags);
|
||||
|
@ -442,7 +442,7 @@ static unsigned long frame_uc_flags(struct pt_regs *regs)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
flags = UC_FP_XSTATE | UC_SIGCONTEXT_SS;
|
||||
else
|
||||
flags = UC_SIGCONTEXT_SS;
|
||||
|
|
|
@ -75,7 +75,7 @@ int kvm_update_cpuid(struct kvm_vcpu *vcpu)
|
|||
return 0;
|
||||
|
||||
/* Update OSXSAVE bit */
|
||||
if (cpu_has_xsave && best->function == 0x1) {
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE) && best->function == 0x1) {
|
||||
best->ecx &= ~F(OSXSAVE);
|
||||
if (kvm_read_cr4_bits(vcpu, X86_CR4_OSXSAVE))
|
||||
best->ecx |= F(OSXSAVE);
|
||||
|
|
|
@ -2612,7 +2612,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
|||
r = KVM_MAX_MCE_BANKS;
|
||||
break;
|
||||
case KVM_CAP_XCRS:
|
||||
r = cpu_has_xsave;
|
||||
r = boot_cpu_has(X86_FEATURE_XSAVE);
|
||||
break;
|
||||
case KVM_CAP_TSC_CONTROL:
|
||||
r = kvm_has_tsc_control;
|
||||
|
@ -3122,7 +3122,7 @@ static void load_xsave(struct kvm_vcpu *vcpu, u8 *src)
|
|||
static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu,
|
||||
struct kvm_xsave *guest_xsave)
|
||||
{
|
||||
if (cpu_has_xsave) {
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
memset(guest_xsave, 0, sizeof(struct kvm_xsave));
|
||||
fill_xsave((u8 *) guest_xsave->region, vcpu);
|
||||
} else {
|
||||
|
@ -3140,7 +3140,7 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
|
|||
u64 xstate_bv =
|
||||
*(u64 *)&guest_xsave->region[XSAVE_HDR_OFFSET / sizeof(u32)];
|
||||
|
||||
if (cpu_has_xsave) {
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
/*
|
||||
* Here we allow setting states that are not present in
|
||||
* CPUID leaf 0xD, index 0, EDX:EAX. This is for compatibility
|
||||
|
@ -3161,7 +3161,7 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
|
|||
static void kvm_vcpu_ioctl_x86_get_xcrs(struct kvm_vcpu *vcpu,
|
||||
struct kvm_xcrs *guest_xcrs)
|
||||
{
|
||||
if (!cpu_has_xsave) {
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE)) {
|
||||
guest_xcrs->nr_xcrs = 0;
|
||||
return;
|
||||
}
|
||||
|
@ -3177,7 +3177,7 @@ static int kvm_vcpu_ioctl_x86_set_xcrs(struct kvm_vcpu *vcpu,
|
|||
{
|
||||
int i, r = 0;
|
||||
|
||||
if (!cpu_has_xsave)
|
||||
if (!boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
return -EINVAL;
|
||||
|
||||
if (guest_xcrs->nr_xcrs > KVM_MAX_XCRS || guest_xcrs->flags)
|
||||
|
@ -5866,7 +5866,7 @@ int kvm_arch_init(void *opaque)
|
|||
|
||||
perf_register_guest_info_callbacks(&kvm_guest_cbs);
|
||||
|
||||
if (cpu_has_xsave)
|
||||
if (boot_cpu_has(X86_FEATURE_XSAVE))
|
||||
host_xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK);
|
||||
|
||||
kvm_lapic_init();
|
||||
|
|
Loading…
Reference in a new issue