From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 18B122901 for ; Thu, 9 Nov 2023 10:43:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HgTc1bLb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 929CFC433C7; Thu, 9 Nov 2023 10:43:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699526586; bh=um0NP0x0nrIkTRKAL136Wv2MFuy+v5MKvyXzPkBIAhs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HgTc1bLb1mR1O5tAx89incuO5PZu3jXmEuOpIYZavKWqmfTSablL6ap9C1w3D1JAw zswwHNu/PS1pgU6l1CPpdD+K7l8HNvwwjl0o2aJNiwHa4+k4ghkrgC8OOmtubRHdBB bZkM/Vyywhb9AwJT8TFQU8q1eZQ65rqddaj3AWUJYN0WZQqu2Ia6xERPlRYqdzWE8u lWICifMdazlTsCUnito9oSNnTAeUOKoBBhL2AZLM998CqrbkfJEaBYoM47RoR38AWS K6MHPv/vTWmeKejScauk/WMDeYZQX1ospVMYGZ0BaVw39kxHORPej6I0C1u6mEs6EU jQqJFtajJqoCw== Date: Thu, 9 Nov 2023 16:12:50 +0530 From: Manivannan Sadhasivam To: Dmitry Baryshkov Cc: Can Guo , quic_cang@quicinc.com, bvanassche@acm.org, stanley.chu@mediatek.com, adrian.hunter@intel.com, beanhuo@micron.com, avri.altman@wdc.com, junwoo80.lee@samsung.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, Andy Gross , Bjorn Andersson , Konrad Dybcio , Vinod Koul , Kishon Vijay Abraham I , "open list:ARM/QUALCOMM SUPPORT" , "open list:GENERIC PHY FRAMEWORK" , open list Subject: Re: [PATCH v2 6/7] phy: qualcomm: phy-qcom-qmp-ufs: Add High Speed Gear 5 support for SM8550 Message-ID: <20231109104250.GF3752@thinkpad> References: <1699332374-9324-1-git-send-email-cang@qti.qualcomm.com> <1699332374-9324-7-git-send-email-cang@qti.qualcomm.com> <20231108054942.GF3296@thinkpad> <20231109032418.GA3752@thinkpad> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Thu, Nov 09, 2023 at 11:40:51AM +0200, Dmitry Baryshkov wrote: > On Thu, 9 Nov 2023 at 05:24, Manivannan Sadhasivam wrote: > > > > On Wed, Nov 08, 2023 at 08:56:16AM +0200, Dmitry Baryshkov wrote: > > > On Wed, 8 Nov 2023 at 07:49, Manivannan Sadhasivam wrote: > > > > > > > > On Tue, Nov 07, 2023 at 03:18:09PM +0200, Dmitry Baryshkov wrote: > > > > > On Tue, 7 Nov 2023 at 06:47, Can Guo wrote: > > > > > > > > > > > > From: Can Guo > > > > > > > > > > > > On SM8550, two sets of UFS PHY settings are provided, one set is to support > > > > > > HS-G5, another set is to support HS-G4 and lower gears. The two sets of PHY > > > > > > settings are programming different values to different registers, mixing > > > > > > the two sets and/or overwriting one set with another set is definitely not > > > > > > blessed by UFS PHY designers. In order to add HS-G5 support for SM8550, we > > > > > > need to split the two sets into their dedicated tables, and leave only the > > > > > > common settings in the .tlbs. To have the PHY programmed with the correct > > > > > > set of PHY settings, the submode passed to PHY driver must be either HS-G4 > > > > > > or HS-G5. > > > > > > > > > > > > > > You should also mention that this issue is also present in G4 supported targets. > > > > And a note that it will get fixed later. > > > > > > > > > > Signed-off-by: Can Guo > > > > > > --- > > > > > > drivers/phy/qualcomm/phy-qcom-qmp-pcs-ufs-v6.h | 2 + > > > > > > drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h | 2 + > > > > > > .../qualcomm/phy-qcom-qmp-qserdes-txrx-ufs-v6.h | 12 +++ > > > > > > drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 112 ++++++++++++++++++--- > > > > > > 4 files changed, 115 insertions(+), 13 deletions(-) > > > > > > > > > > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-ufs-v6.h b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-ufs-v6.h > > > > > > index c23d5e4..e563af5 100644 > > > > > > --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-ufs-v6.h > > > > > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-ufs-v6.h > > > > > > @@ -18,6 +18,7 @@ > > > > > > #define QPHY_V6_PCS_UFS_BIST_FIXED_PAT_CTRL 0x060 > > > > > > #define QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY 0x074 > > > > > > #define QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY 0x0bc > > > > > > +#define QPHY_V6_PCS_UFS_RX_HS_G5_SYNC_LENGTH_CAPABILITY 0x12c > > > > > > #define QPHY_V6_PCS_UFS_DEBUG_BUS_CLKSEL 0x158 > > > > > > #define QPHY_V6_PCS_UFS_LINECFG_DISABLE 0x17c > > > > > > #define QPHY_V6_PCS_UFS_RX_MIN_HIBERN8_TIME 0x184 > > > > > > @@ -27,5 +28,6 @@ > > > > > > #define QPHY_V6_PCS_UFS_READY_STATUS 0x1a8 > > > > > > #define QPHY_V6_PCS_UFS_TX_MID_TERM_CTRL1 0x1f4 > > > > > > #define QPHY_V6_PCS_UFS_MULTI_LANE_CTRL1 0x1fc > > > > > > +#define QPHY_V6_PCS_UFS_RX_HSG5_SYNC_WAIT_TIME 0x220 > > > > > > > > > > > > #endif > > > > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h b/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h > > > > > > index f420f8f..ef392ce 100644 > > > > > > --- a/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h > > > > > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h > > > > > > @@ -56,6 +56,8 @@ > > > > > > #define QSERDES_V6_COM_SYS_CLK_CTRL 0xe4 > > > > > > #define QSERDES_V6_COM_SYSCLK_BUF_ENABLE 0xe8 > > > > > > #define QSERDES_V6_COM_PLL_IVCO 0xf4 > > > > > > +#define QSERDES_V6_COM_CMN_IETRIM 0xfc > > > > > > +#define QSERDES_V6_COM_CMN_IPTRIM 0x100 > > > > > > #define QSERDES_V6_COM_SYSCLK_EN_SEL 0x110 > > > > > > #define QSERDES_V6_COM_RESETSM_CNTRL 0x118 > > > > > > #define QSERDES_V6_COM_LOCK_CMP_EN 0x120 > > > > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-txrx-ufs-v6.h b/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-txrx-ufs-v6.h > > > > > > index 15bcb4b..48f31c8 100644 > > > > > > --- a/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-txrx-ufs-v6.h > > > > > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-txrx-ufs-v6.h > > > > > > @@ -10,10 +10,20 @@ > > > > > > #define QSERDES_UFS_V6_TX_RES_CODE_LANE_RX 0x2c > > > > > > #define QSERDES_UFS_V6_TX_RES_CODE_LANE_OFFSET_TX 0x30 > > > > > > #define QSERDES_UFS_V6_TX_RES_CODE_LANE_OFFSET_RX 0x34 > > > > > > +#define QSERDES_UFS_V6_TX_LANE_MODE_1 0x7c > > > > > > +#define QSERDES_UFS_V6_TX_FR_DCC_CTRL 0x108 > > > > > > > > > > > > #define QSERDES_UFS_V6_RX_UCDR_FASTLOCK_FO_GAIN_RATE2 0x08 > > > > > > #define QSERDES_UFS_V6_RX_UCDR_FASTLOCK_FO_GAIN_RATE4 0x10 > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_FASTLOCK_SO_GAIN_RATE4 0x24 > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_FASTLOCK_COUNT_HIGH_RATE4 0x54 > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_FO_GAIN_RATE2 0xd4 > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_FO_GAIN_RATE4 0xdc > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_SO_GAIN_RATE4 0xf0 > > > > > > +#define QSERDES_UFS_V6_RX_UCDR_PI_CONTROLS 0xf4 > > > > > > #define QSERDES_UFS_V6_RX_VGA_CAL_MAN_VAL 0x178 > > > > > > +#define QSERDES_UFS_V6_RX_EQ_OFFSET_ADAPTOR_CNTRL1 0x1bc > > > > > > +#define QSERDES_UFS_V6_RX_OFFSET_ADAPTOR_CNTRL3 0x1c4 > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE_0_1_B0 0x208 > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE_0_1_B1 0x20c > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE_0_1_B3 0x214 > > > > > > @@ -25,6 +35,8 @@ > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE3_B5 0x264 > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE3_B8 0x270 > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE4_B3 0x280 > > > > > > +#define QSERDES_UFS_V6_RX_MODE_RATE4_B4 0x284 > > > > > > #define QSERDES_UFS_V6_RX_MODE_RATE4_B6 0x28c > > > > > > +#define QSERDES_UFS_V6_RX_DLL0_FTUNE_CTRL 0x2f8 > > > > > > > > > > > > #endif > > > > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > > > > > > index 3927eba..e0a01497 100644 > > > > > > --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > > > > > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > > > > > > @@ -649,32 +649,51 @@ static const struct qmp_phy_init_tbl sm8550_ufsphy_serdes[] = { > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_HSCLK_SEL_1, 0x11), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1, 0x00), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP_EN, 0x01), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_VCO_TUNE_MAP, 0x04), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_IVCO, 0x0f), > > > > > > + > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_VCO_TUNE_INITVAL2, 0x00), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_DEC_START_MODE0, 0x41), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_CP_CTRL_MODE0, 0x0a), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_RCTRL_MODE0, 0x18), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CCTRL_MODE0, 0x14), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP1_MODE0, 0x7f), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP2_MODE0, 0x06), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_DEC_START_MODE0, 0x4c), > > > > > > +}; > > > > > > + > > > > > > +static const struct qmp_phy_init_tbl sm8550_ufsphy_hs_b_serdes[] = { > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_VCO_TUNE_MAP, 0x44), > > > > > > +}; > > > > > > + > > > > > > +static const struct qmp_phy_init_tbl sm8550_ufsphy_g4_serdes[] = { > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_VCO_TUNE_MAP, 0x04), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_IVCO, 0x0f), > > > > > > QMP_PHY_INIT_CFG(QSERDES_V6_COM_CP_CTRL_MODE0, 0x0a), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_RCTRL_MODE0, 0x18), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CCTRL_MODE0, 0x14), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP1_MODE0, 0x99), > > > > > > - QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP2_MODE0, 0x07), > > > > > > > > > > Aside from moving these registers to the HS_G4 table, you are also > > > > > changing these registers. It makes me think that there was an error in > > > > > the original programming sequence. > > > > > If that is correct, could you please split the patch into two pieces: > > > > > - Fix programming sequence (add proper Fixes tags) > > > > > - Split G4 and G5 tables. > > > > > > > > Ack > > > > > > > > > > > > > > > + > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_DEC_START_MODE1, 0x4c), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_CP_CTRL_MODE1, 0x0a), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_RCTRL_MODE1, 0x18), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CCTRL_MODE1, 0x14), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP1_MODE1, 0x99), > > > > > > + QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP2_MODE1, 0x07), > > > > > > > > > > I see all the MODE1 registers being only present in G4 and G5 tables. > > > > > Should they be programmed for the modes lower than G4? > > > > > > > > > > > > > We use G4 table for all the modes <= G4. > > > > > > Could you please point me how it's handled? > > > In the patch I see just: > > > > > > if (qmp->submode == UFS_HS_G4) > > > qmp_ufs_serdes_init(qmp, &cfg->tbls_hs_g4); > > > else if (qmp->submode == UFS_HS_G5) > > > qmp_ufs_serdes_init(qmp, &cfg->tbls_hs_g5); > > > > > > Which looks like two special cases (HS_G4 and HS_G5) and nothing for > > > anything else. > > > > > > > Yes, and the UFS driver passes only G4/G5. For all the gears <=G4, G4 init > > sequence will be used and for G5, G5 sequence will be used. > > > > That's what I could not find in the UFS driver. I see a call to > `phy_set_mode_ext(phy, PHY_MODE_UFS_HS_B, host->phy_gear);` and > host->phy_gear is initialised to UFS_HS_G2. > You need to check the UFS driver changes in this series to get the complete picture as the logic is getting changed. It is common to get confused because of the way the UFS driver (qcom mostly) handles the PHY init sequence programming. We used to have only one init sequence for older targets and life was easy. But when I wanted to add G4 support for SM8250, I learned that there are 2 separate init sequences. One for non-G4 and other for G4. So I used the phy_sub_mode property to pass the relevant mode from the UFS driver to the PHY driver and programmed the sequence accordingly. This got extended to non-G5 and G5 now. Now, the UFS driver will start probing from a low gear for older targets (G2) and G4/G5 for newer ones then scale up based on the device and host capability. For older targets, the common table (tbls) will be used if the submode doesn't match G4/G5. But for newer targets, the UFS driver will _only_ pass G4 or G5 as the phy_gear, so those specific sequence will only be used. Hope I'm clear. - Mani > Maybe we should change the condition here (in the PHY driver) to: > > if (qmp->submode <= UFS_HS_G4) > > ? > -- > With best wishes > Dmitry -- மணிவண்ணன் சதாசிவம் 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 A23C8C4332F for ; Thu, 9 Nov 2023 10:43: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: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=BfCgLzaP0wpZ+GJno6ctXJv+V3u2FoCb0RTtxLLULqQ=; b=UKPAdCjNI5yv/i Zh36m+cut8ELuSit0XzzdJtutqzcHw+y1tRqBB4lWpiG54GRFLI0z+B6A/O1ZP2RtNpCrTZTM28XV RvrwH7DMxG8hn8pD7sQryB9s2CqrNqWkl/NDOkZGBkkqSRwOffddNvLNKCWYIdpq0QWxbS0CeUS39 VjpxQCWhw/wntulYvWwr2Va0fljJHXIpRg3E22Ennni/NoGFJQ+27SXfhCfgczuPfI3J4lIm4GZFh lMXid6MNk5yySYVyRk7fCcB1X0JsHPHYHZpLoswYi++98uM0LAcO8qU+yRHSX5inWuQiOSQooS/sF 2Aqq1nzuXCJQ8q5gs8MA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r12VF-005yVh-1D; Thu, 09 Nov 2023 10:43:13 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r12VB-005yUQ-37 for linux-phy@lists.infradead.org; Thu, 09 Nov 2023 10:43:12 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 39042CE12C4; Thu, 9 Nov 2023 10:43:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 929CFC433C7; Thu, 9 Nov 2023 10:43:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699526586; bh=um0NP0x0nrIkTRKAL136Wv2MFuy+v5MKvyXzPkBIAhs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HgTc1bLb1mR1O5tAx89incuO5PZu3jXmEuOpIYZavKWqmfTSablL6ap9C1w3D1JAw zswwHNu/PS1pgU6l1CPpdD+K7l8HNvwwjl0o2aJNiwHa4+k4ghkrgC8OOmtubRHdBB bZkM/Vyywhb9AwJT8TFQU8q1eZQ65rqddaj3AWUJYN0WZQqu2Ia6xERPlRYqdzWE8u lWICifMdazlTsCUnito9oSNnTAeUOKoBBhL2AZLM998CqrbkfJEaBYoM47RoR38AWS K6MHPv/vTWmeKejScauk/WMDeYZQX1ospVMYGZ0BaVw39kxHORPej6I0C1u6mEs6EU jQqJFtajJqoCw== Date: Thu, 9 Nov 2023 16:12:50 +0530 From: Manivannan Sadhasivam To: Dmitry Baryshkov Cc: Can Guo , quic_cang@quicinc.com, bvanassche@acm.org, stanley.chu@mediatek.com, adrian.hunter@intel.com, beanhuo@micron.com, avri.altman@wdc.com, junwoo80.lee@samsung.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, Andy Gross , Bjorn Andersson , Konrad Dybcio , Vinod Koul , Kishon Vijay Abraham I , "open list:ARM/QUALCOMM SUPPORT" , "open list:GENERIC PHY FRAMEWORK" , open list Subject: Re: [PATCH v2 6/7] phy: qualcomm: phy-qcom-qmp-ufs: Add High Speed Gear 5 support for SM8550 Message-ID: <20231109104250.GF3752@thinkpad> References: <1699332374-9324-1-git-send-email-cang@qti.qualcomm.com> <1699332374-9324-7-git-send-email-cang@qti.qualcomm.com> <20231108054942.GF3296@thinkpad> <20231109032418.GA3752@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231109_024310_368695_107F9931 X-CRM114-Status: GOOD ( 49.35 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org T24gVGh1LCBOb3YgMDksIDIwMjMgYXQgMTE6NDA6NTFBTSArMDIwMCwgRG1pdHJ5IEJhcnlzaGtv diB3cm90ZToKPiBPbiBUaHUsIDkgTm92IDIwMjMgYXQgMDU6MjQsIE1hbml2YW5uYW4gU2FkaGFz aXZhbSA8bWFuaUBrZXJuZWwub3JnPiB3cm90ZToKPiA+Cj4gPiBPbiBXZWQsIE5vdiAwOCwgMjAy MyBhdCAwODo1NjoxNkFNICswMjAwLCBEbWl0cnkgQmFyeXNoa292IHdyb3RlOgo+ID4gPiBPbiBX ZWQsIDggTm92IDIwMjMgYXQgMDc6NDksIE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaUBrZXJu ZWwub3JnPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IE9uIFR1ZSwgTm92IDA3LCAyMDIzIGF0IDAz OjE4OjA5UE0gKzAyMDAsIERtaXRyeSBCYXJ5c2hrb3Ygd3JvdGU6Cj4gPiA+ID4gPiBPbiBUdWUs IDcgTm92IDIwMjMgYXQgMDY6NDcsIENhbiBHdW8gPGNhbmdAcXRpLnF1YWxjb21tLmNvbT4gd3Jv dGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEZyb206IENhbiBHdW8gPHF1aWNfY2FuZ0BxdWlj aW5jLmNvbT4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gT24gU004NTUwLCB0d28gc2V0cyBvZiBV RlMgUEhZIHNldHRpbmdzIGFyZSBwcm92aWRlZCwgb25lIHNldCBpcyB0byBzdXBwb3J0Cj4gPiA+ ID4gPiA+IEhTLUc1LCBhbm90aGVyIHNldCBpcyB0byBzdXBwb3J0IEhTLUc0IGFuZCBsb3dlciBn ZWFycy4gVGhlIHR3byBzZXRzIG9mIFBIWQo+ID4gPiA+ID4gPiBzZXR0aW5ncyBhcmUgcHJvZ3Jh bW1pbmcgZGlmZmVyZW50IHZhbHVlcyB0byBkaWZmZXJlbnQgcmVnaXN0ZXJzLCBtaXhpbmcKPiA+ ID4gPiA+ID4gdGhlIHR3byBzZXRzIGFuZC9vciBvdmVyd3JpdGluZyBvbmUgc2V0IHdpdGggYW5v dGhlciBzZXQgaXMgZGVmaW5pdGVseSBub3QKPiA+ID4gPiA+ID4gYmxlc3NlZCBieSBVRlMgUEhZ IGRlc2lnbmVycy4gSW4gb3JkZXIgdG8gYWRkIEhTLUc1IHN1cHBvcnQgZm9yIFNNODU1MCwgd2UK PiA+ID4gPiA+ID4gbmVlZCB0byBzcGxpdCB0aGUgdHdvIHNldHMgaW50byB0aGVpciBkZWRpY2F0 ZWQgdGFibGVzLCBhbmQgbGVhdmUgb25seSB0aGUKPiA+ID4gPiA+ID4gY29tbW9uIHNldHRpbmdz IGluIHRoZSAudGxicy4gVG8gaGF2ZSB0aGUgUEhZIHByb2dyYW1tZWQgd2l0aCB0aGUgY29ycmVj dAo+ID4gPiA+ID4gPiBzZXQgb2YgUEhZIHNldHRpbmdzLCB0aGUgc3VibW9kZSBwYXNzZWQgdG8g UEhZIGRyaXZlciBtdXN0IGJlIGVpdGhlciBIUy1HNAo+ID4gPiA+ID4gPiBvciBIUy1HNS4KPiA+ ID4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IFlvdSBzaG91bGQgYWxzbyBtZW50aW9uIHRoYXQgdGhp cyBpc3N1ZSBpcyBhbHNvIHByZXNlbnQgaW4gRzQgc3VwcG9ydGVkIHRhcmdldHMuCj4gPiA+ID4g QW5kIGEgbm90ZSB0aGF0IGl0IHdpbGwgZ2V0IGZpeGVkIGxhdGVyLgo+ID4gPiA+Cj4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IENhbiBHdW8gPHF1aWNfY2FuZ0BxdWljaW5jLmNvbT4KPiA+ID4g PiA+ID4gLS0tCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAt cGNzLXVmcy12Ni5oICAgICB8ICAgMiArCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BoeS9xdWFsY29t bS9waHktcWNvbS1xbXAtcXNlcmRlcy1jb20tdjYuaCB8ICAgMiArCj4gPiA+ID4gPiA+ICAuLi4v cXVhbGNvbW0vcGh5LXFjb20tcW1wLXFzZXJkZXMtdHhyeC11ZnMtdjYuaCAgICB8ICAxMiArKysK PiA+ID4gPiA+ID4gIGRyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFtcC11ZnMuYyAgICAg ICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKy0tLQo+ID4gPiA+ID4gPiAgNCBmaWxlcyBj aGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAt cGNzLXVmcy12Ni5oIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXBjcy11ZnMt djYuaAo+ID4gPiA+ID4gPiBpbmRleCBjMjNkNWU0Li5lNTYzYWY1IDEwMDY0NAo+ID4gPiA+ID4g PiAtLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtcGNzLXVmcy12Ni5oCj4g PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFtcC1wY3MtdWZz LXY2LmgKPiA+ID4gPiA+ID4gQEAgLTE4LDYgKzE4LDcgQEAKPiA+ID4gPiA+ID4gICNkZWZpbmUg UVBIWV9WNl9QQ1NfVUZTX0JJU1RfRklYRURfUEFUX0NUUkwgICAgICAgICAgICAweDA2MAo+ID4g PiA+ID4gPiAgI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNfVFhfSFNHRUFSX0NBUEFCSUxJVFkgICAg ICAgICAgIDB4MDc0Cj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFQSFlfVjZfUENTX1VGU19SWF9IU0dF QVJfQ0FQQUJJTElUWSAgICAgICAgICAgMHgwYmMKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVBIWV9W Nl9QQ1NfVUZTX1JYX0hTX0c1X1NZTkNfTEVOR1RIX0NBUEFCSUxJVFkgICAgICAgIDB4MTJjCj4g PiA+ID4gPiA+ICAjZGVmaW5lIFFQSFlfVjZfUENTX1VGU19ERUJVR19CVVNfQ0xLU0VMICAgICAg ICAgICAgICAgMHgxNTgKPiA+ID4gPiA+ID4gICNkZWZpbmUgUVBIWV9WNl9QQ1NfVUZTX0xJTkVD RkdfRElTQUJMRSAgICAgICAgICAgICAgICAgICAgICAgIDB4MTdjCj4gPiA+ID4gPiA+ICAjZGVm aW5lIFFQSFlfVjZfUENTX1VGU19SWF9NSU5fSElCRVJOOF9USU1FICAgICAgICAgICAgMHgxODQK PiA+ID4gPiA+ID4gQEAgLTI3LDUgKzI4LDYgQEAKPiA+ID4gPiA+ID4gICNkZWZpbmUgUVBIWV9W Nl9QQ1NfVUZTX1JFQURZX1NUQVRVUyAgICAgICAgICAgICAgICAgICAweDFhOAo+ID4gPiA+ID4g PiAgI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNfVFhfTUlEX1RFUk1fQ1RSTDEgICAgICAgICAgICAg IDB4MWY0Cj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFQSFlfVjZfUENTX1VGU19NVUxUSV9MQU5FX0NU UkwxICAgICAgICAgICAgICAgMHgxZmMKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVBIWV9WNl9QQ1Nf VUZTX1JYX0hTRzVfU1lOQ19XQUlUX1RJTUUgICAgICAgICAweDIyMAo+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiAgI2VuZGlmCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFs Y29tbS9waHktcWNvbS1xbXAtcXNlcmRlcy1jb20tdjYuaCBiL2RyaXZlcnMvcGh5L3F1YWxjb21t L3BoeS1xY29tLXFtcC1xc2VyZGVzLWNvbS12Ni5oCj4gPiA+ID4gPiA+IGluZGV4IGY0MjBmOGYu LmVmMzkyY2UgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3Bo eS1xY29tLXFtcC1xc2VyZGVzLWNvbS12Ni5oCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGh5 L3F1YWxjb21tL3BoeS1xY29tLXFtcC1xc2VyZGVzLWNvbS12Ni5oCj4gPiA+ID4gPiA+IEBAIC01 Niw2ICs1Niw4IEBACj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFTRVJERVNfVjZfQ09NX1NZU19DTEtf Q1RSTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0Cj4gPiA+ID4gPiA+ICAjZGVmaW5l IFFTRVJERVNfVjZfQ09NX1NZU0NMS19CVUZfRU5BQkxFICAgICAgICAgICAgICAgICAgICAgICAw eGU4Cj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFTRVJERVNfVjZfQ09NX1BMTF9JVkNPICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQKPiA+ID4gPiA+ID4gKyNkZWZpbmUg UVNFUkRFU19WNl9DT01fQ01OX0lFVFJJTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 ZmMKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19WNl9DT01fQ01OX0lQVFJJTSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MTAwCj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFTRVJERVNf VjZfQ09NX1NZU0NMS19FTl9TRUwgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExMAo+ID4g PiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1Y2X0NPTV9SRVNFVFNNX0NOVFJMICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgxMTgKPiA+ID4gPiA+ID4gICNkZWZpbmUgUVNFUkRFU19WNl9DT01f TE9DS19DTVBfRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIwCj4gPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtcXNlcmRlcy10 eHJ4LXVmcy12Ni5oIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXFzZXJkZXMt dHhyeC11ZnMtdjYuaAo+ID4gPiA+ID4gPiBpbmRleCAxNWJjYjRiLi40OGYzMWM4IDEwMDY0NAo+ ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtcXNlcmRl cy10eHJ4LXVmcy12Ni5oCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3Bo eS1xY29tLXFtcC1xc2VyZGVzLXR4cngtdWZzLXY2LmgKPiA+ID4gPiA+ID4gQEAgLTEwLDEwICsx MCwyMCBAQAo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9UWF9SRVNfQ09ERV9M QU5FX1JYICAgICAgICAgICAgICAgICAgICAgMHgyYwo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VS REVTX1VGU19WNl9UWF9SRVNfQ09ERV9MQU5FX09GRlNFVF9UWCAgICAgICAgICAgICAgMHgzMAo+ ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9UWF9SRVNfQ09ERV9MQU5FX09GRlNF VF9SWCAgICAgICAgICAgICAgMHgzNAo+ID4gPiA+ID4gPiArI2RlZmluZSBRU0VSREVTX1VGU19W Nl9UWF9MQU5FX01PREVfMSAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3Ywo+ID4gPiA+ID4g PiArI2RlZmluZSBRU0VSREVTX1VGU19WNl9UWF9GUl9EQ0NfQ1RSTCAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgxMDgKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICNkZWZpbmUgUVNFUkRFU19V RlNfVjZfUlhfVUNEUl9GQVNUTE9DS19GT19HQUlOX1JBVEUyICAgICAgICAgIDB4MDgKPiA+ID4g PiA+ID4gICNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GQVNUTE9DS19GT19HQUlOX1JB VEU0ICAgICAgICAgIDB4MTAKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhf VUNEUl9GQVNUTE9DS19TT19HQUlOX1JBVEU0ICAgICAgICAgIDB4MjQKPiA+ID4gPiA+ID4gKyNk ZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GQVNUTE9DS19DT1VOVF9ISUdIX1JBVEU0ICAg ICAgIDB4NTQKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GT19H QUlOX1JBVEUyICAgICAgICAgICAgICAgICAgIDB4ZDQKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNF UkRFU19VRlNfVjZfUlhfVUNEUl9GT19HQUlOX1JBVEU0ICAgICAgICAgICAgICAgICAgIDB4ZGMK PiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9TT19HQUlOX1JBVEU0 ICAgICAgICAgICAgICAgICAgIDB4ZjAKPiA+ID4gPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19VRlNf VjZfUlhfVUNEUl9QSV9DT05UUk9MUyAgICAgICAgICAgICAgICAgICAgIDB4ZjQKPiA+ID4gPiA+ ID4gICNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVkdBX0NBTF9NQU5fVkFMICAgICAgICAgICAg ICAgICAgICAgIDB4MTc4Cj4gPiA+ID4gPiA+ICsjZGVmaW5lIFFTRVJERVNfVUZTX1Y2X1JYX0VR X09GRlNFVF9BREFQVE9SX0NOVFJMMSAgICAgICAgICAgICAweDFiYwo+ID4gPiA+ID4gPiArI2Rl ZmluZSBRU0VSREVTX1VGU19WNl9SWF9PRkZTRVRfQURBUFRPUl9DTlRSTDMgICAgICAgICAgICAg ICAgICAgICAgICAweDFjNAo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9N T0RFX1JBVEVfMF8xX0IwICAgICAgICAgICAgICAgICAgICAgMHgyMDgKPiA+ID4gPiA+ID4gICNk ZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfTU9ERV9SQVRFXzBfMV9CMSAgICAgICAgICAgICAgICAg ICAgIDB4MjBjCj4gPiA+ID4gPiA+ICAjZGVmaW5lIFFTRVJERVNfVUZTX1Y2X1JYX01PREVfUkFU RV8wXzFfQjMgICAgICAgICAgICAgICAgICAgICAweDIxNAo+ID4gPiA+ID4gPiBAQCAtMjUsNiAr MzUsOCBAQAo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEUz X0I1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2NAo+ID4gPiA+ID4gPiAgI2Rl ZmluZSBRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEUzX0I4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDI3MAo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9N T0RFX1JBVEU0X0IzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4MAo+ID4gPiA+ ID4gPiArI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEU0X0I0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDI4NAo+ID4gPiA+ID4gPiAgI2RlZmluZSBRU0VSREVTX1VG U19WNl9SWF9NT0RFX1JBVEU0X0I2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4 Ywo+ID4gPiA+ID4gPiArI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9ETEwwX0ZUVU5FX0NUUkwg ICAgICAgICAgICAgICAgICAgICAgMHgyZjgKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICNlbmRp Zgo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20t cW1wLXVmcy5jIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXVmcy5jCj4gPiA+ ID4gPiA+IGluZGV4IDM5MjdlYmEuLmUwYTAxNDk3IDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9k cml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtdWZzLmMKPiA+ID4gPiA+ID4gKysrIGIv ZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXVmcy5jCj4gPiA+ID4gPiA+IEBAIC02 NDksMzIgKzY0OSw1MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204 NTUwX3Vmc3BoeV9zZXJkZXNbXSA9IHsKPiA+ID4gPiA+ID4gICAgICAgICBRTVBfUEhZX0lOSVRf Q0ZHKFFTRVJERVNfVjZfQ09NX0hTQ0xLX1NFTF8xLCAweDExKSwKPiA+ID4gPiA+ID4gICAgICAg ICBRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0hTQ0xLX0hTX1NXSVRDSF9TRUxfMSwg MHgwMCksCj4gPiA+ID4gPiA+ICAgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NP TV9MT0NLX0NNUF9FTiwgMHgwMSksCj4gPiA+ID4gPiA+IC0gICAgICAgUU1QX1BIWV9JTklUX0NG RyhRU0VSREVTX1Y2X0NPTV9WQ09fVFVORV9NQVAsIDB4MDQpLAo+ID4gPiA+ID4gPiAtICAgICAg IFFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01fUExMX0lWQ08sIDB4MGYpLAo+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ICAgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NP TV9WQ09fVFVORV9JTklUVkFMMiwgMHgwMCksCj4gPiA+ID4gPiA+ICAgICAgICAgUU1QX1BIWV9J TklUX0NGRyhRU0VSREVTX1Y2X0NPTV9ERUNfU1RBUlRfTU9ERTAsIDB4NDEpLAo+ID4gPiA+ID4g PiAtICAgICAgIFFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01fQ1BfQ1RSTF9NT0RFMCwg MHgwYSksCj4gPiA+ID4gPiA+ICAgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NP TV9QTExfUkNUUkxfTU9ERTAsIDB4MTgpLAo+ID4gPiA+ID4gPiAgICAgICAgIFFNUF9QSFlfSU5J VF9DRkcoUVNFUkRFU19WNl9DT01fUExMX0NDVFJMX01PREUwLCAweDE0KSwKPiA+ID4gPiA+ID4g ICAgICAgICBRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0xPQ0tfQ01QMV9NT0RFMCwg MHg3ZiksCj4gPiA+ID4gPiA+ICAgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NP TV9MT0NLX0NNUDJfTU9ERTAsIDB4MDYpLAo+ID4gPiA+ID4gPiAtICAgICAgIFFNUF9QSFlfSU5J VF9DRkcoUVNFUkRFU19WNl9DT01fREVDX1NUQVJUX01PREUwLCAweDRjKSwKPiA+ID4gPiA+ID4g K307Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3Bo eV9pbml0X3RibCBzbTg1NTBfdWZzcGh5X2hzX2Jfc2VyZGVzW10gPSB7Cj4gPiA+ID4gPiA+ICsg ICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9WQ09fVFVORV9NQVAsIDB4NDQp LAo+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBxbXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlfZzRfc2VyZGVzW10gPSB7Cj4g PiA+ID4gPiA+ICsgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9WQ09fVFVO RV9NQVAsIDB4MDQpLAo+ID4gPiA+ID4gPiArICAgICAgIFFNUF9QSFlfSU5JVF9DRkcoUVNFUkRF U19WNl9DT01fUExMX0lWQ08sIDB4MGYpLAo+ID4gPiA+ID4gPiAgICAgICAgIFFNUF9QSFlfSU5J VF9DRkcoUVNFUkRFU19WNl9DT01fQ1BfQ1RSTF9NT0RFMCwgMHgwYSksCj4gPiA+ID4gPiA+IC0g ICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9QTExfUkNUUkxfTU9ERTAsIDB4 MTgpLAo+ID4gPiA+ID4gPiAtICAgICAgIFFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01f UExMX0NDVFJMX01PREUwLCAweDE0KSwKPiA+ID4gPiA+ID4gLSAgICAgICBRTVBfUEhZX0lOSVRf Q0ZHKFFTRVJERVNfVjZfQ09NX0xPQ0tfQ01QMV9NT0RFMCwgMHg5OSksCj4gPiA+ID4gPiA+IC0g ICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9MT0NLX0NNUDJfTU9ERTAsIDB4 MDcpLAo+ID4gPiA+ID4KPiA+ID4gPiA+IEFzaWRlIGZyb20gbW92aW5nIHRoZXNlIHJlZ2lzdGVy cyB0byB0aGUgSFNfRzQgdGFibGUsIHlvdSBhcmUgYWxzbwo+ID4gPiA+ID4gY2hhbmdpbmcgdGhl c2UgcmVnaXN0ZXJzLiBJdCBtYWtlcyBtZSB0aGluayB0aGF0IHRoZXJlIHdhcyBhbiBlcnJvciBp bgo+ID4gPiA+ID4gdGhlIG9yaWdpbmFsIHByb2dyYW1taW5nIHNlcXVlbmNlLgo+ID4gPiA+ID4g SWYgdGhhdCBpcyBjb3JyZWN0LCBjb3VsZCB5b3UgcGxlYXNlIHNwbGl0IHRoZSBwYXRjaCBpbnRv IHR3byBwaWVjZXM6Cj4gPiA+ID4gPiAtIEZpeCBwcm9ncmFtbWluZyBzZXF1ZW5jZSAoYWRkIHBy b3BlciBGaXhlcyB0YWdzKQo+ID4gPiA+ID4gLSBTcGxpdCBHNCBhbmQgRzUgdGFibGVzLgo+ID4g PiA+Cj4gPiA+ID4gQWNrCj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gKyAgICAgICBRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0RFQ19TVEFSVF9NT0RF MSwgMHg0YyksCj4gPiA+ID4gPiA+ICsgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2 X0NPTV9DUF9DVFJMX01PREUxLCAweDBhKSwKPiA+ID4gPiA+ID4gKyAgICAgICBRTVBfUEhZX0lO SVRfQ0ZHKFFTRVJERVNfVjZfQ09NX1BMTF9SQ1RSTF9NT0RFMSwgMHgxOCksCj4gPiA+ID4gPiA+ ICsgICAgICAgUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9QTExfQ0NUUkxfTU9ERTEs IDB4MTQpLAo+ID4gPiA+ID4gPiArICAgICAgIFFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9D T01fTE9DS19DTVAxX01PREUxLCAweDk5KSwKPiA+ID4gPiA+ID4gKyAgICAgICBRTVBfUEhZX0lO SVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0xPQ0tfQ01QMl9NT0RFMSwgMHgwNyksCj4gPiA+ID4gPgo+ ID4gPiA+ID4gSSBzZWUgYWxsIHRoZSBNT0RFMSByZWdpc3RlcnMgYmVpbmcgb25seSBwcmVzZW50 IGluIEc0IGFuZCBHNSB0YWJsZXMuCj4gPiA+ID4gPiBTaG91bGQgdGhleSBiZSBwcm9ncmFtbWVk IGZvciB0aGUgbW9kZXMgbG93ZXIgdGhhbiBHND8KPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBX ZSB1c2UgRzQgdGFibGUgZm9yIGFsbCB0aGUgbW9kZXMgPD0gRzQuCj4gPiA+Cj4gPiA+IENvdWxk IHlvdSBwbGVhc2UgcG9pbnQgbWUgaG93IGl0J3MgaGFuZGxlZD8KPiA+ID4gSW4gdGhlIHBhdGNo IEkgc2VlIGp1c3Q6Cj4gPiA+Cj4gPiA+ICAgICAgICBpZiAocW1wLT5zdWJtb2RlID09IFVGU19I U19HNCkKPiA+ID4gICAgICAgICAgICAgICAgcW1wX3Vmc19zZXJkZXNfaW5pdChxbXAsICZjZmct PnRibHNfaHNfZzQpOwo+ID4gPiAgICAgICAgZWxzZSBpZiAocW1wLT5zdWJtb2RlID09IFVGU19I U19HNSkKPiA+ID4gICAgICAgICAgICAgICAgcW1wX3Vmc19zZXJkZXNfaW5pdChxbXAsICZjZmct PnRibHNfaHNfZzUpOwo+ID4gPgo+ID4gPiBXaGljaCBsb29rcyBsaWtlIHR3byBzcGVjaWFsIGNh c2VzIChIU19HNCBhbmQgSFNfRzUpIGFuZCBub3RoaW5nIGZvcgo+ID4gPiBhbnl0aGluZyBlbHNl Lgo+ID4gPgo+ID4KPiA+IFllcywgYW5kIHRoZSBVRlMgZHJpdmVyIHBhc3NlcyBvbmx5IEc0L0c1 LiBGb3IgYWxsIHRoZSBnZWFycyA8PUc0LCBHNCBpbml0Cj4gPiBzZXF1ZW5jZSB3aWxsIGJlIHVz ZWQgYW5kIGZvciBHNSwgRzUgc2VxdWVuY2Ugd2lsbCBiZSB1c2VkLgo+ID4KPiAKPiBUaGF0J3Mg d2hhdCBJIGNvdWxkIG5vdCBmaW5kIGluIHRoZSBVRlMgZHJpdmVyLiBJIHNlZSBhIGNhbGwgdG8K PiBgcGh5X3NldF9tb2RlX2V4dChwaHksIFBIWV9NT0RFX1VGU19IU19CLCBob3N0LT5waHlfZ2Vh cik7YCBhbmQKPiBob3N0LT5waHlfZ2VhciBpcyBpbml0aWFsaXNlZCB0byBVRlNfSFNfRzIuCj4g CgpZb3UgbmVlZCB0byBjaGVjayB0aGUgVUZTIGRyaXZlciBjaGFuZ2VzIGluIHRoaXMgc2VyaWVz IHRvIGdldCB0aGUgY29tcGxldGUKcGljdHVyZSBhcyB0aGUgbG9naWMgaXMgZ2V0dGluZyBjaGFu Z2VkLgoKSXQgaXMgY29tbW9uIHRvIGdldCBjb25mdXNlZCBiZWNhdXNlIG9mIHRoZSB3YXkgdGhl IFVGUyBkcml2ZXIgKHFjb20gbW9zdGx5KQpoYW5kbGVzIHRoZSBQSFkgaW5pdCBzZXF1ZW5jZSBw cm9ncmFtbWluZy4gV2UgdXNlZCB0byBoYXZlIG9ubHkgb25lIGluaXQKc2VxdWVuY2UgZm9yIG9s ZGVyIHRhcmdldHMgYW5kIGxpZmUgd2FzIGVhc3kuIEJ1dCB3aGVuIEkgd2FudGVkIHRvIGFkZCBH NApzdXBwb3J0IGZvciBTTTgyNTAsIEkgbGVhcm5lZCB0aGF0IHRoZXJlIGFyZSAyIHNlcGFyYXRl IGluaXQgc2VxdWVuY2VzLiBPbmUgZm9yCm5vbi1HNCBhbmQgb3RoZXIgZm9yIEc0LiBTbyBJIHVz ZWQgdGhlIHBoeV9zdWJfbW9kZSBwcm9wZXJ0eSB0byBwYXNzIHRoZQpyZWxldmFudCBtb2RlIGZy b20gdGhlIFVGUyBkcml2ZXIgdG8gdGhlIFBIWSBkcml2ZXIgYW5kIHByb2dyYW1tZWQgdGhlIHNl cXVlbmNlCmFjY29yZGluZ2x5LiBUaGlzIGdvdCBleHRlbmRlZCB0byBub24tRzUgYW5kIEc1IG5v dy4KCk5vdywgdGhlIFVGUyBkcml2ZXIgd2lsbCBzdGFydCBwcm9iaW5nIGZyb20gYSBsb3cgZ2Vh ciBmb3Igb2xkZXIgdGFyZ2V0cyAoRzIpCmFuZCBHNC9HNSBmb3IgbmV3ZXIgb25lcyB0aGVuIHNj YWxlIHVwIGJhc2VkIG9uIHRoZSBkZXZpY2UgYW5kIGhvc3QgY2FwYWJpbGl0eS4KRm9yIG9sZGVy IHRhcmdldHMsIHRoZSBjb21tb24gdGFibGUgKHRibHMpIHdpbGwgYmUgdXNlZCBpZiB0aGUgc3Vi bW9kZSBkb2Vzbid0Cm1hdGNoIEc0L0c1LiBCdXQgZm9yIG5ld2VyIHRhcmdldHMsIHRoZSBVRlMg ZHJpdmVyIHdpbGwgX29ubHlfIHBhc3MgRzQgb3IgRzUgYXMKdGhlIHBoeV9nZWFyLCBzbyB0aG9z ZSBzcGVjaWZpYyBzZXF1ZW5jZSB3aWxsIG9ubHkgYmUgdXNlZC4KCkhvcGUgSSdtIGNsZWFyLgoK LSBNYW5pCgo+IE1heWJlIHdlIHNob3VsZCBjaGFuZ2UgdGhlIGNvbmRpdGlvbiBoZXJlIChpbiB0 aGUgUEhZIGRyaXZlcikgdG86Cj4gCj4gaWYgKHFtcC0+c3VibW9kZSA8PSBVRlNfSFNfRzQpCj4g Cj4gPwo+IC0tIAo+IFdpdGggYmVzdCB3aXNoZXMKPiBEbWl0cnkKCi0tIArgrq7grqPgrr/grrXg rqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgotLSAKbGludXgtcGh5IG1h aWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK