From owner-freebsd-current@FreeBSD.ORG Sat Mar 13 23:57:00 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4826A106566B for ; Sat, 13 Mar 2010 23:57:00 +0000 (UTC) (envelope-from giovanni.trematerra@gmail.com) Received: from mail-fx0-f209.google.com (mail-fx0-f209.google.com [209.85.220.209]) by mx1.freebsd.org (Postfix) with ESMTP id BFABF8FC15 for ; Sat, 13 Mar 2010 23:56:59 +0000 (UTC) Received: by fxm1 with SMTP id 1so1686266fxm.13 for ; Sat, 13 Mar 2010 15:56:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=VhUxpx5vwQ5l6Av4UWbSmB6MawLMqogXgxPKixlT1xk=; b=aipYjv7Wgf48v6n3DzOxh2hkQRFa+z3lziEbB9HQtaEeHZkOBQh8lB2FnnZBTwIoV8 umzheYsK6j7AIS2y5G+EJ0xSCoMcZI0gZ6BVgJKCtPY4LoHOeYZOkt5N8DMtm2Gw4GjG M7hSTYbFFdFfPTww0mXm/HfoZmoQbriAHuKAM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=d77dFyyUyFJurq1/VDX2oaeIEq5ufHCIghWveHZd5Nih9G0hscDWomEqVFXLE1axLx LG+218SgfxencWPj4uK7ZwUCq7Opoi8B7tZKm9uNDOg/k12mRRxMIgHsok2YoZvejaFt xmefhgJlQ+5silcmIpq8fGaI2QZzluB8NkLoQ= MIME-Version: 1.0 Received: by 10.223.7.90 with SMTP id c26mr3171622fac.19.1268524618446; Sat, 13 Mar 2010 15:56:58 -0800 (PST) In-Reply-To: <7d6fde3d1003121933s4ba7b57fw6542628c16edf723@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> Date: Sun, 14 Mar 2010 00:56:58 +0100 Message-ID: <4e6cba831003131556t2cb787e0xc9e2d649320d6e59@mail.gmail.com> From: Giovanni Trematerra To: Garrett Cooper Content-Type: text/plain; charset=ISO-8859-1 Cc: Tom Couch , FreeBSD Current Subject: Re: Removing USB keyboard after filesystems synced causes panic with destroyed mutex twa(4)? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Mar 2010 23:57:00 -0000 On Sat, Mar 13, 2010 at 4:33 AM, Garrett Cooper wrote: > On Wed, Mar 10, 2010 at 9:58 PM, Garrett Cooper >> > > Apart from the typo above (s/ctrl/ctlr/), things work appropriately Oopss I'm sorry. > now at reboot. The only problem is that bootup is really wonky now, > because the RAID had a LOT of issues attaching to cam(4) (failed in > 2/3 cold boot attempts); an additional branch condition may need to be > added to the above if-statement if this change didn't take that into > account. However, if the old behavior was incorrect and the new > behavior is correct, s.t. the RAID controller demonstrating bus > detection timeout issue that is occurring with a lot of USB devices > and some RAID controllers today, this could be extremely problematic. > 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 @@ -66,6 +66,8 @@ #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 @@ -598,6 +598,7 @@ 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 @@ -75,9 +75,12 @@ 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; /*