Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Mar 2010 09:18:19 +0100
From:      Giovanni Trematerra <giovanni.trematerra@gmail.com>
To:        FreeBSD Current <freebsd-current@freebsd.org>
Cc:        Garrett Cooper <yanefbsd@gmail.com>, Tom Couch <tom.couch.storage@gmail.com>
Subject:   Re: Removing USB keyboard after filesystems synced causes panic with destroyed mutex twa(4)?
Message-ID:  <4e6cba831003250118q32b877c4rdef9f001d3715a84@mail.gmail.com>
In-Reply-To: <4e6cba831003131556t2cb787e0xc9e2d649320d6e59@mail.gmail.com>
References:  <7d6fde3d1003070207q621e69ado2cb64e431feacd76@mail.gmail.com> <7d6fde3d1003070224k3626a9b5y98c11a43eef1bed4@mail.gmail.com> <4e6cba831003101356i534341ffr2961b983854ab788@mail.gmail.com> <7dc40bd01003101407m605e41ey2d8ace0049cf5e61@mail.gmail.com> <7d6fde3d1003102158o7834ca67lce3eca23aa723fd1@mail.gmail.com> <7d6fde3d1003121933s4ba7b57fw6542628c16edf723@mail.gmail.com> <4e6cba831003131556t2cb787e0xc9e2d649320d6e59@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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@gmail.com> wrote:
> On Sat, Mar 13, 2010 at 4:33 AM, Garrett Cooper <yanefbsd@gmail.com> wrot=
e:
>> On Wed, Mar 10, 2010 at 9:58 PM, Garrett Cooper <yanefbsd@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 =A0 =A0 =A0 Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl.h =A0 =A0 =A0 Sat Mar 13 18:50:16 2010 -0500
> @@ -66,6 +66,8 @@
> =A0#define TW_CLI_CTLR_STATE_RESET_PHASE1_IN_PROGRESS =A0 =A0 (1<<5)
> =A0/* G66 register write access bug needs to be worked around. */
> =A0#define TW_CLI_CTLR_STATE_G66_WORKAROUND_NEEDED =A0 =A0 =A0 =A0(1<<6)
> +/* Controller is shutting down. */
> +#define TW_CLI_CTLR_STATE_SHUTDOWN_IN_PROGRESS (1<<7)
>
> =A0/* Possible values of ctlr->ioctl_lock.lock. */
> =A0#define TW_CLI_LOCK_FREE =A0 =A0 =A0 =A0 =A0 =A0 =A0 0x0 =A0 =A0 /* lo=
ck is free */
> diff -r 69c84861a227 sys/dev/twa/tw_cl_init.c
> --- a/sys/dev/twa/tw_cl_init.c =A0Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl_init.c =A0Sat Mar 13 18:50:16 2010 -0500
> @@ -598,6 +598,7 @@ tw_cl_shutdown_ctlr(struct tw_cl_ctlr_ha
> =A0 =A0 =A0 =A0 * and notify the controller that we are going down.
> =A0 =A0 =A0 =A0 */
> =A0 =A0 =A0 =A0ctlr->state &=3D ~TW_CLI_CTLR_STATE_ACTIVE;
> + =A0 =A0 =A0 ctlr->state |=3D TW_CLI_CTLR_STATE_SHUTDOWN_IN_PROGRESS;
>
> =A0 =A0 =A0 =A0tw_cli_disable_interrupts(ctlr);
>
> diff -r 69c84861a227 sys/dev/twa/tw_cl_intr.c
> --- a/sys/dev/twa/tw_cl_intr.c =A0Thu Mar 11 16:18:11 2010 -0500
> +++ b/sys/dev/twa/tw_cl_intr.c =A0Sat Mar 13 18:50:16 2010 -0500
> @@ -75,9 +75,12 @@ tw_cl_interrupt(struct tw_cl_ctlr_handle
> =A0 =A0 =A0 =A0if (ctlr =3D=3D NULL)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0goto out;
>
> - =A0 =A0 =A0 /* If we get an interrupt while resetting, it is a shared
> - =A0 =A0 =A0 =A0 =A0one for another device, so just bail */
> - =A0 =A0 =A0 if (ctlr->state & TW_CLI_CTLR_STATE_RESET_IN_PROGRESS)
> + =A0 =A0 =A0 /*
> + =A0 =A0 =A0 =A0* If we get an interrupt while resetting or shutting dow=
n,
> + =A0 =A0 =A0 =A0* it is a shared one for another device, so just bail
> + =A0 =A0 =A0 =A0*/
> + =A0 =A0 =A0 if (ctlr->state & TW_CLI_CTLR_STATE_RESET_IN_PROGRESS ||
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 ctlr->state & TW_CLI_CTLR_STATE_SHUTDOWN_IN=
_PROGRESS)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0goto out;
>
> =A0 =A0 =A0 =A0/*
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4e6cba831003250118q32b877c4rdef9f001d3715a84>