Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp817705rwr; Wed, 26 Apr 2023 06:49:26 -0700 (PDT) X-Google-Smtp-Source: AKy350ZEO0O9oCLmFi8qFSk+bSvj3pOoR2V6sFfvLRsUwmrK7R84Iw9Ue7fapmHwELf8p7eJYwV0 X-Received: by 2002:a05:6a20:4426:b0:f4:ec49:b831 with SMTP id ce38-20020a056a20442600b000f4ec49b831mr14555416pzb.2.1682516965537; Wed, 26 Apr 2023 06:49:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682516965; cv=none; d=google.com; s=arc-20160816; b=Y3IwbGvxCVt/EmQ/h0Av4cFq5CFK7qIg5U7biFPbYc23Pbs96NoMpG6Q6Wj8olW0BS PXxki+j4wekivx/Y1D9QHzdg1JQ7FqOGaWfds9xo/RS1BXs7GrkPcfE+R8gcI4gRNBiQ qL89tvMEqI9BODkNuO1LmiU0KFlPYD6DUhmy9znsmkRKBGUOeCt3K1Oj9YZvhuERYfRc Pcya3nHl34BThD9YvhkkHDqGTmk2BWOL1x4ojKvxO0EXmfc/SbZuOMRi8WdHzKE+s7oD 9DsddTciOvcJjVxVjWpRe5ayzEd6RsWZdPjPAfGtQiT8AawGYqpN+1RDUbAH/2wsDIXo s4XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:ui-outboundreport:content-transfer-encoding :subject:from:cc:to:content-language:user-agent:mime-version:date :message-id; bh=znb4PYCQu8FxqlWY/2jc5A3mTCIHouReZ2rci7UUd0Y=; b=gJ3h2Sr3K6sjSn+josbEFMeDCmcVDLSdwC301j9x25qOeQ4R3JqzoeQ+Se2pmhMhWH 9wFl8HQew3TqlSav3y5iyR28ftDXganV0TwC8eOF6VgJBDTpOnGFiF+Ubk/fOd3NfTpY b1+wpxiHbGAQlPlAxfU4DI6IPYCdnPeJNSl9UjG4Pa6lub4AZfjWTJhCfVmZm6A3VU+l CdEBMmC+GFYoqvr/rR6CUuDiIfaP+ujWhF7o7Ft5P4SBm/KkdMTFSIpy/mXvb5nsq6oJ bUmP8/QWJpPcANs1h96wIdKIdQG3NF9k/fQyaFbCMLmtyLc6kN5IK0s2MwmP0SkpZHuN GW8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w17-20020a63d751000000b0051b930ef846si16034412pgi.141.2023.04.26.06.49.13; Wed, 26 Apr 2023 06:49:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241036AbjDZNoy (ORCPT + 99 others); Wed, 26 Apr 2023 09:44:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229744AbjDZNom (ORCPT ); Wed, 26 Apr 2023 09:44:42 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 080246A6F for ; Wed, 26 Apr 2023 06:44:40 -0700 (PDT) Received: from [192.168.1.141] ([37.4.248.58]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MYe6H-1pnavA34xn-00Vh0J; Wed, 26 Apr 2023 15:39:15 +0200 Message-ID: Date: Wed, 26 Apr 2023 15:39:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Content-Language: en-US To: Krzysztof Kozlowski , Akira Shimahara Cc: Linux Kernel Mailing List , Greg Kroah-Hartman , Stefan Wahren , regressions@lists.linux.dev From: Stefan Wahren Subject: Regression: w1_therm: sysfs w1_slave sometimes report 85 degrees Celsius Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:9+Vlw4+jn2N/v7j0vxMPWLyDRwGYp+CO/tXiR5tccEMsaSaH5aQ R9ecZ1Xs+q6sHX62lwerzUDDiNhj845FifgwpOZ1VJgSWCou2fvSfNe7+JpFVLNF1L0zSiD i2ZYBeApV27GGz95hWR/h2Hyj4YRG/zqPKVEEpmwjSV90jkFKMsB9LYvk6y7a3NmVh/4tX+ +emoW4k2Y2WPqYNZ+5nCw== UI-OutboundReport: notjunk:1;M01:P0:nk+SJ3Skr2A=;+cogvs2GoIuI9QE3rGVaSUzEYdT xrXADDJ/vaBxtZU4/iha4mOp4R4x04VC3Lhb9zw9hWbNgFtjFIAMGrcGfNndJbQrOk3I6sOWW h87w+0Xc7dFH+9FroUdFW1kS78tKyNnsUFuEC4VonnHwIbr6RtlDPd6KKEpZIPqRQ/jBBg/kS UYZkyedrO950gJevgliU73Wa4cwdgF1/rgiFC7lLHaHeaSE+9guiwWA6OWE/3QxuQZY2vYtcm kqJlB58C1NQxyAaMMn5dD8UT6YTXyk+3N24312z345S2Lf605UTlszZDw11yywO+gy3zDrJxO EjSxExsk2xct3MqHShIq5DiLjxoCRlKqO9u/dHv1YZrbts8/YK8FUFQWDOu3LV3t0R1UZy/Lm 4TEytn5KT8CQCa8UFcMng+oyVjON411FtvVxiGOdfDc67T5KH0tGwaZs/z7c4ijnuQoc2QQSv aN6to0E7oviT4W5lXiYS/vlO/Bi4jYx7aFYaPDnglAyS8Rb3R+QJAjUQasr2UzAyesn9+HZfw fBdI0a9lwDLK9XAZQuy5XLiUOpB4mt6UI/zuIRUYj5ZryMmPiPd3+AcXld5gj+RXuNpxeXJ5d vFsTGR3H7/hPcRVMDYgV8lZF8Sy0hgeuDm2tQ079KeVcsBmAb6GHi9zE5dz7ixFjvzt5ag5yf WgGHAv5viGZWYsih8XXXQouA7/9wOJqFRA6Iy360pw== X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, recently we switch on our Tarragon board (i.MX6ULL) to Linux 6.1 and noticed that the connected 1-wire temperature sensors (w1_therm.w1_strong_pull=0) sometimes (~ 1 of 20 times) report 85 degrees Celsius, which is AFAIK the only way to report errors to the 1-wire master: sys/bus/w1/devices/28-04168158faff# cat w1_slave 50 05 4b 46 7f ff 0c 10 1c : crc=1c YES 50 05 4b 46 7f ff 0c 10 1c t=85000 I wasn't able to reproduce this issue with the old kernel 4.9. After that i successfully bisected the issue to this commit: 67b392f7b8ed ("w1_therm: optimizing temperature read timings") Unfortunately this commit contains a lot of independent changes, which makes it hard to figured out the cause of this issue. So i tried to split this patch in seven independent changes [1]. Now i was able to bisect the cause further to this change [2] which seems to rework the pullup handling within read_therm(). Looking closer at the code change and verify it some debug messages, the change inverted the locking behavior (before: no pullup -> keep lock, after: no pullup -> release lock during sleep). Before: if (external_power) { mutex_unlock(&dev_master->bus_mutex); sleep_rem = msleep_interruptible(tm); if (sleep_rem != 0) { ret = -EINTR; goto dec_refcnt; } ret = mutex_lock_interruptible(&dev_master->bus_mutex); if (ret != 0) goto dec_refcnt; } else if (!w1_strong_pullup) { sleep_rem = msleep_interruptible(tm); if (sleep_rem != 0) { ret = -EINTR; goto mt_unlock; } } After: if (strong_pullup) { /*some device need pullup */ sleep_rem = msleep_interruptible(tm); if (sleep_rem != 0) { ret = -EINTR; goto mt_unlock; } } else { /*no device need pullup */ mutex_unlock(&dev_master->bus_mutex); sleep_rem = msleep_interruptible(tm); if (sleep_rem != 0) { ret = -EINTR; goto dec_refcnt; } ret = mutex_lock_interruptible(&dev_master->bus_mutex); if (ret != 0) goto dec_refcnt; } I don't believe this is intended. After inverting the strong_pullup check, the issue wasn't reproducible on our platform anymore. But i'm not sure this is clean. Best regards #regzbot introduced: 67b392f7b8ed [1] - https://github.com/chargebyte/linux/commits/v6.1-tarragon_w1 [2] - https://github.com/chargebyte/linux/commit/17ca863a32a6a1bdd376959f05c954bef12fc1b5