KVM: nVMX: Drop manual clearing of segment cache on nested VMCS switch
Drop the call to vmx_segment_cache_clear() in vmx_switch_vmcs() now that the entire register cache is reset when switching the active VMCS, e.g. vmx_segment_cache_test_set() will reset the segment cache due to VCPU_EXREG_SEGMENTS being unavailable. Move vmx_segment_cache_clear() to vmx.c now that it's no longer invoked by the nested code. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Message-Id: <20200415203454.8296-4-sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									e5d03de593
								
							
						
					
					
						commit
						ec0241f3bb
					
				| @ -308,7 +308,6 @@ static void vmx_switch_vmcs(struct kvm_vcpu *vcpu, struct loaded_vmcs *vmcs) | ||||
| 	put_cpu(); | ||||
| 
 | ||||
| 	vmx_register_cache_reset(vcpu); | ||||
| 	vmx_segment_cache_clear(vmx); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -437,6 +437,11 @@ static const struct kvm_vmx_segment_field { | ||||
| 	VMX_SEGMENT_FIELD(LDTR), | ||||
| }; | ||||
| 
 | ||||
| static inline void vmx_segment_cache_clear(struct vcpu_vmx *vmx) | ||||
| { | ||||
| 	vmx->segment_cache.bitmask = 0; | ||||
| } | ||||
| 
 | ||||
| static unsigned long host_idt_base; | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -443,11 +443,6 @@ BUILD_CONTROLS_SHADOW(pin, PIN_BASED_VM_EXEC_CONTROL) | ||||
| BUILD_CONTROLS_SHADOW(exec, CPU_BASED_VM_EXEC_CONTROL) | ||||
| BUILD_CONTROLS_SHADOW(secondary_exec, SECONDARY_VM_EXEC_CONTROL) | ||||
| 
 | ||||
| static inline void vmx_segment_cache_clear(struct vcpu_vmx *vmx) | ||||
| { | ||||
| 	vmx->segment_cache.bitmask = 0; | ||||
| } | ||||
| 
 | ||||
| static inline void vmx_register_cache_reset(struct kvm_vcpu *vcpu) | ||||
| { | ||||
| 	vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user