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 C4CD6C35274 for ; Mon, 18 Dec 2023 16:34:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=SpahB+QWv3E3W0OgdhIm0v0VxPS8OkkXBvK7FJGwRD4=; b=LeOmJLxplitkEqtLbmRLh+eIl/ g8KtO44FhYU902Jgu63J8TixZpLL1WbksrN6CDPDE8VQdhOLclJTIbsZt6nIT+lmLx5s+HEvamZS7 SYo/ec7MqNmIKMnPzdGh1ILJ5ejkdA/4WJCMdt2FEPpUT3aTpKwhHhuqbTu1moFnarHPlunR4vQZ0 sVvT+zk2/VqHvqv5UtxhZO6Kpd3UrA9F5iCMECerLvjWNz8bezt68h8Rn7UR/cP0dzCvOHd6kK3i3 i2mbKNky86dBDXTkTjV6dW02z9H7wYxE17Fz5b2bgfKayGo0GjkgqV0TEL3a7txdtg2q4vkfNN8Ea OTI8337w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFGZE-00BSzW-29; Mon, 18 Dec 2023 16:34:08 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rFGZC-00BSyl-1H; Mon, 18 Dec 2023 16:34:07 +0000 X-UUID: 402ba8409dc311ee958cff29c719f35b-20231218 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=SpahB+QWv3E3W0OgdhIm0v0VxPS8OkkXBvK7FJGwRD4=; b=jqtVQLtSsl7OjXepjLBzCgbpl3zDsIE156MGPYRiX44pWi7nmdg+FlIQzW1Pp6lyzp3j/dn1iLpZaeIaDFTZISWD/5zcGSdxX3EUHrz9l7pxTOdPrmF43X0PuYnaPziVU5cJv5DQ1Qa96/6PgnahRzR8gNwvkveNNhLEVEKoKh4=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.35,REQID:d7dde37e-e7ba-4a21-909b-c5fcdc9391e4,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:5d391d7,CLOUDID:0c83ed73-1bd3-4f48-b671-ada88705968c,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:11|1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR: NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 402ba8409dc311ee958cff29c719f35b-20231218 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1017857978; Mon, 18 Dec 2023 09:34:01 -0700 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 19 Dec 2023 00:23:58 +0800 Received: from mcddlt001.gcn.mediatek.inc (10.19.240.15) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 19 Dec 2023 00:23:57 +0800 From: Bo Ye To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Matthias Brugger , AngeloGioacchino Del Regno CC: , yugang.wang , Bo Ye , , , , Subject: [PATCH] thermal: fix race condition in suspend/resume Date: Tue, 19 Dec 2023 00:23:46 +0800 Message-ID: <20231218162348.69101-1-bo.ye@mediatek.com> X-Mailer: git-send-email 2.17.0 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231218_083406_448620_309F76A1 X-CRM114-Status: GOOD ( 15.01 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org From: "yugang.wang" Firstly, it needs to be clarified that this issue occurs in a real- world environment. By analyzing the logs, we inferred that the issue occurred just as the system was entering suspend mode, and the user was switching the thermal policy (this action causes all thermal zones to unregister/register). In addition, we conducted degradation tests and also reproduced this issue. The specific method is to first switch the thermal policy through a command, and then immediately put the system into suspend state through another command. This method can also reproduce the issue. Body: This patch fixes a race condition during system resume. It occurs if the system is exiting a suspend state and a user is trying to register/unregister a thermal zone concurrently. The root cause is that both actions access the `thermal_tz_list`. In detail: 1. At PM_POST_SUSPEND during the resume, the system reads all thermal zones in `thermal_tz_list`, then resets and updates their temperatures. 2. When registering/unregistering a thermal zone, the `thermal_tz_list` gets manipulated. These two actions might occur concurrently, causing a race condition. To solve this issue, we introduce a mutex lock to protect `thermal_tz_list` from being modified while it's being read and updated during the resume from suspend. Kernel oops excerpt related to this fix: [ 5201.869845] [T316822] pc: [0xffffffeb7d4876f0] mutex_lock+0x34/0x170 [ 5201.869856] [T316822] lr: [0xffffffeb7ca98a84] thermal_pm_notify+0xd4/0x26c [... cut for brevity ...] [ 5201.871061] [T316822] suspend_prepare+0x150/0x470 [ 5201.871067] [T316822] enter_state+0x84/0x6f4 [ 5201.871076] [T316822] state_store+0x15c/0x1e8 3.Enable thermal policy operation will unregister/register all thermal zones 10-21 06:13:59.280 854 922 I libMtcLoader: enable thermal policy thermal_policy_09. 4.System suspend entry time is 2023-10-20 22:13:59.242 [ 4106.364175][T609387] binder:534_2: [name:spm&][SPM] PM: suspend entry 2023-10-20 22:13:59.242898243 UTC [ 4106.366185][T609387] binder:534_2: PM: [name:wakeup&]PM: Pending Wakeup Sources: NETLINK 5. It can be proven that the absence of a switch strategy will perform unregister/register operations on thermal zones (android time is 2023-10-20 22:13:59.282), Because the logs for other thermal zones switching are not enabled by default, we cannot see the logs related to other thermal zones. [ 4106.404167][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_unbind unbinding OK [ 4106.404215][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_unbind unbinding OK [ 4106.404225][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_unbind unbinding OK [ 4106.404504][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_bind binding OK, 0 [ 4106.404545][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_bind binding OK, 2 [ 4106.404566][T600922] mtkPowerMsgHdl:[name:thermal_monitor&][Thermal/TZ/CPU]tscpu_bind binding OK, 1 6. thermal_pm_notify trigger KE(android time: 2023-10-20 22:13:59.315894) [ 4106.437171][T209387] binder:534_2: [name:mrdump&]Kernel Offset:0x289cc80000 from 0xffffffc008000000 [ 4106.437182][T209387] binder:534_2: [name:mrdump&]PHYS_OFFSET:0x40000000 [ 4106.437191][T209387] binder:534_2: [name:mrdump&]pstate: 80400005(Nzcv daif +PAN -UAO) [ 4106.437204][T209387] binder:534_2: [name:mrdump&]pc :[0xffffffe8a6688200] mutex_lock+0x34/0x184 [ 4106.437214][T209387] binder:534_2: [name:mrdump&]lr :[0xffffffe8a5ce66bc] thermal_pm_notify+0xd4/0x26c [ 4106.437220][T209387] binder:534_2: [name:mrdump&]sp :ffffffc01bab3ae0 [ 4106.437226][T209387] binder:534_2: [name:mrdump&]x29:ffffffc01bab3af0 x28: 0000000000000001 Signed-off-by: Yugang Wang Signed-off-by: Bo Ye --- drivers/thermal/thermal_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 9c17d35ccbbd..73d6b820c8b5 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1520,12 +1520,14 @@ static int thermal_pm_notify(struct notifier_block *nb, case PM_POST_HIBERNATION: case PM_POST_RESTORE: case PM_POST_SUSPEND: + mutex_lock(&thermal_list_lock); atomic_set(&in_suspend, 0); list_for_each_entry(tz, &thermal_tz_list, node) { thermal_zone_device_init(tz); thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); } + mutex_unlock(&thermal_list_lock); break; default: break; -- 2.17.0 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 89C94C35274 for ; Mon, 18 Dec 2023 16:34:35 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=iQvCWRfZAxBEGI6H6VJfJPeNXPXck0N1mzyNQ8SYsvw=; b=Gw+ypYbwyds+DG qPKPYFWZQnIMwsUCFTSdQMvXdEr81H7YL/TbHlCq86sZHYkeV6/qM+AiTZID++oE04xkt4BJ/a8hr 5NNnXcy1F+DbRICULQDrvLXuU48orBE4mxr1+ETsbuuaH68UxUk0zsDmK5QJhGqjYxsCsXZsH5Egj 1bZ5q1A33W7nOqoOaHppKMN0lzpq1sWtkvLOny4t2crhLKWBP2BGcMnxBmK4EPZdo6r+Cr1Pq06UT XEg66WjMY9QVyF2XP3VYxJWG9hsk6prJD0HP8jdn2XwMFx9lJZH10jKKzr/WAOfGzFMf20BxPYcPF o06NbENrr1dqbuX+b01g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFGZF-00BSzr-1c; Mon, 18 Dec 2023 16:34:09 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rFGZC-00BSyl-1H; Mon, 18 Dec 2023 16:34:07 +0000 X-UUID: 402ba8409dc311ee958cff29c719f35b-20231218 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=SpahB+QWv3E3W0OgdhIm0v0VxPS8OkkXBvK7FJGwRD4=; b=jqtVQLtSsl7OjXepjLBzCgbpl3zDsIE156MGPYRiX44pWi7nmdg+FlIQzW1Pp6lyzp3j/dn1iLpZaeIaDFTZISWD/5zcGSdxX3EUHrz9l7pxTOdPrmF43X0PuYnaPziVU5cJv5DQ1Qa96/6PgnahRzR8gNwvkveNNhLEVEKoKh4=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.35,REQID:d7dde37e-e7ba-4a21-909b-c5fcdc9391e4,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:5d391d7,CLOUDID:0c83ed73-1bd3-4f48-b671-ada88705968c,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:11|1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR: NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 402ba8409dc311ee958cff29c719f35b-20231218 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1017857978; Mon, 18 Dec 2023 09:34:01 -0700 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 19 Dec 2023 00:23:58 +0800 Received: from mcddlt001.gcn.mediatek.inc (10.19.240.15) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 19 Dec 2023 00:23:57 +0800 From: Bo Ye To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Matthias Brugger , AngeloGioacchino Del Regno CC: , yugang.wang , Bo Ye , , , , Subject: [PATCH] thermal: fix race condition in suspend/resume Date: Tue, 19 Dec 2023 00:23:46 +0800 Message-ID: <20231218162348.69101-1-bo.ye@mediatek.com> X-Mailer: git-send-email 2.17.0 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231218_083406_448620_309F76A1 X-CRM114-Status: GOOD ( 15.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogInl1Z2FuZy53YW5nIiA8eXVnYW5nLndhbmdAbWVkaWF0ZWsuY29tPgoKICBGaXJzdGx5 LCBpdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQgdGhhdCB0aGlzIGlzc3VlIG9jY3VycyBpbiBhIHJl YWwtCndvcmxkIGVudmlyb25tZW50LiBCeSBhbmFseXppbmcgdGhlIGxvZ3MsIHdlIGluZmVycmVk IHRoYXQgdGhlCmlzc3VlIG9jY3VycmVkIGp1c3QgYXMgdGhlIHN5c3RlbSB3YXMgZW50ZXJpbmcg c3VzcGVuZCBtb2RlLCBhbmQgdGhlIHVzZXIKd2FzIHN3aXRjaGluZyB0aGUgdGhlcm1hbCBwb2xp Y3kgKHRoaXMgYWN0aW9uIGNhdXNlcyBhbGwgdGhlcm1hbCB6b25lcwp0byB1bnJlZ2lzdGVyL3Jl Z2lzdGVyKS4gSW4gYWRkaXRpb24sIHdlIGNvbmR1Y3RlZCBkZWdyYWRhdGlvbiB0ZXN0cwphbmQg YWxzbyByZXByb2R1Y2VkIHRoaXMgaXNzdWUuIFRoZSBzcGVjaWZpYyBtZXRob2QgaXMgdG8gZmly c3Qgc3dpdGNoCnRoZSB0aGVybWFsIHBvbGljeSB0aHJvdWdoIGEgY29tbWFuZCwgYW5kIHRoZW4g aW1tZWRpYXRlbHkgcHV0IHRoZQpzeXN0ZW0gaW50byBzdXNwZW5kIHN0YXRlIHRocm91Z2ggYW5v dGhlciBjb21tYW5kLiBUaGlzIG1ldGhvZCBjYW4gYWxzbwpyZXByb2R1Y2UgdGhlIGlzc3VlLgoK Qm9keToKICBUaGlzIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gZHVyaW5nIHN5c3RlbSBy ZXN1bWUuIEl0IG9jY3VycwogIGlmIHRoZSBzeXN0ZW0gaXMgZXhpdGluZyBhIHN1c3BlbmQgc3Rh dGUgYW5kIGEgdXNlciBpcyB0cnlpbmcgdG8KICByZWdpc3Rlci91bnJlZ2lzdGVyIGEgdGhlcm1h bCB6b25lIGNvbmN1cnJlbnRseS4gVGhlIHJvb3QgY2F1c2UgaXMKICB0aGF0IGJvdGggYWN0aW9u cyBhY2Nlc3MgdGhlIGB0aGVybWFsX3R6X2xpc3RgLgoKSW4gZGV0YWlsOgoKICAxLiBBdCBQTV9Q T1NUX1NVU1BFTkQgZHVyaW5nIHRoZSByZXN1bWUsIHRoZSBzeXN0ZW0gcmVhZHMgYWxsCiAgdGhl cm1hbAogICAgIHpvbmVzIGluIGB0aGVybWFsX3R6X2xpc3RgLCB0aGVuIHJlc2V0cyBhbmQgdXBk YXRlcyB0aGVpcgogICAgIHRlbXBlcmF0dXJlcy4KICAyLiBXaGVuIHJlZ2lzdGVyaW5nL3VucmVn aXN0ZXJpbmcgYSB0aGVybWFsIHpvbmUsIHRoZQogICAgIGB0aGVybWFsX3R6X2xpc3RgIGdldHMg bWFuaXB1bGF0ZWQuCgogIFRoZXNlIHR3byBhY3Rpb25zIG1pZ2h0IG9jY3VyIGNvbmN1cnJlbnRs eSwgY2F1c2luZyBhIHJhY2UgY29uZGl0aW9uLgogIFRvIHNvbHZlIHRoaXMgaXNzdWUsIHdlIGlu dHJvZHVjZSBhIG11dGV4IGxvY2sgdG8gcHJvdGVjdAogIGB0aGVybWFsX3R6X2xpc3RgIGZyb20g YmVpbmcgbW9kaWZpZWQgd2hpbGUgaXQncyBiZWluZyByZWFkIGFuZAogIHVwZGF0ZWQgZHVyaW5n IHRoZSByZXN1bWUgZnJvbSBzdXNwZW5kLgoKICBLZXJuZWwgb29wcyBleGNlcnB0IHJlbGF0ZWQg dG8gdGhpcyBmaXg6CgogIFsgNTIwMS44Njk4NDVdIFtUMzE2ODIyXSBwYzogWzB4ZmZmZmZmZWI3 ZDQ4NzZmMF0KICBtdXRleF9sb2NrKzB4MzQvMHgxNzAKICBbIDUyMDEuODY5ODU2XSBbVDMxNjgy Ml0gbHI6IFsweGZmZmZmZmViN2NhOThhODRdCiAgdGhlcm1hbF9wbV9ub3RpZnkrMHhkNC8weDI2 YwogIFsuLi4gY3V0IGZvciBicmV2aXR5IC4uLl0KICBbIDUyMDEuODcxMDYxXSBbVDMxNjgyMl0g IHN1c3BlbmRfcHJlcGFyZSsweDE1MC8weDQ3MAogIFsgNTIwMS44NzEwNjddIFtUMzE2ODIyXSAg ZW50ZXJfc3RhdGUrMHg4NC8weDZmNAogIFsgNTIwMS44NzEwNzZdIFtUMzE2ODIyXSAgc3RhdGVf c3RvcmUrMHgxNWMvMHgxZTgKCiAgMy5FbmFibGUgdGhlcm1hbCBwb2xpY3kgb3BlcmF0aW9uIHdp bGwgdW5yZWdpc3Rlci9yZWdpc3RlciBhbGwgdGhlcm1hbCB6b25lcwogICAgIDEwLTIxIDA2OjEz OjU5LjI4MCAgIDg1NCAgIDkyMiBJIGxpYk10Y0xvYWRlcjogZW5hYmxlIHRoZXJtYWwgcG9saWN5 IHRoZXJtYWxfcG9saWN5XzA5LgoKICA0LlN5c3RlbSBzdXNwZW5kIGVudHJ5IHRpbWUgaXMgMjAy My0xMC0yMCAyMjoxMzo1OS4yNDIKICAgICBbIDQxMDYuMzY0MTc1XVtUNjA5Mzg3XSBiaW5kZXI6 NTM0XzI6IFtuYW1lOnNwbSZdW1NQTV0gUE06IHN1c3BlbmQgZW50cnkgMjAyMy0xMC0yMCAyMjox Mzo1OS4yNDI4OTgyNDMgVVRDCiAgICAgWyA0MTA2LjM2NjE4NV1bVDYwOTM4N10gYmluZGVyOjUz NF8yOiBQTTogW25hbWU6d2FrZXVwJl1QTTogUGVuZGluZyBXYWtldXAgU291cmNlczogTkVUTElO SwoKICA1LiBJdCBjYW4gYmUgcHJvdmVuIHRoYXQgdGhlIGFic2VuY2Ugb2YgYSBzd2l0Y2ggc3Ry YXRlZ3kgd2lsbCBwZXJmb3JtCiAgICAgdW5yZWdpc3Rlci9yZWdpc3RlciBvcGVyYXRpb25zIG9u IHRoZXJtYWwgem9uZXMgKGFuZHJvaWQgdGltZSBpcyAyMDIzLTEwLTIwIDIyOjEzOjU5LjI4Minv vIwKICAgICBCZWNhdXNlIHRoZSBsb2dzIGZvciBvdGhlciB0aGVybWFsIHpvbmVzIHN3aXRjaGlu ZyBhcmUgbm90IGVuYWJsZWQgYnkKICAgICBkZWZhdWx0LCB3ZSBjYW5ub3Qgc2VlIHRoZSBsb2dz IHJlbGF0ZWQgdG8gb3RoZXIgdGhlcm1hbCB6b25lcy4KICAgICBbIDQxMDYuNDA0MTY3XVtUNjAw OTIyXSBtdGtQb3dlck1zZ0hkbDpbbmFtZTp0aGVybWFsX21vbml0b3ImXVtUaGVybWFsL1RaL0NQ VV10c2NwdV91bmJpbmQgdW5iaW5kaW5nIE9LCiAgICAgWyA0MTA2LjQwNDIxNV1bVDYwMDkyMl0g bXRrUG93ZXJNc2dIZGw6W25hbWU6dGhlcm1hbF9tb25pdG9yJl1bVGhlcm1hbC9UWi9DUFVddHNj cHVfdW5iaW5kIHVuYmluZGluZyBPSwogICAgIFsgNDEwNi40MDQyMjVdW1Q2MDA5MjJdIG10a1Bv d2VyTXNnSGRsOltuYW1lOnRoZXJtYWxfbW9uaXRvciZdW1RoZXJtYWwvVFovQ1BVXXRzY3B1X3Vu YmluZCB1bmJpbmRpbmcgT0sKICAgICBbIDQxMDYuNDA0NTA0XVtUNjAwOTIyXSBtdGtQb3dlck1z Z0hkbDpbbmFtZTp0aGVybWFsX21vbml0b3ImXVtUaGVybWFsL1RaL0NQVV10c2NwdV9iaW5kIGJp bmRpbmcgT0ssIDAKICAgICBbIDQxMDYuNDA0NTQ1XVtUNjAwOTIyXSBtdGtQb3dlck1zZ0hkbDpb bmFtZTp0aGVybWFsX21vbml0b3ImXVtUaGVybWFsL1RaL0NQVV10c2NwdV9iaW5kIGJpbmRpbmcg T0ssIDIKICAgICBbIDQxMDYuNDA0NTY2XVtUNjAwOTIyXSBtdGtQb3dlck1zZ0hkbDpbbmFtZTp0 aGVybWFsX21vbml0b3ImXVtUaGVybWFsL1RaL0NQVV10c2NwdV9iaW5kIGJpbmRpbmcgT0ssIDEK CiAgNi4gdGhlcm1hbF9wbV9ub3RpZnkgdHJpZ2dlciBLRShhbmRyb2lkIHRpbWU6ICAyMDIzLTEw LTIwIDIyOjEzOjU5LjMxNTg5NCkKICAgICBbIDQxMDYuNDM3MTcxXVtUMjA5Mzg3XSBiaW5kZXI6 NTM0XzI6IFtuYW1lOm1yZHVtcCZdS2VybmVsIE9mZnNldDoweDI4OWNjODAwMDAgZnJvbSAweGZm ZmZmZmMwMDgwMDAwMDAKICAgICBbIDQxMDYuNDM3MTgyXVtUMjA5Mzg3XSBiaW5kZXI6NTM0XzI6 IFtuYW1lOm1yZHVtcCZdUEhZU19PRkZTRVQ6MHg0MDAwMDAwMAogICAgIFsgNDEwNi40MzcxOTFd W1QyMDkzODddIGJpbmRlcjo1MzRfMjogW25hbWU6bXJkdW1wJl1wc3RhdGU6IDgwNDAwMDA1KE56 Y3YgZGFpZiArUEFOIC1VQU8pCiAgICAgWyA0MTA2LjQzNzIwNF1bVDIwOTM4N10gYmluZGVyOjUz NF8yOiBbbmFtZTptcmR1bXAmXXBjIDpbMHhmZmZmZmZlOGE2Njg4MjAwXSBtdXRleF9sb2NrKzB4 MzQvMHgxODQKICAgICBbIDQxMDYuNDM3MjE0XVtUMjA5Mzg3XSBiaW5kZXI6NTM0XzI6IFtuYW1l Om1yZHVtcCZdbHIgOlsweGZmZmZmZmU4YTVjZTY2YmNdIHRoZXJtYWxfcG1fbm90aWZ5KzB4ZDQv MHgyNmMKICAgICBbIDQxMDYuNDM3MjIwXVtUMjA5Mzg3XSBiaW5kZXI6NTM0XzI6IFtuYW1lOm1y ZHVtcCZdc3AgOmZmZmZmZmMwMWJhYjNhZTAKICAgICBbIDQxMDYuNDM3MjI2XVtUMjA5Mzg3XSBi aW5kZXI6NTM0XzI6IFtuYW1lOm1yZHVtcCZdeDI5OmZmZmZmZmMwMWJhYjNhZjAgeDI4OiAwMDAw MDAwMDAwMDAwMDAxCgpTaWduZWQtb2ZmLWJ5OiBZdWdhbmcgV2FuZyA8eXVnYW5nLndhbmdAbWVk aWF0ZWsuY29tPgpTaWduZWQtb2ZmLWJ5OiBCbyBZZSA8Ym8ueWVAbWVkaWF0ZWsuY29tPgotLS0K IGRyaXZlcnMvdGhlcm1hbC90aGVybWFsX2NvcmUuYyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3Jl LmMgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3JlLmMKaW5kZXggOWMxN2QzNWNjYmJkLi43 M2Q2YjgyMGM4YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsX2NvcmUuYwor KysgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3JlLmMKQEAgLTE1MjAsMTIgKzE1MjAsMTQg QEAgc3RhdGljIGludCB0aGVybWFsX3BtX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5i LAogCWNhc2UgUE1fUE9TVF9ISUJFUk5BVElPTjoKIAljYXNlIFBNX1BPU1RfUkVTVE9SRToKIAlj YXNlIFBNX1BPU1RfU1VTUEVORDoKKwkJbXV0ZXhfbG9jaygmdGhlcm1hbF9saXN0X2xvY2spOwog CQlhdG9taWNfc2V0KCZpbl9zdXNwZW5kLCAwKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeSh0eiwg JnRoZXJtYWxfdHpfbGlzdCwgbm9kZSkgewogCQkJdGhlcm1hbF96b25lX2RldmljZV9pbml0KHR6 KTsKIAkJCXRoZXJtYWxfem9uZV9kZXZpY2VfdXBkYXRlKHR6LAogCQkJCQkJICAgVEhFUk1BTF9F VkVOVF9VTlNQRUNJRklFRCk7CiAJCX0KKwkJbXV0ZXhfdW5sb2NrKCZ0aGVybWFsX2xpc3RfbG9j ayk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwotLSAKMi4xNy4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=