| 
    
 [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 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
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |