[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] NMI: continue in case of PCI SERR erros
On Fri, 25 Feb 2011, Jan Beulich wrote: > > Because it might not have anything to do with dom0: I wrote this patch > > As you say: might. > Ok. --- Memory parity error is only valid for IBM PC-AT, newer machines use bit 7 (0x80) of 0x61 port for PCI SERR. While memory errors are usually reported via MCE. Rename the memory parity error handler to pci serr handler and print a warning and continue instead of crashing (it is common to receive PCI SERR errors for performing operations on a device in the wrong power state). Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> diff -r 598d1fc295b6 xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Thu Feb 24 09:33:19 2011 +0000 +++ b/xen/arch/x86/traps.c Fri Feb 25 14:04:08 2011 +0000 @@ -3075,23 +3075,13 @@ static void nmi_dom0_report(unsigned int send_guest_trap(d, 0, TRAP_nmi); } -static void mem_parity_error(struct cpu_user_regs *regs) +static void pci_serr_error(struct cpu_user_regs *regs) { - switch ( opt_nmi[0] ) - { - case 'd': /* 'dom0' */ - nmi_dom0_report(_XEN_NMIREASON_parity_error); - case 'i': /* 'ignore' */ - break; - default: /* 'fatal' */ - console_force_unlock(); - printk("\n\nNMI - MEMORY ERROR\n"); - fatal_trap(TRAP_nmi, regs); - } + nmi_dom0_report(_XEN_NMIREASON_pci_serr_error); + console_force_unlock(); + printk("\n\nNMI - PCI system error (SERR)\n"); - outb((inb(0x61) & 0x0f) | 0x04, 0x61); /* clear-and-disable parity check */ - mdelay(1); - outb((inb(0x61) & 0x0b) | 0x00, 0x61); /* enable parity check */ + outb((inb(0x61) & 0x0f) | 0x04, 0x61); /* clear-and-disable the PCI SERR error line. */ } static void io_check_error(struct cpu_user_regs *regs) @@ -3154,7 +3144,7 @@ asmlinkage void do_nmi(struct cpu_user_r { reason = inb(0x61); if ( reason & 0x80 ) - mem_parity_error(regs); + pci_serr_error(regs); else if ( reason & 0x40 ) io_check_error(regs); else if ( !nmi_watchdog ) diff -r 598d1fc295b6 xen/include/public/nmi.h --- a/xen/include/public/nmi.h Thu Feb 24 09:33:19 2011 +0000 +++ b/xen/include/public/nmi.h Fri Feb 25 14:04:08 2011 +0000 @@ -39,6 +39,9 @@ /* Parity error reported via ISA port 0x61, bit 7. */ #define _XEN_NMIREASON_parity_error 1 #define XEN_NMIREASON_parity_error (1UL << _XEN_NMIREASON_parity_error) + /* PCI SERR error reported via ISA port 0x61, bit 7. */ +#define _XEN_NMIREASON_pci_serr_error 1 +#define XEN_NMIREASON_pci_serr_error (1UL << _XEN_NMIREASON_pci_serr_error) /* Unknown hardware-generated NMI. */ #define _XEN_NMIREASON_unknown 2 #define XEN_NMIREASON_unknown (1UL << _XEN_NMIREASON_unknown) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |