Date: Sat, 20 Aug 2011 19:18:43 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: Andriy Gapon <avg@freebsd.org> Cc: freebsd-stable@freebsd.org Subject: Re: USB/coredump hangs in 8 and 9 Message-ID: <201108201918.43978.hselasky@c2i.net> In-Reply-To: <4E4FEA2E.7050209@FreeBSD.org> References: <DA1FD6FD-2E57-4EC4-899D-2C1CBB769456@averesystems.com> <201108201854.21180.hselasky@c2i.net> <4E4FEA2E.7050209@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 20 August 2011 19:09:02 Andriy Gapon wrote:
> on 20/08/2011 19:54 Hans Petter Selasky said the following:
> > On Saturday 20 August 2011 18:45:57 Andriy Gapon wrote:
> >> SCHEDULER_STOPPED
> >
> > The USB code needs to check for the SCHEDULER_STOPPED and cold at the
> > present moment. If this state can be set during bootup, and cleared at
> > the same time like "cold", it would be very good.
>
> Sorry again - not sure if I follow.
> SCHEDULER_STOPPED is supposed to be set on panic and never be reset. It's
> like a mirror of 'cold' in a sense.
OK. Then you should add a test "&& !SCHEDULER_STOPPED" where I pointed out:
static void
usbd_callback_wrapper(struct usb_xfer_queue *pq)
{
struct usb_xfer *xfer = pq->curr;
struct usb_xfer_root *info = xfer->xroot;
USB_BUS_LOCK_ASSERT(info->bus, MA_OWNED);
if (!mtx_owned(info->xfer_mtx) && !SCHEDULER_STOPPED) {
/*
* Cases that end up here:
*
And also ensure that no mutex asserts can trigger further panics.
--HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201108201918.43978.hselasky>
