From owner-freebsd-bugs@FreeBSD.ORG Wed Mar 17 10:50:31 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 13B7116A4D4 for ; Wed, 17 Mar 2004 10:50:31 -0800 (PST) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0BB9343D2D for ; Wed, 17 Mar 2004 10:50:31 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i2HIoUbv032564 for ; Wed, 17 Mar 2004 10:50:30 -0800 (PST) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.10/8.12.10/Submit) id i2HIoUT4032562; Wed, 17 Mar 2004 10:50:30 -0800 (PST) (envelope-from gnats) Date: Wed, 17 Mar 2004 10:50:30 -0800 (PST) Message-Id: <200403171850.i2HIoUT4032562@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Serge Semenenko Subject: Re: misc/59876: APM suspend/resume broken with FreeBSD 5.2-BETA on IBM Thinkpad A30p X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Serge Semenenko List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Mar 2004 18:50:31 -0000 The following reply was made to PR misc/59876; it has been noted by GNATS. From: Serge Semenenko To: freebsd-gnats-submit@FreeBSD.org, jesse@wingnet.net Cc: Subject: Re: misc/59876: APM suspend/resume broken with FreeBSD 5.2-BETA on IBM Thinkpad A30p Date: Wed, 17 Mar 2004 20:44:21 +0200 On my Thinkpad T20 I use followed patch to 5.2-RELEASE : --- ata-all.c.saved Wed Mar 17 00:39:08 2004 +++ ata-all.c Wed Mar 17 17:22:07 2004 @@ -238,11 +238,20 @@ /* reset the HW */ ata_printf(ch, -1, "resetting devices ..\n"); - ATA_FORCELOCK_CH(ch, ATA_CONTROL); - ch->running = NULL; devices = ch->devices; + /* initialize the softc basics */ + ata_generic_hw(ch); + ch->device[MASTER].channel = ch; + ch->device[MASTER].unit = ATA_MASTER; + ch->device[MASTER].mode = ATA_PIO; + ch->device[SLAVE].channel = ch; + ch->device[SLAVE].unit = ATA_SLAVE; + ch->device[SLAVE].mode = ATA_PIO; + ch->state = ATA_IDLE; + /* initialise device(s) on this channel */ + ch->locking(ch, ATA_LF_LOCK); ch->hw.reset(ch); - ATA_UNLOCK_CH(ch); + ch->locking(ch, ATA_LF_UNLOCK); /* detach what left the channel during reset */ if ((misdev = devices & ~ch->devices)) { Serge