Having (nested_state->hdr.vmx.vmxon_pa != -1ull) signals that vCPU have set at some point in time a VMXON region. Note that even though when vCPU enters SMM mode it temporarily exit VMX operation, KVM still reports (vmxon_pa != -1ull). Therefore, this field can be used as a reliable indicator on when we require to send VMX nested-state as part of migration stream.
Reviewed-by: Joao Martins <joao.m.mart...@oracle.com> Signed-off-by: Liran Alon <liran.a...@oracle.com> --- target/i386/machine.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/target/i386/machine.c b/target/i386/machine.c index 851b249d1a39..20bda9f80154 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -997,9 +997,8 @@ static bool vmx_nested_state_needed(void *opaque) { struct kvm_nested_state *nested_state = opaque; - return ((nested_state->format == KVM_STATE_NESTED_FORMAT_VMX) && - ((nested_state->hdr.vmx.vmxon_pa != -1ull) || - (nested_state->hdr.vmx.smm.flags & KVM_STATE_NESTED_SMM_VMXON))); + return (nested_state->format == KVM_STATE_NESTED_FORMAT_VMX) && + (nested_state->hdr.vmx.vmxon_pa != -1ull); } static const VMStateDescription vmstate_vmx_nested_state = { -- 2.20.1