WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] Changeset 15035 causes x86-32 to hang
From: Stefan Berger <stefanb@xxxxxxxxxx>
Date: Mon, 4 Jun 2007 12:58:01 -0400
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 04 Jun 2007 09:56:50 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <C27D84D7.7F75%Keir.Fraser@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx

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
<Prev in Thread] Current Thread [Next in Thread>