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>