Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Feb 2008 23:37:16 -0500
From:      "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko@verizon.net>
To:        Hajimu UMEMOTO <ume@freebsd.org>
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:  <1203136636.821.4.camel@RabbitsDen>
In-Reply-To: <yger6fdk328.wl%ume@mahoroba.org>
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> <yger6fdk328.wl%ume@mahoroba.org>

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

On Sat, 2008-02-16 at 12:11 +0900, Hajimu UMEMOTO wrote:
> 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.

Thank you, it certainly did:

sunny:RabbitsDen>sysctl hw.acpi.thermal
hw.acpi.thermal.min_runtime: 0
hw.acpi.thermal.polling_rate: 10
hw.acpi.thermal.user_override: 0
hw.acpi.thermal.tz0.temperature: 65.0C
hw.acpi.thermal.tz0.active: -1
hw.acpi.thermal.tz0.passive_cooling: 0
hw.acpi.thermal.tz0.thermal_flags: 0
hw.acpi.thermal.tz0._PSV: -1
hw.acpi.thermal.tz0._HOT: -1
hw.acpi.thermal.tz0._CRT: 127.0C
hw.acpi.thermal.tz0._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
hw.acpi.thermal.tz1.temperature: 64.0C
hw.acpi.thermal.tz1.active: -1
==> hw.acpi.thermal.tz1.passive_cooling: 1
hw.acpi.thermal.tz1.thermal_flags: 0
hw.acpi.thermal.tz1._PSV: 92.5C
hw.acpi.thermal.tz1._HOT: -1
hw.acpi.thermal.tz1._CRT: 97.0C
hw.acpi.thermal.tz1._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

I have one question regarding this patch: it enables passive cooling for
the thermal zone, which has _PSV, _TSP, _TC1 and _TC2. Isn't it
necessary to also have _PSL in the thermal zone to have passive cooling?

> 
> 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/
-- 
Alexandre "Sunny" Kovalenko (Олександр Коваленко)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1203136636.821.4.camel>