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

[Xen-devel] Re: [PATCH] kexec: framework and i386 (Take XIV)



On Thu, Aug 31, 2006 at 05:55:52PM +0900, Akio Takebe wrote:
> Hi, Horms and Magnus
> 
> Good work. :-)
> I have one commet.
> 
> I believe crash_kexec should be directly called 
> when unknown NMI is occurred.
> In your patch, crash_kexec is called as the bellow.
>   1. unknown NMI is occurred. (e.g. by pushing NMI botton)
>   2. xen recieved NMI and call do_nmi.
>   3. xen report to dom0 by using raise_softirq(NMI_SOFTIRQ).
>   4. dom0 call crash_kexec of dom0.
>   5. crash_kexec of dom0 call crash_kexec of xen
> 
> Am I correct?
> The above process is not reliable if I'm correct.
> So I belive crash_kexec of xen should be directly called like the 
> following patch.
> 
> diff -r 9611a5c9e1a1 xen/arch/x86/traps.c
> --- a/xen/arch/x86/traps.c      Thu Aug 31 13:12:26 2006 +0900
> +++ b/xen/arch/x86/traps.c      Thu Aug 31 17:40:19 2006 +0900
> @@ -1612,6 +1612,7 @@ asmlinkage void do_nmi(struct cpu_user_r
>          else if ( reason & 0x40 )
>              io_check_error(regs);
>          else if ( !nmi_watchdog )
> +            crash_kexec(NULL);
>              unknown_nmi_error((unsigned char)(reason&0xff));
>      }
>  }
> 
> What do you think about it?

That seems like a good idea to me. Though I think you are missing { }.
Can you test to see if this works?

--- a/xen/arch/x86/traps.c      2006-09-01 11:53:44.000000000 +0900
+++ b/xen/arch/x86/traps.c      2006-09-01 11:53:56.000000000 +0900
@@ -1611,8 +1611,10 @@
             mem_parity_error(regs);
         else if ( reason & 0x40 )
             io_check_error(regs);
-        else if ( !nmi_watchdog )
+        else if ( !nmi_watchdog ) {
+           crash_kexec(NULL);
             unknown_nmi_error((unsigned char)(reason&0xff));
+       }
     }
 }
 

_______________________________________________
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®.