From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79BEE2E6CC0; Thu, 7 May 2026 06:26:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.75.126.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778135222; cv=none; b=WEwJpKB6aJ+Ln4otVT0zeArgbogekxdyrxXjlGyajMr5E4dbR1dNkBzD+C5P4BVG7oN7T5FnsawZL28R5OtOxXhQ9mw4BfFyiU+QjRelKQyCkWOc67fo94F78P9xEt3PB7FMmTHif1r81xHtW7v+n6u+aHN7gBFdG7jGPVCardI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778135222; c=relaxed/simple; bh=l4nzKq7kjKwvkpOKJFaU/Ce3qrxOWXCWTk22BaTNSlI=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=H6BXwAEyo3FeaXDI8dWx0MvnIGTfUlDueEEcCw+JRG6dY/0jwm2IuBdBKgfy9truCvKQeg8ZtDyApmmydabseARTwJ+TBxa3Q0lZcUCciheFc88M1fkdolb/Ep98NRvVGwr1jU/PljLS+OXRQbvmHVgS35SU9U9YOtlnx5qEolw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realsil.com.cn; spf=pass smtp.mailfrom=realsil.com.cn; dkim=pass (2048-bit key) header.d=realsil.com.cn header.i=@realsil.com.cn header.b=MupfYHro; arc=none smtp.client-ip=211.75.126.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realsil.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=realsil.com.cn Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=realsil.com.cn header.i=@realsil.com.cn header.b="MupfYHro" X-SpamFilter-By: ArmorX SpamTrap 5.80 with qID 6476QTsC42553719, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=realsil.com.cn; s=dkim; t=1778135190; bh=l4nzKq7kjKwvkpOKJFaU/Ce3qrxOWXCWTk22BaTNSlI=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:Content-Transfer-Encoding:MIME-Version; b=MupfYHronu06+kvw2NipGpepKmUnvt19P0qUI+PL2Iv1s0QAfhGZtyERA2DuQLwe9 T0fzptp56dnh+IbrV96x4oKiEuyd5Ppdw21LitP19Aw/hrpC2pwa0MZan22wHTLxKC ms1JOJNe22AoYRbt8CGmkDktdbGqml8HK6cde/cWmdebYmoeksHVl0SOB7gp5BfzVW 9o6BpEzoUae+9iTWoINgvk6SO+RlGnpfewrVLVUGKOMjEgKEWlDRzgUwNjHE0+zoAN SaKHrpA5a2HPPupa5rcYLQ1Lu61ed580J7J9EtCUPYOyBZIuh81KJGoDW9ygFyQoyj RtWCTCp7wZZlA== Received: from RS-EX-MBS1.realsil.com.cn ([172.29.17.101]) by rtits2.realtek.com.tw (8.15.2/3.27/5.94) with ESMTPS id 6476QTsC42553719 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 7 May 2026 14:26:30 +0800 Received: from RS-EX-MBS3.realsil.com.cn (172.29.17.103) by RS-EX-MBS1.realsil.com.cn (172.29.17.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 7 May 2026 14:26:30 +0800 Received: from RS-EX-MBS3.realsil.com.cn ([172.29.17.103]) by RS-EX-MBS3.realsil.com.cn ([172.29.17.103]) with mapi id 15.02.2562.017; Thu, 7 May 2026 14:26:30 +0800 From: Javen To: Heiner Kallweit , "nic_swsd@realtek.com" , "andrew+netdev@lunn.ch" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "horms@kernel.org" CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [Patch net-next v1 2/7] r8169: add support for multi rx queues Thread-Topic: [Patch net-next v1 2/7] r8169: add support for multi rx queues Thread-Index: AQHc3TA4UmHhl62gbkGFVzxX1ztmXbYBAvKAgAEKHpA= Date: Thu, 7 May 2026 06:26:29 +0000 Message-ID: <92eabbd0647149528683ea1e2e53ed24@realsil.com.cn> References: <20260506081326.767-1-javen_xu@realsil.com.cn> <20260506081326.767-3-javen_xu@realsil.com.cn> <9010eca8-5ae1-4b32-8641-b310aa9e317a@gmail.com> In-Reply-To: <9010eca8-5ae1-4b32-8641-b310aa9e317a@gmail.com> Accept-Language: zh-CN, en-US Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Pk9uIDA2LjA1LjIwMjYgMTA6MTMsIGphdmVuIHdyb3RlOg0KPj4gRnJvbTogSmF2ZW4gWHUgPGph dmVuX3h1QHJlYWxzaWwuY29tLmNuPg0KPj4NCj4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZv ciBtdWx0aSByeCBxdWV1ZXMuIFJTUyByZXF1aXJlcyBtdWx0aSByeA0KPj4gcXVldWVzIHRvIHJl Y2VpdmUgcGFja2V0cy4gU28gd2UgbmVlZCBzdHJ1Y3QgcnRsODE2OV9yeF9yaW5nIGZvciBlYWNo DQo+PiBxdWV1ZS4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKYXZlbiBYdSA8amF2ZW5feHVAcmVh bHNpbC5jb20uY24+DQo+PiAtLS0NCj4+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4 MTY5X21haW4uYyB8IDMxOA0KPj4gKysrKysrKysrKysrKysrKystLS0tLQ0KPj4gIDEgZmlsZSBj aGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jDQo+PiBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jDQo+PiBpbmRleCBlZjc0ZWUw MmMxMTcuLmJjNzVkYmI5OTAxZCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L3JlYWx0ZWsvcjgxNjlfbWFpbi5jDQo+PiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFs dGVrL3I4MTY5X21haW4uYw0KPj4gQEAgLTc0LDEwICs3NCwxMSBAQA0KPj4gICNkZWZpbmUgTlVN X1RYX0RFU0MgIDI1NiAgICAgLyogTnVtYmVyIG9mIFR4IGRlc2NyaXB0b3IgcmVnaXN0ZXJzICov DQo+PiAgI2RlZmluZSBOVU1fUlhfREVTQyAgMjU2ICAgICAvKiBOdW1iZXIgb2YgUnggZGVzY3Jp cHRvciByZWdpc3RlcnMgKi8NCj4+ICAjZGVmaW5lIFI4MTY5X1RYX1JJTkdfQllURVMgIChOVU1f VFhfREVTQyAqIHNpemVvZihzdHJ1Y3QgVHhEZXNjKSkNCj4+IC0jZGVmaW5lIFI4MTY5X1JYX1JJ TkdfQllURVMgIChOVU1fUlhfREVTQyAqIHNpemVvZihzdHJ1Y3QgUnhEZXNjKSkNCj4+ICAjZGVm aW5lIFI4MTY5X1RYX1NUT1BfVEhSUyAgIChNQVhfU0tCX0ZSQUdTICsgMSkNCj4+ICAjZGVmaW5l IFI4MTY5X1RYX1NUQVJUX1RIUlMgICgyICogUjgxNjlfVFhfU1RPUF9USFJTKQ0KPj4gKyNkZWZp bmUgUjgxNjlfTUFYX1JYX1FVRVVFUyAgOA0KPj4gICNkZWZpbmUgUjgxNjlfTUFYX01TSVhfVkVD ICAgMzINCj4+ICsjZGVmaW5lIFI4MTI3X01BWF9SWF9RVUVVRVMgIDgNCj4NCj5XaHkgdHdvIE1B WF9SWF9RVUVVRVMgY29uc3RhbnRzIHdpdGggdGhlIHNhbWUgdmFsdWU/DQoNClI4MTY5X01BWF9S WF9RVUVVRVMgY29udHJvbHMgdGhlIG51bWJlciBvZiByeCBxdWV1ZXMgc3VwcG9ydGVkIGJ5IHRo ZSBkcml2ZXIuDQpSODEyN19NQVhfUlhfUVVFVUVTICBjb250cm9scyB0aGUgbnVtYmVyIG9mIHJ4 IHF1ZXVlcyB0aGF0IHJ0bDgxMjcgc3VwcG9ydC4NCg0KPg0KPj4NCj4+ICAjZGVmaW5lIE9DUF9T VERfUEhZX0JBU0UgICAgIDB4YTQwMA0KPj4NCj4+IEBAIC00NDcsNiArNDQ4LDcgQEAgZW51bSBy dGw4MTI1X3JlZ2lzdGVycyB7DQo+PiAgICAgICBSU1NfQ1RSTF84MTI1ICAgICAgICAgICA9IDB4 NDUwMCwNCj4+ICAgICAgIFFfTlVNX0NUUkxfODEyNSAgICAgICAgID0gMHg0ODAwLA0KPj4gICAg ICAgRUVFX1RYSURMRV9USU1FUl84MTI1ICAgPSAweDYwNDgsDQo+PiArICAgICBSRFNBUl9RMV9M T1cgICAgICAgICAgICA9IDB4NDAwMCwNCj4NCj5CZXR0ZXIgc29ydCByZWdpc3RlciBpZHMgYnkg cmVnaXN0ZXIgbnVtYmVyPw0KDQpJIHdpbGwgcmUtb3JkZXIgaXQgaW4gdGhlIG5leHQgcGF0Y2gu DQoNCj4NCj4+ICB9Ow0KPj4NCj4+ICAjZGVmaW5lIExFRFNFTF9NQVNLXzgxMjUgICAgIDB4MjNm DQo+PiBAQCAtNzMxLDYgKzczMywxOSBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUgew0KPj4gICAgICAg UlRMX0RBU0hfMjVfQlAsDQo+PiAgfTsNCj4+DQo+PiArc3RydWN0IHJ0bDgxNjlfcnhfcmluZyB7 DQo+PiArICAgICB1MzIgaW5kZXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBSeCBxdWV1ZSBpbmRleCAqLw0KPj4gKyAgICAgdTMyIGN1cl9yeDsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5kZXggb2YgbmV4dCBSeCBwa3QuICovDQo+PiAr ICAgICB1MzIgZGlydHlfcng7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ bmRleCBmb3IgcmVjeWNsaW5nLiAqLw0KPj4gKyAgICAgdTMyIG51bV9yeF9kZXNjOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtIG9mIFJ4IGRlc2MgKi8NCj4+ICsgICAgIHN0 cnVjdCBSeERlc2MgKnJ4X2Rlc2NfYXJyYXk7ICAgICAgICAgICAgICAgICAgIC8qIGFycmF5IG9m IFJ4IERlc2MqLw0KPj4gKyAgICAgdTMyIHJ4X2Rlc2NfYWxsb2Nfc2l6ZTsgICAgICAgICAgICAg ICAgICAgICAgICAgLyogbWVtb3J5IHNpemUgcGVyIGRlc2NzIG9mIHJpbmcgKi8NCj4+ICsgICAg IGRtYV9hZGRyX3QgcnhfZGVzY19waHlfYWRkcltOVU1fUlhfREVTQ107ICAgICAgIC8qIFJ4IGRh dGEgYnVmZmVyDQo+cGh5c2ljYWwgZG1hIGFkZHJlc3MgKi8NCj4+ICsgICAgIGRtYV9hZGRyX3Qg cnhfcGh5X2FkZHI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJ4IGRlc2MgcGh5c2ljYWwg YWRkcmVzcyAqLw0KPj4gKyAgICAgc3RydWN0IHBhZ2UgKnJ4X2RhdGFidWZmW05VTV9SWF9ERVND XTsgICAgICAgICAgLyogUnggZGF0YSBidWZmZXJzICovDQo+PiArICAgICB1MTYgcmRzYXJfcmVn OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWNlaXZlIERlc2NyaXB0b3Ig U3RhcnQgQWRkcmVzcyAqLw0KPj4gK307DQo+PiArDQo+PiAgc3RydWN0IHJ0bDgxNjlfbmFwaSB7 DQo+PiAgICAgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsNCj4+ICAgICAgIHZvaWQgKnByaXY7 DQo+PiBAQCAtNzQ0LDYgKzc1OSwxMyBAQCBzdHJ1Y3QgcnRsODE2OV9pcnEgew0KPj4gICAgICAg Y2hhciAgICAgICAgICAgIG5hbWVbSUZOQU1TSVogKyAxMF07DQo+PiAgfTsNCj4+DQo+PiArZW51 bSByeF9kZXNjX3JpbmdfdHlwZSB7DQo+PiArICAgICBSWF9ERVNDX1JJTkdfVFlQRV9VTktOT1dO ID0gMCwNCj4+ICsgICAgIFJYX0RFU0NfUklOR19UWVBFX0RFRkFVTFQsDQo+PiArICAgICBSWF9E RVNDX1JJTkdfVFlQRV9SU1MsDQo+PiArICAgICBSWF9ERVNDX1JJTkdfVFlQRV9NQVgNCj4NCj5V TktOT1dOIGFuZCBNQVggc2VlbSB0byBuZXZlciBiZSB1c2VkIGluIHRoaXMgc2VyaWVzLg0KPlNv IGRvIHdlIG5lZWQgdGhlbT8NCj4NCg0KVGhleSBhcmUgbm90IG5lZWRlZC4gSSB3aWxsIHJlbW92 ZSB0aGVtLg0KDQo+PiArfTsNCj4+ICsNCj4+ICBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsNCj4+ ICAgICAgIHZvaWQgX19pb21lbSAqbW1pb19hZGRyOyAgICAgICAgLyogbWVtb3J5IG1hcCBwaHlz aWNhbCBhZGRyZXNzICovDQo+PiAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsNCj4+IEBA IC03NTIsMjggKzc3NCwyOCBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsNCj4+ICAgICAgIHN0 cnVjdCBuYXBpX3N0cnVjdCBuYXBpOw0KPj4gICAgICAgZW51bSBtYWNfdmVyc2lvbiBtYWNfdmVy c2lvbjsNCj4+ICAgICAgIGVudW0gcnRsX2Rhc2hfdHlwZSBkYXNoX3R5cGU7DQo+PiAtICAgICB1 MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0 IFJ4IHBrdC4gKi8NCj4+ICAgICAgIHUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRl c2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLw0KPj4gICAgICAgdTMyIGRpcnR5X3R4 Ow0KPj4gICAgICAgc3RydWN0IFR4RGVzYyAqVHhEZXNjQXJyYXk7ICAgICAvKiAyNTYtYWxpZ25l ZCBUeCBkZXNjcmlwdG9yIHJpbmcgKi8NCj4+IC0gICAgIHN0cnVjdCBSeERlc2MgKlJ4RGVzY0Fy cmF5OyAgICAgLyogMjU2LWFsaWduZWQgUnggZGVzY3JpcHRvciByaW5nICovDQo+PiAgICAgICBk bWFfYWRkcl90IFR4UGh5QWRkcjsNCj4+IC0gICAgIGRtYV9hZGRyX3QgUnhQaHlBZGRyOw0KPj4g LSAgICAgc3RydWN0IHBhZ2UgKlJ4X2RhdGFidWZmW05VTV9SWF9ERVNDXTsgIC8qIFJ4IGRhdGEg YnVmZmVycyAqLw0KPj4gICAgICAgc3RydWN0IHJpbmdfaW5mbyB0eF9za2JbTlVNX1RYX0RFU0Nd OyAgIC8qIFR4IGRhdGEgYnVmZmVycyAqLw0KPj4gICAgICAgc3RydWN0IHJ0bDgxNjlfaXJxIGly cV90YmxbUjgxNjlfTUFYX01TSVhfVkVDXTsNCj4+ICAgICAgIHN0cnVjdCBydGw4MTY5X25hcGkg cjgxNjluYXBpW1I4MTY5X01BWF9NU0lYX1ZFQ107DQo+PiArICAgICBzdHJ1Y3QgcnRsODE2OV9y eF9yaW5nIHJ4X3JpbmdbUjgxNjlfTUFYX1JYX1FVRVVFU107DQo+PiAgICAgICB1MTYgaXNyX3Jl Z1tSODE2OV9NQVhfTVNJWF9WRUNdOw0KPj4gICAgICAgdTE2IGltcl9yZWdbUjgxNjlfTUFYX01T SVhfVkVDXTsNCj4+ICAgICAgIHVuc2lnbmVkIGludCBudW1fcnhfcmluZ3M7DQo+PiAgICAgICB1 MTYgY3BfY21kOw0KPj4gICAgICAgdTE2IHR4X2xwaV90aW1lcjsNCj4+ICAgICAgIHUzMiBpcnFf bWFzazsNCj4+ICsgICAgIHUxNiBod19zdXBwX251bV9yeF9xdWV1ZXM7DQo+PiAgICAgICB1OCBt aW5faXJxX252ZWNzOw0KPj4gICAgICAgdTggbWF4X2lycV9udmVjczsNCj4+ICAgICAgIHU4IGh3 X3N1cHBfaXNyX3ZlcjsNCj4+ICAgICAgIHU4IGh3X2N1cnJfaXNyX3ZlcjsNCj4+ICAgICAgIHU4 IGlycV9udmVjczsNCj4+ICsgICAgIHU4IGluaXRfcnhfZGVzY190eXBlOw0KPj4gKyAgICAgdTgg cmVjaGVja19kZXNjX293bmJpdDsNCj4NCj5UaGlzIHNlZW1zIHRvIGJlIGEgZmxhZy4gVGhlbiB3 aHkgdHlwZSB1OD8NCg0KQ2hhbmdlIHRvIGJvb2wuDQoNCj4NCj4+ICAgICAgIGludCBpcnE7DQo+ PiAgICAgICBzdHJ1Y3QgY2xrICpjbGs7DQo+Pg0KPj4gQEAgLTI2NDcsOSArMjY2OSwyNyBAQCBz dGF0aWMgdm9pZCBydGxfaW5pdF9yeGNmZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlDQo+KnRwKQ0K Pj4gICAgICAgfQ0KPj4gIH0NCj4+DQo+PiArc3RhdGljIHZvaWQgcnRsODE2OV9yeF9kZXNjX2lu aXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgdHAtPm51bV9yeF9yaW5nczsgaSsrKSB7DQo+PiArICAgICAgICAgICAgIHN0cnVjdCBy dGw4MTY5X3J4X3JpbmcgKnJpbmcgPSAmdHAtPnJ4X3JpbmdbaV07DQo+PiArDQo+PiArICAgICAg ICAgICAgIG1lbXNldChyaW5nLT5yeF9kZXNjX2FycmF5LCAweDAsIHJpbmctPnJ4X2Rlc2NfYWxs b2Nfc2l6ZSk7DQo+PiArICAgICB9DQo+PiArfQ0KPj4gKw0KPj4gIHN0YXRpYyB2b2lkIHJ0bDgx NjlfaW5pdF9yaW5nX2luZGV4ZXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApICB7DQo+PiAt ICAgICB0cC0+ZGlydHlfdHggPSB0cC0+Y3VyX3R4ID0gdHAtPmN1cl9yeCA9IDA7DQo+PiArICAg ICB0cC0+ZGlydHlfdHggPSAwOw0KPj4gKyAgICAgdHAtPmN1cl90eCA9IDA7DQo+PiArDQo+PiAr ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRwLT5od19zdXBwX251bV9yeF9xdWV1ZXM7IGkrKykg ew0KPj4gKyAgICAgICAgICAgICBzdHJ1Y3QgcnRsODE2OV9yeF9yaW5nICpyaW5nID0gJnRwLT5y eF9yaW5nW2ldOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICByaW5nLT5kaXJ0eV9yeCA9IDA7DQo+ PiArICAgICAgICAgICAgIHJpbmctPmN1cl9yeCA9IDA7DQo+PiArICAgICAgICAgICAgIHJpbmct PmluZGV4ID0gaTsNCj4+ICsgICAgIH0NCj4+ICB9DQo+Pg0KPj4gIHN0YXRpYyB2b2lkIHJ0bF9q dW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIEBAIC0yNzA4LDgNCj4+ICsy NzQ4LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRl ICp0cCkNCj4+ICAgICAgIHJ0bF9sb29wX3dhaXRfbG93KHRwLCAmcnRsX2NoaXBjbWRfY29uZCwg MTAwLCAxMDApOyAgfQ0KPj4NCj4+ICtzdGF0aWMgdm9pZCBydGxfc2V0X3Jpbmdfc2l6ZShzdHJ1 Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJ4X251bSkNCj4+ICt7DQo+PiArICAgICBmb3Ig KGludCBpID0gMDsgaSA8IHRwLT5od19zdXBwX251bV9yeF9xdWV1ZXM7IGkrKykNCj4+ICsgICAg ICAgICAgICAgdHAtPnJ4X3JpbmdbaV0ubnVtX3J4X2Rlc2MgPSByeF9udW07IH0NCj4+ICsNCj4+ ICBzdGF0aWMgdm9pZCBydGxfc2V0dXBfbXFzX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0 cCkgIHsNCj4+ICsgICAgIHRwLT5yeF9yaW5nWzBdLnJkc2FyX3JlZyA9IFJ4RGVzY0FkZHJMb3c7 DQo+PiArICAgICBmb3IgKGludCBpID0gMTsgaSA8IHRwLT5od19zdXBwX251bV9yeF9xdWV1ZXM7 IGkrKykNCj4+ICsgICAgICAgICAgICAgdHAtPnJ4X3JpbmdbaV0ucmRzYXJfcmVnID0gKHUxNiko UkRTQVJfUTFfTE9XICsgKGkgLSAxKQ0KPj4gKyAqIDgpOw0KPg0KPlRoaXMgbG9va3MgbGlrZSBh cnJheSByeF9yaW5nW10gaXNuJ3QgYWN0dWFsbHkgbmVlZGVkLg0KDQpJIHdpbGwgZHJvcCBudW1f cnhfZGVzYyBhbmQgcmRzYXJfcmVnIGZyb20gc3RydWN0IHJ4X3JpbmcsIGFuZCBpbnRyb2R1Y2Ug YSBoZWxwZXIgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSByZWdpc3Rlci4NCg0KPg0KPj4gKw0K Pj4gICAgICAgaWYgKHRwLT5tYWNfdmVyc2lvbiA8PSBSVExfR0lHQV9NQUNfVkVSXzUyKSB7DQo+ PiAgICAgICAgICAgICAgIHRwLT5pc3JfcmVnWzBdID0gSW50clN0YXR1czsNCj4+ICAgICAgICAg ICAgICAgdHAtPmltcl9yZWdbMF0gPSBJbnRyTWFzazsgQEAgLTI3MzMsMTcgKzI3ODMsMjEgQEAN Cj4+IHN0YXRpYyB2b2lkIHJ0bF9zb2Z0d2FyZV9wYXJhbWV0ZXJfaW5pdGlhbGl6ZShzdHJ1Y3Qg cnRsODE2OV9wcml2YXRlICp0cCkNCj4+ICAgICAgIGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDoN Cj4+ICAgICAgICAgICAgICAgdHAtPm1pbl9pcnFfbnZlY3MgPSAxOw0KPj4gICAgICAgICAgICAg ICB0cC0+bWF4X2lycV9udmVjcyA9IDE7DQo+PiArICAgICAgICAgICAgIHRwLT5od19zdXBwX251 bV9yeF9xdWV1ZXMgPSBSODEyN19NQVhfUlhfUVVFVUVTOw0KPj4gICAgICAgICAgICAgICB0cC0+ aHdfc3VwcF9pc3JfdmVyID0gNjsNCj4+ICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAgICBk ZWZhdWx0Og0KPj4gICAgICAgICAgICAgICB0cC0+bWluX2lycV9udmVjcyA9IDE7DQo+PiAgICAg ICAgICAgICAgIHRwLT5tYXhfaXJxX252ZWNzID0gMTsNCj4+ICsgICAgICAgICAgICAgdHAtPmh3 X3N1cHBfbnVtX3J4X3F1ZXVlcyA9IDE7DQo+PiAgICAgICAgICAgICAgIHRwLT5od19zdXBwX2lz cl92ZXIgPSAxOw0KPj4gICAgICAgICAgICAgICBicmVhazsNCj4+ICAgICAgIH0NCj4+ICsgICAg IHRwLT5pbml0X3J4X2Rlc2NfdHlwZSA9IFJYX0RFU0NfUklOR19UWVBFX0RFRkFVTFQ7DQo+PiAg ICAgICB0cC0+aHdfY3Vycl9pc3JfdmVyID0gdHAtPmh3X3N1cHBfaXNyX3ZlcjsNCj4+DQo+PiAg ICAgICBydGxfc2V0dXBfbXFzX3JlZyh0cCk7DQo+PiArICAgICBydGxfc2V0X3Jpbmdfc2l6ZSh0 cCwgTlVNX1JYX0RFU0MpOw0KPj4gIH0NCj4+DQo+PiAgc3RhdGljIHZvaWQgcnRsX3JlcXVlc3Rf ZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIEBADQo+PiAtMjg3Nyw4ICsyOTMx LDEzIEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfdHhfZGVzY19yZWdpc3RlcnMoc3RydWN0DQo+ cnRsODE2OV9wcml2YXRlICp0cCkNCj4+ICAgICAgICAqLw0KPj4gICAgICAgUlRMX1czMih0cCwg VHhEZXNjU3RhcnRBZGRySGlnaCwgKCh1NjQpIHRwLT5UeFBoeUFkZHIpID4+IDMyKTsNCj4+ICAg ICAgIFJUTF9XMzIodHAsIFR4RGVzY1N0YXJ0QWRkckxvdywgKCh1NjQpIHRwLT5UeFBoeUFkZHIp ICYNCj5ETUFfQklUX01BU0soMzIpKTsNCj4+IC0gICAgIFJUTF9XMzIodHAsIFJ4RGVzY0FkZHJI aWdoLCAoKHU2NCkgdHAtPlJ4UGh5QWRkcikgPj4gMzIpOw0KPj4gLSAgICAgUlRMX1czMih0cCwg UnhEZXNjQWRkckxvdywgKCh1NjQpIHRwLT5SeFBoeUFkZHIpICYNCj5ETUFfQklUX01BU0soMzIp KTsNCj4+ICsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHAtPm51bV9yeF9yaW5nczsg aSsrKSB7DQo+PiArICAgICAgICAgICAgIHN0cnVjdCBydGw4MTY5X3J4X3JpbmcgKnJpbmcgPSAm dHAtPnJ4X3JpbmdbaV07DQo+PiArDQo+PiArICAgICAgICAgICAgIFJUTF9XMzIodHAsIHJpbmct PnJkc2FyX3JlZywgKCh1NjQpcmluZy0+cnhfcGh5X2FkZHIpICYNCj5ETUFfQklUX01BU0soMzIp KTsNCj4+ICsgICAgICAgICAgICAgUlRMX1czMih0cCwgcmluZy0+cmRzYXJfcmVnICsgNCwgKCh1 NjQpcmluZy0+cnhfcGh5X2FkZHIgPj4gMzIpKTsNCj4+ICsgICAgIH0NCj4+ICB9DQo+Pg0KPj4g IHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRl ICp0cCkgQEANCj4+IC00MjE0LDcgKzQyNzMsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdl X210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KPmludCBuZXdfbXR1KQ0KPj4gICAgICAgcmV0 dXJuIDA7DQo+PiAgfQ0KPj4NCj4+IC1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhz dHJ1Y3QgUnhEZXNjICpkZXNjKQ0KPj4gK3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2lj X2RlZmF1bHQoc3RydWN0IFJ4RGVzYyAqZGVzYykNCj4+ICB7DQo+PiAgICAgICB1MzIgZW9yID0g bGUzMl90b19jcHUoZGVzYy0+b3B0czEpICYgUmluZ0VuZDsNCj4+DQo+PiBAQCAtNDIyNCwxMyAr NDI4MywxOSBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNj DQo+KmRlc2MpDQo+PiAgICAgICBXUklURV9PTkNFKGRlc2MtPm9wdHMxLCBjcHVfdG9fbGUzMihE ZXNjT3duIHwgZW9yIHwNCj4+IFI4MTY5X1JYX0JVRl9TSVpFKSk7ICB9DQo+Pg0KPj4gK3N0YXRp YyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBz dHJ1Y3QNCj4+ICtSeERlc2MgKmRlc2MpIHsNCj4+ICsgICAgIHJ0bDgxNjlfbWFya190b19hc2lj X2RlZmF1bHQoZGVzYyk7DQo+PiArfQ0KPj4gKw0KPj4gIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRs ODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBSeERlc2MgKmRlc2MpDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgxNjlf cnhfcmluZyAqcmluZywNCj4+ICsgdW5zaWduZWQgaW50IGluZGV4KQ0KPj4gIHsNCj4+ICAgICAg IHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApOw0KPj4gICAgICAgaW50IG5vZGUgPSBk ZXZfdG9fbm9kZShkKTsNCj4+ICAgICAgIGRtYV9hZGRyX3QgbWFwcGluZzsNCj4+ICAgICAgIHN0 cnVjdCBwYWdlICpkYXRhOw0KPj4gKyAgICAgc3RydWN0IFJ4RGVzYyAqZGVzYyA9IHJpbmctPnJ4 X2Rlc2NfYXJyYXkgKyBpbmRleDsNCj4+DQo+PiAgICAgICBkYXRhID0gYWxsb2NfcGFnZXNfbm9k ZShub2RlLCBHRlBfS0VSTkVMLA0KPmdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpOw0KPj4g ICAgICAgaWYgKCFkYXRhKQ0KPj4gQEAgLTQyNDQsNTUgKzQzMDksMTExIEBAIHN0YXRpYyBzdHJ1 Y3QgcGFnZQ0KPipydGw4MTY5X2FsbG9jX3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAq dHAsDQo+PiAgICAgICB9DQo+Pg0KPj4gICAgICAgZGVzYy0+YWRkciA9IGNwdV90b19sZTY0KG1h cHBpbmcpOw0KPj4gLSAgICAgcnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYyk7DQo+PiArICAgICBy aW5nLT5yeF9kZXNjX3BoeV9hZGRyW2luZGV4XSA9IG1hcHBpbmc7DQo+PiArICAgICBydGw4MTY5 X21hcmtfdG9fYXNpYyh0cCwgZGVzYyk7DQo+Pg0KPj4gICAgICAgcmV0dXJuIGRhdGE7DQo+PiAg fQ0KPj4NCj4+IC1zdGF0aWMgdm9pZCBydGw4MTY5X3J4X2NsZWFyKHN0cnVjdCBydGw4MTY5X3By aXZhdGUgKnRwKQ0KPj4gK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcnhfY2xlYXIoc3RydWN0IHJ0bDgx NjlfcHJpdmF0ZSAqdHAsIHN0cnVjdA0KPj4gK3J0bDgxNjlfcnhfcmluZyAqcmluZykNCj4+ICB7 DQo+PiAgICAgICBpbnQgaTsNCj4+DQo+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX1JYX0RF U0MgJiYgdHAtPlJ4X2RhdGFidWZmW2ldOyBpKyspIHsNCj4+ICsgICAgIGZvciAoaSA9IDA7IGkg PCBOVU1fUlhfREVTQyAmJiByaW5nLT5yeF9kYXRhYnVmZltpXTsgaSsrKSB7DQo+PiAgICAgICAg ICAgICAgIGRtYV91bm1hcF9wYWdlKHRwX3RvX2Rldih0cCksDQo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxlNjRfdG9fY3B1KHRwLT5SeERlc2NBcnJheVtpXS5hZGRyKSwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmluZy0+cnhfZGVzY19waHlfYWRkcltpXSwNCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUjgxNjlfUlhfQlVGX1NJWkUsIERNQV9GUk9N X0RFVklDRSk7DQo+PiAtICAgICAgICAgICAgIF9fZnJlZV9wYWdlcyh0cC0+UnhfZGF0YWJ1ZmZb aV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpOw0KPj4gLSAgICAgICAgICAgICB0cC0+ UnhfZGF0YWJ1ZmZbaV0gPSBOVUxMOw0KPj4gLSAgICAgICAgICAgICB0cC0+UnhEZXNjQXJyYXlb aV0uYWRkciA9IDA7DQo+PiAtICAgICAgICAgICAgIHRwLT5SeERlc2NBcnJheVtpXS5vcHRzMSA9 IDA7DQo+PiArICAgICAgICAgICAgIF9fZnJlZV9wYWdlcyhyaW5nLT5yeF9kYXRhYnVmZltpXSwg Z2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7DQo+PiArICAgICAgICAgICAgIHJpbmctPnJ4 X2RhdGFidWZmW2ldID0gTlVMTDsNCj4+ICsgICAgICAgICAgICAgcmluZy0+cnhfZGVzY19waHlf YWRkcltpXSA9IDA7DQo+PiArICAgICAgICAgICAgIHJpbmctPnJ4X2Rlc2NfYXJyYXlbaV0uYWRk ciA9IDA7DQo+PiArICAgICAgICAgICAgIHJpbmctPnJ4X2Rlc2NfYXJyYXlbaV0ub3B0czEgPSAw Ow0KPj4gICAgICAgfQ0KPj4gIH0NCj4+DQo+PiAtc3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwo c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApDQo+PiArc3RhdGljIHZvaWQgcnRsODE2OV9tYXJr X2FzX2xhc3RfZGVzY3JpcHRvcl9kZWZhdWx0KHN0cnVjdCBSeERlc2MNCj4+ICsqZGVzYykgew0K Pj4gKyAgICAgZGVzYy0+b3B0czEgfD0gY3B1X3RvX2xlMzIoUmluZ0VuZCk7IH0NCj4+ICsNCj4+ ICtzdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfYXNfbGFzdF9kZXNjcmlwdG9yKHN0cnVjdCBydGw4 MTY5X3ByaXZhdGUNCj4+ICsqdHAsIHN0cnVjdCBSeERlc2MgKmRlc2MpIHsNCj4+ICsgICAgIHJ0 bDgxNjlfbWFya19hc19sYXN0X2Rlc2NyaXB0b3JfZGVmYXVsdChkZXNjKTsNCj4+ICt9DQo+PiAr DQo+DQo+RG8gd2UgYWN0dWFsbHkgbmVlZCB0aGlzIGluIHRoaXMgcGF0Y2g/DQoNCkFjdHVhbGx5 IHdlIGRvbuKAmXQgbmVlZCBpbiB0aGlzIHBhdGNoLiBUaGlzIGlzIGEgaW50ZXJmYWNlIGZvciB0 aGUgdXBjb21pbmcgcnNzIHBhdGNoLiBJIHdpbGwgaW50cm9kdWNlIGl0IGluIHRoZSBmb2xsb3dp bmcgcGF0Y2guDQoNCj4NCj4+ICtzdGF0aWMgaW50IHJ0bDgxNjlfcnhfZmlsbChzdHJ1Y3QgcnRs ODE2OV9wcml2YXRlICp0cCwgc3RydWN0DQo+PiArcnRsODE2OV9yeF9yaW5nICpyaW5nKQ0KPj4g IHsNCj4+ICAgICAgIGludCBpOw0KPj4NCj4+ICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fUlhf REVTQzsgaSsrKSB7DQo+PiAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlICpkYXRhOw0KPj4NCj4+ IC0gICAgICAgICAgICAgZGF0YSA9IHJ0bDgxNjlfYWxsb2NfcnhfZGF0YSh0cCwgdHAtPlJ4RGVz Y0FycmF5ICsgaSk7DQo+PiArICAgICAgICAgICAgIGRhdGEgPSBydGw4MTY5X2FsbG9jX3J4X2Rh dGEodHAsIHJpbmcsIGkpOw0KPj4gICAgICAgICAgICAgICBpZiAoIWRhdGEpIHsNCj4+IC0gICAg ICAgICAgICAgICAgICAgICBydGw4MTY5X3J4X2NsZWFyKHRwKTsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICBydGw4MTY5X3J4X2NsZWFyKHRwLCByaW5nKTsNCj4+ICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICAgICAgICAgICAgICAgfQ0KPj4gLSAgICAgICAgICAg ICB0cC0+UnhfZGF0YWJ1ZmZbaV0gPSBkYXRhOw0KPj4gKyAgICAgICAgICAgICByaW5nLT5yeF9k YXRhYnVmZltpXSA9IGRhdGE7DQo+PiAgICAgICB9DQo+Pg0KPj4gICAgICAgLyogbWFyayBhcyBs YXN0IGRlc2NyaXB0b3IgaW4gdGhlIHJpbmcgKi8NCj4+IC0gICAgIHRwLT5SeERlc2NBcnJheVtO VU1fUlhfREVTQyAtIDFdLm9wdHMxIHw9IGNwdV90b19sZTMyKFJpbmdFbmQpOw0KPj4gKyAgICAg cnRsODE2OV9tYXJrX2FzX2xhc3RfZGVzY3JpcHRvcih0cCwNCj4+ICsgJnJpbmctPnJ4X2Rlc2Nf YXJyYXlbTlVNX1JYX0RFU0MgLSAxXSk7DQo+PiArDQo+PiArICAgICByZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArc3RhdGljIGludCBydGw4MTY5X2FsbG9jX3J4X2Rlc2Moc3RydWN0IHJ0bDgx NjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIHN0cnVjdCBydGw4MTY5X3J4X3JpbmcgKnJpbmc7 DQo+PiArICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRwLT5wY2lfZGV2Ow0KPj4NCj4+ICsg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHAtPm51bV9yeF9yaW5nczsgaSsrKSB7DQo+PiArICAg ICAgICAgICAgIHJpbmcgPSAmdHAtPnJ4X3JpbmdbaV07DQo+PiArICAgICAgICAgICAgIHJpbmct PnJ4X2Rlc2NfYWxsb2Nfc2l6ZSA9IChyaW5nLT5udW1fcnhfZGVzYyArIDEpICogc2l6ZW9mKHN0 cnVjdA0KPlJ4RGVzYyk7DQo+PiArICAgICAgICAgICAgIHJpbmctPnJ4X2Rlc2NfYXJyYXkgPSBk bWFfYWxsb2NfY29oZXJlbnQoJnBkZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nLT5yeF9kZXNjX2FsbG9jX3NpemUs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnJpbmctPnJ4X3BoeV9hZGRyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgICAgICAgICBp ZiAoIXJpbmctPnJ4X2Rlc2NfYXJyYXkpDQo+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC0xOw0KPj4gKyAgICAgfQ0KPj4gICAgICAgcmV0dXJuIDA7DQo+PiAgfQ0KPj4NCj4+ICtzdGF0 aWMgdm9pZCBydGw4MTY5X2ZyZWVfcnhfZGVzYyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkg ew0KPj4gKyAgICAgc3RydWN0IHJ0bDgxNjlfcnhfcmluZyAqcmluZzsNCj4+ICsgICAgIHN0cnVj dCBwY2lfZGV2ICpwZGV2ID0gdHAtPnBjaV9kZXY7DQo+PiArDQo+PiArICAgICBmb3IgKGludCBp ID0gMDsgaSA8IHRwLT5udW1fcnhfcmluZ3M7IGkrKykgew0KPj4gKyAgICAgICAgICAgICByaW5n ID0gJnRwLT5yeF9yaW5nW2ldOw0KPj4gKyAgICAgICAgICAgICBpZiAocmluZy0+cnhfZGVzY19h cnJheSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KCZwZGV2 LT5kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmluZy0+ cnhfZGVzY19hbGxvY19zaXplLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJpbmctPnJ4X2Rlc2NfYXJyYXksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmluZy0+cnhfcGh5X2FkZHIpOw0KPj4gKyAgICAgICAgICAgICAgICAg ICAgIHJpbmctPnJ4X2Rlc2NfYXJyYXkgPSBOVUxMOw0KPj4gKyAgICAgICAgICAgICB9DQo+PiAr ICAgICB9DQo+PiArfQ0KPj4gKw0KPj4gIHN0YXRpYyBpbnQgcnRsODE2OV9pbml0X3Jpbmcoc3Ry dWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApICB7DQo+PiArICAgICBpbnQgcmV0dmFsID0gMDsNCj4+ ICsNCj4+ICAgICAgIHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApOw0KPj4gKyAgICAgcnRs ODE2OV9yeF9kZXNjX2luaXQodHApOw0KPj4NCj4+ICAgICAgIG1lbXNldCh0cC0+dHhfc2tiLCAw LCBzaXplb2YodHAtPnR4X3NrYikpOw0KPj4gLSAgICAgbWVtc2V0KHRwLT5SeF9kYXRhYnVmZiwg MCwgc2l6ZW9mKHRwLT5SeF9kYXRhYnVmZikpOw0KPj4NCj4+IC0gICAgIHJldHVybiBydGw4MTY5 X3J4X2ZpbGwodHApOw0KPj4gKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0cC0+bnVtX3J4X3Jp bmdzOyBpKyspIHsNCj4+ICsgICAgICAgICAgICAgc3RydWN0IHJ0bDgxNjlfcnhfcmluZyAqcmlu ZyA9ICZ0cC0+cnhfcmluZ1tpXTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgbWVtc2V0KHJpbmct PnJ4X2RhdGFidWZmLCAwLCBzaXplb2YocmluZy0+cnhfZGF0YWJ1ZmYpKTsNCj4+ICsgICAgICAg ICAgICAgcmV0dmFsID0gcnRsODE2OV9yeF9maWxsKHRwLCByaW5nKTsNCj4+ICsgICAgIH0NCj4+ ICsNCj4+ICsgICAgIHJldHVybiByZXR2YWw7DQo+PiAgfQ0KPj4NCj4+ICBzdGF0aWMgdm9pZCBy dGw4MTY5X3VubWFwX3R4X3NrYihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdW5zaWduZWQN Cj4+IGludCBlbnRyeSkgQEAgLTQzODEsMTYgKzQ1MDIsMjQgQEAgc3RhdGljIHZvaWQgcnRsODE2 OV9jbGVhbnVwKHN0cnVjdA0KPnJ0bDgxNjlfcHJpdmF0ZSAqdHApDQo+PiAgICAgICBydGw4MTY5 X2luaXRfcmluZ19pbmRleGVzKHRwKTsNCj4+ICB9DQo+Pg0KPj4gLXN0YXRpYyB2b2lkIHJ0bF9y ZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQ0KPj4gK3N0YXRpYyB2b2lkIHJ0 bDgxNjlfcnhfZGVzY19yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkNCj4+ICB7DQo+ PiAtICAgICBpbnQgaTsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHAtPm51bV9yeF9y aW5nczsgaSsrKSB7DQo+PiArICAgICAgICAgICAgIHN0cnVjdCBydGw4MTY5X3J4X3JpbmcgKnJp bmcgPSAmdHAtPnJ4X3JpbmdbaV07DQo+Pg0KPj4gKyAgICAgICAgICAgICBmb3IgKGludCBqID0g MDsgaiA8IHJpbmctPm51bV9yeF9kZXNjOyBqKyspDQo+PiArICAgICAgICAgICAgICAgICAgICAg cnRsODE2OV9tYXJrX3RvX2FzaWModHAsIHJpbmctPnJ4X2Rlc2NfYXJyYXkgKyBqKTsNCj4+ICsg ICAgIH0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgcnRsX3Jlc2V0X3dvcmsoc3RydWN0 IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICAgICAgIG5ldGlmX3N0b3BfcXVldWUodHAtPmRl dik7DQo+Pg0KPj4gICAgICAgcnRsODE2OV9jbGVhbnVwKHRwKTsNCj4+DQo+PiAtICAgICBmb3Ig KGkgPSAwOyBpIDwgTlVNX1JYX0RFU0M7IGkrKykNCj4+IC0gICAgICAgICAgICAgcnRsODE2OV9t YXJrX3RvX2FzaWModHAtPlJ4RGVzY0FycmF5ICsgaSk7DQo+PiArICAgICBydGw4MTY5X3J4X2Rl c2NfcmVzZXQodHApOw0KPj4gKw0KPj4gICAgICAgcnRsODE2OV9uYXBpX2VuYWJsZSh0cCk7DQo+ Pg0KPj4gICAgICAgcnRsX2h3X3N0YXJ0KHRwKTsNCj4+IEBAIC00Nzg0LDYgKzQ5MTMsMTEgQEAg c3RhdGljIHZvaWQgcnRsODE2OV9wY2llcnJfaW50ZXJydXB0KHN0cnVjdA0KPm5ldF9kZXZpY2Ug KmRldikNCj4+ICAgICAgIHJ0bF9zY2hlZHVsZV90YXNrKHRwLCBSVExfRkxBR19UQVNLX1JFU0VU X1BFTkRJTkcpOyAgfQ0KPj4NCj4+ICtzdGF0aWMgdm9pZCBydGw4MTY5X2Rlc2NfcXVpcmsoc3Ry dWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIFJUTF9SOCh0cCwgdHAtPmltcl9y ZWdbMF0pOw0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgdm9pZCBydGxfdHgoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiAgICAgICAgICAgICAg ICAgIGludCBidWRnZXQpDQo+PiAgew0KPj4gQEAgLTQ4MzYsOSArNDk3MCwxMSBAQCBzdGF0aWMg aW5saW5lIGludCBydGw4MTY5X2ZyYWdtZW50ZWRfZnJhbWUodTMyDQo+c3RhdHVzKQ0KPj4gICAg ICAgcmV0dXJuIChzdGF0dXMgJiAoRmlyc3RGcmFnIHwgTGFzdEZyYWcpKSAhPSAoRmlyc3RGcmFn IHwNCj4+IExhc3RGcmFnKTsgIH0NCj4+DQo+PiAtc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxNjlf cnhfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgb3B0czEpDQo+PiArc3RhdGljIGlubGlu ZSB2b2lkIHJ0bDgxNjlfcnhfY3N1bV9kZWZhdWx0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRw LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgUnhEZXNjICpkZXNjKQ0KPj4gIHsNCj4+IC0gICAgIHUzMiBzdGF0dXMgPSBvcHRzMSAm IChSeFByb3RvTWFzayB8IFJ4Q1NGYWlsTWFzayk7DQo+PiArICAgICB1MzIgc3RhdHVzID0gbGUz Ml90b19jcHUoZGVzYy0+b3B0czEpICYgKFJ4UHJvdG9NYXNrIHwNCj4+ICsgUnhDU0ZhaWxNYXNr KTsNCj4+DQo+PiAgICAgICBpZiAoc3RhdHVzID09IFJ4UHJvdG9UQ1AgfHwgc3RhdHVzID09IFJ4 UHJvdG9VRFApDQo+PiAgICAgICAgICAgICAgIHNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5O RUNFU1NBUlk7IEBAIC00ODQ2LDIyDQo+PiArNDk4Miw3MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQg cnRsODE2OV9yeF9jc3VtKHN0cnVjdCBza19idWZmICpza2IsIHUzMg0KPm9wdHMxKQ0KPj4gICAg ICAgICAgICAgICBza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTsgIH0NCj4+DQo+PiAtc3Rh dGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJp dmF0ZSAqdHAsDQo+PiBpbnQgYnVkZ2V0KQ0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5 X3J4X2NzdW0oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IFJ4RGVzYyAqZGVzYykgew0KPj4gKyAgICAgcnRsODE2 OV9yeF9jc3VtX2RlZmF1bHQodHAsIHNrYiwgZGVzYyk7IH0NCj4+ICsNCj4+ICtzdGF0aWMgdTMy IHJ0bDgxNjlfcnhfZGVzY19vcHRzMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0 DQo+PiArUnhEZXNjICpkZXNjKSB7DQo+PiArICAgICByZXR1cm4gUkVBRF9PTkNFKGRlc2MtPm9w dHMxKTsNCj4+ICt9DQo+DQo+SSBkb24ndCBzZWUgd2hpY2ggYmVuZWZpdCB0aGUgaGVscGVyIHBy b3ZpZGVzLiBJbnN0ZWFkIGl0IG1heSBjYXVzZSBzaWRlIGVmZmVjdHMNCj5kdWUgdG8gdGhlIFJF QURfT05DRSgpLg0KPg0KDQpJIHdpbGwgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIHJzcyBwYXRjaC4g V2hlbiByc3MgZW5hYmxlZCwgdGhlIGRlc2MgdHlwZSBpcyBkaWZmZXJlbnQuIFNvIHdlIG5lZWQg dGhlIGhlbHBlciBmdW5jdGlvbi4NCg0KPj4gKw0KPj4gK3N0YXRpYyBib29sIHJ0bDgxNjlfY2hl Y2tfcnhfZGVzY19lcnJvcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHN0YXR1cykgew0KPj4g KyAgICAgaWYgKHVubGlrZWx5KHN0YXR1cyAmIFJ4UkVTKSkgew0KPj4gKyAgICAgICAgICAgICBp ZiAoc3RhdHVzICYgKFJ4UldUIHwgUnhSVU5UKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICBk ZXYtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsNCj4+ICsgICAgICAgICAgICAgaWYgKHN0YXR1 cyAmIFJ4Q1JDKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGRldi0+c3RhdHMucnhfY3JjX2Vy cm9ycysrOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4+ICsgICAgIH0NCj4+ICsg ICAgIHJldHVybiBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSB2b2lkIHJ0 bDgxNjlfc2V0X2Rlc2NfZG1hX2FkZHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFJ4RGVzYyAq ZGVzYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFf YWRkcl90IG1hcHBpbmcpIHsNCj4+ICsgICAgIGRlc2MtPmFkZHIgPSBjcHVfdG9fbGU2NChtYXBw aW5nKTsgfQ0KPg0KPkFyZ3VtZW50IHRwIGlzbid0IHVzZWQuIFdoeSBpcyBpdCB0aGVyZT8NCj4N Cg0KSW50ZXJmYWNlIGZvciByc3MsIEkgd2lsbCByZW1vdmUgaXQuDQoNCj4+ICsNCj4+ICtzdGF0 aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2 YXRlICp0cCwNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODE2OV9yeF9yaW5nICpyaW5n LCBpbnQgYnVkZ2V0KQ0KPj4gIHsNCj4+ICAgICAgIHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19k ZXYodHApOw0KPj4gICAgICAgaW50IGNvdW50Ow0KPj4NCj4+IC0gICAgIGZvciAoY291bnQgPSAw OyBjb3VudCA8IGJ1ZGdldDsgY291bnQrKywgdHAtPmN1cl9yeCsrKSB7DQo+PiAtICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwa3Rfc2l6ZSwgZW50cnkgPSB0cC0+Y3VyX3J4ICUgTlVNX1JYX0RF U0M7DQo+PiAtICAgICAgICAgICAgIHN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC0+UnhEZXNjQXJy YXkgKyBlbnRyeTsNCj4+ICsgICAgIGZvciAoY291bnQgPSAwOyBjb3VudCA8IGJ1ZGdldDsgY291 bnQrKywgcmluZy0+Y3VyX3J4KyspIHsNCj4+ICsgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBr dF9zaXplLCBlbnRyeSA9IHJpbmctPmN1cl9yeCAlIHJpbmctPm51bV9yeF9kZXNjOw0KPj4gKyAg ICAgICAgICAgICBzdHJ1Y3QgUnhEZXNjICpkZXNjID0gcmluZy0+cnhfZGVzY19hcnJheSArIGVu dHJ5Ow0KPj4gICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPj4gICAgICAgICAg ICAgICBjb25zdCB2b2lkICpyeF9idWY7DQo+PiAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgYWRk cjsNCj4+ICAgICAgICAgICAgICAgdTMyIHN0YXR1czsNCj4+DQo+PiAtICAgICAgICAgICAgIHN0 YXR1cyA9IGxlMzJfdG9fY3B1KFJFQURfT05DRShkZXNjLT5vcHRzMSkpOw0KPj4gLSAgICAgICAg ICAgICBpZiAoc3RhdHVzICYgRGVzY093bikNCj4+IC0gICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4+ICsgICAgICAgICAgICAgc3RhdHVzID0gbGUzMl90b19jcHUocnRsODE2OV9yeF9kZXNj X29wdHMxKHRwLCBkZXNjKSk7DQo+PiArDQo+PiArICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBE ZXNjT3duKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKCF0cC0+cmVjaGVja19kZXNj X293bmJpdCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKw0K Pj4gKyAgICAgICAgICAgICAgICAgICAgIC8qIFdvcmthcm91bmQgZm9yIGEgaGFyZHdhcmUgaXNz dWU6DQo+DQo+SGFyZHdhcmUgaXNzdWUgb24gd2hpY2ggY2hpcCB2ZXJzaW9uKHMpPw0KDQpPbiBS VEw4MTI3IHNlcmllcy4NCg0KPg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAqIEhhcmR3YXJl IG1pZ2h0IHRyaWdnZXIgUlggaW50ZXJydXB0IGJlZm9yZSB0aGUgRE1BDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICogZW5naW5lIGZ1bGx5IHVwZGF0ZXMgUlggZGVzYyBvd25iaXQgaW4gaG9z dCBtZW1vcnkuDQo+PiArICAgICAgICAgICAgICAgICAgICAgICogU28gd2UgZG8gYSBxdWlyayBh bmQgcmUtcmVhZCB0byBhdm9pZCBtaXNzaW5nIFJYDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICogcGFja2V0cy4NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgKi8NCj4+ICsgICAgICAgICAg ICAgICAgICAgICB0cC0+cmVjaGVja19kZXNjX293bmJpdCA9IGZhbHNlOw0KPj4gKyAgICAgICAg ICAgICAgICAgICAgIHJ0bDgxNjlfZGVzY19xdWlyayh0cCk7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgc3RhdHVzID0gbGUzMl90b19jcHUocnRsODE2OV9yeF9kZXNjX29wdHMxKHRwLCBkZXNj KSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmIERlc2NPd24pDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICAgfQ0K Pj4NCj4+ICAgICAgICAgICAgICAgLyogVGhpcyBiYXJyaWVyIGlzIG5lZWRlZCB0byBrZWVwIHVz IGZyb20gcmVhZGluZw0KPj4gICAgICAgICAgICAgICAgKiBhbnkgb3RoZXIgZmllbGRzIG91dCBv ZiB0aGUgUnggZGVzY3JpcHRvciB1bnRpbCBAQA0KPj4gLTQ4NjksMjAgKzUwNTQsMTUgQEAgc3Rh dGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0DQo+cnRsODE2OV9w cml2YXRlICp0cCwgaW50IGJ1ZGdldA0KPj4gICAgICAgICAgICAgICAgKi8NCj4+ICAgICAgICAg ICAgICAgZG1hX3JtYigpOw0KPj4NCj4+IC0gICAgICAgICAgICAgaWYgKHVubGlrZWx5KHN0YXR1 cyAmIFJ4UkVTKSkgew0KPj4gKyAgICAgICAgICAgICBpZiAocnRsODE2OV9jaGVja19yeF9kZXNj X2Vycm9yKGRldiwgdHAsIHN0YXR1cykpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICBpZiAo bmV0X3JhdGVsaW1pdCgpKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2 X3dhcm4oZGV2LCAiUnggRVJST1IuIHN0YXR1cyA9ICUwOHhcbiIsDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOw0KPj4gKw0KPj4gICAgICAgICAg ICAgICAgICAgICAgIGRldi0+c3RhdHMucnhfZXJyb3JzKys7DQo+PiAtICAgICAgICAgICAgICAg ICAgICAgaWYgKHN0YXR1cyAmIChSeFJXVCB8IFJ4UlVOVCkpDQo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXYtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsNCj4+IC0gICAgICAg ICAgICAgICAgICAgICBpZiAoc3RhdHVzICYgUnhDUkMpDQo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXYtPnN0YXRzLnJ4X2NyY19lcnJvcnMrKzsNCj4+DQo+PiAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCEoZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfUlhBTEwpKQ0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZWxlYXNlX2Rlc2NyaXB0b3I7DQo+PiAt ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzICYgUnhSV1QgfHwgIShzdGF0dXMg JiAoUnhSVU5UIHwgUnhDUkMpKSkNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gcmVsZWFzZV9kZXNjcmlwdG9yOw0KPj4gICAgICAgICAgICAgICB9DQo+Pg0KPj4gICAgICAg ICAgICAgICBwa3Rfc2l6ZSA9IHN0YXR1cyAmIEdFTk1BU0soMTMsIDApOyBAQCAtNDg5OCwxNCAr NTA3OCwxNA0KPj4gQEAgc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludA0KPmJ1ZGdldA0KPj4gICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yOw0KPj4gICAgICAgICAgICAgICB9DQo+ Pg0KPj4gLSAgICAgICAgICAgICBza2IgPSBuYXBpX2FsbG9jX3NrYigmdHAtPnI4MTY5bmFwaVsw XS5uYXBpLCBwa3Rfc2l6ZSk7DQo+PiArICAgICAgICAgICAgIHNrYiA9IG5hcGlfYWxsb2Nfc2ti KCZ0cC0+cjgxNjluYXBpW3JpbmctPmluZGV4XS5uYXBpLA0KPj4gKyBwa3Rfc2l6ZSk7DQo+PiAg ICAgICAgICAgICAgIGlmICh1bmxpa2VseSghc2tiKSkgew0KPj4gICAgICAgICAgICAgICAgICAg ICAgIGRldi0+c3RhdHMucnhfZHJvcHBlZCsrOw0KPj4gICAgICAgICAgICAgICAgICAgICAgIGdv dG8gcmVsZWFzZV9kZXNjcmlwdG9yOw0KPj4gICAgICAgICAgICAgICB9DQo+Pg0KPj4gLSAgICAg ICAgICAgICBhZGRyID0gbGU2NF90b19jcHUoZGVzYy0+YWRkcik7DQo+PiAtICAgICAgICAgICAg IHJ4X2J1ZiA9IHBhZ2VfYWRkcmVzcyh0cC0+UnhfZGF0YWJ1ZmZbZW50cnldKTsNCj4+ICsgICAg ICAgICAgICAgYWRkciA9IHJpbmctPnJ4X2Rlc2NfcGh5X2FkZHJbZW50cnldOw0KPj4gKyAgICAg ICAgICAgICByeF9idWYgPSBwYWdlX2FkZHJlc3MocmluZy0+cnhfZGF0YWJ1ZmZbZW50cnldKTsN Cj4+DQo+PiAgICAgICAgICAgICAgIGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBr dF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpOw0KPj4gICAgICAgICAgICAgICBwcmVmZXRjaChyeF9i dWYpOw0KPj4gQEAgLTQ5MTQsNyArNTA5NCw3IEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsIHN0cnVjdA0KPnJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQN Cj4+ICAgICAgICAgICAgICAgc2tiLT5sZW4gPSBwa3Rfc2l6ZTsNCj4+ICAgICAgICAgICAgICAg ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsDQo+PiBETUFfRlJP TV9ERVZJQ0UpOw0KPj4NCj4+IC0gICAgICAgICAgICAgcnRsODE2OV9yeF9jc3VtKHNrYiwgc3Rh dHVzKTsNCj4+ICsgICAgICAgICAgICAgcnRsODE2OV9yeF9jc3VtKHRwLCBza2IsIGRlc2MpOw0K Pj4gICAgICAgICAgICAgICBza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBkZXYp Ow0KPj4NCj4+ICAgICAgICAgICAgICAgcnRsODE2OV9yeF92bGFuX3RhZyhkZXNjLCBza2IpOyBA QCAtNDkyMiwxMSArNTEwMiwxMiBAQA0KPj4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQNCj4+ICAg ICAgICAgICAgICAgaWYgKHNrYi0+cGt0X3R5cGUgPT0gUEFDS0VUX01VTFRJQ0FTVCkNCj4+ICAg ICAgICAgICAgICAgICAgICAgICBkZXYtPnN0YXRzLm11bHRpY2FzdCsrOw0KPj4NCj4+IC0gICAg ICAgICAgICAgbmFwaV9ncm9fcmVjZWl2ZSgmdHAtPnI4MTY5bmFwaVswXS5uYXBpLCBza2IpOw0K Pj4gKyAgICAgICAgICAgICBuYXBpX2dyb19yZWNlaXZlKCZ0cC0+cjgxNjluYXBpW3JpbmctPmlu ZGV4XS5uYXBpLCBza2IpOw0KPj4NCj4+ICAgICAgICAgICAgICAgZGV2X3N3X25ldHN0YXRzX3J4 X2FkZChkZXYsIHBrdF9zaXplKTsNCj4+ICByZWxlYXNlX2Rlc2NyaXB0b3I6DQo+PiAtICAgICAg ICAgICAgIHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpOw0KPj4gKyAgICAgICAgICAgICBydGw4 MTY5X3NldF9kZXNjX2RtYV9hZGRyKHRwLCBkZXNjLCByaW5nLQ0KPj5yeF9kZXNjX3BoeV9hZGRy W2VudHJ5XSk7DQo+PiArICAgICAgICAgICAgIHJ0bDgxNjlfbWFya190b19hc2ljKHRwLCBkZXNj KTsNCj4+ICAgICAgIH0NCj4+DQo+PiAgICAgICByZXR1cm4gY291bnQ7DQo+PiBAQCAtNDk1Miw2 ICs1MTMzLDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEs IHZvaWQNCj4qZGV2X2luc3RhbmNlKQ0KPj4gICAgICAgICAgICAgICBwaHlfbWFjX2ludGVycnVw dCh0cC0+cGh5ZGV2KTsNCj4+DQo+PiAgICAgICBydGxfaXJxX2Rpc2FibGUodHApOw0KPj4gKyAg ICAgdHAtPnJlY2hlY2tfZGVzY19vd25iaXQgPSB0cnVlOw0KPj4gICAgICAgbmFwaV9zY2hlZHVs ZSgmbmFwaS0+bmFwaSk7DQo+PiAgb3V0Og0KPj4gICAgICAgcnRsX2Fja19ldmVudHModHAsIHN0 YXR1cyk7DQo+PiBAQCAtNTA0MCw3ICs1MjIyLDggQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwo c3RydWN0IG5hcGlfc3RydWN0DQo+PiAqbmFwaSwgaW50IGJ1ZGdldCkNCj4+DQo+PiAgICAgICBy dGxfdHgoZGV2LCB0cCwgYnVkZ2V0KTsNCj4+DQo+PiAtICAgICB3b3JrX2RvbmUgPSBydGxfcngo ZGV2LCB0cCwgYnVkZ2V0KTsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHAtPm51bV9y eF9yaW5nczsgaSsrKQ0KPj4gKyAgICAgICAgICAgICB3b3JrX2RvbmUgKz0gcnRsX3J4KGRldiwg dHAsICZ0cC0+cnhfcmluZ1tpXSwgYnVkZ2V0KTsNCj4+DQo+PiAgICAgICBpZiAod29ya19kb25l IDwgYnVkZ2V0ICYmIG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCB3b3JrX2RvbmUpKQ0KPj4gICAg ICAgICAgICAgICBydGxfaXJxX2VuYWJsZSh0cCk7DQo+PiBAQCAtNTE2OCwyMSArNTM1MSwyMSBA QCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikNCj4+ICAg ICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdHAtPnBjaV9kZXY7DQo+Pg0KPj4gICAgICAgcG1f cnVudGltZV9nZXRfc3luYygmcGRldi0+ZGV2KTsNCj4+IC0NCj4+ICAgICAgIG5ldGlmX3N0b3Bf cXVldWUoZGV2KTsNCj4+ICsNCj4+ICAgICAgIHJ0bDgxNjlfZG93bih0cCk7DQo+PiAtICAgICBy dGw4MTY5X3J4X2NsZWFyKHRwKTsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHAtPm51 bV9yeF9yaW5nczsgaSsrKQ0KPj4gKyAgICAgICAgICAgICBydGw4MTY5X3J4X2NsZWFyKHRwLCAm dHAtPnJ4X3JpbmdbaV0pOw0KPj4NCj4+ICAgICAgIHJ0bDgxNjlfZnJlZV9pcnEodHApOw0KPj4N Cj4+ICAgICAgIHBoeV9kaXNjb25uZWN0KHRwLT5waHlkZXYpOw0KPj4NCj4+IC0gICAgIGRtYV9m cmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLQ0KPj5SeERl c2NBcnJheSwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHRwLT5SeFBoeUFkZHIpOw0KPj4g ICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwgUjgxNjlfVFhfUklOR19CWVRFUywg dHAtDQo+PlR4RGVzY0FycmF5LA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgdHAtPlR4UGh5 QWRkcik7DQo+PiAgICAgICB0cC0+VHhEZXNjQXJyYXkgPSBOVUxMOw0KPj4gLSAgICAgdHAtPlJ4 RGVzY0FycmF5ID0gTlVMTDsNCj4+ICsNCj4+ICsgICAgIHJ0bDgxNjlfZnJlZV9yeF9kZXNjKHRw KTsNCj4+DQo+PiAgICAgICBwbV9ydW50aW1lX3B1dF9zeW5jKCZwZGV2LT5kZXYpOw0KPj4NCj4+ IEBAIC01MjExLDE2ICs1Mzk0LDE1IEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9k ZXZpY2UgKmRldikNCj4+ICAgICAgICAqIFJ4IGFuZCBUeCBkZXNjcmlwdG9ycyBuZWVkcyAyNTYg Ynl0ZXMgYWxpZ25tZW50Lg0KPj4gICAgICAgICogZG1hX2FsbG9jX2NvaGVyZW50IHByb3ZpZGVz IG1vcmUuDQo+PiAgICAgICAgKi8NCj4+ICsNCj4NCj5JdCdzIG5vdCB0aGUgb25seSBwbGFjZSB3 aXRoIHVubW90aXZhdGVkIGNoYW5nZXMuIFBsZWFzZSByZW1vdmUgdGhlc2UNCj5jaGFuZ2VzLg0K Pg0KPj4gICAgICAgdHAtPlR4RGVzY0FycmF5ID0gZG1hX2FsbG9jX2NvaGVyZW50KCZwZGV2LT5k ZXYsDQo+UjgxNjlfVFhfUklOR19CWVRFUywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdHAtPlR4UGh5QWRkciwgR0ZQX0tFUk5FTCk7DQo+PiAgICAgICBp ZiAoIXRwLT5UeERlc2NBcnJheSkNCj4+IC0gICAgICAgICAgICAgZ290byBvdXQ7DQo+PiAtDQo+ PiAtICAgICB0cC0+UnhEZXNjQXJyYXkgPSBkbWFfYWxsb2NfY29oZXJlbnQoJnBkZXYtPmRldiwN Cj5SODE2OV9SWF9SSU5HX0JZVEVTLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ0cC0+UnhQaHlBZGRyLCBHRlBfS0VSTkVMKTsNCj4+IC0gICAgIGlmICgh dHAtPlJ4RGVzY0FycmF5KQ0KPj4gICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX3R4XzA7DQo+ Pg0KPj4gKyAgICAgaWYgKHJ0bDgxNjlfYWxsb2NfcnhfZGVzYyh0cCkgPCAwKQ0KPj4gKyAgICAg ICAgICAgICBnb3RvIGVycl9mcmVlX3J4XzE7DQo+PiArDQo+PiAgICAgICByZXR2YWwgPSBydGw4 MTY5X2luaXRfcmluZyh0cCk7DQo+PiAgICAgICBpZiAocmV0dmFsIDwgMCkNCj4+ICAgICAgICAg ICAgICAgZ290byBlcnJfZnJlZV9yeF8xOw0KPj4gQEAgLTUyNDksMTEgKzU0MzEsMTAgQEAgc3Rh dGljIGludCBydGxfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KPj4gICAgICAgcnRsODE2 OV9mcmVlX2lycSh0cCk7DQo+PiAgZXJyX3JlbGVhc2VfZndfMjoNCj4+ICAgICAgIHJ0bF9yZWxl YXNlX2Zpcm13YXJlKHRwKTsNCj4+IC0gICAgIHJ0bDgxNjlfcnhfY2xlYXIodHApOw0KPj4gKyAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0cC0+bnVtX3J4X3JpbmdzOyBpKyspDQo+PiArICAgICAg ICAgICAgIHJ0bDgxNjlfcnhfY2xlYXIodHAsICZ0cC0+cnhfcmluZ1tpXSk7DQo+PiAgZXJyX2Zy ZWVfcnhfMToNCj4+IC0gICAgIGRtYV9mcmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsIFI4MTY5X1JY X1JJTkdfQllURVMsIHRwLQ0KPj5SeERlc2NBcnJheSwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgIHRwLT5SeFBoeUFkZHIpOw0KPj4gLSAgICAgdHAtPlJ4RGVzY0FycmF5ID0gTlVMTDsNCj4+ ICsgICAgIHJ0bDgxNjlfZnJlZV9yeF9kZXNjKHRwKTsNCj4+ICBlcnJfZnJlZV90eF8wOg0KPj4g ICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwgUjgxNjlfVFhfUklOR19CWVRFUywg dHAtDQo+PlR4RGVzY0FycmF5LA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgdHAtPlR4UGh5 QWRkcik7IEBAIC01NzY3LDcgKzU5NDgsMTAgQEAgc3RhdGljDQo+PiBpbnQgcnRsX2luaXRfb25l KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQ0K Pj4gICAgICAgdTMyIHR4Y29uZmlnOw0KPj4gICAgICAgdTMyIHhpZDsNCj4+DQo+PiAtICAgICBk ZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2KCZwZGV2LT5kZXYsIHNpemVvZiAoKnRwKSk7DQo+PiAr ICAgICBkZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2X21xcygmcGRldi0+ZGV2LCBzaXplb2YoKnRw KSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSODE2OV9NQVhfUlhfUVVFVUVTKTsNCj4+ICsN Cj4+ICAgICAgIGlmICghZGV2KQ0KPj4gICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ DQoNCg==