From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7941E606A324 for ; Mon, 2 Nov 2026 08:31:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=o/9zmdGz; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=crxT+tjy 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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=/bCNz5NrNkLtzVkrs2HHFAPHU6t1TlaJgth912Fh+ao=; b=o/9zmdGzTCM3uIPF/GyzprqWSs 8MeO/VVyPtoevvO6JZNyYaMgiZy97ro/igAIDW8Y17LMMShfTnWUtX4SEyMS+WH6jyb5UP5fgfeN3 khZAti7LmYUPVOssUWfHvesy0fEc1PyecZH/Yuc8b+s7XAgIjtMSAerz4TW0pImGkZurb8lf+kM+r dTVnJh0g/CtbX+kkjjzgFvxqpS0jxXc/7IDH++6BRAkZqFj9gsG6bdHTa18qJ2IvMk9lSTTWsrnfQ vdue2XRx1q3tZ/PM+B6tBhwGwmrLqisWKwBqwzApbxQ83Q0pu8SoV6Auc+8cgbOE0SbYI95Rz2kS6 kEeIRu0w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xNnRh-0000000FsHy-1jkR; Mon, 02 Nov 2026 08:31:15 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xNnRg-0000000FsHU-0Y4r for linux-phy@lists.infradead.org; Mon, 02 Nov 2026 08:31:12 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 3F0E660F21; Mon, 2 Nov 2026 08:31:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8ADDF1F000C1; Mon, 2 Nov 2026 08:31:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793608271; bh=QAzV5TO72cGFZEXPcWWzIfJualQR1RjeQFeYLg+uSyg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=crxT+tjyN6SuqtN2/vaGLbDYFdOOxtdZwAxuYePJSdbEv6wrcH654ks3SiKVRhaJe i1IUeW3vDX316RPNflgDXOQXcN8CIbj113j7gt4oeWioTjJvKEPsfLU5Nhm2nxnPH1 o2477smMU4i79ng7Jvvehzxz1eGHRTuRWaNw4inXw8FLtYLf5HJ1XihLggegxrD5i3 IiWYpBofrwsGfOEGzmhZTil/EFP3eV7RRkHtKfeyMuAEPj6yMec59lRm4x6VoH9gkv ARcHTfplKPa9Nm9jC8D//F0P1MHv9JfIP9I813xoMzoFr1mBP61kNEeoDJAp5KYX3T WlmNQ4ZXcpSXw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH 2/3] phy: cix: add Sky1 USB/DP combo PHY driver To: "Gary Yang" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261102081532.2305142-3-gary.yang@cixtech.com> References: <20261102081532.2305142-1-gary.yang@cixtech.com> <20261102081532.2305142-3-gary.yang@cixtech.com> Date: Mon, 02 Nov 2026 08:31:10 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHBoeTogY2l4OiB3cm9u ZyBsaW5rX3JhdGUgdW5pdHMgYW5kIGVhcmx5IFBMTCBkaXNhYmxlIGluIHVkcGh5X2RwX3BoeV9z ZXRfcmF0ZSgpCi0gW0hpZ2hdIHBoeTogY2l4OiBsYW5lIDAgdm9sdGFnZSBhbmQgcHJlLWVtcGhh c2lzIGFwcGxpZWQgdG8gYWxsIGxhbmVzIGluIHVkcGh5X2RwX3BoeV9zZXRfdm9sdGFnZXMoKQot IFtIaWdoXSBwaHk6IGNpeDogbWlzc2luZyAuaW5pdCBjYWxsYmFjayBpbiBjaXhfdTNwaHlfb3Bz IGFsb25nc2lkZSAuZXhpdAotIFtIaWdoXSBwaHk6IGNpeDogY2xvY2sgZW5hYmxlIGxlYWsgYW5k IGJyb2tlbiBtb2RlL29yaWVudGF0aW9uIHN0YXRlIGluIGNpeF91c2JkcF9waHlfcG93ZXJfb24o KQotIFtIaWdoXSBwaHk6IGNpeDogdW5jbG9ja2VkIE1NSU8gYWNjZXNzIGFuZCBtaXNzaW5nIGxh bmUgYm91bmQgaW4gdWRwaHlfZHBfcGh5X2NvbmZpZ3VyZSgpCi0gW01lZGl1bV0gcGh5OiBjaXg6 IG1pc3NpbmcgU1ZJRCBjaGVjayBmb3IgRGlzcGxheVBvcnQgc3RhdGVzIGluIHVzYmRwX3R5cGVj X211eF9zZXQoKQotIFtNZWRpdW1dIHBoeTogY2l4OiBwcm9iZSByZXNldHMgUEhZIGRlc3BpdGUg Ym9vdGxvYWRlciBoYW5kb3ZlciBjbGFpbSBhbmQgZGVhZCBtYWNyb3MKLS0KCmNvbW1pdCBiYTM2 NTBlZDE2MGViYWQ4YTRkODJlZjM2NmI0ZDIxZjhjMWEwY2U3CkF1dGhvcjogR2FyeSBZYW5nIDxn YXJ5LnlhbmdAY2l4dGVjaC5jb20+CgpwaHk6IGNpeDogYWRkIFNreTEgVVNCL0RQIGNvbWJvIFBI WSBkcml2ZXIKClRoaXMgY29tbWl0IGFkZHMgYSBHZW5lcmljIFBIWSBkcml2ZXIgZm9yIHRoZSBD SVggU2t5MSBVU0IzL0Rpc3BsYXlQb3J0IGNvbWJvClBIWSwgZXhwb3Npbmcgc2VwYXJhdGUgVVNC IGFuZCBEUCBjaGlsZCBQSFlzIGFuZCByZWdpc3RlcmluZyBhIFR5cGUtQwpvcmllbnRhdGlvbiBz d2l0Y2ggYW5kIG1vZGUgbXV4LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvY2l4L3BoeS1j aXgtdXNiZHAuYyBiL2RyaXZlcnMvcGh5L2NpeC9waHktY2l4LXVzYmRwLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLmQ1OTZlODljNzRmNzYKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9waHkvY2l4L3BoeS1jaXgtdXNiZHAuYwo+IEBAIC0wLDAg KzEsMTQ3NyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ ICsgKiBwaHkgZHJpdmVyIGZvciBjZG5fc2QwODA0X3Q3Z190eXBlYwo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDxsaW51eC9hcnJheV9zaXplLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ICsj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+ICsj aW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Jl c2V0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC91c2IvdHlwZWNfZHAuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3VzYi90eXBlY19tdXguaD4KPiArCj4gKyNpbmNsdWRlICJwaHktY2l4LXVzYmRwLmgiCj4g Kwo+ICtlbnVtIHsKPiArCVVEUEhZX01PREVfTk9ORQkJPSAwLAo+ICsJVURQSFlfTU9ERV9VU0IJ CT0gQklUKDApLAo+ICsJVURQSFlfTU9ERV9EUAkJPSBCSVQoMSksCj4gKwlVRFBIWV9NT0RFX0RQ X1VTQgk9IEJJVCgxKSB8IEJJVCgwKSwKPiArfTsKPiArCj4gKyNkZWZpbmUgUEhZX0xBTkVfTVVY X1VTQgkJCTAKPiArI2RlZmluZSBQSFlfTEFORV9NVVhfRFAJCQkJMQoKWyAuLi4gXQoKPiArc3Rh dGljIGludCBza3kxX3VkcGh5X2V4aXQoc3RydWN0IGNpeF91ZHBoeSAqdWRwaHkpCj4gK3sKPiAr CXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHVkcGh5LT5yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2Fz c2VydCh1ZHBoeS0+cHJlc2V0KTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZSh1ZHBoeS0+YXBi X2Nsayk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBza3kxX3VkcGh5X2lu aXQoc3RydWN0IGNpeF91ZHBoeSAqdWRwaHkpCj4gK3sKPiArCWludCByZXQ7Cj4gKwl1MzIgdmFs dWU7Cj4gKwljb25zdCBzdHJ1Y3QgY2l4X3VkcGh5X2Nvbl9kaXIgKmNvbl9kaXIgPSAmdWRwaHkt PmNmZy0+Y29uX2Rpclt1ZHBoeS0+aWRdOwo+ICsKPiArCXJlZ21hcF91cGRhdGVfYml0cyh1ZHBo eS0+dXNicGh5X3N5c2NvbiwgY29uX2Rpci0+b2Zmc2V0LAo+ICsJCQkgICBHRU5NQVNLKGNvbl9k aXItPmJpdCwgY29uX2Rpci0+Yml0KSwKPiArCQkJICAgdWRwaHktPmZsaXAgPDwgY29uX2Rpci0+ Yml0KTsKPiArCj4gKwl1c2xlZXBfcmFuZ2UoMTAsIDIwKTsKPiArCj4gKwlyZWdtYXBfcmVhZCh1 ZHBoeS0+dXNicGh5X3N5c2NvbiwgY29uX2Rpci0+b2Zmc2V0LCAmdmFsdWUpOwo+ICsKPiArCS8q IHVzYiByY3N1IHJlc2V0IGlzIGRlZmF1bHQgZGVhc3NlcnQgKi8KPiArCXJlc2V0X2NvbnRyb2xf YXNzZXJ0KHVkcGh5LT5yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydCh1ZHBoeS0+cHJl c2V0KTsKPiArCj4gKwlyZXQgPSBza3kxX3VkcGh5X2Nsa19lbmFibGUodWRwaHktPmFwYl9jbGsp Owo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIodWRwaHktPmRldiwgIkZhaWxlZCB0byBwcmVw YXJlX2VuYWJsZSB1ZHBoeSBhcGIgY2xvY2tcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cgpb IC4uLiBdCgo+ICtzdGF0aWMgaW50IHVkcGh5X29yaWVuX3N3X3NldChzdHJ1Y3QgdHlwZWNfc3dp dGNoX2RldiAqc3csCj4gKwkJCSAgICAgIGVudW0gdHlwZWNfb3JpZW50YXRpb24gb3JpZW4pCj4g K3sKPiArCXN0cnVjdCBjaXhfdWRwaHkgKnVkcGh5ID0gdHlwZWNfc3dpdGNoX2dldF9kcnZkYXRh KHN3KTsKPiArCj4gKwltdXRleF9sb2NrKCZ1ZHBoeS0+bXV0ZXgpOwo+ICsKPiArCWlmIChvcmll biA9PSBUWVBFQ19PUklFTlRBVElPTl9OT05FKQo+ICsJCWdvdG8gdW5sb2NrX3JldDsKPiArCj4g Kwl1ZHBoeS0+ZmxpcCA9IChvcmllbiA9PSBUWVBFQ19PUklFTlRBVElPTl9SRVZFUlNFKSA/IHRy dWUgOiBmYWxzZTsKPiArCj4gK3VubG9ja19yZXQ6Cj4gKwltdXRleF91bmxvY2soJnVkcGh5LT5t dXRleCk7Cj4gKwlyZXR1cm4gMDsKPiArfQoKWyAuLi4gXQoKPiArc3RhdGljIGludCB1c2JkcF90 eXBlY19tdXhfc2V0KHN0cnVjdCB0eXBlY19tdXhfZGV2ICptdXgsCj4gKwkJCSAgICAgICBzdHJ1 Y3QgdHlwZWNfbXV4X3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGNpeF91ZHBoeSAqdWRw aHkgPSB0eXBlY19tdXhfZ2V0X2RydmRhdGEobXV4KTsKPiArCj4gKwltdXRleF9sb2NrKCZ1ZHBo eS0+bXV0ZXgpOwo+ICsKPiArCXN3aXRjaCAoc3RhdGUtPm1vZGUpIHsKPiArCWNhc2UgVFlQRUNf RFBfU1RBVEVfQzoKPiArCQlmYWxsdGhyb3VnaDsKPiArCWNhc2UgVFlQRUNfRFBfU1RBVEVfRToK PiArCQl1ZHBoeS0+bmV4dF9tb2RlID0gVURQSFlfTU9ERV9EUDsKPiArCQlicmVhazsKPiArCWNh c2UgVFlQRUNfRFBfU1RBVEVfRDoKPiArCQl1ZHBoeS0+bmV4dF9tb2RlID0gVURQSFlfTU9ERV9E UF9VU0I7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFRZUEVDX1NUQVRFX1NBRkU6Cj4gKwkJdWRwaHkt Pm5leHRfbW9kZSA9IFVEUEhZX01PREVfVVNCOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiAr CQkvKiB1c2Igb25seSBoYW5kbGUgYXMgdXNiK2RwIG1vZGUgKi8KPiArCQl1ZHBoeS0+bmV4dF9t b2RlID0gVURQSFlfTU9ERV9VU0I7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJLyogVE9ETzog Y2hlY2sgd2hldGhlciB0aGUgSFBEIHN0YXRlIG5lZWRzIHNvZnR3YXJlICovCj4gKwltdXRleF91 bmxvY2soJnVkcGh5LT5tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KCltTZXZlcml0eTog TWVkaXVtXQpJbiBkcml2ZXJzL3BoeS9jaXgvcGh5LWNpeC11c2JkcC5jLCB1c2JkcF90eXBlY19t dXhfc2V0KCkgc3dpdGNoZXMgZGlyZWN0bHkKb24gc3RhdGUtPm1vZGUgd2l0aG91dCBjaGVja2lu ZyBzdGF0ZS0+YWx0LgoKSW4gaW5jbHVkZS9saW51eC91c2IvdHlwZWNfYWx0bW9kZS5oIGFuZCBp bmNsdWRlL2xpbnV4L3VzYi90eXBlY19kcC5oLCBib3RoCmNvbm5lY3RvciBtb2RhbCBzdGF0ZXMg KFRZUEVDX01PREVfVVNCMiA9IDIsIFRZUEVDX01PREVfVVNCMyA9IDMsClRZUEVDX01PREVfVVNC NCA9IDQsIFRZUEVDX01PREVfQVVESU8gPSA1LCBUWVBFQ19NT0RFX0RFQlVHID0gNikgYW5kCkRp c3BsYXlQb3J0IHBpbiBhc3NpZ25tZW50IHN0YXRlcyAoVFlQRUNfRFBfU1RBVEVfQSA9IDIgdGhy b3VnaApUWVBFQ19EUF9TVEFURV9GID0gNykgc3RhcnQgYXQgVFlQRUNfU1RBVEVfTU9EQUwuCgpJ ZiB0aGUgVHlwZS1DIG11eCBpcyBjYWxsZWQgd2l0aCBhIG5vbi1EaXNwbGF5UG9ydCBtb2RhbCBz dGF0ZSBzdWNoIGFzClRZUEVDX01PREVfVVNCNCwgVFlQRUNfTU9ERV9BVURJTywgVFlQRUNfTU9E RV9ERUJVRywgb3IgYW5vdGhlciBhbHRlcm5hdGUKbW9kZSBTVklELCB3b24ndCB1c2JkcF90eXBl Y19tdXhfc2V0KCkgbWF0Y2ggVFlQRUNfRFBfU1RBVEVfQywKVFlQRUNfRFBfU1RBVEVfRCwgb3Ig VFlQRUNfRFBfU1RBVEVfRSBhbmQgbWlzY29uZmlndXJlIHVkcGh5LT5uZXh0X21vZGUgZm9yCkRp c3BsYXlQb3J0IHVubGVzcyBpdCBmaXJzdCB2ZXJpZmllcyBzdGF0ZS0+YWx0ICYmIHN0YXRlLT5h bHQtPnN2aWQgPT0KVVNCX1RZUEVDX0RQX1NJRD8KClsgLi4uIF0KCj4gK3N0YXRpYyBpbnQgY2l4 X3VzYmRwX3BoeV9wb3dlcl9vbihzdHJ1Y3QgY2l4X3VkcGh5ICp1ZHBoeSkKPiArewo+ICsJY29u c3Qgc3RydWN0IGNpeF91ZHBoeV9jZmcgKnBoeV9jZmdzID0gdWRwaHktPmNmZzsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJaWYgKHVkcGh5LT5jdXJfbW9kZSA9PSB1ZHBoeS0+bmV4dF9tb2RlKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCWlmICgodWRwaHktPmN1cl9tb2RlID09IFVEUEhZX01PREVfVVNC IHx8IHVkcGh5LT5jdXJfbW9kZSA9PSBVRFBIWV9NT0RFX0RQKSAmJgo+ICsJICAgIHVkcGh5LT5u ZXh0X21vZGUgPT0gVURQSFlfTU9ERV9EUF9VU0IpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYg KHBoeV9jZmdzLT51ZHBoeV9pbml0KSB7Cj4gKwkJcmV0ID0gcGh5X2NmZ3MtPnVkcGh5X2luaXQo dWRwaHkpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2Vycih1ZHBoeS0+ZGV2LCAiZmFpbGVk IHRvIGluaXQgdWRwaHlcbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjaXhfdXNiZHBfcGh5X3Bvd2VyX29m ZihzdHJ1Y3QgY2l4X3VkcGh5ICp1ZHBoeSkKPiArewo+ICsJY29uc3Qgc3RydWN0IGNpeF91ZHBo eV9jZmcgKnBoeV9jZmdzID0gdWRwaHktPmNmZzsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKHBo eV9jZmdzLT51ZHBoeV9leGl0KSB7Cj4gKwkJcmV0ID0gcGh5X2NmZ3MtPnVkcGh5X2V4aXQodWRw aHkpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2Vycih1ZHBoeS0+ZGV2LCAiZmFpbGVkIHRv IGV4aXQgdWRwaHlcbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCj4gKwl1 ZHBoeS0+Y3VyX21vZGUgPSBVRFBIWV9NT0RFX05PTkU7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGludCB1ZHBoeV9kcF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICt7 Cj4gKwlzdHJ1Y3QgY2l4X3VkcGh5ICp1ZHBoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJ aW50IHJldCA9IDA7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdWRwaHktPm11dGV4KTsKPiArCWlmICgh KHVkcGh5LT5uZXh0X21vZGUgJiBVRFBIWV9NT0RFX0RQKSkKPiArCQlnb3RvIHVubG9jazsKPiAr Cj4gKwlyZXQgPSBjaXhfdXNiZHBfcGh5X3Bvd2VyX29uKHVkcGh5KTsKPiArCWlmIChyZXQpCj4g KwkJZ290byB1bmxvY2s7Cj4gKwo+ICsJcGh5X3NldF9idXNfd2lkdGgocGh5LCB1ZHBoeV9kcGxh bmVfZ2V0KHVkcGh5KSk7Cj4gKwlpZiAodWRwaHktPm5leHRfbW9kZSA9PSBVRFBIWV9NT0RFX0RQ KQo+ICsJCXVkcGh5LT5jdXJfbW9kZSA9IFVEUEhZX01PREVfRFA7Cj4gKwllbHNlCj4gKwkJdWRw aHktPmN1cl9tb2RlIHw9IFVEUEhZX01PREVfRFA7Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91 bmxvY2soJnVkcGh5LT5tdXRleCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9CgpbU2V2ZXJpdHk6IEhp Z2hdCkhvdyBkb2VzIHVkcGh5LT5jdXJfbW9kZSB0cmFjayBib3RoIHRoZSBhY3RpdmUgc3ViLVBI WXMgYW5kIHRoZSBwcm9ncmFtbWVkCmhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gaW4gZHJpdmVycy9w aHkvY2l4L3BoeS1jaXgtdXNiZHAuYz8KCkZpcnN0LCBza3kxX3VkcGh5X2luaXQoKSB1bmNvbmRp dGlvbmFsbHkgY2FsbHMKc2t5MV91ZHBoeV9jbGtfZW5hYmxlKHVkcGh5LT5hcGJfY2xrKSwgd2hp Y2ggY2FsbHMgY2xrX3ByZXBhcmVfZW5hYmxlKCksIHdoaWxlCnNreTFfdWRwaHlfZXhpdCgpIGNh bGxzIGNsa19kaXNhYmxlX3VucHJlcGFyZSh1ZHBoeS0+YXBiX2Nsaykgb25seSBvbmNlIHdoZW4K dWRwaHktPmN1cl9tb2RlIHJlYWNoZXMgVURQSFlfTU9ERV9OT05FLiBJZiBvbmUgY2hpbGQgUEhZ IGlzIGFscmVhZHkgYWN0aXZlCihmb3IgZXhhbXBsZSwgY2l4X3UzcGh5X2luaXQoKSBzZXQgdWRw aHktPmN1cl9tb2RlID0gVURQSFlfTU9ERV9VU0IpIGFuZCB0aGUKbXV4IHN3aXRjaGVzIHRvIHVk cGh5LT5uZXh0X21vZGUgPSBVRFBIWV9NT0RFX0RQIGJlZm9yZQp1ZHBoeV9kcF9waHlfcG93ZXJf b24oKSBydW5zLCBjaXhfdXNiZHBfcGh5X3Bvd2VyX29uKCkgY2FsbHMgc2t5MV91ZHBoeV9pbml0 KCkKYSBzZWNvbmQgdGltZSBhbmQgbGVha3MgYW4gZW5hYmxlIHJlZmVyZW5jZSBvbiB1ZHBoeS0+ YXBiX2Nsay4gSW4gdGhhdCBzYW1lCnBhdGgsIHVkcGh5X2RwX3BoeV9wb3dlcl9vbigpIHRoZW4g YXNzaWducyB1ZHBoeS0+Y3VyX21vZGUgPSBVRFBIWV9NT0RFX0RQLApjbGVhcmluZyBVRFBIWV9N T0RFX1VTQiBzbyB0aGF0IGEgbGF0ZXIgY2l4X3UzcGh5X2V4aXQoKSBiZWNvbWVzIGEgbm8tb3Au CgpTZWNvbmQsIGlmIHVkcGh5X2RwX3BoeV9wb3dlcl9vbigpIGluaXRpYWxpemVzIHRoZSBQSFkg d2l0aCB1ZHBoeS0+bmV4dF9tb2RlCj09IFVEUEhZX01PREVfRFAsIHNreTFfdWRwaHlfaW5pdCgp IHByb2dyYW1zIHNreTFfdWRwaHlfZHBfY29uZiAoNC1sYW5lCkRQLW9ubHkgbW9kZSkgYW5kIHNl dHMgdWRwaHktPmN1cl9tb2RlID0gVURQSFlfTU9ERV9EUC4gSWYgdGhlIG11eCBsYXRlcgpzd2l0 Y2hlcyB1ZHBoeS0+bmV4dF9tb2RlIHRvIFVEUEhZX01PREVfRFBfVVNCIGFuZCBjaXhfdTNwaHlf aW5pdCgpIGNhbGxzCmNpeF91c2JkcF9waHlfcG93ZXJfb24oKSwgdGhlIGNoZWNrOgoKCWlmICgo dWRwaHktPmN1cl9tb2RlID09IFVEUEhZX01PREVfVVNCIHx8IHVkcGh5LT5jdXJfbW9kZSA9PSBV RFBIWV9NT0RFX0RQKSAmJgoJICAgIHVkcGh5LT5uZXh0X21vZGUgPT0gVURQSFlfTU9ERV9EUF9V U0IpCgkJcmV0dXJuIDA7CgpyZXR1cm5zIGVhcmx5IHdpdGhvdXQgY2FsbGluZyBza3kxX3VkcGh5 X2luaXQoKSwgbGVhdmluZyB0aGUgaGFyZHdhcmUgaW4KNC1sYW5lIERQLW9ubHkgbW9kZSB3aXRo IHRoZSBVU0IzIGxhbmVzIHVuY29uZmlndXJlZC4KClRoaXJkLCB1ZHBoeV9vcmllbl9zd19zZXQo KSB1cGRhdGVzIHVkcGh5LT5mbGlwIHdpdGhvdXQgbWFya2luZyB0aGUgUEhZIGFzCm5lZWRpbmcg cmUtaW5pdGlhbGl6YXRpb24uIElmIHVkcGh5LT5mbGlwIGNoYW5nZXMgYWZ0ZXIgb25lIHN1Yi1Q SFkgaGFzCmFscmVhZHkgaW5pdGlhbGl6ZWQgaW4gVURQSFlfTU9ERV9EUF9VU0IsIHdvbid0IGNp eF91c2JkcF9waHlfcG93ZXJfb24oKSBza2lwCnNreTFfdWRwaHlfaW5pdCgpLCBsZWF2aW5nIHRo ZSBzeXNjb24gb3JpZW50YXRpb24gYml0IGFuZCBsYW5lIGNvbmZpZ3VyYXRpb24KdGFibGVzIGlu IHRoZSBvbGQgb3JpZW50YXRpb24gd2hpbGUgdWRwaHlfZHBfcGh5X3NldF9yYXRlKCkgYW5kCnVk cGh5X2RwX3BoeV9zZXRfdm9sdGFnZXMoKSBwcm9ncmFtIHRoZSBmbGlwcGVkIFBNQSBsYW5lcz8K ClsgLi4uIF0KCj4gK3N0YXRpYyBpbnQgdWRwaHlfZHBfcGh5X3ZlcmlmeV9jb25maWcoc3RydWN0 IGNpeF91ZHBoeSAqdWRwaHksCj4gKwkJCQkgICAgICBzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRz X2RwICpkcCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJc3dpdGNoIChkcC0+bGFuZXMpIHsKPiAr CWNhc2UgMToKPiArCWNhc2UgMjoKPiArCWNhc2UgNDoKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6 Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIElmIGNoYW5naW5n IHZvbHRhZ2VzIGlzIHJlcXVpcmVkLCBjaGVjayBzd2luZyBhbmQgcHJlLWVtcGhhc2lzCj4gKwkg KiBsZXZlbHMsIHBlci1sYW5lLgo+ICsJICovCj4gKwlpZiAoZHAtPnNldF92b2x0YWdlcykgewo+ ICsJCWZvciAoaSA9IDA7IGkgPCBkcC0+bGFuZXM7IGkrKykgewo+ICsJCQlpZiAoZHAtPnZvbHRh Z2VbaV0gPiAzIHx8IGRwLT5wcmVbaV0gPiAzKQo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJCQkvKgo+ICsJCQkgKiBTdW0gb2Ygdm9sdGFnZSBzd2luZyBhbmQgcHJlLWVtcGhhc2lzIGxl dmVscyBjYW5ub3QKPiArCQkJICogZXhjZWVkIDMuCj4gKwkJCSAqLwo+ICsJCQlpZiAoZHAtPnZv bHRhZ2VbaV0gKyBkcC0+cHJlW2ldID4gMykKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0K PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1ZHBoeV9kcF9w aHlfc2V0X3JhdGUoc3RydWN0IGNpeF91ZHBoeSAqdWRwaHksCj4gKwkJCQkgc3RydWN0IHBoeV9j b25maWd1cmVfb3B0c19kcCAqZHApCj4gK3sKPiArCWludCByZXQ7Cj4gKwljb25zdCBzdHJ1Y3Qg cGh5X2xpbmtfY2ZnICpjb25mID0gTlVMTDsKPiArCj4gKwlkZXZfZGJnKHVkcGh5LT5kZXYsICJs YW5lICVkLCByYXRlICV4XG4iLCBkcC0+bGFuZXMsIGRwLT5saW5rX3JhdGUpOwo+ICsKPiArCXJl Z21hcF91cGRhdGVfYml0cyh1ZHBoeS0+cGh5X3JlZ21hcCwgUEhZX1BNQV9QTExfQ1RSTCwgQklU KDEpLCAweDApOwo+ICsJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4gKwo+ICsJc3dpdGNoIChkcC0+ bGlua19yYXRlKSB7Cj4gKwljYXNlIDB4NjoKPiArCQljb25mID0gJmxpbmtfY2ZnWzBdOwo+ICsJ CXJldCA9IHJlZ21hcF9tdWx0aV9yZWdfd3JpdGUodWRwaHktPnBoeV9yZWdtYXAsIHNreTFfdWRw aHlfZHBfcGFydGlhbF9jb25mLAo+ICsJCQkJCSAgICAgQVJSQVlfU0laRShza3kxX3VkcGh5X2Rw X3BhcnRpYWxfY29uZikpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAweGE6Cj4gKwkJY29uZiA9ICZs aW5rX2NmZ1sxXTsKPiArCQlyZXQgPSByZWdtYXBfbXVsdGlfcmVnX3dyaXRlKHVkcGh5LT5waHlf cmVnbWFwLCBza3kxX3VkcGh5X2RwX3BhcnRpYWxfY29uZiwKPiArCQkJCQkgICAgIEFSUkFZX1NJ WkUoc2t5MV91ZHBoeV9kcF9wYXJ0aWFsX2NvbmYpKTsKPiArCQlicmVhazsKPiArCWNhc2UgMHgx NDoKPiArCQljb25mID0gJmxpbmtfY2ZnWzJdOwo+ICsJCXJldCA9IHJlZ21hcF9tdWx0aV9yZWdf d3JpdGUodWRwaHktPnBoeV9yZWdtYXAsIHNreTFfdWRwaHlfZHBfcGFydGlhbF9jb25mLAo+ICsJ CQkJCSAgICAgQVJSQVlfU0laRShza3kxX3VkcGh5X2RwX3BhcnRpYWxfY29uZikpOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSAweDFlOgo+ICsJCWNvbmYgPSAmbGlua19jZmdbM107Cj4gKwkJcmV0ID0g cmVnbWFwX211bHRpX3JlZ193cml0ZSh1ZHBoeS0+cGh5X3JlZ21hcCwgc2t5MV91ZHBoeV9kcF84 cDFfY29uZiwKPiArCQkJCQkgICAgIEFSUkFZX1NJWkUoc2t5MV91ZHBoeV9kcF84cDFfY29uZikp Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KCltT ZXZlcml0eTogSGlnaF0KSW4gZHJpdmVycy9waHkvY2l4L3BoeS1jaXgtdXNiZHAuYywgdWRwaHlf ZHBfcGh5X3NldF9yYXRlKCkgc3dpdGNoZXMgb24KZHAtPmxpbmtfcmF0ZSB1c2luZyBEUENEIGJh bmR3aWR0aCBjb2RlIHZhbHVlcyAoMHg2LCAweGEsIDB4MTQsIDB4MWUpLgoKQWNjb3JkaW5nIHRv IGluY2x1ZGUvbGludXgvcGh5L3BoeS1kcC5oLCBzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRzX2Rw CmRlZmluZXMgbGlua19yYXRlIGluIE1iL3MgKDE2MjAsIDI3MDAsIDU0MDAsIDgxMDApLiBXaGVu IGEgc3RhbmRhcmQKRGlzcGxheVBvcnQgYnJpZGdlIG9yIGNvbnRyb2xsZXIgZHJpdmVyIGNhbGxz IHBoeV9jb25maWd1cmUoKSAtPgp1ZHBoeV9kcF9waHlfY29uZmlndXJlKCkgLT4gdWRwaHlfZHBf cGh5X3NldF9yYXRlKCkgd2l0aCBkcC0+c2V0X3JhdGUgPSAxIGFuZApkcC0+bGlua19yYXRlIGlu IE1iL3MsIHdvbid0IGl0IGFsd2F5cyBoaXQgdGhlIGRlZmF1bHQgY2FzZSBhbmQgZmFpbCB3aXRo Ci1FSU5WQUw/CgpBbHNvLCBiZWNhdXNlIHVkcGh5X2RwX3BoeV92ZXJpZnlfY29uZmlnKCkgZG9l cyBub3QgdmFsaWRhdGUgZHAtPmxpbmtfcmF0ZSBhbmQKdWRwaHlfZHBfcGh5X3NldF9yYXRlKCkg Y2xlYXJzIEJJVCgxKSBvZiBQSFlfUE1BX1BMTF9DVFJMIGJlZm9yZSB0aGUgc3dpdGNoCnN0YXRl bWVudCwgcmV0dXJuaW5nIC1FSU5WQUwgb24gYW4gdW5zdXBwb3J0ZWQgcmF0ZSBsZWF2ZXMgUExM MSBkaXNhYmxlZC4KClsgLi4uIF0KCj4gK3N0YXRpYyBpbnQgdWRwaHlfZHBfcGh5X3NldF92b2x0 YWdlcyhzdHJ1Y3QgY2l4X3VkcGh5ICp1ZHBoeSwKPiArCQkJCSAgICAgc3RydWN0IHBoeV9jb25m aWd1cmVfb3B0c19kcCAqZHApCj4gK3sKPiArCXUzMiBpbmRleCA9IGRwLT52b2x0YWdlWzBdICog NCArIGRwLT5wcmVbMF07Cj4gKwljb25zdCBzdHJ1Y3QgcGh5X3ZvbHRhZ2VfY29uZiAqY2ZnID0g dm9sdF9jZmc7Cj4gKwo+ICsJZGV2X2RiZyh1ZHBoeS0+ZGV2LCAibGFuZSAlZCwgdnMgJWQsIHBl ICVkXG4iLCBkcC0+bGFuZXMsIGRwLT52b2x0YWdlWzBdLAo+ICsJCWRwLT5wcmVbMF0pOwo+ICsK PiArCXN3aXRjaCAoZHAtPmxhbmVzKSB7Cj4gKwljYXNlIDE6Cj4gKwkJaWYgKCF1ZHBoeS0+Zmxp cCkgeyAvKiBsYW5lIDIgKi8KPiArCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHVkcGh5LT5waHlfcmVn bWFwLCBUWF9ESUFHX0FDWUFfTEFORTIsCj4gKwkJCQkJICAgQklUKDApLCAweDEpOwo+ICsJCQly ZWdtYXBfd3JpdGUodWRwaHktPnBoeV9yZWdtYXAsIFRYX1RYQ0NfQ1RSTF9MQU5FMiwKPiArCQkJ CSAgICAgY2ZnW2luZGV4XS50eF90eGNjX2N0cmwpOwo+ICsJCQlyZWdtYXBfd3JpdGUodWRwaHkt PnBoeV9yZWdtYXAsIERSVl9ESUFHX1RYX0RSVl9MQU5FMiwKPiArCQkJCSAgICAgY2ZnW2luZGV4 XS5kcnZfZGlhZ190eF9kcnYpOwo+ICsJCQlyZWdtYXBfd3JpdGUodWRwaHktPnBoeV9yZWdtYXAs IFRYX1RYQ0NfTUdORlNfTVVMVF8wMDBfTEFORTIsCj4gKwkJCQkgICAgIGNmZ1tpbmRleF0udHhf dHhjY19tZ25mY19tdWx0XzAwMCk7Cj4gKwkJCXJlZ21hcF93cml0ZSh1ZHBoeS0+cGh5X3JlZ21h cCwgVFhfVFhDQ19DUE9TVF9NVUxUXzAwX0xBTkUyLAo+ICsJCQkJICAgICBjZmdbaW5kZXhdLnR4 X3R4Y2NfY3Bvc3RfbXVsdF8wMCk7Cj4gKwkJCXJlZ21hcF91cGRhdGVfYml0cyh1ZHBoeS0+cGh5 X3JlZ21hcCwgVFhfRElBR19BQ1lBX0xBTkUyLAo+ICsJCQkJCSAgIEJJVCgwKSwgMHgwKTsKCltT ZXZlcml0eTogSGlnaF0KSW4gZHJpdmVycy9waHkvY2l4L3BoeS1jaXgtdXNiZHAuYywgdWRwaHlf ZHBfcGh5X3ZlcmlmeV9jb25maWcoKSB2YWxpZGF0ZXMKZHAtPnZvbHRhZ2VbaV0gYW5kIGRwLT5w cmVbaV0gZm9yIGVhY2ggbGFuZSB1cCB0byBkcC0+bGFuZXMsIGJ1dAp1ZHBoeV9kcF9waHlfc2V0 X3ZvbHRhZ2VzKCkgY29tcHV0ZXMgaW5kZXggc29sZWx5IGZyb20gZHAtPnZvbHRhZ2VbMF0gYW5k CmRwLT5wcmVbMF0gYW5kIHdyaXRlcyBjZmdbaW5kZXhdIHRvIGFsbCBhY3RpdmUgbGFuZXMgaW4g dGhlIDItbGFuZSBhbmQgNC1sYW5lCmNhc2VzLgoKRHVyaW5nIERpc3BsYXlQb3J0IGxpbmsgdHJh aW5pbmcgb24gYSAyLWxhbmUgb3IgNC1sYW5lIGxpbmssIGlmIHRoZSBzaW5rCnJlcXVlc3RzIGRp ZmZlcmVudCB2b2x0YWdlIHN3aW5nIG9yIHByZS1lbXBoYXNpcyBsZXZlbHMgYWNyb3NzIGxhbmVz LCB3b24ndApsYW5lcyAxLi4zIGJlIHByb2dyYW1tZWQgd2l0aCBsYW5lIDAncyBzZXR0aW5ncyBp bnN0ZWFkIG9mIGRwLT52b2x0YWdlW2ldIGFuZApkcC0+cHJlW2ldPwoKQ291bGQgdGhpcyBhbHNv IHVzZSBhIHBlci1sYW5lIGhlbHBlciBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSA2LXJlZ2lz dGVyCnByb2dyYW1taW5nIHNlcXVlbmNlIGFjcm9zcyBhbGwgYnJhbmNoZXM/CgpbIC4uLiBdCgo+ ICtzdGF0aWMgaW50IHVkcGh5X2RwX3BoeV9jb25maWd1cmUoc3RydWN0IHBoeSAqcGh5LAo+ICsJ CQkJICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCj4gK3sKPiArCXN0cnVjdCBjaXhf dWRwaHkgKnVkcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CW11dGV4X2xvY2soJnVkcGh5LT5tdXRleCk7Cj4gKwlyZXQgPSB1ZHBoeV9kcF9waHlfdmVyaWZ5 X2NvbmZpZyh1ZHBoeSwgJm9wdHMtPmRwKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byB1bmxvY2s7 Cj4gKwo+ICsJaWYgKG9wdHMtPmRwLnNldF9yYXRlKSB7Cj4gKwkJcmV0ID0gdWRwaHlfZHBfcGh5 X3NldF9yYXRlKHVkcGh5LCAmb3B0cy0+ZHApOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2Vy cih1ZHBoeS0+ZGV2LCAiZmFpbGVkIHRvIHNldCBEUCBsaW5rIHJhdGVcbiIpOwo+ICsJCQlnb3Rv IHVubG9jazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKG9wdHMtPmRwLnNldF92b2x0YWdlcykg ewo+ICsJCXJldCA9IHVkcGh5X2RwX3BoeV9zZXRfdm9sdGFnZXModWRwaHksICZvcHRzLT5kcCk7 Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlkZXZfZXJyKHVkcGh5LT5kZXYsICJkcF9waHlfc2V0X3Zv bHRhZ2VzIGZhaWxlZFxuIik7Cj4gKwkJCWdvdG8gdW5sb2NrOwo+ICsJCX0KPiArCX0KPiArCW11 dGV4X3VubG9jaygmdWRwaHktPm11dGV4KTsKPiArCXJldHVybiAwOwo+ICsKPiArdW5sb2NrOgo+ ICsJbXV0ZXhfdW5sb2NrKCZ1ZHBoeS0+bXV0ZXgpOwo+ICsJcmV0dXJuIHJldDsKPiArfQoKW1Nl dmVyaXR5OiBIaWdoXQpXaGF0IGhhcHBlbnMgaWYgdWRwaHlfZHBfcGh5X2NvbmZpZ3VyZSgpIGlu IGRyaXZlcnMvcGh5L2NpeC9waHktY2l4LXVzYmRwLmMgaXMKY2FsbGVkIGJlZm9yZSB1ZHBoeV9k cF9waHlfcG93ZXJfb24oKSwgb3IgYWZ0ZXIgdWRwaHlfZHBfcGh5X3Bvd2VyX29uKCkKcmV0dXJu ZWQgMCBlYXJseSBiZWNhdXNlICEodWRwaHktPm5leHRfbW9kZSAmIFVEUEhZX01PREVfRFApPwoK SW4gYm90aCBjYXNlcywgdWRwaHktPmFwYl9jbGsgaXMgZGlzYWJsZWQgYW5kIHVkcGh5LT5wcmVz ZXQgaXMgYXNzZXJ0ZWQgKGZyb20KY2l4X3VkcGh5X3Byb2JlKCkgb3Igc2t5MV91ZHBoeV9leGl0 KCkpLCB5ZXQgdWRwaHlfZHBfcGh5X2NvbmZpZ3VyZSgpIHByb2NlZWRzCnRvIGNhbGwgdWRwaHlf ZHBfcGh5X3NldF9yYXRlKCkgYW5kIHVkcGh5X2RwX3BoeV9zZXRfdm9sdGFnZXMoKSwgcGVyZm9y bWluZwpNTUlPIHJlYWRzIGFuZCB3cml0ZXMgb24gdWRwaHktPmJhc2Ugd2l0aG91dCBjaGVja2lu ZyAodWRwaHktPmN1cl9tb2RlICYKVURQSFlfTU9ERV9EUCkuIFdvbid0IGFjY2Vzc2luZyB0aG9z ZSByZWdpc3RlcnMgd2l0aCB0aGUgQVBCIGNsb2NrIGdhdGVkIGFuZApyZXNldCBhc3NlcnRlZCBj YXVzZSBhIGJ1cyBhYm9ydCBvciBoYW5nPwoKQWRkaXRpb25hbGx5LCB1ZHBoeV9kcF9waHlfdmVy aWZ5X2NvbmZpZygpIGFsbG93cyBkcC0+bGFuZXMgPT0gNCBldmVuIHdoZW4KdWRwaHktPm5leHRf bW9kZSBpcyBVRFBIWV9NT0RFX0RQX1VTQiAod2hlcmUgdWRwaHlfZHBsYW5lX2dldCh1ZHBoeSkg aXMgMiksCndoaWNoIGNhdXNlcyB1ZHBoeV9kcF9waHlfc2V0X3JhdGUoKSBhbmQgdWRwaHlfZHBf cGh5X3NldF92b2x0YWdlcygpIHRvCm92ZXJ3cml0ZSB0aGUgUE1BIHJlZ2lzdGVycyBvZiB0aGUg YWN0aXZlIFVTQjMgbGFuZXMuCgpbIC4uLiBdCgo+ICtzdGF0aWMgaW50IGNpeF91M3BoeV9zZXRf bW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1vZGUpCj4g K3sKPiArCWlmIChtb2RlID09IFBIWV9NT0RFX0lOVkFMSUQpCj4gKwkJcmV0dXJuIGNpeF91M3Bo eV9leGl0KHBoeSk7Cj4gKwo+ICsJcmV0dXJuIGNpeF91M3BoeV9pbml0KHBoeSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBjaXhfdTNwaHlfb3BzID0gewo+ICsJLnNl dF9tb2RlICAgICAgID0gY2l4X3UzcGh5X3NldF9tb2RlLAo+ICsJLmV4aXQJCT0gY2l4X3UzcGh5 X2V4aXQsCj4gKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gK307CgpbU2V2ZXJpdHk6IEhpZ2hd CkluIGRyaXZlcnMvcGh5L2NpeC9waHktY2l4LXVzYmRwLmMsIGNpeF91M3BoeV9vcHMgZGVmaW5l cyAuZXhpdCA9CmNpeF91M3BoeV9leGl0LCBidXQgb21pdHMgLmluaXQgPSBjaXhfdTNwaHlfaW5p dCBhbmQgb25seSBpbnZva2VzCmNpeF91M3BoeV9pbml0KCkgZnJvbSBjaXhfdTNwaHlfc2V0X21v ZGUoKS4KCldoZW4gYSBVU0IgY29udHJvbGxlciBkcml2ZXIgY2FsbHMgcGh5X2luaXQoKSBkdXJp bmcgcHJvYmUgYmVmb3JlCnBoeV9zZXRfbW9kZSgpLCBvciBjYWxscyBwaHlfZXhpdCgpIGZvbGxv d2VkIGJ5IHBoeV9pbml0KCkgYWNyb3NzIHN1c3BlbmQgYW5kCnJlc3VtZSB3aXRob3V0IGNhbGxp bmcgcGh5X3NldF9tb2RlKCksIHdvbid0IHBoeV9pbml0KCkgYmUgYSBuby1vcCB0aGF0IGxlYXZl cwp0aGUgVVNCMyBQSFkgdW5pbml0aWFsaXplZCBhbmQgaW4gcmVzZXQ/CgpbIC4uLiBdCgo+ICtz dGF0aWMgdm9pZCB1ZHBoeV9zZXRfZGVmYXVsdF9tb2RlKHN0cnVjdCBjaXhfdWRwaHkgKnVkcGh5 KQo+ICt7Cj4gKwl1ZHBoeS0+Y3VyX21vZGUgPSBVRFBIWV9NT0RFX05PTkU7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgY2l4X3VkcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArCXN0cnVjdCBjaXhfdWRwaHkgKnVkcGh5Owo+ICsJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsKPiAr CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7Cj4gKwl1MzIgaWQ7Cj4gKwlp bnQgcmV0ID0gMDsKClsgLi4uIF0KCj4gKwlyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVhZF91OChk ZXYsICJjaXgsZGVmYXVsdC1jb25mIiwgJnVkcGh5LT5uZXh0X21vZGUpOwo+ICsJaWYgKHJldCkK PiArCQl1ZHBoeS0+bmV4dF9tb2RlID0gVURQSFlfTU9ERV9EUF9VU0I7Cj4gKwo+ICsJcmVzZXRf Y29udHJvbF9hc3NlcnQodWRwaHktPnJlc2V0KTsKPiArCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHVk cGh5LT5wcmVzZXQpOwoKWyAuLi4gXQoKPiArCXVkcGh5X3NldF9kZWZhdWx0X21vZGUodWRwaHkp OwoKW1NldmVyaXR5OiBNZWRpdW1dClRoZSBjb21taXQgbWVzc2FnZSBzdGF0ZXM6CgogIFRoZSBi b290bG9hZGVyIG1heSBoYW5kIG92ZXIgdGhlIHBvcnQgYWxyZWFkeSBpbml0aWFsaXplZDsgaW4g dGhhdAogIGNhc2UgdGhlIGZpcnN0IHBvd2VyX29uIGNhbGxzIHNraXAgdGhlIHJlLWluaXRpYWxp emF0aW9uLgoKSG93ZXZlciwgaW4gZHJpdmVycy9waHkvY2l4L3BoeS1jaXgtdXNiZHAuYywgY2l4 X3VkcGh5X3Byb2JlKCkgdW5jb25kaXRpb25hbGx5CmNhbGxzIHJlc2V0X2NvbnRyb2xfYXNzZXJ0 KCkgb24gdWRwaHktPnJlc2V0IGFuZCB1ZHBoeS0+cHJlc2V0LCBhbmQKdWRwaHlfc2V0X2RlZmF1 bHRfbW9kZSgpIHVuY29uZGl0aW9uYWxseSBzZXRzIHVkcGh5LT5jdXJfbW9kZSA9ClVEUEhZX01P REVfTk9ORS4gQXMgYSByZXN1bHQsIGFueSBib290bG9hZGVyIGluaXRpYWxpemF0aW9uIGlzIHdp cGVkIG91dCBpbgpwcm9iZSBhbmQgdGhlIGZpcnN0IHBvd2VyX29uIGNhbGwgbmV2ZXIgc2tpcHMg cmUtaW5pdGlhbGl6YXRpb24uIFNob3VsZApjaXhfdWRwaHlfcHJvYmUoKSBhbmQgdWRwaHlfc2V0 X2RlZmF1bHRfbW9kZSgpIGJlIHVwZGF0ZWQgdG8gbWF0Y2ggdGhlIGNvbW1pdApkZXNjcmlwdGlv biwgb3Igc2hvdWxkIHRoZSBjb21taXQgbWVzc2FnZSBiZSB1cGRhdGVkIHRvIG1hdGNoIHRoZSBj b2RlPwoKQWxzbywgUEhZX0xBTkVfTVVYX1VTQiBhbmQgUEhZX0xBTkVfTVVYX0RQIGF0IHRoZSB0 b3Agb2YKZHJpdmVycy9waHkvY2l4L3BoeS1jaXgtdXNiZHAuYyBhcmUgdW51c2VkIGFuZCBjYW4g YmUgcmVtb3ZlZC4KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2 LyMvcGF0Y2hzZXQvMjAyNjExMDIwODE1MzIuMjMwNTE0Mi0xLWdhcnkueWFuZ0BjaXh0ZWNoLmNv bT9wYXJ0PTIKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXBoeQo=