From owner-freebsd-current@FreeBSD.ORG Thu Jul 13 04:32:44 2006 Return-Path: X-Original-To: current@FreeBSD.ORG Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3BF2616A4DA for ; Thu, 13 Jul 2006 04:32:44 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (vc4-2-0-87.dsl.netrack.net [199.45.160.85]) by mx1.FreeBSD.org (Postfix) with ESMTP id CD70343D60 for ; Thu, 13 Jul 2006 04:32:27 +0000 (GMT) (envelope-from imp@bsdimp.com) Received: from localhost (localhost.village.org [127.0.0.1] (may be forged)) by harmony.bsdimp.com (8.13.4/8.13.4) with ESMTP id k6D4TJR5084730; Wed, 12 Jul 2006 22:29:19 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Wed, 12 Jul 2006 22:29:28 -0600 (MDT) Message-Id: <20060712.222928.-432837032.imp@bsdimp.com> To: nate@root.org From: "M. Warner Losh" In-Reply-To: <44B59A22.7000407@root.org> References: <44B59A22.7000407@root.org> X-Mailer: Mew version 4.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0 (harmony.bsdimp.com [127.0.0.1]); Wed, 12 Jul 2006 22:29:19 -0600 (MDT) Cc: current@FreeBSD.ORG Subject: Re: cbb hangs during suspend if ath card active 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: Thu, 13 Jul 2006 04:32:44 -0000 In message: <44B59A22.7000407@root.org> Nate Lawson writes: : I've seen a recent regression in the past few months when suspending my : laptop. When I have an ath0 card inserted in a cardbus slot and then : press the sleep button, the system hangs. If I eject the card, it : continues going into suspend and everything works as normal. : : If the card is up (ifconfig up), this process hangs. If it's down, no : hang and it suspends normally. I did some debugging by starting the : suspend, waiting for the hang, hitting "break to ddb", and then ejecting : the card. The eject causes an interrupt which causes ddb to be entered. : With ps, I can see that the thread on the acpi_taskq is running the : button event and then calling bus_generic_suspend(), which eventually : calls cbb_detach(), which then calls a power routine in pccbb.c. This : routine calls tsleep() (wchan "cbbP3") which never wakes up. : : Any idea why tsleep() is not waking up now? It seems tsleep() calls : mi_switch() and never returns. Maybe the timers have been stopped and not properly restored by this time? Maybe we're calling the resume routines from a bad place that we can't sleep... APM had this problem... I'd love to test things like this, but I've not had a laptop in the past 5 years that can successfully suspend/resume under freebsd, even with minimal drivers :-( Warner