From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/13] drm/i915: Split the gamma/csc enable bits from the plane_ctl() function Date: Mon, 14 Jan 2019 19:11:10 +0200 Message-ID: <20190114171110.GD20097@intel.com> References: <20190111170823.4441-1-ville.syrjala@linux.intel.com> <20190111170823.4441-3-ville.syrjala@linux.intel.com> <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 20D986EACD for ; Mon, 14 Jan 2019 17:11:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMTEsIDIwMTkgYXQgMDQ6NDE6MzdQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBGcmksIEphbiAxMSwgMjAxOSBhdCAwNzowODoxMlBNICswMjAwLCBWaWxsZSBTeXJq YWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+IAo+ID4gT24gZzR4KyB0aGUgcGlwZSBnYW1tYSBlbmFibGUgYml0IGZv ciB0aGUgcHJpbWFyeSBwbGFuZSBhZmZlY3RzCj4gPiB0aGUgcGlwZSBib3R0b20gY29sb3IgYXMg d2VsbC4gVGhlIHNhbWUgZm9yIHRoZSBwaXBlIGNzYyBlbmFibGUKPiA+IGJpdCBvbiBpbGsrLiBU aHVzIHdlIG11c3QgY29uZmlndXJlIHRob3NlIGJpdHMgY29ycmVjdGx5IGV2ZW4KPiA+IHdoZW4g dGhlIHByaW1hcnkgcGxhbmUgaXMgZGlzYWJsZWQuCj4gCj4gVGhpcyBpcyBvbmx5IHRydWUgZm9y IDxnZW45LCByaWdodD8gU3RhcnRpbmcgd2l0aCBnZW45LCB3ZSBoYXZlCj4gZGVkaWNhdGVkIGJp dHMgdGhhdCBjb250cm9sIHRoaXMsIHNvIEkgZG9uJ3QgdGhpbmsgdGhlIHByaW1heSBwbGFuZSdz Cj4gc2V0dGluZ3Mgc2hvdWxkIGhhdmUgYW55IGltcGFjdCB3aGVuIGRpc2FibGVkLiAgSS5lLiwg d2UgYWxzbyBuZWVkIHRoZQo+IGJpdHMgc2V0IGluIHRoaXMgcGF0Y2g6Cj4gCj4gICAgICAgICBo dHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjcxMTA5LwoKWWVzLiBJIGhh ZCB0aGUgc2FtZSBiaXRzIChvciBzb21ldGhpbmcgc2ltaWxhciBpbiBhIGxhdGVyIHBhdGNoIGlu CnRoZSBzZXJpZXMpLiBCdXQgd2Ugc2hvdWxkIHByb2JhYmx5IGp1c3QgbGFuZCB5b3VyIHN0dWZm IGZpcnN0LgoKPiAKPiA+IFRvIG1ha2UgdGhlIGZlYXNpYmxlIGxldCdzIHNwbGl0IHRob3NlIHNl dHRpbmdzIGZyb20gdGhlCj4gPiBwbGFuZV9jdGwoKSBmdW5jdGlvbiBpbnRvIGEgc2VwcmF0ZSBm dW5jaXRvbiB0aGF0IHdlIGNhbgo+ID4gY2FsbCBmcm9tIHRoZSAtPmRpc2FibGVfcGxhbmUoKSBo b29rIGFzIHdlbGwuCj4gCj4gSXMgY2FsbGluZyBpdCBmcm9tIC0+ZGlzYWJsZV9wbGFuZSgpIGVu b3VnaD8gIElmIHdlIGp1c3QgZGlzYWJsZSB0aGUKPiBwcmltYXJ5IHBsYW5lLCB0aGVuIHRob3Nl IGJpdHMgd2lsbCByZW1haW4gc2V0IHdoaWxlIHRoZSBjcnRjIHJlbWFpbnMKPiBhY3RpdmUuICBC dXQgaWYgeW91IHRoZW4gZGlzYWJsZSB0aGUgd2hvbGUgY3J0YyBhbmQgcmUtZW5hYmxlIGl0IGFn YWluCj4gbGF0ZXIsIHdvbid0IHdlIGhhdmUgbG9zdCB0aGUgYml0cyBhdCB0aGF0IHBvaW50PwoK SG1tLiBZZXMsIHByb2JhYmx5LgoKSnVzdCBhZGRpbmcgYSBuZWVkc19tb2Rlc2V0KCkgY2hlY2sg aW50bwppbnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRfcGxhbmVzKCkgKGludHJvZHVjZWQgaW4gYSBs YXRlciBwYXRjaCkKY291bGQgYmUgb25lIHdheS4gQnV0IHRoYXQgbWVhbnMgdGhlIHBsYW5lIGNv bnRyb2wgcmVnIHdvbid0IGJlCnVwZGF0ZWQgYmVmb3JlIHRoZSBwaXBlIGlzIGFscmVhZHkgYWN0 aXZlLiBTbyB3ZSBtaWdodCBuZWVkIGEKc3BlY2lhbCBjYXNlIGZvciB0aGF0IHRvby4KClRoYXQg c2FpZCwgSSBraW5kYSBoYXRlIHRoZSBwaXBlIGVuYWJsZSBzcGVjaWFsIGNhc2VzIGZvciB0aGUK Y29sb3IgbWFuYWdlbWVudCBzdHVmZi4gU28gSSdtIHdvbmRlcmluZyBpZiB3ZSBjb3VsZCBlbGlt aW5hdGUKaXQgYWxsIGFuZCBqdXN0IHJlbHkgb24gdGhlIG5vcm1hbCBwaXBlK3BsYW5lIHVwZGF0 ZSB0byBkbwp0aGluZ3MgY29ycmVjdGx5LiBCdXQgdG8gbWFrZSB0aGF0IGNvbnNpc3RlbnQgd2Ug bWlnaHQgaGF2ZSB0bwpoYXZlIGFub3RoZXIgc3BlY2lhbCBjYXNlIHRvIGRpc2FibGUgZ2FtbWEv ZXRjLiBwcmlvciB0bwplbmFibGluZyB0aGUgcGlwZSBzbyB0aGF0IGl0IGNhbiBhbGwgYmUgZW5h YmxlZCBhdG9taWNhbGx5CmxhdGVyLiBIbW0uIEkgc3VwcG9zZSB0aGF0IGNvdWxkIGJlIGFjaGll dmVkIGJ5IGNsZWFyaW5nIGFsbApyZWxldmFudCBjb250cm9sIGJpdHMgaW4gZGlzYWJsZV9wbGFu ZSgpIChvciBpbiBjcnRjX2Rpc2FibGUoKQpmb3Igc2tsKykgaWYgdGhlIGNydGMgaXMgbm8gbG9u Z2VyIGFjdGl2ZS4KCkFuZCBJIGd1ZXNzIHdlIGNvdWxkIHN0aWxsIGtlZXAgdGhlIC5sb2FkX2x1 dHMoKSBzcGVjaWFsIGNhc2UKc2luY2UgZ3VhcmFudGVlaW5nIHRoZSBhdG9taWNpdHkgZm9yIHRo YXQgaXNuJ3QgYXMgZWFzeS4KCkl0IHdvdWxkIG1lYW4gdGhlIHBpcGUgYWx3YXN5IGNvbWVzIHVw IHdpdGggZ2FtbWEgYW5kIGNzYwpkaXNhYmxlZC4gQnV0IHNpbmNlIGl0J3MgYWxsIHNvbWUgc2hh ZGUgb2YgYmxhY2sgYW55d2F5IEkKZ3Vlc3MgaXQgc2hvdWxkbid0IGJlIGEgYmlnIGRlYWwuCgo+ IAo+IAo+IE1hdHQKPiAKPiA+IAo+ID4gRm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGRvIHRoYXQgb24g YWxsIHRoZSBwbGFuZSB0eXBlcy4gV2hpbGUKPiA+IHRoYXQgaGFzIG5vIHJlYWwgYmVuZWZpdHMg YXQgdGhpcyB0aW1lLCBpdCdsbCBiZWNvbWUgdXNlZnVsCj4gPiB3aGVuIHdlIHN0YXJ0IHRvIGNv bnRyb2wgdGhlIHBpcGUgZ2FtbWEvY3NjIGVuYWJsZSBiaXRzCj4gPiBkeW5hbWljYWxseSB3aGVu IHdlIG92ZXJoYXVsIHRoZSBjb2xvciBtYW5hZ2VtZW50IGNvZGUuCj4gPiAKPiA+IE9uIHByZS1n NHggdGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYW55IHdheSB0byBnYW1tYQo+ID4gY29ycmVj dCB0aGUgcGlwZSBib3R0b20gY29sb3IsIGJ1dCBzdGlja2luZyB0byB0aGUgc2FtZQo+ID4gcGF0 dGVybiBkb2Vzbid0IGh1cnQuIEFuZCBpdCdsbCBzdGlsbCBoZWxwIHVzIHRvIGRvCj4gPiBjcnRj IHN0YXRlIHJlYWRvdXQgY29ycmVjdGx5IGZvciB0aGUgcGlwZSBnYW1tYSBlbmFibGUKPiA+IGJp dCBmb3IgdGhlIGNvbG9yIG1hbmFnZW1lbnQgb3ZlcmhhdWwuCj4gPiAKPiA+IEFuIGFsdGVybmF0 aXZlIGFwcG9yYWNoIHdvdWxkIGJlIHRvIHN0aWxsIHByZWNvbXB1dGUgdGhlc2UKPiA+IGJpdHMg aW50byBwbGFuZV9zdGF0ZS0+Y3RsLCBidXQgdGhhdCB3b3VsZCByZXF1aXJlIHRoYXQgd2UKPiA+ IHJ1biB0aHJvdWdoIHRoZSBwbGFuZSBjaGVjayBldmVuIHdoZW4gdGhlIHBsYW5lIGlzbid0IGxv Z2ljYWxseQo+ID4gZW5hYmxlZCBvbiBhbnkgY3J0Yy4gQ3VycmVudGx5IHRoYXQgY29uZGl0aW9u IGNhdXNlcyB1cyB0bwo+ID4gc2hvcnQgY2lyY3VpdCB0aGUgZW50aXJlIHRoaW5nIGFuZCBub3Qg Y2FsbCAtPmNoZWNrX3BsYW5lKCkuCj4gPiBUaGVyZSB3b3VsZCBhbHNvIGJlIHNvbWUgY2hpY2tl biBhbmQgZWdnIHByb2JsZW1zIHdpdGgKPiA+IC0+Y2hlY2tfcGxhbmUoKSB2cy4gY3J0YyBjb2xv ciBzdGF0ZSBjaGVjayB0aGF0IHdvdWxkCj4gPiByZXF1aXRlIHNwbGl0dGluZyBjZXJ0YWluIHRo aW5ncyBpbnRvIG11bHRpcGxlIHN0ZXBzLgo+ID4gU28gYWxsIGluIGFsbCB0aGlzIHNlZW1zIGxp a2UgdGhlIGVhc2llciByb3V0ZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEyOCArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgNTQgKysrKysrKyst LS0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMo LSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggNWRj MGRlODljNDllLi5hMzg3MWRiNDcwM2IgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gQEAgLTMxODAsMjggKzMxODAsMzggQEAgaTl4eF9wbGFuZV9tYXhfc3Ry aWRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiAr c3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gKwl1MzIg ZHNwY250ciA9IDA7Cj4gPiArCj4gPiArCWRzcGNudHIgfD0gRElTUFBMQU5FX0dBTU1BX0VOQUJM RTsKPiA+ICsKPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChk ZXZfcHJpdikpCj4gPiArCQlkc3BjbnRyIHw9IERJU1BQTEFORV9QSVBFX0NTQ19FTkFCTEU7Cj4g PiArCj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiA+ICsJCWRzcGNudHIgfD0g RElTUFBMQU5FX1NFTF9QSVBFKGNydGMtPnBpcGUpOwo+ID4gKwo+ID4gKwlyZXR1cm4gZHNwY250 cjsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJCQkgIGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZS0+ZGV2KTsKPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gPiAgCXVuc2lnbmVkIGludCByb3RhdGlv biA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gIAl1MzIgZHNwY250cjsKPiA+ICAK PiA+IC0JZHNwY250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5FX0dBTU1BX0VO QUJMRTsKPiA+ICsJZHNwY250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFOwo+ID4gIAo+ID4gIAlp ZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDUpIHx8Cj4gPiAgCSAgICBJ U19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gPiAgCQlkc3Bj bnRyIHw9IERJU1BQTEFORV9UUklDS0xFX0ZFRURfRElTQUJMRTsKPiA+ICAKPiA+IC0JaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gPiAtCQlkc3Bj bnRyIHw9IERJU1BQTEFORV9QSVBFX0NTQ19FTkFCTEU7Cj4gPiAtCj4gPiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNSkKPiA+IC0JCWRzcGNudHIgfD0gRElTUFBMQU5FX1NFTF9QSVBFKGNy dGMtPnBpcGUpOwo+ID4gLQo+ID4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgewo+ID4g IAljYXNlIERSTV9GT1JNQVRfQzg6Cj4gPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV84QlBQOwo+ ID4gQEAgLTMzMjksMTEgKzMzMzksMTMgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gIAllbnVtIGk5eHhfcGxh bmVfaWQgaTl4eF9wbGFuZSA9IHBsYW5lLT5pOXh4X3BsYW5lOwo+ID4gIAl1MzIgbGluZWFyX29m ZnNldDsKPiA+IC0JdTMyIGRzcGNudHIgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ID4gIAlpbnQgeCA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ID4gIAlpbnQgeSA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS55Owo+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gIAl1 MzIgZHNwYWRkcl9vZmZzZXQ7Cj4gPiArCXUzMiBkc3BjbnRyOwo+ID4gKwo+ID4gKwlkc3BjbnRy ID0gcGxhbmVfc3RhdGUtPmN0bCB8IGk5eHhfcGxhbmVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4g PiAgCj4gPiAgCWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgcGxh bmVfc3RhdGUsIDApOwo+ID4gIAo+ID4gQEAgLTMzOTMsMTAgKzM0MDUsMjMgQEAgc3RhdGljIHZv aWQgaTl4eF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKPiA+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9wbGFu ZTsKPiA+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ICsJdTMyIGRzcGNudHI7Cj4gPiAr Cj4gPiArCS8qCj4gPiArCSAqIERTUENOVFIgcGlwZSBnYW1tYSBlbmFibGUgb24gZzR4KyBhbmQg cGlwZSBjc2MKPiA+ICsJICogZW5hYmxlIG9uIGlsaysgYWZmZWN0IHRoZSBwaXBlIGJvdHRvbSBj b2xvciBhcwo+ID4gKwkgKiB3ZWxsLCBzbyB3ZSBtdXN0IGNvbmZpZ3VyZSB0aGVtIGV2ZW4gaWYg dGhlIHBsYW5lCj4gPiArCSAqIGlzIGRpc2FibGVkLgo+ID4gKwkgKgo+ID4gKwkgKiBPbiBwcmUt ZzR4IHRoZXJlIGlzIG5vIHdheSB0byBnYW1tYSBjb3JyZWN0IHRoZQo+ID4gKwkgKiBwaXBlIGJv dHRvbSBjb2xvciBidXQgd2UnbGwga2VlcCBvbiBkb2luZyB0aGlzCj4gPiArCSAqIGFueXdheS4K PiA+ICsJICovCj4gPiArCWRzcGNudHIgPSBpOXh4X3BsYW5lX2N0bF9jcnRjKGNydGNfc3RhdGUp Owo+ID4gIAo+ID4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBp cnFmbGFncyk7Cj4gPiAgCj4gPiAtCUk5MTVfV1JJVEVfRlcoRFNQQ05UUihpOXh4X3BsYW5lKSwg MCk7Cj4gPiArCUk5MTVfV1JJVEVfRlcoRFNQQ05UUihpOXh4X3BsYW5lKSwgZHNwY250cik7Cj4g PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gPiAgCQlJOTE1X1dSSVRFX0ZXKERT UFNVUkYoaTl4eF9wbGFuZSksIDApOwo+ID4gIAllbHNlCj4gPiBAQCAtMzYzMSw2ICszNjU2LDIw IEBAIHN0YXRpYyB1MzIgY25sX3BsYW5lX2N0bF9mbGlwKHVuc2lnbmVkIGludCByZWZsZWN0KQo+ ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiArdTMyIHNrbF9wbGFuZV9jdGxfY3J0Yyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICt7Cj4gPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOwo+ID4gKwl1MzIgcGxhbmVfY3RsID0gMDsKPiA+ICsKPiA+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gPiAr CQlyZXR1cm4gcGxhbmVfY3RsOwo+ID4gKwo+ID4gKwlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BJ UEVfR0FNTUFfRU5BQkxFOwo+ID4gKwlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BJUEVfQ1NDX0VO QUJMRTsKPiA+ICsKPiA+ICsJcmV0dXJuIHBsYW5lX2N0bDsKPiA+ICt9Cj4gPiArCj4gPiAgdTMy IHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gPiAgCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g PiAgewo+ID4gQEAgLTM2NDUsMTAgKzM2ODQsNyBAQCB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAKPiA+ICAJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCAxMCAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiA+ICAJ CXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2FscGhhKHBsYW5lX3N0YXRlKTsKPiA+IC0JCXBs YW5lX2N0bCB8PQo+ID4gLQkJCVBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8Cj4gPiAtCQkJ UExBTkVfQ1RMX1BJUEVfQ1NDX0VOQUJMRSB8Cj4gPiAtCQkJUExBTkVfQ1RMX1BMQU5FX0dBTU1B X0RJU0FCTEU7Cj4gPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FC TEU7Cj4gPiAgCj4gPiAgCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0g RFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ID4gIAkJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfWVVW X1RPX1JHQl9DU0NfRk9STUFUX0JUNzA5Owo+ID4gQEAgLTM2NzMsMTkgKzM3MDksMjcgQEAgdTMy IHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gPiAgCXJldHVybiBwbGFuZV9jdGw7Cj4gPiAgfQo+ID4gIAo+ID4gK3UzMiBnbGtfcGxhbmVf Y29sb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ICsJdTMyIHBsYW5lX2NvbG9yX2N0bCA9 IDA7Cj4gPiArCj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4gKwkJcmV0 dXJuIHBsYW5lX2NvbG9yX2N0bDsKPiA+ICsKPiA+ICsJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5F X0NPTE9SX1BJUEVfR0FNTUFfRU5BQkxFOwo+ID4gKwlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVf Q09MT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4gKwo+ID4gKwlyZXR1cm4gcGxhbmVfY29sb3JfY3Rs Owo+ID4gK30KPiA+ICsKPiA+ICB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJCQljb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0KPiA+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUt PmRldik7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmJhc2UuZmI7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwg PSAwOwo+ID4gIAo+ID4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKSB7Cj4gPiAtCQlw bGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9HQU1NQV9FTkFCTEU7Cj4gPiAtCQlw bGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4gLQl9Cj4g PiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ ID4gIAlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xrX3BsYW5lX2NvbG9yX2N0bF9hbHBoYShwbGFuZV9z dGF0ZSk7Cj4gPiAgCj4gPiBAQCAtOTg2NywxMSArOTkxMSwxNSBAQCBpODQ1X2N1cnNvcl9tYXhf c3RyaWRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiAgCXJldHVybiAyMDQ4Owo+ID4g IH0KPiA+ICAKPiA+ICtzdGF0aWMgdTMyIGk4NDVfY3Vyc29yX2N0bF9jcnRjKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsJcmV0dXJuIENVUlNP Ul9HQU1NQV9FTkFCTEU7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB1MzIgaTg0NV9jdXJzb3Jf Y3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiAgewo+ID4g IAlyZXR1cm4gQ1VSU09SX0VOQUJMRSB8Cj4gPiAtCQlDVVJTT1JfR0FNTUFfRU5BQkxFIHwKPiA+ ICAJCUNVUlNPUl9GT1JNQVRfQVJHQiB8Cj4gPiAgCQlDVVJTT1JfU1RSSURFKHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS5zdHJpZGUpOwo+ID4gIH0KPiA+IEBAIC05OTQxLDcgKzk5ODksOSBA QCBzdGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKPiA+ICAJCXVuc2lnbmVkIGludCB3aWR0aCA9IHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfdzsK PiA+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2g7Cj4g PiAgCj4gPiAtCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+ICsJCWNudGwgPSBwbGFuZV9z dGF0ZS0+Y3RsIHwKPiA+ICsJCQlpODQ1X2N1cnNvcl9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiA+ ICsKPiA+ICAJCXNpemUgPSAoaGVpZ2h0IDw8IDEyKSB8IHdpZHRoOwo+ID4gIAo+ID4gIAkJYmFz ZSA9IGludGVsX2N1cnNvcl9iYXNlKHBsYW5lX3N0YXRlKTsKPiA+IEBAIC0xMDAwNiwyNyArMTAw NTYsMzYgQEAgaTl4eF9jdXJzb3JfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+ID4gIAlyZXR1cm4gcGxhbmUtPmJhc2UuZGV2LT5tb2RlX2NvbmZpZy5jdXJzb3Jfd2lkdGgg KiA0Owo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdTMyIGk5eHhfY3Vyc29yX2N0bChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+IC0JCQkgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gK3N0YXRpYyB1MzIgaTl4eF9j dXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiA+ICAJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ID4gIAl1MzIgY250bCA9IDA7Cj4gPiAgCj4gPiAtCWlmIChJU19HRU4oZGV2X3ByaXYs IDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gPiAtCQljbnRsIHw9IE1DVVJTT1JfVFJJ Q0tMRV9GRUVEX0RJU0FCTEU7Cj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ ID4gKwkJcmV0dXJuIGNudGw7Cj4gPiAgCj4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9 IDEwKSB7Cj4gPiAtCQljbnRsIHw9IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+ID4gKwljbnRsIHw9 IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+ID4gIAo+ID4gLQkJaWYgKEhBU19EREkoZGV2X3ByaXYp KQo+ID4gLQkJCWNudGwgfD0gTUNVUlNPUl9QSVBFX0NTQ19FTkFCTEU7Cj4gPiAtCX0KPiA+ICsJ aWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ID4gKwkJY250bCB8PSBNQ1VSU09SX1BJUEVfQ1NDX0VO QUJMRTsKPiA+ICAKPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYmICFJU19HNFgo ZGV2X3ByaXYpKQo+ID4gIAkJY250bCB8PSBNQ1VSU09SX1BJUEVfU0VMRUNUKGNydGMtPnBpcGUp Owo+ID4gIAo+ID4gKwlyZXR1cm4gY250bDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHUzMiBp OXh4X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gPiArCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiArCQl0 b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ID4gKwl1MzIgY250bCA9IDA7 Cj4gPiArCj4gPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZf cHJpdikpCj4gPiArCQljbnRsIHw9IE1DVVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gPiAr Cj4gPiAgCXN3aXRjaCAocGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193KSB7Cj4gPiAgCWNhc2UgNjQ6 Cj4gPiAgCQljbnRsIHw9IE1DVVJTT1JfTU9ERV82NF9BUkdCX0FYOwo+ID4gQEAgLTEwMTUxLDcg KzEwMjEwLDggQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUsCj4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCj4gPiAgCWlm IChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gPiAtCQljbnRs ID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+ICsJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiA+ ICsJCQlpOXh4X2N1cnNvcl9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiA+ICAKPiA+ICAJCWlmIChw bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2ggIT0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193KQo+ID4g IAkJCWZiY19jdGwgPSBDVVJfRkJDX0NUTF9FTiB8IChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2gg LSAxKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCAzYjA1MWZkZDBmY2Uu Ljg4YWM0MmIyZDdlZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAg LTE3NTIsOSArMTc1MiwxMCBAQCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9wbGFuZV9nZ3R0X29m ZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ID4gIAo+ID4gIHUz MiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ID4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpOwo+ID4gK3UzMiBnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKPiA+IC11MzIgZ2xrX2NvbG9yX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKPiA+ICt1MzIgc2ts X3BsYW5lX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KTsKPiA+ICB1MzIgc2tsX3BsYW5lX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlLAo+ID4gIAkJICAgICBpbnQgcGxhbmUpOwo+ID4gIGludCBza2xfY2hl Y2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiBpbmRleCA4ZjM5ODJjMDM5MjUu LmE0NWVmOThiMmY4ZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ ID4gQEAgLTQ4NCw5ICs0ODQsMTYgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiA+ICAJc3RydWN0IGludGVsX3BsYW5lICpsaW5rZWQgPSBwbGFuZV9zdGF0 ZS0+bGlua2VkX3BsYW5lOwo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4gIAl1OCBhbHBoYSA9IHBsYW5lX3N0YXRlLT5iYXNl LmFscGhhID4+IDg7Cj4gPiArCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ID4gIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwo+ID4gIAl1MzIga2V5bXNrLCBrZXltYXg7Cj4gPiAgCj4gPiArCXBs YW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPiArCj4gPiArCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ ID4gKwkJcGxhbmVfY29sb3JfY3RsID0gcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCB8Cj4gPiArCQkJ Z2xrX3BsYW5lX2NvbG9yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ID4gKwo+ID4gIAkvKiBTaXpl cyBhcmUgMCBiYXNlZCAqLwo+ID4gIAlzcmNfdy0tOwo+ID4gIAlzcmNfaC0tOwo+ID4gQEAgLTUz Myw4ICs1NDAsNyBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+ID4gIAl9Cj4gPiAgCj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4gLQkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9D VEwocGlwZSwgcGxhbmVfaWQpLAo+ID4gLQkJCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9jdGwp Owo+ID4gKwkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpLCBw bGFuZV9jb2xvcl9jdGwpOwo+ID4gIAo+ID4gIAlpZiAoZmItPmZvcm1hdC0+aXNfeXV2ICYmIGlj bF9pc19oZHJfcGxhbmUocGxhbmUpKQo+ID4gIAkJaWNsX3Byb2dyYW1faW5wdXRfY3NjKHBsYW5l LCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPiBAQCAtNzMxLDYgKzczNywxMSBAQCB2bHZf dXBkYXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiA+ICAJCSAgICAgIFNQX1NIX1NJTihzaF9zaW4pIHwgU1BfU0hfQ09TKHNoX2NvcykpOwo+ID4g IH0KPiA+ICAKPiA+ICtzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsX2NydGMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiArewo+ID4gKwlyZXR1cm4gU1BfR0FN TUFfRU5BQkxFOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCSAgY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAtNzM5 LDcgKzc1MCw3IEBAIHN0YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gPiAgCXUzMiBzcHJjdGw7 Cj4gPiAgCj4gPiAtCXNwcmN0bCA9IFNQX0VOQUJMRSB8IFNQX0dBTU1BX0VOQUJMRTsKPiA+ICsJ c3ByY3RsID0gU1BfRU5BQkxFOwo+ID4gIAo+ID4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1h dCkgewo+ID4gIAljYXNlIERSTV9GT1JNQVRfWVVZVjoKPiA+IEBAIC04MDYsNyArODE3LDYgQEAg dmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4g PiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gPiAgCWVudW0gcGxhbmVfaWQgcGxh bmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPiAtCXUzMiBzcHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ ID4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zm c2V0Owo+ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+IEBAIC04MTcs NiArODI3LDkgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ID4gIAl1aW50MzJfdCB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gPiAgCXVp bnQzMl90IHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiA+ICAJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKPiA+ICsJdTMyIHNwcmN0bDsKPiA+ICsKPiA+ICsJc3ByY3RsID0gcGxh bmVfc3RhdGUtPmN0bCB8IHZsdl9zcHJpdGVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPiAgCj4g PiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICovCj4gPiAgCWNydGNfdy0tOwo+ID4gQEAgLTg5Nyw2 ICs5MTAsMTkgQEAgdmx2X3BsYW5lX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdTMyIGl2Yl9z cHJpdGVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ICsJdTMyIHNwcmN0bCA9IDA7Cj4gPiAr Cj4gPiArCXNwcmN0bCB8PSBTUFJJVEVfR0FNTUFfRU5BQkxFOwo+ID4gKwo+ID4gKwlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+ICsJCXNwcmN0 bCB8PSBTUFJJVEVfUElQRV9DU0NfRU5BQkxFOwo+ID4gKwo+ID4gKwlyZXR1cm4gc3ByY3RsOwo+ ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAtOTA3LDE0ICs5MzMsMTEg QEAgc3RhdGljIHUzMiBpdmJfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+ICAJdTMyIHNwcmN0bDsKPiA+ICAKPiA+ IC0Jc3ByY3RsID0gU1BSSVRFX0VOQUJMRSB8IFNQUklURV9HQU1NQV9FTkFCTEU7Cj4gPiArCXNw cmN0bCA9IFNQUklURV9FTkFCTEU7Cj4gPiAgCj4gPiAgCWlmIChJU19JVllCUklER0UoZGV2X3By aXYpKQo+ID4gIAkJc3ByY3RsIHw9IFNQUklURV9UUklDS0xFX0ZFRURfRElTQUJMRTsKPiA+ICAK PiA+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp Cj4gPiAtCQlzcHJjdGwgfD0gU1BSSVRFX1BJUEVfQ1NDX0VOQUJMRTsKPiA+IC0KPiA+ICAJc3dp dGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4 Ogo+ID4gIAkJc3ByY3RsIHw9IFNQUklURV9GT1JNQVRfUkdCWDg4OCB8IFNQUklURV9SR0JfT1JE RVJfUkdCWDsKPiA+IEBAIC05NjYsNyArOTg5LDYgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gIAllbnVtIHBpcGUgcGlw ZSA9IHBsYW5lLT5waXBlOwo+ID4gLQl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bCwgc3By c2NhbGUgPSAwOwo+ID4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3Jf cGxhbmVbMF0ub2Zmc2V0Owo+ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+ICAJY29uc3Qgc3Ry dWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsK PiA+IEBAIC05NzgsOCArMTAwMCwxMSBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUsCj4gPiAgCXVpbnQzMl90IHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ueTsKPiA+ICAJdWludDMyX3Qgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiA+ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gPiArCXUzMiBzcHJjdGwsIHNwcnNjYWxl ID0gMDsKPiA+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ICAKPiA+ICsJc3ByY3RsID0g cGxhbmVfc3RhdGUtPmN0bCB8IGl2Yl9zcHJpdGVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPiAr Cj4gPiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICovCj4gPiAgCXNyY193LS07Cj4gPiAgCXNyY19o LS07Cj4gPiBAQCAtMTA3NCw2ICsxMDk5LDExIEBAIGc0eF9zcHJpdGVfbWF4X3N0cmlkZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIAlyZXR1cm4gMTYzODQ7Cj4gPiAgfQo+ID4gIAo+ ID4gK3N0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICt7Cj4gPiArCXJldHVybiBEVlNfR0FNTUFfRU5BQkxF Owo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCSAgY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAtMTA4NCw3ICsxMTE0 LDcgQEAgc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29s b3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+ICAJdTMyIGR2c2NudHI7Cj4gPiAg Cj4gPiAtCWR2c2NudHIgPSBEVlNfRU5BQkxFIHwgRFZTX0dBTU1BX0VOQUJMRTsKPiA+ICsJZHZz Y250ciA9IERWU19FTkFCTEU7Cj4gPiAgCj4gPiAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ ID4gIAkJZHZzY250ciB8PSBEVlNfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gPiBAQCAtMTE0MCw3 ICsxMTcwLDYgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+YmFzZS5kZXYpOwo+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ID4g LQl1MzIgZHZzY250ciA9IHBsYW5lX3N0YXRlLT5jdGwsIGR2c3NjYWxlID0gMDsKPiA+ICAJdTMy IGR2c3N1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKPiA+ ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRl X2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gPiBAQCAtMTE1Miw4ICsxMTgx LDExIEBAIGc0eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAJ dWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ID4gIAl1aW50MzJf dCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ ID4gIAl1aW50MzJfdCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNjsKPiA+ICsJdTMyIGR2c2NudHIsIGR2c3NjYWxlID0gMDsKPiA+ICAJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsKPiA+ICAKPiA+ICsJZHZzY250ciA9IHBsYW5lX3N0YXRlLT5jdGwg fCBnNHhfc3ByaXRlX2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ID4gKwo+ID4gIAkvKiBTaXplcyBh cmUgMCBiYXNlZCAqLwo+ID4gIAlzcmNfdy0tOwo+ID4gIAlzcmNfaC0tOwo+ID4gLS0gCj4gPiAy LjE5LjIKPiA+IAo+IAo+IC0tIAo+IE1hdHQgUm9wZXIKPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdp bmVlcgo+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudAo+IEludGVsIENvcnBv cmF0aW9uCj4gKDkxNikgMzU2LTI3OTUKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==