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

Re: [Xen-devel] Changeset 15035 causes x86-32 to hang




xen-devel-bounces@xxxxxxxxxxxxxxxxxxx wrote on 05/26/2007 01:31:51 AM:

> On 26/5/07 00:46, "Stefan Berger" <stefanb@xxxxxxxxxx> wrote:

> > This changeset seems to have introduced some general instability. A
> > complete hang at boot is the best most reproducible case reported so
> > far however. It would be great if you can add some tracing and find
> > out what is going on. It may be that the underlying bug is also
> > responsible for some issues which are harder to reproduce and track down.
>
> At what point does printk() work? All the way at the entry point of
> __start_xen()?
> I have added some printks there but haven't seen any output to the
> screen so far. Looking at the assembly part now that's calling __start_xen().
>
> I'd help, but I'll be away for a couple of days starting tomorrow...

>
> If you have a serial line attached then you can output characters as
> early as you like with just a couple of machine instructions.
> Outputting to VGA text console is similarly quite easy (just write
> characters to the text console at 0xb8000). It’s not full printk,
> but is sufficient to track down how far your boot is getting before
> crash or hang.


From xen/arch/x86/boot/trampoline.S:

[...]
#if CONFIG_PAGING_LEVELS != 2

/* Set up EFER (Extended Feature Enable Register). */

        movl    $MSR_EFER,%ecx
       rdmsr
[...]


The rdmsr is causing the crash on my machines.
This patch fixes the problem:

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>

diff -r bd3d6b4c52ec xen/arch/x86/boot/trampoline.S
--- a/xen/arch/x86/boot/trampoline.S                 Fri Jun 01 14:50:52 2007 +0100
+++ b/xen/arch/x86/boot/trampoline.S                 Mon Jun 04 12:41:28 2007 -0400
@@ -59,6 +59,10 @@ trampoline_protmode_entry:
        mov     %eax,%cr3

#if CONFIG_PAGING_LEVELS != 2
+        mov     SYM_TRAMP_PHYS(cpuid_ext_features),%edi
+        btl     $20,%edi        /* CPUID 0x80000001, EDX[20] */
+        jnc     2f
+
        /* Set up EFER (Extended Feature Enable Register). */
        movl    $MSR_EFER,%ecx
        rdmsr
@@ -66,13 +70,10 @@ trampoline_protmode_entry:
        btsl    $_EFER_LME,%eax /* Long Mode      */
        btsl    $_EFER_SCE,%eax /* SYSCALL/SYSRET */
#endif
-        mov     SYM_TRAMP_PHYS(cpuid_ext_features),%edi
-        btl     $20,%edi        /* CPUID 0x80000001, EDX[20] */
-        jnc     1f
        btsl    $_EFER_NX,%eax  /* No-Execute     */
-1:      wrmsr
+        wrmsr
#endif
-
+2:
        mov     $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */
        mov     %eax,%cr0
        jmp     1f

  Stefan


>
>  -- Keir_______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

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