|
@@ -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)
|