OSDN Git Service

KVM: x86: VMX: Intercept #GP to support access to VMware backdoor ports
authorLiran Alon <liran.alon@oracle.com>
Mon, 12 Mar 2018 11:12:51 +0000 (13:12 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 16 Mar 2018 21:01:42 +0000 (22:01 +0100)
commit9e86948041f2ec6b7868d4849181cb7bb1bdee70
tree45ed6947b868187d8988e695a0d3a68b61b5914d
parent04789b6664a60474aeb8b07a9a94d923a217690e
KVM: x86: VMX: Intercept #GP to support access to VMware backdoor ports

If KVM enable_vmware_backdoor module parameter is set,
the commit change VMX to now intercept #GP instead of being directly
deliviered from CPU to guest.

It is done to support access to VMware backdoor I/O ports
even if TSS I/O permission denies it.
In that case:
1. A #GP will be raised and intercepted.
2. #GP intercept handler will simulate I/O port access instruction.
3. I/O port access instruction simulation will allow access to VMware
backdoor ports specifically even if TSS I/O permission bitmap denies it.

Note that the above change introduce slight performance hit as now #GPs
are not deliviered directly from CPU to guest but instead
cause #VMExit and instruction emulation.
However, this behavior is introduced only when enable_vmware_backdoor
KVM module parameter is set.

Signed-off-by: Liran Alon <liran.alon@oracle.com>
Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx.c