mbox series

[0/2] RFC: VMX: fix for disappearing L1->L2 event injection on L1 migration

Message ID 20210106105306.450602-1-mlevitsk@redhat.com (mailing list archive)
Headers show
Series RFC: VMX: fix for disappearing L1->L2 event injection on L1 migration | expand

Message

Maxim Levitsky Jan. 6, 2021, 10:53 a.m. UTC
This is VMX version of the same issue as I reproduced on SVM.

Unlike SVM, this version has 2 pending issues to resolve.

1. This seems to break 'vmx' kvm-unit-test in
'error code <-> (!URG || prot_mode) [+]' case.

The test basically tries to do nested vm entry with unrestricted guest disabled,
real mode, and for some reason that works without patch 2 of this series and it
doesn't cause the #GP to be injected, but with this patch the test complains
about unexpected #GP.
I suspect that this test case is broken, but this has to be investigated.

2. L1 MTF injections are lost since kvm has no notion of them, this is TBD to
be fixed.

This was lightly tested on my nested migration test which no VMX sadly still
crashes and burns on an (likely) unrelated issue.

Best regards,
	Maxim Levitsky

Maxim Levitsky (2):
  KVM: VMX: create vmx_process_injected_event
  KVM: nVMX: fix for disappearing L1->L2 event injection on L1 migration

 arch/x86/kvm/vmx/nested.c | 12 ++++----
 arch/x86/kvm/vmx/vmx.c    | 60 ++++++++++++++++++++++++---------------
 arch/x86/kvm/vmx/vmx.h    |  4 +++
 3 files changed, 47 insertions(+), 29 deletions(-)

Comments

Sean Christopherson Jan. 6, 2021, 6:07 p.m. UTC | #1
On Wed, Jan 06, 2021, Maxim Levitsky wrote:
> This is VMX version of the same issue as I reproduced on SVM.
> 
> Unlike SVM, this version has 2 pending issues to resolve.
> 
> 1. This seems to break 'vmx' kvm-unit-test in
> 'error code <-> (!URG || prot_mode) [+]' case.
> 
> The test basically tries to do nested vm entry with unrestricted guest disabled,
> real mode, and for some reason that works without patch 2 of this series and it
> doesn't cause the #GP to be injected, but with this patch the test complains
> about unexpected #GP.

An unexpected #GP for that test is very unlikely.  The various sub-tests under
vmx_controls_test() should never fully enter the guest as GUEST.RFLAGS is set to
an invalid value.  And, that specific test does VM-Enter with URG=0 and
CR0.PG/PE=0, which is also invalid.  The unit test uses test_vmx_valid_controls(),
which is a wee bit misleading, as the "early" consistency checks that cause
VM-Fail are expected to succeed, while the VM-Enter is still expected to "fail"
due to a consistency check VM-Exit.

> I suspect that this test case is broken, but this has to be investigated.
> 
> 2. L1 MTF injections are lost since kvm has no notion of them, this is TBD to
> be fixed.
> 
> This was lightly tested on my nested migration test which no VMX sadly still
> crashes and burns on an (likely) unrelated issue.
> 
> Best regards,
> 	Maxim Levitsky
> 
> Maxim Levitsky (2):
>   KVM: VMX: create vmx_process_injected_event
>   KVM: nVMX: fix for disappearing L1->L2 event injection on L1 migration
> 
>  arch/x86/kvm/vmx/nested.c | 12 ++++----
>  arch/x86/kvm/vmx/vmx.c    | 60 ++++++++++++++++++++++++---------------
>  arch/x86/kvm/vmx/vmx.h    |  4 +++
>  3 files changed, 47 insertions(+), 29 deletions(-)
> 
> -- 
> 2.26.2
> 
>