Module Name:    src
Committed By:   jruoho
Date:           Tue Aug 17 10:35:22 UTC 2010

Modified Files:
        src/sys/dev/acpi: acpi_cpu_pstate.c acpi_cpu_tstate.c

Log Message:
Clarify the initialization of the dynamic maximums/minimums. Reset these to
defaults upon suspend. As we do not know how well the firmware maintains
state, do not run the callbacks that evaluate the maximum/minimum on resume.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/acpi/acpi_cpu_pstate.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/acpi/acpi_cpu_tstate.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_cpu_pstate.c
diff -u src/sys/dev/acpi/acpi_cpu_pstate.c:1.27 src/sys/dev/acpi/acpi_cpu_pstate.c:1.28
--- src/sys/dev/acpi/acpi_cpu_pstate.c:1.27	Tue Aug 17 10:17:52 2010
+++ src/sys/dev/acpi/acpi_cpu_pstate.c	Tue Aug 17 10:35:22 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu_pstate.c,v 1.27 2010/08/17 10:17:52 jruoho Exp $ */
+/* $NetBSD: acpi_cpu_pstate.c,v 1.28 2010/08/17 10:35:22 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2010 Jukka Ruohonen <jruoho...@iki.fi>
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_pstate.c,v 1.27 2010/08/17 10:17:52 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_pstate.c,v 1.28 2010/08/17 10:35:22 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/evcnt.h>
@@ -54,6 +54,7 @@
 static int		 acpicpu_pstate_max(struct acpicpu_softc *);
 static int		 acpicpu_pstate_min(struct acpicpu_softc *);
 static void		 acpicpu_pstate_change(struct acpicpu_softc *);
+static void		 acpicpu_pstate_reset(struct acpicpu_softc *);
 static void		 acpicpu_pstate_bios(void);
 
 static uint32_t		 acpicpu_pstate_saved;
@@ -111,12 +112,10 @@
 	if (ACPI_FAILURE(rv))
 		aprint_debug_dev(self, "_PPC missing\n");
 
-	sc->sc_pstate_max = 0;
-	sc->sc_pstate_min = sc->sc_pstate_count - 1;
-
 	sc->sc_flags |= ACPICPU_FLAG_P;
 
 	acpicpu_pstate_bios();
+	acpicpu_pstate_reset(sc);
 	acpicpu_pstate_attach_evcnt(sc);
 	acpicpu_pstate_attach_print(sc);
 
@@ -274,6 +273,8 @@
 	struct acpicpu_pstate *ps = NULL;
 	int32_t i;
 
+	acpicpu_pstate_reset(sc);
+
 	if (acpicpu_pstate_saved != 0)
 		return true;
 
@@ -318,8 +319,6 @@
 		acpicpu_pstate_saved = 0;
 	}
 
-	acpicpu_pstate_callback(self);
-
 	return true;
 }
 
@@ -809,8 +808,7 @@
 	ACPI_OBJECT_LIST arg;
 	ACPI_OBJECT obj[2];
 
-	sc->sc_pstate_max = 0;
-	sc->sc_pstate_min = sc->sc_pstate_count - 1;
+	acpicpu_pstate_reset(sc);
 
 	arg.Count = 2;
 	arg.Pointer = obj;
@@ -831,6 +829,15 @@
 }
 
 static void
+acpicpu_pstate_reset(struct acpicpu_softc *sc)
+{
+
+	sc->sc_pstate_max = 0;
+	sc->sc_pstate_min = sc->sc_pstate_count - 1;
+
+}
+
+static void
 acpicpu_pstate_bios(void)
 {
 	const uint8_t val = AcpiGbl_FADT.PstateControl;

Index: src/sys/dev/acpi/acpi_cpu_tstate.c
diff -u src/sys/dev/acpi/acpi_cpu_tstate.c:1.12 src/sys/dev/acpi/acpi_cpu_tstate.c:1.13
--- src/sys/dev/acpi/acpi_cpu_tstate.c:1.12	Tue Aug 17 10:17:52 2010
+++ src/sys/dev/acpi/acpi_cpu_tstate.c	Tue Aug 17 10:35:22 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu_tstate.c,v 1.12 2010/08/17 10:17:52 jruoho Exp $ */
+/* $NetBSD: acpi_cpu_tstate.c,v 1.13 2010/08/17 10:35:22 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2010 Jukka Ruohonen <jruoho...@iki.fi>
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_tstate.c,v 1.12 2010/08/17 10:17:52 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_tstate.c,v 1.13 2010/08/17 10:35:22 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/evcnt.h>
@@ -49,6 +49,7 @@
 static ACPI_STATUS	 acpicpu_tstate_ptc(struct acpicpu_softc *);
 static ACPI_STATUS	 acpicpu_tstate_fadt(struct acpicpu_softc *);
 static ACPI_STATUS	 acpicpu_tstate_change(struct acpicpu_softc *);
+static void		 acpicpu_tstate_reset(struct acpicpu_softc *);
 
 void
 acpicpu_tstate_attach(device_t self)
@@ -105,11 +106,9 @@
 		sc->sc_flags |= ACPICPU_FLAG_T_FADT;
 	}
 
-	sc->sc_tstate_max = 0;
-	sc->sc_tstate_min = sc->sc_tstate_count - 1;
-
 	sc->sc_flags |= ACPICPU_FLAG_T;
 
+	acpicpu_tstate_reset(sc);
 	acpicpu_tstate_attach_evcnt(sc);
 	acpicpu_tstate_attach_print(sc);
 }
@@ -208,6 +207,9 @@
 bool
 acpicpu_tstate_suspend(device_t self)
 {
+	struct acpicpu_softc *sc = device_private(self);
+
+	acpicpu_tstate_reset(sc);
 
 	return true;
 }
@@ -215,10 +217,6 @@
 bool
 acpicpu_tstate_resume(device_t self)
 {
-	struct acpicpu_softc *sc = device_private(self);
-
-	if ((sc->sc_flags & ACPICPU_FLAG_T_FADT) == 0)
-		acpicpu_tstate_callback(self);
 
 	return true;
 }
@@ -584,8 +582,7 @@
 	ACPI_INTEGER val;
 	ACPI_STATUS rv;
 
-	sc->sc_tstate_max = 0;
-	sc->sc_tstate_min = sc->sc_tstate_count - 1;
+	acpicpu_tstate_reset(sc);
 
 	/*
 	 * Evaluate the available T-state window:
@@ -621,6 +618,14 @@
 	return AE_OK;
 }
 
+static void
+acpicpu_tstate_reset(struct acpicpu_softc *sc)
+{
+
+	sc->sc_tstate_max = 0;
+	sc->sc_tstate_min = sc->sc_tstate_count - 1;
+}
+
 int
 acpicpu_tstate_get(struct acpicpu_softc *sc, uint32_t *percent)
 {

Reply via email to