[PATCH] KVM: MMU: Remove invlpg interception
Since we write protect shadowed guest page tables, there is no need to trap page invalidations (the guest will always change the mapping before issuing the invlpg instruction). Signed-off-by: Avi Kivity <avi@qumranet.com> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
ebeace8609
commit
5f015a5b28
@@ -1059,7 +1059,6 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
|
||||
| CPU_BASED_CR8_LOAD_EXITING /* 20.6.2 */
|
||||
| CPU_BASED_CR8_STORE_EXITING /* 20.6.2 */
|
||||
| CPU_BASED_UNCOND_IO_EXITING /* 20.6.2 */
|
||||
| CPU_BASED_INVDPG_EXITING
|
||||
| CPU_BASED_MOV_DR_EXITING
|
||||
| CPU_BASED_USE_TSC_OFFSETING /* 21.3 */
|
||||
);
|
||||
@@ -1438,17 +1437,6 @@ static int handle_io(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int handle_invlpg(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
||||
{
|
||||
u64 address = vmcs_read64(EXIT_QUALIFICATION);
|
||||
int instruction_length = vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
|
||||
spin_lock(&vcpu->kvm->lock);
|
||||
vcpu->mmu.inval_page(vcpu, address);
|
||||
spin_unlock(&vcpu->kvm->lock);
|
||||
vmcs_writel(GUEST_RIP, vmcs_readl(GUEST_RIP) + instruction_length);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int handle_cr(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
||||
{
|
||||
u64 exit_qualification;
|
||||
@@ -1636,7 +1624,6 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu,
|
||||
[EXIT_REASON_EXCEPTION_NMI] = handle_exception,
|
||||
[EXIT_REASON_EXTERNAL_INTERRUPT] = handle_external_interrupt,
|
||||
[EXIT_REASON_IO_INSTRUCTION] = handle_io,
|
||||
[EXIT_REASON_INVLPG] = handle_invlpg,
|
||||
[EXIT_REASON_CR_ACCESS] = handle_cr,
|
||||
[EXIT_REASON_DR_ACCESS] = handle_dr,
|
||||
[EXIT_REASON_CPUID] = handle_cpuid,
|
||||
|
Reference in New Issue
Block a user