From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5 05/10] drm/i915: Stop frobbing with DDI encoder->type Date: Fri, 27 Oct 2017 17:03:47 +0300 Message-ID: <20171027140347.GJ10981@intel.com> References: <20171019133721.11794-1-ville.syrjala@linux.intel.com> <20171019133721.11794-6-ville.syrjala@linux.intel.com> <822d296c-3fd2-70d4-e7dd-a99c16598925@linux.intel.com> <20171027124425.GF10981@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 826516E936 for ; Fri, 27 Oct 2017 14:03:51 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMjcsIDIwMTcgYXQgMDM6NTM6MzRQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMjctMTAtMTcgb20gMTQ6NDQgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBGcmksIE9jdCAyNywgMjAxNyBhdCAwMjowNTozOFBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBPcCAxOS0xMC0xNyBvbSAxNTozNyBzY2hyZWVmIFZpbGxlIFN5 cmphbGE6Cj4gPj4+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPj4+Cj4gPj4+IEN1cnJlbnRseSB0aGUgRERJIGVuY29kZXItPnR5cGUgd2ls bCBjaGFuZ2UgYXQgcnVudGltZSBkZXBlbmRpbmcgb24KPiA+Pj4gd2hhdCBraW5kIG9mIGhvdHBs dWdzIHdlJ3ZlIHByb2Nlc3NlZC4gVGhhdCdzIHF1aXRlIGJhZCBzaW5jZSB3ZSBjYW4ndAo+ID4+ PiByZWFsbHkgdHJ1c3QgdGhhdCB0aGF0IGN1cnJlbnQgdmFsdWUgb2YgZW5jb2Rlci0+dHlwZSBh Y3R1YWxseSBtYXRjaGVzCj4gPj4+IHRoZSB0eXBlIG9mIHNpZ25hbCB3ZSdyZSB0cnlpbmcgdG8g ZHJpdmUgdGhyb3VnaCBpdC4KPiA+Pj4KPiA+Pj4gTGV0J3MgZWxpbWluYXRlIHRoYXQgcHJvYmxl bSBieSBkZWNsYXJpbmcgdGhhdCBub24tZURQIERESSBwb3J0IHdpbGwKPiA+Pj4gYWx3YXlzIGhh dmUgdGhlIGVuY29kZXIgdHlwZSBhcyBJTlRFTF9PVVRQVVRfRERJLiBUaGlzIG1lYW5zIHRoZSBj b2RlCj4gPj4+IGNhbiBubyBsb25nZXIgdHJ5IHRvIGRpc3Rpbmd1aXNoIERQIHZzLiBIRE1JIGJh c2VkIG9uIGVuY29kZXItPnR5cGUuCj4gPj4+IFdlJ2xsIGxlYXZlIGVEUCBhcyBJTlRFTF9PVVRQ VVRfRURQLCBzaW5jZSBpdCdsbCBuZXZlciBjaGFuZ2UgYW5kCj4gPj4+IHRoZXJlJ3MgYSBidW5j aCBvZiBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoYXQgdmFsdWUgdG8gaWRlbnRpZnkgZURQCj4gPj4+ IGVuY29kZXJzLgo+ID4+Pgo+ID4+PiBXZSdsbCBpbnRyb2R1Y2UgYSBuZXcgZW5jb2RlciAuY29t cHV0ZV9vdXRwdXRfdHlwZSgpIGhvb2suIFRoaXMgYWxsb3dzCj4gPj4+IHVzIHRvIGNvbXB1dGUg dGhlIGZ1bGwgb3V0cHV0X3R5cGVzIGJlZm9yZSBhbnkgZW5jb2RlciAuY29tcHV0ZV9jb25maWco KQo+ID4+PiBob29rcyBnZXQgY2FsbGVkLCB0aHVzIHRob3NlIGhvb2tzIGNhbiByZWx5IG9uIG91 dHB1dF90eXBlcyBiZWluZwo+ID4+PiBjb3JyZWN0LCB3aGljaCBpcyB1c2VmdWwgZm9yIGNsb25p bmcgb24gb2xkciBwbGF0Zm9ybXMuIEZvciBub3cgd2UnbGwKPiA+Pj4ganVzdCBsb29rIGF0IHRo ZSBjb25uZWN0b3IgdHlwZSBhbmQgcGljayB0aGUgY29ycmVjdCBtb2RlIGJhc2VkIG9uIHRoYXQu Cj4gPj4+IEluIHRoZSBmdXR1cmUgdGhlIG5ldyBob29rIGNvdWxkIGJlIHVzZWQgdG8gaW1wbGVt ZW50IGR5bmFtaWMgc3dpdGNoaW5nCj4gPj4+IGJldHdlZW4gTFMgYW5kIFBDT04gbW9kZXMgZm9y IExTUENPTi4KPiA+Pj4KPiA+Pj4gVE9ETzogbWF5YmUgbWFrZSAuZ2V0X2NvbmZpZygpIHBvcHVs YXRlIG91dHB1dF90eXBlcyByYXRoZXIgdGhhbiBkb2luZwo+ID4+PiB0aGUgZGVmYXVsdCBlbmNv ZGVyLT50eXBlIHRoaW5nIGluIGNhbGxlciBhbmQgdGhlbiB1bmRvaW5nIGl0IGZvcgo+ID4+PiBE REkgaW4gLmdldF9jb25maWcoKS4KPiA+Pj4KPiA+Pj4gdjI6IEZpeCBCWFQvR0xLIFBQUyBleHBs b3Npb24gd2l0aCBEU0kvTVNUIGVuY29kZXJzCj4gPj4+IHYzOiBBdm9pZCB0aGUgUFBTIHdhcm4g b24gcHVyZSBIRE1JL0RWSSBEREkgZW5jb2RlcnMgYnkgY2hlY2tpbmcgZHAub3V0cHV0X3JlZwo+ ID4+PiB2NDogUmViYXNlCj4gPj4+IHY1OiBQb3B1bGF0ZSBvdXRwdXRfdHlwZXMgaW4gLmdldF9j b25maWcoKSByYXRoZXIgdGhhbiBpbiB0aGUgY2FsbGVyCj4gPj4gQ291bGQgd2UgZ2V0IHJpZCBv ZiBjb21wdXRlX291dHB1dF90eXBlIGluIHRoaXMgcGF0Y2g/IFBlcmhhcHMgZG8gaXQgYXMgcHJl bGltaW5hcnkKPiA+PiBwYXRjaCB0b3dhcmRzIHJlbW92aW5nIHRoZSB1c2U/Cj4gPiBXZSBkb24n dCB3YW50IHRvIHJlbW92ZSBpdC4KPiBPaywgYnV0IGNvdWxkIHRoYXQgc3RpbGwgYmUgYSBzZXBh cmF0ZSBwcmVwYXJhdGlvbiBwYXRjaD8gVGhhdCB3b3VsZCBtYWtlIGl0IGVhc2llciB0byByZXZp ZXcuIDopCgpOb3Qgc3VyZSB3aGljaCBwYXJ0IHlvdSBtZWFuIGhlcmUuIE1vdmluZyB0aGUgJ291 dHB1dF90eXBlcyB8PSB3aGF0ZXZlcicKaW50byAuZ2V0X2NvbmZpZygpPyBIbW0uIFllYWggdGhh dCBzaG91bGQgYmUgZWFzeSB0byBzcGxpdCBvdXQuIEkgZ3Vlc3MKaXQgd29uJ3QgZXZlbiBtYWtl IHRoZSBEREkgY2FzZSBhbnkgbW9yZSBicm9rZW4gdGhhdCBpdCBhbHJlYWR5IGlzIHNpbmNlCmV2 ZW4gY3VycmVudGx5IGVuY29kZXItPnR5cGUgbWlnaHQgY2hhbmdlIGJldHdlZW4gdGhlIG1vZGVz ZXQgY29tcHV0ZQpwaGFzZSBhbmQgLmdldF9jb25maWcoKS4gQW5kIGl0J3MgZ29pbmcgdG8gYmUg Zm9sbG93ZWQgY2xvc2VseSBieSB0aGUKYWN0dWFsIGZpeCBhbnl3YXkuCgo+ID4+IFJlc3Qgb2Yg dGhlIHNlcmllcyBleGNlcHQgcGF0Y2ggOCBsb29rcyBnb29kLiBGb3IgcGF0Y2ggMS00LCA2LCA3 LCA5IChpZiB0aGUgZGVsdGEKPiA+PiBiZXR3ZWVuIGRkaV9nZXRfY29uZmlnIGFuZCBvbGQgbXN0 IGdldF9jb25maWcgaXMgaGFybWxlc3Mgb3IgYmVuZWZpY2lhbCkgYW5kIDEwOgo+ID4+Cj4gPj4g UmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4gPj4KPiA+PiBUaGFua3MgZm9yIHRoZSB3b3JrIHRvd2FyZHMgY2xlYW5pbmcg dGhpcyBtZXNzIHVwLgo+ID4+Cj4gPj4gfk1hYXJ0ZW4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4gLS0tCj4g Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgIHwgIDIgKy0KPiA+Pj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jICAgICAgfCAgMiArKwo+ID4+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICB8IDQzICsrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgIHwgMTYgKysrKysrKy0tLS0tLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgICAgICB8IDI0ICsrKysrKysrKy0tLS0tLS0tLS0KPiA+Pj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgMiArKwo+ID4+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggICAgICB8ICA3ICsrKystLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpLmMgICAgICB8ICAyICsrCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kdm8uYyAgICAgIHwgIDIgKysKPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkbWkuYyAgICAgfCAxMiArKysrLS0tLS0tCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9sdmRzLmMgICAgIHwgIDIgKysKPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX29wcmVnaW9uLmMgfCAgMiArLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c2R2by5jICAgICB8ICAyICsrCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5j ICAgICAgIHwgIDIgKysKPiA+Pj4gIDE0IGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyks IDQwIGRlbGV0aW9ucygtKQo+ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ID4+PiBpbmRleCBjNjVlMzgxYjg1ZjMuLmU1MzMzYmZkZjMyZCAxMDA2NDQKPiA+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+Pj4gQEAgLTMwNDksNyArMzA0OSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiA+ Pj4gIAkJYnJlYWs7Cj4gPj4+ICAJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUE6Cj4gPj4+ ICAJCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9IRE1JIHx8Cj4gPj4+ IC0JCSAgICBpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9VTktOT1dOKQo+ID4+ PiArCQkgICAgaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRERJKQo+ID4+PiAg CQkJaW50ZWxfaGRtaV9pbmZvKG0sIGludGVsX2Nvbm5lY3Rvcik7Cj4gPj4+ICAJCWJyZWFrOwo+ ID4+PiAgCWRlZmF1bHQ6Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gPj4+IGluZGV4 IDY2OGU4YzNlNzkxZC4uYTYxZTYxZWZlOWFhIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jcnQuYwo+ID4+PiBAQCAtMTE5LDYgKzExOSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg aW50ZWxfY3J0X2dldF9mbGFncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+Pj4g IHN0YXRpYyB2b2lkIGludGVsX2NydF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ID4+PiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gPj4+ICB7Cj4gPj4+ICsJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxf T1VUUFVUX0FOQUxPRyk7Cj4gPj4+ICsKPiA+Pj4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzIHw9IGludGVsX2NydF9nZXRfZmxhZ3MoZW5jb2Rlcik7Cj4gPj4+ICAKPiA+ Pj4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2Nv bmZpZy0+cG9ydF9jbG9jazsKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+Pj4gaW5k ZXggYzg3OTBiYjc0ODM5Li42MzA2MDk1NzVkYjQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gPj4+IEBAIC00OTcsMTAgKzQ5Nyw4IEBAIGVudW0gcG9ydCBpbnRlbF9k ZGlfZ2V0X2VuY29kZXJfcG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+Pj4g IAlzd2l0Y2ggKGVuY29kZXItPnR5cGUpIHsKPiA+Pj4gIAljYXNlIElOVEVMX09VVFBVVF9EUF9N U1Q6Cj4gPj4+ICAJCXJldHVybiBlbmNfdG9fbXN0KCZlbmNvZGVyLT5iYXNlKS0+cHJpbWFyeS0+ cG9ydDsKPiA+Pj4gLQljYXNlIElOVEVMX09VVFBVVF9EUDoKPiA+Pj4gIAljYXNlIElOVEVMX09V VFBVVF9FRFA6Cj4gPj4+IC0JY2FzZSBJTlRFTF9PVVRQVVRfSERNSToKPiA+Pj4gLQljYXNlIElO VEVMX09VVFBVVF9VTktOT1dOOgo+ID4+PiArCWNhc2UgSU5URUxfT1VUUFVUX0RESToKPiA+Pj4g IAkJcmV0dXJuIGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSktPnBvcnQ7Cj4gPj4+ICAJ Y2FzZSBJTlRFTF9PVVRQVVRfQU5BTE9HOgo+ID4+PiAgCQlyZXR1cm4gUE9SVF9FOwo+ID4+PiBA QCAtMTUzMiw2ICsxNTMwLDcgQEAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Mo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g Pj4+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3Ry YW5zY29kZXI7Cj4gPj4+ICAJdWludDMyX3QgdGVtcDsKPiA+Pj4gKwo+ID4+PiAgCXRlbXAgPSBJ OTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7Cj4gPj4+ICAJaWYg KHN0YXRlID09IHRydWUpCj4gPj4+ICAJCXRlbXAgfD0gVFJBTlNfRERJX0RQX1ZDX1BBWUxPQURf QUxMT0M7Cj4gPj4+IEBAIC0yNTg2LDEyICsyNTg1LDIzIEBAIHZvaWQgaW50ZWxfZGRpX2dldF9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPj4+ICAJCQlwaXBlX2NvbmZp Zy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gPSB0cnVlOwo+ID4+PiAgCQkvKiBmYWxsIHRo cm91Z2ggKi8KPiA+Pj4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EVkk6Cj4gPj4+ICsJ CXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9IRE1JKTsKPiA+ Pj4gIAkJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSA0Owo+ID4+PiAgCQlicmVhazsKPiA+Pj4g IAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9GREk6Cj4gPj4+ICsJCXBpcGVfY29uZmlnLT5v dXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9BTkFMT0cpOwo+ID4+PiAgCQlicmVhazsK PiA+Pj4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9TU1Q6Cj4gPj4+ICsJCWlmIChl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCj4gPj4+ICsJCQlwaXBlX2NvbmZpZy0+ b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRURQKTsKPiA+Pj4gKwkJZWxzZQo+ID4+ PiArCQkJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0RQKTsK PiA+Pj4gKwkJcGlwZV9jb25maWctPmxhbmVfY291bnQgPQo+ID4+PiArCQkJKCh0ZW1wICYgRERJ X1BPUlRfV0lEVEhfTUFTSykgPj4gRERJX1BPUlRfV0lEVEhfU0hJRlQpICsgMTsKPiA+Pj4gKwkJ aW50ZWxfZHBfZ2V0X21fbihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7Cj4gPj4+ICsJCWJyZWFr Owo+ID4+PiAgCWNhc2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX01TVDoKPiA+Pj4gKwkJcGlw ZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0RQX01TVCk7Cj4gPj4+ ICAJCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0KPiA+Pj4gIAkJCSgodGVtcCAmIERESV9QT1JU X1dJRFRIX01BU0spID4+IERESV9QT1JUX1dJRFRIX1NISUZUKSArIDE7Cj4gPj4+ICAJCWludGVs X2RwX2dldF9tX24oaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ID4+PiBAQCAtMjYzMCwyMSAr MjY0MCwzNiBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4+PiAgCQkJYnh0X2RkaV9waHlfZ2V0X2xhbmVfbGF0X29wdGltX21hc2so ZW5jb2Rlcik7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gK3N0YXRpYyBlbnVtIGludGVsX291dHB1 dF90eXBlCj4gPj4+ICtpbnRlbF9kZGlfY29tcHV0ZV9vdXRwdXRfdHlwZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4gKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ID4+PiArCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJc3dpdGNoIChjb25uX3N0YXRlLT5jb25uZWN0 b3ItPmNvbm5lY3Rvcl90eXBlKSB7Cj4gPj4+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfSERN SUE6Cj4gPj4+ICsJCXJldHVybiBJTlRFTF9PVVRQVVRfSERNSTsKPiA+Pj4gKwljYXNlIERSTV9N T0RFX0NPTk5FQ1RPUl9lRFA6Cj4gPj4+ICsJCXJldHVybiBJTlRFTF9PVVRQVVRfRURQOwo+ID4+ PiArCWNhc2UgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0Ogo+ID4+PiArCQlyZXR1cm4g SU5URUxfT1VUUFVUX0RQOwo+ID4+PiArCWRlZmF1bHQ6Cj4gPj4+ICsJCU1JU1NJTkdfQ0FTRShj b25uX3N0YXRlLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKTsKPiA+Pj4gKwkJcmV0dXJuIElO VEVMX09VVFBVVF9VTlVTRUQ7Cj4gPj4+ICsJfQo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICBzdGF0 aWMgYm9vbCBpbnRlbF9kZGlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPj4+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCj4gPj4+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKPiA+Pj4gIHsKPiA+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+Pj4gLQlpbnQgdHlwZSA9IGVuY29kZXItPnR5 cGU7Cj4gPj4+ICAJaW50IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVy KTsKPiA+Pj4gIAlpbnQgcmV0Owo+ID4+PiAgCj4gPj4+IC0JV0FSTih0eXBlID09IElOVEVMX09V VFBVVF9VTktOT1dOLCAiY29tcHV0ZV9jb25maWcoKSBvbiB1bmtub3duIG91dHB1dCFcbiIpOwo+ ID4+PiAtCj4gPj4+ICAJaWYgKHBvcnQgPT0gUE9SVF9BKQo+ID4+PiAgCQlwaXBlX2NvbmZpZy0+ Y3B1X3RyYW5zY29kZXIgPSBUUkFOU0NPREVSX0VEUDsKPiA+Pj4gIAo+ID4+PiAtCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9IRE1JKQo+ID4+PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKHBp cGVfY29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gPj4+ICAJCXJldCA9IGludGVsX2hkbWlf Y29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOwo+ID4+PiAg CWVsc2UKPiA+Pj4gIAkJcmV0ID0gaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlw ZV9jb25maWcsIGNvbm5fc3RhdGUpOwo+ID4+PiBAQCAtMjc2NCw2ICsyNzg5LDcgQEAgdm9pZCBp bnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9y dCBwb3J0KQo+ID4+PiAgCWRybV9lbmNvZGVyX2luaXQoJmRldl9wcml2LT5kcm0sIGVuY29kZXIs ICZpbnRlbF9kZGlfZnVuY3MsCj4gPj4+ICAJCQkgRFJNX01PREVfRU5DT0RFUl9UTURTLCAiRERJ ICVjIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+Pj4gIAo+ID4+PiArCWludGVsX2VuY29kZXItPmNv bXB1dGVfb3V0cHV0X3R5cGUgPSBpbnRlbF9kZGlfY29tcHV0ZV9vdXRwdXRfdHlwZTsKPiA+Pj4g IAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RkaV9jb21wdXRlX2NvbmZp ZzsKPiA+Pj4gIAlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBpbnRlbF9lbmFibGVfZGRpOwo+ID4+ PiAgCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+Pj4gQEAgLTI4MjEsOSArMjg0NywxMCBA QCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwb3J0IHBvcnQpCj4gPj4+ICAJCX0KPiA+Pj4gIAl9Cj4gPj4+ICAKPiA+Pj4gKwlpbnRl bF9kaWdfcG9ydC0+ZHAub3V0cHV0X3JlZyA9IElOVkFMSURfTU1JT19SRUc7Cj4gPj4+ICAJaW50 ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA9IG1heF9sYW5lczsKPiA+Pj4gIAo+ID4+PiAtCWludGVs X2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfVU5LTk9XTjsKPiA+Pj4gKwlpbnRlbF9lbmNv ZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RESTsKPiA+Pj4gIAlpbnRlbF9lbmNvZGVyLT5wb3dl cl9kb21haW4gPSBpbnRlbF9wb3J0X3RvX3Bvd2VyX2RvbWFpbihwb3J0KTsKPiA+Pj4gIAlpbnRl bF9lbmNvZGVyLT5wb3J0ID0gcG9ydDsKPiA+Pj4gIAlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sg PSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiA+Pj4gaW5kZXggYmQ2MmMwYTY1YmNkLi5hN2UwMmFlMzM1ODMgMTAw NjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+Pj4gQEAgLTEw NTkxLDcgKzEwNTkxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBvdXRwdXRfdHlwZV9z dHJbXSA9IHsKPiA+Pj4gIAlPVVRQVVRfVFlQRShEUCksCj4gPj4+ICAJT1VUUFVUX1RZUEUoRURQ KSwKPiA+Pj4gIAlPVVRQVVRfVFlQRShEU0kpLAo+ID4+PiAtCU9VVFBVVF9UWVBFKFVOS05PV04p LAo+ID4+PiArCU9VVFBVVF9UWVBFKERESSksCj4gPj4+ICAJT1VUUFVUX1RZUEUoRFBfTVNUKSwK PiA+Pj4gIH07Cj4gPj4+ICAKPiA+Pj4gQEAgLTEwNzYyLDcgKzEwNzYyLDcgQEAgc3RhdGljIGJv b2wgY2hlY2tfZGlnaXRhbF9wb3J0X2NvbmZsaWN0cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gPj4+ICAKPiA+Pj4gIAkJc3dpdGNoIChlbmNvZGVyLT50eXBlKSB7Cj4gPj4+ICAJ CQl1bnNpZ25lZCBpbnQgcG9ydF9tYXNrOwo+ID4+PiAtCQljYXNlIElOVEVMX09VVFBVVF9VTktO T1dOOgo+ID4+PiArCQljYXNlIElOVEVMX09VVFBVVF9EREk6Cj4gPj4+ICAJCQlpZiAoV0FSTl9P TighSEFTX0RESSh0b19pOTE1KGRldikpKSkKPiA+Pj4gIAkJCQlicmVhazsKPiA+Pj4gIAkJY2Fz ZSBJTlRFTF9PVVRQVVRfRFA6Cj4gPj4+IEBAIC0xMDg5NSw3ICsxMDg5NSwxMiBAQCBpbnRlbF9t b2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4gIAkJICogRGV0 ZXJtaW5lIG91dHB1dF90eXBlcyBiZWZvcmUgY2FsbGluZyB0aGUgLmNvbXB1dGVfY29uZmlnKCkK PiA+Pj4gIAkJICogaG9va3Mgc28gdGhhdCB0aGUgaG9va3MgY2FuIHVzZSB0aGlzIGluZm9ybWF0 aW9uIHNhZmVseS4KPiA+Pj4gIAkJICovCj4gPj4+IC0JCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlw ZXMgfD0gMSA8PCBlbmNvZGVyLT50eXBlOwo+ID4+PiArCQlpZiAoZW5jb2Rlci0+Y29tcHV0ZV9v dXRwdXRfdHlwZSkKPiA+Pj4gKwkJCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0KPiA+Pj4g KwkJCQlCSVQoZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZShlbmNvZGVyLCBwaXBlX2NvbmZp ZywKPiA+Pj4gKwkJCQkJCQkJIGNvbm5lY3Rvcl9zdGF0ZSkpOwo+ID4+PiArCQllbHNlCj4gPj4+ ICsJCQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChlbmNvZGVyLT50eXBlKTsKPiA+ Pj4gIAl9Cj4gPj4+ICAKPiA+Pj4gIGVuY29kZXJfcmV0cnk6Cj4gPj4+IEBAIC0xMTU3MiwxMCAr MTE1NzcsOCBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+ ICAJCQkJIkVuY29kZXIgY29ubmVjdGVkIHRvIHdyb25nIHBpcGUgJWNcbiIsCj4gPj4+ICAJCQkJ cGlwZV9uYW1lKHBpcGUpKTsKPiA+Pj4gIAo+ID4+PiAtCQlpZiAoYWN0aXZlKSB7Cj4gPj4+IC0J CQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IDEgPDwgZW5jb2Rlci0+dHlwZTsKPiA+Pj4g KwkJaWYgKGFjdGl2ZSkKPiA+Pj4gIAkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgcGlw ZV9jb25maWcpOwo+ID4+PiAtCQl9Cj4gPj4+ICAJfQo+ID4+PiAgCj4gPj4+ICAJaW50ZWxfY3J0 Y19jb21wdXRlX3BpeGVsX3JhdGUocGlwZV9jb25maWcpOwo+ID4+PiBAQCAtMTQ5NjMsNyArMTQ5 NjYsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+Pj4gIAkJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ID4+PiAgCj4gPj4+ICAJCQllbmNvZGVyLT5iYXNlLmNy dGMgPSAmY3J0Yy0+YmFzZTsKPiA+Pj4gLQkJCWNydGNfc3RhdGUtPm91dHB1dF90eXBlcyB8PSAx IDw8IGVuY29kZXItPnR5cGU7Cj4gPj4+ICAJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIs IGNydGNfc3RhdGUpOwo+ID4+PiAgCQl9IGVsc2Ugewo+ID4+PiAgCQkJZW5jb2Rlci0+YmFzZS5j cnRjID0gTlVMTDsKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPj4+IGluZGV4IGFhNzVm NTVlZWI2MS4uMmI0ODJkMTIwMDBlIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+Pj4gQEAgLTc1OCwxMSArNzU4LDE2IEBAIHZvaWQgaW50ZWxfcG93ZXJfc2VxdWVuY2Vy X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Pj4gIAkJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcDsKPiA+Pj4gIAo+ID4+PiAgCQlpZiAoZW5jb2Rlci0+dHlwZSAh PSBJTlRFTF9PVVRQVVRfRFAgJiYKPiA+Pj4gLQkJICAgIGVuY29kZXItPnR5cGUgIT0gSU5URUxf T1VUUFVUX0VEUCkKPiA+Pj4gKwkJICAgIGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VE UCAmJgo+ID4+PiArCQkgICAgZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRERJKQo+ID4+ PiAgCQkJY29udGludWU7Cj4gPj4+ICAKPiA+Pj4gIAkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxf ZHAoJmVuY29kZXItPmJhc2UpOwo+ID4+PiAgCj4gPj4+ICsJCS8qIFNraXAgcHVyZSBEVkkvSERN SSBEREkgZW5jb2RlcnMgKi8KPiA+Pj4gKwkJaWYgKCFpOTE1X21taW9fcmVnX3ZhbGlkKGludGVs X2RwLT5vdXRwdXRfcmVnKSkKPiA+Pj4gKwkJCWNvbnRpbnVlOwo+ID4+PiArCj4gPj4+ICAJCVdB Uk5fT04oaW50ZWxfZHAtPmFjdGl2ZV9waXBlICE9IElOVkFMSURfUElQRSk7Cj4gPj4+ICAKPiA+ Pj4gIAkJaWYgKGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+Pj4gQEAgLTI2 MDMsNiArMjYwOCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4+PiAgCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ID4+PiAgCj4gPj4+ICsJaWYgKGVu Y29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+Pj4gKwkJcGlwZV9jb25maWctPm91 dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0VEUCk7Cj4gPj4+ICsJZWxzZQo+ID4+PiAr CQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRFApOwo+ID4+ PiArCj4gPj4+ICAJdG1wID0gSTkxNV9SRUFEKGludGVsX2RwLT5vdXRwdXRfcmVnKTsKPiA+Pj4g IAo+ID4+PiAgCXBpcGVfY29uZmlnLT5oYXNfYXVkaW8gPSB0bXAgJiBEUF9BVURJT19PVVRQVVRf RU5BQkxFICYmIHBvcnQgIT0gUE9SVF9BOwo+ID4+PiBAQCAtNDY5OSw4ICs0NzA5LDYgQEAgaW50 ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3Ip Cj4gPj4+ICB7Cj4gPj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRl bF9jb25uZWN0b3ItPmJhc2U7Cj4gPj4+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGlu dGVsX2F0dGFjaGVkX2RwKGNvbm5lY3Rvcik7Cj4gPj4+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPj4+IC0J c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJh c2U7Cj4gPj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4+ PiAgCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzOwo+ID4+PiAgCXU4IHNpbmtfaXJx X3ZlY3RvciA9IDA7Cj4gPj4+IEBAIC00NzMzLDkgKzQ3NDEsNiBAQCBpbnRlbF9kcF9sb25nX3B1 bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+Pj4gIAkJZ290 byBvdXQ7Cj4gPj4+ICAJfQo+ID4+PiAgCj4gPj4+IC0JaWYgKGludGVsX2VuY29kZXItPnR5cGUg IT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+Pj4gLQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVM X09VVFBVVF9EUDsKPiA+Pj4gLQo+ID4+PiAgCWlmIChpbnRlbF9kcC0+cmVzZXRfbGlua19wYXJh bXMpIHsKPiA+Pj4gIAkJLyogSW5pdGlhbCBtYXggbGluayBsYW5lIGNvdW50ICovCj4gPj4+ICAJ CWludGVsX2RwLT5tYXhfbGlua19sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2NvbW1vbl9sYW5l X2NvdW50KGludGVsX2RwKTsKPiA+Pj4gQEAgLTQ4NTIsOSArNDg1Nyw2IEBAIGludGVsX2RwX2Zv cmNlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPj4+ICAJaW50ZWxfZHBfc2V0 X2VkaWQoaW50ZWxfZHApOwo+ID4+PiAgCj4gPj4+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIGludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKPiA+Pj4gLQo+ID4+PiAtCWlm IChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4gPj4+IC0JCWludGVs X2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRFA7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4g IHN0YXRpYyBpbnQgaW50ZWxfZHBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gPj4+IEBAIC01MDczLDEwICs1MDc1LDYgQEAgaW50ZWxfZHBfaHBkX3B1bHNlKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBib29sIGxvbmdfaHBkKQo+ ID4+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiA+Pj4gIAllbnVtIGlycXJldHVybiByZXQgPSBJUlFfTk9ORTsKPiA+Pj4gIAo+ID4+PiAtCWlm IChpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9FRFAgJiYKPiA+Pj4g LQkgICAgaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkKPiA+ Pj4gLQkJaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSA9IElOVEVMX09VVFBVVF9EUDsKPiA+Pj4g LQo+ID4+PiAgCWlmIChsb25nX2hwZCAmJiBpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlID09IElO VEVMX09VVFBVVF9FRFApIHsKPiA+Pj4gIAkJLyoKPiA+Pj4gIAkJICogdmRkIG9mZiBjYW4gZ2Vu ZXJhdGUgYSBsb25nIHB1bHNlIG9uIGVEUCB3aGljaAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9tc3QuYwo+ID4+PiBpbmRleCA3NzI1MjE0NDBhOWYuLjliZTZmMzJiYjEwMCAxMDA2NDQK PiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiA+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiA+Pj4gQEAgLTI3MCw2ICsy NzAsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9tc3RfZW5jX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPj4+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ID4+PiAgCXUzMiB0ZW1wLCBmbGFn cyA9IDA7Cj4gPj4+ICAKPiA+Pj4gKwlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJ TlRFTF9PVVRQVVRfRFBfTVNUKTsKPiA+Pj4gKwo+ID4+PiAgCXBpcGVfY29uZmlnLT5oYXNfYXVk aW8gPQo+ID4+PiAgCQlpbnRlbF9kZGlfaXNfYXVkaW9fZW5hYmxlZChkZXZfcHJpdiwgY3J0Yyk7 Cj4gPj4+ICAKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+Pj4gaW5kZXggYTA1YWIz YTFhYjI3Li42NTAxMjk5ODBjZTIgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gPj4+IEBAIC0xNzMsNyArMTczLDcgQEAgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB7Cj4g Pj4+ICAJSU5URUxfT1VUUFVUX0RQID0gNywKPiA+Pj4gIAlJTlRFTF9PVVRQVVRfRURQID0gOCwK PiA+Pj4gIAlJTlRFTF9PVVRQVVRfRFNJID0gOSwKPiA+Pj4gLQlJTlRFTF9PVVRQVVRfVU5LTk9X TiA9IDEwLAo+ID4+PiArCUlOVEVMX09VVFBVVF9EREkgPSAxMCwKPiA+Pj4gIAlJTlRFTF9PVVRQ VVRfRFBfTVNUID0gMTEsCj4gPj4+ICB9Owo+ID4+PiAgCj4gPj4+IEBAIC0yMTYsNiArMjE2LDkg QEAgc3RydWN0IGludGVsX2VuY29kZXIgewo+ID4+PiAgCWVudW0gcG9ydCBwb3J0Owo+ID4+PiAg CXVuc2lnbmVkIGludCBjbG9uZWFibGU7Cj4gPj4+ICAJdm9pZCAoKmhvdF9wbHVnKShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqKTsKPiA+Pj4gKwllbnVtIGludGVsX291dHB1dF90eXBlICgqY29tcHV0 ZV9vdXRwdXRfdHlwZSkoc3RydWN0IGludGVsX2VuY29kZXIgKiwKPiA+Pj4gKwkJCQkJCSAgICAg IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICosCj4gPj4+ICsJCQkJCQkgICAgICBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqKTsKPiA+Pj4gIAlib29sICgqY29tcHV0ZV9jb25maWcpKHN0cnVj dCBpbnRlbF9lbmNvZGVyICosCj4gPj4+ICAJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKiwKPiA+Pj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqKTsKPiA+ Pj4gQEAgLTExNDksNyArMTE1Miw3IEBAIGVuY190b19kaWdfcG9ydChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCj4gPj4+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIg PSB0b19pbnRlbF9lbmNvZGVyKGVuY29kZXIpOwo+ID4+PiAgCj4gPj4+ICAJc3dpdGNoIChpbnRl bF9lbmNvZGVyLT50eXBlKSB7Cj4gPj4+IC0JY2FzZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoKPiA+ Pj4gKwljYXNlIElOVEVMX09VVFBVVF9EREk6Cj4gPj4+ICAJCVdBUk5fT04oIUhBU19EREkodG9f aTkxNShlbmNvZGVyLT5kZXYpKSk7Cj4gPj4+ICAJY2FzZSBJTlRFTF9PVVRQVVRfRFA6Cj4gPj4+ ICAJY2FzZSBJTlRFTF9PVVRQVVRfRURQOgo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ ID4+PiBpbmRleCA2NmJiZWRjNWZhMDEuLjJhZTNlZWExOTMxNyAxMDA2NDQKPiA+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+Pj4gQEAgLTEyNDMsNiArMTI0Myw4IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4+PiAgCXUzMiBwY2xrOwo+ID4+PiAgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gPj4+ICAKPiA+ Pj4gKwlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRFNJKTsK PiA+Pj4gKwo+ID4+PiAgCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+Pj4gIAkJYnh0X2Rz aV9nZXRfcGlwZV9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ID4+PiAgCj4gPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2R2by5jCj4gPj4+IGluZGV4IDUzYzliNzYzZjRjZS4uNzU0YmFhMDBi ZWE5IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+ ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+ID4+PiBAQCAtMTU5 LDYgKzE1OSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2R2b19nZXRfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ID4+PiAgCXN0cnVjdCBpbnRlbF9kdm8gKmludGVsX2R2byA9 IGVuY190b19kdm8oZW5jb2Rlcik7Cj4gPj4+ICAJdTMyIHRtcCwgZmxhZ3MgPSAwOwo+ID4+PiAg Cj4gPj4+ICsJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0RW Tyk7Cj4gPj4+ICsKPiA+Pj4gIAl0bXAgPSBJOTE1X1JFQUQoaW50ZWxfZHZvLT5kZXYuZHZvX3Jl Zyk7Cj4gPj4+ICAJaWYgKHRtcCAmIERWT19IU1lOQ19BQ1RJVkVfSElHSCkKPiA+Pj4gIAkJZmxh Z3MgfD0gRFJNX01PREVfRkxBR19QSFNZTkM7Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1p LmMKPiA+Pj4gaW5kZXggNTEzMmRjODE0Nzg4Li4xZmY0NDhhNjdiOTkgMTAwNjQ0Cj4gPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+Pj4gQEAgLTk1Nyw2ICs5NTcsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gPj4+ICAJdTMyIHRtcCwgZmxhZ3MgPSAwOwo+ID4+PiAgCWludCBkb3RjbG9jazsKPiA+ Pj4gIAo+ID4+PiArCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBV VF9IRE1JKTsKPiA+Pj4gKwo+ID4+PiAgCXRtcCA9IEk5MTVfUkVBRChpbnRlbF9oZG1pLT5oZG1p X3JlZyk7Cj4gPj4+ICAKPiA+Pj4gIAlpZiAodG1wICYgU0RWT19IU1lOQ19BQ1RJVkVfSElHSCkK PiA+Pj4gQEAgLTE2MTAsMTIgKzE2MTIsOSBAQCBpbnRlbF9oZG1pX2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+ID4+PiAgCj4gPj4+ICAJaW50ZWxf aGRtaV91bnNldF9lZGlkKGNvbm5lY3Rvcik7Cj4gPj4+ICAKPiA+Pj4gLQlpZiAoaW50ZWxfaGRt aV9zZXRfZWRpZChjb25uZWN0b3IpKSB7Cj4gPj4+IC0JCXN0cnVjdCBpbnRlbF9oZG1pICppbnRl bF9oZG1pID0gaW50ZWxfYXR0YWNoZWRfaGRtaShjb25uZWN0b3IpOwo+ID4+PiAtCj4gPj4+IC0J CWhkbWlfdG9fZGlnX3BvcnQoaW50ZWxfaGRtaSktPmJhc2UudHlwZSA9IElOVEVMX09VVFBVVF9I RE1JOwo+ID4+PiArCWlmIChpbnRlbF9oZG1pX3NldF9lZGlkKGNvbm5lY3RvcikpCj4gPj4+ICAJ CXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ID4+PiAtCX0gZWxzZQo+ID4+ PiArCWVsc2UKPiA+Pj4gIAkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7 Cj4gPj4+ICAKPiA+Pj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJf RE9NQUlOX0dNQlVTKTsKPiA+Pj4gQEAgLTE2MjYsOCArMTYyNSw2IEBAIGludGVsX2hkbWlfZGV0 ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gPj4+ICBz dGF0aWMgdm9pZAo+ID4+PiAgaW50ZWxfaGRtaV9mb3JjZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4+PiAgewo+ID4+PiAtCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1p ID0gaW50ZWxfYXR0YWNoZWRfaGRtaShjb25uZWN0b3IpOwo+ID4+PiAtCj4gPj4+ICAJRFJNX0RF QlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gPj4+ICAJCSAgICAgIGNvbm5lY3Rvci0+ YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKPiA+Pj4gIAo+ID4+PiBAQCAtMTYzNyw3ICsxNjM0 LDYgQEAgaW50ZWxfaGRtaV9mb3JjZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ID4+PiAgCQlyZXR1cm47Cj4gPj4+ICAKPiA+Pj4gIAlpbnRlbF9oZG1pX3NldF9lZGlkKGNvbm5l Y3Rvcik7Cj4gPj4+IC0JaGRtaV90b19kaWdfcG9ydChpbnRlbF9oZG1pKS0+YmFzZS50eXBlID0g SU5URUxfT1VUUFVUX0hETUk7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gIHN0YXRpYyBpbnQgaW50 ZWxfaGRtaV9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ID4+PiBpbmRleCAzODU3MmQ2NWU0NmUuLmVmODA0 OTkxMTNlZSAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ID4+PiBA QCAtMTI1LDYgKzEyNSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2x2ZHNfZ2V0X2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4gIAlzdHJ1Y3QgaW50ZWxfbHZkc19lbmNv ZGVyICpsdmRzX2VuY29kZXIgPSB0b19sdmRzX2VuY29kZXIoJmVuY29kZXItPmJhc2UpOwo+ID4+ PiAgCXUzMiB0bXAsIGZsYWdzID0gMDsKPiA+Pj4gIAo+ID4+PiArCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9MVkRTKTsKPiA+Pj4gKwo+ID4+PiAgCXRtcCA9 IEk5MTVfUkVBRChsdmRzX2VuY29kZXItPnJlZyk7Cj4gPj4+ICAJaWYgKHRtcCAmIExWRFNfSFNZ TkNfUE9MQVJJVFkpCj4gPj4+ICAJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOwo+ID4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiA+Pj4gaW5kZXggMWQ5NDYyNDBl NTVmLi4zOTcxNGJlM2ViNmIgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX29wcmVnaW9uLmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ByZWdpb24uYwo+ID4+PiBAQCAtMzgzLDcgKzM4Myw3IEBAIGludCBpbnRlbF9vcHJlZ2lvbl9u b3RpZnlfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+Pj4g IAljYXNlIElOVEVMX09VVFBVVF9BTkFMT0c6Cj4gPj4+ICAJCXR5cGUgPSBESVNQTEFZX1RZUEVf Q1JUOwo+ID4+PiAgCQlicmVhazsKPiA+Pj4gLQljYXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgo+ ID4+PiArCWNhc2UgSU5URUxfT1VUUFVUX0RESToKPiA+Pj4gIAljYXNlIElOVEVMX09VVFBVVF9E UDoKPiA+Pj4gIAljYXNlIElOVEVMX09VVFBVVF9IRE1JOgo+ID4+PiAgCWNhc2UgSU5URUxfT1VU UFVUX0RQX01TVDoKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nkdm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ID4+PiBpbmRleCA3 NDM3OTQ0YjM4OGYuLjQyZWMyZDFmN2E2MSAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nkdm8uYwo+ID4+PiBAQCAtMTQyOSw2ICsxNDI5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxf c2R2b19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4+PiAgCXU4 IHZhbDsKPiA+Pj4gIAlib29sIHJldDsKPiA+Pj4gIAo+ID4+PiArCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9TRFZPKTsKPiA+Pj4gKwo+ID4+PiAgCXNkdm94 ID0gSTkxNV9SRUFEKGludGVsX3Nkdm8tPnNkdm9fcmVnKTsKPiA+Pj4gIAo+ID4+PiAgCXJldCA9 IGludGVsX3Nkdm9fZ2V0X2lucHV0X3RpbWluZyhpbnRlbF9zZHZvLCAmZHRkKTsKPiA+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF90di5jCj4gPj4+IGluZGV4IGE3OWE3NTkxYjJjZi4uYjE4NjA5Y2ViZTAz IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMKPiA+Pj4gQEAgLTg2OCw2ICs4 NjgsOCBAQCBzdGF0aWMgdm9pZAo+ID4+PiAgaW50ZWxfdHZfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4gIAkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKPiA+Pj4gIHsKPiA+Pj4gKwlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVz IHw9IEJJVChJTlRFTF9PVVRQVVRfVFZPVVQpOwo+ID4+PiArCj4gPj4+ICAJcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7 Cj4gPj4+ICB9Cj4gPj4+ICAKPiAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=