Jan Beulich
2013-Jan-17 10:28 UTC
[PATCH] x86: handle both NMI kinds if they occur simultaneously
We shouldn''t assume PCI SERR excludes IOCHK. Once at it, also remove the doubly redundant range restriction on "reason" - the variable already is "unsigned char". Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -3201,10 +3201,10 @@ void do_nmi(struct cpu_user_regs *regs) reason = inb(0x61); if ( reason & 0x80 ) pci_serr_error(regs); - else if ( reason & 0x40 ) + if ( reason & 0x40 ) io_check_error(regs); - else if ( !nmi_watchdog ) - unknown_nmi_error(regs, (unsigned char)(reason&0xff)); + if ( !(reason & 0xc0) && !nmi_watchdog ) + unknown_nmi_error(regs, reason); } } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Andrew Cooper
2013-Jan-17 11:26 UTC
Re: [PATCH] x86: handle both NMI kinds if they occur simultaneously
On 17/01/13 10:28, Jan Beulich wrote:> We shouldn''t assume PCI SERR excludes IOCHK. > > Once at it, also remove the doubly redundant range restriction on > "reason" - the variable already is "unsigned char". > > Signed-off-by: Jan Beulich <jbeulich@suse.com>I am soon to embark on some work to do with NMI buttons, and was already planning to make alterations along these lines as part of that work, so for what it is worth, Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>> > --- a/xen/arch/x86/traps.c > +++ b/xen/arch/x86/traps.c > @@ -3201,10 +3201,10 @@ void do_nmi(struct cpu_user_regs *regs) > reason = inb(0x61); > if ( reason & 0x80 ) > pci_serr_error(regs); > - else if ( reason & 0x40 ) > + if ( reason & 0x40 ) > io_check_error(regs); > - else if ( !nmi_watchdog ) > - unknown_nmi_error(regs, (unsigned char)(reason&0xff)); > + if ( !(reason & 0xc0) && !nmi_watchdog ) > + unknown_nmi_error(regs, reason); > } > } > > > >
Keir Fraser
2013-Jan-17 11:48 UTC
Re: [PATCH] x86: handle both NMI kinds if they occur simultaneously
On 17/01/2013 10:28, "Jan Beulich" <JBeulich@suse.com> wrote:> We shouldn''t assume PCI SERR excludes IOCHK. > > Once at it, also remove the doubly redundant range restriction on > "reason" - the variable already is "unsigned char". > > Signed-off-by: Jan Beulich <jbeulich@suse.com>Acked-by: Keir Fraser <keir@xen.org>> --- a/xen/arch/x86/traps.c > +++ b/xen/arch/x86/traps.c > @@ -3201,10 +3201,10 @@ void do_nmi(struct cpu_user_regs *regs) > reason = inb(0x61); > if ( reason & 0x80 ) > pci_serr_error(regs); > - else if ( reason & 0x40 ) > + if ( reason & 0x40 ) > io_check_error(regs); > - else if ( !nmi_watchdog ) > - unknown_nmi_error(regs, (unsigned char)(reason&0xff)); > + if ( !(reason & 0xc0) && !nmi_watchdog ) > + unknown_nmi_error(regs, reason); > } > } > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel