From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 20/23] drm/i915: Keep the TypeC port mode fixed when the port is active Date: Wed, 19 Jun 2019 19:08:22 +0300 Message-ID: <20190619160822.GP3733@ideak-desk.fi.intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> <20190604145826.16424-21-imre.deak@intel.com> <20190619125846.GY5942@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0D3B36E439 for ; Wed, 19 Jun 2019 16:08:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190619125846.GY5942@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMTksIDIwMTkgYXQgMDM6NTg6NDZQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgSnVuIDA0LCAyMDE5IGF0IDA1OjU4OjIzUE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IFRoZSBUeXBlQyBwb3J0IG1vZGUgbmVlZHMgdG8gc3RheSBmaXhlZCB3 aGVuZXZlciB0aGUgcG9ydCBpcyBhY3RpdmUuIERvCj4gPiB0aGF0IGJ5IGludHJvZHVjaW5nIGEg dGNfbGlua19yZWZjb3VudCB0byBhY2NvdW50IGZvciBhY3RpdmUgcG9ydHMsCj4gPiBhdm9pZGlu ZyBjaGFuZ2luZyB0aGUgcG9ydCBtb2RlIGlmIGEgcmVmZXJlbmNlIGlzIGhlbGQuCj4gPiAKPiA+ IER1cmluZyB0aGUgbW9kZXNldCBjb21taXQgcGhhc2Ugd2UgYWxzbyBoYXZlIHRvIHJlc2V0IHRo ZSBwb3J0IG1vZGUgYW5kCj4gPiB1cGRhdGUgdGhlIGFjdGl2ZSBQTEwgcmVmbGVjdGluZyB0aGUg bmV3IHBvcnQgbW9kZS4gV2UgY2FuIGRvIHRoaXMgb25seQo+ID4gb25jZSB0aGUgcG9ydCBhbmQg aXRzIG9sZCBQTEwgaGFzIGJlZW4gYWxyZWFkeSBkaXNhYmxlZC4gQWRkIHRoZSBuZXcKPiA+IGNv bm5lY3Rvcl91cGRhdGVfcHJlcGFyZS9jb21wbGV0ZSBob29rcyB0aGF0IGFyZSBjYWxsZWQgYXJv dW5kIHRoZSB3aG9sZQo+ID4gZW5hYmxpbmcgc2VxdWVuY2UuIFRoZSBUeXBlQyBzcGVjaWZpYyBo b29rcyBvZiB0aGVzZSB3aWxsIHJlc2V0IHRoZSBwb3J0Cj4gPiBtb2RlLCB1cGRhdGUgdGhlIGFj dGl2ZSBQTEwgaWYgdGhlIHBvcnQgd2lsbCBiZSBhY3RpdmUgYW5kIGVuc3VyZSB0aGF0Cj4gPiB0 aGUgcG9ydCBtb2RlIHdpbGwgc3RheSBmaXhlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB3aG9s ZSBlbmFibGluZwo+ID4gc2VxdWVuY2UgYnkgaG9sZGluZyBhIHRjX2xpbmtfcmVmY291bnQuCj4g PiAKPiA+IER1cmluZyB0aGUgcG9ydCBlbmFibGluZywgdGhlIHByZV9wbGxfZW5hYmxlL3Bvc3Rf cGxsX2Rpc2FibGUgaG9va3Mgd2lsbAo+ID4gdGFrZS9yZWxlYXNlIGEgdGNfbGlua19yZWZjb3Vu dCB0byBlbnN1cmUgdGhlIHBvcnQgbW9kZSBzdGF5cyBmaXhlZAo+ID4gd2hpbGUgdGhlIHBvcnQg aXMgYWN0aXZlLgo+ID4gCj4gPiBDaGFuZ2luZyB0aGUgcG9ydCBtb2RlIHNob3VsZCBhbHNvIGJl IGF2b2lkZWQgZHVyaW5nIGNvbm5lY3RvciBkZXRlY3Rpb24KPiA+IGFuZCBBVVggdHJhbnNmZXJz IGlmIHRoZSBwb3J0IGlzIGFjdGl2ZSwgd2UnbGwgZG8gdGhhdCBieSBjaGVja2luZyB0aGUKPiA+ IHBvcnQncyB0Y19saW5rX3JlZmNvdW50Lgo+ID4gCj4gPiBXaGVuIHJlc2V0dGluZyB0aGUgcG9y dCBtb2RlIHdlIGFsc28gaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCB0aGUKPiA+IG1heGltdW0g bGFuZXMgcHJvdmlkZWQgYnkgdGhlIEZJQS4gSXQncyBndWFyYW50ZWVkIHRvIGJlIDQgaW4gVEJU LWFsdAo+ID4gYW5kIGxlZ2FjeSBtb2RlcywgYnV0IHRoZXJlIG1heSBiZSBsZXNzIGxhbmVzIGF2 YWlsYWJsZSBpbiBEUC1hbHQgbW9kZSwKPiA+IGluIHdoaWNoIGNhc2Ugd2UgaGF2ZSB0byBmYWxs IGJhY2sgdG8gVEJULWFsdCBtb2RlLgo+ID4gCj4gPiBXaGlsZSBhdCBpdCBhbHNvIHVwZGF0ZSBp Y2xfdGNfcGh5X2Nvbm5lY3QoKSdzIGNvZGUgY29tbWVudCwgcmVmbGVjdGluZwo+ID4gdGhlIGN1 cnJlbnQgd2F5IG9mIHN3aXRjaGluZyB0aGUgcG9ydCBtb2RlLgo+ID4gCj4gPiBDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IENjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0 IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBJ bXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgIHwgNDYgKysrKysrKysrKystLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5oICAgICAgfCAgNyArKwo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysrLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgfCAgNyArKwo+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgNiArKwo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgfCAyOCArKysrKysrLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmggfCAgMyArCj4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggICAgICB8ICA5ICsrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYyAgICAgfCAgNyArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3RjLmMgICAgICAgfCA5MyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5oICAgICAgIHwgIDMgKwo+ID4gIDExIGZpbGVzIGNoYW5n ZWQsIDI2OSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiA+IGluZGV4IGFkMmY3YmIyZjUwYi4uMTM4OTUwOTQxMjQ2IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBAQCAtMzYxMCw2ICszNjEwLDM4IEBA IHN0YXRpYyB2b2lkIGludGVsX2RkaV9zZXRfZmlhX2xhbmVfY291bnQoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiAgCUk5MTVfV1JJVEUoUE9SVF9UWF9ERkxFWERQTUxFMSwgdmFs KTsKPiA+ICB9Cj4gPiAgCj4gPiArdm9pZAo+ID4gK2ludGVsX2RkaV9jb25uZWN0b3JfdXBkYXRl X3ByZXBhcmUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiArCQkJCSAgIHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0KPiA+ICsJCWRybV9hdG9taWNfZ2V0X25ld19j b25uZWN0b3Jfc3RhdGUoJnN0YXRlLT5iYXNlLAo+ID4gKwkJCQkJCSAgICZjb25uZWN0b3ItPmJh c2UpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbm5fc3RhdGUtPmNydGMgPwo+ ID4gKwkJdG9faW50ZWxfY3J0Yyhjb25uX3N0YXRlLT5jcnRjKSA6IE5VTEw7Cj4gPiArCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiA+ICsJCWNydGMgPyBpbnRlbF9hdG9t aWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKSA6IE5VTEw7Cj4gPiArCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKnByaW1hcnlfcG9ydCA9Cj4gPiArCQlpbnRlbF9jb25uZWN0b3Jf cHJpbWFyeV9kaWdpdGFsX3BvcnQoY29ubmVjdG9yKTsKPiA+ICsJaW50IHJlcXVpcmVkX2xhbmVz ID0gY3J0Y19zdGF0ZSA/IGNydGNfc3RhdGUtPmxhbmVfY291bnQgOiAxOwo+ID4gKwo+ID4gKwlX QVJOX09OKGNydGMgJiYgY3J0Yy0+YWN0aXZlKTsKPiA+ICsKPiA+ICsJaW50ZWxfdGNfcG9ydF9n ZXRfbGluayhwcmltYXJ5X3BvcnQsIHJlcXVpcmVkX2xhbmVzKTsKPiA+ICsJaWYgKGNydGNfc3Rh dGUgJiYgY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gPiArCQlpbnRlbF91cGRhdGVfYWN0aXZl X2RwbGwoc3RhdGUsIGNydGMsICZwcmltYXJ5X3BvcnQtPmJhc2UpOwo+ID4gK30KPiAKPiBIYXZp bmcgdGhpcyBhcyBhIGNvbm5lY3RvciBob29rIGZlZWxzIGEgYml0IHN0cmFuZ2UuIEkgZ3Vlc3Mg bW92aW5nIGl0Cj4gdG8gZW5jb2RlciBsZXZlbCB3b3VsZCBmZWVsIG1vcmUgaW4gbGluZSB3aXRo IHRoZSByZXN0IG9mIHRoZSBob29rcywgYW5kCj4gd291bGQgYXZvaWQgaGF2aW5nIHRoYXQgaW50 ZWxfY29ubmVjdG9yX3ByaW1hcnlfZGlnaXRhbF9wb3J0KCkgdGhpbmcKPiBiZWNhdXNlIHRoZW4g dGhlIG1zdCBjb2RlIGNvdWxkIGp1c3QgcGFzcyBpbiB0aGUgcmlnaHQgdGhpbmcgaXRzZWxmLgo+ IEhtbS4gT3IgbWF5YmUgdGhhdCB3b3VsZG4ndCBhY3R1YWxseSB3b3JrIGJlY2F1c2Ugb2YKPiBp bnRlbF9jb25uZWN0b3ItPmVuY29kZXIgYmVpbmcgd29ua3kgb24gTVNUIDooCgpZZXAsIGl0IHRv b2sgYSB3aGlsZSB0byB3cmFwIG15IG1pbmQgYXJvdW5kIHRoZSB0cmFja2luZyBvZiB0aGUgTVNU CmNvbm5lY3Rvci0+ZW5jb2RlciBtYXBwaW5nLiBUaGUgb25seSBjZXJ0YWludHkgaGVyZSBpcyB0 aGF0IHdlIGhhdmUgYQpmaXhlZCBlbmNvZGVyIGZvciBhbGwgbm9uLU1TVCBjb25uZWN0b3JzIGFu ZCB0aGUgcHJpbWFyeSBlbmNvZGVyIGZvciBNU1QKY29ubmVjdG9ycy4gVGhpbmdzIHdvdWxkIHNp bXBsaWZ5IGEgbG90IGV2ZW4gYnkga2VlcGluZyB0aGUgYWJvdmUgaG9va3MKY29ubmVjdG9yIHNw ZWNpZmljLCBidXQgYWRkaW5nIHNlcGFyYXRlIE1TVCB2ZXJzaW9ucyBvZiB0aGVtIHRvIGRlYWwK d2l0aCB0aGUgY29ubmVjdG9yLT5wcmltYXJ5IGVuY29kZXIgbWFwcGluZywgd2hpY2ggd291bGQg cmVtb3ZlIHRoZSBuZWVkCmZvciBpbnRlbF9jb25uZWN0b3JfcHJpbWFyeV9kaWdpdGFsX3BvcnQo KS4KCkkgc2VlIG5vdyB0aG91Z2gsIHRoYXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBhZGQgdGhl c2UgaG9va3MgdG8gdGhlCmVuY29kZXIsIHdoaWNoIGFsc28gc2ltcGxpZmllcyB0aGluZ3MgYSBs b3QsIHNvIEkgY2hvc2UgdGhhdCBpbnN0ZWFkLiAKCj4gCj4gQWx0aG91Z2ggaWYgd2UganVzdCBw dXQgdGhlIGhvb2tzIG9uIHRoZSBtYWluIGVuY29kZXIgYW5kIG5vdCBvbiB0aGUKPiBNU1Qgb25l cyBpdCBjb3VsZCBtYXliZSB3b3JrLiBXb3VsZCBzdGlsbCBuZWVkCj4gaW50ZWxfY29ubmVjdG9y X3ByaW1hcnlfZGlnaXRhbF9wb3J0KCkgdG8gZGlnIG91dCB0aGUgZW5jb2RlciB0aG91Z2guCgpZ ZXAsIHRoaXMgdHVybmVkIG91dCB0byBiZSBzaW1wbGlmeWluZyB0aGluZ3MgYSBsb3QgKGJ5IGFk ZGluZyBhIG5ldwppbnRlbF9jb25uZWN0b3JfcHJpbWFyeV9lbmNvZGVyKCkgaGVscGVyIGluc3Rl YWQpOgpodHRwczovL2dpdGh1Yi5jb20vaWRlYWsvbGludXgvY29tbWl0LzQ5ZGMwMTExMzIKClRo aXMgd2F5IGl0J3MgZW5vdWdoIHRvIGFzc2lnbiB0aGUgaG9va3MgdG8gdGhlIGNvbW1vbiBEREkg ZW5jb2RlciwKaW5zdGVhZCBvZiBhc3NpZ25pbmcgdGhlbSB0byBlYWNoIHR5cGUgb2YgY29ubmVj dG9ycyB1c2VkIHdpdGggYSBEREkKZW5jb2Rlci4KCldpbGwgcG9zdCBhIHYyIHBhdGNoc2V0IHdp dGggYWxsIHRoZSBjb21tZW50cyBhZGRyZXNzZWQgYWZ0ZXIgc29tZQp0ZXN0aW5nLCBhbiB1cGRh dGVkIHZlcnNpb24gaXMgYXQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9pZGVhay9saW51eC9jb21taXRz L3R5cGVjLW1vZGUtc3dpdGNoCgo+IAo+IE5vdCBzdXJlLgo+IAo+ID4gKwo+ID4gK3ZvaWQKPiA+ ICtpbnRlbF9kZGlfY29ubmVjdG9yX3VwZGF0ZV9jb21wbGV0ZShzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKPiA+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKnByaW1hcnlfcG9y dCA9Cj4gPiArCQlpbnRlbF9jb25uZWN0b3JfcHJpbWFyeV9kaWdpdGFsX3BvcnQoY29ubmVjdG9y KTsKPiA+ICsKPiA+ICsJaW50ZWxfdGNfcG9ydF9wdXRfbGluayhwcmltYXJ5X3BvcnQpOwo+ID4g K30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZAo+ID4gIGludGVsX2RkaV9wcmVfcGxsX2VuYWJsZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiBAQCAtMzYxNywxMCArMzY0OSwxMyBAQCBpbnRl bF9kZGlfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAg ewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQg PSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gKwlib29sIGlzX3RjX3BvcnQg PSBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKPiA+ICAJZW51bSBw b3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfY3J0Y19oYXNf ZHBfZW5jb2RlcihjcnRjX3N0YXRlKSB8fAo+ID4gLQkgICAgaW50ZWxfcG9ydF9pc190YyhkZXZf cHJpdiwgZW5jb2Rlci0+cG9ydCkpCj4gPiArCWlmIChpc190Y19wb3J0KQo+ID4gKwkJaW50ZWxf dGNfcG9ydF9nZXRfbGluayhkaWdfcG9ydCwgY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCk7Cj4gPiAr Cj4gPiArCWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpIHx8IGlzX3Rj X3BvcnQpCj4gPiAgCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwKPiA+ICAJCQkJ CWludGVsX2RkaV9tYWluX2xpbmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOwo+ID4gIAo+ID4gQEAg LTM2NDUsMTEgKzM2ODAsMTQgQEAgaW50ZWxfZGRpX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJh c2UpOwo+ID4gKwlib29sIGlzX3RjX3BvcnQgPSBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBl bmNvZGVyLT5wb3J0KTsKPiA+ICAKPiA+IC0JaWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIo Y3J0Y19zdGF0ZSkgfHwKPiA+IC0JICAgIGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIGVuY29k ZXItPnBvcnQpKQo+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRl KSB8fCBpc190Y19wb3J0KQo+ID4gIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2Vk KGRldl9wcml2LAo+ID4gIAkJCQkJCSAgaW50ZWxfZGRpX21haW5fbGlua19hdXhfZG9tYWluKGRp Z19wb3J0KSk7Cj4gPiArCj4gPiArCWlmIChpc190Y19wb3J0KQo+ID4gKwkJaW50ZWxfdGNfcG9y dF9wdXRfbGluayhkaWdfcG9ydCk7Cj4gPiAgfQo+ID4gIAo+ID4gIHZvaWQgaW50ZWxfZGRpX3By ZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuaAo+ID4gaW5kZXggOWNmNjkxNzU5NDJlLi4xNTU5ZDFmYmY3YmQgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuaAo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmgKPiA+IEBAIC0xMiw2ICsxMiw3IEBACj4g PiAgCj4gPiAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGU7Cj4gPiAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGU7Cj4gPiArc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKPiA+ICBzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yOwo+ID4gIHN0cnVjdCBpbnRlbF9jcnRjOwo+ID4gIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlOwo+ID4gQEAgLTM1LDYgKzM2LDEyIEBAIHZvaWQgaW50ZWxfZGRpX3ByZXBhcmVf bGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gIGJvb2wgaW50ZWxf ZGRpX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxf Y29ubmVjdG9yKTsKPiA+ICB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKTsKPiA+ICt2b2lkCj4gPiAraW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfcHJlcGFy ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICsJCQkJICAgc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ICt2b2lkCj4gPiAraW50ZWxfZGRpX2Nvbm5l Y3Rvcl91cGRhdGVfY29tcGxldGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g PiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4gIHZvaWQg aW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCQkgICAgYm9vbCBzdGF0ZSk7Cj4gPiAgdm9pZCBpbnRl bF9kZGlfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBm ODZiNWI4NDhjYmMuLjJjNjU1ODdkMTYyMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4gPiBAQCAtNTIwLDYgKzUyMCwyMCBAQCBuZWVkc19tb2Rlc2V0KGNvbnN0 IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiAgCXJldHVybiBkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldChzdGF0ZSk7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBib29sCj4g PiAraW50ZWxfY29ubmVjdG9yX25lZWRzX21vZGVzZXQoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gPiArCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg Km9sZF9jb25uX3N0YXRlLAo+ID4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpuZXdfY29ubl9zdGF0ZSkKPiA+ICt7Cj4gPiArCWlmIChuZXdfY29ubl9zdGF0ZS0+ Y3J0YyAhPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YyB8fAo+ID4gKwkgICAgKG5ld19jb25uX3N0YXRl LT5jcnRjICYmCj4gPiArCSAgICAgbmVlZHNfbW9kZXNldChkcm1fYXRvbWljX2dldF9uZXdfY3J0 Y19zdGF0ZSgmc3RhdGUtPmJhc2UsCj4gPiArCQkJCQkJCSBuZXdfY29ubl9zdGF0ZS0+Y3J0Yykp KSkKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwo+ID4gKwlyZXR1cm4gZmFsc2U7Cj4gCj4gUG9p bnRsZXNzIGlmIHN0YXRlbWVudC4gT3IgaXMgdGhlcmUgbW9yZSBjb21pbmcgaGVyZT8KCk5vcGUs IGl0IGNhbiBiZSBzaW1wbGlmaWVkLgoKPiAKPiA+ICt9Cj4gPiArCj4gPiAgLyoKPiA+ICAgKiBQ bGF0Zm9ybSBzcGVjaWZpYyBoZWxwZXJzIHRvIGNhbGN1bGF0ZSB0aGUgcG9ydCBQTEwgbG9vcGJh Y2stIChjbG9jay5tKSwKPiA+ICAgKiBhbmQgcG9zdC1kaXZpZGVyIChjbG9jay5wKSB2YWx1ZXMs IHByZS0gKGNsb2NrLnZjbykgYW5kIHBvc3QtZGl2aWRlZCBmYXN0Cj4gPiBAQCAtNjAzMiw2ICs2 MDQ2LDUyIEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2 X3ByaXYsIGZiX2JpdHMpOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9jb25u ZWN0b3JzX3VwZGF0ZV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ID4gK3sKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwo+ ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7Cj4gPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJZm9yX2Vh Y2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZSgmc3RhdGUtPmJhc2UsIGNvbm4sCj4gPiArCQkJ CQkgICBvbGRfY29ubl9zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKPiA+ICsJCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uKTsKPiA+ ICsKPiA+ICsJCWlmICghY29ubmVjdG9yLT51cGRhdGVfcHJlcGFyZSkKPiA+ICsJCQljb250aW51 ZTsKPiA+ICsKPiA+ICsJCWlmICghaW50ZWxfY29ubmVjdG9yX25lZWRzX21vZGVzZXQoc3RhdGUs Cj4gPiArCQkJCQkJICAgb2xkX2Nvbm5fc3RhdGUsCj4gPiArCQkJCQkJICAgbmV3X2Nvbm5fc3Rh dGUpKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJY29ubmVjdG9yLT51cGRhdGVfcHJl cGFyZShzdGF0ZSwgY29ubmVjdG9yKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBpbnRlbF9jb25uZWN0b3JzX3VwZGF0ZV9jb21wbGV0ZShzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpv bGRfY29ubl9zdGF0ZTsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25u X3N0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPiA+ICsJaW50IGk7Cj4g PiArCj4gPiArCWZvcl9lYWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNl LCBjb25uLAo+ID4gKwkJCQkJICAgb2xkX2Nvbm5fc3RhdGUsIG5ld19jb25uX3N0YXRlLCBpKSB7 Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25u ZWN0b3IoY29ubik7Cj4gPiArCj4gPiArCQlpZiAoIWNvbm5lY3Rvci0+dXBkYXRlX2NvbXBsZXRl KQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJaWYgKCFpbnRlbF9jb25uZWN0b3JfbmVl ZHNfbW9kZXNldChzdGF0ZSwKPiA+ICsJCQkJCQkgICBvbGRfY29ubl9zdGF0ZSwKPiA+ICsJCQkJ CQkgICBuZXdfY29ubl9zdGF0ZSkpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQljb25u ZWN0b3ItPnVwZGF0ZV9jb21wbGV0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPiA+ICsJfQo+ID4gK30K PiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ID4gIAkJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRl KQo+ID4gQEAgLTY1NTYsNiArNjYxNiwyOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gIAlJOTE1X1dS SVRFKEJDTFJQQVQoY3J0Yy0+cGlwZSksIDApOwo+ID4gIH0KPiA+ICAKPiA+ICsvKgo+ID4gKyAq IGludGVsX2Nvbm5lY3Rvcl9wcmltYXJ5X2RpZ2l0YWxfcG9ydCAtIGdldCB0aGUgcHJpbWFyeSBw b3J0IGZvciBhIGNvbm5lY3Rvcgo+ID4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciBmb3Igd2hp Y2ggdG8gcmV0dXJuIHRoZSBwb3J0Cj4gPiArICoKPiA+ICsgKiBSZXR1cm5zIHRoZSBwcmltYXJ5 IGRpZ2l0YWwgcG9ydCBmb3IgYSBEUCBNU1QsIHRoZSBzaW5nbGUgZGlnaXRhbCBwb3J0IGZvcgo+ ID4gKyAqIERQIFNTVCBhbmQgSERNSSBhbmQgTlVMTCBmb3IgYWxsIG90aGVyIGNvbm5lY3RvciB0 eXBlcy4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICoKPiA+ICtpbnRl bF9jb25uZWN0b3JfcHJpbWFyeV9kaWdpdGFsX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4g PiArCj4gPiArCWlmIChjb25uZWN0b3ItPm1zdF9wb3J0KQo+ID4gKwkJcmV0dXJuIGRwX3RvX2Rp Z19wb3J0KGNvbm5lY3Rvci0+bXN0X3BvcnQpOwo+ID4gKwo+ID4gKwllbmNvZGVyID0gaW50ZWxf YXR0YWNoZWRfZW5jb2RlcigmY29ubmVjdG9yLT5iYXNlKTsKPiA+ICsJaWYgKFdBUk5fT04oIWVu Y29kZXIpKQo+ID4gKwkJcmV0dXJuIE5VTEw7Cj4gPiArCj4gPiArCXJldHVybiBlbmNfdG9fZGln X3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gK30KPiA+ICsKPiA+ICBib29sIGludGVsX3BvcnRf aXNfY29tYm9waHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQg cG9ydCkKPiA+ICB7Cj4gPiAgCWlmIChwb3J0ID09IFBPUlRfTk9ORSkKPiA+IEBAIC0xMzgwNSwx NCArMTM4ODcsMjAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICAJCX0KPiA+ICAJfQo+ID4gIAo+ID4gKwlp ZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCj4gPiArCQlpbnRlbF9jb25uZWN0b3JzX3VwZGF0ZV9w cmVwYXJlKGludGVsX3N0YXRlKTsKPiA+ICsKPiA+ICAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tz LCBwbGFuZSwgcGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCj4gPiAgCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyhzdGF0ZSk7Cj4gPiAgCj4gPiAtCWlmIChpbnRl bF9zdGF0ZS0+bW9kZXNldCkKPiA+ICsJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7Cj4gPiAr CQlpbnRlbF9jb25uZWN0b3JzX3VwZGF0ZV9jb21wbGV0ZShpbnRlbF9zdGF0ZSk7Cj4gPiArCj4g PiAgCQlpbnRlbF9zZXRfY2RjbGtfcG9zdF9wbGFuZV91cGRhdGUoZGV2X3ByaXYsCj4gPiAgCQkJ CQkJICAmaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCwKPiA+ICAJCQkJCQkgICZkZXZfcHJpdi0+ Y2RjbGsuYWN0dWFsLAo+ID4gIAkJCQkJCSAgaW50ZWxfc3RhdGUtPmNkY2xrLnBpcGUpOwo+ID4g Kwl9Cj4gPiAgCj4gPiAgCS8qIEZJWE1FOiBXZSBzaG91bGQgY2FsbCBkcm1fYXRvbWljX2hlbHBl cl9jb21taXRfaHdfZG9uZSgpIGhlcmUKPiA+ICAJICogYWxyZWFkeSwgYnV0IHN0aWxsIG5lZWQg dGhlIHN0YXRlIGZvciB0aGUgZGVsYXllZCBvcHRpbWl6YXRpb24uIFRvCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPiA+IGluZGV4IGI5ODQ0MTBmNDFhNC4uMmY2MzQ3NmUzY2YyIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTcxOTUsNiArNzE5NSwxMyBAQCBpbnRl bF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCwKPiA+ICAJZWxzZQo+ID4gIAkJaW50ZWxfY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUgPSBp bnRlbF9jb25uZWN0b3JfZ2V0X2h3X3N0YXRlOwo+ID4gIAo+ID4gKwlpZiAoaW50ZWxfcG9ydF9p c190YyhkZXZfcHJpdiwgaW50ZWxfZW5jb2Rlci0+cG9ydCkpIHsKPiA+ICsJCWludGVsX2Nvbm5l Y3Rvci0+dXBkYXRlX3ByZXBhcmUgPQo+ID4gKwkJCWludGVsX2RkaV9jb25uZWN0b3JfdXBkYXRl X3ByZXBhcmU7Cj4gPiArCQlpbnRlbF9jb25uZWN0b3ItPnVwZGF0ZV9jb21wbGV0ZSA9Cj4gPiAr CQkJaW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfY29tcGxldGU7Cj4gPiArCX0KPiA+ICsKPiA+ ICAJLyogaW5pdCBNU1Qgb24gcG9ydHMgdGhhdCBjYW4gc3VwcG9ydCBpdCAqLwo+ID4gIAlpZiAo SEFTX0RQX01TVChkZXZfcHJpdikgJiYgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkgJiYKPiA+ ICAJICAgIChwb3J0ID09IFBPUlRfQiB8fCBwb3J0ID09IFBPUlRfQyB8fAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfbXN0LmMKPiA+IGluZGV4IDBjYWY2NDVmYmJiOC4uOWQ1YjA0OGI5Yzk2 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiBAQCAtNTA1LDYg KzUwNSwxMiBAQCBzdGF0aWMgc3RydWN0IGRybV9jb25uZWN0b3IgKmludGVsX2RwX2FkZF9tc3Rf Y29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sbwo+ID4gIAlpZiAoIWludGVsX2Nvbm5l Y3RvcikKPiA+ICAJCXJldHVybiBOVUxMOwo+ID4gIAo+ID4gKwlpZiAoaW50ZWxfcG9ydF9pc190 YyhkZXZfcHJpdiwgaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydCkpIHsKPiA+ICsJCWludGVsX2Nv bm5lY3Rvci0+dXBkYXRlX3ByZXBhcmUgPQo+ID4gKwkJCWludGVsX2RkaV9jb25uZWN0b3JfdXBk YXRlX3ByZXBhcmU7Cj4gPiArCQlpbnRlbF9jb25uZWN0b3ItPnVwZGF0ZV9jb21wbGV0ZSA9Cj4g PiArCQkJaW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfY29tcGxldGU7Cj4gPiArCX0KPiA+ICAJ aW50ZWxfY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUgPSBpbnRlbF9kcF9tc3RfZ2V0X2h3X3N0YXRl Owo+ID4gIAlpbnRlbF9jb25uZWN0b3ItPm1zdF9wb3J0ID0gaW50ZWxfZHA7Cj4gPiAgCWludGVs X2Nvbm5lY3Rvci0+cG9ydCA9IHBvcnQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxf bWdyLmMKPiA+IGluZGV4IGNlMDhhMmVlZTU1Zi4uY2UzOTdiNjliMWQ2IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gQEAgLTE5MzksNyArMTkzOSw5IEBA IHN0cnVjdCBpbnRlbF9kcGxsX21nciB7Cj4gPiAgCQkJICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2Rlcik7Cj4gPiAgCXZvaWQgKCpwdXRfZHBsbHMpKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAo+ID4gIAkJCSAgc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gLQo+ID4g Kwl2b2lkICgqdXBkYXRlX2FjdGl2ZV9kcGxsKShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKPiA+ICsJCQkJICAgc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiArCQkJCSAgIHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsKPiA+ICAJdm9pZCAoKmR1bXBfaHdfc3RhdGUp KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQkgICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpOwo+ID4gIH07Cj4gPiBAQCAtMzQw MSw2ICszNDAzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBpY2xfcGxs X21nciA9IHsKPiA+ICAJLmRwbGxfaW5mbyA9IGljbF9wbGxzLAo+ID4gIAkuZ2V0X2RwbGxzID0g aWNsX2dldF9kcGxscywKPiA+ICAJLnB1dF9kcGxscyA9IGljbF9wdXRfZHBsbHMsCj4gPiArCS51 cGRhdGVfYWN0aXZlX2RwbGwgPSBpY2xfdXBkYXRlX2FjdGl2ZV9kcGxsLAo+ID4gIAkuZHVtcF9o d19zdGF0ZSA9IGljbF9kdW1wX2h3X3N0YXRlLAo+ID4gIH07Cj4gPiAgCj4gPiBAQCAtMzUyNSw2 ICszNTI4LDI5IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCWRwbGxfbWdyLT5wdXRfZHBsbHMoc3RhdGUsIGNy dGMpOwo+ID4gIH0KPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBpbnRlbF91cGRhdGVfYWN0aXZlX2Rw bGwgLSB1cGRhdGUgdGhlIGFjdGl2ZSBEUExMIGZvciBhIENSVEMvZW5jb2Rlcgo+ID4gKyAqIEBz dGF0ZTogYXRvbWljIHN0YXRlCj4gPiArICogQGNydGM6IHRoZSBDUlRDIGZvciB3aGljaCB0byB1 cGRhdGUgdGhlIGFjdGl2ZSBEUExMCj4gPiArICogQGVuY29kZXI6IGVuY29kZXIgZGV0ZXJtaW5p bmcgdGhlIHR5cGUgb2YgcG9ydCBEUExMCj4gPiArICoKPiA+ICsgKiBVcGRhdGUgdGhlIGFjdGl2 ZSBEUExMIGZvciB0aGUgZ2l2ZW4gQGNydGMvQGVuY29kZXIgaW4gQGNydGMncyBhdG9taWMgc3Rh dGUsCj4gPiArICogZnJvbSB0aGUgcG9ydCBEUExMcyByZXNlcnZlZCBwcmV2aW91c2x5IGJ5IGlu dGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKCkuIFRoZQo+ID4gKyAqIERQTEwgc2VsZWN0ZWQgd2ls bCBiZSBiYXNlZCBvbiB0aGUgY3VycmVudCBtb2RlIG9mIHRoZSBlbmNvZGVyJ3MgcG9ydC4KPiA+ ICsgKi8KPiA+ICt2b2lkIGludGVsX3VwZGF0ZV9hY3RpdmVfZHBsbChzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKPiA+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiA+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ICt7Cj4gPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOwo+ID4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfZHBsbF9tZ3IgKmRwbGxfbWdyID0gZGV2 X3ByaXYtPmRwbGxfbWdyOwo+ID4gKwo+ID4gKwlpZiAoV0FSTl9PTighZHBsbF9tZ3IpKQo+ID4g KwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlkcGxsX21nci0+dXBkYXRlX2FjdGl2ZV9kcGxsKHN0YXRl LCBjcnRjLCBlbmNvZGVyKTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICogaW50ZWxfc2hh cmVkX2RwbGxfZHVtcF9od19zdGF0ZSAtIHdyaXRlIGh3X3N0YXRlIHRvIGRtZXNnCj4gPiAgICog QGRldl9wcml2OiBpOTE1IGRybSBkZXZpY2UKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuaAo+ID4gaW5kZXggM2JlYTgxYmRlMzQzLi41ODE3ZmFhMTI5ZDUgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gPiBAQCAtMzQ2LDYgKzM0Niw5IEBA IHZvaWQgaW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gPiAgCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiA+ICB2b2lkIGlj bF9zZXRfYWN0aXZlX3BvcnRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiA+ICAJCQkgICAgICBlbnVtIGljbF9wb3J0X2RwbGxfaWQgcG9ydF9kcGxsX2lkKTsKPiA+ ICt2b2lkIGludGVsX3VwZGF0ZV9hY3RpdmVfZHBsbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSwKPiA+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ICsJCQkg ICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4gPiAgdm9pZCBpbnRlbF9wcmVw YXJlX3NoYXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KTsKPiA+ICB2b2lkIGludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiAgdm9pZCBpbnRlbF9kaXNhYmxlX3NoYXJlZF9k cGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBjNjE5NTVjNDE5NzYuLmI5NjY1NmYxYjhkNCAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTM3NSw2ICszNzUsMTEg QEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gPiAgCSAqIGFuZCBhY3RpdmUgKGkuZS4gZHBt cyBPTiBzdGF0ZSkuICovCj4gPiAgCWJvb2wgKCpnZXRfaHdfc3RhdGUpKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKik7Cj4gPiAgCj4gPiArCXZvaWQgKCp1cGRhdGVfcHJlcGFyZSkoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiArCXZvaWQgKCp1cGRhdGVfY29tcGxldGUpKHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gKwkJCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpOwo+ID4gKwo+ID4gIAkvKiBQYW5lbCBpbmZvIGZvciBlRFAgYW5kIExWRFMg Ki8KPiA+ICAJc3RydWN0IGludGVsX3BhbmVsIHBhbmVsOwo+ID4gIAo+ID4gQEAgLTEyMzQsNiAr MTIzOSw4IEBAIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+ID4gIAllbnVtIGF1eF9jaCBh dXhfY2g7Cj4gPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZGRpX2lvX3Bvd2Vy X2RvbWFpbjsKPiA+ICAJc3RydWN0IG11dGV4IHRjX2xvY2s7Cj4gPiArCWludGVsX3dha2VyZWZf dCB0Y19sb2NrX3dha2VyZWY7Cj4gPiArCWludCB0Y19saW5rX3JlZmNvdW50Owo+ID4gIAlib29s IHRjX2xlZ2FjeV9wb3J0OjE7Cj4gPiAgCWVudW0gdGNfcG9ydF9tb2RlIHRjX21vZGU7Cj4gPiAg Cj4gPiBAQCAtMTQ4NSw2ICsxNDkyLDggQEAgdm9pZCBpbnRlbF9wcHNfdW5sb2NrX3JlZ3Nfd2Eo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICB2b2lkIGludGVsX2VuY29k ZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ID4gIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICoKPiA+ICBpbnRlbF9lbmNvZGVyX2N1cnJlbnRfbW9kZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4gPiArc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqCj4g PiAraW50ZWxfY29ubmVjdG9yX3ByaW1hcnlfZGlnaXRhbF9wb3J0KHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgYm9vbCBpbnRlbF9wb3J0X2lzX2NvbWJvcGh5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpOwo+ID4gIGJvb2wg aW50ZWxfcG9ydF9pc190YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0g cG9ydCBwb3J0KTsKPiA+ICBlbnVtIHRjX3BvcnQgaW50ZWxfcG9ydF90b190YyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4g PiBpbmRleCAwOTdiZmE1MDRlY2UuLjg5ZjA5ZTI3Yjc0MSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCj4gPiBAQCAtMzA5Miw2ICszMDkyLDEzIEBAIHZvaWQgaW50ZWxfaGRt aV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPiA+ICAJZWxzZQo+ID4gIAkJaW50ZWxfY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUgPSBpbnRl bF9jb25uZWN0b3JfZ2V0X2h3X3N0YXRlOwo+ID4gIAo+ID4gKwlpZiAoaW50ZWxfcG9ydF9pc190 YyhkZXZfcHJpdiwgaW50ZWxfZW5jb2Rlci0+cG9ydCkpIHsKPiA+ICsJCWludGVsX2Nvbm5lY3Rv ci0+dXBkYXRlX3ByZXBhcmUgPQo+ID4gKwkJCWludGVsX2RkaV9jb25uZWN0b3JfdXBkYXRlX3By ZXBhcmU7Cj4gPiArCQlpbnRlbF9jb25uZWN0b3ItPnVwZGF0ZV9jb21wbGV0ZSA9Cj4gPiArCQkJ aW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfY29tcGxldGU7Cj4gPiArCX0KPiA+ICsKPiA+ICAJ aW50ZWxfaGRtaV9hZGRfcHJvcGVydGllcyhpbnRlbF9oZG1pLCBjb25uZWN0b3IpOwo+ID4gIAo+ ID4gIAlpbnRlbF9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoaW50ZWxfY29ubmVjdG9yLCBpbnRl bF9lbmNvZGVyKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuYwo+ID4gaW5kZXggNGIyZjUyNWJj MmE2Li5lNzlmNmNlYjI2ZjMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF90Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jCj4gPiBA QCAtMTg4LDIxICsxODgsMTMgQEAgc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9pc19pbl9zYWZlX21v ZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgICogZGlzcGxheSwg VVNCLCBldGMuIEFzIGEgcmVzdWx0LCBoYW5kc2hha2luZyB0aHJvdWdoIEZJQSBpcyByZXF1aXJl ZCBhcm91bmQKPiA+ICAgKiBjb25uZWN0IGFuZCBkaXNjb25uZWN0IHRvIGNsZWFubHkgdHJhbnNm ZXIgb3duZXJzaGlwIHdpdGggdGhlIGNvbnRyb2xsZXIgYW5kCj4gPiAgICogc2V0IHRoZSB0eXBl LUMgcG93ZXIgc3RhdGUuCj4gPiAtICoKPiA+IC0gKiBXZSBjb3VsZCBvcHQgdG8gb25seSBkbyB0 aGUgY29ubmVjdCBmbG93IHdoZW4gd2UgYWN0dWFsbHkgdHJ5IHRvIHVzZSB0aGUgQVVYCj4gPiAt ICogY2hhbm5lbHMgb3IgZG8gYSBtb2Rlc2V0LCB0aGVuIGltbWVkaWF0ZWx5IHJ1biB0aGUgZGlz Y29ubmVjdCBmbG93IGFmdGVyCj4gPiAtICogdXNhZ2UsIGJ1dCB0aGVyZSBhcmUgc29tZSBpbXBs aWNhdGlvbnMgb24gdGhpcyBmb3IgYSBkeW5hbWljIGVudmlyb25tZW50Ogo+ID4gLSAqIHRoaW5n cyBtYXkgZ28gYXdheSBvciBjaGFuZ2UgYmVoaW5kIG91ciBiYWNrcy4gU28gZm9yIG5vdyBvdXIg ZHJpdmVyIGlzCj4gPiAtICogYWx3YXlzIHRyeWluZyB0byBhY3F1aXJlIG93bmVyc2hpcCBvZiB0 aGUgY29udHJvbGxlciBhcyBzb29uIGFzIGl0IGdldHMgYW4KPiA+IC0gKiBpbnRlcnJ1cHQgKG9y IHBvbGxzIHN0YXRlIGFuZCBzZWVzIGEgcG9ydCBpcyBjb25uZWN0ZWQpIGFuZCBvbmx5IGdpdmVz IGl0Cj4gPiAtICogYmFjayB3aGVuIGl0IHNlZXMgYSBkaXNjb25uZWN0LiBJbXBsZW1lbnRhdGlv biBvZiBhIG1vcmUgZmluZS1ncmFpbmVkIG1vZGVsCj4gPiAtICogd2lsbCByZXF1aXJlIGEgbG90 IG9mIGNvb3JkaW5hdGlvbiB3aXRoIHVzZXIgc3BhY2UgYW5kIHRob3JvdWdoIHRlc3RpbmcgZm9y Cj4gPiAtICogdGhlIGV4dHJhIHBvc3NpYmxlIGNhc2VzLgo+ID4gICAqLwo+ID4gLXN0YXRpYyB2 b2lkIGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCkKPiA+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQsCj4gPiArCQkJICAgICAgIGludCByZXF1aXJlZF9sYW5lcykKPiA+ ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGln X3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVs X3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ID4gKwlpbnQgbWF4 X2xhbmVzOwo+ID4gIAo+ID4gIAlpZiAoIWljbF90Y19waHlfc3RhdHVzX2NvbXBsZXRlKGRpZ19w b3J0KSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZIG5vdCByZWFkeVxuIiwK PiA+IEBAIC0yMTQsOCArMjA2LDkgQEAgc3RhdGljIHZvaWQgaWNsX3RjX3BoeV9jb25uZWN0KHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIAkgICAgIVdBUk5fT04oZGln X3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSkKPiA+ICAJCWdvdG8gb3V0X3NldF90YnRfYWx0X21vZGU7 Cj4gPiAgCj4gPiArCW1heF9sYW5lcyA9IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50 KGRpZ19wb3J0KTsKPiA+ICAJaWYgKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCkgewo+ID4gLQkJ V0FSTl9PTihpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChkaWdfcG9ydCkgIT0gNCk7 Cj4gPiArCQlXQVJOX09OKG1heF9sYW5lcyAhPSA0KTsKPiA+ICAJCWRpZ19wb3J0LT50Y19tb2Rl ID0gVENfUE9SVF9MRUdBQ1k7Cj4gPiAgCj4gPiAgCQlyZXR1cm47Cj4gPiBAQCAtMjMxLDYgKzIy NCwxMyBAQCBzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgCQlnb3RvIG91dF9zZXRfc2FmZV9tb2RlOwo+ID4gIAl9 Cj4gPiAgCj4gPiArCWlmIChtYXhfbGFuZXMgPCByZXF1aXJlZF9sYW5lcykgewo+ID4gKwkJRFJN X0RFQlVHX0tNUygiUG9ydCAlczogUEhZIG1heCBsYW5lcyAlZCA8IHJlcXVpcmVkIGxhbmVzICVk XG4iLAo+ID4gKwkJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksCj4gPiAr CQkJICAgICAgbWF4X2xhbmVzLCByZXF1aXJlZF9sYW5lcyk7Cj4gPiArCQlnb3RvIG91dF9zZXRf c2FmZV9tb2RlOwo+ID4gKwl9Cj4gPiArCj4gPiAgCWRpZ19wb3J0LT50Y19tb2RlID0gVENfUE9S VF9EUF9BTFQ7Cj4gPiAgCj4gPiAgCXJldHVybjsKPiA+IEBAIC0zMTcsNyArMzE3LDggQEAgaW50 ZWxfdGNfcG9ydF9nZXRfdGFyZ2V0X21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln X3BvcnQpCj4gPiAgCQkJCQkgIFRDX1BPUlRfVEJUX0FMVDsKPiA+ICB9Cj4gPiAgCj4gPiAtc3Rh dGljIHZvaWQgaW50ZWxfdGNfcG9ydF9yZXNldF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmRpZ19wb3J0KQo+ID4gK3N0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKPiA+ICsJCQkJICAgICBpbnQgcmVx dWlyZWRfbGFuZXMpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICAJZW51bSB0Y19wb3J0 IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0 KTsKPiA+IEBAIC0zMjYsNyArMzI3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdGNfcG9ydF9yZXNl dF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIAlpbnRlbF9k aXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoZGV2X3ByaXYpOwo+ID4gIAo+ID4gIAlpY2xfdGNfcGh5 X2Rpc2Nvbm5lY3QoZGlnX3BvcnQpOwo+ID4gLQlpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3BvcnQp Owo+ID4gKwlpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3BvcnQsIHJlcXVpcmVkX2xhbmVzKTsKPiA+ ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogVEMgcG9ydCBtb2RlIHJlc2V0ICglcyAt PiAlcylcbiIsCj4gPiAgCQkgICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRjX3BvcnQpLAo+ ID4gQEAgLTMzNCw2ICszMzUsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfdGNfcG9ydF9yZXNldF9t b2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIAkJICAgICAgdGNf cG9ydF9tb2RlX25hbWUoZGlnX3BvcnQtPnRjX21vZGUpKTsKPiA+ICB9Cj4gPiAgCj4gPiArc3Rh dGljIHZvaWQKPiA+ICtpbnRlbF90Y19wb3J0X2xpbmtfaW5pdF9yZWZjb3VudChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKPiA+ICsJCQkJIGludCByZWZjb3VudCkKPiA+ICt7 Cj4gPiArCVdBUk5fT04oZGlnX3BvcnQtPnRjX2xpbmtfcmVmY291bnQpOwo+ID4gKwlkaWdfcG9y dC0+dGNfbGlua19yZWZjb3VudCA9IHJlZmNvdW50Owo+ID4gK30KPiA+ICsKPiA+ICB2b2lkIGlu dGVsX3RjX3BvcnRfc2FuaXRpemUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQp Cj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+IEBAIC0zNTQsMTEgKzM2MywxMyBAQCB2b2lk IGludGVsX3RjX3BvcnRfc2FuaXRpemUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3Bv cnQpCj4gPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiUG9ydCAlczogUEhZIGRpc2Nvbm5lY3RlZCB3 aXRoICVkIGFjdGl2ZSBsaW5rKHMpXG4iLAo+ID4gIAkJCQkJIHRjX3BvcnRfbmFtZShkZXZfcHJp diwgdGNfcG9ydCksCj4gPiAgCQkJCQkgYWN0aXZlX2xpbmtzKTsKPiA+ICsJCWludGVsX3RjX3Bv cnRfbGlua19pbml0X3JlZmNvdW50KGRpZ19wb3J0LCBhY3RpdmVfbGlua3MpOwo+ID4gKwo+ID4g IAkJZ290byBvdXQ7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKGRpZ19wb3J0LT50Y19sZWdhY3lf cG9ydCkKPiA+IC0JCWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCk7Cj4gPiArCQlpY2xfdGNf cGh5X2Nvbm5lY3QoZGlnX3BvcnQsIDEpOwo+ID4gIAo+ID4gIG91dDoKPiA+ICAJRFJNX0RFQlVH X0RSSVZFUigiUG9ydCAlczogc2FuaXRpemUgbW9kZSAoJXMpXG4iLAo+ID4gQEAgLTM4OCwyNyAr Mzk5LDYwIEBAIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlib29sIGlzX2Nvbm5lY3RlZDsKPiA+ICAK PiA+IC0JbXV0ZXhfbG9jaygmZGlnX3BvcnQtPnRjX2xvY2spOwo+ID4gLQo+ID4gLQlpZiAoaW50 ZWxfdGNfcG9ydF9uZWVkc19yZXNldChkaWdfcG9ydCkpCj4gPiAtCQlpbnRlbF90Y19wb3J0X3Jl c2V0X21vZGUoZGlnX3BvcnQpOwo+ID4gLQo+ID4gKwlpbnRlbF90Y19wb3J0X2xvY2soZGlnX3Bv cnQpOwo+ID4gIAlpc19jb25uZWN0ZWQgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3Bv cnQpICYKPiA+ICAJCSAgICAgICBCSVQoZGlnX3BvcnQtPnRjX21vZGUpOwo+ID4gLQo+ID4gLQlt dXRleF91bmxvY2soJmRpZ19wb3J0LT50Y19sb2NrKTsKPiA+ICsJaW50ZWxfdGNfcG9ydF91bmxv Y2soZGlnX3BvcnQpOwo+ID4gIAo+ID4gIAlyZXR1cm4gaXNfY29ubmVjdGVkOwo+ID4gIH0KPiA+ ICAKPiA+IC12b2lkIGludGVsX3RjX3BvcnRfbG9jayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCkKPiA+ICtzdGF0aWMgdm9pZCBfX2ludGVsX3RjX3BvcnRfbG9jayhzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKPiA+ICsJCQkJIGludCByZXF1aXJlZF9sYW5l cykKPiA+ICB7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiA+ICsKPiA+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fRElTUExBWV9DT1JFKTsKPiA+ICsKPiA+ICAJbXV0ZXhfbG9jaygmZGln X3BvcnQtPnRjX2xvY2spOwo+ID4gLQkvKiBUT0RPOiByZXNldCB0aGUgVHlwZUMgcG9ydCBtb2Rl IGlmIG5lZWRlZCAqLwo+ID4gKwo+ID4gKwlpZiAoIWRpZ19wb3J0LT50Y19saW5rX3JlZmNvdW50 ICYmCj4gPiArCSAgICBpbnRlbF90Y19wb3J0X25lZWRzX3Jlc2V0KGRpZ19wb3J0KSkKPiA+ICsJ CWludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShkaWdfcG9ydCwgcmVxdWlyZWRfbGFuZXMpOwo+ID4g Kwo+ID4gKwlXQVJOX09OKGRpZ19wb3J0LT50Y19sb2NrX3dha2VyZWYpOwo+ID4gKwlkaWdfcG9y dC0+dGNfbG9ja193YWtlcmVmID0gd2FrZXJlZjsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBpbnRl bF90Y19wb3J0X2xvY2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAr ewo+ID4gKwlfX2ludGVsX3RjX3BvcnRfbG9jayhkaWdfcG9ydCwgMSk7Cj4gPiAgfQo+ID4gIAo+ ID4gIHZvaWQgaW50ZWxfdGNfcG9ydF91bmxvY2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWYgPSBmZXRjaF9hbmRfemVybygmZGlnX3BvcnQtPnRjX2xvY2tfd2FrZXJlZik7Cj4g PiArCj4gPiArCW11dGV4X3VubG9jaygmZGlnX3BvcnQtPnRjX2xvY2spOwo+ID4gKwo+ID4gKwlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyhkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0RJU1BM QVlfQ09SRSwKPiA+ICsJCQkJICAgICAgd2FrZXJlZik7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQg aW50ZWxfdGNfcG9ydF9nZXRfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCwKPiA+ICsJCQkgICAgaW50IHJlcXVpcmVkX2xhbmVzKQo+ID4gK3sKPiA+ICsJX19pbnRlbF90 Y19wb3J0X2xvY2soZGlnX3BvcnQsIHJlcXVpcmVkX2xhbmVzKTsKPiA+ICsJZGlnX3BvcnQtPnRj X2xpbmtfcmVmY291bnQrKzsKPiA+ICsJaW50ZWxfdGNfcG9ydF91bmxvY2soZGlnX3BvcnQpOwo+ ID4gK30KPiA+ICsKPiA+ICt2b2lkIGludGVsX3RjX3BvcnRfcHV0X2xpbmsoc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiArewo+ID4gKwltdXRleF9sb2NrKCZkaWdfcG9y dC0+dGNfbG9jayk7Cj4gPiArCWRpZ19wb3J0LT50Y19saW5rX3JlZmNvdW50LS07Cj4gPiAgCW11 dGV4X3VubG9jaygmZGlnX3BvcnQtPnRjX2xvY2spOwo+ID4gIH0KPiA+ICAKPiA+IEBAIC00MTcs NCArNDYxLDUgQEAgaW50ZWxfdGNfcG9ydF9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0LCBib29sIGlzX2xlZ2FjeSkKPiA+ICB7Cj4gPiAgCW11dGV4X2luaXQoJmRpZ19w b3J0LT50Y19sb2NrKTsKPiA+ICAJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gaXNfbGVnYWN5 Owo+ID4gKwlkaWdfcG9ydC0+dGNfbGlua19yZWZjb3VudCA9IDA7Cj4gPiAgfQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF90Yy5oCj4gPiBpbmRleCA5MWM2ZTc0NTljYzkuLmMxODcwYWNmNjUxNiAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiA+IEBAIC0xNCw2ICsxNCw5IEBAIGludCBp bnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCk7Cj4gPiAgdm9pZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKPiA+ICB2b2lkIGludGVsX3RjX3BvcnRfbG9jayhz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiAgdm9pZCBpbnRlbF90Y19w b3J0X3VubG9jayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiArdm9p ZCBpbnRlbF90Y19wb3J0X2dldF9saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0LAo+ID4gKwkJCSAgICBpbnQgcmVxdWlyZWRfbGFuZXMpOwo+ID4gK3ZvaWQgaW50ZWxfdGNf cG9ydF9wdXRfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiAg Cj4gPiAgdm9pZCBpbnRlbF90Y19wb3J0X2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQsIGJvb2wgaXNfbGVnYWN5KTsKPiA+ICAKPiA+IC0tIAo+ID4gMi4xNy4xCj4gCj4g LS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4