|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] NMI: continue in case of PCI SERR erros
On 25/02/2011 14:08, "Stefano Stabellini" <stefano.stabellini@xxxxxxxxxxxxx>
wrote:
> 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.
I already applied the original patch.
-- Keir
> ---
>
> 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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|