Module Name:    src
Committed By:   alc
Date:           Mon Jul  6 00:54:01 UTC 2009

Modified Files:
        src/sys/dev/acpi: acpi_ec.c

Log Message:
Add a pmf(9) shutdown hook to acpiec(4) to use polling on shutdown.

This fixes DIAGNOSTIC's assertion failure:

cpu_switchto(): switching above IPL_SCHED

during ACPI shutdown.

OK'd by joerg@


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/dev/acpi/acpi_ec.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/acpi/acpi_ec.c
diff -u src/sys/dev/acpi/acpi_ec.c:1.55 src/sys/dev/acpi/acpi_ec.c:1.56
--- src/sys/dev/acpi/acpi_ec.c:1.55	Tue May 12 09:29:46 2009
+++ src/sys/dev/acpi/acpi_ec.c	Mon Jul  6 00:54:00 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_ec.c,v 1.55 2009/05/12 09:29:46 cegger Exp $	*/
+/*	$NetBSD: acpi_ec.c,v 1.56 2009/07/06 00:54:00 alc Exp $	*/
 
 /*-
  * Copyright (c) 2007 Joerg Sonnenberger <jo...@netbsd.org>.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_ec.c,v 1.55 2009/05/12 09:29:46 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_ec.c,v 1.56 2009/07/06 00:54:00 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -148,8 +148,9 @@
 static void acpiec_common_attach(device_t, device_t, ACPI_HANDLE,
     bus_addr_t, bus_addr_t, ACPI_HANDLE, uint8_t);
 
-static bool acpiec_resume(device_t PMF_FN_PROTO);
 static bool acpiec_suspend(device_t PMF_FN_PROTO);
+static bool acpiec_resume(device_t PMF_FN_PROTO);
+static bool acpiec_shutdown(device_t, int);
 
 static bool acpiec_parse_gpe_package(device_t, ACPI_HANDLE,
     ACPI_HANDLE *, uint8_t *);
@@ -377,7 +378,8 @@
 
 	ec_singleton = self;
 
-	if (!pmf_device_register(self, acpiec_suspend, acpiec_resume))
+	if (!pmf_device_register1(self, acpiec_suspend, acpiec_resume,
+	    acpiec_shutdown))
 		aprint_error_dev(self, "couldn't establish power handler\n");
 
 	return;
@@ -409,6 +411,14 @@
 }
 
 static bool
+acpiec_shutdown(device_t dv, int how)
+{
+
+	acpiec_cold = true;
+	return true;
+}
+
+static bool
 acpiec_parse_gpe_package(device_t self, ACPI_HANDLE ec_handle,
     ACPI_HANDLE *gpe_handle, uint8_t *gpebit)
 {

Reply via email to