Commit 4ab13be5 authored by Andrew Cooper's avatar Andrew Cooper Committed by Dave Hansen
Browse files

x86/fred: Fix 64bit identifier in fred_ss



FRED can only be enabled in Long Mode.  This is the 64bit mode (as opposed to
compatibility mode) identifier, rather than being something hard-wired at 1.

No functional change.

Signed-off-by: default avatarAndrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: default avatarXin Li (Intel) <xin@zytor.com>
Reviewed-by: default avatarH. Peter Anvin (Intel) <hpa@zytor.com>
Acked-by: default avatarH. Peter Anvin (Intel) <hpa@zytor.com>
parent 3a866087
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -78,13 +78,13 @@ static noinstr void fred_intx(struct pt_regs *regs)
static __always_inline void fred_other(struct pt_regs *regs)
{
	/* The compiler can fold these conditions into a single test */
	if (likely(regs->fred_ss.vector == FRED_SYSCALL && regs->fred_ss.lm)) {
	if (likely(regs->fred_ss.vector == FRED_SYSCALL && regs->fred_ss.l)) {
		regs->orig_ax = regs->ax;
		regs->ax = -ENOSYS;
		do_syscall_64(regs, regs->orig_ax);
		return;
	} else if (ia32_enabled() &&
		   likely(regs->fred_ss.vector == FRED_SYSENTER && !regs->fred_ss.lm)) {
		   likely(regs->fred_ss.vector == FRED_SYSENTER && !regs->fred_ss.l)) {
		regs->orig_ax = regs->ax;
		regs->ax = -ENOSYS;
		do_fast_syscall_32(regs);
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ static __always_inline void fred_entry_from_kvm(unsigned int type, unsigned int
		.type   = type,
		.vector = vector,
		.nmi    = type == EVENT_TYPE_NMI,
		.lm     = 1,
		.l      = 1,
	};

	asm_fred_entry_from_kvm(ss);
+2 −2
Original line number Diff line number Diff line
@@ -84,8 +84,8 @@ struct fred_ss {
			:  4,
		/* Event was incident to enclave execution */
		enclave	:  1,
		/* CPU was in long mode */
		lm	:  1,
		/* CPU was in 64-bit mode */
		l	:  1,
		/*
		 * Nested exception during FRED delivery, not set
		 * for #DF.