Date: Mon, 5 Mar 2007 20:39:24 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: Stefan Ehmann <shoesoft@gmx.net> Cc: freebsd-acpi@freebsd.org Subject: Re: notebook freezes Message-ID: <20070305201904.K21224@delplex.bde.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
On Mon, 5 Mar 2007, 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 Thanks. 29 and 42 are unclobbered, but ff is just invalid. Maybe it is what the BIOS writes to indicate invalidity. 0xc is the register usually accessed (RTC_INTR). Now I want to know what is the result of using this invalid index. Read through this index using inb(IO_RTC + 1) and rtcin(rtc_reg) before changing rtc_reg (the results should be the same). On my VIA amd64 system, the result of rtcin(0xff) is 0xff. Probably nothing there. This is is the worst possible result, since it ensures the problem pointed out in my commit of the initial fix -- rtcintr() will spin forever if it is called before rtc_restore(), waiting for one of the const bits in the 0xff result to become unset. I now have a completely different acpi problem to ask about. My HP nx6325 now shuts down an instant after booting FreeBSD with a 1 week old kernel, since the tz2 temperature is misdetected as 3413.3 degrees C. All temperatures seemed to be detected correctly in 3+ week old kernels. Only batter battery misdetection that caused shutdowns (less cleanly via panics) in the old kernels. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070305201904.K21224>