bitkeeper revision 1.1159.245.1 (4204be86F8AKmyv5_m4N44YWgyyt_Q)

Another NMI watchdog fix. Deferred NMIs need to ACK the local APIC.
Signed-off-by: keir.fraser@cl.cam.ac.uk
This commit is contained in:
kaf24@scramble.cl.cam.ac.uk committed 2005-02-05 12:39:34 +00:00
1 parent fc3efe0ada
commit 48ff6b71e1
1 file changed
+11 -4
+11 -4
View File
@@ -591,14 +591,14 @@ asmlinkage void io_check_error(struct xen_regs *regs)
fatal_trap(TRAP_nmi, regs);
}
static void unknown_nmi_error(unsigned char reason, struct xen_regs * regs)
static void unknown_nmi_error(unsigned char reason)
{
printk("Uhhuh. NMI received for unknown reason %02x.\n", reason);
printk("Dazed and confused, but trying to continue\n");
printk("Do you have a strange power saving mode enabled?\n");
}
asmlinkage void do_nmi(struct xen_regs * regs, unsigned long reason)
asmlinkage void do_nmi(struct xen_regs *regs, unsigned long reason)
{
++nmi_count(smp_processor_id());
@@ -607,7 +607,7 @@ asmlinkage void do_nmi(struct xen_regs * regs, unsigned long reason)
nmi_watchdog_tick(regs);
else
#endif
unknown_nmi_error((unsigned char)(reason&0xff), regs);
unknown_nmi_error((unsigned char)(reason&0xff));
}
unsigned long nmi_softirq_reason;
@@ -695,6 +695,13 @@ asmlinkage int do_spurious_interrupt_bug(struct xen_regs *regs)
return EXCRET_not_a_fault;
}
BUILD_SMP_INTERRUPT(deferred_nmi, TRAP_deferred_nmi)
asmlinkage void smp_deferred_nmi(struct xen_regs regs)
{
ack_APIC_irq();
do_nmi(&regs, 0);
}
#define _set_gate(gate_addr,type,dpl,addr) \
do { \
int __d0, __d1; \
@@ -803,7 +810,7 @@ void __init trap_init(void)
set_intr_gate(TRAP_alignment_check,&alignment_check);
set_intr_gate(TRAP_machine_check,&machine_check);
set_intr_gate(TRAP_simd_error,&simd_coprocessor_error);
set_intr_gate(TRAP_deferred_nmi,&nmi);
set_intr_gate(TRAP_deferred_nmi,&deferred_nmi);
/* Only ring 1 can access Xen services. */
_set_gate(idt_table+HYPERCALL_VECTOR,14,1,&hypercall);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.