Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Feb 2008 12:11:59 +0900
From:      Hajimu UMEMOTO <ume@freebsd.org>
To:        "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko@verizon.net>
Cc:        acpi@freebsd.org, Johannes Dieterich <dieterich.joh@googlemail.com>, Ian Smith <smithi@nimnet.asn.au>
Subject:   Re: [RFC] Patch to enable temperature ceiling in powerd
Message-ID:  <yger6fdk328.wl%ume@mahoroba.org>
In-Reply-To: <1203126071.833.19.camel@RabbitsDen>
References:  <20080208045605.15C874500E@ptavv.es.net> <47ABF402.7030904@root.org> <1202475519.7014.7.camel@RabbitsDen> <yge1w7komar.wl%ume@mahoroba.org> <1203126071.833.19.camel@RabbitsDen>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

>>>>> On Fri, 15 Feb 2008 20:41:10 -0500
>>>>> "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko@verizon.net> said:

alex> Thank you very much for pointing me in the right direction -- my system
alex> (ThinkPad X60 1709-73U) does provide _TSP, _TC1 and _TC2, just not in
alex> the tz0. All of that lives in tz1 and works perfectly -- as the matter
alex> of fact I am writing this E-mail after setting 

alex> hw.acpi.thermal.tz1.passive_cooling: 1
alex> hw.acpi.thermal.user_override: 1
alex> hw.acpi.thermal.tz1._PSV: 55.0C

The current implementation attempts to enable passive cooling just for
tz0.  Could you try the following patch?  It should enable passive
cooling for tz1 on your laptop.

Index: sys/dev/acpica/acpi_thermal.c
diff -u -p sys/dev/acpica/acpi_thermal.c.orig sys/dev/acpica/acpi_thermal.c
--- sys/dev/acpica/acpi_thermal.c.orig	Wed Aug 23 21:29:55 2006
+++ sys/dev/acpica/acpi_thermal.c	Mon Aug 28 00:35:49 2006
@@ -172,6 +172,8 @@ static int			acpi_tz_override;
 static struct proc		*acpi_tz_proc;
 ACPI_LOCK_DECL(thermal, "ACPI thermal zone");
 
+static int			acpi_tz_cooling_unit = -1;
+
 static int
 acpi_tz_probe(device_t dev)
 {
@@ -205,17 +207,7 @@ acpi_tz_attach(device_t dev)
     sc->tz_cooling_proc_running = FALSE;
     sc->tz_cooling_active = FALSE;
     sc->tz_cooling_updated = FALSE;
-
-    /*
-     * Always attempt to enable passive cooling for tz0.  Users can enable
-     * it for other zones manually for now.
-     *
-     * XXX We need to test if multiple zones conflict with each other
-     * since cpufreq currently sets all CPUs to the given frequency whereas
-     * it's possible for different thermal zones to specify independent
-     * settings for multiple CPUs.
-     */
-    sc->tz_cooling_enabled = (device_get_unit(dev) == 0);
+    sc->tz_cooling_enabled = FALSE;
 
     /*
      * Parse the current state of the thermal zone and build control
@@ -309,16 +301,25 @@ acpi_tz_attach(device_t dev)
 	}
     }
 
-    /* Create a thread to handle passive cooling for each zone if enabled. */
+    /*
+     * Create a thread to handle passive cooling for 1st zone which
+     * has _PSV, _TSP, _TC1 and _TC2.  Users can enable it for other
+     * zones manually for now.
+     *
+     * XXX We enable only one zone to avoid multiple zones conflict
+     * with each other since cpufreq currently sets all CPUs to the
+     * given frequency whereas it's possible for different thermal
+     * zones to specify independent settings for multiple CPUs.
+     */
+    if (acpi_tz_cooling_unit < 0 && acpi_tz_cooling_is_available(sc))
+	sc->tz_cooling_enabled = TRUE;
     if (sc->tz_cooling_enabled) {
-	if (acpi_tz_cooling_is_available(sc)) {
-	    error = acpi_tz_cooling_thread_start(sc);
-	    if (error != 0) {
-		sc->tz_cooling_enabled = FALSE;
-		goto out;
-	    }
-	} else
+	error = acpi_tz_cooling_thread_start(sc);
+	if (error != 0) {
 	    sc->tz_cooling_enabled = FALSE;
+	    goto out;
+	}
+	acpi_tz_cooling_unit = device_get_unit(dev);
     }
 
     /*

Sincerely,

--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume@mahoroba.org  ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?yger6fdk328.wl%ume>