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 0B61C3CF02D; Mon, 18 May 2026 11:18:08 +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=1779103111; cv=none; b=KPqHmSNNAQsWYTST4ghqCw0ebSVascgcKjIdoNohPBp/d1DcDy4vUUl+ZDp8xC8/Ij+r1hnWSFb/OZfVfaEEWuFwB9Mx+mZHBlb0A55cJskA9ZYwCU754LP/8EW54tBxlU+pSNel56sLDEKAw/LIyvxPvLR+Tnyd0Ti2Gs/uyFo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779103111; c=relaxed/simple; bh=FvIrg8m2+hwdKBzhi4FT/ivumjAeryIfbi2mRxjYEdE=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=IbMpbJBLLxd0Lr0oKJmvpilca3q6VHnW9e11KPXf9rYzqoYdp2ZQPXEIEbj3NzXLOk9h5/8HsKiw3txq3Lbb6btZZ9/WM0IW0enjy/2B5ht3y4VLHy9yRtZ89j1uOtl3KlTFI1EHBDv+oawwJS20QEZi5+8yTDWJPAHrvnQGtLY= 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=Zk5vgQa4; 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="Zk5vgQa4" X-SpamFilter-By: ArmorX SpamTrap 5.80 with qID 64IBHZQI01830141, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=realsil.com.cn; s=dkim; t=1779103056; bh=FvIrg8m2+hwdKBzhi4FT/ivumjAeryIfbi2mRxjYEdE=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:Content-Transfer-Encoding:MIME-Version; b=Zk5vgQa4MNF+ZCqvv5TxHSJEG3oz7QvzrqE88Cijvg9bmvrvy/v9EXj5/IMCGUCZO yxZRC1Nj3reCC+C1KBjJz8HJ5z5br2tSJbGVgeD8zdSVW++lwJybh0tInNOE57o9Xg ITbesTlRXbfU3MQQQIbnOad/WRgkb83ZEghtUTP18OBA14FH+rd+AOu8gl6DRMID8G lLfJdkyBUTbYifJ3DPxUAEs/z71BZdMgSV3uI+t0mUWxRFjeiKV9WAKDnf451n0jpO 7cro41rCHmKzEh3GDCnFUpQMAU4Q1dZXfkAU2SR8LkQPEQnO9CrwCpVTu7B/5y+H79 spvp9/z4JmNjw== Received: from RS-EX-MBS1.realsil.com.cn ([172.29.17.101]) by rtits2.realtek.com.tw (8.15.2/3.28/5.94) with ESMTPS id 64IBHZQI01830141 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 18 May 2026 19:17:35 +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; Mon, 18 May 2026 19:17:35 +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; Mon, 18 May 2026 19:17:34 +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 v3 5/7] r8169: add support and enable rss Thread-Topic: [Patch net-next v3 5/7] r8169: add support and enable rss Thread-Index: AQHc4s9v0PBpLSvwsEKFRrN72i6CGbYQtQiAgALzumA= Date: Mon, 18 May 2026 11:17:34 +0000 Message-ID: <45c4ae84a5234fafb18fff093a446d14@realsil.com.cn> References: <20260513115543.1730-1-javen_xu@realsil.com.cn> <20260513115543.1730-6-javen_xu@realsil.com.cn> In-Reply-To: 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: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Pk9uIDEzLjA1LjIwMjYgMTM6NTUsIGphdmVuIHdyb3RlOg0KPj4gRnJvbTogSmF2ZW4gWHUgPGph dmVuX3h1QHJlYWxzaWwuY29tLmNuPg0KPj4NCj4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGFu ZCBlbmFibGUgcnNzIGZvciBSVEw4MTI3Lg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IEphdmVuIFh1 IDxqYXZlbl94dUByZWFsc2lsLmNvbS5jbj4NCj4+IC0tLQ0KPj4gQ2hhbmdlcyBpbiB2MjoNCj4+ ICAtIHNvbWUgY2hhbmdlcyBtb3ZlZCBmcm9tIFBhdGNoIDIvNw0KPj4gQ2hhbmdlcyBpbiB2MzoN Cj4+ICAtIGFkZCBzdHJ1Y3QgcnRsODE2OV9yc3NfZGF0YS4gQWxsb2NhdGUgaXQgZHluYW1pY2Fs bHkgd2hlbiBuZWVkZWQuDQo+PiAgLSBkZWZpbmUgcnNzX2tleSBhcyBhbiB1MzIgYXJyYXkNCj4+ ICAtIHJlcGxhY2Ugc29tZSBtYWdpYyBiaXQgbnVtYmVycyBpbiBydGw4MTY5X3NldF9yc3NfaGFz aF9vcHQoKSBhbmQNCj4+ICAgIHJ0bDgxMjVfc2V0X3J4X3FfbnVtKCkNCj4+ICAtIHVzZSB1bmlv biB0byBjb21iaW5lIGRpZmZlcmVudCByeCBkZXNjcmlwdG9yLCByZWZhY3RvciBzdHJ1Y3QNCj4+ IFJ4RGVzYw0KPj4gIC0gcmVtb3ZlIGRlYWQgY29kZSBmcm9tIHJ0bDgxNjlfZG91YmxlX2NoZWNr X3Jzc19zdXBwb3J0KCkNCj4+IC0tLQ0KPj4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsv cjgxNjlfbWFpbi5jIHwgNDA1DQo+PiArKysrKysrKysrKysrKysrKysrKy0tDQo+PiAgMSBmaWxl IGNoYW5nZWQsIDM3MSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4+DQo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMNCj4+IGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMNCj4+IGluZGV4IGI5YzUw NWU0YmMwYS4uYjkwMzc1Y2VmNzI0IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvcmVhbHRlay9yODE2OV9tYWluLmMNCj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Jl YWx0ZWsvcjgxNjlfbWFpbi5jDQo+PiBAQCAtODIsNiArODIsMTkgQEANCj4+ICAjZGVmaW5lIFI4 MTY5X01BWF9NU0lYX1ZFQyAgIDMyDQo+PiAgI2RlZmluZSBSODEyN19NQVhfUlhfUVVFVUVTICA4 DQo+PiAgI2RlZmluZSBSODE2OV9ERUZBVUxUX1JYX1FVRVVFUyAgICAgIDENCj4+ICsjZGVmaW5l IFI4MTI3X01BWF9JUlEgICAgICAgICAgICAgICAgMzINCj4+ICsjZGVmaW5lIFI4MTI3X01JTl9J UlEgICAgICAgICAgICAgICAgMzANCj4+ICsjZGVmaW5lIFI4MTY5X0lSUV9ERUZBVUxUICAgIDEN Cj4NCj5UaGVzZSBuYW1lIGFyZSBzb21ld2hhdCBtaXNsZWFkaW5nLiBXb3VsZCBzb21ldGhpbmcg bGlrZQ0KPlI4MTI3X01BWF9OVU1fSVJRVkVDIGJldHRlciBkZXNjcmliZSB0aGUgdXNhZ2U/DQo+ DQo+PiArI2RlZmluZSBSVExfUlNTX0tFWV9TSVpFICAgICA0MA0KPj4gKyNkZWZpbmUgUlNTX0NQ VV9OVU1fTUFTSyAgICAgR0VOTUFTSygxOCwgMTYpDQo+PiArI2RlZmluZSBSU1NfSEFTSF9NQVNL ICAgICAgICAgICAgICAgIEdFTk1BU0soMTAsIDgpDQo+PiArI2RlZmluZSBSVExfTUFYX0lORElS RUNUSU9OX1RBQkxFX0VOVFJJRVMgMTI4DQo+PiArI2RlZmluZSBSWFNfUlNTX1VEUCAgICAgICAg ICBCSVQoMjcpDQo+PiArI2RlZmluZSBSWFNfUlNTX0lQVjQgICAgICAgICBCSVQoMjgpDQo+PiAr I2RlZmluZSBSWFNfUlNTX0lQVjYgICAgICAgICBCSVQoMjkpDQo+PiArI2RlZmluZSBSWFNfUlNT X1RDUCAgICAgICAgICBCSVQoMzApDQo+PiArI2RlZmluZSBSWFNfUlNTX0wzX1RZUEVfTUFTSyAo UlhTX1JTU19JUFY0IHwgUlhTX1JTU19JUFY2KSAjZGVmaW5lDQo+PiArUlhTX1JTU19MNF9UWVBF X01BU0sgKFJYU19SU1NfVENQIHwgUlhTX1JTU19VRFApDQo+Pg0KPj4gICNkZWZpbmUgT0NQX1NU RF9QSFlfQkFTRSAgICAgMHhhNDAwDQo+Pg0KPj4gQEAgLTU5Miw2ICs2MDUsMjUgQEAgZW51bSBy dGxfcmVnaXN0ZXJfY29udGVudCB7DQo+PiAgI2RlZmluZSAgICAgIElTUklNUl9MSU5LQ0hHICBC SVQoMjkpDQo+PiAgI2RlZmluZSAgICAgIElTUklNUl9UT0tfUTAgICBCSVQoOCkNCj4+ICAjZGVm aW5lICAgICAgSVNSSU1SX1JPS19RMCAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgUlRMX0RFU0NfVFlQ RV9DVFJMICAgICAgICAgICAweGQ4DQo+PiArI2RlZmluZSBSU1NfS0VZX1JFRyAgICAgICAgICAg ICAgICAgIDB4NDYwMA0KPj4gKyNkZWZpbmUgUlNTX0lORElSRUNUSU9OX1RCTF9SRUcgICAgICAg ICAgICAgIDB4NDcwMA0KPj4gKyNkZWZpbmUgUlNTX0NUUkxfVENQX0lQVjRfU1VQUCAgICAgICAg ICAgICAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgUlRMX0RFU0NfVFlQRV9SU1MgICAgICAgICAgICBC SVQoMSkNCj4+ICsjZGVmaW5lIFJTU19DVFJMX0lQVjRfU1VQUCAgICAgICAgICAgQklUKDEpDQo+ PiArI2RlZmluZSBSU1NfQ1RSTF9UQ1BfSVBWNl9TVVBQICAgICAgICAgICAgICAgQklUKDIpDQo+ PiArI2RlZmluZSBSU1NfQ1RSTF9JUFY2X1NVUFAgICAgICAgICAgIEJJVCgzKQ0KPj4gKyNkZWZp bmUgUlNTX0NUUkxfSVBWNl9FWFRfU1VQUCAgICAgICAgICAgICAgIEJJVCg0KQ0KPj4gKyNkZWZp bmUgUlNTX0NUUkxfVENQX0lQVjZfRVhUX1NVUFAgICBCSVQoNSkNCj4+ICsjZGVmaW5lIFJTU19D VFJMX1VEUF9JUFY0X1NVUFAgICAgICAgICAgICAgICBCSVQoNikNCj4+ICsjZGVmaW5lIFJTU19D VFJMX1VEUF9JUFY2X1NVUFAgICAgICAgICAgICAgICBCSVQoNykNCj4+ICsjZGVmaW5lIFJTU19D VFJMX1VEUF9JUFY2X0VYVF9TVVBQICAgQklUKDgpDQo+PiArI2RlZmluZSBSVExfUlNTX0ZMQUdf SEFTSF9VRFBfSVBWNCAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgUlRMX1JTU19GTEFHX0hBU0hfVURQ X0lQVjYgICBCSVQoMSkNCj4+ICsjZGVmaW5lICAgICAgUlhfUkVTX1JTUyAgICAgICAgICAgICAg ICAgICAgICBCSVQoMjIpDQo+PiArI2RlZmluZSAgICAgIFJYX1JVTlRfUlNTICAgICAgICAgICAg ICAgICAgICAgQklUKDIxKQ0KPj4gKyNkZWZpbmUgICAgICBSWF9DUkNfUlNTICAgICAgICAgICAg ICAgICAgICAgIEJJVCgyMCkNCj4+ICsjZGVmaW5lIFJUTF9SWF9RX05VTV9NQVNLICAgICAgICAg ICAgR0VOTUFTSyg0LCAyKQ0KPj4gIH07DQo+Pg0KPj4gIGVudW0gcnRsX2lzcl92ZXJzaW9uIHsN Cj4+IEBAIC02NTQsNiArNjg2LDExIEBAIGVudW0gcnRsX3J4X2Rlc2NfYml0IHsNCj4+ICAjZGVm aW5lIFJ4UHJvdG9JUCAgICAoUElEMSB8IFBJRDApDQo+PiAgI2RlZmluZSBSeFByb3RvTWFzayAg UnhQcm90b0lQDQo+Pg0KPj4gKyNkZWZpbmUgICAgICBSWF9VRFBUX0RFU0NfUlNTICAgICAgICBC SVQoMTkpDQo+PiArI2RlZmluZSAgICAgIFJYX1RDUFRfREVTQ19SU1MgICAgICAgIEJJVCgxOCkN Cj4+ICsjZGVmaW5lICAgICAgUlhfVURQRl9ERVNDX1JTUyAgICAgICAgQklUKDE2KSAvKiBVRFAv SVAgY2hlY2tzdW0gZmFpbGVkICovDQo+PiArI2RlZmluZSAgICAgIFJYX1RDUEZfREVTQ19SU1Mg ICAgICAgIEJJVCgxNSkgLyogVENQL0lQIGNoZWNrc3VtIGZhaWxlZCAqLw0KPj4gKw0KPj4gICAg ICAgSVBGYWlsICAgICAgICAgID0gKDEgPDwgMTYpLCAvKiBJUCBjaGVja3N1bSBmYWlsZWQgKi8N Cj4+ICAgICAgIFVEUEZhaWwgICAgICAgICA9ICgxIDw8IDE1KSwgLyogVURQL0lQIGNoZWNrc3Vt IGZhaWxlZCAqLw0KPj4gICAgICAgVENQRmFpbCAgICAgICAgID0gKDEgPDwgMTQpLCAvKiBUQ1Av SVAgY2hlY2tzdW0gZmFpbGVkICovDQo+PiBAQCAtNjc1LDkgKzcxMiwyNyBAQCBzdHJ1Y3QgVHhE ZXNjIHsNCj4+ICB9Ow0KPj4NCj4+ICBzdHJ1Y3QgUnhEZXNjIHsNCj4+IC0gICAgIF9fbGUzMiBv cHRzMTsNCj4+IC0gICAgIF9fbGUzMiBvcHRzMjsNCj4+IC0gICAgIF9fbGU2NCBhZGRyOw0KPj4g KyAgICAgdW5pb24gew0KPj4gKyAgICAgICAgICAgICAvKiBSWF9ERVNDX1JJTkdfVFlQRV9ERUZB VUxUICovDQo+PiArICAgICAgICAgICAgIHN0cnVjdCB7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgX19sZTMyIG9wdHMxOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgIF9fbGUzMiBvcHRzMjsN Cj4+ICsgICAgICAgICAgICAgICAgICAgICBfX2xlNjQgYWRkcjsNCj4+ICsgICAgICAgICAgICAg fTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgLyogUlhfREVTQ19SSU5HX1RZUEVfUlNTICovDQo+ PiArICAgICAgICAgICAgIHN0cnVjdCB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgdW5pb24g ew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZTY0IHJzc19hZGRyOw0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19sZTMyIHJzc19pbmZvOw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlMzIgcnNzX3Jlc3VsdDsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0gcnNzX2R3b3JkOw0KPj4gKyAgICAgICAgICAgICAgICAg ICAgIH07DQo+PiArICAgICAgICAgICAgICAgICAgICAgX19sZTMyIHJzc19vcHRzMjsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICBfX2xlMzIgcnNzX29wdHMxOw0KPj4gKyAgICAgICAgICAgICB9 Ow0KPj4gKyAgICAgfTsNCj4+ICB9Ow0KPj4NCj4+ICBzdHJ1Y3QgcmluZ19pbmZvIHsNCj4+IEBA IC03NjQsNiArODE5LDEzIEBAIHN0cnVjdCBydGw4MTY5X3J4X3Jpbmcgew0KPj4gICAgICAgc3Ry dWN0IHBhZ2UgKnJ4X2RhdGFidWZmW05VTV9SWF9ERVNDXTsgICAgICAgICAgLyogUnggZGF0YSBi dWZmZXJzICovDQo+PiAgfTsNCj4+DQo+PiArc3RydWN0IHJ0bDgxNjlfcnNzX2RhdGEgew0KPj4g KyAgICAgdTMyIHJzc19mbGFnczsNCj4+ICsgICAgIHUzMiByc3Nfa2V5W1JUTF9SU1NfS0VZX1NJ WkUgLyBzaXplb2YodTMyKV07DQo+PiArICAgICB1OCByc3NfaW5kaXJfdGJsW1JUTF9NQVhfSU5E SVJFQ1RJT05fVEFCTEVfRU5UUklFU107DQo+PiArICAgICB1OCBod19zdXBwX2luZGlyX3RibF9l bnRyaWVzOw0KPg0KPkxpa2UgaW4gb3RoZXIgcGxhY2VzOiBXaHkgbm90IHVzZSB1bnNpZ25lZCBp bnQgaGVyZT8NCj4NCj4+ICt9Ow0KPj4gKw0KPj4gIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgew0K Pj4gICAgICAgdm9pZCBfX2lvbWVtICptbWlvX2FkZHI7ICAgICAgICAvKiBtZW1vcnkgbWFwIHBo eXNpY2FsIGFkZHJlc3MgKi8NCj4+ICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2Ow0KPj4g QEAgLTc4Myw5ICs4NDUsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7DQo+PiAgICAgICB1 MTYgdHhfbHBpX3RpbWVyOw0KPj4gICAgICAgdTMyIGlycV9tYXNrOw0KPj4gICAgICAgdTE2IGh3 X3N1cHBfbnVtX3J4X3F1ZXVlczsNCj4+ICsgICAgIHN0cnVjdCBydGw4MTY5X3Jzc19kYXRhICpy c3NfZGF0YTsNCj4+ICAgICAgIGVudW0gcnRsX2lzcl92ZXJzaW9uIGh3X3N1cHBfaXNyX3ZlcjsN Cj4+ICAgICAgIGVudW0gcnRsX2lzcl92ZXJzaW9uIGh3X2N1cnJfaXNyX3ZlcjsNCj4+ICAgICAg IHU4IGlycV9udmVjczsNCj4+ICsgICAgIHU4IGluaXRfcnhfZGVzY190eXBlOw0KPg0KPlR5cGUg c2hvdWxkIGJlIHRoZSByZXNwZWN0aXZlIGVudW0sIG5vdCB1OC4NCj4NCj4+ICAgICAgIGJvb2wg cmVjaGVja19kZXNjX293bmJpdDsNCj4+ICAgICAgIHVuc2lnbmVkIGludCBmZWF0dXJlczsNCj4+ ICAgICAgIGludCBpcnE7DQo+PiBAQCAtMTYyMCw2ICsxNjg0LDEzIEBAIHN0YXRpYyBib29sIHJ0 bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0DQo+cnRsODE2OV9wcml2YXRlICp0cCkNCj4+ICAgICAg IH0NCj4+ICB9DQo+Pg0KPj4gK3N0YXRpYyBib29sIHJ0bF9jaGVja19yc3Nfc3VwcG9ydChzdHJ1 Y3QgcnRsODE2OV9wcml2YXRlICp0cCkgew0KPj4gKyAgICAgaWYgKHRwLT5tYWNfdmVyc2lvbiA9 PSBSVExfR0lHQV9NQUNfVkVSXzgwKQ0KPj4gKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4N Cj5UeXBpY2FsbHkgYW4gZW1wdHkgbGluZSBpcyBpbnNlcnRlZCBiZWZvcmUgdGhlIHJldHVybiBz dGF0ZW1lbnQuDQo+DQo+PiArICAgICByZXR1cm4gZmFsc2U7DQo+PiArfQ0KPj4gKw0KPj4gIHN0 YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlf cHJpdmF0ZQ0KPj4gKnRwKSAgew0KPj4gICAgICAgc3dpdGNoICh0cC0+bWFjX3ZlcnNpb24pIHsN Cj4+IEBAIC0xOTE5LDkgKzE5OTAsMjAgQEAgc3RhdGljIGlubGluZSB1MzIgcnRsODE2OV90eF92 bGFuX3RhZyhzdHJ1Y3QNCj5za19idWZmICpza2IpDQo+PiAgICAgICAgICAgICAgIFR4VmxhblRh ZyB8IHN3YWIxNihza2Jfdmxhbl90YWdfZ2V0KHNrYikpIDogMHgwMDsgIH0NCj4+DQo+PiAtc3Rh dGljIHZvaWQgcnRsODE2OV9yeF92bGFuX3RhZyhzdHJ1Y3QgUnhEZXNjICpkZXNjLCBzdHJ1Y3Qg c2tfYnVmZg0KPj4gKnNrYikNCj4+ICtzdGF0aWMgdm9pZCBydGw4MTY5X3J4X3ZsYW5fdGFnKHN0 cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IFJ4RGVzYyAqZGVzYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBza19idWZmICpza2IpDQo+PiAgew0KPj4gLSAgICAgdTMyIG9wdHMyID0gbGUzMl90 b19jcHUoZGVzYy0+b3B0czIpOw0KPj4gKyAgICAgdTMyIG9wdHMyOw0KPj4gKw0KPj4gKyAgICAg c3dpdGNoICh0cC0+aW5pdF9yeF9kZXNjX3R5cGUpIHsNCj4+ICsgICAgIGNhc2UgUlhfREVTQ19S SU5HX1RZUEVfUlNTOg0KPj4gKyAgICAgICAgICAgICBvcHRzMiA9IGxlMzJfdG9fY3B1KGRlc2Mt PnJzc19vcHRzMik7DQo+PiArICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgZGVmYXVsdDoN Cj4+ICsgICAgICAgICAgICAgb3B0czIgPSBsZTMyX3RvX2NwdShkZXNjLT5vcHRzMik7DQo+PiAr ICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgfQ0KPj4NCj4+ICAgICAgIGlmIChvcHRzMiAm IFJ4VmxhblRhZykNCj4+ICAgICAgICAgICAgICAgX192bGFuX2h3YWNjZWxfcHV0X3RhZyhza2Is IGh0b25zKEVUSF9QXzgwMjFRKSwNCj4+IHN3YWIxNihvcHRzMiAmIDB4ZmZmZikpOyBAQCAtMjc1 MCw2ICsyODMyLDE0IEBAIHN0YXRpYyB2b2lkDQo+cnRsX2h3X3Jlc2V0KHN0cnVjdCBydGw4MTY5 X3ByaXZhdGUgKnRwKQ0KPj4gICAgICAgcnRsX2xvb3Bfd2FpdF9sb3codHAsICZydGxfY2hpcGNt ZF9jb25kLCAxMDAsIDEwMCk7ICB9DQo+Pg0KPj4gK3N0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9y c3Moc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgdHAtPnJzc19kYXRhLT5od19zdXBwX2luZGlyX3RibF9lbnRyaWVzOyBpKyspDQo+PiAr ICAgICAgICAgICAgIHRwLT5yc3NfZGF0YS0+cnNzX2luZGlyX3RibFtpXSA9DQo+PiArZXRodG9v bF9yeGZoX2luZGlyX2RlZmF1bHQoaSwgdHAtPm51bV9yeF9yaW5ncyk7DQo+PiArDQo+PiArICAg ICBuZXRkZXZfcnNzX2tleV9maWxsKHRwLT5yc3NfZGF0YS0+cnNzX2tleSwgUlRMX1JTU19LRVlf U0laRSk7IH0NCj4+ICsNCj4+ICBzdGF0aWMgdm9pZCBydGxfc29mdHdhcmVfcGFyYW1ldGVyX2lu aXRpYWxpemUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZQ0KPj4gKnRwKSAgew0KPj4gICAgICAgdHAt Pm51bV9yeF9yaW5ncyA9IDE7DQo+PiBAQCAtMjc1Nyw2ICsyODQ3LDcgQEAgc3RhdGljIHZvaWQN Cj5ydGxfc29mdHdhcmVfcGFyYW1ldGVyX2luaXRpYWxpemUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0 ZSAqdHApDQo+PiAgICAgICBzd2l0Y2ggKHRwLT5tYWNfdmVyc2lvbikgew0KPj4gICAgICAgY2Fz ZSBSVExfR0lHQV9NQUNfVkVSXzgwOg0KPj4gICAgICAgICAgICAgICB0cC0+aHdfc3VwcF9udW1f cnhfcXVldWVzID0gUjgxMjdfTUFYX1JYX1FVRVVFUzsNCj4+ICsgICAgICAgICAgICAgdHAtPnJz c19kYXRhLT5od19zdXBwX2luZGlyX3RibF9lbnRyaWVzID0NCj4+ICsgUlRMX01BWF9JTkRJUkVD VElPTl9UQUJMRV9FTlRSSUVTOw0KPj4gICAgICAgICAgICAgICB0cC0+aHdfc3VwcF9pc3JfdmVy ID0gUlRMX0lTUl9WRVJfODEyNzsNCj4+ICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAgICBk ZWZhdWx0Og0KPj4gQEAgLTI3NjQsNiArMjg1NSw3IEBAIHN0YXRpYyB2b2lkDQo+cnRsX3NvZnR3 YXJlX3BhcmFtZXRlcl9pbml0aWFsaXplKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQ0KPj4g ICAgICAgICAgICAgICB0cC0+aHdfc3VwcF9pc3JfdmVyID0gUlRMX0lTUl9WRVJfREVGQVVMVDsN Cj4+ICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAgICB9DQo+PiArICAgICB0cC0+aW5pdF9y eF9kZXNjX3R5cGUgPSBSWF9ERVNDX1JJTkdfVFlQRV9ERUZBVUxUOw0KPj4gICAgICAgdHAtPmh3 X2N1cnJfaXNyX3ZlciA9IHRwLT5od19zdXBwX2lzcl92ZXI7ICB9DQo+Pg0KPj4gQEAgLTI4ODks NiArMjk4MSw3MiBAQCBzdGF0aWMgdm9pZCBydGxfc2V0X3J4X21heF9zaXplKHN0cnVjdA0KPnJ0 bDgxNjlfcHJpdmF0ZSAqdHApDQo+PiAgICAgICBSVExfVzE2KHRwLCBSeE1heFNpemUsIFI4MTY5 X1JYX0JVRl9TSVpFICsgMSk7ICB9DQo+Pg0KPj4gK3N0YXRpYyB2b2lkIHJ0bDgxNjlfc3RvcmVf cnNzX2tleShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkgew0KPj4gKyAgICAgdTMyICpyc3Nf a2V5ID0gdHAtPnJzc19kYXRhLT5yc3Nfa2V5Ow0KPj4gKyAgICAgY29uc3QgdTE2IHJzc19rZXlf cmVnID0gUlNTX0tFWV9SRUc7DQo+PiArICAgICB1MzIgbnVtX2VudHJpZXMgPSBSVExfUlNTX0tF WV9TSVpFIC8gc2l6ZW9mKHUzMik7DQo+PiArDQo+PiArICAgICAvKiBXcml0ZSByZWRpcmVjdGlv biB0YWJsZSB0byBIVyAqLw0KPj4gKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZW50cmll czsgaSsrKQ0KPj4gKyAgICAgICAgICAgICBSVExfVzMyKHRwLCByc3Nfa2V5X3JlZyArIChpICog NCksIHJzc19rZXlbaV0pOyB9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgcnRsODE2OV9zdG9yZV9y ZXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKSB7DQo+PiArICAgICB1MTYgaW5kaXJfdGJs X3JlZyA9IFJTU19JTkRJUkVDVElPTl9UQkxfUkVHOw0KPj4gKyAgICAgdTMyIGksIHJldGFfZW50 cmllcyA9IHRwLT5yc3NfZGF0YS0+aHdfc3VwcF9pbmRpcl90YmxfZW50cmllczsNCj4+ICsgICAg IHUzMiByZXRhID0gMDsNCj4+ICsgICAgIHU4ICppbmRpcl90YmwgPSB0cC0+cnNzX2RhdGEtPnJz c19pbmRpcl90Ymw7DQo+PiArDQo+PiArICAgICAvKiBXcml0ZSByZWRpcmVjdGlvbiB0YWJsZSB0 byBIVyAqLw0KPj4gKyAgICAgZm9yIChpID0gMDsgaSA8IHJldGFfZW50cmllczsgaSsrKSB7DQo+ PiArICAgICAgICAgICAgIHJldGEgfD0gaW5kaXJfdGJsW2ldIDw8IChpICYgMHgzKSAqIDg7DQo+ PiArICAgICAgICAgICAgIGlmICgoaSAmIDMpID09IDMpIHsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICBSVExfVzMyKHRwLCBpbmRpcl90YmxfcmVnLCByZXRhKTsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICBpbmRpcl90YmxfcmVnICs9IDQ7DQo+PiArICAgICAgICAgICAgICAgICAgICAgcmV0 YSA9IDA7DQo+PiArICAgICAgICAgICAgIH0NCj4+ICsgICAgIH0NCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBydGw4MTY5X3NldF9yc3NfaGFzaF9vcHQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0 ZSAqdHApIHsNCj4+ICsgICAgIHUzMiByc3NfZmxhZ3MgPSB0cC0+cnNzX2RhdGEtPnJzc19mbGFn czsNCj4+ICsgICAgIHUzMiByc3NfY3RybDsNCj4+ICsNCj4+ICsgICAgIHJzc19jdHJsID0gRklF TERfUFJFUChSU1NfQ1BVX05VTV9NQVNLLA0KPj4gKyBpbG9nMih0cC0+bnVtX3J4X3JpbmdzKSk7 DQo+PiArDQo+PiArICAgICAvKiBQZXJmb3JtIGhhc2ggb24gdGhlc2UgcGFja2V0IHR5cGVzICov DQo+PiArICAgICByc3NfY3RybCB8PSBSU1NfQ1RSTF9UQ1BfSVBWNF9TVVBQDQo+PiArICAgICAg ICAgICAgICB8IFJTU19DVFJMX0lQVjRfU1VQUA0KPj4gKyAgICAgICAgICAgICAgfCBSU1NfQ1RS TF9JUFY2X1NVUFANCj4+ICsgICAgICAgICAgICAgIHwgUlNTX0NUUkxfSVBWNl9FWFRfU1VQUA0K Pj4gKyAgICAgICAgICAgICAgfCBSU1NfQ1RSTF9UQ1BfSVBWNl9TVVBQDQo+PiArICAgICAgICAg ICAgICB8IFJTU19DVFJMX1RDUF9JUFY2X0VYVF9TVVBQOw0KPj4gKw0KPj4gKyAgICAgaWYgKHJz c19mbGFncyAmIFJUTF9SU1NfRkxBR19IQVNIX1VEUF9JUFY0KQ0KPj4gKyAgICAgICAgICAgICBy c3NfY3RybCB8PSBSU1NfQ1RSTF9VRFBfSVBWNF9TVVBQOw0KPj4gKw0KPj4gKyAgICAgaWYgKHJz c19mbGFncyAmIFJUTF9SU1NfRkxBR19IQVNIX1VEUF9JUFY2KQ0KPj4gKyAgICAgICAgICAgICBy c3NfY3RybCB8PSBSU1NfQ1RSTF9VRFBfSVBWNl9TVVBQIHwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgUlNTX0NUUkxfVURQX0lQVjZfRVhUX1NVUFA7DQo+PiArDQo+PiArICAgICByc3Nf Y3RybCB8PSBGSUVMRF9QUkVQKFJTU19IQVNIX01BU0ssDQo+PiArDQo+PiArIGlsb2cyKHRwLT5y c3NfZGF0YS0+aHdfc3VwcF9pbmRpcl90YmxfZW50cmllcykpOw0KPj4gKw0KPj4gKyAgICAgUlRM X1czMih0cCwgUlNTX0NUUkxfODEyNSwgcnNzX2N0cmwpOw0KPj4gKw0KPj4gKyAgICAgcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHJ0bF9zZXRfcnNzX2NvbmZpZyhzdHJ1 Y3QgcnRsODE2OV9wcml2YXRlICp0cCkgew0KPj4gKyAgICAgcnRsODE2OV9zZXRfcnNzX2hhc2hf b3B0KHRwKTsNCj4+ICsgICAgIHJ0bDgxNjlfc3RvcmVfcmV0YSh0cCk7DQo+PiArICAgICBydGw4 MTY5X3N0b3JlX3Jzc19rZXkodHApOw0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgdm9pZCBydGxf c2V0X3J4X3R4X2Rlc2NfcmVnaXN0ZXJzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQ0KPj4g ew0KPj4gICAgICAgc3RydWN0IHJ0bDgxNjlfcnhfcmluZyAqcmluZyA9ICZ0cC0+cnhfcmluZ1sw XTsgQEAgLTM5NTUsNg0KPj4gKzQxMTMsMTggQEAgREVDTEFSRV9SVExfQ09ORChydGxfbWFjX29j cF9lMDBlX2NvbmQpDQo+PiAgICAgICByZXR1cm4gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGUw MGUpICYgQklUKDEzKTsgIH0NCj4+DQo+PiArc3RhdGljIHZvaWQgcnRsODEyNV9zZXRfcnhfcV9u dW0oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIHUxNiBxX2N0cmw7DQo+ PiArICAgICB1MTYgcnhfcV9udW07DQo+PiArDQo+PiArICAgICByeF9xX251bSA9ICh1MTYpaWxv ZzIodHAtPm51bV9yeF9yaW5ncyk7DQo+PiArICAgICBxX2N0cmwgPSBSVExfUjE2KHRwLCBRX05V TV9DVFJMXzgxMjUpOw0KPj4gKyAgICAgcV9jdHJsICY9IH5SVExfUlhfUV9OVU1fTUFTSzsNCj4+ ICsgICAgIHFfY3RybCB8PSBGSUVMRF9QUkVQKFJUTF9SWF9RX05VTV9NQVNLLCByeF9xX251bSk7 DQo+PiArICAgICBSVExfVzE2KHRwLCBRX05VTV9DVFJMXzgxMjUsIHFfY3RybCk7IH0NCj4+ICsN Cj4+ICBzdGF0aWMgdm9pZCBydGw4MTY5X2h3X2VuYWJsZV92ZWNfbWFwcGluZyhzdHJ1Y3QgcnRs ODE2OV9wcml2YXRlICp0cCkNCj4+IHsNCj4+ICAgICAgIHU4IHRtcDsNCj4+IEBAIC0zOTk0LDYg KzQxNjQsMTMgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMjVfY29tbW9uKHN0cnVjdA0K PnJ0bDgxNjlfcHJpdmF0ZSAqdHApDQo+PiAgICAgICAgICAgdHAtPm1hY192ZXJzaW9uID09IFJU TF9HSUdBX01BQ19WRVJfODApDQo+PiAgICAgICAgICAgICAgIFJUTF9XOCh0cCwgMHhEOCwgUlRM X1I4KHRwLCAweEQ4KSAmIH4weDAyKTsNCj4+DQo+PiArICAgICAvKiBlbmFibGUgcnggZGVzY3Jp cHRvciB0eXBlIHY0IGFuZCBzZXQgcXVldWUgbnVtIGZvciByc3MqLw0KPj4gKyAgICAgaWYgKHRw LT5yc3NfZW5hYmxlKSB7DQo+PiArICAgICAgICAgICAgIHJ0bDgxMjVfc2V0X3J4X3FfbnVtKHRw KTsNCj4+ICsgICAgICAgICAgICAgUlRMX1c4KHRwLCBSVExfREVTQ19UWVBFX0NUUkwsDQo+PiAr ICAgICAgICAgICAgICAgICAgICBSVExfUjgodHAsIFJUTF9ERVNDX1RZUEVfQ1RSTCkgfCBSVExf REVTQ19UWVBFX1JTUyk7DQo+PiArICAgICB9DQo+PiArDQo+PiAgICAgICBpZiAodHAtPm1hY192 ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApDQo+PiAgICAgICAgICAgICAgIHI4MTY4X21h Y19vY3BfbW9kaWZ5KHRwLCAweGU2MTQsIDB4MGYwMCwgMHgwZjAwKTsNCj4+ICAgICAgIGVsc2Ug aWYgKHRwLT5tYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzcwKSBAQCAtNDIzMCw2DQo+ PiArNDQwNywxMiBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnQoc3RydWN0ICBydGw4MTY5X3By aXZhdGUgKnRwKQ0KPj4gICAgICAgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZSh0cCwgdHJ1ZSk7 DQo+PiAgICAgICBydGxfc2V0X3J4X21heF9zaXplKHRwKTsNCj4+ICAgICAgIHJ0bF9zZXRfcnhf dHhfZGVzY19yZWdpc3RlcnModHApOw0KPj4gKyAgICAgaWYgKHJ0bF9pc184MTI1KHRwKSkgew0K Pj4gKyAgICAgICAgICAgICBpZiAodHAtPnJzc19lbmFibGUpDQo+PiArICAgICAgICAgICAgICAg ICAgICAgcnRsX3NldF9yc3NfY29uZmlnKHRwKTsNCj4+ICsgICAgICAgICAgICAgZWxzZQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgIFJUTF9XMzIodHAsIFJTU19DVFJMXzgxMjUsIDB4MDApOw0K Pj4gKyAgICAgfQ0KPj4gICAgICAgcnRsX2xvY2tfY29uZmlnX3JlZ3ModHApOw0KPj4NCj4+ICAg ICAgIHJ0bF9qdW1ib19jb25maWcodHApOw0KPj4gQEAgLTQyNTcsMTQgKzQ0NDAsMjYgQEAgc3Rh dGljIGludCBydGw4MTY5X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UNCj4qZGV2LCBpbnQg bmV3X210dSkNCj4+ICAgICAgIHJldHVybiAwOw0KPj4gIH0NCj4+DQo+PiAtc3RhdGljIHZvaWQg cnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYykNCj4+ICtzdGF0aWMgdm9p ZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0 DQo+PiArUnhEZXNjICpkZXNjKQ0KPj4gIHsNCj4+IC0gICAgIHUzMiBlb3IgPSBsZTMyX3RvX2Nw dShkZXNjLT5vcHRzMSkgJiBSaW5nRW5kOw0KPj4gKyAgICAgdTMyIGVvcjsNCj4+DQo+PiAtICAg ICBkZXNjLT5vcHRzMiA9IDA7DQo+PiAtICAgICAvKiBGb3JjZSBtZW1vcnkgd3JpdGVzIHRvIGNv bXBsZXRlIGJlZm9yZSByZWxlYXNpbmcgZGVzY3JpcHRvciAqLw0KPj4gLSAgICAgZG1hX3dtYigp Ow0KPj4gLSAgICAgV1JJVEVfT05DRShkZXNjLT5vcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8 IGVvciB8DQo+UjgxNjlfUlhfQlVGX1NJWkUpKTsNCj4+ICsgICAgIHN3aXRjaCAodHAtPmluaXRf cnhfZGVzY190eXBlKSB7DQo+PiArICAgICBjYXNlIFJYX0RFU0NfUklOR19UWVBFX1JTUzoNCj4+ ICsgICAgICAgICAgICAgZW9yID0gbGUzMl90b19jcHUoZGVzYy0+cnNzX29wdHMxKSAmIFJpbmdF bmQ7DQo+PiArICAgICAgICAgICAgIGRlc2MtPnJzc19vcHRzMiA9IDA7DQo+PiArICAgICAgICAg ICAgIC8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBk ZXNjcmlwdG9yICovDQo+PiArICAgICAgICAgICAgIGRtYV93bWIoKTsNCj4+ICsgICAgICAgICAg ICAgV1JJVEVfT05DRShkZXNjLT5yc3Nfb3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3Ig fA0KPlI4MTY5X1JYX0JVRl9TSVpFKSk7DQo+PiArICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAg ICAgZGVmYXVsdDoNCj4+ICsgICAgICAgICAgICAgZW9yID0gbGUzMl90b19jcHUoZGVzYy0+b3B0 czEpICYgUmluZ0VuZDsNCj4+ICsgICAgICAgICAgICAgZGVzYy0+b3B0czIgPSAwOw0KPj4gKyAg ICAgICAgICAgICAvKiBGb3JjZSBtZW1vcnkgd3JpdGVzIHRvIGNvbXBsZXRlIGJlZm9yZSByZWxl YXNpbmcgZGVzY3JpcHRvciAqLw0KPj4gKyAgICAgICAgICAgICBkbWFfd21iKCk7DQo+PiArICAg ICAgICAgICAgIFdSSVRFX09OQ0UoZGVzYy0+b3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBl b3IgfA0KPlI4MTY5X1JYX0JVRl9TSVpFKSk7DQo+PiArICAgICAgICAgICAgIGJyZWFrOw0KPj4g KyAgICAgfQ0KPj4gIH0NCj4+DQo+PiAgc3RhdGljIHN0cnVjdCBwYWdlICpydGw4MTY5X2FsbG9j X3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiBAQCAtNDI4Nyw5ICs0NDgy LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRsODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdA0K PnJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPj4g ICAgICAgfQ0KPj4NCj4+IC0gICAgIGRlc2MtPmFkZHIgPSBjcHVfdG9fbGU2NChtYXBwaW5nKTsN Cj4+ICAgICAgIHJpbmctPnJ4X2Rlc2NfcGh5X2FkZHJbaW5kZXhdID0gbWFwcGluZzsNCj4+IC0g ICAgIHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpOw0KPj4gKyAgICAgaWYgKHRwLT5pbml0X3J4 X2Rlc2NfdHlwZSA9PSBSWF9ERVNDX1JJTkdfVFlQRV9SU1MpDQo+PiArICAgICAgICAgICAgIGRl c2MtPnJzc19hZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7DQo+PiArICAgICBlbHNlDQo+PiAr ICAgICAgICAgICAgIGRlc2MtPmFkZHIgPSBjcHVfdG9fbGU2NChtYXBwaW5nKTsNCj4+ICsgICAg IHJ0bDgxNjlfbWFya190b19hc2ljKHRwLCBkZXNjKTsNCj4+DQo+PiAgICAgICByZXR1cm4gZGF0 YTsNCj4+ICB9DQo+PiBAQCAtNDMxMCw2ICs0NTA4LDE4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlf cnhfY2xlYXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZQ0KPip0cCwgc3RydWN0IHJ0bDgxNjlfcnhf cmluZw0KPj4gICAgICAgfQ0KPj4gIH0NCj4+DQo+PiArc3RhdGljIHZvaWQgcnRsODE2OV9tYXJr X2FzX2xhc3RfZGVzY3JpcHRvcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlDQo+PiArKnRwLCBzdHJ1 Y3QgUnhEZXNjICpkZXNjKSB7DQo+PiArICAgICBzd2l0Y2ggKHRwLT5pbml0X3J4X2Rlc2NfdHlw ZSkgew0KPj4gKyAgICAgY2FzZSBSWF9ERVNDX1JJTkdfVFlQRV9SU1M6DQo+PiArICAgICAgICAg ICAgIGRlc2MtPnJzc19vcHRzMSB8PSBjcHVfdG9fbGUzMihSaW5nRW5kKTsNCj4+ICsgICAgICAg ICAgICAgYnJlYWs7DQo+PiArICAgICBkZWZhdWx0Og0KPj4gKyAgICAgICAgICAgICBkZXNjLT5v cHRzMSB8PSBjcHVfdG9fbGUzMihSaW5nRW5kKTsNCj4+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ PiArICAgICB9DQo+PiArfQ0KPj4gKw0KPj4gIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0 cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBzdHJ1Y3QNCj4+IHJ0bDgxNjlfcnhfcmluZyAqcmlu ZykgIHsNCj4+ICAgICAgIGludCBpOw0KPj4gQEAgLTQzMjYsNyArNDUzNiw3IEBAIHN0YXRpYyBp bnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLA0KPnN0cnVjdCBy dGw4MTY5X3J4X3JpbmcgKnINCj4+ICAgICAgIH0NCj4+DQo+PiAgICAgICAvKiBtYXJrIGFzIGxh c3QgZGVzY3JpcHRvciBpbiB0aGUgcmluZyAqLw0KPj4gLSAgICAgcmluZy0+cnhfZGVzY19hcnJh eVtOVU1fUlhfREVTQyAtIDFdLm9wdHMxIHw9IGNwdV90b19sZTMyKFJpbmdFbmQpOw0KPj4gKyAg ICAgcnRsODE2OV9tYXJrX2FzX2xhc3RfZGVzY3JpcHRvcih0cCwNCj4+ICsgJnJpbmctPnJ4X2Rl c2NfYXJyYXlbTlVNX1JYX0RFU0MgLSAxXSk7DQo+Pg0KPj4gICAgICAgcmV0dXJuIDA7DQo+PiAg fQ0KPj4gQEAgLTQ0NzYsNyArNDY4Niw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfcnhfZGVzY19y ZXNldChzdHJ1Y3QNCj5ydGw4MTY5X3ByaXZhdGUgKnRwKQ0KPj4gICAgICAgICAgICAgICBzdHJ1 Y3QgcnRsODE2OV9yeF9yaW5nICpyaW5nID0gJnRwLT5yeF9yaW5nW2ldOw0KPj4NCj4+ICAgICAg ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBOVU1fUlhfREVTQzsgaisrKQ0KPj4gLSAgICAg ICAgICAgICAgICAgICAgIHJ0bDgxNjlfbWFya190b19hc2ljKHJpbmctPnJ4X2Rlc2NfYXJyYXkg KyBqKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICBydGw4MTY5X21hcmtfdG9fYXNpYyh0cCwg cmluZy0+cnhfZGVzY19hcnJheSArDQo+PiArIGopOw0KPj4gICAgICAgfQ0KPj4gIH0NCj4+DQo+ PiBAQCAtNDkzNywzNSArNTE0NywxMDQgQEAgc3RhdGljIGlubGluZSBpbnQgcnRsODE2OV9mcmFn bWVudGVkX2ZyYW1lKHUzMg0KPnN0YXR1cykNCj4+ICAgICAgIHJldHVybiAoc3RhdHVzICYgKEZp cnN0RnJhZyB8IExhc3RGcmFnKSkgIT0gKEZpcnN0RnJhZyB8DQo+PiBMYXN0RnJhZyk7ICB9DQo+ Pg0KPj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5X3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYg KnNrYiwNCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnRsODE2OV9yeF9oYXNoKHN0cnVjdCBydGw4 MTY5X3ByaXZhdGUgKnRwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IFJ4RGVzYyAqZGVzYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBza19idWZmICpza2IpIHsNCj4+ICsgICAgIHUzMiByc3NfaGVhZGVyX2luZm87DQo+PiAr ICAgICB1MzIgaGFzaF92YWw7DQo+PiArDQo+PiArICAgICBpZiAoISh0cC0+ZGV2LT5mZWF0dXJl cyAmIE5FVElGX0ZfUlhIQVNIKSkNCj4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPj4gKw0KPj4g KyAgICAgcnNzX2hlYWRlcl9pbmZvID0gbGUzMl90b19jcHUoZGVzYy0+cnNzX2R3b3JkLnJzc19p bmZvKTsNCj4+ICsNCj4+ICsgICAgIGlmICghKHJzc19oZWFkZXJfaW5mbyAmIFJYU19SU1NfTDNf VFlQRV9NQVNLKSkNCj4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPj4gKw0KPj4gKyAgICAgaGFz aF92YWwgPSBsZTMyX3RvX2NwdShkZXNjLT5yc3NfZHdvcmQucnNzX3Jlc3VsdCk7DQo+PiArDQo+ PiArICAgICBza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbCwNCj4+ICsgICAgICAgICAgICAgICAg ICAoUlhTX1JTU19MNF9UWVBFX01BU0sgJiByc3NfaGVhZGVyX2luZm8pID8NCj4+ICsgICAgICAg ICAgICAgICAgICBQS1RfSEFTSF9UWVBFX0w0IDogUEtUX0hBU0hfVFlQRV9MMyk7IH0NCj4+ICsN Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnRsODE2OV9yeF9jc3VtKHN0cnVjdCBydGw4MTY5X3By aXZhdGUgKnRwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNr X2J1ZmYgKnNrYiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBS eERlc2MgKmRlc2MpICB7DQo+PiAtICAgICB1MzIgc3RhdHVzID0gbGUzMl90b19jcHUoZGVzYy0+ b3B0czEpICYgKFJ4UHJvdG9NYXNrIHwgUnhDU0ZhaWxNYXNrKTsNCj4+ICsgICAgIGJvb2wgY3N1 bV9vayA9IGZhbHNlOw0KPj4gKyAgICAgdTMyIG9wdHMxOw0KPj4NCj4+IC0gICAgIGlmIChzdGF0 dXMgPT0gUnhQcm90b1RDUCB8fCBzdGF0dXMgPT0gUnhQcm90b1VEUCkNCj4+ICsgICAgIHN3aXRj aCAodHAtPmluaXRfcnhfZGVzY190eXBlKSB7DQo+PiArICAgICBjYXNlIFJYX0RFU0NfUklOR19U WVBFX1JTUzoNCj4+ICsgICAgICAgICAgICAgb3B0czEgPSBsZTMyX3RvX2NwdShkZXNjLT5yc3Nf b3B0czEpOw0KPj4gKyAgICAgICAgICAgICBpZiAoKChvcHRzMSAmIFJYX1RDUFRfREVTQ19SU1Mp ICYmICEob3B0czEgJiBSWF9UQ1BGX0RFU0NfUlNTKSkNCj58fA0KPj4gKyAgICAgICAgICAgICAg ICAgKChvcHRzMSAmIFJYX1VEUFRfREVTQ19SU1MpICYmICEob3B0czEgJg0KPlJYX1VEUEZfREVT Q19SU1MpKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICBjc3VtX29rID0gdHJ1ZTsNCj4+ICsg ICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICBkZWZhdWx0Og0KPj4gKyAgICAgICAgICAgICBv cHRzMSA9IGxlMzJfdG9fY3B1KGRlc2MtPm9wdHMxKSAmIChSeFByb3RvTWFzayB8IFJ4Q1NGYWls TWFzayk7DQo+PiArICAgICAgICAgICAgIGlmIChvcHRzMSA9PSBSeFByb3RvVENQIHx8IG9wdHMx ID09IFJ4UHJvdG9VRFApDQo+PiArICAgICAgICAgICAgICAgICAgICAgY3N1bV9vayA9IHRydWU7 DQo+PiArICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgaWYg KGNzdW1fb2spDQo+PiAgICAgICAgICAgICAgIHNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5O RUNFU1NBUlk7DQo+PiAgICAgICBlbHNlDQo+PiAgICAgICAgICAgICAgIHNrYl9jaGVja3N1bV9u b25lX2Fzc2VydChza2IpOyAgfQ0KPj4NCj4+ICtzdGF0aWMgdTMyIHJ0bDgxNjlfcnhfZGVzY19v cHRzMShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0DQo+PiArUnhEZXNjICpkZXNj KSB7DQo+PiArICAgICBzd2l0Y2ggKHRwLT5pbml0X3J4X2Rlc2NfdHlwZSkgew0KPj4gKyAgICAg Y2FzZSBSWF9ERVNDX1JJTkdfVFlQRV9SU1M6DQo+PiArICAgICAgICAgICAgIHJldHVybiBSRUFE X09OQ0UoZGVzYy0+cnNzX29wdHMxKTsNCj4+ICsgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAg ICAgIHJldHVybiBSRUFEX09OQ0UoZGVzYy0+b3B0czEpOw0KPj4gKyAgICAgfQ0KPj4gK30NCj4+ ICsNCj4+ICBzdGF0aWMgYm9vbCBydGw4MTY5X2NoZWNrX3J4X2Rlc2NfZXJyb3Ioc3RydWN0IG5l dF9kZXZpY2UgKmRldiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUzMiBzdGF0dXMpICB7DQo+PiAtICAgICBpZiAodW5saWtlbHkoc3RhdHVz ICYgUnhSRVMpKSB7DQo+PiAtICAgICAgICAgICAgIGlmIChzdGF0dXMgJiAoUnhSV1QgfCBSeFJV TlQpKQ0KPj4gLSAgICAgICAgICAgICAgICAgICAgIGRldi0+c3RhdHMucnhfbGVuZ3RoX2Vycm9y cysrOw0KPj4gLSAgICAgICAgICAgICBpZiAoc3RhdHVzICYgUnhDUkMpDQo+PiAtICAgICAgICAg ICAgICAgICAgICAgZGV2LT5zdGF0cy5yeF9jcmNfZXJyb3JzKys7DQo+PiAtICAgICAgICAgICAg IHJldHVybiB0cnVlOw0KPj4gKyAgICAgc3dpdGNoICh0cC0+aW5pdF9yeF9kZXNjX3R5cGUpIHsN Cj4+ICsgICAgIGNhc2UgUlhfREVTQ19SSU5HX1RZUEVfUlNTOg0KPj4gKyAgICAgICAgICAgICBp ZiAodW5saWtlbHkoc3RhdHVzICYgUlhfUkVTX1JTUykpIHsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICBpZiAoc3RhdHVzICYgUlhfUlVOVF9SU1MpDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXYtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICBpZiAoc3RhdHVzICYgUlhfQ1JDX1JTUykNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldi0+c3RhdHMucnhfY3JjX2Vycm9ycysrOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOw0KPj4gKyAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAg IGJyZWFrOw0KPj4gKyAgICAgZGVmYXVsdDoNCj4+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5 KHN0YXR1cyAmIFJ4UkVTKSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMg JiAoUnhSV1QgfCBSeFJVTlQpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2 LT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7DQo+PiArICAgICAgICAgICAgICAgICAgICAgaWYg KHN0YXR1cyAmIFJ4Q1JDKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5z dGF0cy5yeF9jcmNfZXJyb3JzKys7DQo+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7DQo+PiArICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAg ICB9DQo+PiAgICAgICByZXR1cm4gZmFsc2U7DQo+PiAgfQ0KPj4NCj4+IC1zdGF0aWMgdm9pZCBy dGw4MTY5X3NldF9kZXNjX2RtYV9hZGRyKHN0cnVjdCBSeERlc2MgKmRlc2MsDQo+PiArc3RhdGlj IHZvaWQgcnRsODE2OV9zZXRfZGVzY19kbWFfYWRkcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0 cCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBSeERlc2Mg KmRlc2MsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFfYWRkcl90 IG1hcHBpbmcpICB7DQo+PiAtICAgICBkZXNjLT5hZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7 DQo+PiArICAgICBzd2l0Y2ggKHRwLT5pbml0X3J4X2Rlc2NfdHlwZSkgew0KPj4gKyAgICAgY2Fz ZSBSWF9ERVNDX1JJTkdfVFlQRV9SU1M6DQo+PiArICAgICAgICAgICAgIGRlc2MtPnJzc19hZGRy ID0gY3B1X3RvX2xlNjQobWFwcGluZyk7DQo+PiArICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAg ICAgZGVmYXVsdDoNCj4+ICsgICAgICAgICAgICAgZGVzYy0+YWRkciA9IGNwdV90b19sZTY0KG1h cHBpbmcpOw0KPj4gKyAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgIH0NCj4+ICB9DQo+Pg0K Pj4gIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4 MTY5X3ByaXZhdGUgKnRwLA0KPj4gQEAgLTQ5ODIsNyArNTI2MSw3IEBAIHN0YXRpYyBpbnQgcnRs X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdA0KPnJ0bDgxNjlfcHJpdmF0ZSAqdHAs DQo+PiAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgYWRkcjsNCj4+ICAgICAgICAgICAgICAgdTMy IHN0YXR1czsNCj4+DQo+PiAtICAgICAgICAgICAgIHN0YXR1cyA9IGxlMzJfdG9fY3B1KFJFQURf T05DRShkZXNjLT5vcHRzMSkpOw0KPj4gKyAgICAgICAgICAgICBzdGF0dXMgPSBsZTMyX3RvX2Nw dShydGw4MTY5X3J4X2Rlc2Nfb3B0czEodHAsIGRlc2MpKTsNCj4+DQo+PiAgICAgICAgICAgICAg IGlmIChzdGF0dXMgJiBEZXNjT3duKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0 cC0+cmVjaGVja19kZXNjX293bmJpdCkgQEAgLTQ5OTYsNyArNTI3NSw3DQo+PiBAQCBzdGF0aWMg aW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRl ICp0cCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4+ICAgICAgICAgICAgICAgICAg ICAgICB0cC0+cmVjaGVja19kZXNjX293bmJpdCA9IGZhbHNlOw0KPj4gICAgICAgICAgICAgICAg ICAgICAgIHJ0bDgxNjlfZGVzY19xdWlyayh0cCk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAg c3RhdHVzID0gbGUzMl90b19jcHUoUkVBRF9PTkNFKGRlc2MtPm9wdHMxKSk7DQo+PiArICAgICAg ICAgICAgICAgICAgICAgc3RhdHVzID0gbGUzMl90b19jcHUocnRsODE2OV9yeF9kZXNjX29wdHMx KHRwLA0KPj4gKyBkZXNjKSk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAm IERlc2NPd24pDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICAg ICAgICAgICAgICAgfQ0KPj4gQEAgLTUwNDUsMTEgKzUzMjQsMTIgQEAgc3RhdGljIGludCBydGxf cngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0DQo+cnRsODE2OV9wcml2YXRlICp0cCwN Cj4+ICAgICAgICAgICAgICAgc2tiLT50YWlsICs9IHBrdF9zaXplOw0KPj4gICAgICAgICAgICAg ICBza2ItPmxlbiA9IHBrdF9zaXplOw0KPj4gICAgICAgICAgICAgICBkbWFfc3luY19zaW5nbGVf Zm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwNCj4+IERNQV9GUk9NX0RFVklDRSk7DQo+PiAt DQo+PiAtICAgICAgICAgICAgIHJ0bDgxNjlfcnhfY3N1bShza2IsIGRlc2MpOw0KPj4gKyAgICAg ICAgICAgICBpZiAodHAtPnJzc19lbmFibGUpDQo+PiArICAgICAgICAgICAgICAgICAgICAgcnRs ODE2OV9yeF9oYXNoKHRwLCBkZXNjLCBza2IpOw0KPj4gKyAgICAgICAgICAgICBydGw4MTY5X3J4 X2NzdW0odHAsIHNrYiwgZGVzYyk7DQo+PiAgICAgICAgICAgICAgIHNrYi0+cHJvdG9jb2wgPSBl dGhfdHlwZV90cmFucyhza2IsIGRldik7DQo+Pg0KPj4gLSAgICAgICAgICAgICBydGw4MTY5X3J4 X3ZsYW5fdGFnKGRlc2MsIHNrYik7DQo+PiArICAgICAgICAgICAgIHJ0bDgxNjlfcnhfdmxhbl90 YWcodHAsIGRlc2MsIHNrYik7DQo+Pg0KPj4gICAgICAgICAgICAgICBpZiAoc2tiLT5wa3RfdHlw ZSA9PSBQQUNLRVRfTVVMVElDQVNUKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgIGRldi0+c3Rh dHMubXVsdGljYXN0Kys7IEBAIC01MDU4LDggKzUzMzgsOCBAQA0KPj4gc3RhdGljIGludCBydGxf cngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsDQo+ Pg0KPj4gICAgICAgICAgICAgICBkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKGRldiwgcGt0X3NpemUp Ow0KPj4gIHJlbGVhc2VfZGVzY3JpcHRvcjoNCj4+IC0gICAgICAgICAgICAgcnRsODE2OV9zZXRf ZGVzY19kbWFfYWRkcihkZXNjLCByaW5nLT5yeF9kZXNjX3BoeV9hZGRyW2VudHJ5XSk7DQo+PiAt ICAgICAgICAgICAgIHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpOw0KPj4gKyAgICAgICAgICAg ICBydGw4MTY5X3NldF9kZXNjX2RtYV9hZGRyKHRwLCBkZXNjLCByaW5nLQ0KPj5yeF9kZXNjX3Bo eV9hZGRyW2VudHJ5XSk7DQo+PiArICAgICAgICAgICAgIHJ0bDgxNjlfbWFya190b19hc2ljKHRw LCBkZXNjKTsNCj4+ICAgICAgIH0NCj4+DQo+PiAgICAgICByZXR1cm4gY291bnQ7DQo+PiBAQCAt NTYwNyw2ICs1ODg3LDQzIEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfaXJxX21hc2soc3RydWN0DQo+ cnRsODE2OV9wcml2YXRlICp0cCkNCj4+ICAgICAgIH0NCj4+ICB9DQo+Pg0KPj4gK3N0YXRpYyBp bnQgZ2V0X21heF9pcnFfbnZlY3Moc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsg ICAgIGlmICh0cC0+bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MCkNCj4+ICsgICAg ICAgICAgICAgcmV0dXJuIFI4MTI3X01BWF9JUlE7DQo+PiArICAgICByZXR1cm4gUjgxNjlfSVJR X0RFRkFVTFQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgZ2V0X21pbl9pcnFfbnZlY3Mo c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApIHsNCj4+ICsgICAgIGlmICh0cC0+bWFjX3ZlcnNp b24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MCkNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIFI4MTI3 X01JTl9JUlE7DQo+PiArICAgICByZXR1cm4gUjgxNjlfSVJRX0RFRkFVTFQ7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyB2b2lkIHJ0bDgxNjlfZG91YmxlX2NoZWNrX3Jzc19zdXBwb3J0KHN0cnVj dCBydGw4MTY5X3ByaXZhdGUNCj4+ICsqdHApDQo+DQo+TmVlZGluZyBzdWNoIGEgZnVuY3Rpb24g aW5kaWNhdGVzIHRoYXQgY2hlY2tzIGluIG90aGVyIHBsYWNlcyBhcmUgbm90IHN1ZmZpY2llbnQu DQoNCkkgaGF2ZSByZW1vdmUgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4gQW5kIHJlcGxhY2UgaXQg d2l0aCBycnRsODE2OV9zZXRfcnhfcmluZ19udW0gYmVjYXVzZSB0aGUgbnVtX3J4X3Jpbmcgc2hv dWxkIHNldCBhY2NvcmRpbmcgdG8gaXJxX252ZWNzLg0KTm93IHRoZSBkcml2ZXIgdXNlIHRwLT5p cnFfbnZlY3MgdG8gY29udHJvbCBuZXcgaW50ZXJydXB0IG1hcHBpbmcsIGFuZCB1c2UgdHAtPm51 bV9yeF9yaW5nIHRvIGNvbnRyb2wgd2hldGhlciB0byBlbmFibGUgcnNzLiBId19jdXJyX2lzcl92 ZXIgYW5kIHRwLT5mZWF0dXJlIGFyZSBvZiBubyB1c2UuDQpBbGwgdGhlIHJldmVyc2UgeG1hcyB0 cmVlIGZvcm1hdCBoYXZlIGJlZW4gY2hlY2tlZCBhbmQgbW9kaWZpZWQgaW4gcGF0Y2ggbmV0LW5l eHQgdjQuDQpUaGFua3MgZm9yIHlvdXIgdGltZS4NCg0KQlJzLA0KSmF2ZW4NCj4NCj4+ICt7DQo+ PiArICAgICBpZiAodHAtPmh3X2N1cnJfaXNyX3ZlciA+IFJUTF9JU1JfVkVSX0RFRkFVTFQpIHsN Cj4+ICsgICAgICAgICAgICAgaWYgKCEodHAtPmZlYXR1cmVzICYgUlRMX1ZFQ19NQVBfRU5BQkxF KSB8fA0KPj4gK3RwLT5pcnFfbnZlY3MgPCBnZXRfbWluX2lycV9udmVjcyh0cCkpDQo+DQo+Q2Fu IHRoaXMgaGFwcGVuPyBJZiB5ZXMsIHRoZW4gd2h5IG5vdCBhZGp1c3RpbmcgaHdfY3Vycl9pc3Jf dmVyIGluIGEgZmlyc3QNCj5wbGFjZT8NCj4NCj4+ICsgICAgICAgICAgICAgICAgICAgICB0cC0+ aHdfY3Vycl9pc3JfdmVyID0gUlRMX0lTUl9WRVJfODEyNzsNCj4NCj5UaGlzIGxvb2tzIHdyb25n Lg0KPg0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgaWYgKHRwLT5yc3Nfc3VwcG9ydCAmJiB0 cC0+aHdfY3Vycl9pc3JfdmVyID4gUlRMX0lTUl9WRVJfREVGQVVMVCkgew0KPj4gKyAgICAgICAg ICAgICB1OCByc3NfcXVldWVfbnVtID0gbmV0aWZfZ2V0X251bV9kZWZhdWx0X3Jzc19xdWV1ZXMo KTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgdHAtPm51bV9yeF9yaW5ncyA9IG1pbihyc3NfcXVl dWVfbnVtLCB0cC0NCj4+aHdfc3VwcF9udW1fcnhfcXVldWVzKTsNCj4+ICsgICAgICAgICAgICAg aWYgKCEodHAtPm51bV9yeF9yaW5ncyA+PSAyICYmIHRwLT5pcnFfbnZlY3MgPj0NCj5nZXRfbWlu X2lycV9udmVjcyh0cCkpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHRwLT5udW1fcnhfcmlu Z3MgPSAxOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgdHAtPnJzc19lbmFibGUgPSAwOw0K Pj4gKw0KPj4gKyAgICAgaWYgKHRwLT5udW1fcnhfcmluZ3MgPj0gMikgew0KPj4gKyAgICAgICAg ICAgICB0cC0+cnNzX2VuYWJsZSA9IDE7DQo+DQo+RnVuY3Rpb24gbmFtZSBqdXN0IG1lbnRpb25z IGEgY2hlY2ssIGJ1dCB5b3Ugc2V0L2NoYW5nZSB2YWx1ZXMgaGVyZS4NCj4NCj4NCj4+ICsgICAg ICAgICAgICAgdHAtPmluaXRfcnhfZGVzY190eXBlID0gUlhfREVTQ19SSU5HX1RZUEVfUlNTOw0K Pj4gKyAgICAgfQ0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgaW50IHJ0bF9hbGxvY19pcnEoc3Ry dWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApICB7DQo+PiAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRl diA9IHRwLT5wY2lfZGV2OyBAQCAtNTYyNyw3ICs1OTQ0LDEwIEBADQo+PiBzdGF0aWMgaW50IHJ0 bF9hbGxvY19pcnEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApDQo+PiAgICAgICAgICAgICAg IGJyZWFrOw0KPj4gICAgICAgfQ0KPj4NCj4+IC0gICAgIG52ZWNzID0gcGNpX2FsbG9jX2lycV92 ZWN0b3JzKHBkZXYsIDEsIDEsIGZsYWdzKTsNCj4+ICsgICAgIG52ZWNzID0gcGNpX2FsbG9jX2ly cV92ZWN0b3JzKHBkZXYsIGdldF9taW5faXJxX252ZWNzKHRwKSwNCj4+ICsgZ2V0X21heF9pcnFf bnZlY3ModHApLCBmbGFncyk7DQo+PiArDQo+PiArICAgICBpZiAobnZlY3MgPCAwKQ0KPj4gKyAg ICAgICAgICAgICBudmVjcyA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAxLCAxLCBmbGFn cyk7DQo+Pg0KPj4gICAgICAgaWYgKG52ZWNzIDwgMCkNCj4+ICAgICAgICAgICAgICAgcmV0dXJu IG52ZWNzOw0KPj4gQEAgLTYwNjksNiArNjM4OSwxMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29u ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4+IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpl bnQpDQo+Pg0KPj4gICAgICAgdHAtPmRhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTsN Cj4+ICAgICAgIHRwLT5kYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTsNCj4+ ICsgICAgIHRwLT5yc3Nfc3VwcG9ydCA9IHJ0bF9jaGVja19yc3Nfc3VwcG9ydCh0cCk7DQo+PiAr DQo+PiArICAgICBpZiAodHAtPnJzc19zdXBwb3J0KSB7DQo+PiArICAgICAgICAgICAgIHRwLT5y c3NfZGF0YSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnRwLT5yc3NfZGF0YSks DQo+R0ZQX0tFUk5FTCk7DQo+PiArICAgICAgICAgICAgIGlmICghdHAtPnJzc19kYXRhKQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gKyAgICAgfQ0KPj4NCj4+ ICAgICAgIHRwLT5jcF9jbWQgPSBSVExfUjE2KHRwLCBDUGx1c0NtZCkgJiBDUENNRF9NQVNLOw0K Pj4NCj4+IEBAIC02MDk1LDYgKzY0MjIsMTEgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0DQo+c3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkNCj4+ ICAgICAgIGlmICghdHAtPnJ0bDgxNjlfbmFwaSkNCj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07DQo+Pg0KPj4gKyAgICAgcnRsODE2OV9kb3VibGVfY2hlY2tfcnNzX3N1cHBvcnQodHAp Ow0KPj4gKw0KPj4gKyAgICAgaWYgKHRwLT5yc3Nfc3VwcG9ydCkNCj4+ICsgICAgICAgICAgICAg cnRsODE2OV9pbml0X3Jzcyh0cCk7DQo+PiArDQo+PiAgICAgICBJTklUX1dPUksoJnRwLT53ay53 b3JrLCBydGxfdGFzayk7DQo+PiAgICAgICBkaXNhYmxlX3dvcmsoJnRwLT53ay53b3JrKTsNCj4+ DQo+PiBAQCAtNjExMiw2ICs2NDQ0LDExIEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVj dCBwY2lfZGV2ICpwZGV2LCBjb25zdA0KPnN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpDQo+PiAg ICAgICBkZXYtPnZsYW5fZmVhdHVyZXMgPSBORVRJRl9GX1NHIHwgTkVUSUZfRl9JUF9DU1VNIHwg TkVUSUZfRl9UU087DQo+PiAgICAgICBkZXYtPnByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9D SEFOR0U7DQo+Pg0KPj4gKyAgICAgaWYgKHRwLT5yc3Nfc3VwcG9ydCkgew0KPj4gKyAgICAgICAg ICAgICBkZXYtPmh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIOw0KPj4gKyAgICAgICAgICAg ICBkZXYtPmZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIOw0KPg0KPlNlZW1zIHRvIG1lIGxpa2Ug eW91IGhhdmUgZGlmZmVyZW50IGZsYWdzLCBhbGwgd2l0aCB0aGUgc2FtZSBtZWFuaW5nOg0KPlJT UyBhY3RpdmUsIE1TSS1YIHZlYyBtYXBwaW5nIHVzZWQsIGh3X2N1cnJfaXNyX3ZlciA+IERFRkFV TFQsIC4uDQo+Q2FuJ3QgdGhpcyBiZSBjb25zb2xpZGF0ZWQ/DQo+DQo+PiArICAgICB9DQo+PiAr DQo+PiAgICAgICAvKg0KPj4gICAgICAgICogUHJldGVuZCB3ZSBhcmUgdXNpbmcgVkxBTnM7IFRo aXMgYnlwYXNzZXMgYSBuYXN0eSBidWcgd2hlcmUNCj4+ICAgICAgICAqIEludGVycnVwdHMgc3Rv cCBmbG93aW5nIG9uIGhpZ2ggbG9hZCBvbiA4MTEwU0NkIGNvbnRyb2xsZXJzLg0KDQo=