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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EAD6EC5DF7D for ; Fri, 21 Aug 2026 08:01:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=/Hey5NAx37pmUNC4t/q+l+sEEHMNuhnp+wAcD4AsjHM=; b=ZmVDEar5Wu9JaR TLj5MydKctI+c6dQe/sbWa7A2uxHJ+XiNQMIviqU7CEGypcrqv4iLHD/x87wREXv6LiM8InNn3rN5 mwx8YMG6nKnGlzxTdDl0VYU/eNiUE0eNkcG6d4mLqSnB0T5soU2aHvXTQHMZO8pws+tgvIQg5Kmmf TywwxjPnl1qd+w2WjygfkQGLG5KrXrnXOe2nB8cbDY6awX6IWCzg8iHdAK3pB6y4pKN8hsKgdLfJ4 YDcv7iHgR1CxYpR3JelzM+P2rbq0XIeCEzzmjnNjY1uLdcOrp067yju+/nzNtCiGwhOuIy/+l0b1U FO/TK1++vFEObnTwrq/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wxKC1-0000000ClBM-30Gv; Fri, 21 Aug 2026 08:01:37 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wxKC0-0000000ClBE-18By for linux-amlogic@lists.infradead.org; Fri, 21 Aug 2026 08:01:36 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 6D44A60A73; Fri, 21 Aug 2026 08:01:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCE241F000E9; Fri, 21 Aug 2026 08:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787299295; bh=Wxcfc0Xy+0drgrEfKuXXYeAtb2OXgOmyhpjt81d2okI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=ZrTP+2bNOiUrsEVTMdW45IA+9R18eHAmU7kanVrTAU3pbv/3ZgYFHhHr9VMT64nG+ saahe01bwVOKrrX+/fL+9MAaPWFIiW7WyQ5jQD1fGXeOeXiJ6GsS/mL68O8CAgdgX1 4x4+4vEYxt/T95h2iH1Y30+jNKuqtMJsGgA//CHdz/ZHQDHTujoAQEUMXZ3cXbu9Km ylgdozUxDSDK/mR8HrwO46tuvbicJwC3TILDgaDq2X34U5bWsdNAWKtSa14voWwFjZ 9GE96QTkjOVbvxatmyj8ZePyKpd2zcPVTNE1d6i8A0GeSTcz5wuxBtUnBN0tyIjwzJ +skQWZVJVgmTg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 2/2] thermal: amlogic: Add support for A9 thermal controller To: "Xianwei Zhao" Cc: linux-amlogic@lists.infradead.org, conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org In-Reply-To: <20260821-a9-thermal-v3-2-0e7abf3941e3@amlogic.com> References: <20260821-a9-thermal-v3-0-0e7abf3941e3@amlogic.com> <20260821-a9-thermal-v3-2-0e7abf3941e3@amlogic.com> Date: Fri, 21 Aug 2026 08:01:34 +0000 Message-Id: <20260821080134.CCE241F000E9@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtDcml0aWNh bF0gSGFyZHdhcmUgcmVzZXQgcmVnaXN0ZXJzIGFyZSB1bmNvbmRpdGlvbmFsbHkgYWNjZXNzZWQg YmVmb3JlIHRoZSBwZXJpcGhlcmFsIGNsb2NrIGlzIGVuYWJsZWQsIGNhdXNpbmcgYSBidXMgZmF1 bHQgb3Igc3lzdGVtIGhhbmcgb24gbGVnYWN5IFNvQ3MuCi0gW0hpZ2hdIFRoZSBoYXJkd2FyZSBv dmVyLXRlbXBlcmF0dXJlIHJlc2V0IG1lY2hhbmlzbSBpcyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxl ZCBmb3IgYWxsIFNvQ3MsIGNvbnRyYWRpY3RpbmcgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBwb3Rl bnRpYWxseSBjYXVzaW5nIHVuZGVmaW5lZCBiZWhhdmlvciBvbiB1bnN1cHBvcnRlZCBwbGF0Zm9y bXMuCi0gW0hpZ2hdIFRoZSByZXR1cm4gdmFsdWUgb2YgYGNsa19wcmVwYXJlX2VuYWJsZSgpYCBm b3IgYHN5c2Nsa2AgaXMgaWdub3JlZCBpbiBgYW1sb2dpY190aGVybWFsX3Jlc3VtZSgpYCwgcG90 ZW50aWFsbHkgbGVhZGluZyB0byB1bmNsb2NrZWQgaGFyZHdhcmUgYWNjZXNzZXMgYW5kIGNsb2Nr IHN0YXRlIGxlYWtzLgotIFtIaWdoXSBUaGUgZmFsbGJhY2sgbG9naWMgZm9yIGEgemVybyBkaXZp c29yIChgIXVwdGF0YCkgaW4gdGVtcGVyYXR1cmUgY2FsY3VsYXRpb24gcHJvZHVjZXMgYSBjb2Rl IHRoYXQgb3ZlcmZsb3dzIHRoZSAxMi1iaXQgaGFyZHdhcmUgcmVnaXN0ZXIgbWFzaywgc2lsZW50 bHkgc2V0dGluZyB0aGUgcmVib290IHRocmVzaG9sZCB0byAwLgoKUHJlLWV4aXN0aW5nIGlzc3Vl czoKLSBbSGlnaF0gVGhlIGNhbGN1bGF0aW9uIG9mIGB1ZWZ1c2VgIGluY29ycmVjdGx5IHplcm8t ZXh0ZW5kcyBhIDMyLWJpdCBiaXR3aXNlIE5PVCByZXN1bHQgb24gMzItYml0IHBsYXRmb3Jtcywg dHVybmluZyBhIG5lZ2F0aXZlIGNhbGlicmF0aW9uIG9mZnNldCBpbnRvIGEgbWFzc2l2ZSBwb3Np dGl2ZSB2YWx1ZS4KLSBbSGlnaF0gVGhlIHRoZXJtYWwgem9uZSBhbmQgaHdtb24gc3lzZnMgaW50 ZXJmYWNlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgYW5kIHRoZSB0aGVybWFsIGNvcmUgYmVm b3JlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlcywgYWxsb3dpbmcgdW5jbG9ja2Vk IHJlZ2lzdGVyIGFjY2Vzc2VzLgotLQoKLS0tIFBhdGNoIFsyXTogW1BBVENIIHYzIDIvMl0gdGhl cm1hbDogYW1sb2dpYzogQWRkIHN1cHBvcnQgZm9yIEE5IHRoZXJtYWwgY29udHJvbGxlciAtLS0K Y29tbWl0IGE5NWYzNGQzNjZjN2NhMWM2NWNlNWFlYzZlODY2ODhjMDBhOTkwYTgKQXV0aG9yOiBY aWFud2VpIFpoYW8gPHhpYW53ZWkuemhhb0BhbWxvZ2ljLmNvbT4KCnRoZXJtYWw6IGFtbG9naWM6 IEFkZCBzdXBwb3J0IGZvciBBOSB0aGVybWFsIGNvbnRyb2xsZXIKICAgIApBZGQgc3VwcG9ydCBm b3IgdGhlIEFtbG9naWMgQTkgdGhlcm1hbCBjb250cm9sbGVyLiBUaGUgQTkgdGhlcm1hbCBjb250 cm9sbGVyCnVzZXMgZGlmZmVyZW50IGNhbGlicmF0aW9uIHBhcmFtZXRlcnMsIHJlcXVpcmVzIHNl cGFyYXRlIGNvcmUgYW5kIGJ1cyBjbG9ja3MsCmFuZCBzdXBwb3J0cyBhIGhhcmR3YXJlIG92ZXIt dGVtcGVyYXR1cmUgcmVzZXQgbWVjaGFuaXNtLCBhbmQgcmVzdG9yZSB0aGUKaGFyZHdhcmUgcmVz ZXQgY29uZmlndXJhdGlvbiBhZnRlciByZXN1bWUuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Ro ZXJtYWwvYW1sb2dpY190aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwvYW1sb2dpY190aGVybWFs LmMKPiBpbmRleCBhMGI1MzA2MjRiNjBjLi5mZjhhOGIxNTI1MzY3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdGhlcm1hbC9hbWxvZ2ljX3RoZXJtYWwuYwo+ICsrKyBiL2RyaXZlcnMvdGhlcm1hbC9h bWxvZ2ljX3RoZXJtYWwuYwoKWyAuLi4gXQoKPiBAQCAtMTM4LDYgKzE1Nyw0OSBAQCBzdGF0aWMg aW50IGFtbG9naWNfdGhlcm1hbF9jb2RlX3RvX21pbGxpY2Vsc2l1cyhzdHJ1Y3QgYW1sb2dpY190 aGVybWFsICpwZGF0YSwKPiAgCXJldHVybiB0ZW1wOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBDYWxj dWxhdGUgYSB0ZW1wZXJhdHVyZSBjb2RlIGZyb20gYSB0ZW1wZXJhdHVyZSB2YWx1ZSAuCj4gKyAq IFRoZSB1bml0IG9mIHRoZSB0ZW1wZXJhdHVyZSBpcyBkZWdyZWUgbWlsbGlDZWxzaXVzLgo+ICsg Ki8KPiArc3RhdGljIHUzMiBhbWxvZ2ljX3RoZXJtYWxfbWlsbGljZWxzaXVzX3RvX2NvZGUoc3Ry dWN0IGFtbG9naWNfdGhlcm1hbCAqcGRhdGEsIGludCBtaWxsaWNlbHNpdXMpCj4gK3sKPiArCWNv bnN0IHN0cnVjdCBhbWxvZ2ljX3RoZXJtYWxfc29jX2NhbGliX2RhdGEgKnBhcmFtID0KPiArCQkJ CQlwZGF0YS0+ZGF0YS0+Y2FsaWJyYXRpb25fcGFyYW1ldGVyczsKPiArCXM2NCBmYWN0b3IsIHVw dGF0LCB1ZWZ1c2U7Cj4gKwl1MzIgdGVtcF9jb2RlOwo+ICsKPiArCXVlZnVzZSA9IHBkYXRhLT50 cmltX2luZm8gJiBUU0VOU09SX1RSSU1fU0lHTl9NQVNLID8KPiArCQkJICAgICB+KHBkYXRhLT50 cmltX2luZm8gJiBUU0VOU09SX1RSSU1fVEVNUF9NQVNLKSArIDEgOgo+ICsJCQkgICAgIChwZGF0 YS0+dHJpbV9pbmZvICYgVFNFTlNPUl9UUklNX1RFTVBfTUFTSyk7CgpbU2V2ZXJpdHk6IEhpZ2hd ClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUgdGhhdCB3YXMgY29waWVkIGludG8gdGhpcyBu ZXcgZnVuY3Rpb24sIGJ1dCBkb2VzCnRoaXMgY2FsY3VsYXRpb24gY29ycmVjdGx5IGhhbmRsZSBu ZWdhdGl2ZSBjYWxpYnJhdGlvbiBvZmZzZXRzIG9uIDMyLWJpdApwbGF0Zm9ybXM/CgpUaGUgZXhw cmVzc2lvbiB+KHBkYXRhLT50cmltX2luZm8gJiBUU0VOU09SX1RSSU1fVEVNUF9NQVNLKSArIDEg ZXZhbHVhdGVzIHRvIGEKMzItYml0IHVuc2lnbmVkIGludGVnZXIgc2luY2UgVFNFTlNPUl9UUklN X1RFTVBfTUFTSyBpcyBnZW5lcmF0ZWQgYnkgR0VOTUFTSy4KV2hlbiBhc3NpZ25lZCB0byB0aGUg czY0IHVlZnVzZSB2YXJpYWJsZSwgaXQgaXMgemVyby1leHRlbmRlZCBpbnN0ZWFkIG9mCnNpZ24t ZXh0ZW5kZWQsIHR1cm5pbmcgYSBuZWdhdGl2ZSBvZmZzZXQgaW50byBhIG1hc3NpdmUgcG9zaXRp dmUgdmFsdWUuCgo+ICsKPiArCWZhY3RvciA9IHBhcmFtLT5CICsgZGl2X3M2NChtaWxsaWNlbHNp dXMsIDEwMCk7Cj4gKwlmYWN0b3IgPSBCSVQoMTYpICogZmFjdG9yOwo+ICsJZmFjdG9yID0gZGl2 X3M2NChmYWN0b3IsIHBhcmFtLT5BKTsKPiArCWZhY3RvciA9IGZhY3RvciAtIHVlZnVzZTsKPiAr Cj4gKwl1cHRhdCA9IHBhcmFtLT5uICogZmFjdG9yOwo+ICsJdXB0YXQgPSBkaXZfczY0KHVwdGF0 LCBCSVQoMTYpKTsKPiArCXVwdGF0ID0gcGFyYW0tPm0gLSB1cHRhdDsKPiArCj4gKwlmYWN0b3Ig PSBmYWN0b3IgKiAxMDA7Cj4gKwlpZiAoIXVwdGF0KQo+ICsJCWZhY3RvciA9IFRTRU5TT1JfVEVN UF9NQVNLIDw8IDB4NDsKPiArCWVsc2UKPiArCQlmYWN0b3IgPSBkaXZfczY0KGZhY3RvciwgdXB0 YXQpOwo+ICsKPiArCXRlbXBfY29kZSA9ICgoZmFjdG9yID4+IDB4NCkgJiBUU0VOU09SX1RFTVBf TUFTSykgKyBUU0VOU09SX1RFTVBfQ0FMOwoKW1NldmVyaXR5OiBIaWdoXQpJZiB0aGUgZGl2aXNp b24tYnktemVybyBmYWxsYmFjayAoIXVwdGF0KSB0cmlnZ2VycywgZmFjdG9yIGlzIHNldCB0byAw eEZGRjAuCkRvZXMgdGhpcyByZXN1bHQgaW4gYSB0ZW1wX2NvZGUgb2YgMHgxMDAwIGhlcmUsIHdo aWNoIGV4Y2VlZHMgdGhlIDEyLWJpdApUU0VOU09SX1RFTVBfTUFTSz8KCkxhdGVyIGluIGFtbG9n aWNfdHNlbnNvcl9zZXR1cF9od19yZXNldCgpLCB0aGlzIDB4MTAwMCBpcyBzaGlmdGVkIGxlZnQg YnkgNCB0bwpwcm9kdWNlIDB4MTAwMDAuIFdoZW4gd3JpdHRlbiB0byBUU0VOU09SX0NGR19SRUcy IHdpdGggdGhlIEdFTk1BU0soMTUsIDQpIG1hc2ssCml0IHRydW5jYXRlcyB0byAwLiBDb3VsZCB0 aGlzIGFjY2lkZW50YWxseSBzZXQgdGhlIGhhcmR3YXJlIHJlYm9vdCB0aHJlc2hvbGQgdG8KMCBh bmQgY2F1c2UgYW4gdW5leHBlY3RlZCByZWJvb3Q/Cgo+ICsKPiArCXJldHVybiB0ZW1wX2NvZGU7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGFtbG9naWNfdHNlbnNvcl9zZXR1cF9od19yZXNldChz dHJ1Y3QgYW1sb2dpY190aGVybWFsICpkYXRhKQo+ICt7Cj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMo ZGF0YS0+cmVnbWFwLCBUU0VOU09SX0NGR19SRUcyLCBUU0VOU09SX0NGR19SRUcyX1JFQk9PVF9D T0RFLAo+ICsJCQkgICBkYXRhLT50ZW1wX2NvZGUgPDwgMHg0KTsKPiArCXJlZ21hcF91cGRhdGVf Yml0cyhkYXRhLT5yZWdtYXAsIFRTRU5TT1JfQ0ZHX1JFRzIsCj4gKwkJCSAgIFRTRU5TT1JfQ0ZH X1JFRzJfRU5BQkxFLCBUU0VOU09SX0NGR19SRUcyX0VOQUJMRSk7Cj4gK30KClsgLi4uIF0KCj4g QEAgLTM0Niw2ICs0MzcsMTcgQEAgc3RhdGljIGludCBhbWxvZ2ljX3RoZXJtYWxfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCj4gIAlkZXZtX3RoZXJtYWxfYWRkX2h3bW9u X3N5c2ZzKCZwZGV2LT5kZXYsIHBkYXRhLT50emQpOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlz IGEgcHJlLWV4aXN0aW5nIGlzc3VlLCBidXQgZG9lcyByZWdpc3RlcmluZyB0aGUgdGhlcm1hbCB6 b25lIGFuZCBod21vbgpzeXNmcyBpbnRlcmZhY2VzIGhlcmUgZXhwb3NlIHRoZW0gdG8gdXNlcnNw YWNlIGJlZm9yZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbgpjb21wbGV0ZXM/CgpTaW5jZSBkZXZt X3RoZXJtYWxfb2Zfem9uZV9yZWdpc3RlcigpIGFuZCBkZXZtX3RoZXJtYWxfYWRkX2h3bW9uX3N5 c2ZzKCkgYXJlCmNhbGxlZCBiZWZvcmUgYW1sb2dpY190aGVybWFsX2VuYWJsZSgpIHN0YXJ0cyB0 aGUgZGV2aWNlIGNsb2NrLCBhIHRoZXJtYWwKY29yZSBvciBzeXNmcyByZWFkIGNvdWxkIGludm9r ZSBhbWxvZ2ljX3RoZXJtYWxfZ2V0X3RlbXAoKSBjb25jdXJyZW50bHksCmFjY2Vzc2luZyBUU0VO U09SX1NUQVQwIHdoaWxlIHRoZSBjbG9jayBpcyBnYXRlZCwgd2hpY2ggY291bGQgY2F1c2UgYSBi dXMKaGFuZy4KCj4gKwlpZiAocGRhdGEtPmRhdGEtPnJlc2V0X3RlbXApIHsKPiArCQlyZXNldF90 ZW1wID0gcGRhdGEtPmRhdGEtPnJlc2V0X3RlbXA7Cj4gKwl9IGVsc2Ugewo+ICsJCWRldl9kYmco ZGV2LCAidXNpbmcgZGVmYXVsdCBoYXJkd2FyZSByZXNldCB0ZW1wZXJhdHVyZVxuIik7Cj4gKwkJ cmVzZXRfdGVtcCA9IFRTRU5TT1JfSFdfUkVTRVRfREVGQVVMVF9URU1QOwo+ICsJfQoKW1NldmVy aXR5OiBIaWdoXQpUaGUgY29tbWl0IG1lc3NhZ2Ugc3RhdGVzIHRoZSBoYXJkd2FyZSBvdmVyLXRl bXBlcmF0dXJlIHJlc2V0IGlzIGFuIEE5CnRoZXJtYWwgY29udHJvbGxlciBmZWF0dXJlLgoKSG93 ZXZlciwgZG9lc24ndCB0aGlzIHVuY29uZGl0aW9uYWxseSBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1 bHQgcmVzZXQKdGVtcGVyYXR1cmUgYW5kIGVuYWJsZSB0aGUgaGFyZHdhcmUgcmVib290IGZlYXR1 cmUgZm9yIGFsbCBTb0NzPyBPbGRlcgpwbGF0Zm9ybXMgbWlnaHQgbm90IHN1cHBvcnQgdGhpcyBy ZWdpc3RlciBvciB0aGUgaGFyZHdhcmUgcmVib290IGZlYXR1cmUuCgo+ICsKPiArCXBkYXRhLT50 ZW1wX2NvZGUgPSBhbWxvZ2ljX3RoZXJtYWxfbWlsbGljZWxzaXVzX3RvX2NvZGUocGRhdGEsIHJl c2V0X3RlbXApOwo+ICsKPiArCWFtbG9naWNfdHNlbnNvcl9zZXR1cF9od19yZXNldChwZGF0YSk7 Cj4gKwo+ICsJcmV0ID0gYW1sb2dpY190aGVybWFsX2VuYWJsZShwZGF0YSk7CgpbU2V2ZXJpdHk6 IENyaXRpY2FsXQpEb2VzIGFtbG9naWNfdHNlbnNvcl9zZXR1cF9od19yZXNldCgpIGFjY2VzcyBU U0VOU09SX0NGR19SRUcyIGJlZm9yZQphbWxvZ2ljX3RoZXJtYWxfZW5hYmxlKCkgc3RhcnRzIHRo ZSBkZXZpY2UgY2xvY2s/CgpPbiBvbGRlciBTb0NzIGxpa2UgRzEyQSwgdGhlcmUgaXMgbm8gc2Vw YXJhdGUgc3lzY2xrLCBzbyB0aGUgaGFyZHdhcmUgaXMKY29tcGxldGVseSB1bmNsb2NrZWQgZHVy aW5nIHRoaXMgTU1JTyB3cml0ZS4gQ291bGQgdGhpcyBjYXVzZSBhIGJ1cyBmYXVsdApvciBzeXN0 ZW0gaGFuZyBkdXJpbmcgYm9vdD8KCj4gIAlyZXR1cm4gcmV0Owo+ICB9CgpbIC4uLiBdCgo+IEBA IC0zNzEsNiArNDc1LDkgQEAgc3RhdGljIGludCBhbWxvZ2ljX3RoZXJtYWxfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGFtbG9naWNfdGhlcm1hbCAqZGF0YSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICAKPiArCWlmIChkYXRhLT5kYXRhLT5oYXNfc3lzY2xrKQo+ ICsJCWNsa19wcmVwYXJlX2VuYWJsZShkYXRhLT5zeXNjbGspOwoKW1NldmVyaXR5OiBIaWdoXQpT aG91bGQgdGhlIHJldHVybiB2YWx1ZSBvZiBjbGtfcHJlcGFyZV9lbmFibGUoKSBiZSBjaGVja2Vk IGhlcmU/CgpJZiBpdCBmYWlscywgdGhlIGRyaXZlciBjb250aW51ZXMgdG8gYWNjZXNzIHRoZSBo YXJkd2FyZSBpbgphbWxvZ2ljX3RzZW5zb3Jfc2V0dXBfaHdfcmVzZXQoKSwgY2F1c2luZyBhIGJ1 cyBoYW5nLiBJZiBpdCBzdWNjZWVkcyBidXQgdGhlCnN1YnNlcXVlbnQgYW1sb2dpY190aGVybWFs X2VuYWJsZSgpIGZhaWxzLCB0aGUgY2xvY2sgcmVmZXJlbmNlIGNvdW50IGNvdWxkIGJlCmxlZnQg aW1iYWxhbmNlZC4KCj4gKwlhbWxvZ2ljX3RzZW5zb3Jfc2V0dXBfaHdfcmVzZXQoZGF0YSk7Cj4g KwlyZXR1cm4gYW1sb2dpY190aGVybWFsX2VuYWJsZShkYXRhKTsKCltTZXZlcml0eTogQ3JpdGlj YWxdClNpbWlsYXIgdG8gdGhlIGlzc3VlIGluIGFtbG9naWNfdGhlcm1hbF9wcm9iZSgpLCBkb2Vz IHRoaXMgcGVyZm9ybSBhbgp1bmNsb2NrZWQgaGFyZHdhcmUgcmVnaXN0ZXIgYWNjZXNzIGR1cmlu ZyBkZXZpY2UgcmVzdW1lIG9uIGxlZ2FjeSBwbGF0Zm9ybXM/CgphbWxvZ2ljX3RzZW5zb3Jfc2V0 dXBfaHdfcmVzZXQoKSBhY2Nlc3NlcyBUU0VOU09SX0NGR19SRUcyIGJlZm9yZQphbWxvZ2ljX3Ro ZXJtYWxfZW5hYmxlKCkgc3RhcnRzIHRoZSBtYWluIGRldmljZSBjbG9jaywgd2hpY2ggY291bGQg Y2F1c2UgYQpidXMgaGFuZyBvbiBvbGRlciBTb0NzIHRoYXQgbGFjayBhIHNlcGFyYXRlIHN5c2Ns ay4KCj4gIH0KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMv cGF0Y2hzZXQvMjAyNjA4MjEtYTktdGhlcm1hbC12My0wLTBlN2FiZjM5NDFlM0BhbWxvZ2ljLmNv bT9wYXJ0PTIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFt bG9naWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DB9638399E for ; Fri, 21 Aug 2026 08:01:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299296; cv=none; b=B/hMrPYrD9rblRkPA4TVYLps1zZkMsvIJtl6SXZT88XIp+hrbRT17Pm3R5V1JSkKS1tkZrN0far/cX0ctjLw32eF8bB3ZP5IvxxKUpZzdNlx4Y+AJKmdlGbvkV1NjcqF5LuygunbALtQm/8wwYdgX2OrbtxGQbsxzaMn1DsSV20= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299296; c=relaxed/simple; bh=LI+FbMTcYSaZVKaGSL436lepaMEZbMMVs9BQFRFSYnE=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=TaVxGHgzD7P41JmU7O/g8dS47/KuEYL8opBWtF30q731OliJaNk/QaOP0FM6Txub+4b+uqjOohuCOyRKg2mJZRrGEDu/AcpcWvPgEhFDTVB/4EPErA9qnUNve2lLxmMYQ6Nd4d9xMPD2rokVZMvDXD6B0qdkf/rc9LgYF0xsVw8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZrTP+2bN; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZrTP+2bN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCE241F000E9; Fri, 21 Aug 2026 08:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787299295; bh=Wxcfc0Xy+0drgrEfKuXXYeAtb2OXgOmyhpjt81d2okI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=ZrTP+2bNOiUrsEVTMdW45IA+9R18eHAmU7kanVrTAU3pbv/3ZgYFHhHr9VMT64nG+ saahe01bwVOKrrX+/fL+9MAaPWFIiW7WyQ5jQD1fGXeOeXiJ6GsS/mL68O8CAgdgX1 4x4+4vEYxt/T95h2iH1Y30+jNKuqtMJsGgA//CHdz/ZHQDHTujoAQEUMXZ3cXbu9Km ylgdozUxDSDK/mR8HrwO46tuvbicJwC3TILDgaDq2X34U5bWsdNAWKtSa14voWwFjZ 9GE96QTkjOVbvxatmyj8ZePyKpd2zcPVTNE1d6i8A0GeSTcz5wuxBtUnBN0tyIjwzJ +skQWZVJVgmTg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 2/2] thermal: amlogic: Add support for A9 thermal controller Reply-To: sashiko-reviews@lists.linux.dev To: "Xianwei Zhao" Cc: linux-amlogic@lists.infradead.org, conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org In-Reply-To: <20260821-a9-thermal-v3-2-0e7abf3941e3@amlogic.com> References: <20260821-a9-thermal-v3-0-0e7abf3941e3@amlogic.com> <20260821-a9-thermal-v3-2-0e7abf3941e3@amlogic.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 21 Aug 2026 08:01:34 +0000 Message-Id: <20260821080134.CCE241F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 6 potential issue(= s) to consider: New issues: - [Critical] Hardware reset registers are unconditionally accessed before t= he peripheral clock is enabled, causing a bus fault or system hang on legac= y SoCs. - [High] The hardware over-temperature reset mechanism is unconditionally e= nabled for all SoCs, contradicting the commit message and potentially causi= ng undefined behavior on unsupported platforms. - [High] The return value of `clk_prepare_enable()` for `sysclk` is ignored= in `amlogic_thermal_resume()`, potentially leading to unclocked hardware a= ccesses and clock state leaks. - [High] The fallback logic for a zero divisor (`!uptat`) in temperature ca= lculation produces a code that overflows the 12-bit hardware register mask,= silently setting the reboot threshold to 0. Pre-existing issues: - [High] The calculation of `uefuse` incorrectly zero-extends a 32-bit bitw= ise NOT result on 32-bit platforms, turning a negative calibration offset i= nto a massive positive value. - [High] The thermal zone and hwmon sysfs interfaces are exposed to userspa= ce and the thermal core before hardware initialization completes, allowing = unclocked register accesses. -- --- Patch [2]: [PATCH v3 2/2] thermal: amlogic: Add support for A9 thermal = controller --- commit a95f34d366c7ca1c65ce5aec6e86688c00a990a8 Author: Xianwei Zhao thermal: amlogic: Add support for A9 thermal controller =20 Add support for the Amlogic A9 thermal controller. The A9 thermal controller uses different calibration parameters, requires separate core and bus clock= s, and supports a hardware over-temperature reset mechanism, and restore the hardware reset configuration after resume. > diff --git a/drivers/thermal/amlogic_thermal.c b/drivers/thermal/amlogic_= thermal.c > index a0b530624b60c..ff8a8b1525367 100644 > --- a/drivers/thermal/amlogic_thermal.c > +++ b/drivers/thermal/amlogic_thermal.c [ ... ] > @@ -138,6 +157,49 @@ static int amlogic_thermal_code_to_millicelsius(stru= ct amlogic_thermal *pdata, > return temp; > } > =20 > +/* > + * Calculate a temperature code from a temperature value . > + * The unit of the temperature is degree milliCelsius. > + */ > +static u32 amlogic_thermal_millicelsius_to_code(struct amlogic_thermal *= pdata, int millicelsius) > +{ > + const struct amlogic_thermal_soc_calib_data *param =3D > + pdata->data->calibration_parameters; > + s64 factor, uptat, uefuse; > + u32 temp_code; > + > + uefuse =3D pdata->trim_info & TSENSOR_TRIM_SIGN_MASK ? > + ~(pdata->trim_info & TSENSOR_TRIM_TEMP_MASK) + 1 : > + (pdata->trim_info & TSENSOR_TRIM_TEMP_MASK); [Severity: High] This is a pre-existing issue that was copied into this new function, but do= es this calculation correctly handle negative calibration offsets on 32-bit platforms? The expression ~(pdata->trim_info & TSENSOR_TRIM_TEMP_MASK) + 1 evaluates t= o a 32-bit unsigned integer since TSENSOR_TRIM_TEMP_MASK is generated by GENMAS= K. When assigned to the s64 uefuse variable, it is zero-extended instead of sign-extended, turning a negative offset into a massive positive value. > + > + factor =3D param->B + div_s64(millicelsius, 100); > + factor =3D BIT(16) * factor; > + factor =3D div_s64(factor, param->A); > + factor =3D factor - uefuse; > + > + uptat =3D param->n * factor; > + uptat =3D div_s64(uptat, BIT(16)); > + uptat =3D param->m - uptat; > + > + factor =3D factor * 100; > + if (!uptat) > + factor =3D TSENSOR_TEMP_MASK << 0x4; > + else > + factor =3D div_s64(factor, uptat); > + > + temp_code =3D ((factor >> 0x4) & TSENSOR_TEMP_MASK) + TSENSOR_TEMP_CAL; [Severity: High] If the division-by-zero fallback (!uptat) triggers, factor is set to 0xFFF0. Does this result in a temp_code of 0x1000 here, which exceeds the 12-bit TSENSOR_TEMP_MASK? Later in amlogic_tsensor_setup_hw_reset(), this 0x1000 is shifted left by 4= to produce 0x10000. When written to TSENSOR_CFG_REG2 with the GENMASK(15, 4) m= ask, it truncates to 0. Could this accidentally set the hardware reboot threshol= d to 0 and cause an unexpected reboot? > + > + return temp_code; > +} > + > +static void amlogic_tsensor_setup_hw_reset(struct amlogic_thermal *data) > +{ > + regmap_update_bits(data->regmap, TSENSOR_CFG_REG2, TSENSOR_CFG_REG2_REB= OOT_CODE, > + data->temp_code << 0x4); > + regmap_update_bits(data->regmap, TSENSOR_CFG_REG2, > + TSENSOR_CFG_REG2_ENABLE, TSENSOR_CFG_REG2_ENABLE); > +} [ ... ] > @@ -346,6 +437,17 @@ static int amlogic_thermal_probe(struct platform_dev= ice *pdev) > =20 > devm_thermal_add_hwmon_sysfs(&pdev->dev, pdata->tzd); [Severity: High] This is a pre-existing issue, but does registering the thermal zone and hwm= on sysfs interfaces here expose them to userspace before hardware initializati= on completes? Since devm_thermal_of_zone_register() and devm_thermal_add_hwmon_sysfs() are called before amlogic_thermal_enable() starts the device clock, a thermal core or sysfs read could invoke amlogic_thermal_get_temp() concurrently, accessing TSENSOR_STAT0 while the clock is gated, which could cause a bus hang. > + if (pdata->data->reset_temp) { > + reset_temp =3D pdata->data->reset_temp; > + } else { > + dev_dbg(dev, "using default hardware reset temperature\n"); > + reset_temp =3D TSENSOR_HW_RESET_DEFAULT_TEMP; > + } [Severity: High] The commit message states the hardware over-temperature reset is an A9 thermal controller feature. However, doesn't this unconditionally fall back to the default reset temperature and enable the hardware reboot feature for all SoCs? Older platforms might not support this register or the hardware reboot feature. > + > + pdata->temp_code =3D amlogic_thermal_millicelsius_to_code(pdata, reset_= temp); > + > + amlogic_tsensor_setup_hw_reset(pdata); > + > + ret =3D amlogic_thermal_enable(pdata); [Severity: Critical] Does amlogic_tsensor_setup_hw_reset() access TSENSOR_CFG_REG2 before amlogic_thermal_enable() starts the device clock? On older SoCs like G12A, there is no separate sysclk, so the hardware is completely unclocked during this MMIO write. Could this cause a bus fault or system hang during boot? > return ret; > } [ ... ] > @@ -371,6 +475,9 @@ static int amlogic_thermal_resume(struct device *dev) > { > struct amlogic_thermal *data =3D dev_get_drvdata(dev); > =20 > + if (data->data->has_sysclk) > + clk_prepare_enable(data->sysclk); [Severity: High] Should the return value of clk_prepare_enable() be checked here? If it fails, the driver continues to access the hardware in amlogic_tsensor_setup_hw_reset(), causing a bus hang. If it succeeds but the subsequent amlogic_thermal_enable() fails, the clock reference count could = be left imbalanced. > + amlogic_tsensor_setup_hw_reset(data); > + return amlogic_thermal_enable(data); [Severity: Critical] Similar to the issue in amlogic_thermal_probe(), does this perform an unclocked hardware register access during device resume on legacy platforms? amlogic_tsensor_setup_hw_reset() accesses TSENSOR_CFG_REG2 before amlogic_thermal_enable() starts the main device clock, which could cause a bus hang on older SoCs that lack a separate sysclk. > } --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260821-a9-thermal= -v3-0-0e7abf3941e3@amlogic.com?part=3D2