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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD2A9C433ED for ; Tue, 11 May 2021 12:40:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9D1A661622 for ; Tue, 11 May 2021 12:40:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231262AbhEKMmE (ORCPT ); Tue, 11 May 2021 08:42:04 -0400 Received: from mga06.intel.com ([134.134.136.31]:13352 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230436AbhEKMmD (ORCPT ); Tue, 11 May 2021 08:42:03 -0400 IronPort-SDR: pysKYhdEoPYKFzI7Nc0A8aziFXsSjBvXPl+nupOnf5Hujid0pt3HA2dV/Pr42tL+W9Ov8XcT2z /phuHlGNq2tg== X-IronPort-AV: E=McAfee;i="6200,9189,9980"; a="260692222" X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="260692222" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2021 05:40:40 -0700 IronPort-SDR: cLZSzduEwAzCFr+a5a+Xy/Z6a+lpXIl9Q7+qxiw5jzqngA3arR7JJIpmPpDlB+rZRF0CfOfCB1 JfGyHaQG50SQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="541634012" Received: from ahunter-desktop.fi.intel.com (HELO [10.237.72.174]) ([10.237.72.174]) by orsmga004.jf.intel.com with ESMTP; 11 May 2021 05:40:37 -0700 Subject: Re: [PATCH v2 2/3] mmc: sdhci-esdhc-imx: advertise HS400 mode through MMC caps To: Lucas Stach , Bough Chen , Ulf Hansson Cc: Rob Herring , dl-linux-imx , "kernel@pengutronix.de" , "linux-mmc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20210510190400.105162-1-l.stach@pengutronix.de> <20210510190400.105162-2-l.stach@pengutronix.de> <8b7ab5139fea41caf15b398ec975ed71229dfd5d.camel@pengutronix.de> From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Message-ID: <2269d9ee-9ca0-a1b7-666e-8f2d9bae51d3@intel.com> Date: Tue, 11 May 2021 15:40:55 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <8b7ab5139fea41caf15b398ec975ed71229dfd5d.camel@pengutronix.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 11/05/21 11:18 am, Lucas Stach wrote: > Am Dienstag, dem 11.05.2021 um 03:00 +0000 schrieb Bough Chen: >>> -----Original Message----- >>> From: Lucas Stach [mailto:l.stach@pengutronix.de] >>> Sent: 2021年5月11日 3:04 >>> To: Ulf Hansson ; Adrian Hunter >>> ; Bough Chen >>> Cc: Rob Herring ; dl-linux-imx ; >>> kernel@pengutronix.de; linux-mmc@vger.kernel.org; >>> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org >>> Subject: [PATCH v2 2/3] mmc: sdhci-esdhc-imx: advertise HS400 mode through >>> MMC caps >>> >>> Instead of having an indirection through the SDHCI layer and emulating a >>> capability bit, that isn't there in hardware, do the same same thing as >> with >>> HS400_ES and advertise the support for HS400 directly through the MMC >> caps. >>> >>> Signed-off-by: Lucas Stach >>> --- >>>  drivers/mmc/host/sdhci-esdhc-imx.c | 5 +---- >>>  1 file changed, 1 insertion(+), 4 deletions(-) >>> >>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c >>> b/drivers/mmc/host/sdhci-esdhc-imx.c >>> index a20459744d21..65a52586db36 100644 >>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c >>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c >>> @@ -427,9 +427,6 @@ static u32 esdhc_readl_le(struct sdhci_host *host, int >>> reg) >>>   | >> FIELD_PREP(SDHCI_RETUNING_MODE_MASK, >>>   SDHCI_TUNING_MODE_3); >>> >>> - if (imx_data->socdata->flags & ESDHC_FLAG_HS400) >>> - val |= SDHCI_SUPPORT_HS400; >>> - >>>   /* >>>   * Do not advertise faster UHS modes if there are no >>>   * pinctrl states for 100MHz/200MHz. >>> @@ -1603,7 +1600,7 @@ static int sdhci_esdhc_imx_probe(struct >>> platform_device *pdev) >>>   host->quirks |= SDHCI_QUIRK_BROKEN_ADMA; >>> >>>   if (imx_data->socdata->flags & ESDHC_FLAG_HS400) >>> - host->quirks2 |= SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400; >>> + host->mmc->caps2 |= MMC_CAP2_HS400; >> >> Hi Lucas, >> >> I think patch1 and patch 2 are enough to cover your requirement. >> For this patch, I think it's unnecessary, sdhci-esdhc-imx.c need to reuse >> sdhci.c as much as possible. >> In sdhci.c, already contain the following logic. >> >>          if (host->quirks2 & SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 && >>              (host->caps1 & SDHCI_SUPPORT_HS400)) >>                  mmc->caps2 |= MMC_CAP2_HS400; >> >> The reason why we directly use host->mmc->caps2 for HS400ES mode is that >> sdhci.c do not contain the similar logic. > > No, it's not enough. We call mmc_of_parse(), which clears the HS400 > flags, before sdhci_setup_host() is called, which will then add the > HS400 flags again. So either I still need to evaluate the DT property > in the esdhc driver to make it return the right emulated SDHCI caps bit > for the HS400 case, or do it like in this patch. > > While the way it is done here is a bit of a layering violation between We see SDHCI as more of a library, not a layer, so this is OK > SDHCI and MMC, it still feels like the cleaner and more straight > forward solution. > > Regards, > Lucas > 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 X-Spam-Level: X-Spam-Status: No, score=-16.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BB59C433ED for ; Tue, 11 May 2021 13:35:42 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B28ED6127A for ; Tue, 11 May 2021 13:35:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B28ED6127A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=yhetI18SjLV759/hChimbEUhXQkeV4AsBwf//VuOgPg=; b=pM47r2tkFe/ZOSZZdOFIoelnX jwaWOJfbPx1Ll35hV9nzUWQYCEK9BDRFMxvQ05TcnvQ5vsYj4gSS+jUD/Pb1nd6sDCiVqm6UCujLy mOVznyY88wy7PYBh0VEyQF5cDpM8WjPnR9FACeaaRoL8zXGCMCYXaiDo3IopCV7Zn8fM0SQqvKuci 0GPLKp0onRT+rSCojLm4VXIy1Xugc4YmpRSSyRTHkqmqAwxUzD5sPcUnTLTV2KGDFts0l3GmxV7B8 vdENza4/7ai2M9Tv1BNRiEBRXGmoHfZ4X+dPzoJdn93xSEy80xUrutCvTKOrFL+/F8ELmKZmSpUlB Zutnr1x8w==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lgSWY-0009p7-J6; Tue, 11 May 2021 13:34:11 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lgRh6-00HRD6-PU for linux-arm-kernel@desiato.infradead.org; Tue, 11 May 2021 12:41:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=ct0m+/hgIF3V/r3DH1ksUv5s8luuuZgslnFp6U579rI=; b=wKxf1wigm+Wh4mPSSaT7P0P4Py GEcWkhcS4Op6WcHIYLaYwjj6cO+04Rlrz3VBQYCMC8qTpm+dTSpPZy6U1QwQs2+6mwDnuVCtJlw0f jnYzNaRjue4WX+2gB5sIVDZICRUH+BjxScPdd1BvIP9ijx+ndsWuOXlgG7ap5ZIiKc+1M7X60nMur 9YAtVM7pcjRhBAgf+/D+cAGFtIkRQpuqN7wg3w5tb8uzhSRC0G6XCADmzX6R4jGXA92QuwDEOnRUu ADblV9TyTy91WAi1HevmZaE7a/C83byoJVzovziWGjCSZK3OTmpFbT4m3lVeezkjLewKaIOoRa/3K oCnRRcog==; Received: from mga17.intel.com ([192.55.52.151]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lgRh3-009Zy7-As for linux-arm-kernel@lists.infradead.org; Tue, 11 May 2021 12:40:58 +0000 IronPort-SDR: ualPzvz6GdA+/qZgALG7UxfH3Koc7+wpV2/m15g3ROLkjcCqgnjJeeZ8/k3JvLCETb14lyV3Ng c9B9UG60MNUw== X-IronPort-AV: E=McAfee;i="6200,9189,9980"; a="179693204" X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="179693204" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2021 05:40:40 -0700 IronPort-SDR: cLZSzduEwAzCFr+a5a+Xy/Z6a+lpXIl9Q7+qxiw5jzqngA3arR7JJIpmPpDlB+rZRF0CfOfCB1 JfGyHaQG50SQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="541634012" Received: from ahunter-desktop.fi.intel.com (HELO [10.237.72.174]) ([10.237.72.174]) by orsmga004.jf.intel.com with ESMTP; 11 May 2021 05:40:37 -0700 Subject: Re: [PATCH v2 2/3] mmc: sdhci-esdhc-imx: advertise HS400 mode through MMC caps To: Lucas Stach , Bough Chen , Ulf Hansson Cc: Rob Herring , dl-linux-imx , "kernel@pengutronix.de" , "linux-mmc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20210510190400.105162-1-l.stach@pengutronix.de> <20210510190400.105162-2-l.stach@pengutronix.de> <8b7ab5139fea41caf15b398ec975ed71229dfd5d.camel@pengutronix.de> From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Message-ID: <2269d9ee-9ca0-a1b7-666e-8f2d9bae51d3@intel.com> Date: Tue, 11 May 2021 15:40:55 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <8b7ab5139fea41caf15b398ec975ed71229dfd5d.camel@pengutronix.de> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210511_054057_413020_FBB25140 X-CRM114-Status: GOOD ( 21.81 ) 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 T24gMTEvMDUvMjEgMTE6MTggYW0sIEx1Y2FzIFN0YWNoIHdyb3RlOgo+IEFtIERpZW5zdGFnLCBk ZW0gMTEuMDUuMjAyMSB1bSAwMzowMCArMDAwMCBzY2hyaWViIEJvdWdoIENoZW46Cj4+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4gRnJvbTogTHVjYXMgU3RhY2ggW21haWx0bzpsLnN0 YWNoQHBlbmd1dHJvbml4LmRlXQo+Pj4gU2VudDogMjAyMeW5tDXmnIgxMeaXpSAzOjA0Cj4+PiBU bzogVWxmIEhhbnNzb24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+OyBBZHJpYW4gSHVudGVyCj4+ PiA8YWRyaWFuLmh1bnRlckBpbnRlbC5jb20+OyBCb3VnaCBDaGVuIDxoYWliby5jaGVuQG54cC5j b20+Cj4+PiBDYzogUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2VybmVsLm9yZz47IGRsLWxpbnV4LWlt eCA8bGludXgtaW14QG54cC5jb20+Owo+Pj4ga2VybmVsQHBlbmd1dHJvbml4LmRlOyBsaW51eC1t bWNAdmdlci5rZXJuZWwub3JnOwo+Pj4gZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+Pj4gU3ViamVjdDogW1BBVENIIHYyIDIv M10gbW1jOiBzZGhjaS1lc2RoYy1pbXg6IGFkdmVydGlzZSBIUzQwMCBtb2RlIHRocm91Z2gKPj4+ IE1NQyBjYXBzCj4+Pgo+Pj4gSW5zdGVhZCBvZiBoYXZpbmcgYW4gaW5kaXJlY3Rpb24gdGhyb3Vn aCB0aGUgU0RIQ0kgbGF5ZXIgYW5kIGVtdWxhdGluZyBhCj4+PiBjYXBhYmlsaXR5IGJpdCwgdGhh dCBpc24ndCB0aGVyZSBpbiBoYXJkd2FyZSwgZG8gdGhlIHNhbWUgc2FtZSB0aGluZyBhcwo+PiB3 aXRoCj4+PiBIUzQwMF9FUyBhbmQgYWR2ZXJ0aXNlIHRoZSBzdXBwb3J0IGZvciBIUzQwMCBkaXJl Y3RseSB0aHJvdWdoIHRoZSBNTUMKPj4gY2Fwcy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBMdWNh cyBTdGFjaCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT4KPj4+IC0tLQo+Pj4gwqBkcml2ZXJzL21t Yy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jIHwgNSArLS0tLQo+Pj4gwqAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDQgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMKPj4+IGIvZHJpdmVycy9tbWMvaG9zdC9zZGhj aS1lc2RoYy1pbXguYwo+Pj4gaW5kZXggYTIwNDU5NzQ0ZDIxLi42NWE1MjU4NmRiMzYgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jCj4+PiArKysgYi9k cml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jCj4+PiBAQCAtNDI3LDkgKzQyNyw2IEBA IHN0YXRpYyB1MzIgZXNkaGNfcmVhZGxfbGUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIGludAo+ Pj4gcmVnKQo+Pj4gwqAJCQkJCXwKPj4gRklFTERfUFJFUChTREhDSV9SRVRVTklOR19NT0RFX01B U0ssCj4+PiDCoAkJCQkJCSAgICAgU0RIQ0lfVFVOSU5HX01PREVfMyk7Cj4+Pgo+Pj4gLQkJCWlm IChpbXhfZGF0YS0+c29jZGF0YS0+ZmxhZ3MgJiBFU0RIQ19GTEFHX0hTNDAwKQo+Pj4gLQkJCQl2 YWwgfD0gU0RIQ0lfU1VQUE9SVF9IUzQwMDsKPj4+IC0KPj4+IMKgCQkJLyoKPj4+IMKgCQkJICog RG8gbm90IGFkdmVydGlzZSBmYXN0ZXIgVUhTIG1vZGVzIGlmIHRoZXJlIGFyZSBubwo+Pj4gwqAJ CQkgKiBwaW5jdHJsIHN0YXRlcyBmb3IgMTAwTUh6LzIwME1Iei4KPj4+IEBAIC0xNjAzLDcgKzE2 MDAsNyBAQCBzdGF0aWMgaW50IHNkaGNpX2VzZGhjX2lteF9wcm9iZShzdHJ1Y3QKPj4+IHBsYXRm b3JtX2RldmljZSAqcGRldikKPj4+IMKgCQlob3N0LT5xdWlya3MgfD0gU0RIQ0lfUVVJUktfQlJP S0VOX0FETUE7Cj4+Pgo+Pj4gwqAJaWYgKGlteF9kYXRhLT5zb2NkYXRhLT5mbGFncyAmIEVTREhD X0ZMQUdfSFM0MDApCj4+PiAtCQlob3N0LT5xdWlya3MyIHw9IFNESENJX1FVSVJLMl9DQVBTX0JJ VDYzX0ZPUl9IUzQwMDsKPj4+ICsJCWhvc3QtPm1tYy0+Y2FwczIgfD0gTU1DX0NBUDJfSFM0MDA7 Cj4+Cj4+IEhpIEx1Y2FzLAo+Pgo+PiBJIHRoaW5rIHBhdGNoMSBhbmQgcGF0Y2ggMiBhcmUgZW5v dWdoIHRvIGNvdmVyIHlvdXIgcmVxdWlyZW1lbnQuCj4+IEZvciB0aGlzIHBhdGNoLCBJIHRoaW5r IGl0J3MgdW5uZWNlc3NhcnksIHNkaGNpLWVzZGhjLWlteC5jIG5lZWQgdG8gcmV1c2UKPj4gc2Ro Y2kuYyBhcyBtdWNoIGFzIHBvc3NpYmxlLgo+PiBJbiBzZGhjaS5jLCBhbHJlYWR5IGNvbnRhaW4g dGhlIGZvbGxvd2luZyBsb2dpYy4gCj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoGlmIChob3N0LT5x dWlya3MyICYgU0RIQ0lfUVVJUksyX0NBUFNfQklUNjNfRk9SX0hTNDAwICYmCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgKGhvc3QtPmNhcHMxICYgU0RIQ0lfU1VQUE9SVF9IUzQwMCkpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtbWMtPmNhcHMyIHw9IE1NQ19DQVAy X0hTNDAwOwo+Pgo+PiBUaGUgcmVhc29uIHdoeSB3ZSBkaXJlY3RseSB1c2UgaG9zdC0+bW1jLT5j YXBzMiBmb3IgSFM0MDBFUyBtb2RlIGlzIHRoYXQKPj4gc2RoY2kuYyBkbyBub3QgY29udGFpbiB0 aGUgc2ltaWxhciBsb2dpYy4KPiAKPiBObywgaXQncyBub3QgZW5vdWdoLiBXZSBjYWxsIG1tY19v Zl9wYXJzZSgpLCB3aGljaCBjbGVhcnMgdGhlIEhTNDAwCj4gZmxhZ3MsIGJlZm9yZSBzZGhjaV9z ZXR1cF9ob3N0KCkgaXMgY2FsbGVkLCB3aGljaCB3aWxsIHRoZW4gYWRkIHRoZQo+IEhTNDAwIGZs YWdzIGFnYWluLiBTbyBlaXRoZXIgSSBzdGlsbCBuZWVkIHRvIGV2YWx1YXRlIHRoZSBEVCBwcm9w ZXJ0eQo+IGluIHRoZSBlc2RoYyBkcml2ZXIgdG8gbWFrZSBpdCByZXR1cm4gdGhlIHJpZ2h0IGVt dWxhdGVkIFNESENJIGNhcHMgYml0Cj4gZm9yIHRoZSBIUzQwMCBjYXNlLCBvciBkbyBpdCBsaWtl IGluIHRoaXMgcGF0Y2guCj4gCj4gV2hpbGUgdGhlIHdheSBpdCBpcyBkb25lIGhlcmUgaXMgYSBi aXQgb2YgYSBsYXllcmluZyB2aW9sYXRpb24gYmV0d2VlbgoKV2Ugc2VlIFNESENJIGFzIG1vcmUg b2YgYSBsaWJyYXJ5LCBub3QgYSBsYXllciwgc28gdGhpcyBpcyBPSwoKPiBTREhDSSBhbmQgTU1D LCBpdCBzdGlsbCBmZWVscyBsaWtlIHRoZSBjbGVhbmVyIGFuZCBtb3JlIHN0cmFpZ2h0Cj4gZm9y d2FyZCBzb2x1dGlvbi4KPiAKPiBSZWdhcmRzLAo+IEx1Y2FzCj4gCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=