debuggers.hg
changeset 3711:e8ee717f2423
bitkeeper revision 1.1159.212.97 (4204dcc70PktbFSV6N0XNpd9T7Z_Nw)
Merge maf46@ssh-relay1.cl.cam.ac.uk:/usr/groups/xeno/BK/xen-unstable.bk
into fleming.research:/scratch/fleming/mafetter/xen-unstable.bk
Merge maf46@ssh-relay1.cl.cam.ac.uk:/usr/groups/xeno/BK/xen-unstable.bk
into fleming.research:/scratch/fleming/mafetter/xen-unstable.bk
author | mafetter@fleming.research |
---|---|
date | Sat Feb 05 14:48:39 2005 +0000 (2005-02-05) |
parents | 4f291c00af8c d8970d36fc08 |
children | 32959ed5fef3 |
files | xen/arch/x86/traps.c xen/common/schedule.c |
line diff
1.1 --- a/xen/arch/x86/traps.c Sat Feb 05 11:37:25 2005 +0000 1.2 +++ b/xen/arch/x86/traps.c Sat Feb 05 14:48:39 2005 +0000 1.3 @@ -567,14 +567,14 @@ asmlinkage void io_check_error(struct xe 1.4 fatal_trap(TRAP_nmi, regs); 1.5 } 1.6 1.7 -static void unknown_nmi_error(unsigned char reason, struct xen_regs * regs) 1.8 +static void unknown_nmi_error(unsigned char reason) 1.9 { 1.10 printk("Uhhuh. NMI received for unknown reason %02x.\n", reason); 1.11 printk("Dazed and confused, but trying to continue\n"); 1.12 printk("Do you have a strange power saving mode enabled?\n"); 1.13 } 1.14 1.15 -asmlinkage void do_nmi(struct xen_regs * regs, unsigned long reason) 1.16 +asmlinkage void do_nmi(struct xen_regs *regs, unsigned long reason) 1.17 { 1.18 ++nmi_count(smp_processor_id()); 1.19 1.20 @@ -583,7 +583,7 @@ asmlinkage void do_nmi(struct xen_regs * 1.21 nmi_watchdog_tick(regs); 1.22 else 1.23 #endif 1.24 - unknown_nmi_error((unsigned char)(reason&0xff), regs); 1.25 + unknown_nmi_error((unsigned char)(reason&0xff)); 1.26 } 1.27 1.28 unsigned long nmi_softirq_reason; 1.29 @@ -671,6 +671,13 @@ asmlinkage int do_spurious_interrupt_bug 1.30 return EXCRET_not_a_fault; 1.31 } 1.32 1.33 +BUILD_SMP_INTERRUPT(deferred_nmi, TRAP_deferred_nmi) 1.34 +asmlinkage void smp_deferred_nmi(struct xen_regs regs) 1.35 +{ 1.36 + ack_APIC_irq(); 1.37 + do_nmi(®s, 0); 1.38 +} 1.39 + 1.40 void set_intr_gate(unsigned int n, void *addr) 1.41 { 1.42 _set_gate(idt_table+n,14,0,addr); 1.43 @@ -728,7 +735,7 @@ void __init trap_init(void) 1.44 set_intr_gate(TRAP_alignment_check,&alignment_check); 1.45 set_intr_gate(TRAP_machine_check,&machine_check); 1.46 set_intr_gate(TRAP_simd_error,&simd_coprocessor_error); 1.47 - set_intr_gate(TRAP_deferred_nmi,&nmi); 1.48 + set_intr_gate(TRAP_deferred_nmi,&deferred_nmi); 1.49 1.50 #if defined(__i386__) 1.51 _set_gate(idt_table+HYPERCALL_VECTOR, 14, 1, &hypercall);