From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B0CCC2BB1D for ; Tue, 14 Apr 2020 22:14:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4B2B020767 for ; Tue, 14 Apr 2020 22:14:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="qabW9Cws" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733015AbgDNWO4 (ORCPT ); Tue, 14 Apr 2020 18:14:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728338AbgDNWOz (ORCPT ); Tue, 14 Apr 2020 18:14:55 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A17ACC061A0E for ; Tue, 14 Apr 2020 15:14:54 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id k11so15817543wrp.5 for ; Tue, 14 Apr 2020 15:14:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=tFNbkDDuu+xJJGMOQnSsTSZToEf+DrCp0hBRrSm4NEc=; b=qabW9Cwsrm5flCJViset/DUU4XAV92iY6uYTR6CKgMWINRrDE/p0FdK2jJYOTZGz+/ s7esIJSyksYapk5/fn6o0kQ6QRp0KX+QMW66qQvkBQ321UC34lorcDk1XNHw9XKLl4sn Van8EM9t8zDbWrbFSGieU/bvQFG4SG7dKeGOGtTc4P1ZhF99ggZrLcsQm+hS+o5GYs7y HaRMSFJD3RGWsF683rGYkcbQOUo4/wYjoAOfk4jrsHcsH8OZOojhBUoAvY1OlwRaXLoL P5tjnf86p6ZwIpdaDB7apkv1IHWCqfM8M8CYXECtoj4tIYqk6jV/clruQ0aO0t1jf6qX yELg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=tFNbkDDuu+xJJGMOQnSsTSZToEf+DrCp0hBRrSm4NEc=; b=jTLSc8JjwL4Yo+aOemhVDcxlRML6h4nLC0F8RUpn73NPZinjKwgn9QBFVZYcW9vwW8 a2N/bEp942tGB1jtfvgqxBZQWguPSslakwAP+S4iPplM1VLf16NsmWdK0UGFfv6RCHFn jWQkmZV+WsVxqkAkRBVkwTtW+u++xs7a6QMvAVMZAZrhSBRXQkKYYFHeG9+fyqcujBBW w+FuBp3ZX7+61Fl0Rot1ZelrZok/DpI3GveTDnw5UpkC5MkU7/76KQtGW661NK6LaobW QBh6gI9zd4hJFGqQUosufKj3St+JcZdnJ3wNpywObxnpmioOICkW7x1YoPQuRA0q6t/N a/zw== X-Gm-Message-State: AGi0PuaYYaqpFn6N0LINczJQFIXwvaSj75r+riCdbot69ochc1/KUZwH 0RAiHaPyWH9tWOkt8bjwtUI84w== X-Google-Smtp-Source: APiQypJCM7RZYbnn05d5p3O23E+0h2bnGY34lOEUBW3XV9QKLjxerTTj5VEgsJydss45wo2Ye1GFqg== X-Received: by 2002:adf:fc4c:: with SMTP id e12mr25646050wrs.265.1586902493086; Tue, 14 Apr 2020 15:14:53 -0700 (PDT) Received: from [192.168.0.41] (lns-bzn-59-82-252-135-148.adsl.proxad.net. [82.252.135.148]) by smtp.googlemail.com with ESMTPSA id k184sm20036949wmf.9.2020.04.14.15.14.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Apr 2020 15:14:52 -0700 (PDT) Subject: Re: [RFC v2 3/9] thermal: Properly handle mode values in .set_mode() To: Andrzej Pietrasiewicz , linux-pm@vger.kernel.org Cc: Zhang Rui , "Rafael J . Wysocki" , Len Brown , Jiri Pirko , Ido Schimmel , "David S . Miller" , Peter Kaestle , Darren Hart , Andy Shevchenko , Support Opensource , Amit Kucheria , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Allison Randal , Enrico Weigelt , Gayatri Kammela , Thomas Gleixner , linux-acpi@vger.kernel.org, netdev@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com References: <2bc5a902-acde-526a-11a5-2357d899916c@linaro.org> <20200414180105.20042-1-andrzej.p@collabora.com> <20200414180105.20042-4-andrzej.p@collabora.com> From: Daniel Lezcano Message-ID: Date: Wed, 15 Apr 2020 00:14:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <20200414180105.20042-4-andrzej.p@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Hi Andrzej, you can drop this patch. It is not useful as the caller checks the correctness of the values in the patch 4/9. Moreover the patch is bogus because it returns before releasing the lock. On 14/04/2020 20:00, Andrzej Pietrasiewicz wrote: > Allow only THERMAL_DEVICE_ENABLED and THERMAL_DEVICE_DISABLED as valid > states to transition to. > Signed-off-by: Andrzej Pietrasiewicz > --- > drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 8 ++++++-- > drivers/platform/x86/acerhdf.c | 4 ++++ > drivers/thermal/imx_thermal.c | 4 +++- > drivers/thermal/intel/intel_quark_dts_thermal.c | 5 ++++- > drivers/thermal/of-thermal.c | 4 +++- > 5 files changed, 20 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c > index ce0a6837daa3..cd435ca7adbe 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c > @@ -296,8 +296,10 @@ static int mlxsw_thermal_set_mode(struct thermal_zone_device *tzdev, > > if (mode == THERMAL_DEVICE_ENABLED) > tzdev->polling_delay = thermal->polling_delay; > - else > + else if (mode == THERMAL_DEVICE_DISABLED) > tzdev->polling_delay = 0; > + else > + return -EINVAL; > > mutex_unlock(&tzdev->lock); > > @@ -486,8 +488,10 @@ static int mlxsw_thermal_module_mode_set(struct thermal_zone_device *tzdev, > > if (mode == THERMAL_DEVICE_ENABLED) > tzdev->polling_delay = thermal->polling_delay; > - else > + else if (mode == THERMAL_DEVICE_DISABLED) > tzdev->polling_delay = 0; > + else > + return -EINVAL; > > mutex_unlock(&tzdev->lock); > > diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c > index 8cc86f4e3ac1..d5188c1d688b 100644 > --- a/drivers/platform/x86/acerhdf.c > +++ b/drivers/platform/x86/acerhdf.c > @@ -431,6 +431,10 @@ static int acerhdf_get_mode(struct thermal_zone_device *thermal, > static int acerhdf_set_mode(struct thermal_zone_device *thermal, > enum thermal_device_mode mode) > { > + if (mode != THERMAL_DEVICE_DISABLED && > + mode != THERMAL_DEVICE_ENABLED) > + return -EINVAL; > + > if (mode == THERMAL_DEVICE_DISABLED && kernelmode) > acerhdf_revert_to_bios_mode(); > else if (mode == THERMAL_DEVICE_ENABLED && !kernelmode) > diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c > index e761c9b42217..36b1924f1938 100644 > --- a/drivers/thermal/imx_thermal.c > +++ b/drivers/thermal/imx_thermal.c > @@ -361,7 +361,7 @@ static int imx_set_mode(struct thermal_zone_device *tz, > data->irq_enabled = true; > enable_irq(data->irq); > } > - } else { > + } else if (mode == THERMAL_DEVICE_DISABLED) { > regmap_write(map, soc_data->sensor_ctrl + REG_CLR, > soc_data->measure_temp_mask); > regmap_write(map, soc_data->sensor_ctrl + REG_SET, > @@ -374,6 +374,8 @@ static int imx_set_mode(struct thermal_zone_device *tz, > disable_irq(data->irq); > data->irq_enabled = false; > } > + } else { > + return -EINVAL; > } > > data->mode = mode; > diff --git a/drivers/thermal/intel/intel_quark_dts_thermal.c b/drivers/thermal/intel/intel_quark_dts_thermal.c > index d704fc104cfd..11d7db895125 100644 > --- a/drivers/thermal/intel/intel_quark_dts_thermal.c > +++ b/drivers/thermal/intel/intel_quark_dts_thermal.c > @@ -325,8 +325,11 @@ static int sys_set_mode(struct thermal_zone_device *tzd, > mutex_lock(&dts_update_mutex); > if (mode == THERMAL_DEVICE_ENABLED) > ret = soc_dts_enable(tzd); > - else > + else if (mode == THERMAL_DEVICE_DISABLED) > ret = soc_dts_disable(tzd); > + else > + return -EINVAL; > + > mutex_unlock(&dts_update_mutex); > > return ret; > diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c > index 874a47d6923f..36bebf623980 100644 > --- a/drivers/thermal/of-thermal.c > +++ b/drivers/thermal/of-thermal.c > @@ -289,9 +289,11 @@ static int of_thermal_set_mode(struct thermal_zone_device *tz, > if (mode == THERMAL_DEVICE_ENABLED) { > tz->polling_delay = data->polling_delay; > tz->passive_delay = data->passive_delay; > - } else { > + } else if (mode == THERMAL_DEVICE_DISABLED) { > tz->polling_delay = 0; > tz->passive_delay = 0; > + } else { > + return -EINVAL; > } > > mutex_unlock(&tz->lock); > -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog