KVM: nVMX: fixes for preemption timer migration
Commit850448f35a("KVM: nVMX: Fix VMX preemption timer migration", 2020-06-01) accidentally broke nVMX live migration from older version by changing the userspace ABI. Restore it and, while at it, ensure that vmx->nested.has_preemption_timer_deadline is always initialized according to the KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE flag. Cc: Makarand Sonare <makarandsonare@google.com> Fixes:850448f35a("KVM: nVMX: Fix VMX preemption timer migration") Reviewed-by: Jim Mattson <jmattson@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									8038a922cf
								
							
						
					
					
						commit
						83d31e5271
					
				| @ -4339,14 +4339,15 @@ Errors: | ||||
| #define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001 | ||||
| 
 | ||||
|   struct kvm_vmx_nested_state_hdr { | ||||
| 	__u32 flags; | ||||
| 	__u64 vmxon_pa; | ||||
| 	__u64 vmcs12_pa; | ||||
| 	__u64 preemption_timer_deadline; | ||||
| 
 | ||||
| 	struct { | ||||
| 		__u16 flags; | ||||
| 	} smm; | ||||
| 
 | ||||
| 	__u32 flags; | ||||
| 	__u64 preemption_timer_deadline; | ||||
|   }; | ||||
| 
 | ||||
|   struct kvm_vmx_nested_state_data { | ||||
|  | ||||
| @ -408,14 +408,15 @@ struct kvm_vmx_nested_state_data { | ||||
| }; | ||||
| 
 | ||||
| struct kvm_vmx_nested_state_hdr { | ||||
| 	__u32 flags; | ||||
| 	__u64 vmxon_pa; | ||||
| 	__u64 vmcs12_pa; | ||||
| 	__u64 preemption_timer_deadline; | ||||
| 
 | ||||
| 	struct { | ||||
| 		__u16 flags; | ||||
| 	} smm; | ||||
| 
 | ||||
| 	__u32 flags; | ||||
| 	__u64 preemption_timer_deadline; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_svm_nested_state_data { | ||||
|  | ||||
| @ -6176,6 +6176,7 @@ static int vmx_set_nested_state(struct kvm_vcpu *vcpu, | ||||
| 			goto error_guest_mode; | ||||
| 	} | ||||
| 
 | ||||
| 	vmx->nested.has_preemption_timer_deadline = false; | ||||
| 	if (kvm_state->hdr.vmx.flags & KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE) { | ||||
| 		vmx->nested.has_preemption_timer_deadline = true; | ||||
| 		vmx->nested.preemption_timer_deadline = | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user