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 71BE2C369A9 for ; Thu, 10 Apr 2025 11:16:13 +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-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: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:List-Owner; bh=AuujSb3+pN9HwkeBqFnNFOiXue0q0pnkeMaA8h8u1qQ=; b=m1wgZQUSEQWf14SNir8y84Of6j 8GlnzbDiWtfLuk1euM/WFsQYrxP0zXnwRTgdLDl4ykRQao9Di/v6uxzR1lq5QNRFKj1yf5Zx8veIl GMTm02B11x9CwX28SMMb62yyBFL3Feq8l9N/dSmRdChRlE3Ei491KmShL2m8udNnXVY7O415kHfnS wdYMSpQB4Kd1tBiUArNeqxbIHy2/0SaUXksXV3aNmxHCixG5rHSDA6MYhOGFXmhZBLKwqxllE6s6y yCvjFpw3VDXq7zZFDSMAsPgcYREVfkAXM3VH+Av8OVK1foZv7lmQyq/u5/pNWn0jsdlRBq3v73AWM NCNGnUYw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2psp-0000000AB5N-2vxq; Thu, 10 Apr 2025 11:15:47 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2nnX-00000009r8S-2wlI; Thu, 10 Apr 2025 09:02:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=AuujSb3+pN9HwkeBqFnNFOiXue0q0pnkeMaA8h8u1qQ=; b=hUh7sfQFaPTmc3NWjs7W+dFoHE HYTlxCD+nLHEKrjCoLAsaKK9s2KLnw3PVPG3jf4mpi/OA3BMFq6Ho7YAyvuwyQBYcBdd87l2C2f/2 hrm70SEP/+OmBTKiPft0Xo8ahw8DBCuFX/nExrKftlQ7VMJF4VP9JQi92x58GL8r4aC0/0GP0A6p6 eZs0azEfiBiWd6zCQYsK85Znld+ey62Z4qKahT8tV2t1tjojDFr9nQ0RWbfr39PJHnvp3dEMuu1r3 THYUX2kfuel2jL5dkdjW96FWXAKDnbDSHPojBpcocr7psibhMSbpZRFLTxuXbeiVebNVJ4i+z4cv6 rRwrS3vA==; Received: from i53875b95.versanet.de ([83.135.91.149] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2nnW-0003Mi-7k; Thu, 10 Apr 2025 11:02:10 +0200 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Ulf Hansson , Elaine Zhang , Finley Xiao , Nicolas Frattaroli Cc: Sebastian Reichel , Detlev Casanova , kernel@collabora.com, linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Nicolas Frattaroli , Kever Yang Subject: Re: [PATCH RESEND] pmdomain: rockchip: keep PD_NVM on RK3576 always on Date: Thu, 10 Apr 2025 11:02:09 +0200 Message-ID: <4290403.1IzOArtZ34@diego> In-Reply-To: <20250408-rk3576-emmc-fix-v1-1-3009828b1b31@collabora.com> References: <20250408-rk3576-emmc-fix-v1-1-3009828b1b31@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250410_020211_887426_4769AE6A X-CRM114-Status: GOOD ( 22.98 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Am Dienstag, 8. April 2025, 17:27:01 Mitteleurop=C3=A4ische Sommerzeit schr= ieb Nicolas Frattaroli: > Due to what seemingly is a hardware bug, PD_NVM never comes up quite the > same after being turned off once. The result is that the sdhci > controller will lock up the entire SoC when it's accessing its CQHCI > registers. >=20 > The downstream kernel hacks around this by setting > GENPD_FLAG_RPM_ALWAYS_ON in the mmc host driver, which does not seem > like the right place for this. >=20 > Set GENPD_FLAG_ALWAYS_ON in the pmdomain driver for PD_NVM. I'm using > the non-RPM version of the flag here because I have my doubts a > suspend-resume cycle will fix it. Suspend-resume currently seems busted, > so I couldn't test this. >=20 > Fixes: cfee1b507758 ("pmdomain: rockchip: Add support for RK3576 SoC") > Signed-off-by: Nicolas Frattaroli Can't tell about the underlying hw-specific issue, but this looks like the correct way to make the domain always-on Reviewed-by: Heiko Stuebner > --- > drivers/pmdomain/rockchip/pm-domains.c | 48 ++++++++++++++++++----------= =2D----- > 1 file changed, 26 insertions(+), 22 deletions(-) >=20 > diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/ro= ckchip/pm-domains.c > index 03bcf79a461f5db14173b35c0d110541e6d3f760..2b220b7c77b3d292f49cbc603= 38d3925146fb211 100644 > --- a/drivers/pmdomain/rockchip/pm-domains.c > +++ b/drivers/pmdomain/rockchip/pm-domains.c > @@ -48,6 +48,7 @@ struct rockchip_domain_info { > int ack_mask; > bool active_wakeup; > bool need_regulator; > + bool always_on; > int pwr_w_mask; > int req_w_mask; > int clk_ungate_mask; > @@ -154,7 +155,7 @@ struct rockchip_pmu { > .need_regulator =3D regulator, \ > } > =20 > -#define DOMAIN_M_O_R_G(_name, p_offset, pwr, status, m_offset, m_status,= r_status, r_offset, req, idle, ack, g_mask, wakeup) \ > +#define DOMAIN_M_O_R_G(_name, p_offset, pwr, status, m_offset, m_status,= r_status, r_offset, req, idle, ack, g_mask, wakeup, _always_on) \ > { \ > .name =3D _name, \ > .pwr_offset =3D p_offset, \ > @@ -171,6 +172,7 @@ struct rockchip_pmu { > .clk_ungate_mask =3D (g_mask), \ > .ack_mask =3D (ack), \ > .active_wakeup =3D wakeup, \ > + .always_on =3D _always_on, \ > } > =20 > #define DOMAIN_RK3036(_name, req, ack, idle, wakeup) \ > @@ -204,8 +206,8 @@ struct rockchip_pmu { > #define DOMAIN_RK3568(name, pwr, req, wakeup) \ > DOMAIN_M(name, pwr, pwr, req, req, req, wakeup) > =20 > -#define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, r= eq, idle, g_mask, wakeup) \ > - DOMAIN_M_O_R_G(name, p_offset, pwr, status, 0, r_status, r_status, r_of= fset, req, idle, idle, g_mask, wakeup) > +#define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, r= eq, idle, g_mask, wakeup, always_on) \ > + DOMAIN_M_O_R_G(name, p_offset, pwr, status, 0, r_status, r_status, r_of= fset, req, idle, idle, g_mask, wakeup, always_on) > =20 > /* > * Dynamic Memory Controller may need to coordinate with us -- see > @@ -846,6 +848,8 @@ static int rockchip_pm_add_one_domain(struct rockchip= _pmu *pmu, > pd->genpd.flags =3D GENPD_FLAG_PM_CLK; > if (pd_info->active_wakeup) > pd->genpd.flags |=3D GENPD_FLAG_ACTIVE_WAKEUP; > + if (pd_info->always_on) > + pd->genpd.flags |=3D GENPD_FLAG_ALWAYS_ON; > pm_genpd_init(&pd->genpd, NULL, > !rockchip_pmu_domain_is_on(pd) || > (pd->info->mem_status_mask && !rockchip_pmu_domain_is_mem_on(pd)= )); > @@ -1210,25 +1214,25 @@ static const struct rockchip_domain_info rk3568_p= m_domains[] =3D { > }; > =20 > static const struct rockchip_domain_info rk3576_pm_domains[] =3D { > - [RK3576_PD_NPU] =3D DOMAIN_RK3576("npu", 0x0, BIT(0), BIT(0), 0, = 0x0, 0, 0, 0, false), > - [RK3576_PD_NVM] =3D DOMAIN_RK3576("nvm", 0x0, BIT(6), 0, BIT(= 6), 0x4, BIT(2), BIT(18), BIT(2), false), > - [RK3576_PD_SDGMAC] =3D DOMAIN_RK3576("sdgmac", 0x0, BIT(7), 0, BI= T(7), 0x4, BIT(1), BIT(17), 0x6, false), > - [RK3576_PD_AUDIO] =3D DOMAIN_RK3576("audio", 0x0, BIT(8), 0, BIT= (8), 0x4, BIT(0), BIT(16), BIT(0), false), > - [RK3576_PD_PHP] =3D DOMAIN_RK3576("php", 0x0, BIT(9), 0, BIT(= 9), 0x0, BIT(15), BIT(15), BIT(15), false), > - [RK3576_PD_SUBPHP] =3D DOMAIN_RK3576("subphp", 0x0, BIT(10), 0, BI= T(10), 0x0, 0, 0, 0, false), > - [RK3576_PD_VOP] =3D DOMAIN_RK3576("vop", 0x0, BIT(11), 0, BIT(= 11), 0x0, 0x6000, 0x6000, 0x6000, false), > - [RK3576_PD_VO1] =3D DOMAIN_RK3576("vo1", 0x0, BIT(14), 0, BIT(= 14), 0x0, BIT(12), BIT(12), 0x7000, false), > - [RK3576_PD_VO0] =3D DOMAIN_RK3576("vo0", 0x0, BIT(15), 0, BIT(= 15), 0x0, BIT(11), BIT(11), 0x6800, false), > - [RK3576_PD_USB] =3D DOMAIN_RK3576("usb", 0x4, BIT(0), 0, BIT(= 16), 0x0, BIT(10), BIT(10), 0x6400, true), > - [RK3576_PD_VI] =3D DOMAIN_RK3576("vi", 0x4, BIT(1), 0, BIT(1= 7), 0x0, BIT(9), BIT(9), BIT(9), false), > - [RK3576_PD_VEPU0] =3D DOMAIN_RK3576("vepu0", 0x4, BIT(2), 0, BIT= (18), 0x0, BIT(7), BIT(7), 0x280, false), > - [RK3576_PD_VEPU1] =3D DOMAIN_RK3576("vepu1", 0x4, BIT(3), 0, BIT= (19), 0x0, BIT(8), BIT(8), BIT(8), false), > - [RK3576_PD_VDEC] =3D DOMAIN_RK3576("vdec", 0x4, BIT(4), 0, BIT(= 20), 0x0, BIT(6), BIT(6), BIT(6), false), > - [RK3576_PD_VPU] =3D DOMAIN_RK3576("vpu", 0x4, BIT(5), 0, BIT(= 21), 0x0, BIT(5), BIT(5), BIT(5), false), > - [RK3576_PD_NPUTOP] =3D DOMAIN_RK3576("nputop", 0x4, BIT(6), 0, BI= T(22), 0x0, 0x18, 0x18, 0x18, false), > - [RK3576_PD_NPU0] =3D DOMAIN_RK3576("npu0", 0x4, BIT(7), 0, BIT(= 23), 0x0, BIT(1), BIT(1), 0x1a, false), > - [RK3576_PD_NPU1] =3D DOMAIN_RK3576("npu1", 0x4, BIT(8), 0, BIT(= 24), 0x0, BIT(2), BIT(2), 0x1c, false), > - [RK3576_PD_GPU] =3D DOMAIN_RK3576("gpu", 0x4, BIT(9), 0, BIT(= 25), 0x0, BIT(0), BIT(0), BIT(0), false), > + [RK3576_PD_NPU] =3D DOMAIN_RK3576("npu", 0x0, BIT(0), BIT(0), 0, = 0x0, 0, 0, 0, false, false), > + [RK3576_PD_NVM] =3D DOMAIN_RK3576("nvm", 0x0, BIT(6), 0, BIT(= 6), 0x4, BIT(2), BIT(18), BIT(2), false, true), > + [RK3576_PD_SDGMAC] =3D DOMAIN_RK3576("sdgmac", 0x0, BIT(7), 0, BI= T(7), 0x4, BIT(1), BIT(17), 0x6, false, false), > + [RK3576_PD_AUDIO] =3D DOMAIN_RK3576("audio", 0x0, BIT(8), 0, BIT= (8), 0x4, BIT(0), BIT(16), BIT(0), false, false), > + [RK3576_PD_PHP] =3D DOMAIN_RK3576("php", 0x0, BIT(9), 0, BIT(= 9), 0x0, BIT(15), BIT(15), BIT(15), false, false), > + [RK3576_PD_SUBPHP] =3D DOMAIN_RK3576("subphp", 0x0, BIT(10), 0, BI= T(10), 0x0, 0, 0, 0, false, false), > + [RK3576_PD_VOP] =3D DOMAIN_RK3576("vop", 0x0, BIT(11), 0, BIT(= 11), 0x0, 0x6000, 0x6000, 0x6000, false, false), > + [RK3576_PD_VO1] =3D DOMAIN_RK3576("vo1", 0x0, BIT(14), 0, BIT(= 14), 0x0, BIT(12), BIT(12), 0x7000, false, false), > + [RK3576_PD_VO0] =3D DOMAIN_RK3576("vo0", 0x0, BIT(15), 0, BIT(= 15), 0x0, BIT(11), BIT(11), 0x6800, false, false), > + [RK3576_PD_USB] =3D DOMAIN_RK3576("usb", 0x4, BIT(0), 0, BIT(= 16), 0x0, BIT(10), BIT(10), 0x6400, true, false), > + [RK3576_PD_VI] =3D DOMAIN_RK3576("vi", 0x4, BIT(1), 0, BIT(1= 7), 0x0, BIT(9), BIT(9), BIT(9), false, false), > + [RK3576_PD_VEPU0] =3D DOMAIN_RK3576("vepu0", 0x4, BIT(2), 0, BIT= (18), 0x0, BIT(7), BIT(7), 0x280, false, false), > + [RK3576_PD_VEPU1] =3D DOMAIN_RK3576("vepu1", 0x4, BIT(3), 0, BIT= (19), 0x0, BIT(8), BIT(8), BIT(8), false, false), > + [RK3576_PD_VDEC] =3D DOMAIN_RK3576("vdec", 0x4, BIT(4), 0, BIT(= 20), 0x0, BIT(6), BIT(6), BIT(6), false, false), > + [RK3576_PD_VPU] =3D DOMAIN_RK3576("vpu", 0x4, BIT(5), 0, BIT(= 21), 0x0, BIT(5), BIT(5), BIT(5), false, false), > + [RK3576_PD_NPUTOP] =3D DOMAIN_RK3576("nputop", 0x4, BIT(6), 0, BI= T(22), 0x0, 0x18, 0x18, 0x18, false, false), > + [RK3576_PD_NPU0] =3D DOMAIN_RK3576("npu0", 0x4, BIT(7), 0, BIT(= 23), 0x0, BIT(1), BIT(1), 0x1a, false, false), > + [RK3576_PD_NPU1] =3D DOMAIN_RK3576("npu1", 0x4, BIT(8), 0, BIT(= 24), 0x0, BIT(2), BIT(2), 0x1c, false, false), > + [RK3576_PD_GPU] =3D DOMAIN_RK3576("gpu", 0x4, BIT(9), 0, BIT(= 25), 0x0, BIT(0), BIT(0), BIT(0), false, false), > }; > =20 > static const struct rockchip_domain_info rk3588_pm_domains[] =3D { >=20 > --- > base-commit: 64e9fdfc89a76fed38d8ddeed72d42ec71957ed9 > change-id: 20250317-rk3576-emmc-fix-7dc81a627422 >=20 > Best regards, >=20 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 4D40BC369A6 for ; Thu, 10 Apr 2025 11:16:10 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TcvS93NRPKPOVLWwbqHAw/gtL6k/wnHIlOeU/HEyJes=; b=OUJh3xJ8f7Hemo CPLtL7xVlWqkXoYu67rskVZyUzwf1HY8nL3O9CzfSKlFfyoKEoYUqSJOsO+1DAa49BvvvyAaIXCDw WcVK7fmGLQiu8PmxKuoshCCVPCD/CrQ6wSHJ7IjAvV6SCFkQ9tZL1PgxNbHwQoCZUtrnX96LOUSiT qmacyZnN6ou4vNqaBqO7qSaqTJdX8EHW1bylzrqlXDAfLrZXunBCQC9VJ/5PRtsvSui1UEjnCLVHr uPh0vFBeMCkfHpkZ8Jl94THihlGuH1Mh4c6VIZE9LJZyxfN1y+oROhQlK3d/F5ho9R9HnDQ08GMh+ A+GD6A3Af5oWzfxq0VNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2psq-0000000AB6Q-24aT; Thu, 10 Apr 2025 11:15:48 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2nnX-00000009r8S-2wlI; Thu, 10 Apr 2025 09:02:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=AuujSb3+pN9HwkeBqFnNFOiXue0q0pnkeMaA8h8u1qQ=; b=hUh7sfQFaPTmc3NWjs7W+dFoHE HYTlxCD+nLHEKrjCoLAsaKK9s2KLnw3PVPG3jf4mpi/OA3BMFq6Ho7YAyvuwyQBYcBdd87l2C2f/2 hrm70SEP/+OmBTKiPft0Xo8ahw8DBCuFX/nExrKftlQ7VMJF4VP9JQi92x58GL8r4aC0/0GP0A6p6 eZs0azEfiBiWd6zCQYsK85Znld+ey62Z4qKahT8tV2t1tjojDFr9nQ0RWbfr39PJHnvp3dEMuu1r3 THYUX2kfuel2jL5dkdjW96FWXAKDnbDSHPojBpcocr7psibhMSbpZRFLTxuXbeiVebNVJ4i+z4cv6 rRwrS3vA==; Received: from i53875b95.versanet.de ([83.135.91.149] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2nnW-0003Mi-7k; Thu, 10 Apr 2025 11:02:10 +0200 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Ulf Hansson , Elaine Zhang , Finley Xiao , Nicolas Frattaroli Subject: Re: [PATCH RESEND] pmdomain: rockchip: keep PD_NVM on RK3576 always on Date: Thu, 10 Apr 2025 11:02:09 +0200 Message-ID: <4290403.1IzOArtZ34@diego> In-Reply-To: <20250408-rk3576-emmc-fix-v1-1-3009828b1b31@collabora.com> References: <20250408-rk3576-emmc-fix-v1-1-3009828b1b31@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250410_020211_887426_4769AE6A X-CRM114-Status: GOOD ( 22.98 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Detlev Casanova , linux-pm@vger.kernel.org, Sebastian Reichel , linux-kernel@vger.kernel.org, Kever Yang , linux-rockchip@lists.infradead.org, kernel@collabora.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org QW0gRGllbnN0YWcsIDguIEFwcmlsIDIwMjUsIDE3OjI3OjAxIE1pdHRlbGV1cm9ww6Rpc2NoZSBT b21tZXJ6ZWl0IHNjaHJpZWIgTmljb2xhcyBGcmF0dGFyb2xpOgo+IER1ZSB0byB3aGF0IHNlZW1p bmdseSBpcyBhIGhhcmR3YXJlIGJ1ZywgUERfTlZNIG5ldmVyIGNvbWVzIHVwIHF1aXRlIHRoZQo+ IHNhbWUgYWZ0ZXIgYmVpbmcgdHVybmVkIG9mZiBvbmNlLiBUaGUgcmVzdWx0IGlzIHRoYXQgdGhl IHNkaGNpCj4gY29udHJvbGxlciB3aWxsIGxvY2sgdXAgdGhlIGVudGlyZSBTb0Mgd2hlbiBpdCdz IGFjY2Vzc2luZyBpdHMgQ1FIQ0kKPiByZWdpc3RlcnMuCj4gCj4gVGhlIGRvd25zdHJlYW0ga2Vy bmVsIGhhY2tzIGFyb3VuZCB0aGlzIGJ5IHNldHRpbmcKPiBHRU5QRF9GTEFHX1JQTV9BTFdBWVNf T04gaW4gdGhlIG1tYyBob3N0IGRyaXZlciwgd2hpY2ggZG9lcyBub3Qgc2VlbQo+IGxpa2UgdGhl IHJpZ2h0IHBsYWNlIGZvciB0aGlzLgo+IAo+IFNldCBHRU5QRF9GTEFHX0FMV0FZU19PTiBpbiB0 aGUgcG1kb21haW4gZHJpdmVyIGZvciBQRF9OVk0uIEknbSB1c2luZwo+IHRoZSBub24tUlBNIHZl cnNpb24gb2YgdGhlIGZsYWcgaGVyZSBiZWNhdXNlIEkgaGF2ZSBteSBkb3VidHMgYQo+IHN1c3Bl bmQtcmVzdW1lIGN5Y2xlIHdpbGwgZml4IGl0LiBTdXNwZW5kLXJlc3VtZSBjdXJyZW50bHkgc2Vl bXMgYnVzdGVkLAo+IHNvIEkgY291bGRuJ3QgdGVzdCB0aGlzLgo+IAo+IEZpeGVzOiBjZmVlMWI1 MDc3NTggKCJwbWRvbWFpbjogcm9ja2NoaXA6IEFkZCBzdXBwb3J0IGZvciBSSzM1NzYgU29DIikK PiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMuZnJhdHRhcm9saUBj b2xsYWJvcmEuY29tPgoKQ2FuJ3QgdGVsbCBhYm91dCB0aGUgdW5kZXJseWluZyBody1zcGVjaWZp YyBpc3N1ZSwgYnV0IHRoaXMgbG9va3MgbGlrZQp0aGUgY29ycmVjdCB3YXkgdG8gbWFrZSB0aGUg ZG9tYWluIGFsd2F5cy1vbgoKUmV2aWV3ZWQtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRl Y2guZGU+Cgo+IC0tLQo+ICBkcml2ZXJzL3BtZG9tYWluL3JvY2tjaGlwL3BtLWRvbWFpbnMuYyB8 IDQ4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQs IDI2IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BtZG9tYWluL3JvY2tjaGlwL3BtLWRvbWFpbnMuYyBiL2RyaXZlcnMvcG1kb21haW4vcm9j a2NoaXAvcG0tZG9tYWlucy5jCj4gaW5kZXggMDNiY2Y3OWE0NjFmNWRiMTQxNzNiMzVjMGQxMTA1 NDFlNmQzZjc2MC4uMmIyMjBiN2M3N2IzZDI5MmY0OWNiYzYwMzM4ZDM5MjUxNDZmYjIxMSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3BtZG9tYWluL3JvY2tjaGlwL3BtLWRvbWFpbnMuYwo+ICsrKyBi L2RyaXZlcnMvcG1kb21haW4vcm9ja2NoaXAvcG0tZG9tYWlucy5jCj4gQEAgLTQ4LDYgKzQ4LDcg QEAgc3RydWN0IHJvY2tjaGlwX2RvbWFpbl9pbmZvIHsKPiAgCWludCBhY2tfbWFzazsKPiAgCWJv b2wgYWN0aXZlX3dha2V1cDsKPiAgCWJvb2wgbmVlZF9yZWd1bGF0b3I7Cj4gKwlib29sIGFsd2F5 c19vbjsKPiAgCWludCBwd3Jfd19tYXNrOwo+ICAJaW50IHJlcV93X21hc2s7Cj4gIAlpbnQgY2xr X3VuZ2F0ZV9tYXNrOwo+IEBAIC0xNTQsNyArMTU1LDcgQEAgc3RydWN0IHJvY2tjaGlwX3BtdSB7 Cj4gIAkubmVlZF9yZWd1bGF0b3IgPSByZWd1bGF0b3IsCQkJXAo+ICB9Cj4gIAo+IC0jZGVmaW5l IERPTUFJTl9NX09fUl9HKF9uYW1lLCBwX29mZnNldCwgcHdyLCBzdGF0dXMsIG1fb2Zmc2V0LCBt X3N0YXR1cywgcl9zdGF0dXMsIHJfb2Zmc2V0LCByZXEsIGlkbGUsIGFjaywgZ19tYXNrLCB3YWtl dXApCVwKPiArI2RlZmluZSBET01BSU5fTV9PX1JfRyhfbmFtZSwgcF9vZmZzZXQsIHB3ciwgc3Rh dHVzLCBtX29mZnNldCwgbV9zdGF0dXMsIHJfc3RhdHVzLCByX29mZnNldCwgcmVxLCBpZGxlLCBh Y2ssIGdfbWFzaywgd2FrZXVwLCBfYWx3YXlzX29uKQlcCj4gIHsJCQkJCQkJXAo+ICAJLm5hbWUg PSBfbmFtZSwJCQkJCVwKPiAgCS5wd3Jfb2Zmc2V0ID0gcF9vZmZzZXQsCQkJCVwKPiBAQCAtMTcx LDYgKzE3Miw3IEBAIHN0cnVjdCByb2NrY2hpcF9wbXUgewo+ICAJLmNsa191bmdhdGVfbWFzayA9 IChnX21hc2spLAkJCVwKPiAgCS5hY2tfbWFzayA9IChhY2spLAkJCQlcCj4gIAkuYWN0aXZlX3dh a2V1cCA9IHdha2V1cCwJCQlcCj4gKwkuYWx3YXlzX29uID0gX2Fsd2F5c19vbiwJCQlcCj4gIH0K PiAgCj4gICNkZWZpbmUgRE9NQUlOX1JLMzAzNihfbmFtZSwgcmVxLCBhY2ssIGlkbGUsIHdha2V1 cCkJCVwKPiBAQCAtMjA0LDggKzIwNiw4IEBAIHN0cnVjdCByb2NrY2hpcF9wbXUgewo+ICAjZGVm aW5lIERPTUFJTl9SSzM1NjgobmFtZSwgcHdyLCByZXEsIHdha2V1cCkJCVwKPiAgCURPTUFJTl9N KG5hbWUsIHB3ciwgcHdyLCByZXEsIHJlcSwgcmVxLCB3YWtldXApCj4gIAo+IC0jZGVmaW5lIERP TUFJTl9SSzM1NzYobmFtZSwgcF9vZmZzZXQsIHB3ciwgc3RhdHVzLCByX3N0YXR1cywgcl9vZmZz ZXQsIHJlcSwgaWRsZSwgZ19tYXNrLCB3YWtldXApCVwKPiAtCURPTUFJTl9NX09fUl9HKG5hbWUs IHBfb2Zmc2V0LCBwd3IsIHN0YXR1cywgMCwgcl9zdGF0dXMsIHJfc3RhdHVzLCByX29mZnNldCwg cmVxLCBpZGxlLCBpZGxlLCBnX21hc2ssIHdha2V1cCkKPiArI2RlZmluZSBET01BSU5fUkszNTc2 KG5hbWUsIHBfb2Zmc2V0LCBwd3IsIHN0YXR1cywgcl9zdGF0dXMsIHJfb2Zmc2V0LCByZXEsIGlk bGUsIGdfbWFzaywgd2FrZXVwLCBhbHdheXNfb24pCVwKPiArCURPTUFJTl9NX09fUl9HKG5hbWUs IHBfb2Zmc2V0LCBwd3IsIHN0YXR1cywgMCwgcl9zdGF0dXMsIHJfc3RhdHVzLCByX29mZnNldCwg cmVxLCBpZGxlLCBpZGxlLCBnX21hc2ssIHdha2V1cCwgYWx3YXlzX29uKQo+ICAKPiAgLyoKPiAg ICogRHluYW1pYyBNZW1vcnkgQ29udHJvbGxlciBtYXkgbmVlZCB0byBjb29yZGluYXRlIHdpdGgg dXMgLS0gc2VlCj4gQEAgLTg0Niw2ICs4NDgsOCBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3BtX2Fk ZF9vbmVfZG9tYWluKHN0cnVjdCByb2NrY2hpcF9wbXUgKnBtdSwKPiAgCXBkLT5nZW5wZC5mbGFn cyA9IEdFTlBEX0ZMQUdfUE1fQ0xLOwo+ICAJaWYgKHBkX2luZm8tPmFjdGl2ZV93YWtldXApCj4g IAkJcGQtPmdlbnBkLmZsYWdzIHw9IEdFTlBEX0ZMQUdfQUNUSVZFX1dBS0VVUDsKPiArCWlmIChw ZF9pbmZvLT5hbHdheXNfb24pCj4gKwkJcGQtPmdlbnBkLmZsYWdzIHw9IEdFTlBEX0ZMQUdfQUxX QVlTX09OOwo+ICAJcG1fZ2VucGRfaW5pdCgmcGQtPmdlbnBkLCBOVUxMLAo+ICAJCSAgICAgICFy b2NrY2hpcF9wbXVfZG9tYWluX2lzX29uKHBkKSB8fAo+ICAJCSAgICAgIChwZC0+aW5mby0+bWVt X3N0YXR1c19tYXNrICYmICFyb2NrY2hpcF9wbXVfZG9tYWluX2lzX21lbV9vbihwZCkpKTsKPiBA QCAtMTIxMCwyNSArMTIxNCwyNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2RvbWFp bl9pbmZvIHJrMzU2OF9wbV9kb21haW5zW10gPSB7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IHJvY2tjaGlwX2RvbWFpbl9pbmZvIHJrMzU3Nl9wbV9kb21haW5zW10gPSB7Cj4gLQlb UkszNTc2X1BEX05QVV0JCT0gRE9NQUlOX1JLMzU3NigibnB1IiwgICAgMHgwLCBCSVQoMCksICBC SVQoMCksIDAsICAgICAgIDB4MCwgMCwgICAgICAgMCwgICAgICAgMCwgICAgICAgZmFsc2UpLAo+ IC0JW1JLMzU3Nl9QRF9OVk1dCQk9IERPTUFJTl9SSzM1NzYoIm52bSIsICAgIDB4MCwgQklUKDYp LCAgMCwgICAgICBCSVQoNiksICAweDQsIEJJVCgyKSwgIEJJVCgxOCksIEJJVCgyKSwgIGZhbHNl KSwKPiAtCVtSSzM1NzZfUERfU0RHTUFDXQk9IERPTUFJTl9SSzM1NzYoInNkZ21hYyIsIDB4MCwg QklUKDcpLCAgMCwgICAgICBCSVQoNyksICAweDQsIEJJVCgxKSwgIEJJVCgxNyksIDB4NiwgICAg IGZhbHNlKSwKPiAtCVtSSzM1NzZfUERfQVVESU9dCT0gRE9NQUlOX1JLMzU3NigiYXVkaW8iLCAg MHgwLCBCSVQoOCksICAwLCAgICAgIEJJVCg4KSwgIDB4NCwgQklUKDApLCAgQklUKDE2KSwgQklU KDApLCAgZmFsc2UpLAo+IC0JW1JLMzU3Nl9QRF9QSFBdCQk9IERPTUFJTl9SSzM1NzYoInBocCIs ICAgIDB4MCwgQklUKDkpLCAgMCwgICAgICBCSVQoOSksICAweDAsIEJJVCgxNSksIEJJVCgxNSks IEJJVCgxNSksIGZhbHNlKSwKPiAtCVtSSzM1NzZfUERfU1VCUEhQXQk9IERPTUFJTl9SSzM1NzYo InN1YnBocCIsIDB4MCwgQklUKDEwKSwgMCwgICAgICBCSVQoMTApLCAweDAsIDAsICAgICAgIDAs ICAgICAgIDAsICAgICAgIGZhbHNlKSwKPiAtCVtSSzM1NzZfUERfVk9QXQkJPSBET01BSU5fUksz NTc2KCJ2b3AiLCAgICAweDAsIEJJVCgxMSksIDAsICAgICAgQklUKDExKSwgMHgwLCAweDYwMDAs ICAweDYwMDAsICAweDYwMDAsICBmYWxzZSksCj4gLQlbUkszNTc2X1BEX1ZPMV0JCT0gRE9NQUlO X1JLMzU3Nigidm8xIiwgICAgMHgwLCBCSVQoMTQpLCAwLCAgICAgIEJJVCgxNCksIDB4MCwgQklU KDEyKSwgQklUKDEyKSwgMHg3MDAwLCAgZmFsc2UpLAo+IC0JW1JLMzU3Nl9QRF9WTzBdCQk9IERP TUFJTl9SSzM1NzYoInZvMCIsICAgIDB4MCwgQklUKDE1KSwgMCwgICAgICBCSVQoMTUpLCAweDAs IEJJVCgxMSksIEJJVCgxMSksIDB4NjgwMCwgIGZhbHNlKSwKPiAtCVtSSzM1NzZfUERfVVNCXQkJ PSBET01BSU5fUkszNTc2KCJ1c2IiLCAgICAweDQsIEJJVCgwKSwgIDAsICAgICAgQklUKDE2KSwg MHgwLCBCSVQoMTApLCBCSVQoMTApLCAweDY0MDAsICB0cnVlKSwKPiAtCVtSSzM1NzZfUERfVkld CQk9IERPTUFJTl9SSzM1NzYoInZpIiwgICAgIDB4NCwgQklUKDEpLCAgMCwgICAgICBCSVQoMTcp LCAweDAsIEJJVCg5KSwgIEJJVCg5KSwgIEJJVCg5KSwgIGZhbHNlKSwKPiAtCVtSSzM1NzZfUERf VkVQVTBdCT0gRE9NQUlOX1JLMzU3NigidmVwdTAiLCAgMHg0LCBCSVQoMiksICAwLCAgICAgIEJJ VCgxOCksIDB4MCwgQklUKDcpLCAgQklUKDcpLCAgMHgyODAsICAgZmFsc2UpLAo+IC0JW1JLMzU3 Nl9QRF9WRVBVMV0JPSBET01BSU5fUkszNTc2KCJ2ZXB1MSIsICAweDQsIEJJVCgzKSwgIDAsICAg ICAgQklUKDE5KSwgMHgwLCBCSVQoOCksICBCSVQoOCksICBCSVQoOCksICBmYWxzZSksCj4gLQlb UkszNTc2X1BEX1ZERUNdCT0gRE9NQUlOX1JLMzU3NigidmRlYyIsICAgMHg0LCBCSVQoNCksICAw LCAgICAgIEJJVCgyMCksIDB4MCwgQklUKDYpLCAgQklUKDYpLCAgQklUKDYpLCAgZmFsc2UpLAo+ IC0JW1JLMzU3Nl9QRF9WUFVdCQk9IERPTUFJTl9SSzM1NzYoInZwdSIsICAgIDB4NCwgQklUKDUp LCAgMCwgICAgICBCSVQoMjEpLCAweDAsIEJJVCg1KSwgIEJJVCg1KSwgIEJJVCg1KSwgIGZhbHNl KSwKPiAtCVtSSzM1NzZfUERfTlBVVE9QXQk9IERPTUFJTl9SSzM1NzYoIm5wdXRvcCIsIDB4NCwg QklUKDYpLCAgMCwgICAgICBCSVQoMjIpLCAweDAsIDB4MTgsICAgIDB4MTgsICAgIDB4MTgsICAg IGZhbHNlKSwKPiAtCVtSSzM1NzZfUERfTlBVMF0JPSBET01BSU5fUkszNTc2KCJucHUwIiwgICAw eDQsIEJJVCg3KSwgIDAsICAgICAgQklUKDIzKSwgMHgwLCBCSVQoMSksICBCSVQoMSksICAweDFh LCAgICBmYWxzZSksCj4gLQlbUkszNTc2X1BEX05QVTFdCT0gRE9NQUlOX1JLMzU3NigibnB1MSIs ICAgMHg0LCBCSVQoOCksICAwLCAgICAgIEJJVCgyNCksIDB4MCwgQklUKDIpLCAgQklUKDIpLCAg MHgxYywgICAgZmFsc2UpLAo+IC0JW1JLMzU3Nl9QRF9HUFVdCQk9IERPTUFJTl9SSzM1NzYoImdw dSIsICAgIDB4NCwgQklUKDkpLCAgMCwgICAgICBCSVQoMjUpLCAweDAsIEJJVCgwKSwgIEJJVCgw KSwgIEJJVCgwKSwgIGZhbHNlKSwKPiArCVtSSzM1NzZfUERfTlBVXQkJPSBET01BSU5fUkszNTc2 KCJucHUiLCAgICAweDAsIEJJVCgwKSwgIEJJVCgwKSwgMCwgICAgICAgMHgwLCAwLCAgICAgICAw LCAgICAgICAwLCAgICAgICBmYWxzZSwgZmFsc2UpLAo+ICsJW1JLMzU3Nl9QRF9OVk1dCQk9IERP TUFJTl9SSzM1NzYoIm52bSIsICAgIDB4MCwgQklUKDYpLCAgMCwgICAgICBCSVQoNiksICAweDQs IEJJVCgyKSwgIEJJVCgxOCksIEJJVCgyKSwgIGZhbHNlLCB0cnVlKSwKPiArCVtSSzM1NzZfUERf U0RHTUFDXQk9IERPTUFJTl9SSzM1NzYoInNkZ21hYyIsIDB4MCwgQklUKDcpLCAgMCwgICAgICBC SVQoNyksICAweDQsIEJJVCgxKSwgIEJJVCgxNyksIDB4NiwgICAgIGZhbHNlLCBmYWxzZSksCj4g KwlbUkszNTc2X1BEX0FVRElPXQk9IERPTUFJTl9SSzM1NzYoImF1ZGlvIiwgIDB4MCwgQklUKDgp LCAgMCwgICAgICBCSVQoOCksICAweDQsIEJJVCgwKSwgIEJJVCgxNiksIEJJVCgwKSwgIGZhbHNl LCBmYWxzZSksCj4gKwlbUkszNTc2X1BEX1BIUF0JCT0gRE9NQUlOX1JLMzU3NigicGhwIiwgICAg MHgwLCBCSVQoOSksICAwLCAgICAgIEJJVCg5KSwgIDB4MCwgQklUKDE1KSwgQklUKDE1KSwgQklU KDE1KSwgZmFsc2UsIGZhbHNlKSwKPiArCVtSSzM1NzZfUERfU1VCUEhQXQk9IERPTUFJTl9SSzM1 NzYoInN1YnBocCIsIDB4MCwgQklUKDEwKSwgMCwgICAgICBCSVQoMTApLCAweDAsIDAsICAgICAg IDAsICAgICAgIDAsICAgICAgIGZhbHNlLCBmYWxzZSksCj4gKwlbUkszNTc2X1BEX1ZPUF0JCT0g RE9NQUlOX1JLMzU3Nigidm9wIiwgICAgMHgwLCBCSVQoMTEpLCAwLCAgICAgIEJJVCgxMSksIDB4 MCwgMHg2MDAwLCAgMHg2MDAwLCAgMHg2MDAwLCAgZmFsc2UsIGZhbHNlKSwKPiArCVtSSzM1NzZf UERfVk8xXQkJPSBET01BSU5fUkszNTc2KCJ2bzEiLCAgICAweDAsIEJJVCgxNCksIDAsICAgICAg QklUKDE0KSwgMHgwLCBCSVQoMTIpLCBCSVQoMTIpLCAweDcwMDAsICBmYWxzZSwgZmFsc2UpLAo+ ICsJW1JLMzU3Nl9QRF9WTzBdCQk9IERPTUFJTl9SSzM1NzYoInZvMCIsICAgIDB4MCwgQklUKDE1 KSwgMCwgICAgICBCSVQoMTUpLCAweDAsIEJJVCgxMSksIEJJVCgxMSksIDB4NjgwMCwgIGZhbHNl LCBmYWxzZSksCj4gKwlbUkszNTc2X1BEX1VTQl0JCT0gRE9NQUlOX1JLMzU3NigidXNiIiwgICAg MHg0LCBCSVQoMCksICAwLCAgICAgIEJJVCgxNiksIDB4MCwgQklUKDEwKSwgQklUKDEwKSwgMHg2 NDAwLCAgdHJ1ZSwgIGZhbHNlKSwKPiArCVtSSzM1NzZfUERfVkldCQk9IERPTUFJTl9SSzM1NzYo InZpIiwgICAgIDB4NCwgQklUKDEpLCAgMCwgICAgICBCSVQoMTcpLCAweDAsIEJJVCg5KSwgIEJJ VCg5KSwgIEJJVCg5KSwgIGZhbHNlLCBmYWxzZSksCj4gKwlbUkszNTc2X1BEX1ZFUFUwXQk9IERP TUFJTl9SSzM1NzYoInZlcHUwIiwgIDB4NCwgQklUKDIpLCAgMCwgICAgICBCSVQoMTgpLCAweDAs IEJJVCg3KSwgIEJJVCg3KSwgIDB4MjgwLCAgIGZhbHNlLCBmYWxzZSksCj4gKwlbUkszNTc2X1BE X1ZFUFUxXQk9IERPTUFJTl9SSzM1NzYoInZlcHUxIiwgIDB4NCwgQklUKDMpLCAgMCwgICAgICBC SVQoMTkpLCAweDAsIEJJVCg4KSwgIEJJVCg4KSwgIEJJVCg4KSwgIGZhbHNlLCBmYWxzZSksCj4g KwlbUkszNTc2X1BEX1ZERUNdCT0gRE9NQUlOX1JLMzU3NigidmRlYyIsICAgMHg0LCBCSVQoNCks ICAwLCAgICAgIEJJVCgyMCksIDB4MCwgQklUKDYpLCAgQklUKDYpLCAgQklUKDYpLCAgZmFsc2Us IGZhbHNlKSwKPiArCVtSSzM1NzZfUERfVlBVXQkJPSBET01BSU5fUkszNTc2KCJ2cHUiLCAgICAw eDQsIEJJVCg1KSwgIDAsICAgICAgQklUKDIxKSwgMHgwLCBCSVQoNSksICBCSVQoNSksICBCSVQo NSksICBmYWxzZSwgZmFsc2UpLAo+ICsJW1JLMzU3Nl9QRF9OUFVUT1BdCT0gRE9NQUlOX1JLMzU3 NigibnB1dG9wIiwgMHg0LCBCSVQoNiksICAwLCAgICAgIEJJVCgyMiksIDB4MCwgMHgxOCwgICAg MHgxOCwgICAgMHgxOCwgICAgZmFsc2UsIGZhbHNlKSwKPiArCVtSSzM1NzZfUERfTlBVMF0JPSBE T01BSU5fUkszNTc2KCJucHUwIiwgICAweDQsIEJJVCg3KSwgIDAsICAgICAgQklUKDIzKSwgMHgw LCBCSVQoMSksICBCSVQoMSksICAweDFhLCAgICBmYWxzZSwgZmFsc2UpLAo+ICsJW1JLMzU3Nl9Q RF9OUFUxXQk9IERPTUFJTl9SSzM1NzYoIm5wdTEiLCAgIDB4NCwgQklUKDgpLCAgMCwgICAgICBC SVQoMjQpLCAweDAsIEJJVCgyKSwgIEJJVCgyKSwgIDB4MWMsICAgIGZhbHNlLCBmYWxzZSksCj4g KwlbUkszNTc2X1BEX0dQVV0JCT0gRE9NQUlOX1JLMzU3NigiZ3B1IiwgICAgMHg0LCBCSVQoOSks ICAwLCAgICAgIEJJVCgyNSksIDB4MCwgQklUKDApLCAgQklUKDApLCAgQklUKDApLCAgZmFsc2Us IGZhbHNlKSwKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfZG9tYWlu X2luZm8gcmszNTg4X3BtX2RvbWFpbnNbXSA9IHsKPiAKPiAtLS0KPiBiYXNlLWNvbW1pdDogNjRl OWZkZmM4OWE3NmZlZDM4ZDhkZGVlZDcyZDQyZWM3MTk1N2VkOQo+IGNoYW5nZS1pZDogMjAyNTAz MTctcmszNTc2LWVtbWMtZml4LTdkYzgxYTYyNzQyMgo+IAo+IEJlc3QgcmVnYXJkcywKPiAKCgoK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1y b2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlw Cg==