On Mon, 20 Apr 2015, Joe Lawrence wrote: > On Mon, Apr 20, 2015 at 01:35:40PM -0400, Alan Stern wrote: > > On Mon, 20 Apr 2015, Joe Lawrence wrote: > > > > > So -ESHUTDOWN = -108 (0xffffff94) provoked bad_action_ret into reporting > > > a bogus return value and stack trace above. > > > > As far as I know, -Eanything is never a valid return code for an IRQ > > handler. Shouldn't this always return either IRQ_NONE or IRQ_HANDLED? > > Hi Alan -- I would think so, though the stack trace in the STS_FATAL > case might interesting to somebody? (Not sure what info in such trace > is useful since it's an irq handler.) Even then, it should probably be > replaced with a WARN_ONCE or similar instead of inadvertently through > the bogus irq return value. > > How about the following one-liner? > > -- Joe > > -->8-- -->8-- -->8-- > > From f8030d1cabbab1e7e5b0a0ba67fa4cd0a944d416 Mon Sep 17 00:00:00 2001 > From: Joe Lawrence <joe.lawrence@xxxxxxxxxxx> > Date: Mon, 20 Apr 2015 15:40:47 -0400 > Subject: [PATCH] xhci: gracefully handle xhci_irq dead device > > If the xHCI host controller has died (ie, device removed) or suffered > other serious fatal error (STS_FATAL), then xhci_irq should handle this > condition with IRQ_HANDLED instead of -ESHUTDOWN. > > Signed-off-by: Joe Lawrence <joe.lawrence@xxxxxxxxxxx> > --- > drivers/usb/host/xhci-ring.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index f5397a517c54..0402b80d2c85 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -2640,7 +2640,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) > xhci_halt(xhci); > hw_died: > spin_unlock(&xhci->lock); > - return -ESHUTDOWN; > + return IRQ_HANDLED; > } > > /* That seems good to me, and I assume it prevents your warning. Mathias knows a lot more about xhci-hcd than I do, though. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html