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 38B5CC54E67 for ; Wed, 27 Mar 2024 15:53:23 +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:In-Reply-To: Content-Transfer-Encoding:Content-Type: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=v8Zo+lpGmEYMzAiuqKIM8OssQvdryZbCI6NC3RlvDLc=; b=pl5898nd2GBS7ECwdq5P0MWdDH eDwPCLYC9AxdMW37VqSunvqNkvSfcqOvxe+IQ9d847D/U/FPtaLYsPY/Ir1HS1xiJltN62rCMzvae F+l0ri5qT65Tih17Dh1MjYpdiOALEFuWgitB7nLJ1zCmZQCeSx13t7pZJ3HHMkuYTjEiXfRt1GLHt LP2PmQTRIFkT8gml80JXPf3J+IHAcq7NO1nzQsWkAigKCxEJ9oNuA5S1ULtTQSUMB7jhs1gjKIwwE rFJUuNFvbELtPg15PHbWWDiE56wC5mtqMiAv5O+GSGP/c6Yqwxs/Ira/kE/f/tQWVkbUrwx+GeyzO 3hncqjcQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpVab-00000009vlR-2Ild; Wed, 27 Mar 2024 15:53:21 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpVaY-00000009vGd-0gJT; Wed, 27 Mar 2024 15:53:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=v8Zo+lpGmEYMzAiuqKIM8OssQvdryZbCI6NC3RlvDLc=; b=pIenkUfc6gIEUz1zTSvCVoy95W tG+Pc5hVuecUgQGIPOcmluq+nOW/noQ3qiVIO3xP+tcxUES0f47sFzfHK5vlPsJP3B2vcHG+tzUYH /4Hc33aOH8Ff+mRWIm1nyCysVWjLjEDBVTgtFdVB/qPPBLugAVfKXTtp0xI7VH581NXCqHnP7Wtlo MV9S2txg5yF539UdMvjJRv0Jbj5x3RJxLtE/xB0ohtFR+Z4tqQaARb2gnyCAl2YPgi1qKRF/tYR1i 09DfcdIzM2VaySFd+Z6bSiU9lwqZlOWswkcn39wQC5MrM9BzTfHUMbQywbIsCNrhZEgGQOeQ4PLtl LSJUDBpA==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:53940) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1rpVXq-0007DS-20; Wed, 27 Mar 2024 15:50:30 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1rpVXk-000100-VR; Wed, 27 Mar 2024 15:50:25 +0000 Date: Wed, 27 Mar 2024 15:50:24 +0000 From: "Russell King (Oracle)" To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: Paolo Abeni , Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Matthias Brugger , AngeloGioacchino Del Regno , =?iso-8859-1?Q?Ren=E9?= van Dorst , SkyLake Huang , Heiner Kallweit , Bartel Eerdekens , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH net v2 2/2] net: dsa: mt7530: fix disabling EEE on failure on MT7531 and MT7988 Message-ID: References: <20240321-for-net-mt7530-fix-eee-for-mt7531-mt7988-v2-0-9af9d5041bfe@arinc9.com> <20240321-for-net-mt7530-fix-eee-for-mt7531-mt7988-v2-2-9af9d5041bfe@arinc9.com> <799572b672ea8b4756236b14068aef7c8fa726a6.camel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240327_085318_230657_800A2A06 X-CRM114-Status: GOOD ( 31.67 ) 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 On Tue, Mar 26, 2024 at 12:19:40PM +0300, Arınç ÜNAL wrote: > On 26.03.2024 12:02, Paolo Abeni wrote: > > On Thu, 2024-03-21 at 19:29 +0300, Arınç ÜNAL via B4 Relay wrote: > > > From: Arınç ÜNAL > > > > > > The MT7531_FORCE_EEE1G and MT7531_FORCE_EEE100 bits let the > > > PMCR_FORCE_EEE1G and PMCR_FORCE_EEE100 bits determine the 1G/100 EEE > > > abilities of the MAC. If MT7531_FORCE_EEE1G and MT7531_FORCE_EEE100 are > > > unset, the abilities are left to be determined by PHY auto polling. > > > > > > The commit 40b5d2f15c09 ("net: dsa: mt7530: Add support for EEE features") > > > made it so that the PMCR_FORCE_EEE1G and PMCR_FORCE_EEE100 bits are set on > > > mt753x_phylink_mac_link_up(). But it did not set the MT7531_FORCE_EEE1G and > > > MT7531_FORCE_EEE100 bits. Because of this, EEE will be enabled on the > > > switch MACs by polling the PHY, regardless of the result of phy_init_eee(). > > > > > > Define these bits and add them to MT7531_FORCE_MODE which is being used by > > > the subdriver. With this, EEE will be prevented from being enabled on the > > > switch MACs when phy_init_eee() fails. > > > > > > Fixes: 40b5d2f15c09 ("net: dsa: mt7530: Add support for EEE features") > > > Signed-off-by: Arınç ÜNAL > > > > If I read the past discussion correctly, this is a potential issue > > found by code inspection and never producing problem in practice, am I > > correct? > > > > If so I think it will deserve a 3rd party tested-by tag or similar to > > go in. > > > > If nobody could provide such feedback in a little time, I suggest to > > drop this patch and apply only 1/2. > > Whether a problem would happen in practice depends on when phy_init_eee() > fails, meaning it returns a negative non-zero code. I requested Russell to > review this patch to shed light on when phy_init_eee() would return a > negative non-zero code so we have an idea whether this patch actually fixes > a problem. Urgh, so I need to read the code and report back? Well, looking at phy_init_eee(), it could return a negative vallue when: 1. phydev->drv is NULL 2. if genphy_c45_eee_is_active() returns negative 3. if genphy_c45_eee_is_active() returns zero, it returns -EPROTONOSUPPORT 4. if phy_set_bits_mmd() fails (e.g. communication error with the PHY) If we then look at genphy_c45_eee_is_active(), then: genphy_c45_read_eee_adv() and genphy_c45_read_eee_lpa() propagate their non-zero return values, otherwise this function returns zero or positive integer. If we then look at genphy_c45_read_eee_adv(), then a failure of phy_read_mmd() would cause a negative value to be returned. Looking at genphy_c45_read_eee_lpa(), the same is true. So, it can be summarised as: - phydev->drv is NULL - there is a communication error accessing the PHY - EEE is not active otherwise, it returns zero on success. If one wishes to determine whether an error occurred vs EEE not being supported through negotiation for the negotiated speed, if it returns -EPROTONOSUPPORT in the latter case. Other error codes mean either the driver has been unloaded or communication error. This has been expertly determined by reading the code, which only a phylib maintainer has the capability of doing. Thank you for using this service. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last! 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 5C921C47DD9 for ; Wed, 27 Mar 2024 15:53:31 +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=7gATxVxvHng4OJxAfYuUsu2tPnyFY2cYdQFXVBWCi4g=; b=gTTzJCfFE6pE2U QkYIoAjuYW8RAhAmueRPg0w5TG5dsizfhjf4dMftWIjyz7cvmcNGtZ7afSCGNzelcKUHqCyPjSl4y Qhk7UKGSSdTqFW2MKXHISTZZmWK2zyzeQlaetgHx2KY8bqk5SrUrg+lnyU/rnWztYfYAEk0CtNXdp eFdmIgpWplzUcjfHac5417F1wU665u6OItDA6TIiGUJ7i3EkYr/sl1ssNwHIBw94a2RoB1xoOWVO6 QHNTQ1sEfl45Tzc+qkOHXJIeVurkpK+SgYU2HI2u7aGpYwbMpN/5ShPsP9qB6NlcKgkuWiKPUgm6u 2n45V1wz22Veta8ZMnFA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpVaa-00000009vkh-34uL; Wed, 27 Mar 2024 15:53:20 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpVaY-00000009vGd-0gJT; Wed, 27 Mar 2024 15:53:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type: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-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=v8Zo+lpGmEYMzAiuqKIM8OssQvdryZbCI6NC3RlvDLc=; b=pIenkUfc6gIEUz1zTSvCVoy95W tG+Pc5hVuecUgQGIPOcmluq+nOW/noQ3qiVIO3xP+tcxUES0f47sFzfHK5vlPsJP3B2vcHG+tzUYH /4Hc33aOH8Ff+mRWIm1nyCysVWjLjEDBVTgtFdVB/qPPBLugAVfKXTtp0xI7VH581NXCqHnP7Wtlo MV9S2txg5yF539UdMvjJRv0Jbj5x3RJxLtE/xB0ohtFR+Z4tqQaARb2gnyCAl2YPgi1qKRF/tYR1i 09DfcdIzM2VaySFd+Z6bSiU9lwqZlOWswkcn39wQC5MrM9BzTfHUMbQywbIsCNrhZEgGQOeQ4PLtl LSJUDBpA==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:53940) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1rpVXq-0007DS-20; Wed, 27 Mar 2024 15:50:30 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1rpVXk-000100-VR; Wed, 27 Mar 2024 15:50:25 +0000 Date: Wed, 27 Mar 2024 15:50:24 +0000 From: "Russell King (Oracle)" To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: Paolo Abeni , Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Matthias Brugger , AngeloGioacchino Del Regno , =?iso-8859-1?Q?Ren=E9?= van Dorst , SkyLake Huang , Heiner Kallweit , Bartel Eerdekens , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH net v2 2/2] net: dsa: mt7530: fix disabling EEE on failure on MT7531 and MT7988 Message-ID: References: <20240321-for-net-mt7530-fix-eee-for-mt7531-mt7988-v2-0-9af9d5041bfe@arinc9.com> <20240321-for-net-mt7530-fix-eee-for-mt7531-mt7988-v2-2-9af9d5041bfe@arinc9.com> <799572b672ea8b4756236b14068aef7c8fa726a6.camel@redhat.com> 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-20240327_085318_230657_800A2A06 X-CRM114-Status: GOOD ( 31.67 ) 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 T24gVHVlLCBNYXIgMjYsIDIwMjQgYXQgMTI6MTk6NDBQTSArMDMwMCwgQXLEsW7DpyDDnE5BTCB3 cm90ZToKPiBPbiAyNi4wMy4yMDI0IDEyOjAyLCBQYW9sbyBBYmVuaSB3cm90ZToKPiA+IE9uIFRo dSwgMjAyNC0wMy0yMSBhdCAxOToyOSArMDMwMCwgQXLEsW7DpyDDnE5BTCB2aWEgQjQgUmVsYXkg d3JvdGU6Cj4gPiA+IEZyb206IEFyxLFuw6cgw5xOQUwgPGFyaW5jLnVuYWxAYXJpbmM5LmNvbT4K PiA+ID4gCj4gPiA+IFRoZSBNVDc1MzFfRk9SQ0VfRUVFMUcgYW5kIE1UNzUzMV9GT1JDRV9FRUUx MDAgYml0cyBsZXQgdGhlCj4gPiA+IFBNQ1JfRk9SQ0VfRUVFMUcgYW5kIFBNQ1JfRk9SQ0VfRUVF MTAwIGJpdHMgZGV0ZXJtaW5lIHRoZSAxRy8xMDAgRUVFCj4gPiA+IGFiaWxpdGllcyBvZiB0aGUg TUFDLiBJZiBNVDc1MzFfRk9SQ0VfRUVFMUcgYW5kIE1UNzUzMV9GT1JDRV9FRUUxMDAgYXJlCj4g PiA+IHVuc2V0LCB0aGUgYWJpbGl0aWVzIGFyZSBsZWZ0IHRvIGJlIGRldGVybWluZWQgYnkgUEhZ IGF1dG8gcG9sbGluZy4KPiA+ID4gCj4gPiA+IFRoZSBjb21taXQgNDBiNWQyZjE1YzA5ICgibmV0 OiBkc2E6IG10NzUzMDogQWRkIHN1cHBvcnQgZm9yIEVFRSBmZWF0dXJlcyIpCj4gPiA+IG1hZGUg aXQgc28gdGhhdCB0aGUgUE1DUl9GT1JDRV9FRUUxRyBhbmQgUE1DUl9GT1JDRV9FRUUxMDAgYml0 cyBhcmUgc2V0IG9uCj4gPiA+IG10NzUzeF9waHlsaW5rX21hY19saW5rX3VwKCkuIEJ1dCBpdCBk aWQgbm90IHNldCB0aGUgTVQ3NTMxX0ZPUkNFX0VFRTFHIGFuZAo+ID4gPiBNVDc1MzFfRk9SQ0Vf RUVFMTAwIGJpdHMuIEJlY2F1c2Ugb2YgdGhpcywgRUVFIHdpbGwgYmUgZW5hYmxlZCBvbiB0aGUK PiA+ID4gc3dpdGNoIE1BQ3MgYnkgcG9sbGluZyB0aGUgUEhZLCByZWdhcmRsZXNzIG9mIHRoZSBy ZXN1bHQgb2YgcGh5X2luaXRfZWVlKCkuCj4gPiA+IAo+ID4gPiBEZWZpbmUgdGhlc2UgYml0cyBh bmQgYWRkIHRoZW0gdG8gTVQ3NTMxX0ZPUkNFX01PREUgd2hpY2ggaXMgYmVpbmcgdXNlZCBieQo+ ID4gPiB0aGUgc3ViZHJpdmVyLiBXaXRoIHRoaXMsIEVFRSB3aWxsIGJlIHByZXZlbnRlZCBmcm9t IGJlaW5nIGVuYWJsZWQgb24gdGhlCj4gPiA+IHN3aXRjaCBNQUNzIHdoZW4gcGh5X2luaXRfZWVl KCkgZmFpbHMuCj4gPiA+IAo+ID4gPiBGaXhlczogNDBiNWQyZjE1YzA5ICgibmV0OiBkc2E6IG10 NzUzMDogQWRkIHN1cHBvcnQgZm9yIEVFRSBmZWF0dXJlcyIpCj4gPiA+IFNpZ25lZC1vZmYtYnk6 IEFyxLFuw6cgw5xOQUwgPGFyaW5jLnVuYWxAYXJpbmM5LmNvbT4KPiA+IAo+ID4gSWYgSSByZWFk IHRoZSBwYXN0IGRpc2N1c3Npb24gY29ycmVjdGx5LCB0aGlzIGlzIGEgcG90ZW50aWFsIGlzc3Vl Cj4gPiBmb3VuZCBieSBjb2RlIGluc3BlY3Rpb24gYW5kIG5ldmVyIHByb2R1Y2luZyBwcm9ibGVt IGluIHByYWN0aWNlLCBhbSBJCj4gPiBjb3JyZWN0Pwo+ID4gCj4gPiBJZiBzbyBJIHRoaW5rIGl0 IHdpbGwgZGVzZXJ2ZSBhIDNyZCBwYXJ0eSB0ZXN0ZWQtYnkgdGFnIG9yIHNpbWlsYXIgdG8KPiA+ IGdvIGluLgo+ID4gCj4gPiBJZiBub2JvZHkgY291bGQgcHJvdmlkZSBzdWNoIGZlZWRiYWNrIGlu IGEgbGl0dGxlIHRpbWUsIEkgc3VnZ2VzdCB0bwo+ID4gZHJvcCB0aGlzIHBhdGNoIGFuZCBhcHBs eSBvbmx5IDEvMi4KPiAKPiBXaGV0aGVyIGEgcHJvYmxlbSB3b3VsZCBoYXBwZW4gaW4gcHJhY3Rp Y2UgZGVwZW5kcyBvbiB3aGVuIHBoeV9pbml0X2VlZSgpCj4gZmFpbHMsIG1lYW5pbmcgaXQgcmV0 dXJucyBhIG5lZ2F0aXZlIG5vbi16ZXJvIGNvZGUuIEkgcmVxdWVzdGVkIFJ1c3NlbGwgdG8KPiBy ZXZpZXcgdGhpcyBwYXRjaCB0byBzaGVkIGxpZ2h0IG9uIHdoZW4gcGh5X2luaXRfZWVlKCkgd291 bGQgcmV0dXJuIGEKPiBuZWdhdGl2ZSBub24temVybyBjb2RlIHNvIHdlIGhhdmUgYW4gaWRlYSB3 aGV0aGVyIHRoaXMgcGF0Y2ggYWN0dWFsbHkgZml4ZXMKPiBhIHByb2JsZW0uCgpVcmdoLCBzbyBJ IG5lZWQgdG8gcmVhZCB0aGUgY29kZSBhbmQgcmVwb3J0IGJhY2s/CgpXZWxsLCBsb29raW5nIGF0 IHBoeV9pbml0X2VlZSgpLCBpdCBjb3VsZCByZXR1cm4gYSBuZWdhdGl2ZSB2YWxsdWUgd2hlbjoK CjEuIHBoeWRldi0+ZHJ2IGlzIE5VTEwKMi4gaWYgZ2VucGh5X2M0NV9lZWVfaXNfYWN0aXZlKCkg cmV0dXJucyBuZWdhdGl2ZQozLiBpZiBnZW5waHlfYzQ1X2VlZV9pc19hY3RpdmUoKSByZXR1cm5z IHplcm8sIGl0IHJldHVybnMKICAgLUVQUk9UT05PU1VQUE9SVAo0LiBpZiBwaHlfc2V0X2JpdHNf bW1kKCkgZmFpbHMgKGUuZy4gY29tbXVuaWNhdGlvbiBlcnJvciB3aXRoIHRoZSBQSFkpCgpJZiB3 ZSB0aGVuIGxvb2sgYXQgZ2VucGh5X2M0NV9lZWVfaXNfYWN0aXZlKCksIHRoZW46CgpnZW5waHlf YzQ1X3JlYWRfZWVlX2FkdigpIGFuZCBnZW5waHlfYzQ1X3JlYWRfZWVlX2xwYSgpIHByb3BhZ2F0 ZSB0aGVpcgpub24temVybyByZXR1cm4gdmFsdWVzLCBvdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHplcm8gb3IgcG9zaXRpdmUKaW50ZWdlci4KCklmIHdlIHRoZW4gbG9vayBhdCBnZW5w aHlfYzQ1X3JlYWRfZWVlX2FkdigpLCB0aGVuIGEgZmFpbHVyZSBvZgpwaHlfcmVhZF9tbWQoKSB3 b3VsZCBjYXVzZSBhIG5lZ2F0aXZlIHZhbHVlIHRvIGJlIHJldHVybmVkLgoKTG9va2luZyBhdCBn ZW5waHlfYzQ1X3JlYWRfZWVlX2xwYSgpLCB0aGUgc2FtZSBpcyB0cnVlLgoKU28sIGl0IGNhbiBi ZSBzdW1tYXJpc2VkIGFzOgoKLSBwaHlkZXYtPmRydiBpcyBOVUxMCi0gdGhlcmUgaXMgYSBjb21t dW5pY2F0aW9uIGVycm9yIGFjY2Vzc2luZyB0aGUgUEhZCi0gRUVFIGlzIG5vdCBhY3RpdmUKCm90 aGVyd2lzZSwgaXQgcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MuCgpJZiBvbmUgd2lzaGVzIHRvIGRl dGVybWluZSB3aGV0aGVyIGFuIGVycm9yIG9jY3VycmVkIHZzIEVFRSBub3QgYmVpbmcKc3VwcG9y dGVkIHRocm91Z2ggbmVnb3RpYXRpb24gZm9yIHRoZSBuZWdvdGlhdGVkIHNwZWVkLCBpZiBpdCBy ZXR1cm5zCi1FUFJPVE9OT1NVUFBPUlQgaW4gdGhlIGxhdHRlciBjYXNlLiBPdGhlciBlcnJvciBj b2RlcyBtZWFuIGVpdGhlciB0aGUKZHJpdmVyIGhhcyBiZWVuIHVubG9hZGVkIG9yIGNvbW11bmlj YXRpb24gZXJyb3IuCgpUaGlzIGhhcyBiZWVuIGV4cGVydGx5IGRldGVybWluZWQgYnkgcmVhZGlu ZyB0aGUgY29kZSwgd2hpY2ggb25seSBhCnBoeWxpYiBtYWludGFpbmVyIGhhcyB0aGUgY2FwYWJp bGl0eSBvZiBkb2luZy4gVGhhbmsgeW91IGZvciB1c2luZyB0aGlzCnNlcnZpY2UuCgotLSAKUk1L J3MgUGF0Y2ggc3lzdGVtOiBodHRwczovL3d3dy5hcm1saW51eC5vcmcudWsvZGV2ZWxvcGVyL3Bh dGNoZXMvCkZUVFAgaXMgaGVyZSEgODBNYnBzIGRvd24gMTBNYnBzIHVwLiBEZWNlbnQgY29ubmVj dGl2aXR5IGF0IGxhc3QhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==