From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: support for software direct frequency throttling? Date: Thu, 17 Oct 2013 22:28:13 +0200 Message-ID: <1748637.gcTIfKF45Q@vostro.rjw.lan> References: <5202A24F.6040506@calxeda.com> <2466745.skqnolQonv@vostro.rjw.lan> <526020CA.1080605@calxeda.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7Bit Return-path: Received: from hydra.sisk.pl ([212.160.235.94]:51578 "EHLO hydra.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756787Ab3JQUQY (ORCPT ); Thu, 17 Oct 2013 16:16:24 -0400 In-Reply-To: <526020CA.1080605@calxeda.com> Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: Mark Langsdorf , Zhang Rui Cc: "cpufreq@vger.kernel.org" , "linux-pm@vger.kernel.org" On Thursday, October 17, 2013 12:39:22 PM Mark Langsdorf wrote: > On 08/07/2013 06:37 PM, Rafael J. Wysocki wrote: > > On Wednesday, August 07, 2013 02:38:55 PM Mark Langsdorf wrote: > >> Is there an easy way to dynamically limit the maximum or minimum > >> frequencies available to a governor? I'm trying to support frequency > >> throttling in response to a thermal event (or theoretically to allow a > >> BMC to set a minimum frequency regardless of current load). > >> > >> I looked into doing this last year and it required some QoS patches that > >> I don't think ever made it into the kernel. > >> > >> Is there a straightforward way to do this right now? > > > > Have you looked at drivers/thermal/cpu_cooling.c ? > > Yes, and I'm not sure how to use it get what I want. > > I have a mailbox interrupt on my system that will trigger with a message > when the BMC monitoring the thermal sensor notices that the temperature > passes a trip point; the message will include the new maximum frequency. > I want to pass that new maximum frequency to the cpufreq governor so it > can reassess the current frequency against the maximum and lower it if > need be. > > I don't know in advance what the trip points or maximum frequencies are; > the BMC managing the thermal sensor has that information but doesn't > provide it to Linux. > > The most appealing solution would be to just copy > cpufreq_apply_cooling() and cpufreq_thermal_modifier() from > drivers/thermal/cpu_cooling.c in the highbank_cpufreq.c driver, as > they're the core logic of what I need. I don't know if that would be > acceptable, though. I've looked at setting up a full thermal_zone > solution, and its more than I need without actually giving me a good way > to set the frequencies when I need to. I see. Rui, any advice on that? Rafael