|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-ia64-devel
[Xen-ia64-devel] stack corruption creating idle domain 
| 
   I've been debugging a hang that I see on current xen-unstable.hg and
I'm looking for suggestions.  The hang occurs just after xen prints
"About to call scheduler_init()".  I've traced the problem with ski and
it appears that in init_switch_stack we blow away the stack with the
memset of the switch_stack and pt_regs area.  The problem seems to be
that we're setting idle_vcpu[0] to the address in r13 (back in
start_kernel), but we haven't set r13 to anything that necessarily has
enough space for idle_vcpu[0].  Am I missing the setup of r13?  The
trivial patch below works around the problem, but perhaps I'm
overlooking some intricacy about how this is supposed to work.
   BTW, I only see this problem when using gcc-3.3.5.  That compiler
decides to use the stack in init_switch_stack causing us to infinitely
page fault when we get back from the memset.  I have observed in ski
that a xen image compiled with gcc-4.0 also overwrites the stack, but
nothing critical seems to be using it.  What's the correct fix here?
Thanks,
        Alex
 
-- 
Alex Williamson                             HP Linux & Open Source Lab
--- a/xen/arch/ia64/xen/xensetup.c      Mon Jan 23 15:27:00 2006
+++ b/xen/arch/ia64/xen/xensetup.c      Tue Jan 24 05:59:04 2006
@@ -148,6 +148,8 @@
     .stop_bits = 1
 };
 
+struct vcpu idlevcpu0;
+
 void start_kernel(void)
 {
     unsigned char *cmdline;
@@ -280,7 +282,8 @@
 
 printk("About to call scheduler_init()\n");
     scheduler_init();
-    idle_vcpu[0] = (struct vcpu*) ia64_r13;
+    ia64_r13 = (void *)&idlevcpu0;
+    idle_vcpu[0] = &idlevcpu0;
     idle_domain = domain_create(IDLE_DOMAIN_ID, 0);
     BUG_ON(idle_domain == NULL);
 
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
 | 
 
| <Prev in Thread] | Current Thread | [Next in Thread> |  | 
[Xen-ia64-devel] stack corruption creating idle domain,
Alex Williamson <=
 |  |  | 
  
    |  |  |