Skip to content

Commit

Permalink
KVM: SVM: implement enhanced INVLPG intercept
Browse files Browse the repository at this point in the history
When the DecodeAssist feature is available, the linear address
is provided in the VMCB on INVLPG intercepts. Use it directly to
avoid any decoding and emulation.
This is only useful for shadow paging, though.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
  • Loading branch information
Andre Przywara authored and Avi Kivity committed Jan 12, 2011
1 parent cae3797 commit df4f310
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion arch/x86/kvm/svm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2652,7 +2652,12 @@ static int iret_interception(struct vcpu_svm *svm)

static int invlpg_interception(struct vcpu_svm *svm)
{
return emulate_instruction(&svm->vcpu, 0) == EMULATE_DONE;
if (!static_cpu_has(X86_FEATURE_DECODEASSISTS))
return emulate_instruction(&svm->vcpu, 0) == EMULATE_DONE;

kvm_mmu_invlpg(&svm->vcpu, svm->vmcb->control.exit_info_1);
skip_emulated_instruction(&svm->vcpu);
return 1;
}

static int emulate_on_interception(struct vcpu_svm *svm)
Expand Down

0 comments on commit df4f310

Please sign in to comment.