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 7D2CC443AA7 for ; Mon, 12 Oct 2026 07:24:46 +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=1791789887; cv=none; b=k2UyhBz3lv1DQ0vgqVwrq95LUJK33InbW7RCrAUOtVHLpKuQfKFM8owuTSX4WtTswSKFrcUu/D5/1vuWORsdLtClJMBHvZbGyvBYnOlDIhvuw8MYjyDjIviaQVqZDo+cof5QQP3B+efXNdmhYS0J3T6HU9Oqs9TtnIDSs5dfgdg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791789887; c=relaxed/simple; bh=Kal4GGsGp43KyV9T4Fa3GcTWeYGfB37h6t0z25f6Ul8=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date; b=DUFwmd6CBX1+OKtLVDf8f5rAtKCDWCfAJmG4Dsfl0ljJH1UUtmaOkhxzpmWvrhxNTxPuUSfRikkxgAAEo+iPrCOXeINz0rm2iBbgG6Y18yNXfnaE5hkTJJVInvOCFEqGsat4fujWkaSp7uLxHMMwPNUIYQyLQmIxSOxbE2ZI/NE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dATnZllv; 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="dATnZllv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A8041F0089B; Mon, 12 Oct 2026 07:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791789886; bh=1/KzxEJ9e8eiHinxkGhmCVdKgubpOAl+ivWXII3PIr0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dATnZllvMV3qTGgdd+/0F9MxOA/f7XbG3bqsd8sxe1zRPVKOwGhoDc4ponOyh09kF HINUx8Qu3+Mi2PL9JXBmE65rYd05oiHQ1QxSStlZMFG0lZPUAl7qO55z1wURz/SR2X 6xbNdTuSP9IzO77vrKRjZt5aTQtAuYP49ugFLviZrQuIKCFW5wfvYEPCGe+TgWbrhn xkmid2CtzCok6n8yThDmgUs/8KIKwfIRzXXuMivOLJmRNoRMJMTfq3OxTMHsCB4YFf kx43kHFTz6MRVVAN87BPaCNl2mp8HTiaRbKLpIjxgYDE8SrQ/m5u6iARwCa7qu27JP l8Dmnp5zicy2Q== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 5/6] arm64: dts: amlogic: Add video decoder driver support for S4 SOCs Reply-To: sashiko-reviews@lists.linux.dev To: "Zhentao Guo" Cc: robh@kernel.org, media-ci@linuxtv.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org In-Reply-To: <20261012-b4-s4-vdec-upstream-v11-5-25939f85ada5@amlogic.com> References: <20261012-b4-s4-vdec-upstream-v11-0-25939f85ada5@amlogic.com> <20261012-b4-s4-vdec-upstream-v11-5-25939f85ada5@amlogic.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Mon, 12 Oct 2026 07:24:45 +0000 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] media: amlogic: vdec: Missing locking in the timeout/error path of= aml_h264_dec_run() - [High] media: amlogic: vdec: Infinite loop in threaded IRQ handler due to= 0 timeout in read_poll_timeout() -- commit caf90beec035f24ac592fd4c243200813bb1fcc4 Author: Zhentao Guo arm64: dts: amlogic: Add video decoder driver support for S4 SOCs This commit adds the vdec node to enable the Amlogic V4L2 stateless video=20 decoder for S4 SOCs. It also enables the optee node to support loading the video firmware via TEE helpers. > diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/= dts/amlogic/meson-s4.dtsi > index 2a6fbd5308362..7a1dcb3951c82 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi [ ... ] > @@ -907,5 +912,33 @@ emmc: mmc@fe08c000 { [ ... ] > + video-codec@fe320000 { > + compatible =3D "amlogic,s4-vdec"; > + reg =3D <0x0 0xfe320000 0x0 0x10000>, > + <0x0 0xfe036000 0x0 0x20>; > + reg-names =3D "dos", > + "dmc"; > + interrupts =3D , > + ; > + clocks =3D <&clkc_periphs CLKID_DOS>, > + <&clkc_periphs CLKID_VDEC_SEL>, > + <&clkc_periphs CLKID_HEVCF_SEL>; > + clock-names =3D "dos", > + "vdec", > + "hvdec"; > + power-domains =3D <&pwrc PWRC_S4_DOS_VDEC_ID>, > + <&pwrc PWRC_S4_DOS_HEVC_ID>; > + power-domain-names =3D "vdec", > + "hvdec"; > + resets =3D <&reset RESET_DOS>; > + amlogic,canvas =3D <&canvas>; > + amlogic,secure-monitor =3D <&sm>; > + }; [Severity: High] Enabling this device exposes a locking regression in the driver. In the timeout/error path of aml_h264_dec_run(), aml_stop_vdec_hw() is called with= out holding dec_hw->ctx_mutex: drivers/media/platform/amlogic/vdec/h264.c:aml_h264_dec_run() { ... /* * Halt the hardware and wait out any in-flight threaded IRQ * handler before cleaning up, otherwise both contexts may run * h264_release_decode_spec() concurrently. */ aml_stop_vdec_hw(dec_hw); synchronize_irq(dec_hw->dec_irq); h264_release_decode_spec(dec_hw, ctx); } else if (-ERESTARTSYS =3D=3D ret) { ret =3D -1; aml_stop_vdec_hw(dec_hw); synchronize_irq(dec_hw->dec_irq); h264_release_decode_spec(dec_hw, ctx); ... } If wait_event_interruptible_timeout() times out or is interrupted, the threaded IRQ handler vdec_threaded_isr_handler() may execute concurrently on another CPU while holding ctx_mutex. Because aml_stop_vdec_hw() is unprotected, can it reset the hardware concurrently while the ISR is still interacting with it?=20 If the ISR writes to DPB_STATUS_REG after the reset, it could inadvertently restart the hardware decoding process. This means a restarted hardware block could fire a new interrupt after synchronize_irq() returns, allowing a new ISR to run concurrently with h264_release_decode_spec(). Will this lead to concurrent double-freeing of canvas indices? [Severity: High] Enabling this device also exposes an infinite loop risk in the threaded IRQ handler. In h264_config_decode_buf(), read_poll_timeout() is called with a timeout of 0: drivers/media/platform/amlogic/vdec/h264.c:h264_config_decode_buf() { ... read_poll_timeout(read_dos_reg, reg_val, !(reg_val & 0x800), 10, 0, true, hw, H264_CO_MB_RW_CTL); ... } The read_poll_timeout() macro treats a timeout of 0 as an infinite wait. Since this executes inside the threaded interrupt handler on every H264 fra= me decode, if the hardware hangs or the register condition is never met, would the thread spin indefinitely and hang the system or consume 100% CPU = on the IRQ thread? > }; > }; --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261012-b4-s4-vdec= -upstream-v11-0-25939f85ada5@amlogic.com?part=3D5 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 2FB86CA9ED5 for ; Mon, 12 Oct 2026 07:24:53 +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:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=HeA8A6JZGfPjGYKaZEXcIODvXMEb4W3VPaFjUvgHkqk=; b=eOiWkzQAgsE4S9 VJovdO9Wc6jHMOfEAwwSiSFL+wwwUVgywaQUa1P4kBAoUnvc5OXL/mu/JnAHjOjB6IAd2lezIG/Xp 6dU0dk1JXawSwzeW5sa1nXWr6ni6rj+QxctZ5H6s2Ydac83Ic40a5SlF5wJ0j8DTEeyJsTEw+EHiq eZBmg1ywZD8qKqjkudR9nf1o8JlUYxMyDelXRnklrbvFidwYLR0ekgJPTt4qTiEI6KCYyuuXCjde7 zxHoCVeswNbM86E3gqTQVeM0n7PGuKZqFAnxm6ArCb3SCY+QDYkS1e3GIugsMTIg3LlTz8jw+JGXa QZK0g8rEFlfp4QtrlL7Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGAOu-00000009pgW-1jKk; Mon, 12 Oct 2026 07:24:49 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGAOs-00000009pgN-2Aty for linux-amlogic@lists.infradead.org; Mon, 12 Oct 2026 07:24:46 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 46B0441605; Mon, 12 Oct 2026 07:24:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A8041F0089B; Mon, 12 Oct 2026 07:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791789886; bh=1/KzxEJ9e8eiHinxkGhmCVdKgubpOAl+ivWXII3PIr0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dATnZllvMV3qTGgdd+/0F9MxOA/f7XbG3bqsd8sxe1zRPVKOwGhoDc4ponOyh09kF HINUx8Qu3+Mi2PL9JXBmE65rYd05oiHQ1QxSStlZMFG0lZPUAl7qO55z1wURz/SR2X 6xbNdTuSP9IzO77vrKRjZt5aTQtAuYP49ugFLviZrQuIKCFW5wfvYEPCGe+TgWbrhn xkmid2CtzCok6n8yThDmgUs/8KIKwfIRzXXuMivOLJmRNoRMJMTfq3OxTMHsCB4YFf kx43kHFTz6MRVVAN87BPaCNl2mp8HTiaRbKLpIjxgYDE8SrQ/m5u6iARwCa7qu27JP l8Dmnp5zicy2Q== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 5/6] arm64: dts: amlogic: Add video decoder driver support for S4 SOCs To: "Zhentao Guo" Cc: robh@kernel.org, media-ci@linuxtv.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org In-Reply-To: <20261012-b4-s4-vdec-upstream-v11-5-25939f85ada5@amlogic.com> References: <20261012-b4-s4-vdec-upstream-v11-0-25939f85ada5@amlogic.com> <20261012-b4-s4-vdec-upstream-v11-5-25939f85ada5@amlogic.com> Date: Mon, 12 Oct 2026 07:24:45 +0000 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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG1lZGlhOiBhbWxvZ2lj OiB2ZGVjOiBNaXNzaW5nIGxvY2tpbmcgaW4gdGhlIHRpbWVvdXQvZXJyb3IgcGF0aCBvZiBhbWxf aDI2NF9kZWNfcnVuKCkKLSBbSGlnaF0gbWVkaWE6IGFtbG9naWM6IHZkZWM6IEluZmluaXRlIGxv b3AgaW4gdGhyZWFkZWQgSVJRIGhhbmRsZXIgZHVlIHRvIDAgdGltZW91dCBpbiByZWFkX3BvbGxf dGltZW91dCgpCi0tCgpjb21taXQgY2FmOTBiZWVjMDM1ZjI0YWM1OTJmZDRjMjQzMjAwODEzYmIx ZmNjNApBdXRob3I6IFpoZW50YW8gR3VvIDx6aGVudGFvLmd1b0BhbWxvZ2ljLmNvbT4KCmFybTY0 OiBkdHM6IGFtbG9naWM6IEFkZCB2aWRlbyBkZWNvZGVyIGRyaXZlciBzdXBwb3J0IGZvciBTNCBT T0NzCgpUaGlzIGNvbW1pdCBhZGRzIHRoZSB2ZGVjIG5vZGUgdG8gZW5hYmxlIHRoZSBBbWxvZ2lj IFY0TDIgc3RhdGVsZXNzIHZpZGVvIApkZWNvZGVyIGZvciBTNCBTT0NzLiBJdCBhbHNvIGVuYWJs ZXMgdGhlIG9wdGVlIG5vZGUgdG8gc3VwcG9ydCBsb2FkaW5nIHRoZQp2aWRlbyBmaXJtd2FyZSB2 aWEgVEVFIGhlbHBlcnMuCgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL2FtbG9n aWMvbWVzb24tczQuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvYW1sb2dpYy9tZXNvbi1zNC5k dHNpCj4gaW5kZXggMmE2ZmJkNTMwODM2Mi4uN2ExZGNiMzk1MWM4MiAxMDA2NDQKPiAtLS0gYS9h cmNoL2FybTY0L2Jvb3QvZHRzL2FtbG9naWMvbWVzb24tczQuZHRzaQo+ICsrKyBiL2FyY2gvYXJt NjQvYm9vdC9kdHMvYW1sb2dpYy9tZXNvbi1zNC5kdHNpCgpbIC4uLiBdCgo+IEBAIC05MDcsNSAr OTEyLDMzIEBAIGVtbWM6IG1tY0BmZTA4YzAwMCB7CgpbIC4uLiBdCgo+ICsJCXZpZGVvLWNvZGVj QGZlMzIwMDAwIHsKPiArCQkJY29tcGF0aWJsZSA9ICJhbWxvZ2ljLHM0LXZkZWMiOwo+ICsJCQly ZWcgPSA8MHgwIDB4ZmUzMjAwMDAgMHgwIDB4MTAwMDA+LAo+ICsJCQkgICAgICA8MHgwIDB4ZmUw MzYwMDAgMHgwIDB4MjA+Owo+ICsJCQlyZWctbmFtZXMgPSAiZG9zIiwKPiArCQkJCSAgICAiZG1j IjsKPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDkxIElSUV9UWVBFX0VER0VfUklTSU5HPiwK PiArCQkJCSAgICAgPEdJQ19TUEkgOTIgSVJRX1RZUEVfRURHRV9SSVNJTkc+Owo+ICsJCQljbG9j a3MgPSA8JmNsa2NfcGVyaXBocyBDTEtJRF9ET1M+LAo+ICsJCQkJIDwmY2xrY19wZXJpcGhzIENM S0lEX1ZERUNfU0VMPiwKPiArCQkJCSA8JmNsa2NfcGVyaXBocyBDTEtJRF9IRVZDRl9TRUw+Owo+ ICsJCQljbG9jay1uYW1lcyA9ICJkb3MiLAo+ICsJCQkJICAgICAgInZkZWMiLAo+ICsJCQkJICAg ICAgImh2ZGVjIjsKPiArCQkJcG93ZXItZG9tYWlucyA9IDwmcHdyYyBQV1JDX1M0X0RPU19WREVD X0lEPiwKPiArCQkJCQk8JnB3cmMgUFdSQ19TNF9ET1NfSEVWQ19JRD47Cj4gKwkJCXBvd2VyLWRv bWFpbi1uYW1lcyA9ICJ2ZGVjIiwKPiArCQkJCQkgICAgICJodmRlYyI7Cj4gKwkJCXJlc2V0cyA9 IDwmcmVzZXQgUkVTRVRfRE9TPjsKPiArCQkJYW1sb2dpYyxjYW52YXMgPSA8JmNhbnZhcz47Cj4g KwkJCWFtbG9naWMsc2VjdXJlLW1vbml0b3IgPSA8JnNtPjsKPiArCQl9OwoKW1NldmVyaXR5OiBI aWdoXQpFbmFibGluZyB0aGlzIGRldmljZSBleHBvc2VzIGEgbG9ja2luZyByZWdyZXNzaW9uIGlu IHRoZSBkcml2ZXIuIEluIHRoZQp0aW1lb3V0L2Vycm9yIHBhdGggb2YgYW1sX2gyNjRfZGVjX3J1 bigpLCBhbWxfc3RvcF92ZGVjX2h3KCkgaXMgY2FsbGVkIHdpdGhvdXQKaG9sZGluZyBkZWNfaHct PmN0eF9tdXRleDoKCmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2gyNjQuYzph bWxfaDI2NF9kZWNfcnVuKCkgewouLi4KCQkvKgoJCSAqIEhhbHQgdGhlIGhhcmR3YXJlIGFuZCB3 YWl0IG91dCBhbnkgaW4tZmxpZ2h0IHRocmVhZGVkIElSUQoJCSAqIGhhbmRsZXIgYmVmb3JlIGNs ZWFuaW5nIHVwLCBvdGhlcndpc2UgYm90aCBjb250ZXh0cyBtYXkgcnVuCgkJICogaDI2NF9yZWxl YXNlX2RlY29kZV9zcGVjKCkgY29uY3VycmVudGx5LgoJCSAqLwoJCWFtbF9zdG9wX3ZkZWNfaHco ZGVjX2h3KTsKCQlzeW5jaHJvbml6ZV9pcnEoZGVjX2h3LT5kZWNfaXJxKTsKCQloMjY0X3JlbGVh c2VfZGVjb2RlX3NwZWMoZGVjX2h3LCBjdHgpOwoJfSBlbHNlIGlmICgtRVJFU1RBUlRTWVMgPT0g cmV0KSB7CgkJcmV0ID0gLTE7CgkJYW1sX3N0b3BfdmRlY19odyhkZWNfaHcpOwoJCXN5bmNocm9u aXplX2lycShkZWNfaHctPmRlY19pcnEpOwoJCWgyNjRfcmVsZWFzZV9kZWNvZGVfc3BlYyhkZWNf aHcsIGN0eCk7Ci4uLgp9CgpJZiB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dCgpIHRp bWVzIG91dCBvciBpcyBpbnRlcnJ1cHRlZCwgdGhlCnRocmVhZGVkIElSUSBoYW5kbGVyIHZkZWNf dGhyZWFkZWRfaXNyX2hhbmRsZXIoKSBtYXkgZXhlY3V0ZSBjb25jdXJyZW50bHkgb24KYW5vdGhl ciBDUFUgd2hpbGUgaG9sZGluZyBjdHhfbXV0ZXguCgpCZWNhdXNlIGFtbF9zdG9wX3ZkZWNfaHco KSBpcyB1bnByb3RlY3RlZCwgY2FuIGl0IHJlc2V0IHRoZSBoYXJkd2FyZQpjb25jdXJyZW50bHkg d2hpbGUgdGhlIElTUiBpcyBzdGlsbCBpbnRlcmFjdGluZyB3aXRoIGl0PyAKCklmIHRoZSBJU1Ig d3JpdGVzIHRvIERQQl9TVEFUVVNfUkVHIGFmdGVyIHRoZSByZXNldCwgaXQgY291bGQgaW5hZHZl cnRlbnRseQpyZXN0YXJ0IHRoZSBoYXJkd2FyZSBkZWNvZGluZyBwcm9jZXNzLiBUaGlzIG1lYW5z IGEgcmVzdGFydGVkIGhhcmR3YXJlIGJsb2NrCmNvdWxkIGZpcmUgYSBuZXcgaW50ZXJydXB0IGFm dGVyIHN5bmNocm9uaXplX2lycSgpIHJldHVybnMsIGFsbG93aW5nIGEgbmV3CklTUiB0byBydW4g Y29uY3VycmVudGx5IHdpdGggaDI2NF9yZWxlYXNlX2RlY29kZV9zcGVjKCkuCgpXaWxsIHRoaXMg bGVhZCB0byBjb25jdXJyZW50IGRvdWJsZS1mcmVlaW5nIG9mIGNhbnZhcyBpbmRpY2VzPwoKW1Nl dmVyaXR5OiBIaWdoXQpFbmFibGluZyB0aGlzIGRldmljZSBhbHNvIGV4cG9zZXMgYW4gaW5maW5p dGUgbG9vcCByaXNrIGluIHRoZSB0aHJlYWRlZCBJUlEKaGFuZGxlci4gSW4gaDI2NF9jb25maWdf ZGVjb2RlX2J1ZigpLCByZWFkX3BvbGxfdGltZW91dCgpIGlzIGNhbGxlZCB3aXRoIGEKdGltZW91 dCBvZiAwOgoKZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvaDI2NC5jOmgyNjRf Y29uZmlnX2RlY29kZV9idWYoKSB7Ci4uLgoJcmVhZF9wb2xsX3RpbWVvdXQocmVhZF9kb3NfcmVn LCByZWdfdmFsLAoJCQkgICEocmVnX3ZhbCAmIDB4ODAwKSwKCQkJICAxMCwgMCwgdHJ1ZSwgaHcs IEgyNjRfQ09fTUJfUldfQ1RMKTsKLi4uCn0KClRoZSByZWFkX3BvbGxfdGltZW91dCgpIG1hY3Jv IHRyZWF0cyBhIHRpbWVvdXQgb2YgMCBhcyBhbiBpbmZpbml0ZSB3YWl0LgoKU2luY2UgdGhpcyBl eGVjdXRlcyBpbnNpZGUgdGhlIHRocmVhZGVkIGludGVycnVwdCBoYW5kbGVyIG9uIGV2ZXJ5IEgy NjQgZnJhbWUKZGVjb2RlLCBpZiB0aGUgaGFyZHdhcmUgaGFuZ3Mgb3IgdGhlIHJlZ2lzdGVyIGNv bmRpdGlvbiBpcyBuZXZlciBtZXQsCndvdWxkIHRoZSB0aHJlYWQgc3BpbiBpbmRlZmluaXRlbHkg YW5kIGhhbmcgdGhlIHN5c3RlbSBvciBjb25zdW1lIDEwMCUgQ1BVIG9uCnRoZSBJUlEgdGhyZWFk PwoKPiAgCX07Cj4gIH07CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtv LmRldi8jL3BhdGNoc2V0LzIwMjYxMDEyLWI0LXM0LXZkZWMtdXBzdHJlYW0tdjExLTAtMjU5Mzlm ODVhZGE1QGFtbG9naWMuY29tP3BhcnQ9NQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1sb2dp Y0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYW1sb2dpYwo=