[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: restore (optional) forwarding of PCI SERR induced NMI to Dom0
On 21/01/13 16:11, Jan Beulich wrote: > c/s 22949:54fe1011f86b removed the forwarding of NMIs to Dom0 when they > were caused by PCI SERR. NMI buttons as well as BMCs (like HP's iLO) > may however want such events to be seen in Dom0 (e.g. to trigger a > dump). > > Therefore restore most of the functionality which named c/s removed > (adjusted for subsequent changes, and adjusting the public interface to > use the modern term, retaining the old one for backwards > compatibility). > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > --- a/xen/arch/x86/traps.c > +++ b/xen/arch/x86/traps.c > @@ -3089,6 +3089,7 @@ static void nmi_mce_softirq(void) > static void pci_serr_softirq(void) > { > printk("\n\nNMI - PCI system error (SERR)\n"); > + outb(inb(0x61) & 0x0b, 0x61); /* re-enable the PCI SERR error line. */ > } > > void async_exception_cleanup(struct vcpu *curr) > @@ -3135,9 +3136,20 @@ static void pci_serr_error(struct cpu_us > { > outb((inb(0x61) & 0x0f) | 0x04, 0x61); /* clear-and-disable the PCI SERR > error line. */ > > - /* Would like to print a diagnostic here but can't call printk() > - from NMI context -- raise a softirq instead. */ > - raise_softirq(PCI_SERR_SOFTIRQ); > + switch ( opt_nmi[0] ) > + { > + case 'd': /* 'dom0' */ > + nmi_dom0_report(_XEN_NMIREASON_pci_serr); > + case 'i': /* 'ignore' */ > + /* Would like to print a diagnostic here but can't call printk() > + from NMI context -- raise a softirq instead. */ > + raise_softirq(PCI_SERR_SOFTIRQ); > + break; > + default: /* 'fatal' */ > + console_force_unlock(); > + printk("\n\nNMI - PCI system error (SERR)\n"); > + fatal_trap(TRAP_nmi, regs); > + } > } > > static void io_check_error(struct cpu_user_regs *regs) > --- a/xen/include/public/nmi.h > +++ b/xen/include/public/nmi.h > @@ -36,9 +36,14 @@ > /* I/O-check error reported via ISA port 0x61, bit 6. */ > #define _XEN_NMIREASON_io_error 0 > #define XEN_NMIREASON_io_error (1UL << _XEN_NMIREASON_io_error) > + /* PCI SERR reported via ISA port 0x61, bit 7. */ > +#define _XEN_NMIREASON_pci_serr 1 > +#define XEN_NMIREASON_pci_serr (1UL << _XEN_NMIREASON_pci_serr) > +#if __XEN_INTERFACE_VERSION__ < 0x00040300 /* legacy alias of the above */ > /* Parity error reported via ISA port 0x61, bit 7. */ These seem wrong. Both SERR and Parity error have the same comment and definition. Furthermore, the definition disagrees with the comment. ~Andrew > #define _XEN_NMIREASON_parity_error 1 > #define XEN_NMIREASON_parity_error (1UL << _XEN_NMIREASON_parity_error) > +#endif > /* Unknown hardware-generated NMI. */ > #define _XEN_NMIREASON_unknown 2 > #define XEN_NMIREASON_unknown (1UL << _XEN_NMIREASON_unknown) > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |