Date: Fri, 18 Jun 2004 07:43:08 -0700 From: "Moore, Robert" <robert.moore@intel.com> To: "Andriy Gapon" <avg@icyb.net.ua>, <freebsd-acpi@freebsd.org> Subject: RE: kernel trap with ACPI on 4.10-release Message-ID: <37F890616C995246BE76B3E6B2DBE0550120C936@orsmsx403.amr.corp.intel.com>
next in thread | raw e-mail | index | archive | help
This has been fixed for some number of months. What version of ACPI CA are you using? Bob > -----Original Message----- > From: owner-freebsd-acpi@freebsd.org [mailto:owner-freebsd- > acpi@freebsd.org] On Behalf Of Andriy Gapon > Sent: Friday, June 18, 2004 6:50 AM > To: freebsd-acpi@freebsd.org > Subject: Re: kernel trap with ACPI on 4.10-release >=20 > on 11.06.2004 15:20 Andriy Gapon said the following: > > > ... > > Having no knowledge in ACPI internals and very little knowledge in > > kernel internals I can not dare suggest what would be most appropriate > > to do. Nevertheless, it seems that (1) would be too intrusive and > > global; (3) is complex and might not be too reliable; (2) seems to be > > the easiest, one line change from "taskqueue_swi" to "taskqueue_thread" > > in OsdSchedule.c > > > > I hope my investigation has something helpful in it, and any feedback > > would also be very helpful for my self-education on kernel matters. >=20 > I looked into the problem more carefully and thoughtfully and now I > understand that I was looking in a completely wrong place for a > completely wrong stuff. > There should not have been any parallel execution thanks to proper > splhigh() locking, *but there was*! And I think I know why. I added some > debugging printf-s and determined that tasks on taskqueue_swi were > executed while acpi_tz_thread "held" splhigh(), this led me to idea that > this kernel thread somewhere willingfully gave up its priority, like in > tsleep(). > In my DSTD _TMP() accesses Winbond HWM chip to read current temperature > and its access routine has calls to Stall(). If I understand Intel > ACPICA code correctly this call is executed in AcpiExSystemDoStall() > function (/usr/src/sys/contrib/dev/acpica/exsystem.c). > Looking at the code present in 4.10 (file revision 75) it seems that it > is entirely backwards: it calls AcpiOsStall() for long delays and > AcpiOsSleep() for short delays, also incorrectly converts units for the > latter case, not speaking of the fact that ACPI standard commands that > Stall should not be used for delays longer than 100 microseconds and CPU > should not be given up. > I see that this function was made sane in the code imported in CURRENT > (file revision 80). I realize that this is a contributed, vendor code, > but I think AcpiExSystemDoStall() should be patched for STABLE too, > because the way it is now, it is outright buggy and dangerous. >=20 > -- > Andriy Gapon > _______________________________________________ > 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"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?37F890616C995246BE76B3E6B2DBE0550120C936>