Skip site navigation (1)Skip section navigation (2)
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>