|
|
|
|
|
|
|
|
|
|
xen-devel
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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: [Xen-devel] Changeset 15035 causes x86-32 to hang,
Stefan Berger <=
|
|
|
|
|