KVM: SVM: copy instruction bytes from VMCB
In case of a nested page fault or an intercepted #PF newer SVM implementations provide a copy of the faulting instruction bytes in the VMCB. Use these bytes to feed the instruction emulator and avoid the costly guest instruction fetch in this case. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
committed by
Avi Kivity
parent
df4f310856
commit
dc25e89e07
@@ -3330,7 +3330,8 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
|
||||
}
|
||||
}
|
||||
|
||||
int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t cr2, u32 error_code)
|
||||
int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t cr2, u32 error_code,
|
||||
void *insn, int insn_len)
|
||||
{
|
||||
int r;
|
||||
enum emulation_result er;
|
||||
@@ -3348,7 +3349,7 @@ int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t cr2, u32 error_code)
|
||||
if (r)
|
||||
goto out;
|
||||
|
||||
er = x86_emulate_instruction(vcpu, cr2, 0);
|
||||
er = x86_emulate_instruction(vcpu, cr2, 0, insn, insn_len);
|
||||
|
||||
switch (er) {
|
||||
case EMULATE_DONE:
|
||||
|
Reference in New Issue
Block a user