From owner-freebsd-acpi@FreeBSD.ORG Mon Apr 18 11:06:54 2011 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 467361065670 for ; Mon, 18 Apr 2011 11:06:54 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3398D8FC15 for ; Mon, 18 Apr 2011 11:06:54 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p3IB6sns019414 for ; Mon, 18 Apr 2011 11:06:54 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p3IB6riJ019412 for freebsd-acpi@FreeBSD.org; Mon, 18 Apr 2011 11:06:53 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 18 Apr 2011 11:06:53 GMT Message-Id: <201104181106.p3IB6riJ019412@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-acpi@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-acpi@FreeBSD.org X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Apr 2011 11:06:54 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o kern/154955 acpi [acpi] Keyboard or ACPI doesn't work on Lenovo S10-3 o kern/152438 acpi [acpi]: patch to acpi_asus(4) to add extra sysctls for o kern/152098 acpi [acpi] Lenovo T61p does not resume o i386/146715 acpi [acpi] Suspend works, resume not on a HP Probook 4510s o kern/145306 acpi [acpi]: Can't change brightness on HP ProBook 4510s o i386/144045 acpi [acpi] [panic] kernel trap with acpi enabled o i386/143798 acpi [acpi] shutdown problem with SiS K7S5A o kern/143420 acpi [acpi] ACPI issues with Toshiba o kern/142263 acpi [acpi] ACPI regression on Asus K8N7-E deluxe motherboa o kern/142009 acpi [acpi] [panic] Panic in AcpiNsGetAttachedObject o amd64/140751 acpi [acpi] BIOS resource allocation and FreeBSD ACPI in TO o kern/139088 acpi [acpi] ACPI Exception: AE_AML_INFINITE_LOOP error o amd64/138210 acpi [acpi] acer aspire 5536 ACPI problems (S3, brightness, o bin/137053 acpi [hang] FreeBSD 8.0 BETA2Compaq Mini 700 locks on boot o kern/137042 acpi [acpi] hp laptop's lcd not wakes up after suspend to r o i386/136008 acpi [acpi] Dell Vostro 1310 will not shutdown (Requires us o bin/135349 acpi [patch] teach acpidump(8) to disassemble arbitrary mem o kern/135070 acpi [acpi] [patch] BIOS resource allocation and FreeBSD AC o kern/132602 acpi [acpi] ACPI Problem with Intel SS4200: System does not o kern/130683 acpi [ACPI] shutdown hangs after syncing disks - ACPI race? o i386/129953 acpi [acpi] ACPI timeout (CDROM) with Shuttle X27D p kern/128634 acpi [patch] fix acpi_asus(4) in asus a6f laptop o kern/124412 acpi [acpi] power off error on Toshiba M40 laptop o kern/123039 acpi [acpi] ACPI AML_BUFFER_LIMIT errors during boot o kern/121504 acpi [patch] Correctly set hw.acpi.osname on certain machin f kern/119356 acpi [acpi]: i386 ACPI wakeup not work due resource exhaust o kern/119200 acpi [acpi] Lid close switch suspends CPU for 1 second on H o kern/116939 acpi [acpi] PCI-to-PCI misconfigured for bus three and can o i386/114562 acpi [acpi] cardbus is dead after s3 on Thinkpad T43 with a o kern/114165 acpi [acpi] Dell C810 - ACPI problem s kern/112544 acpi [acpi] [patch] Add High Precision Event Timer Driver f o kern/108695 acpi [acpi]: Fatal trap 9: general protection fault when in o kern/108488 acpi [acpi] ACPI-1304: *** Error: Method execution failed o kern/106924 acpi [acpi] ACPI resume returns g_vfs_done() errors and ker o kern/105537 acpi [acpi] problems in acpi on HP Compaq nc6320 o kern/102252 acpi acpi thermal does not work on Abit AW8D (intel 975) o i386/83018 acpi [install] Installer will not boot on Asus P4S8X BIOS 1 o kern/73823 acpi [request] acpi / power-on by timer support o i386/69750 acpi Boot without ACPI failed on ASUS L5 o kern/56024 acpi ACPI suspend drains battery while in S3 o i386/55661 acpi ACPI suspend/resume problem on ARMADA M700 41 problems total. From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 15:31:38 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 262DE1065670 for ; Tue, 19 Apr 2011 15:31:38 +0000 (UTC) (envelope-from taku@tackymt.homeip.net) Received: from basalt.tackymt.homeip.net (unknown [IPv6:2001:3e0:577:0:20d:61ff:fecc:2253]) by mx1.freebsd.org (Postfix) with ESMTP id B5FC58FC20 for ; Tue, 19 Apr 2011 15:31:37 +0000 (UTC) Received: from basalt.tackymt.homeip.net (localhost [127.0.0.1]) by basalt.tackymt.homeip.net (Postfix) with ESMTP id EA6C01335D for ; Wed, 20 Apr 2011 00:31:36 +0900 (JST) X-Virus-Scanned: amavisd-new at tackymt.homeip.net Received: from localhost ([127.0.0.1]) by basalt.tackymt.homeip.net (basalt.tackymt.homeip.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wEolIAuSUqPR for ; Wed, 20 Apr 2011 00:31:34 +0900 (JST) Received: from basalt.tackymt.homeip.net (basalt.tackymt.homeip.net [IPv6:2001:3e0:577:0:20d:61ff:fecc:2253]) by basalt.tackymt.homeip.net (Postfix) with ESMTP for ; Wed, 20 Apr 2011 00:31:34 +0900 (JST) Date: Wed, 20 Apr 2011 00:31:33 +0900 From: Taku YAMAMOTO To: freebsd-acpi@freebsd.org Message-Id: <20110420003133.4dc391f6.taku@tackymt.homeip.net> X-Mailer: Sylpheed 3.0.3 (GTK+ 2.22.1; i386-portbld-freebsd9.0) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__20_Apr_2011_00_31_33_+0900_Cmw8Xf4egaiAIykN" X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 15:31:38 -0000 This is a multi-part message in MIME format. --Multipart=_Wed__20_Apr_2011_00_31_33_+0900_Cmw8Xf4egaiAIykN Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi all, Now, thanks to jkim's work, we have power_suspend and power_resume EVENTHANDLERs since r220647. I think it's a good time to move scsuspend()/scresume() to that scheme, too. That is: * We can achieve definitive ordering between vga, drm and so on: no need to depend on scpm hackery with that scheme. * Especially combined with adasuspend() (since r220650) and in case of X server being paged out, we can easily mess up the video card in a intermediate state without earlier scsuspend(). A patch is attached. -- -|-__ YAMAMOTO, Taku | __ < - A chicken is an egg's way of producing more eggs. - --Multipart=_Wed__20_Apr_2011_00_31_33_+0900_Cmw8Xf4egaiAIykN-- From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 15:46:18 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 428EF1065670 for ; Tue, 19 Apr 2011 15:46:18 +0000 (UTC) (envelope-from taku@tackymt.homeip.net) Received: from basalt.tackymt.homeip.net (unknown [IPv6:2001:3e0:577:0:20d:61ff:fecc:2253]) by mx1.freebsd.org (Postfix) with ESMTP id D22F88FC14 for ; Tue, 19 Apr 2011 15:46:17 +0000 (UTC) Received: from basalt.tackymt.homeip.net (localhost [127.0.0.1]) by basalt.tackymt.homeip.net (Postfix) with ESMTP id 4AC231335D for ; Wed, 20 Apr 2011 00:46:17 +0900 (JST) X-Virus-Scanned: amavisd-new at tackymt.homeip.net Received: from localhost ([127.0.0.1]) by basalt.tackymt.homeip.net (basalt.tackymt.homeip.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DfCWSHMkjdvM for ; Wed, 20 Apr 2011 00:46:15 +0900 (JST) Received: from basalt.tackymt.homeip.net (basalt.tackymt.homeip.net [IPv6:2001:3e0:577:0:20d:61ff:fecc:2253]) by basalt.tackymt.homeip.net (Postfix) with ESMTP for ; Wed, 20 Apr 2011 00:46:15 +0900 (JST) Date: Wed, 20 Apr 2011 00:46:14 +0900 From: Taku YAMAMOTO To: freebsd-acpi@freebsd.org Message-Id: <20110420004614.3099947d.taku@tackymt.homeip.net> In-Reply-To: <20110420003133.4dc391f6.taku@tackymt.homeip.net> References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> X-Mailer: Sylpheed 3.0.3 (GTK+ 2.22.1; i386-portbld-freebsd9.0) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__20_Apr_2011_00_46_14_+0900_44zsBS/UfLv9lXOZ" Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 15:46:18 -0000 This is a multi-part message in MIME format. --Multipart=_Wed__20_Apr_2011_00_46_14_+0900_44zsBS/UfLv9lXOZ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 20 Apr 2011 00:31:33 +0900 Taku YAMAMOTO wrote: > A patch is attached. Mailman ate it ;) Here it is. -- -|-__ YAMAMOTO, Taku | __ < - A chicken is an egg's way of producing more eggs. - --Multipart=_Wed__20_Apr_2011_00_46_14_+0900_44zsBS/UfLv9lXOZ Content-Type: text/plain; name="syscons-evhsusp.patch" Content-Disposition: attachment; filename="syscons-evhsusp.patch" Content-Transfer-Encoding: 7bit --- sys/dev/syscons/syscons.c.orig 2010-12-08 11:34:37.173729146 +0900 +++ sys/dev/syscons/syscons.c 2011-04-17 16:48:49.762423824 +0900 @@ -128,6 +128,13 @@ static void none_saver(sc_softc_t *sc, static void (*current_saver)(sc_softc_t *, int) = none_saver; #endif +#ifdef SC_NO_SUSPEND_VTYSWITCH +static int sc_no_suspend_vtswitch = 1; +#else +static int sc_no_suspend_vtswitch = 0; +#endif +static int sc_cur_scr; + SYSCTL_NODE(_hw, OID_AUTO, syscons, CTLFLAG_RD, 0, "syscons"); SYSCTL_NODE(_hw_syscons, OID_AUTO, saver, CTLFLAG_RD, 0, "saver"); SYSCTL_INT(_hw_syscons_saver, OID_AUTO, keybonly, CTLFLAG_RW, @@ -142,6 +149,9 @@ SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_re SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_debug, CTLFLAG_RW|CTLFLAG_SECURE, &enable_kdbkey, 0, "enable keyboard debug"); #endif +TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); +SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, + &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); #if !defined(SC_NO_FONT_LOADING) && defined(SC_DFLT_FONT) #include "font.h" #endif @@ -170,6 +180,8 @@ static kbd_callback_func_t sckbdevent; static void scinit(int unit, int flags); static scr_stat *sc_get_stat(struct tty *tp); static void scterm(int unit, int flags); +static void scsuspend(void *arg); +static void scresume(void *arg); static void scshutdown(void *arg, int howto); static u_int scgetc(sc_softc_t *sc, u_int flags); #define SCGETC_CN 1 @@ -518,10 +530,15 @@ sc_attach_unit(int unit, int flags) printf("\n"); } - /* register a shutdown callback for the kernel console */ - if (sc_console_unit == unit) + /* register suspend, resume and shutdown callbacks for the kernel console */ + if (sc_console_unit == unit) { + EVENTHANDLER_REGISTER(power_suspend, scsuspend, + sc, EVENTHANDLER_PRI_ANY); + EVENTHANDLER_REGISTER(power_resume, scresume, + sc, EVENTHANDLER_PRI_ANY); EVENTHANDLER_REGISTER(shutdown_pre_sync, scshutdown, (void *)(uintptr_t)unit, SHUTDOWN_PRI_DEFAULT); + } for (vc = 0; vc < sc->vtys; vc++) { if (sc->dev[vc] == NULL) { @@ -3007,6 +3024,57 @@ scterm(int unit, int flags) } static void +scsuspend(void *arg) +{ + int retry = 10; + sc_softc_t *sc; + + sc = arg; + mtx_lock(&Giant); + + if (sc->cur_scp == NULL) + goto out; + + if (sc->suspend_in_progress == 0) { + sc_cur_scr = sc->cur_scp->index; + if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) + do { + sc_switch_scr(sc, 0); + if (!sc->switch_in_progress) + break; + pause("scsuspend", hz); + } while (retry--); + } + sc->suspend_in_progress++; + +out: + mtx_unlock(&Giant); +} + +static void +scresume(void *arg) +{ + sc_softc_t *sc; + + sc = arg; + mtx_lock(&Giant); + + if (sc->cur_scp == NULL) + goto out; + + sc->suspend_in_progress--; + if (sc->suspend_in_progress == 0) { + if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) + sc_switch_scr(sc, sc_cur_scr); + else + mark_all(sc->cur_scp); + } + +out: + mtx_unlock(&Giant); +} + +static void scshutdown(void *arg, int howto) { /* assert(sc_console != NULL) */ --- sys/isa/syscons_isa.c.orig 2010-07-16 08:11:51.000000000 +0900 +++ sys/isa/syscons_isa.c 2011-04-17 16:33:33.710420799 +0900 @@ -69,17 +69,6 @@ __FBSDID("$FreeBSD: src/sys/isa/syscons_ static devclass_t sc_devclass; static sc_softc_t main_softc; -#ifdef SC_NO_SUSPEND_VTYSWITCH -static int sc_no_suspend_vtswitch = 1; -#else -static int sc_no_suspend_vtswitch = 0; -#endif -static int sc_cur_scr; - -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); -SYSCTL_DECL(_hw_syscons); -SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); static void scidentify(driver_t *driver, device_t parent) @@ -108,53 +97,6 @@ scattach(device_t dev) SC_AUTODETECT_KBD)); } -static int -scsuspend(device_t dev) -{ - int retry = 10; - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - if (sc->suspend_in_progress == 0) { - sc_cur_scr = sc->cur_scp->index; - if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) - break; - pause("scsuspend", hz); - } while (retry--); - } - sc->suspend_in_progress++; - - return (0); -} - -static int -scresume(device_t dev) -{ - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - sc->suspend_in_progress--; - if (sc->suspend_in_progress == 0) { - if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) - sc_switch_scr(sc, sc_cur_scr); - else - mark_all(sc->cur_scp); - } - - return (0); -} - int sc_max_unit(void) { @@ -300,8 +242,6 @@ static device_method_t sc_methods[] = { DEVMETHOD(device_identify, scidentify), DEVMETHOD(device_probe, scprobe), DEVMETHOD(device_attach, scattach), - DEVMETHOD(device_suspend, scsuspend), - DEVMETHOD(device_resume, scresume), { 0, 0 } }; @@ -312,70 +252,3 @@ static driver_t sc_driver = { }; DRIVER_MODULE(sc, isa, sc_driver, sc_devclass, 0, 0); - -static devclass_t scpm_devclass; - -static void -scpm_identify(driver_t *driver, device_t parent) -{ - - device_add_child(parent, "scpm", 0); -} - -static int -scpm_probe(device_t dev) -{ - - device_set_desc(dev, SC_DRIVER_NAME " suspend/resume"); - device_quiet(dev); - - return (BUS_PROBE_DEFAULT); -} - -static int -scpm_attach(device_t dev) -{ - - bus_generic_probe(dev); - bus_generic_attach(dev); - - return (0); -} - -static int -scpm_suspend(device_t dev) -{ - int error; - - error = bus_generic_suspend(dev); - if (error != 0) - return (error); - - return (scsuspend(dev)); -} - -static int -scpm_resume(device_t dev) -{ - - scresume(dev); - - return (bus_generic_resume(dev)); -} - -static device_method_t scpm_methods[] = { - DEVMETHOD(device_identify, scpm_identify), - DEVMETHOD(device_probe, scpm_probe), - DEVMETHOD(device_attach, scpm_attach), - DEVMETHOD(device_suspend, scpm_suspend), - DEVMETHOD(device_resume, scpm_resume), - { 0, 0 } -}; - -static driver_t scpm_driver = { - "scpm", - scpm_methods, - 0 -}; - -DRIVER_MODULE(scpm, vgapm, scpm_driver, scpm_devclass, 0, 0); --- sys/pc98/cbus/syscons_cbus.c.orig 2010-06-24 04:44:07.917176703 +0900 +++ sys/pc98/cbus/syscons_cbus.c 2011-04-17 16:31:04.147420821 +0900 @@ -49,17 +49,6 @@ __FBSDID("$FreeBSD: src/sys/pc98/cbus/sy static devclass_t sc_devclass; static sc_softc_t main_softc; -#ifdef SC_NO_SUSPEND_VTYSWITCH -static int sc_no_suspend_vtswitch = 1; -#else -static int sc_no_suspend_vtswitch = 0; -#endif -static int sc_cur_scr; - -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); -SYSCTL_DECL(_hw_syscons); -SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); static void scidentify(driver_t *driver, device_t parent) @@ -87,47 +76,6 @@ scattach(device_t dev) return sc_attach_unit(device_get_unit(dev), device_get_flags(dev)); } -static int -scsuspend(device_t dev) -{ - int retry = 10; - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - sc_cur_scr = sc->cur_scp->index; - - if (sc_no_suspend_vtswitch) - return (0); - - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) { - break; - } - pause("scsuspend", hz); - } while (retry--); - - return (0); -} - -static int -scresume(device_t dev) -{ - sc_softc_t *sc; - - if (sc_no_suspend_vtswitch) - return (0); - - sc = &main_softc; - sc_switch_scr(sc, sc_cur_scr); - - return (0); -} - int sc_max_unit(void) { @@ -242,8 +190,6 @@ static device_method_t sc_methods[] = { DEVMETHOD(device_identify, scidentify), DEVMETHOD(device_probe, scprobe), DEVMETHOD(device_attach, scattach), - DEVMETHOD(device_suspend, scsuspend), - DEVMETHOD(device_resume, scresume), { 0, 0 } }; --Multipart=_Wed__20_Apr_2011_00_46_14_+0900_44zsBS/UfLv9lXOZ-- From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 16:06:31 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA8411065676 for ; Tue, 19 Apr 2011 16:06:31 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 40E898FC1E for ; Tue, 19 Apr 2011 16:06:30 +0000 (UTC) Received: by wwc33 with SMTP id 33so7014374wwc.31 for ; Tue, 19 Apr 2011 09:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=6kvltcRxDf/MlXPfHIbCuFipTZ3vw5YFXBYdOrWY920=; b=VOfL5cZuvkI35vAz3vC2m89Q4fK0XtU1QaprRdgXNYEAT95PVe9Imt1cPwKZNcc1Ld /Xszqxne/mklqM87lO4LC4IypK4ehzgCQBpHRl9v/z1I9sXLfqA1ngFmjzB39Nl6g6ii BCX+3s8yQUoWFKBuksEsB2cc3/NfXAaB6WhRA= 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:content-transfer-encoding; b=p4RF3YtzBZ6hN3CjpPUdgESFp51MS0Dg43ULvqa67M9juYqbS51dTj42ryVft5+LaZ YcYPNuClp2lK5vXBBowlASug1hidNR6ufj+o5v6qk+BIFwPTPZ66d5zuaiJjvCQ+97tA nNNqnbx5Tv/WUOxLll24HzDMvRaGAsyKDdKvs= MIME-Version: 1.0 Received: by 10.216.67.135 with SMTP id j7mr1199692wed.54.1303227752124; Tue, 19 Apr 2011 08:42:32 -0700 (PDT) Received: by 10.216.19.13 with HTTP; Tue, 19 Apr 2011 08:42:32 -0700 (PDT) In-Reply-To: <20110420003133.4dc391f6.taku@tackymt.homeip.net> References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> Date: Tue, 19 Apr 2011 10:42:32 -0500 Message-ID: From: Brandon Gooch To: Taku YAMAMOTO Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 16:06:31 -0000 On Tue, Apr 19, 2011 at 10:31 AM, Taku YAMAMOTO w= rote: > Hi all, > > > Now, thanks to jkim's work, we have power_suspend and power_resume > EVENTHANDLERs since r220647. > I think it's a good time to move scsuspend()/scresume() to that scheme, t= oo. > > That is: > =A0* We can achieve definitive ordering between vga, drm and so on: > =A0 no need to depend on scpm hackery with that scheme. > =A0* Especially combined with adasuspend() (since r220650) and in case of > =A0 X server being paged out, we can easily mess up the video card in a > =A0 intermediate state without earlier scsuspend(). > > A patch is attached. > > -- > -|-__ =A0 YAMAMOTO, Taku > =A0| __ < =A0 =A0 > > =A0 =A0 =A0- A chicken is an egg's way of producing more eggs. - > No patch :( -Brandon From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 18:48:31 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A718B1065675; Tue, 19 Apr 2011 18:48:31 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 161DE8FC08; Tue, 19 Apr 2011 18:48:30 +0000 (UTC) Received: by wwc33 with SMTP id 33so7191157wwc.31 for ; Tue, 19 Apr 2011 11:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=9qrOxSL00l4zvxwHyR0ic5i2L3q/SoMmDNiWZIRf7yk=; b=UvvoRvzCVAY/7WpMFSU4NEZjh6G8PvBFQtJ3OvxBokWtzkN+8HilE/GG7cgCdipbR3 4gp6sPx9SMfsiGM+gm6huUhOUtKJDspDhnV2bL3wLojHgLcymiujs8Kwe2EeKiiss4+D LkZ7v8sY/aalvGFLj1uNqcD5JYGhg9qUE1TRQ= 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:content-transfer-encoding; b=KTpFPtfR6HzdGWnMv5WX+Jyt8NfdXsoa2S8Uqe3bwvNXJVFN1Nv08P7dQhX1fPkKyz MihQqaCeq3UK4SD3vw/ahrf4WDJnLp+6nvOjNB4B1HG3qstxjWTi9k3kzM7AKVAaQog+ oU8/VMzsG4r3RMnufp3lFLpAP3Rq3iipaO8zI= MIME-Version: 1.0 Received: by 10.216.152.170 with SMTP id d42mr1821842wek.39.1303238909996; Tue, 19 Apr 2011 11:48:29 -0700 (PDT) Received: by 10.216.19.13 with HTTP; Tue, 19 Apr 2011 11:48:29 -0700 (PDT) In-Reply-To: <20110420004614.3099947d.taku@tackymt.homeip.net> References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <20110420004614.3099947d.taku@tackymt.homeip.net> Date: Tue, 19 Apr 2011 13:48:29 -0500 Message-ID: From: Brandon Gooch To: Taku YAMAMOTO Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 18:48:31 -0000 On Tue, Apr 19, 2011 at 10:46 AM, Taku YAMAMOTO w= rote: > On Wed, 20 Apr 2011 00:31:33 +0900 > Taku YAMAMOTO wrote: > >> A patch is attached. > Mailman ate it ;) > Here it is. > > -- > -|-__ =A0 YAMAMOTO, Taku > =A0| __ < =A0 =A0 > > =A0 =A0 =A0- A chicken is an egg's way of producing more eggs. - > Throughout testing, I've seen zero regressions. In fact, an issue that existed prior to this patch involving minor screen corruption (dirty VGA buffers) is gone (Intel Mobile 965 Express). Thank you so much guys! -Brandon From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 20:09:36 2011 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1AB77106564A for ; Tue, 19 Apr 2011 20:09:36 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id C8AFB8FC13 for ; Tue, 19 Apr 2011 20:09:35 +0000 (UTC) Received: from [10.30.101.53] ([209.117.142.2]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p3JK2vW4061019 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Tue, 19 Apr 2011 14:02:58 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: Date: Tue, 19 Apr 2011 14:02:52 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <20110420004614.3099947d.taku@tackymt.homeip.net> To: Brandon Gooch X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Tue, 19 Apr 2011 14:02:59 -0600 (MDT) Cc: freebsd-acpi@FreeBSD.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 20:09:36 -0000 Having chased boogiemen in this area before, I think this patch makes = good sense even though it breaks the device model a little. However, = the hardware in question really is special on x86... Warner On Apr 19, 2011, at 12:48 PM, Brandon Gooch wrote: > On Tue, Apr 19, 2011 at 10:46 AM, Taku YAMAMOTO = wrote: >> On Wed, 20 Apr 2011 00:31:33 +0900 >> Taku YAMAMOTO wrote: >>=20 >>> A patch is attached. >> Mailman ate it ;) >> Here it is. >>=20 >> -- >> -|-__ YAMAMOTO, Taku >> | __ < >>=20 >> - A chicken is an egg's way of producing more eggs. - >>=20 >=20 > Throughout testing, I've seen zero regressions. In fact, an issue that > existed prior to this patch involving minor screen corruption (dirty > VGA buffers) is gone (Intel Mobile 965 Express). >=20 > Thank you so much guys! >=20 > -Brandon > _______________________________________________ > freebsd-acpi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > To unsubscribe, send any mail to = "freebsd-acpi-unsubscribe@freebsd.org" >=20 >=20 From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 20:24:26 2011 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id DF1FB106566C; Tue, 19 Apr 2011 20:24:25 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: freebsd-acpi@FreeBSD.org Date: Tue, 19 Apr 2011 16:24:16 -0400 User-Agent: KMail/1.6.2 References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> In-Reply-To: MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201104191624.17677.jkim@FreeBSD.org> Cc: Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 20:24:26 -0000 On Tuesday 19 April 2011 04:02 pm, Warner Losh wrote: > Having chased boogiemen in this area before, I think this patch > makes good sense even though it breaks the device model a little. > However, the hardware in question really is special on x86... Actually I was working on a similar patch and it should be ready soon. Jung-uk Kim > Warner > > On Apr 19, 2011, at 12:48 PM, Brandon Gooch wrote: > > On Tue, Apr 19, 2011 at 10:46 AM, Taku YAMAMOTO wrote: > >> On Wed, 20 Apr 2011 00:31:33 +0900 > >> > >> Taku YAMAMOTO wrote: > >>> A patch is attached. > >> > >> Mailman ate it ;) > >> Here it is. > >> > >> -- > >> -|-__ YAMAMOTO, Taku > >> > >> | __ < > >> > >> - A chicken is an egg's way of producing more eggs. - > > > > Throughout testing, I've seen zero regressions. In fact, an issue > > that existed prior to this patch involving minor screen > > corruption (dirty VGA buffers) is gone (Intel Mobile 965 > > Express). > > > > Thank you so much guys! > > > > -Brandon > > _______________________________________________ > > freebsd-acpi@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > > To unsubscribe, send any mail to > > "freebsd-acpi-unsubscribe@freebsd.org" > > _______________________________________________ > freebsd-acpi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > To unsubscribe, send any mail to > "freebsd-acpi-unsubscribe@freebsd.org" From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 20:24:28 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E60F106564A for ; Tue, 19 Apr 2011 20:24:28 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 92E038FC1C for ; Tue, 19 Apr 2011 20:24:27 +0000 (UTC) Received: by wwc33 with SMTP id 33so84091wwc.31 for ; Tue, 19 Apr 2011 13:24:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Wz2eLWm+X6biQjSgc5nTlnYv/NkctF3R4NUF/1aDGSE=; b=pM/wi9DcFfq7xAU4pAWRGFASAHRk2T381vJP/7vdUTV/RR4aR2JHBBGLBWYW+Gvb0o Qlgl4qEWduBOwRMRGQ//92n8rgCJHkACuCFKRoqr6BPsvBwyXI3yspV2dCofDULAqlId AFyks3GJqxLryDCY7N8SU11rY2/dIYUSFgLvQ= 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:content-transfer-encoding; b=dB7wWKb+cQhOZOSm+gTPc5HwzSWegQgDy38nMR6EmV2oURik7mQqx/2gsQvEQnNRVP MInk8g/SXf+NjaX22mNs7+x+EiDAOv2fDkJprhq7Ih7GNd+nk+TgcPMhMtjQk0UgEIQR 2GxBWYaJsakRQMYDfNSYt0JLJjFK2Boh0RIA0= MIME-Version: 1.0 Received: by 10.216.67.135 with SMTP id j7mr141470wed.54.1303244666236; Tue, 19 Apr 2011 13:24:26 -0700 (PDT) Received: by 10.216.19.13 with HTTP; Tue, 19 Apr 2011 13:24:25 -0700 (PDT) In-Reply-To: References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <20110420004614.3099947d.taku@tackymt.homeip.net> Date: Tue, 19 Apr 2011 15:24:25 -0500 Message-ID: From: Brandon Gooch To: Warner Losh Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 20:24:28 -0000 On Tue, Apr 19, 2011 at 3:02 PM, Warner Losh wrote: > Having chased boogiemen in this area before, I think this patch makes goo= d sense even though it breaks the device model a little. =A0However, the ha= rdware in question really is special on x86... > > Warner Sorry Warner, would you mind elaborating on the above? Do you mean that the patch moves to being too x86-specific for syscons handling? Sorry if I'm being too dense. -Brandon > On Apr 19, 2011, at 12:48 PM, Brandon Gooch wrote: > >> On Tue, Apr 19, 2011 at 10:46 AM, Taku YAMAMOTO wrote: >>> On Wed, 20 Apr 2011 00:31:33 +0900 >>> Taku YAMAMOTO wrote: >>> >>>> A patch is attached. >>> Mailman ate it ;) >>> Here it is. >>> >>> -- >>> -|-__ =A0 YAMAMOTO, Taku >>> =A0| __ < =A0 =A0 >>> >>> =A0 =A0 =A0- A chicken is an egg's way of producing more eggs. - >>> >> >> Throughout testing, I've seen zero regressions. In fact, an issue that >> existed prior to this patch involving minor screen corruption (dirty >> VGA buffers) is gone (Intel Mobile 965 Express). >> >> Thank you so much guys! >> >> -Brandon From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 20:55:29 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 395B11065670; Tue, 19 Apr 2011 20:55:29 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 9D3658FC1B; Tue, 19 Apr 2011 20:55:28 +0000 (UTC) Received: by wyf23 with SMTP id 23so106978wyf.13 for ; Tue, 19 Apr 2011 13:55:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=4uCr5KVWzWEMIV27NOEdXswhalII3UnbhKGtgABe6xA=; b=l4nJJI0gwrr2hEnxoBpMCjFUTGyt3Wz4cbUEY5pTtuhe98qyflkPAskvhCzYimVzlM +L1DY4AVam7JU1RmuXki1qpFQbBL34eRgSydLIATdxhhKIjfRiYQtlsIiuyrg74mjSys JbAbQ0tSq+tqLXZFR0oUjlMj5fL1G97CUmgMQ= 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=xZNxYHVeetdWzXEkCHRvbFK+Z9FS4C55JYdJTxVSsOcaiBZoZRrITRx1v3Yc5ybRTi t5KKAPwADXpz3XddPOxAQsZG6OVzpeKU0gn055698NlZMlzll6H++AB3u50w3Bgbsh3E jarYxbsphKFVpazKYwgq259cgKzNeHtjDPEWs= MIME-Version: 1.0 Received: by 10.216.152.170 with SMTP id d42mr1937128wek.39.1303246527558; Tue, 19 Apr 2011 13:55:27 -0700 (PDT) Received: by 10.216.19.13 with HTTP; Tue, 19 Apr 2011 13:55:27 -0700 (PDT) In-Reply-To: <201104191624.17677.jkim@FreeBSD.org> References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <201104191624.17677.jkim@FreeBSD.org> Date: Tue, 19 Apr 2011 15:55:27 -0500 Message-ID: From: Brandon Gooch To: Jung-uk Kim Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 20:55:29 -0000 On Tue, Apr 19, 2011 at 3:24 PM, Jung-uk Kim wrote: > On Tuesday 19 April 2011 04:02 pm, Warner Losh wrote: >> Having chased boogiemen in this area before, I think this patch >> makes good sense even though it breaks the device model a little. >> However, the hardware in question really is special on x86... >> >> Warner > > Actually I was working on a similar patch and it should be ready soon. > > Jung-uk Kim You have a willing (if not completely capable) tester here, so I always look forward to your patches. As the situation has greatly improved, I hesitate to even say this, but...I wish the USB stack could be made to be suspend/resume resilient. It's really the only problem child in my laptop. Fortunately, it's easy enough to build the USB stack as modules and unload/reload them. -Brandon From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 21:02:30 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id 433D4106564A; Tue, 19 Apr 2011 21:02:26 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: Brandon Gooch Date: Tue, 19 Apr 2011 17:02:07 -0400 User-Agent: KMail/1.6.2 References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <201104191624.17677.jkim@FreeBSD.org> In-Reply-To: MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_WhfrNVUdCjqAlWN" Message-Id: <201104191702.14715.jkim@FreeBSD.org> Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 21:02:30 -0000 --Boundary-00=_WhfrNVUdCjqAlWN Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tuesday 19 April 2011 04:55 pm, Brandon Gooch wrote: > On Tue, Apr 19, 2011 at 3:24 PM, Jung-uk Kim wrote: > > On Tuesday 19 April 2011 04:02 pm, Warner Losh wrote: > >> Having chased boogiemen in this area before, I think this patch > >> makes good sense even though it breaks the device model a > >> little. However, the hardware in question really is special on > >> x86... > >> > >> Warner > > > > Actually I was working on a similar patch and it should be ready > > soon. > > > > Jung-uk Kim > > You have a willing (if not completely capable) tester here, so I > always look forward to your patches. :-) http://people.freebsd.org/~jkim/syscons.diff Also attached here. > As the situation has greatly improved, I hesitate to even say this, > but...I wish the USB stack could be made to be suspend/resume > resilient. It's really the only problem child in my laptop. > Fortunately, it's easy enough to build the USB stack as modules and > unload/reload them. I tried to do something about it but new USB stack is completely out of my expertise, unfortunately. :-( Jung-uk Kim --Boundary-00=_WhfrNVUdCjqAlWN Content-Type: text/plain; charset="iso-8859-1"; name="syscons.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="syscons.diff" Index: sys/isa/syscons_isa.c =================================================================== --- sys/isa/syscons_isa.c (revision 220864) +++ sys/isa/syscons_isa.c (working copy) @@ -69,18 +69,7 @@ __FBSDID("$FreeBSD$"); static devclass_t sc_devclass; static sc_softc_t main_softc; -#ifdef SC_NO_SUSPEND_VTYSWITCH -static int sc_no_suspend_vtswitch = 1; -#else -static int sc_no_suspend_vtswitch = 0; -#endif -static int sc_cur_scr; -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); -SYSCTL_DECL(_hw_syscons); -SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); - static void scidentify(driver_t *driver, device_t parent) { @@ -108,53 +97,6 @@ scattach(device_t dev) SC_AUTODETECT_KBD)); } -static int -scsuspend(device_t dev) -{ - int retry = 10; - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - if (sc->suspend_in_progress == 0) { - sc_cur_scr = sc->cur_scp->index; - if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) - break; - pause("scsuspend", hz); - } while (retry--); - } - sc->suspend_in_progress++; - - return (0); -} - -static int -scresume(device_t dev) -{ - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - sc->suspend_in_progress--; - if (sc->suspend_in_progress == 0) { - if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) - sc_switch_scr(sc, sc_cur_scr); - else - mark_all(sc->cur_scp); - } - - return (0); -} - int sc_max_unit(void) { @@ -300,8 +242,6 @@ static device_method_t sc_methods[] = { DEVMETHOD(device_identify, scidentify), DEVMETHOD(device_probe, scprobe), DEVMETHOD(device_attach, scattach), - DEVMETHOD(device_suspend, scsuspend), - DEVMETHOD(device_resume, scresume), { 0, 0 } }; @@ -312,70 +252,3 @@ static driver_t sc_driver = { }; DRIVER_MODULE(sc, isa, sc_driver, sc_devclass, 0, 0); - -static devclass_t scpm_devclass; - -static void -scpm_identify(driver_t *driver, device_t parent) -{ - - device_add_child(parent, "scpm", 0); -} - -static int -scpm_probe(device_t dev) -{ - - device_set_desc(dev, SC_DRIVER_NAME " suspend/resume"); - device_quiet(dev); - - return (BUS_PROBE_DEFAULT); -} - -static int -scpm_attach(device_t dev) -{ - - bus_generic_probe(dev); - bus_generic_attach(dev); - - return (0); -} - -static int -scpm_suspend(device_t dev) -{ - int error; - - error = bus_generic_suspend(dev); - if (error != 0) - return (error); - - return (scsuspend(dev)); -} - -static int -scpm_resume(device_t dev) -{ - - scresume(dev); - - return (bus_generic_resume(dev)); -} - -static device_method_t scpm_methods[] = { - DEVMETHOD(device_identify, scpm_identify), - DEVMETHOD(device_probe, scpm_probe), - DEVMETHOD(device_attach, scpm_attach), - DEVMETHOD(device_suspend, scpm_suspend), - DEVMETHOD(device_resume, scpm_resume), - { 0, 0 } -}; - -static driver_t scpm_driver = { - "scpm", - scpm_methods, - 0 -}; - -DRIVER_MODULE(scpm, vgapm, scpm_driver, scpm_devclass, 0, 0); Index: sys/dev/syscons/syscons.c =================================================================== --- sys/dev/syscons/syscons.c (revision 220864) +++ sys/dev/syscons/syscons.c (working copy) @@ -104,7 +104,8 @@ static scr_stat main_console; static struct tty *main_devs[MAXCONS]; static char init_done = COLD; -static char shutdown_in_progress = FALSE; +static int shutdown_in_progress = FALSE; +static int suspend_in_progress = FALSE; static char sc_malloc = FALSE; static int saver_mode = CONS_NO_SAVER; /* LKM/user saver */ @@ -128,6 +129,13 @@ static void none_saver(sc_softc_t *sc, int blank) static void (*current_saver)(sc_softc_t *, int) = none_saver; #endif +#ifdef SC_NO_SUSPEND_VTYSWITCH +static int sc_no_suspend_vtswitch = 1; +#else +static int sc_no_suspend_vtswitch = 0; +#endif +static int sc_susp_scr; + SYSCTL_NODE(_hw, OID_AUTO, syscons, CTLFLAG_RD, 0, "syscons"); SYSCTL_NODE(_hw_syscons, OID_AUTO, saver, CTLFLAG_RD, 0, "saver"); SYSCTL_INT(_hw_syscons_saver, OID_AUTO, keybonly, CTLFLAG_RW, @@ -142,6 +150,9 @@ SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_reboot, CTLF SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_debug, CTLFLAG_RW|CTLFLAG_SECURE, &enable_kdbkey, 0, "enable keyboard debug"); #endif +TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); +SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, + &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); #if !defined(SC_NO_FONT_LOADING) && defined(SC_DFLT_FONT) #include "font.h" #endif @@ -170,7 +181,9 @@ static kbd_callback_func_t sckbdevent; static void scinit(int unit, int flags); static scr_stat *sc_get_stat(struct tty *tp); static void scterm(int unit, int flags); -static void scshutdown(void *arg, int howto); +static void scshutdown(void *, int); +static void scsuspend(void *); +static void scresume(void *); static u_int scgetc(sc_softc_t *sc, u_int flags); #define SCGETC_CN 1 #define SCGETC_NONBLOCK 2 @@ -518,10 +531,15 @@ sc_attach_unit(int unit, int flags) printf("\n"); } - /* register a shutdown callback for the kernel console */ - if (sc_console_unit == unit) - EVENTHANDLER_REGISTER(shutdown_pre_sync, scshutdown, - (void *)(uintptr_t)unit, SHUTDOWN_PRI_DEFAULT); + /* register suspend, resume and shutdown callbacks for the kernel console */ + if (sc_console_unit == unit) { + EVENTHANDLER_REGISTER(power_suspend, scsuspend, NULL, + EVENTHANDLER_PRI_ANY); + EVENTHANDLER_REGISTER(power_resume, scresume, NULL, + EVENTHANDLER_PRI_ANY); + EVENTHANDLER_REGISTER(shutdown_pre_sync, scshutdown, NULL, + SHUTDOWN_PRI_DEFAULT); + } for (vc = 0; vc < sc->vtys; vc++) { if (sc->dev[vc] == NULL) { @@ -1718,7 +1736,7 @@ sccnupdate(scr_stat *scp) { /* this is a cut-down version of scrn_timer()... */ - if (scp->sc->suspend_in_progress || scp->sc->font_loading_in_progress) + if (suspend_in_progress || scp->sc->font_loading_in_progress) return; if (debugger > 0 || panicstr || shutdown_in_progress) { @@ -1768,7 +1786,7 @@ scrn_timer(void *arg) return; /* don't do anything when we are performing some I/O operations */ - if (sc->suspend_in_progress || sc->font_loading_in_progress) { + if (suspend_in_progress || sc->font_loading_in_progress) { if (again) timeout(scrn_timer, sc, hz / 10); return; @@ -3007,18 +3025,66 @@ scterm(int unit, int flags) } static void -scshutdown(void *arg, int howto) +scshutdown(__unused void *arg, __unused int howto) { - /* assert(sc_console != NULL) */ - sc_touch_scrn_saver(); - if (!cold && sc_console - && sc_console->sc->cur_scp->smode.mode == VT_AUTO - && sc_console->smode.mode == VT_AUTO) - sc_switch_scr(sc_console->sc, sc_console->index); - shutdown_in_progress = TRUE; + KASSERT(sc_console != NULL, ("sc_console != NULL")); + KASSERT(sc_console->sc != NULL, ("sc_console->sc != NULL")); + KASSERT(sc_console->sc->cur_scp != NULL, + ("sc_console->sc->cur_scp != NULL")); + + sc_touch_scrn_saver(); + if (!cold && + sc_console->sc->cur_scp->index != sc_console->index && + sc_console->sc->cur_scp->smode.mode == VT_AUTO && + sc_console->smode.mode == VT_AUTO) + sc_switch_scr(sc_console->sc, sc_console->index); + shutdown_in_progress = TRUE; } +static void +scsuspend(__unused void *arg) +{ + int retry; + + KASSERT(sc_console != NULL, ("sc_console != NULL")); + KASSERT(sc_console->sc != NULL, ("sc_console->sc != NULL")); + KASSERT(sc_console->sc->cur_scp != NULL, + ("sc_console->sc->cur_scp != NULL")); + + sc_susp_scr = sc_console->sc->cur_scp->index; + if (sc_no_suspend_vtswitch || + sc_susp_scr == sc_console->index) { + sc_touch_scrn_saver(); + sc_susp_scr = -1; + return; + } + for (retry = 0; retry < 10; retry++) { + sc_switch_scr(sc_console->sc, sc_console->index); + if (!sc_console->sc->switch_in_progress) + break; + pause("scsuspend", hz); + } + suspend_in_progress = TRUE; +} + +static void +scresume(__unused void *arg) +{ + + KASSERT(sc_console != NULL, ("sc_console != NULL")); + KASSERT(sc_console->sc != NULL, ("sc_console->sc != NULL")); + KASSERT(sc_console->sc->cur_scp != NULL, + ("sc_console->sc->cur_scp != NULL")); + + suspend_in_progress = FALSE; + if (sc_susp_scr < 0) { + mark_all(sc_console->sc->cur_scp); + return; + } + sc_switch_scr(sc_console->sc, sc_susp_scr); +} + int sc_clean_up(scr_stat *scp) { Index: sys/dev/syscons/syscons.h =================================================================== --- sys/dev/syscons/syscons.h (revision 220864) +++ sys/dev/syscons/syscons.h (working copy) @@ -230,7 +230,6 @@ typedef struct sc_softc { char switch_in_progress; char write_in_progress; char blink_in_progress; - char suspend_in_progress; struct mtx video_mtx; long scrn_time_stamp; Index: sys/pc98/cbus/syscons_cbus.c =================================================================== --- sys/pc98/cbus/syscons_cbus.c (revision 220864) +++ sys/pc98/cbus/syscons_cbus.c (working copy) @@ -49,18 +49,7 @@ __FBSDID("$FreeBSD$"); static devclass_t sc_devclass; static sc_softc_t main_softc; -#ifdef SC_NO_SUSPEND_VTYSWITCH -static int sc_no_suspend_vtswitch = 1; -#else -static int sc_no_suspend_vtswitch = 0; -#endif -static int sc_cur_scr; -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); -SYSCTL_DECL(_hw_syscons); -SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); - static void scidentify(driver_t *driver, device_t parent) { @@ -87,47 +76,6 @@ scattach(device_t dev) return sc_attach_unit(device_get_unit(dev), device_get_flags(dev)); } -static int -scsuspend(device_t dev) -{ - int retry = 10; - sc_softc_t *sc; - - sc = &main_softc; - - if (sc->cur_scp == NULL) - return (0); - - sc_cur_scr = sc->cur_scp->index; - - if (sc_no_suspend_vtswitch) - return (0); - - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) { - break; - } - pause("scsuspend", hz); - } while (retry--); - - return (0); -} - -static int -scresume(device_t dev) -{ - sc_softc_t *sc; - - if (sc_no_suspend_vtswitch) - return (0); - - sc = &main_softc; - sc_switch_scr(sc, sc_cur_scr); - - return (0); -} - int sc_max_unit(void) { @@ -242,8 +190,6 @@ static device_method_t sc_methods[] = { DEVMETHOD(device_identify, scidentify), DEVMETHOD(device_probe, scprobe), DEVMETHOD(device_attach, scattach), - DEVMETHOD(device_suspend, scsuspend), - DEVMETHOD(device_resume, scresume), { 0, 0 } }; --Boundary-00=_WhfrNVUdCjqAlWN-- From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 21:27:23 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E1F6E106570C; Tue, 19 Apr 2011 21:27:23 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 507188FC2A; Tue, 19 Apr 2011 21:27:23 +0000 (UTC) Received: by wwc33 with SMTP id 33so141293wwc.31 for ; Tue, 19 Apr 2011 14:27:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=OiixFItSDvuYia5WIZjaANoR73PLcCXA4g8WQHDJBlI=; b=i1um+xhbh7SUfVSktAhnWBAOvm9GmtmRVb4awghqCL/KkJmopTEvbwDrYudA79+W8B kvbbz3oifQnFNhdtkPH55+Mpg/MS4D0CgKcOlBAV7G19E2Juh5ZY3p09IU0y7A7XWI0R Dx5/FNxDDJ9zX+HgFv+Wh/FX5f0ShNn11rtLE= 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=OMc+Rp073gHMoTUE6uDGdJKhpqi4rggsDbB/RlUWTd5Ez1YH5HDroXV/E6sOU9hKkP 2Leh1TKKqo5Cn0dKpsOgBby1wzRAC2gy5WGaDZKSnWgUrxynZAC76tEGJQI3jk3ABJyr WHOeBKAH6sX9M0Rby8F2DhP3iPkOexFKcXK9U= MIME-Version: 1.0 Received: by 10.217.4.4 with SMTP id t4mr205379wes.39.1303248442348; Tue, 19 Apr 2011 14:27:22 -0700 (PDT) Received: by 10.216.19.13 with HTTP; Tue, 19 Apr 2011 14:27:22 -0700 (PDT) In-Reply-To: <201104191702.14715.jkim@FreeBSD.org> References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <201104191624.17677.jkim@FreeBSD.org> <201104191702.14715.jkim@FreeBSD.org> Date: Tue, 19 Apr 2011 16:27:22 -0500 Message-ID: From: Brandon Gooch To: Jung-uk Kim Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 21:27:24 -0000 On Tue, Apr 19, 2011 at 4:02 PM, Jung-uk Kim wrote: > On Tuesday 19 April 2011 04:55 pm, Brandon Gooch wrote: >> On Tue, Apr 19, 2011 at 3:24 PM, Jung-uk Kim > wrote: >> > On Tuesday 19 April 2011 04:02 pm, Warner Losh wrote: >> >> Having chased boogiemen in this area before, I think this patch >> >> makes good sense even though it breaks the device model a >> >> little. However, the hardware in question really is special on >> >> x86... >> >> >> >> Warner >> > >> > Actually I was working on a similar patch and it should be ready >> > soon. >> > >> > Jung-uk Kim >> >> You have a willing (if not completely capable) tester here, so I >> always look forward to your patches. > > :-) > > http://people.freebsd.org/~jkim/syscons.diff > > Also attached here. Cool, building now... I noticed you didn't grab the Giant lock, which shouldn't be needed since Ed's work, correct? >> As the situation has greatly improved, I hesitate to even say this, >> but...I wish the USB stack could be made to be suspend/resume >> resilient. It's really the only problem child in my laptop. >> Fortunately, it's easy enough to build the USB stack as modules and >> unload/reload them. > > I tried to do something about it but new USB stack is completely out > of my expertise, unfortunately. :-( > > Jung-uk Kim I understand, and again, I know it seems like I always bring it up to you whenever I get the chance -- because I do. Sorry :| I should bug someone else (Hans or Andrew Thompson), or maybe the PC-BSD guys might get interested in fixing this eventually -- after GEM, KMS, etc... ;) -Brandon From owner-freebsd-acpi@FreeBSD.ORG Tue Apr 19 21:42:18 2011 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id E63151065670; Tue, 19 Apr 2011 21:42:17 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: Brandon Gooch Date: Tue, 19 Apr 2011 17:41:57 -0400 User-Agent: KMail/1.6.2 References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <201104191702.14715.jkim@FreeBSD.org> In-Reply-To: MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201104191742.09449.jkim@FreeBSD.org> Cc: freebsd-acpi@freebsd.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2011 21:42:18 -0000 On Tuesday 19 April 2011 05:27 pm, Brandon Gooch wrote: > On Tue, Apr 19, 2011 at 4:02 PM, Jung-uk Kim wrote: > > On Tuesday 19 April 2011 04:55 pm, Brandon Gooch wrote: > >> On Tue, Apr 19, 2011 at 3:24 PM, Jung-uk Kim > > > > wrote: > >> > On Tuesday 19 April 2011 04:02 pm, Warner Losh wrote: > >> >> Having chased boogiemen in this area before, I think this > >> >> patch makes good sense even though it breaks the device model > >> >> a little. However, the hardware in question really is special > >> >> on x86... > >> >> > >> >> Warner > >> > > >> > Actually I was working on a similar patch and it should be > >> > ready soon. > >> > > >> > Jung-uk Kim > >> > >> You have a willing (if not completely capable) tester here, so I > >> always look forward to your patches. > >> > > :-) > > > > http://people.freebsd.org/~jkim/syscons.diff > > > > Also attached here. > > Cool, building now... > > I noticed you didn't grab the Giant lock, which shouldn't be needed > since Ed's work, correct? Actually the real reason is locking is completely missing in syscons(4) since we abandoned spltty(). Grabbing Giant here makes no difference because of that reason. :-( > >> As the situation has greatly improved, I hesitate to even say > >> this, but...I wish the USB stack could be made to be > >> suspend/resume resilient. It's really the only problem child in > >> my laptop. Fortunately, it's easy enough to build the USB stack > >> as modules and unload/reload them. > > > > I tried to do something about it but new USB stack is completely > > out of my expertise, unfortunately. :-( > > > > Jung-uk Kim > > I understand, and again, I know it seems like I always bring it up > to you whenever I get the chance -- because I do. Sorry :| That's okay, I'm used to it. ;-) > I should bug someone else (Hans or Andrew Thompson), or maybe the > PC-BSD guys might get interested in fixing this eventually -- after > GEM, KMS, etc... ;) Yeah, maybe... Jung-uk Kim From owner-freebsd-acpi@FreeBSD.ORG Wed Apr 20 07:57:49 2011 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9426106564A for ; Wed, 20 Apr 2011 07:57:49 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 824768FC1E for ; Wed, 20 Apr 2011 07:57:49 +0000 (UTC) Received: from 63.imp.bsdimp.com (63.imp.bsdimp.com [10.0.0.63]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p3K7pUIS066463 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Wed, 20 Apr 2011 01:51:31 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: Date: Wed, 20 Apr 2011 01:51:30 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: References: <20110420003133.4dc391f6.taku@tackymt.homeip.net> <20110420004614.3099947d.taku@tackymt.homeip.net> To: Brandon Gooch X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Wed, 20 Apr 2011 01:51:34 -0600 (MDT) Cc: freebsd-acpi@FreeBSD.org Subject: Re: [PATCH] Move scsuspend()/scresume() forward to EVENTHANDLERs X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Apr 2011 07:57:49 -0000 On Apr 19, 2011, at 2:24 PM, Brandon Gooch wrote: > On Tue, Apr 19, 2011 at 3:02 PM, Warner Losh wrote: >> Having chased boogiemen in this area before, I think this patch makes = good sense even though it breaks the device model a little. However, = the hardware in question really is special on x86... >>=20 >> Warner >=20 > Sorry Warner, would you mind elaborating on the above? Do you mean > that the patch moves to being too x86-specific for syscons handling? I mean that this device is special in the architecture, so having some = special code to cope with it is ok. Warner >=20 > Sorry if I'm being too dense. >=20 > -Brandon >=20 >> On Apr 19, 2011, at 12:48 PM, Brandon Gooch wrote: >>=20 >>> On Tue, Apr 19, 2011 at 10:46 AM, Taku YAMAMOTO = wrote: >>>> On Wed, 20 Apr 2011 00:31:33 +0900 >>>> Taku YAMAMOTO wrote: >>>>=20 >>>>> A patch is attached. >>>> Mailman ate it ;) >>>> Here it is. >>>>=20 >>>> -- >>>> -|-__ YAMAMOTO, Taku >>>> | __ < >>>>=20 >>>> - A chicken is an egg's way of producing more eggs. - >>>>=20 >>>=20 >>> Throughout testing, I've seen zero regressions. In fact, an issue = that >>> existed prior to this patch involving minor screen corruption (dirty >>> VGA buffers) is gone (Intel Mobile 965 Express). >>>=20 >>> Thank you so much guys! >>>=20 >>> -Brandon >=20 >=20