Re: Removing USB keyboard after filesystems synced causes panic with destroyed mutex twa(4)?

From: Giovanni Trematerra <giovanni.trematerra_at_gmail.com>
Date: Thu, 25 Mar 2010 09:18:19 +0100
Sorry for top posting. I report just for the record the test that
Garrett kindly did.

On Wed, Mar 24, 2010 at 8:45 PM, Garrett Cooper <yanefbsd_at_gmail.com> wrote:
>   The patch looks good for commit. No performance regression at
> boot, no functional regression when the keyboard's detached, and if
> I'm not mistaken it appears that performance actually improves at
> reboot (seems like the window between the final fs sync and the reboot
> is more along the lines of what's expected for a system that doesn't
> have the RAID card).
> Thanks!
> -Garrett

On Sun, Mar 14, 2010 at 12:56 AM, Giovanni Trematerra
<giovanni.trematerra_at_gmail.com> wrote:
> On Sat, Mar 13, 2010 at 4:33 AM, Garrett Cooper <yanefbsd_at_gmail.com> wrote:
>> On Wed, Mar 10, 2010 at 9:58 PM, Garrett Cooper <yanefbsd_at_gmail.c
>>>>
>
> if you don't mind could you try this patch? Less dirty but always quick :)
>
> Thank you for your time.
>
> --
> Gianni
>
>
> diff -r 69c84861a227 sys/dev/twa/tw_cl.h
> --- a/sys/dev/twa/tw_cl.h       Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl.h       Sat Mar 13 18:50:16 2010 -0500
> _at__at_ -66,6 +66,8 _at__at_
>  #define TW_CLI_CTLR_STATE_RESET_PHASE1_IN_PROGRESS     (1<<5)
>  /* G66 register write access bug needs to be worked around. */
>  #define TW_CLI_CTLR_STATE_G66_WORKAROUND_NEEDED        (1<<6)
> +/* Controller is shutting down. */
> +#define TW_CLI_CTLR_STATE_SHUTDOWN_IN_PROGRESS (1<<7)
>
>  /* Possible values of ctlr->ioctl_lock.lock. */
>  #define TW_CLI_LOCK_FREE               0x0     /* lock is free */
> diff -r 69c84861a227 sys/dev/twa/tw_cl_init.c
> --- a/sys/dev/twa/tw_cl_init.c  Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl_init.c  Sat Mar 13 18:50:16 2010 -0500
> _at__at_ -598,6 +598,7 _at__at_ tw_cl_shutdown_ctlr(struct tw_cl_ctlr_ha
>         * and notify the controller that we are going down.
>         */
>        ctlr->state &= ~TW_CLI_CTLR_STATE_ACTIVE;
> +       ctlr->state |= TW_CLI_CTLR_STATE_SHUTDOWN_IN_PROGRESS;
>
>        tw_cli_disable_interrupts(ctlr);
>
> diff -r 69c84861a227 sys/dev/twa/tw_cl_intr.c
> --- a/sys/dev/twa/tw_cl_intr.c  Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl_intr.c  Sat Mar 13 18:50:16 2010 -0500
> _at__at_ -75,9 +75,12 _at__at_ tw_cl_interrupt(struct tw_cl_ctlr_handle
>        if (ctlr == NULL)
>                goto out;
>
> -       /* If we get an interrupt while resetting, it is a shared
> -          one for another device, so just bail */
> -       if (ctlr->state & TW_CLI_CTLR_STATE_RESET_IN_PROGRESS)
> +       /*
> +        * If we get an interrupt while resetting or shutting down,
> +        * it is a shared one for another device, so just bail
> +        */
> +       if (ctlr->state & TW_CLI_CTLR_STATE_RESET_IN_PROGRESS ||
> +               ctlr->state & TW_CLI_CTLR_STATE_SHUTDOWN_IN_PROGRESS)
>                goto out;
>
>        /*
>
Received on Thu Mar 25 2010 - 07:18:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:02 UTC