Date: Mon, 05 Mar 2007 13:21:17 -0800 From: Nate Lawson <nate@root.org> To: Stefan Ehmann <shoesoft@gmx.net> Cc: freebsd-acpi@FreeBSD.org Subject: Re: notebook freezes Message-ID: <45EC89CD.5050907@root.org> In-Reply-To: <1173084724.1850.3.camel@localhost> References: <200703011612.07110.shoesoft@gmx.net> <20070305004000.B17935@delplex.bde.org> <45EB28A1.5010803@root.org> <200703042242.58748.shoesoft@gmx.net> <20070305142926.O2780@besplex.bde.org> <1173084724.1850.3.camel@localhost>
next in thread | previous in thread | raw e-mail | index | archive | help
Stefan Ehmann wrote: > On Mon, 2007-03-05 at 15:21 +1100, Bruce Evans wrote: >> On Sun, 4 Mar 2007, Stefan Ehmann wrote: >>> Oops, seems I somehow screwed up Bruce's patch on first try (pmtimer was >>> already in my config). Probably the aftermath of the lunar eclipse :) >>> >>> On my second try, timer_restore really gets called and it also fixes my >>> problem. >> Could you add some RTC accesses to determine exactly what state is >> inconsistent? Something like the following: >> >> cur_rtc_reg = inb(IO_RTC); /* Sloppy locking. */ >> printf("cur_rtc_reg = %02x, rtc_reg = %02x\n", cur_rtc_reg, rtc_reg); >> rtc_reg = -1; >> cur_rtc_statusa = rtcin(RTC_STATUSA); >> printf(...); >> cur_rtc_statusb = rtcin(RTC_STATUSB); >> printf(...); >> > > Putting this on top of rtc_resume, I get this on resume (all values are > hexadecimal): > > cur_rtc_reg = ff, rtc_reg = 0c > cur_rtc_statusa = 29 > cur_rtc_statusb = 42 Yes, that's what I expected. Reads from uninitialized regions of the southbridge usually return all 1's. PCI config registers usually show the same thing on resume until reprogrammed. The solution is to not assume anything about the state of the RTC in the resume method and always reprogram all the registers as if it was coming up from hard power off. -- Nate
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45EC89CD.5050907>