Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp3954261ybx; Mon, 4 Nov 2019 05:34:12 -0800 (PST) X-Google-Smtp-Source: APXvYqzFTH79RqAHbu0CeYhD1XAJCvDTnk/K4Rq5/wRTBsGbI5C734gjPnIU9cl3YSJIrYfHjege X-Received: by 2002:a50:fc1a:: with SMTP id i26mr2471733edr.9.1572874452687; Mon, 04 Nov 2019 05:34:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572874452; cv=none; d=google.com; s=arc-20160816; b=K22hzJPK0H8pyABPqlV8aELTjk3bTTsGxBzngmwWr2I7nr8VzPPLP/b8KoSqRYNEOK BnzW7C2KGSs3H5/sCqRnf4D/ELhNAz4gi+n0ny4tSJrbSLPQsQFCV0zbv8wHI6eoA1XQ gLakjxSf8KqL3z5DdklmW87i+kzEFEhhACsNgCflwvH567L3mmjtdm5bGcnwstFwQJiF 5bmCxQTPlQC5R/zrXVvQK64jWYKJXRoD7p9006uoHzgQ11hLn1vKILOgLU370oKNNFOA O2ZZwm6nZCS+74EbAxPhHdku4jvHb+N7/U9a5jDjOo+lVEWfE2Tr/LHOGquLipj+YRY4 utfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:to:from:dkim-signature; bh=HvQIh1/ibvktD1tZoDncL55wuWS1ZeX9ziVeLdmOO2Q=; b=zwJ22jGFuVGTkTQHswrHls8VidMRCcMhau/ykarr02LBXL7uG4McBhUivysh2retLj /JqHZQt5n9i8TMNnO9/GI1C/OJEgBRZNTU2dkQQTdt045RPcOjK3GXwrOySPE3KK5kcI xA6xhSgSWF1NNsVjRnHxpxX3FGoUL/nBywMxUkfhGKe7muKjap/9O5JhJqVgXXZcuqtq YzqDDzwTHk3dezXrfIoM5JJYkSYHCBD8vv0SUheE94ZQm3DZsOnfYCj3V7zLaxJStYyH KUKmiE9CKXkHkWAxqMDGVKXZpTvYOU4FW/NtaVTBVOrqBO+hLCmBVrNuBzgOIdQGaMme saOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=G+0uRnUZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id cc4si6579572edb.237.2019.11.04.05.33.49; Mon, 04 Nov 2019 05:34:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=G+0uRnUZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729341AbfKDNbD (ORCPT + 99 others); Mon, 4 Nov 2019 08:31:03 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:27212 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728783AbfKDNax (ORCPT ); Mon, 4 Nov 2019 08:30:53 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xA4DHO6w008716; Mon, 4 Nov 2019 14:30:27 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=HvQIh1/ibvktD1tZoDncL55wuWS1ZeX9ziVeLdmOO2Q=; b=G+0uRnUZXqEzuJC6YvVUy9xMCU77kKVy9DPCscoEZJ/uTQAp8Nuy4oE9GIieVN3PZ4x+ tanqLkuqMwWFnva/v87XrD9QQ8PZo/UEWFKvrz65wRNpWb8d5PyeOsExwyRov/tuRQRQ Bq5cevaFHYrEZqTKObUd18OHCSKaRQlMZxWkJF/NKN+Amo34BFE/V3yG1HhVCbJ1svfl W1K6+DhlFiWbfDuNaOtuTAivIrAWv7ewfdRUeDsXaKtGkfQBE+G6n+XqWVlEuL/y3vJm YH6FPR+LB/ULMVDPio66uIktYsK97+ToLTytZQRH/KnYbdxE5VGd4wqZ7mEWKebxRy4F FA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2w1054hnty-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 04 Nov 2019 14:30:27 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9044010003E; Mon, 4 Nov 2019 14:30:26 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 8221D2D379E; Mon, 4 Nov 2019 14:30:26 +0100 (CET) Received: from localhost (10.75.127.51) by SFHDAG6NODE2.st.com (10.75.127.17) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 4 Nov 2019 14:30:25 +0100 From: Pascal Paillet To: , , , , , , , , , , , , , Subject: [PATCH v2 5/5] thermal: stm32: fix low threshold interrupt flood Date: Mon, 4 Nov 2019 14:30:20 +0100 Message-ID: <20191104133020.8820-6-p.paillet@st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191104133020.8820-1-p.paillet@st.com> References: <20191104133020.8820-1-p.paillet@st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG1NODE2.st.com (10.75.127.2) To SFHDAG6NODE2.st.com (10.75.127.17) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-11-04_08:2019-11-04,2019-11-04 signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With the STM32 thermal peripheral, it is not possible to dump the temperature that has caused the interrupt. When the temperature reaches the low threshold, we generally read a temperature that is a little bit higher than the low threshold. This maybe due to sampling precision, and also because the CPU becomes hotter when it quits WFI mode. In that case, the framework does not change the trip points. This leads to a lot of low threshold interrupts. The fix is to set the low threshold value 0.5 degrees Celsius below the actual request. The problem is not so frequent with the high threshold and it would no be a good idea to set the threshold value higher than the request. Signed-off-by: Pascal Paillet --- drivers/thermal/st/stm_thermal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/st/stm_thermal.c b/drivers/thermal/st/stm_thermal.c index 9986716b17c1..f7168762fbde 100644 --- a/drivers/thermal/st/stm_thermal.c +++ b/drivers/thermal/st/stm_thermal.c @@ -324,7 +324,8 @@ static int stm_thermal_set_trips(void *data, int low, int high) if (low > -INT_MAX) { sensor->low_temp_enabled = 1; - ret = stm_thermal_calculate_threshold(sensor, low, &th); + /* add 0.5 of hysteresis due to measurement error */ + ret = stm_thermal_calculate_threshold(sensor, low - 500, &th); if (ret) return ret; -- 2.17.1