[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [xen-unstable test] 21288: regressions - FAIL



Jan Beulich wrote on 2013-10-30:
>>>> On 30.10.13 at 01:30, xen.org <ian.jackson@xxxxxxxxxxxxx> wrote:
>> flight 21288 xen-unstable real [real]
>> http://www.chiark.greenend.org.uk/~xensrcts/logs/21288/
>> 
>> Regressions :-(
>> 
>> Tests which did not succeed and are blocking, including tests which
>> could not be run:
>>  test-amd64-amd64-xl-qemuu-winxpsp3  8 guest-saverestore   fail REGR.
>>  vs. 21268 test-amd64-amd64-xl-qemut-winxpsp3  7 windows-install    
>>  fail REGR. vs. 21268 test-amd64-amd64-xl-winxpsp3  7 windows-install  
>>          fail REGR. vs. 21268 test-amd64-amd64-xl-win7-amd64  7
>>  windows-install         fail REGR. vs. 21268
>>  test-amd64-i386-xl-win7-amd64  7 windows-install          fail REGR.
>>  vs. 21268 test-amd64-i386-xl-qemut-win7-amd64  7 windows-install   
>>  fail REGR.
> vs. 21268
> 
> All but the first one are due to the guests triple faulting while
> booting. While - unless otherwise confirmed - I'd like to wait for
> bisector results here, the prime suspect appears to be c9efe34c
> ("VMX: Eliminate cr3 store/load vmexit when UG enabled") - any
> thoughts? Did you perhaps not test this on a system without UG support?

Yes, the previous patch will cause the guest boot fail on non-UG platform. The 
following patch is able to fix it.
But going deep into the code, I am thinking whether the current logic that set 
hw_cr[3] and guest_cr[3] from GUEST_CR3 is really necessary. Especially, each 
VMexit does the same thing. 

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 502caa3..702b493 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2411,7 +2411,8 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs)
     if ( paging_mode_hap(v->domain) )
     {
         __vmread(GUEST_CR3, &v->arch.hvm_vcpu.hw_cr[3]);
-        v->arch.hvm_vcpu.guest_cr[3] = v->arch.hvm_vcpu.hw_cr[3];
+        if ( vmx_unrestricted_guest(v) || hvm_paging_enabled(v) )
+            v->arch.hvm_vcpu.guest_cr[3] = v->arch.hvm_vcpu.hw_cr[3];
     }
 
     __vmread(VM_EXIT_REASON, &exit_reason);

> 
> Jan


Best regards,
Yang



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.