aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm
diff options
context:
space:
mode:
authorNadav Amit <namit@cs.technion.ac.il>2014-07-21 07:37:30 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2014-07-21 07:42:39 -0400
commit6c6cb69b8e974049cca2cc4480052fb9e7df767b (patch)
tree7f172e2866f3b38c7e82badcfc3567bbb650eb23 /arch/x86/kvm
parent4467c3f1ad16e3640e2b61e1a5e0bd55281a925d (diff)
KVM: x86: Cleanup of rflags.rf cleaning
RFLAGS.RF was cleaned in several functions (e.g., syscall) in the x86 emulator. Now that we clear it before the execution of an instruction in the emulator, we can remove the specific cleanup of RFLAGS.RF. Signed-off-by: Nadav Amit <namit@cs.technion.ac.il> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r--arch/x86/kvm/emulate.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 189b8bd86e31..8d415563e05b 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2211,7 +2211,7 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt)
2211 *reg_write(ctxt, VCPU_REGS_RCX) = ctxt->_eip; 2211 *reg_write(ctxt, VCPU_REGS_RCX) = ctxt->_eip;
2212 if (efer & EFER_LMA) { 2212 if (efer & EFER_LMA) {
2213#ifdef CONFIG_X86_64 2213#ifdef CONFIG_X86_64
2214 *reg_write(ctxt, VCPU_REGS_R11) = ctxt->eflags & ~EFLG_RF; 2214 *reg_write(ctxt, VCPU_REGS_R11) = ctxt->eflags;
2215 2215
2216 ops->get_msr(ctxt, 2216 ops->get_msr(ctxt,
2217 ctxt->mode == X86EMUL_MODE_PROT64 ? 2217 ctxt->mode == X86EMUL_MODE_PROT64 ?
@@ -2219,14 +2219,14 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt)
2219 ctxt->_eip = msr_data; 2219 ctxt->_eip = msr_data;
2220 2220
2221 ops->get_msr(ctxt, MSR_SYSCALL_MASK, &msr_data); 2221 ops->get_msr(ctxt, MSR_SYSCALL_MASK, &msr_data);
2222 ctxt->eflags &= ~(msr_data | EFLG_RF); 2222 ctxt->eflags &= ~msr_data;
2223#endif 2223#endif
2224 } else { 2224 } else {
2225 /* legacy mode */ 2225 /* legacy mode */
2226 ops->get_msr(ctxt, MSR_STAR, &msr_data); 2226 ops->get_msr(ctxt, MSR_STAR, &msr_data);
2227 ctxt->_eip = (u32)msr_data; 2227 ctxt->_eip = (u32)msr_data;
2228 2228
2229 ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF); 2229 ctxt->eflags &= ~(EFLG_VM | EFLG_IF);
2230 } 2230 }
2231 2231
2232 return X86EMUL_CONTINUE; 2232 return X86EMUL_CONTINUE;
@@ -2275,7 +2275,7 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
2275 break; 2275 break;
2276 } 2276 }
2277 2277
2278 ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF); 2278 ctxt->eflags &= ~(EFLG_VM | EFLG_IF);
2279 cs_sel = (u16)msr_data; 2279 cs_sel = (u16)msr_data;
2280 cs_sel &= ~SELECTOR_RPL_MASK; 2280 cs_sel &= ~SELECTOR_RPL_MASK;
2281 ss_sel = cs_sel + 8; 2281 ss_sel = cs_sel + 8;