[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] vVMX: use latched VMCS machine address
> >> -void virtual_vmcs_enter(void *vvmcs) > >> +void virtual_vmcs_enter(const struct vcpu *v) > >> { > >> - __vmptrld(pfn_to_paddr(domain_page_map_to_mfn(vvmcs))); > >> + __vmptrld(v->arch.hvm_vmx.vmcs_shadow_maddr); > > > > Debug shows v->arch.hvm_vmx.vmcs_shadow_maddr will equal to 0 at > > this point, this will crash the system. > > > >> } > >> > >> -void virtual_vmcs_exit(void *vvmcs) > >> +void virtual_vmcs_exit(const struct vcpu *v) > >> { > >> paddr_t cur = this_cpu(current_vmcs); > >> > >> - __vmpclear(pfn_to_paddr(domain_page_map_to_mfn(vvmcs))); > >> + __vmpclear(v->arch.hvm_vmx.vmcs_shadow_maddr); > > > > Debug shows v->arch.hvm_vmx.vmcs_shadow_maddr will equal to 0 at > > this point, this will crash the system. > > For both of these you provide too little context. In particular ... > > > Maybe we should use pfn_to_paddr(domain_page_map_to_mfn(vvmcs))) > here. > > ... this shouldn't be necessary, since the whole purpose of the patch is to > avoid this, making sure > v->arch.hvm_vmx.vmcs_shadow_maddr always represents > domain_page_map_to_mfn(vvmcs). Hence if you find the latched field to be > zero, we'll need to understand _why_ this is so, i.e. > what code path cleared the field (perhaps prematurely). Hi Jan, I found the code path when creating the L2 guest: .... (XEN)nvmx_handle_vmclear (XEN)nvmx_handle_vmptrld (XEN)map_io_bitmap_all (XEN)_map_io_bitmap (XEN)virtual_vmcs_enter (XEN)_map_io_bitmap (XEN)virtual_vmcs_enter (XEN)_map_msr_bitmap (XEN)virtual_vmcs_enter (XEN)nvmx_set_vmcs_pointer (XEN)nvmx_handle_vmwrite .... so the virtual_vmcs_enter() will be called before the nvmx_set_vmcs_pointer(), and at this time 'v->arch.hvm_vmx.vmcs_shadow_maddr' still equal to 0. Maybe ' v->arch.hvm_vmx.vmcs_shadow_maddr' should be set when setting the 'nvcpu->nv_vvmcx' in nvmx_handle_vmptrld(). Liang _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |