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-ia64-devel

Re: [Xen-ia64-devel] [Patch] Remove panic_domain()

Hi, Alex

>On Fri, 2007-03-23 at 15:00 +0900, Akio Takebe wrote:
>> Hi,
>> 
>> I found the bug of panic_domain().
>> When we compile xen with crash_debug=y, debugger_trap_immediate() and 
>> debugger_trap_fatal() is not nop.
>> So if xen call panic_domain() to crash guest,
>> xen call debugger routine, then hangup system.
>> 
>> domain_crash_synchronous() has __FILE__, __LINE__ macros.
>> So I remove panic_domain() and replace it with printk() and
>> domain_crash_synchronous() as x86 do.
>
>   Wouldn't it work just as well to convert panic_domain() to a macro
>and remove the debugger_trap_immediate() and debugger_trap_fatal()
>calls?  The abstraction of panic_domain() is easier to use than
>requiring someone to call all the relevant functions manually.  Thanks,
>
Yes, I used also show_registers() if panic_domain has regs arguments.
(e.g. the following part.)

diff -r 2216a45bf058 xen/arch/ia64/vmx/vlsapic.c
--- a/xen/arch/ia64/vmx/vlsapic.c       Tue Mar 20 15:19:38 2007 -0600
+++ b/xen/arch/ia64/vmx/vlsapic.c       Fri Mar 23 14:41:48 2007 +0900
@@ -480,8 +480,11 @@ int vmx_check_pending_irq(VCPU *vcpu)
     mask = irq_masked(vcpu, h_pending, h_inservice);
     if (  vpsr.i && IRQ_NO_MASKED == mask ) {
         isr = vpsr.val & IA64_PSR_RI;
-        if ( !vpsr.ic )
-            panic_domain(regs,"Interrupt when IC=0\n");
+        if ( !vpsr.ic ){
+            printk("Interrupt when IC=0\n");
+            show_registers(regs);
+            domain_crash_synchronous();
+        }
         update_vhpi(vcpu, h_pending);
         vmx_reflect_interruption(0, isr, 0, 12, regs); // EXT IRQ
     } else if (mask == IRQ_MASKED_BY_INSVC) {

I think panic_domain() don't need debugger_trap_immediate() 
and debugger_trap_fatal().
So what I really want to do is removing them.

BTW, as you said, panic_domain() is easier to use than 
domain_crash_synchronous() macro.
I make new patch.
We can know the caller function by CallTrace (without __FILE__, __LINE__),
so I only remove the debug routines.
Is the attached new patch better?

Best Regards,

Akio Takebe

Attachment: remove_debugger_function.patch
Description: Binary data

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