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 B4A5BC88E6F for ; Mon, 14 Sep 2026 20:24:55 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Cc:To:From:Subject:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+XAxPa6CDNGKmyLKKQrnzteIUwZ7CEI4/j/PQnAPJSY=; b=lenkMSdo29qmyf RZXrkAlIJ63B+GxGQ8KiNhs0deO3AnGEI26Bj3U5TWgsJVVquSYSAKCOzsor3j85TIhoxsW/Xe0+5 mbTWh0r7qg6+5oDTbkX/0ZsVKZjBWWFSKme4FNjO28kU1X+7tuxObft37EHsnf/Mr/VXfmKDV7Biw 2nrPIp/mPiw4xNVKQ3qPetUQ0z/yqLMhAQPSMDgt/94xSXV8/fos5YrGXhcNRdAQrne78LQ/ip4wo dbKBX+Cuz1U50OCpmaIPqzn/9upPT9tiyfGPgarqzBYC2tDN7mUwrppxWHS2blwquE99US/dj78l3 Y4AubGydhZmtFg1drzRQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6DEU-00000004aaJ-2onE; Mon, 14 Sep 2026 20:24:55 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6DEO-00000004aNf-448t; Mon, 14 Sep 2026 20:24:49 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id B0B60602C4; Mon, 14 Sep 2026 20:24:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 057D01F00898; Mon, 14 Sep 2026 20:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789417487; bh=2RoJd8ruCeOMjv7whikitY82kCP+TLKSSzWDnjVuejo=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=FT5bx3ij689sQ+HZYCl+7q0vCyYLKB4UxUcVCS7L0ji+eszqTc7E7ktVeZZWKCKJI FEBy3SgecMakPhYJDL7MunVofR6CdVFLJxlECCUECzmcKsMlr1ONj2KYAGdTon1eDP kadSP6fMryKbRj1kuf4kENtT5Qi6x6dSQjL9wIHFl1hIKb/P6TmifBlFo3SxgM4eny QeNKuQgqYEw4EntXJ3KD4dobstFtAJYELI0Kqq6XHmJDi8Vg2iPG3AEUSXo4O4+F8V DXLhlj7zJyA4kzREtOlInvVL4sy4zB4r07wL5HysuvHOClY92SuKkS1iE2nH59hDmB rcPebAsonsrTQ== Subject: Re: [PATCH net-next v5 06/11] net: pcs: xpcs: add ANRESTART support for SGMII link recovery From: netdev-bot+sashiko@kernel.org To: coiaprant@gmail.com Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heiko@sntech.de, vkoul@kernel.org, maxime.chevallier@bootlin.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, prabhakar.mahadev-lad.rj@bp.renesas.com, romain.gantois@bootlin.com, hkallweit1@gmail.com, neil.armstrong@linaro.org, linux@armlinux.org.uk, shawn.lin@rock-chips.com, david@ixit.cz, netdev@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, linux-renesas-soc@vger.kernel.org Date: Mon, 14 Sep 2026 20:24:45 +0000 Message-ID: <178941748560.22033.7667125492368880786@kernel.org> In-Reply-To: <20260913185849.907479-7-coiaprant@gmail.com> References: <20260913185849.907479-7-coiaprant@gmail.com> X-sashiko-severity: High MIME-Version: 1.0 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 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NSBwb3RlbnRpYWwKaXNzdWUocykgdG8gY29uc2lkZXI6CgpDcml0aWNhbDogMCDCtyBIaWdoOiAx IMK3IE1lZGl1bTogNCDCtyBMb3c6IDAKCi0gW0hpZ2hdIEluIHhwY3NfZ2V0X3N0YXRlX2MzN19z Z21paSgpIHRoZSBjb21iaW5hdGlvbgogICdEV19WUl9NSUlfQU5fU1RTX0MzN19BTkNNUExUX0lO VFIgc2V0ICsgRFdfVlJfTUlJX0MzN19BTlNHTV9TUF9MTktTVFPigKYKLSBbTWVkaXVtXSBVbmRp c2Nsb3NlZCBmdW5jdGlvbmFsIGNoYW5nZTogYmVzaWRlcyB0aGUgdHdvIEJNQ1JfQU5SRVNUQVJU CiAgYWRkaXRpb25zIHRoZSBjb21taXQgbWVzc2FnZSBhZHZlcnRpc2VzLCB0aGUgcGF0Y2ggYWRk cyBhIG5ld+KApgotIFtNZWRpdW1dIERldmljZS1zcGVjaWZpYyBxdWlyayBhcHBsaWVkIHVuY29u ZGl0aW9uYWxseTogdGhlIGNvbW1pdAogIG1lc3NhZ2UgYW5kIHRoZSBuZXcgY29tbWVudCBhdCBk cml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzo3NzYtNzgx4oCmCi0gW01lZGl1bV0gV3Jvbmcgb3Jk ZXJpbmcgaW4geHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKCk6IHRoZSBsYXRjaGVkIEFOLQogIGNv bXBsZXRlIGluZGljYXRpb24gaXMgY29uc3VtZWQgKHhwY3Nfd3JpdGUoRFdfVlJfTUlJX0FOX0lO VFJfU1RTLCAwKSzigKYKLSBbTWVkaXVtXSBUaGUgcGF0Y2ggdHVybnMgdGhlIHJlYWQtb25seS1i eS1jb250cmFjdCBwY3NfZ2V0X3N0YXRlKCkKICBjYWxsYmFjayBpbnRvIGEgaGFyZHdhcmUtc3Rh dGUtY2hhbmdpbmcgb3BlcmF0aW9uIChCTUNSIHJlYWQtbW9kaWZ5LeKApgoKLS0KCm5ldDogcGNz OiB4cGNzOiBhZGQgQU5SRVNUQVJUIHN1cHBvcnQgZm9yIFNHTUlJIGxpbmsgcmVjb3ZlcnkKClRo ZSBwYXRjaCBzZXRzIEJNQ1JfQU5SRVNUQVJUIHRvZ2V0aGVyIHdpdGggQk1DUl9BTkVOQUJMRSB3 aGVuCnhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpKCkgZW5hYmxlcyBpbi1iYW5kIEFOLCBhbmQg bWFrZXMKeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpKCkgY2xlYXIgRFdfVlJfTUlJX0FOX0lOVFJf U1RTIGFuZCBhc3NlcnQKQk1DUl9BTlJFU1RBUlQgd2hlbiB0aGUgbGluayBpcyBkb3duIHdpdGgg QU4gY29tcGxldGlvbiBsYXRjaGVkLiAgQSBuZXcKY29tbWVudCBleHBsYWlucyB0aGF0IHRoZSBE ZXNpZ25XYXJlIGRhdGFib29rIHNheXMgQU4gcmVzdGFydCBpcyBub3QKbmVlZGVkIGZvciBNQUMg c2lkZSBTR01JSSwgYnV0IHRoYXQgc29tZSBwYXJ0cyAoUm9ja2NoaXAgUkszNTY4KSBuZWVkIGl0 LgoKQSBmZXcgcXVlc3Rpb25zIGJlbG93LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNz L3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwo+IGluZGV4IDAzMzdlMmJj YzAxMjUuLjhjMzg3NWI2OTg1YjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14 cGNzLmMKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYwo+IEBAIC03NjksNyArNzcx LDE0IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hw Y3MgKnhwY3MsCj4gIAkgKgkgU1JfTUlJX0FOX0FEVi4gTUFDIHNpZGUgU0dNSUkgcmVjZWl2ZXMg QU4gVHggQ29uZmlnIGZyb20KPiAgCSAqCSBQSFkgYWJvdXQgdGhlIGxpbmsgc3RhdGUgY2hhbmdl IGFmdGVyIEMyOCBBTiBpcyBjb21wbGV0ZWQKPiAgCSAqCSBiZXR3ZWVuIFBIWSBhbmQgTGluayBQ YXJ0bmVyLiBUaGVyZSBpcyBhbHNvIG5vIG5lZWQgdG8KPiAtCSAqCSB0cmlnZ2VyIEFOIHJlc3Rh cnQgZm9yIE1BQy1zaWRlIFNHTUlJLgo+ICsJICoJIHRyaWdnZXIgQU4gcmVzdGFydCBmb3IgTUFD LXNpZGUgU0dNSUkgb24gbW9zdCBkZXZpY2VzLgo+ICsJICoKPiArCSAqIE5vdGU6IFdoaWxlIHRo ZSBEZXNpZ25XYXJlIGRhdGFib29rIHN0YXRlcyB0aGF0IEFOIHJlc3RhcnQgaXMKPiArCSAqCSBu b3QgbmVlZGVkIGZvciBNQUMgc2lkZSBTR01JSSwgc29tZSBpbXBsZW1lbnRhdGlvbnMgKGUuZy4K PiArCSAqCSBSb2NrY2hpcCBSSzM1NjgpIGV4aGliaXQgYSB0aW1pbmcgcXVpcmsgd2hlbiBpbnRl Z3JhdGVkIHdpdGgKPiArCSAqCSBwaHlsaW5rIGFuZCBkbyBub3QgcmVzdGFydCBBTiBhdXRvbWF0 aWNhbGx5IHdoZW4gdGhlIGxpbmsKPiArCSAqCSBjb21lcyBiYWNrIHVwLiBBbiBleHBsaWNpdCBB TiByZXN0YXJ0IGlzIHJlcXVpcmVkIG9uIHRob3NlCj4gKwkgKgkgcGFydHMgdG8gcmVjb3ZlciB0 aGUgbGluayBhZnRlciBhIGRpc2Nvbm5lY3QuCj4gIAkgKi8KCltTZXZlcml0eTogTWVkaXVtXQpU aGUgY29tbWVudCBzYXlzIHRoZSByZXN0YXJ0IGlzIG9ubHkgInJlcXVpcmVkIG9uIHRob3NlIHBh cnRzIiBhbmQgdGhhdAp0aGVyZSBpcyAibm8gbmVlZCB0byB0cmlnZ2VyIEFOIHJlc3RhcnQgZm9y IE1BQy1zaWRlIFNHTUlJIG9uIG1vc3QKZGV2aWNlcyIsIGFuZCB0aGUgY29tbWl0IG1lc3NhZ2Ug c2F5cyAiVGhpcyBpcyBub3QgYSBmaXggZm9yIGFuIGV4aXN0aW5nCm1haW5saW5lIHBsYXRmb3Jt Ii4gIFRoZSBjb2RlLCBob3dldmVyLCBhcHBsaWVzIHRoZSByZXN0YXJ0IG9uIGV2ZXJ5CmRldmlj ZTogbm8gZ2F0ZSBvbiB4cGNzLT5pbmZvLnBtYSBvciB4cGNzLT5kZXNjLCBhbmQgc3RydWN0IGR3 X3hwY3MgZ2FpbnMKbm8gcXVpcmsgZmxhZy4KClRoZSBzYW1lIGZ1bmN0aW9uIGFscmVhZHkgdXNl cyB0aGF0IGdhdGluZyBpZGlvbSBhIGZldyBsaW5lcyBiZWxvdzoKCglpZiAoeHBjcy0+aW5mby5w bWEgPT0gV1hfVFhHQkVfWFBDU19QTUFfMTBHX0lEKSB7CgkJbWFzayB8PSBEV19WUl9NSUlfQU5f Q1RSTF84QklUOwoJCXZhbCB8PSBEV19WUl9NSUlfQU5fQ1RSTF84QklUOwoJCS8qIEhhcmR3YXJl IHJlcXVpcmVzIGl0IHRvIGJlIFBIWSBzaWRlIFNHTUlJICovCgkJdHhfY29uZiA9IERXX1ZSX01J SV9UWF9DT05GSUdfUEhZX1NJREVfU0dNSUk7CgpOb3RlIHRoYXQgdGhpcyBUWEdCRSBjYXNlIGlz IGNvbmZpZ3VyZWQgYXMgUEhZLXNpZGUgU0dNSUksIHdoaWNoIHRoZQpNQUMtc2lkZS9SSzM1Njgg cmF0aW9uYWxlIGluIHRoZSBjb21tZW50IGRvZXMgbm90IGNvdmVyLgoKU2hvdWxkIHRoZSBuZXcg cmVzdGFydCBiZSBnYXRlZCBvbiB0aGUgYWZmZWN0ZWQgUE1BIChvciBvbiBhIG5ldyBkd194cGNz CnF1aXJrIGZsYWcpIHNvIHRoZSBjb2RlIG1hdGNoZXMgd2hhdCB0aGUgY29tbWVudCBhbmQgdGhl IGNvbW1pdCBtZXNzYWdlCmRlc2NyaWJlPwoKQWxzbywgcGh5bGluayBhbHJlYWR5IGhhcyBhIHBh dGggZm9yIHRoaXM6IHBjc19jb25maWcoKSBtYXkgcmV0dXJuIGEKcG9zaXRpdmUgdmFsdWUgdG8g YXNrIHBoeWxpbmsgdG8gY2FsbCAucGNzX2FuX3Jlc3RhcnQsIGFuZAp4cGNzX2FuX3Jlc3RhcnQo KSBpbiB0aGlzIHNhbWUgZHJpdmVyIHBlcmZvcm1zIGV4YWN0bHkgdGhlIHNhbWUgcmVnaXN0ZXIK d3JpdGU6CgoJeHBjc19tb2RpZnkoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLCBCTUNS X0FOUkVTVEFSVCwKCQkgICAgQk1DUl9BTlJFU1RBUlQpOwoKV291bGQgdXNpbmcgdGhhdCBmcmFt ZXdvcmsgcGF0aCBiZSBwcmVmZXJhYmxlIHRvIG9wZW4tY29kaW5nIHRoZSByZXN0YXJ0CmluIHRo ZSBjb25maWcgYW5kIGdldF9zdGF0ZSBjYWxsYmFja3M/Cgo+IEBAIC04MTYsOSArODI1LDE0IEBA IHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhw Y3MsCj4gIAlpZiAocmV0IDwgMCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiArCS8qIENsZWFyIENM MzcgQU4gY29tcGxldGUgc3RhdHVzICovCj4gKwlyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9f TU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJcmV0dXJuIHJldDsKPiArCgpbU2V2ZXJpdHk6IE1lZGl1bV0KVGhlIGNvbW1pdCBtZXNzYWdl IGRlc2NyaWJlcyB0aGUgY2hhbmdlIGFzICJBZGQgQk1DUl9BTlJFU1RBUlQgaW4gdHdvCnBsYWNl cyIgcGx1cyBhIGNvbW1lbnQgdXBkYXRlLCBidXQgdGhpcyBodW5rIGFkZHMgYSB0aGlyZCBmdW5j dGlvbmFsCmNoYW5nZSB0aGF0IGlzIG9ubHkgdmlzaWJsZSBhcyBpdGVtICI1KSIgaW4gdGhlIGlu LWNvZGUgbnVtYmVyZWQgbGlzdC4KClRoaXMgd3JpdGUgaXMgdW5jb25kaXRpb25hbDogaXQgcnVu cyBmb3IgZXZlcnkgeHBjc19jb25maWcoKSAtPgp4cGNzX2RvX2NvbmZpZygpIC0+IHhwY3NfY29u ZmlnX2FuZWdfYzM3X3NnbWlpKCkgY2FsbCBhbmQgZm9yIGV2ZXJ5Cm5lZ19tb2RlLCBpbmNsdWRp bmcgUEhZTElOS19QQ1NfTkVHX09VVEJBTkQgd2hlcmUgbm8gQU4gaXMgc3Vic2VxdWVudGx5CmVu YWJsZWQuICBJdCBjbGVhcnMgdGhlIHJlZ2lzdGVyIHRoYXQgeHBjc19nZXRfc3RhdGVfYzM3X3Nn bWlpKCkgdXNlcyBhcwppdHMgb25seSBzb3VyY2Ugb2YgbGluay9zcGVlZC9kdXBsZXggYW5kIG9m IHN0YXRlLT5hbl9jb21wbGV0ZToKCglyZXQgPSB4cGNzX3JlYWQoeHBjcywgTURJT19NTURfVkVO RDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUyk7CgpJdCBhbHNvIGNoYW5nZXMgdGhlIHZhbHVlIHJl dHVybmVkIHdoZW4gbmVnX21vZGUgaXMgbm90ClBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxF RDogdGhlIGZ1bmN0aW9uIG5vdyByZXR1cm5zIHRoZSByZXN1bHQgb2YKdGhpcyBBTl9JTlRSX1NU UyB3cml0ZSBpbnN0ZWFkIG9mIHRoZSBESUdfQ1RSTDEgbW9kaWZ5LgoKQ291bGQgdGhlIGNvbW1p dCBtZXNzYWdlIG1lbnRpb24gdGhpcyBzdGF0dXMgY2xlYXIgYW5kIHRoZSByZXR1cm4gdmFsdWUK Y2hhbmdlPyAgRm9yIHJlZmVyZW5jZSwgeHBjc19jb25maWdfYW5lZ19jMzdfMTAwMGJhc2V4KCkg YWxyZWFkeSBwZXJmb3Jtcwp0aGUgaWRlbnRpY2FsIGNsZWFyLCBzbyB0aGUgd3JpdGUgaXRzZWxm IG1hdGNoZXMgZXhpc3RpbmcgZHJpdmVyIHByYWN0aWNlLgoKPiAgCWlmIChuZWdfbW9kZSA9PSBQ SFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpCj4gIAkJcmV0ID0geHBjc193cml0ZSh4cGNz LCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsCj4gLQkJCQkgbWRpb19jdHJsIHwgQk1DUl9BTkVO QUJMRSk7Cj4gKwkJCQkgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJU KTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTEwOTMsOSArMTEwNywxOCBAQCBzdGF0 aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcywKPiAg CQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQkvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3Ig aW50ZXJydXB0ICovCj4gLQlpZiAoc3RhdGUtPmFuX2NvbXBsZXRlKQo+IC0JCXhwY3Nfd3JpdGUo eHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7Cj4gKwlpZiAo c3RhdGUtPmFuX2NvbXBsZXRlKSB7Cj4gKwkJLyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9y IGludGVycnVwdCAqLwo+ICsJCXJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIs IERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVy biByZXQ7Cj4gKwo+ICsJCS8qIEluaXRpYXRlIHRoZSBuZXh0IHJvdW5kIG9mIEFOICovCj4gKwkJ cmV0ID0geHBjc19tb2RpZnkoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLCBCTUNSX0FO UkVTVEFSVCwKPiArCQkJCSAgQk1DUl9BTlJFU1RBUlQpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJ CQlyZXR1cm4gcmV0Owo+ICsJfQoKW1NldmVyaXR5OiBIaWdoXQpJcyB0aGUgdHJpZ2dlciBjb25k aXRpb24gaGVyZSByZWFsbHkgInN0dWNrIEFOIj8gIFRoZSBzdGF0ZSByZWFjaGVkIGF0CnRoaXMg cG9pbnQgaXMgQU5DTVBMVCBsYXRjaGVkIHdpdGggTE5LU1RTIGNsZWFyLCB0YWtlbiBmcm9tIHRo ZSBzYW1lCnJlZ2lzdGVyIHJlYWQ6CgoJc3RhdGUtPmFuX2NvbXBsZXRlID0gcmV0ICYgRFdfVlJf TUlJX0FOX1NUU19DMzdfQU5DTVBMVF9JTlRSOwoKCWlmIChyZXQgJiBEV19WUl9NSUlfQzM3X0FO U0dNX1NQX0xOS1NUUykgewoJCS4uLgoJCXJldHVybiAwOwoJfQoKRm9yIEMzNy9TR01JSSwgaXNu J3QgdGhhdCB0aGUgbm9ybWFsIHN0ZWFkeSBzdGF0ZSB3aGVuZXZlciB0aGUgcGFydG5lcgpQSFkn cyBtZWRpYSBzaWRlIGlzIGRvd24/ICBUaGUgUEhZIGtlZXBzIHNlbmRpbmcgY29uZmlnIHdvcmRz LCB0aGUgU0dNSUkKQU4gZXhjaGFuZ2UgY29tcGxldGVzIGFuZCBsYXRjaGVzIEFOQ01QTFQgKGJp dCAwKSwgYW5kIHRoZSBtZWRpYSBsaW5rCnN0YXRlIGlzIGNhcnJpZWQgc2VwYXJhdGVseSBpbiB0 aGUgcmVjZWl2ZWQgY29uZmlnIHdvcmQgdmlhIExOS1NUUwooYml0IDQpLCBwZXIgcGNzLXhwY3Mu aDoKCgkjZGVmaW5lIERXX1ZSX01JSV9BTl9TVFNfQzM3X0FOQ01QTFRfSU5UUglCSVQoMCkKCS4u LgoJI2RlZmluZSBEV19WUl9NSUlfQzM3X0FOU0dNX1NQX0xOS1NUUwkJQklUKDQpCgpJZiBzbywg dGhlbiBvbiBhbiB1bnBsdWdnZWQgcG9ydCBlYWNoIHJlc3RhcnQgcmUtY29tcGxldGVzIHdpdGhp biB0aGUgQU4KbGluayB0aW1lciB3aXRoIExOS1NUUyBzdGlsbCAwIGFuZCByZS1sYXRjaGVzIEFO Q01QTFQsIHNvIHRoZSBjb25kaXRpb24KcmUtYXJtcyBpdHNlbGYgYW5kIGEgZnJlc2ggQU4gcmVz dGFydCBpcyBpc3N1ZWQgb24gZXZlcnkgcG9sbCwKaW5kZWZpbml0ZWx5LiAgcGh5bGluayBwb2xs cyBwY3NfZ2V0X3N0YXRlIG9uY2UgcGVyIHNlY29uZCBhbmQKeHBjcy0+cGNzLnBvbGwgaXMgdHJ1 ZSBmb3IgZXZlcnl0aGluZyBleGNlcHQgV1hfVFhHQkUgYW5kIE1QX0ZCTklDLCBzbwp0aGlzIGFm ZmVjdHMgdGhlIGV4aXN0aW5nIERXX0FOX0MzN19TR01JSSB1c2VycyAoc3RtbWFjL0ludGVsIG1H YkUsIE5YUApTSkExMTA1L1NKQTExMTAsIFdhbmd4dW4pLCBub3Qgb25seSBSSzM1NjguCgpUd28g ZnVydGhlciBjb25zZXF1ZW5jZXM6IHdpdGggTUFDX0FVVE9fU1cgYXJtZWQsIHRoZSBoYXJkd2Fy ZS1zZWxlY3RlZApzcGVlZC9kdXBsZXggaXMgZHJvcHBlZCBvbiBlYWNoIGN5Y2xlLCBhbmQgYmVj YXVzZSB0aGUgd2hvbGUgc3RhdHVzIHdvcmQKaXMgY2xlYXJlZCBieSB3cml0aW5nIDAsIGEgcmVz dGFydCB0aGF0IGxhbmRzIG9uIGEganVzdC1sYXRjaGVkIExOS1NUUz0xCndvcmQgZGVzdHJveXMg dGhhdCBsaW5rLXVwIGluZGljYXRpb24gYW5kIGNvc3RzIGFuIGV4dHJhIHBvbGwgaW50ZXJ2YWwu CgpGb3IgdGhlIGludGVycnVwdC1kcml2ZW4gY2FzZSB0aGVyZSBtYXkgYWxzbyBiZSBhIGZhc3Rl ciBsb29wLiAgVGhlIFNHTUlJCkFOX0NUUkwgbW9kaWZ5IGluIHhwY3NfY29uZmlnX2FuZWdfYzM3 X3NnbWlpKCkgZG9lcyBub3QgaW5jbHVkZQpEV19WUl9NSUlfQU5fSU5UUl9FTiBpbiBpdHMgbWFz aywgd2hpbGUgdGhlIDEwMDBCQVNFLVggcGF0aCBzZXRzIGl0OgoKCWlmICgheHBjcy0+cGNzLnBv bGwpIHsKCQltYXNrIHw9IERXX1ZSX01JSV9BTl9JTlRSX0VOOwoJCXZhbCB8PSBEV19WUl9NSUlf QU5fSU5UUl9FTjsKCX0KCnNvIGFuIGVuYWJsZSBwcm9ncmFtbWVkIGJ5IGEgcHJldmlvdXMgMTAw MEJBU0UtWCBjb25maWd1cmF0aW9uIHBlcnNpc3RzCmludG8gU0dNSUkgbW9kZS4gIE9uIHR4Z2Jl IHRoZSBBTiBldmVudCBpcyByb3V0ZWQgdG8gdGhlIGxpbmsgSVJROgoKZHJpdmVycy9uZXQvZXRo ZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9pcnEuYzp0eGdiZV9taXNjX2lycV9oYW5kbGUoKSB7 CglpZiAoZWljciAmIChUWEdCRV9QWF9NSVNDX0VUSF9MSyB8IFRYR0JFX1BYX01JU0NfRVRIX0xL RE4gfAoJCSAgICBUWEdCRV9QWF9NSVNDX0VUSF9BTikpIHsKCQlzdWJfaXJxID0gaXJxX2ZpbmRf bWFwcGluZyh0eGdiZS0+bWlzYy5kb21haW4sIFRYR0JFX0lSUV9MSU5LKTsKCS4uLgp9Cgp3aGlj aCBlbmRzIGluIHBoeWxpbmtfcGNzX2NoYW5nZSgpIC0+IHBjc19nZXRfc3RhdGUoKSwgc28gdGhl IHJlc3RhcnQgY2FuCmJlIHJlLXRyaWdnZXJlZCBhdCBoYXJkd2FyZSByYXRlIHJhdGhlciB0aGFu IG9uY2UgcGVyIHNlY29uZC4KCldvdWxkIGdhdGluZyB0aGlzIG9uIHRoZSBhZmZlY3RlZCBQTUEv cXVpcmssIG9yIG9uIGFuIGV4cGxpY2l0ICJBTiBpcyBub3QKYWN0aXZlIiBoYXJkd2FyZSBjb25k aXRpb24gcmF0aGVyIHRoYW4gb24gdGhlIGxhdGNoZWQgQU4tY29tcGxldGUgYml0LAphZGRyZXNz IHRoaXM/CgpbU2V2ZXJpdHk6IE1lZGl1bV0KSXMgdGhlIG9yZGVyaW5nIGhlcmUgcmVjb3ZlcmFi bGUgaWYgdGhlIHNlY29uZCBhY2Nlc3MgZmFpbHM/ICBUaGUgbGF0Y2hlZApBTi1jb21wbGV0ZSBp bmRpY2F0aW9uIGlzIGNvbnN1bWVkIGJ5IHRoZSB4cGNzX3dyaXRlKERXX1ZSX01JSV9BTl9JTlRS X1NUUywKMCkgYmVmb3JlIHRoZSBmYWxsaWJsZSByZWFkLW1vZGlmeS13cml0ZSB0aGF0IGFjdHVh bGx5IHN0YXJ0cyB0aGUgbmV4dApuZWdvdGlhdGlvbi4KCklmIHRoZSB3cml0ZSBzdWNjZWVkcyBh bmQgdGhlIHhwY3NfbW9kaWZ5KCkgb2YgTUlJX0JNQ1IgZmFpbHMgb24gdGhlCnJlZ2lzdGVyIGJh Y2stZW5kLCB0aGUgb25seSBpbmRpY2F0aW9uIHRoYXQgQU4gY29tcGxldGVkIGlzIGdvbmUgYW5k IG5vCm5ldyBuZWdvdGlhdGlvbiB3YXMgc3RhcnRlZC4gIFRoZSBibG9jayB0aGF0IHdvdWxkIHJl dHJ5IGlzIGl0c2VsZiBnYXRlZApvbiBzdGF0ZS0+YW5fY29tcGxldGUsIHdoaWNoIGlzIG5vdyBy ZWFkIGJhY2sgYXMgMCwgc28gdGhlIHJlc3RhcnQgaXMKbmV2ZXIgYXR0ZW1wdGVkIGFnYWluLiAg VGhlIGVycm9yIG9ubHkgcmVhY2hlcyB4cGNzX2dldF9zdGF0ZSgpLCB3aGljaApsb2dzIGl0IGZy b20gYSB2b2lkIGNhbGxiYWNrOgoKCQlyZXQgPSB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoeHBj cywgc3RhdGUpOwoJCWlmIChyZXQpCgkJCWRldl9lcnIoJnhwY3MtPm1kaW9kZXYtPmRldiwgIiVz IHJldHVybmVkICVwZVxuIiwKCQkJCSJ4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkiLCBFUlJfUFRS KHJldCkpOwoKYW5kIG5vdGhpbmcgcmVjb3JkcyBhIHBlbmRpbmcgcmVzdGFydC4gIFRoaXMgbWF0 dGVycyBtb3N0IG9uIHRoZSBoYXJkd2FyZQp0aGlzIHBhdGNoIHRhcmdldHMsIHdoZXJlIEFOIGlz IG5vdCByZXN0YXJ0ZWQgYXV0b21hdGljYWxseSwgc28gdGhlIHBvcnQKd291bGQgc3RheSBkb3du IHVudGlsIGEgZnJlc2ggcGNzX2NvbmZpZygpLiAgVGhlIGZhaWx1cmUgaXMgcGxhdXNpYmxlIGZv cgp0aGVzZSB2ZW5kb3ItTU1EIGFjY2Vzc2VzOiB0aGUgUkszNTY4IGJhY2stZW5kIGFkZGVkIGxh dGVyIGluIHRoaXMgc2VyaWVzCnJldHVybnMgZXJyb3JzIGZyb20gcG1fcnVudGltZV9yZXN1bWVf YW5kX2dldCgpIGluc2lkZQp4cGNzX3JrX3dyaXRlX3JlZygpL3hwY3NfcmtfcmVhZF9yZWcoKS4K CldvdWxkIGFzc2VydGluZyBCTUNSX0FOUkVTVEFSVCBiZWZvcmUgY2xlYXJpbmcgdGhlIHN0YXR1 cyB3b3JkLCBvcgpyZXRyeWluZyBpbmRlcGVuZGVudGx5IG9mIHRoZSBsYXRjaCwgY2xvc2UgdGhp cyB3aW5kb3c/CgpbU2V2ZXJpdHk6IE1lZGl1bV0KVGhpcyBtYWtlcyBwY3NfZ2V0X3N0YXRlKCkg Y2hhbmdlIGhhcmR3YXJlIHN0YXRlIHJhdGhlciB0aGFuIG9ubHkgcmVhZCBpdCwKYW5kIHBoeWxp bmsgY2FsbHMgdGhhdCBjYWxsYmFjayBmcm9tIGNvbnRleHRzIHdpdGggbm8gY29tbW9uIGxvY2su CgpwaHlsaW5rX3Jlc29sdmUoKSBob2xkcyBwbC0+c3RhdGVfbXV0ZXggKGFuZCB0aGUgcGh5IGxv Y2tzKSBidXQgbm90IFJUTkwsCndoaWxlIHRoZXNlIHR3byBjYWxsZXJzIGhvbGQgb25seSBSVE5M OgoKZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzpwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dl dCgpIHsKCS4uLgoJCXBoeWxpbmtfbWFjX3Bjc19nZXRfc3RhdGUocGwsICZsaW5rX3N0YXRlKTsK CS4uLgp9Cgpkcml2ZXJzL25ldC9waHkvcGh5bGluay5jOnBoeWxpbmtfbWlpX3JlYWQoKSB7Cgku Li4KCQkJcGh5bGlua19tYWNfcGNzX2dldF9zdGF0ZShwbCwgJnN0YXRlKTsKCS4uLgp9CgpUaGUg bG9ja3NldCBpbnRlcnNlY3Rpb24gaXMgZW1wdHksIGFuZCB0aGUgZHJpdmVyIGhvbGRzIG5vIHBy aXZhdGUgbG9jaywKc28gdHdvIENQVXMgY2FuIHJ1biB0aGlzIGJsb2NrIGF0IG9uY2UgYW5kIGJv dGggYXNzZXJ0IEJNQ1JfQU5SRVNUQVJULAphYm9ydGluZyBlYWNoIG90aGVyJ3MgbmVnb3RpYXRp b24uICBJdCBjYW4gYWxzbyBpbnRlcmxlYXZlIHdpdGggdGhlCm11bHRpLXRyYW5zYWN0aW9uIEJN Q1Igc2VxdWVuY2UgaW4geHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoKSwgd2hpY2gKcmVhZHMg Qk1DUiwgd3JpdGVzIGl0IHdpdGggQU5FTkFCTEUgY2xlYXJlZCwgcHJvZ3JhbXMgQU5fQ1RSTC9E SUdfQ1RSTDEsCmNsZWFycyBBTl9JTlRSX1NUUywgYW5kIGZpbmFsbHkgd3JpdGVzIHRoZSBjYWNo ZWQgdmFsdWUgYmFjazoKCgltZGlvX2N0cmwgPSB4cGNzX3JlYWQoeHBjcywgTURJT19NTURfVkVO RDIsIE1JSV9CTUNSKTsKCS4uLgoJCXJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVO RDIsIE1JSV9CTUNSLAoJCQkJIG1kaW9fY3RybCAmIH5CTUNSX0FORU5BQkxFKTsKCkVhY2ggeHBj c19yZWFkL3hwY3Nfd3JpdGUgaXMgYSBzZXBhcmF0ZSBidXMgdHJhbnNhY3Rpb24sIHNvIGFuIEFO IHJlc3RhcnQKY2FuIGxhbmQgd2hpbGUgQU4gaXMgZGlzYWJsZWQgYW5kIHRoZSBBTiBjb25maWd1 cmF0aW9uIGlzIG9ubHkgaGFsZgphcHBsaWVkLgoKQm90aCBSVE5MLW9ubHkgcGF0aHMgbmVlZCB0 aGUgUENTLW9ubHkgY2FzZSAobm8gcGh5ZGV2KSwgd2hpY2ggaXMKcmVhY2hhYmxlIGZvciBpbmJh bmQgU0dNSUkgd2l0aG91dCBhIFBIWSwgYW5kIFNJT0NHTUlJUkVHIGFuZApFVEhUT09MX0dMSU5L U0VUVElOR1MgYXJlIHVucHJpdmlsZWdlZC4gIEJlZm9yZSB0aGlzIHBhdGNoIHRoZXNlIHBhdGhz Cm9ubHkgY2xlYXJlZCB0aGUgQU4gc3RhdHVzIHdvcmQ7IHNob3VsZCB0aGUgcmVzdGFydCBiZSBt b3ZlZCB0byBhIGNvbnRleHQKdGhhdCBpcyBzZXJpYWxpemVkIHdpdGggcGNzX2NvbmZpZygpLCBz dWNoIGFzIHRoZSAucGNzX2FuX3Jlc3RhcnQgb3A/CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcg aHR0cHM6Ly9uZXRkZXYtYWkuYm90cy5saW51eC5kZXYvc2FzaGlrby8jL3BhdGNoc2V0LzIwMjYw OTEzMTg1ODQ5LjkwNzQ3OS0xLWNvaWFwcmFudCU0MGdtYWlsLmNvbQoKLS0gCmxpbnV4LXBoeSBt YWlsaW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==