On Sun, 24 Feb 2002, Michael Smith wrote:
> Try grabbing Giant in acpi_tz_thread when it wakes up, then dropping it
> again before it goes to sleep. This is probably a hack, but I'd guess a
> required one for now.
>
> If that works, send me a diff and I'll commit it with thanks!
Yow! Works absolutely fine. Patch below!
Thanks!
Magnus
--- sys/dev/acpica/acpi_thermal.c.ctm Sun Feb 24 13:55:13 2002
+++ sys/dev/acpica/acpi_thermal.c Sun Feb 24 23:20:39 2002
@@ -31,6 +31,8 @@
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
#include <sys/bus.h>
#include <sys/proc.h>
#include <sys/reboot.h>
@@ -780,6 +782,8 @@
for (;;) {
tsleep(&acpi_tz_proc, PZERO, "nothing", hz * acpi_tz_polling_rate);
+ mtx_lock(&Giant);
+
if (devcount == 0)
devclass_get_devices(acpi_tz_devclass, &devs, &devcount);
@@ -787,5 +791,7 @@
for (i = 0; i < devcount; i++)
acpi_tz_timeout(device_get_softc(devs[i]));
ACPI_UNLOCK;
+
+ mtx_unlock(&Giant);
}
}
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message