mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
KVM: x86: Move EMULTYPE_ALLOW_RETRY_PF to x86_emulate_instruction()
Move the sanity checks for EMULTYPE_ALLOW_RETRY_PF to the top of x86_emulate_instruction(). In addition to deduplicating a small amount of code, this makes the connection between EMULTYPE_ALLOW_RETRY_PF and EMULTYPE_PF even more explicit, and will allow dropping retry_instruction() entirely. Reviewed-by: Yuan Yao <yuan.yao@intel.com> Link: https://lore.kernel.org/r/20240831001538.336683-11-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
dfaae8447c
commit
41e6e367d5
@ -8870,10 +8870,6 @@ static bool reexecute_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
|
||||
if (!(emulation_type & EMULTYPE_ALLOW_RETRY_PF))
|
||||
return false;
|
||||
|
||||
if (WARN_ON_ONCE(is_guest_mode(vcpu)) ||
|
||||
WARN_ON_ONCE(!(emulation_type & EMULTYPE_PF)))
|
||||
return false;
|
||||
|
||||
if (!vcpu->arch.mmu->root_role.direct) {
|
||||
/*
|
||||
* Write permission should be allowed since only
|
||||
@ -8942,10 +8938,6 @@ static bool retry_instruction(struct x86_emulate_ctxt *ctxt,
|
||||
if (!(emulation_type & EMULTYPE_ALLOW_RETRY_PF))
|
||||
return false;
|
||||
|
||||
if (WARN_ON_ONCE(is_guest_mode(vcpu)) ||
|
||||
WARN_ON_ONCE(!(emulation_type & EMULTYPE_PF)))
|
||||
return false;
|
||||
|
||||
if (x86_page_table_writing_insn(ctxt))
|
||||
return false;
|
||||
|
||||
@ -9148,6 +9140,11 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
|
||||
struct x86_emulate_ctxt *ctxt = vcpu->arch.emulate_ctxt;
|
||||
bool writeback = true;
|
||||
|
||||
if ((emulation_type & EMULTYPE_ALLOW_RETRY_PF) &&
|
||||
(WARN_ON_ONCE(is_guest_mode(vcpu)) ||
|
||||
WARN_ON_ONCE(!(emulation_type & EMULTYPE_PF))))
|
||||
emulation_type &= ~EMULTYPE_ALLOW_RETRY_PF;
|
||||
|
||||
r = kvm_check_emulate_insn(vcpu, emulation_type, insn, insn_len);
|
||||
if (r != X86EMUL_CONTINUE) {
|
||||
if (r == X86EMUL_RETRY_INSTR || r == X86EMUL_PROPAGATE_FAULT)
|
||||
|
Loading…
Reference in New Issue
Block a user