Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp297999ybh; Wed, 15 Jul 2020 02:11:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCed2zBoiiQjujwtF+Ykn/EfloTK+MLYBiz1RVxWWobF2OHG54M8AVsYf0V29soKdVmyuq X-Received: by 2002:a05:6402:1777:: with SMTP id da23mr8528291edb.260.1594804272526; Wed, 15 Jul 2020 02:11:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594804272; cv=none; d=google.com; s=arc-20160816; b=C7FK8i699zAkAr/ibaBCzAkIhU3vGP8l4FhUW/8qZBrBJkiZL20mfXYI6E8DHb2FVj S5k5Ts8A22+/a5NJBOJ0YJRKgo30LJ2tSUkDZuXLAFRuwqoMpGYm7jnmJhxzN02Egckv 8pc9wuWGz/jRwx5V/esiwKLRYWuYR3TFHLsimRuzoFZba/hnmg393/f8LJzQonUXqY2E iDgQWhFSrez4HZTS+U/QZTafK1sbQE19cwQeH1Un3PdN69Mhoz1iEA5X1P2bGP4iO4Mx H7xFCR/3y1PcTortCTRAJBrqxRSrRqJtr2uw8DOcPqWdwLFngCqLQTcC5VdAup1sn1lE 3wqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :ironport-sdr:ironport-sdr; bh=7wvTgjTWytWwD6jB9qGpmdXY31HVzFoGdhTe8JDoqq8=; b=xWfunhXeY2vgL0yoJ0v9pmEcs6ev7o+MzoNBOIpybpFPc5KYf1KwYyZ3dGH9PEdkN+ 3WJesoLb9XbxhXffapm1uihJRG/CsiszEl08qXHcJyOOulxXXcw8k+XfwUp2qNijlKaQ nGF70rn6fn78QGvdnTsZ2yHA691+rV3tv/C7NUm8xkOBVzJsq4rY2fu/kuHuOFqVkYM6 DvD1zfTcoF97k+iKD6jNuIrEsUhFguYeE51iv4GhbJAtfM6oXIRMDYnBb9GjBIeUde0d dmyD7D754mVEfniIjkNXXFvHB4KpeMG6b8KSJy8W4Im9DjC7ZhIMfsI59E8+HxTXWe32 eN8w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qx22si847323ejb.148.2020.07.15.02.10.49; Wed, 15 Jul 2020 02:11:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730240AbgGOIfo (ORCPT + 99 others); Wed, 15 Jul 2020 04:35:44 -0400 Received: from mga02.intel.com ([134.134.136.20]:19841 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729192AbgGOIfn (ORCPT ); Wed, 15 Jul 2020 04:35:43 -0400 IronPort-SDR: EjSidi9PFwBEqBOegvAGd8+vAoSfnYhIRlN3ZwzT3ASs3RCJ/n2SmC5Iwmm2jlNGaw34CaHKg0 TaunBsvrGUIQ== X-IronPort-AV: E=McAfee;i="6000,8403,9682"; a="137234837" X-IronPort-AV: E=Sophos;i="5.75,354,1589266800"; d="scan'208";a="137234837" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jul 2020 01:35:43 -0700 IronPort-SDR: wom4Vga3jcrql6t16qwoyNREtupcp1VXNFk8PTdDNTWT21FlEY3nuBl3p7s93G5W0Or1lhgm1D gc5c3v+2bDrQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,354,1589266800"; d="scan'208";a="459992091" Received: from yren3-mobl.ccr.corp.intel.com ([10.249.174.224]) by orsmga005.jf.intel.com with ESMTP; 15 Jul 2020 01:35:40 -0700 Message-ID: Subject: Re: [RFC PATCH 4/4] thermal: Modify thermal governors to do nothing for "cold" trip points From: Zhang Rui To: Thara Gopinath , daniel.lezcano@linaro.org, robh+dt@kernel.org Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Date: Wed, 15 Jul 2020 16:35:39 +0800 In-Reply-To: <20200710135154.181454-5-thara.gopinath@linaro.org> References: <20200710135154.181454-1-thara.gopinath@linaro.org> <20200710135154.181454-5-thara.gopinath@linaro.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2020-07-10 at 09:51 -0400, Thara Gopinath wrote: > For now, thermal governors do not support monitoring of falling > temperature. Hence, in case of calls to the governor for trip points > marked > as cold, return doing nothing. > > Signed-off-by: Thara Gopinath > --- > drivers/thermal/gov_bang_bang.c | 8 ++++++++ > drivers/thermal/gov_fair_share.c | 8 ++++++++ > drivers/thermal/gov_power_allocator.c | 8 ++++++++ > drivers/thermal/gov_step_wise.c | 8 ++++++++ > 4 files changed, 32 insertions(+) userspace governor does not support cold trip point neither. So how about adding the check in handle_non_critical_trips first, and remove the check later, after all the governors support cold trip? thanks, rui > > diff --git a/drivers/thermal/gov_bang_bang.c > b/drivers/thermal/gov_bang_bang.c > index 991a1c54296d..8324d13de1e7 100644 > --- a/drivers/thermal/gov_bang_bang.c > +++ b/drivers/thermal/gov_bang_bang.c > @@ -99,6 +99,14 @@ static void thermal_zone_trip_update(struct > thermal_zone_device *tz, int trip) > static int bang_bang_control(struct thermal_zone_device *tz, int > trip) > { > struct thermal_instance *instance; > + enum thermal_trip_type trip_type; > + > + /* Return doing nothing in case of cold trip point */ > + if (trip != THERMAL_TRIPS_NONE) { > + tz->ops->get_trip_type(tz, trip, &trip_type); > + if (trip_type == THERMAL_TRIP_COLD) > + return 0; > + } > > thermal_zone_trip_update(tz, trip); > > diff --git a/drivers/thermal/gov_fair_share.c > b/drivers/thermal/gov_fair_share.c > index aaa07180ab48..c0adce525faa 100644 > --- a/drivers/thermal/gov_fair_share.c > +++ b/drivers/thermal/gov_fair_share.c > @@ -81,6 +81,14 @@ static int fair_share_throttle(struct > thermal_zone_device *tz, int trip) > int total_weight = 0; > int total_instance = 0; > int cur_trip_level = get_trip_level(tz); > + enum thermal_trip_type trip_type; > + > + /* Return doing nothing in case of cold trip point */ > + if (trip != THERMAL_TRIPS_NONE) { > + tz->ops->get_trip_type(tz, trip, &trip_type); > + if (trip_type == THERMAL_TRIP_COLD) > + return 0; > + } > > list_for_each_entry(instance, &tz->thermal_instances, tz_node) > { > if (instance->trip != trip) > diff --git a/drivers/thermal/gov_power_allocator.c > b/drivers/thermal/gov_power_allocator.c > index 44636475b2a3..2644ad4d4032 100644 > --- a/drivers/thermal/gov_power_allocator.c > +++ b/drivers/thermal/gov_power_allocator.c > @@ -613,8 +613,16 @@ static int power_allocator_throttle(struct > thermal_zone_device *tz, int trip) > { > int ret; > int switch_on_temp, control_temp; > + enum thermal_trip_type trip_type; > struct power_allocator_params *params = tz->governor_data; > > + /* Return doing nothing in case of cold trip point */ > + if (trip != THERMAL_TRIPS_NONE) { > + tz->ops->get_trip_type(tz, trip, &trip_type); > + if (trip_type == THERMAL_TRIP_COLD) > + return 0; > + } > + > /* > * We get called for every trip point but we only need to do > * our calculations once > diff --git a/drivers/thermal/gov_step_wise.c > b/drivers/thermal/gov_step_wise.c > index 2ae7198d3067..009aefda0441 100644 > --- a/drivers/thermal/gov_step_wise.c > +++ b/drivers/thermal/gov_step_wise.c > @@ -186,6 +186,14 @@ static void thermal_zone_trip_update(struct > thermal_zone_device *tz, int trip) > static int step_wise_throttle(struct thermal_zone_device *tz, int > trip) > { > struct thermal_instance *instance; > + enum thermal_trip_type trip_type; > + > + /* For now, return doing nothing in case of cold trip point */ > + if (trip != THERMAL_TRIPS_NONE) { > + tz->ops->get_trip_type(tz, trip, &trip_type); > + if (trip_type == THERMAL_TRIP_COLD) > + return 0; > + } > > thermal_zone_trip_update(tz, trip); >