mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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: Andrew Cooper <andrew.cooper3@citrix.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Xin Li (Intel) <xin@zytor.com> Reviewed-by: H. Peter Anvin (Intel) <hpa@zytor.com> Acked-by: H. Peter Anvin (Intel) <hpa@zytor.com>
This commit is contained in:
committed by
Dave Hansen
parent
3a86608788
commit
4ab13be5ed
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user