From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 02/13] drm/i915: Split the gamma/csc enable bits from the plane_ctl() function Date: Fri, 11 Jan 2019 16:41:37 -0800 Message-ID: <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> References: <20190111170823.4441-1-ville.syrjala@linux.intel.com> <20190111170823.4441-3-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7453C6E272 for ; Sat, 12 Jan 2019 00:41:38 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190111170823.4441-3-ville.syrjala@linux.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 Syrjala Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMTEsIDIwMTkgYXQgMDc6MDg6MTJQTSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IE9uIGc0eCsgdGhlIHBpcGUgZ2FtbWEgZW5hYmxlIGJpdCBmb3IgdGhlIHByaW1h cnkgcGxhbmUgYWZmZWN0cwo+IHRoZSBwaXBlIGJvdHRvbSBjb2xvciBhcyB3ZWxsLiBUaGUgc2Ft ZSBmb3IgdGhlIHBpcGUgY3NjIGVuYWJsZQo+IGJpdCBvbiBpbGsrLiBUaHVzIHdlIG11c3QgY29u ZmlndXJlIHRob3NlIGJpdHMgY29ycmVjdGx5IGV2ZW4KPiB3aGVuIHRoZSBwcmltYXJ5IHBsYW5l IGlzIGRpc2FibGVkLgoKVGhpcyBpcyBvbmx5IHRydWUgZm9yIDxnZW45LCByaWdodD8gIFN0YXJ0 aW5nIHdpdGggZ2VuOSwgd2UgaGF2ZQpkZWRpY2F0ZWQgYml0cyB0aGF0IGNvbnRyb2wgdGhpcywg c28gSSBkb24ndCB0aGluayB0aGUgcHJpbWF5IHBsYW5lJ3MKc2V0dGluZ3Mgc2hvdWxkIGhhdmUg YW55IGltcGFjdCB3aGVuIGRpc2FibGVkLiAgSS5lLiwgd2UgYWxzbyBuZWVkIHRoZQpiaXRzIHNl dCBpbiB0aGlzIHBhdGNoOgoKICAgICAgICBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvcGF0Y2gvMjcxMTA5LwoKPiBUbyBtYWtlIHRoZSBmZWFzaWJsZSBsZXQncyBzcGxpdCB0aG9z ZSBzZXR0aW5ncyBmcm9tIHRoZQo+IHBsYW5lX2N0bCgpIGZ1bmN0aW9uIGludG8gYSBzZXByYXRl IGZ1bmNpdG9uIHRoYXQgd2UgY2FuCj4gY2FsbCBmcm9tIHRoZSAtPmRpc2FibGVfcGxhbmUoKSBo b29rIGFzIHdlbGwuCgpJcyBjYWxsaW5nIGl0IGZyb20gLT5kaXNhYmxlX3BsYW5lKCkgZW5vdWdo PyAgSWYgd2UganVzdCBkaXNhYmxlIHRoZQpwcmltYXJ5IHBsYW5lLCB0aGVuIHRob3NlIGJpdHMg d2lsbCByZW1haW4gc2V0IHdoaWxlIHRoZSBjcnRjIHJlbWFpbnMKYWN0aXZlLiAgQnV0IGlmIHlv dSB0aGVuIGRpc2FibGUgdGhlIHdob2xlIGNydGMgYW5kIHJlLWVuYWJsZSBpdCBhZ2FpbgpsYXRl ciwgd29uJ3Qgd2UgaGF2ZSBsb3N0IHRoZSBiaXRzIGF0IHRoYXQgcG9pbnQ/CgoKTWF0dAoKPiAK PiBGb3IgY29uc2lzdGVuY3kgd2UnbGwgZG8gdGhhdCBvbiBhbGwgdGhlIHBsYW5lIHR5cGVzLiBX aGlsZQo+IHRoYXQgaGFzIG5vIHJlYWwgYmVuZWZpdHMgYXQgdGhpcyB0aW1lLCBpdCdsbCBiZWNv bWUgdXNlZnVsCj4gd2hlbiB3ZSBzdGFydCB0byBjb250cm9sIHRoZSBwaXBlIGdhbW1hL2NzYyBl bmFibGUgYml0cwo+IGR5bmFtaWNhbGx5IHdoZW4gd2Ugb3ZlcmhhdWwgdGhlIGNvbG9yIG1hbmFn ZW1lbnQgY29kZS4KPiAKPiBPbiBwcmUtZzR4IHRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFu eSB3YXkgdG8gZ2FtbWEKPiBjb3JyZWN0IHRoZSBwaXBlIGJvdHRvbSBjb2xvciwgYnV0IHN0aWNr aW5nIHRvIHRoZSBzYW1lCj4gcGF0dGVybiBkb2Vzbid0IGh1cnQuIEFuZCBpdCdsbCBzdGlsbCBo ZWxwIHVzIHRvIGRvCj4gY3J0YyBzdGF0ZSByZWFkb3V0IGNvcnJlY3RseSBmb3IgdGhlIHBpcGUg Z2FtbWEgZW5hYmxlCj4gYml0IGZvciB0aGUgY29sb3IgbWFuYWdlbWVudCBvdmVyaGF1bC4KPiAK PiBBbiBhbHRlcm5hdGl2ZSBhcHBvcmFjaCB3b3VsZCBiZSB0byBzdGlsbCBwcmVjb21wdXRlIHRo ZXNlCj4gYml0cyBpbnRvIHBsYW5lX3N0YXRlLT5jdGwsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUg dGhhdCB3ZQo+IHJ1biB0aHJvdWdoIHRoZSBwbGFuZSBjaGVjayBldmVuIHdoZW4gdGhlIHBsYW5l IGlzbid0IGxvZ2ljYWxseQo+IGVuYWJsZWQgb24gYW55IGNydGMuIEN1cnJlbnRseSB0aGF0IGNv bmRpdGlvbiBjYXVzZXMgdXMgdG8KPiBzaG9ydCBjaXJjdWl0IHRoZSBlbnRpcmUgdGhpbmcgYW5k IG5vdCBjYWxsIC0+Y2hlY2tfcGxhbmUoKS4KPiBUaGVyZSB3b3VsZCBhbHNvIGJlIHNvbWUgY2hp Y2tlbiBhbmQgZWdnIHByb2JsZW1zIHdpdGgKPiAtPmNoZWNrX3BsYW5lKCkgdnMuIGNydGMgY29s b3Igc3RhdGUgY2hlY2sgdGhhdCB3b3VsZAo+IHJlcXVpdGUgc3BsaXR0aW5nIGNlcnRhaW4gdGhp bmdzIGludG8gbXVsdGlwbGUgc3RlcHMuCj4gU28gYWxsIGluIGFsbCB0aGlzIHNlZW1zIGxpa2Ug dGhlIGVhc2llciByb3V0ZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgfCAxMjggKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgNTQgKysrKysrKystLS0KPiAgMyBmaWxlcyBj aGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDVkYzBkZTg5YzQ5ZS4uYTM4NzFkYjQ3MDNi IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0zMTgwLDI4ICsz MTgwLDM4IEBAIGk5eHhfcGxhbmVfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsX2NydGMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRl dik7Cj4gKwl1MzIgZHNwY250ciA9IDA7Cj4gKwo+ICsJZHNwY250ciB8PSBESVNQUExBTkVfR0FN TUFfRU5BQkxFOwo+ICsKPiArCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKQo+ICsJCWRzcGNudHIgfD0gRElTUFBMQU5FX1BJUEVfQ1NDX0VOQUJMRTsK PiArCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUpCj4gKwkJZHNwY250ciB8PSBESVNQ UExBTkVfU0VMX1BJUEUoY3J0Yy0+cGlwZSk7Cj4gKwo+ICsJcmV0dXJuIGRzcGNudHI7Cj4gK30K PiArCj4gIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KPiAgCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b247Cj4gIAl1MzIgZHNwY250cjsKPiAgCj4gLQlkc3BjbnRyID0gRElTUExBWV9QTEFORV9FTkFC TEUgfCBESVNQUExBTkVfR0FNTUFfRU5BQkxFOwo+ICsJZHNwY250ciA9IERJU1BMQVlfUExBTkVf RU5BQkxFOwo+ICAKPiAgCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElTX0dFTihkZXZfcHJpdiwg NSkgfHwKPiAgCSAgICBJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJp dikpCj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+ IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4g LQkJZHNwY250ciB8PSBESVNQUExBTkVfUElQRV9DU0NfRU5BQkxFOwo+IC0KPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNSkKPiAtCQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRShj cnRjLT5waXBlKTsKPiAtCj4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgewo+ICAJY2Fz ZSBEUk1fRk9STUFUX0M4Ogo+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FXzhCUFA7Cj4gQEAgLTMz MjksMTEgKzMzMzksMTMgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWVudW0gaTl4eF9wbGFuZV9pZCBpOXh4X3Bs YW5lID0gcGxhbmUtPmk5eHhfcGxhbmU7Cj4gIAl1MzIgbGluZWFyX29mZnNldDsKPiAtCXUzMiBk c3BjbnRyID0gcGxhbmVfc3RhdGUtPmN0bDsKPiAgCWludCB4ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzBdLng7Cj4gIAlpbnQgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCXUzMiBkc3BhZGRyX29mZnNldDsKPiArCXUz MiBkc3BjbnRyOwo+ICsKPiArCWRzcGNudHIgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwgaTl4eF9wbGFu ZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiAgCj4gIAlsaW5lYXJfb2Zmc2V0ID0gaW50ZWxfZmJf eHlfdG9fbGluZWFyKHgsIHksIHBsYW5lX3N0YXRlLCAwKTsKPiAgCj4gQEAgLTMzOTMsMTAgKzM0 MDUsMjMgQEAgc3RhdGljIHZvaWQgaTl4eF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lLT5iYXNlLmRldik7Cj4gIAllbnVtIGk5eHhfcGxhbmVfaWQgaTl4eF9wbGFuZSA9IHBs YW5lLT5pOXh4X3BsYW5lOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiArCXUzMiBkc3Bj bnRyOwo+ICsKPiArCS8qCj4gKwkgKiBEU1BDTlRSIHBpcGUgZ2FtbWEgZW5hYmxlIG9uIGc0eCsg YW5kIHBpcGUgY3NjCj4gKwkgKiBlbmFibGUgb24gaWxrKyBhZmZlY3QgdGhlIHBpcGUgYm90dG9t IGNvbG9yIGFzCj4gKwkgKiB3ZWxsLCBzbyB3ZSBtdXN0IGNvbmZpZ3VyZSB0aGVtIGV2ZW4gaWYg dGhlIHBsYW5lCj4gKwkgKiBpcyBkaXNhYmxlZC4KPiArCSAqCj4gKwkgKiBPbiBwcmUtZzR4IHRo ZXJlIGlzIG5vIHdheSB0byBnYW1tYSBjb3JyZWN0IHRoZQo+ICsJICogcGlwZSBib3R0b20gY29s b3IgYnV0IHdlJ2xsIGtlZXAgb24gZG9pbmcgdGhpcwo+ICsJICogYW55d2F5Lgo+ICsJICovCj4g Kwlkc3BjbnRyID0gaTl4eF9wbGFuZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiAgCj4gIAlzcGlu X2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gIAo+IC0J STkxNV9XUklURV9GVyhEU1BDTlRSKGk5eHhfcGxhbmUpLCAwKTsKPiArCUk5MTVfV1JJVEVfRlco RFNQQ05UUihpOXh4X3BsYW5lKSwgZHNwY250cik7Cj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KQo+ICAJCUk5MTVfV1JJVEVfRlcoRFNQU1VSRihpOXh4X3BsYW5lKSwgMCk7Cj4gIAll bHNlCj4gQEAgLTM2MzEsNiArMzY1NiwyMCBAQCBzdGF0aWMgdTMyIGNubF9wbGFuZV9jdGxfZmxp cCh1bnNpZ25lZCBpbnQgcmVmbGVjdCkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICt1MzIgc2ts X3BsYW5lX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXUzMiBwbGFuZV9jdGwgPSAwOwo+ICsKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYp KQo+ICsJCXJldHVybiBwbGFuZV9jdGw7Cj4gKwo+ICsJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9Q SVBFX0dBTU1BX0VOQUJMRTsKPiArCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUElQRV9DU0NfRU5B QkxFOwo+ICsKPiArCXJldHVybiBwbGFuZV9jdGw7Cj4gK30KPiArCj4gIHUzMiBza2xfcGxhbmVf Y3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IEBAIC0zNjQ1 LDEwICszNjg0LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAm JiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5l X2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gLQkJcGxhbmVfY3RsIHw9Cj4gLQkJCVBMQU5FX0NU TF9QSVBFX0dBTU1BX0VOQUJMRSB8Cj4gLQkJCVBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEUgfAo+ IC0JCQlQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKPiArCQlwbGFuZV9jdGwgfD0gUExB TkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4gIAo+ICAJCWlmIChwbGFuZV9zdGF0ZS0+YmFz ZS5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4gIAkJCXBsYW5lX2N0 bCB8PSBQTEFORV9DVExfWVVWX1RPX1JHQl9DU0NfRk9STUFUX0JUNzA5Owo+IEBAIC0zNjczLDE5 ICszNzA5LDI3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJcmV0dXJuIHBsYW5lX2N0bDsKPiAgfQo+ICAKPiArdTMyIGds a19wbGFuZV9jb2xvcl9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwl1MzIgcGxhbmVfY29sb3JfY3Rs ID0gMDsKPiArCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQlyZXR1cm4g cGxhbmVfY29sb3JfY3RsOwo+ICsKPiArCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9Q SVBFX0dBTU1BX0VOQUJMRTsKPiArCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QSVBF X0NTQ19FTkFCTEU7Cj4gKwo+ICsJcmV0dXJuIHBsYW5lX2NvbG9yX2N0bDsKPiArfQo+ICsKPiAg dTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9f aTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPCAxMSkgewo+IC0JCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QSVBFX0dBTU1B X0VOQUJMRTsKPiAtCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9DU0NfRU5B QkxFOwo+IC0JfQo+ICAJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1BMQU5FX0dBTU1B X0RJU0FCTEU7Cj4gIAlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xrX3BsYW5lX2NvbG9yX2N0bF9hbHBo YShwbGFuZV9zdGF0ZSk7Cj4gIAo+IEBAIC05ODY3LDExICs5OTExLDE1IEBAIGk4NDVfY3Vyc29y X21heF9zdHJpZGUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCXJldHVybiAyMDQ4Owo+ ICB9Cj4gIAo+ICtzdGF0aWMgdTMyIGk4NDVfY3Vyc29yX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlyZXR1cm4gQ1VSU09SX0dBTU1B X0VOQUJMRTsKPiArfQo+ICsKPiAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgIGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXJldHVybiBDVVJTT1JfRU5B QkxFIHwKPiAtCQlDVVJTT1JfR0FNTUFfRU5BQkxFIHwKPiAgCQlDVVJTT1JfRk9STUFUX0FSR0Ig fAo+ICAJCUNVUlNPUl9TVFJJREUocGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7 Cj4gIH0KPiBAQCAtOTk0MSw3ICs5OTg5LDkgQEAgc3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vy c29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0g cGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193Owo+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gIAo+IC0JCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ ICsJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiArCQkJaTg0NV9jdXJzb3JfY3RsX2NydGMo Y3J0Y19zdGF0ZSk7Cj4gKwo+ICAJCXNpemUgPSAoaGVpZ2h0IDw8IDEyKSB8IHdpZHRoOwo+ICAK PiAgCQliYXNlID0gaW50ZWxfY3Vyc29yX2Jhc2UocGxhbmVfc3RhdGUpOwo+IEBAIC0xMDAwNiwy NyArMTAwNTYsMzYgQEAgaTl4eF9jdXJzb3JfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ICAJcmV0dXJuIHBsYW5lLT5iYXNlLmRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dp ZHRoICogNDsKPiAgfQo+ICAKPiAtc3RhdGljIHUzMiBpOXh4X2N1cnNvcl9jdGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCSAgIGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gK3N0YXRpYyB1MzIgaTl4eF9jdXJzb3Jf Y3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAl1MzIgY250 bCA9IDA7Cj4gIAo+IC0JaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRl dl9wcml2KSkKPiAtCQljbnRsIHw9IE1DVVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQlyZXR1cm4gY250bDsKPiAgCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAxMCkgewo+IC0JCWNudGwgfD0gTUNVUlNPUl9HQU1N QV9FTkFCTEU7Cj4gKwljbnRsIHw9IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+ICAKPiAtCQlpZiAo SEFTX0RESShkZXZfcHJpdikpCj4gLQkJCWNudGwgfD0gTUNVUlNPUl9QSVBFX0NTQ19FTkFCTEU7 Cj4gLQl9Cj4gKwlpZiAoSEFTX0RESShkZXZfcHJpdikpCj4gKwkJY250bCB8PSBNQ1VSU09SX1BJ UEVfQ1NDX0VOQUJMRTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlT X0c0WChkZXZfcHJpdikpCj4gIAkJY250bCB8PSBNQ1VSU09SX1BJUEVfU0VMRUNUKGNydGMtPnBp cGUpOwo+ICAKPiArCXJldHVybiBjbnRsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIGk5eHhfY3Vy c29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiArCQl0b19pOTE1KHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJdTMyIGNudGwgPSAwOwo+ICsKPiArCWlmIChJU19H RU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwkJY250bCB8PSBN Q1VSU09SX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwo+ICsKPiAgCXN3aXRjaCAocGxhbmVfc3RhdGUt PmJhc2UuY3J0Y193KSB7Cj4gIAljYXNlIDY0Ogo+ICAJCWNudGwgfD0gTUNVUlNPUl9NT0RFXzY0 X0FSR0JfQVg7Cj4gQEAgLTEwMTUxLDcgKzEwMjEwLDggQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl1bnNpZ25lZCBsb25nIGly cWZsYWdzOwo+ICAKPiAgCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKSB7Cj4gLQkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGw7Cj4gKwkJY250bCA9IHBsYW5lX3N0 YXRlLT5jdGwgfAo+ICsJCQlpOXh4X2N1cnNvcl9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiAgCj4g IAkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAhPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRj X3cpCj4gIAkJCWZiY19jdGwgPSBDVVJfRkJDX0NUTF9FTiB8IChwbGFuZV9zdGF0ZS0+YmFzZS5j cnRjX2ggLSAxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDNiMDUxZmRkMGZj ZS4uODhhYzQyYjJkN2VkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTc1 Miw5ICsxNzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0 KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gIAo+ICB1MzIgZ2xrX3Bs YW5lX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gK3Uz MiBnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpOwo+IC11MzIgZ2xrX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKPiArdTMyIHNrbF9wbGFuZV9jdGxfY3J0Yyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIHUzMiBza2xfcGxhbmVf c3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAkJ ICAgICBpbnQgcGxhbmUpOwo+ICBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBpbmRleCA4ZjM5ODJjMDM5MjUuLmE0NWVmOThiMmY4ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTQ4NCw5ICs0ODQsMTYgQEAgc2tsX3Byb2dyYW1f cGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAq bGlua2VkID0gcGxhbmVfc3RhdGUtPmxpbmtlZF9wbGFuZTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gIAl1OCBhbHBoYSA9IHBs YW5lX3N0YXRlLT5iYXNlLmFscGhhID4+IDg7Cj4gKwl1MzIgcGxhbmVfY29sb3JfY3RsID0gMDsK PiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAl1MzIga2V5bXNrLCBrZXltYXg7Cj4gIAo+ ICsJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiArCj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkK PiArCQlwbGFuZV9jb2xvcl9jdGwgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfY3RsIHwKPiArCQkJZ2xr X3BsYW5lX2NvbG9yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ICsKPiAgCS8qIFNpemVzIGFyZSAw IGJhc2VkICovCj4gIAlzcmNfdy0tOwo+ICAJc3JjX2gtLTsKPiBAQCAtNTMzLDggKzU0MCw3IEBA IHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl9Cj4gIAo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpCj4gLQkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpLAo+ IC0JCQkgICAgICBwbGFuZV9zdGF0ZS0+Y29sb3JfY3RsKTsKPiArCQlJOTE1X1dSSVRFX0ZXKFBM QU5FX0NPTE9SX0NUTChwaXBlLCBwbGFuZV9pZCksIHBsYW5lX2NvbG9yX2N0bCk7Cj4gIAo+ICAJ aWYgKGZiLT5mb3JtYXQtPmlzX3l1diAmJiBpY2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKPiAgCQlp Y2xfcHJvZ3JhbV9pbnB1dF9jc2MocGxhbmUsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsKPiBA QCAtNzMxLDYgKzczNywxMSBAQCB2bHZfdXBkYXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCQkgICAgICBTUF9TSF9TSU4oc2hfc2luKSB8IFNQ X1NIX0NPUyhzaF9jb3MpKTsKPiAgfQo+ICAKPiArc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bF9j cnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwly ZXR1cm4gU1BfR0FNTUFfRU5BQkxFOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdTMyIHZsdl9zcHJpdGVf Y3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiBAQCAtNzM5 LDcgKzc1MCw3IEBAIHN0YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0 ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ICAJdTMyIHNwcmN0bDsKPiAg Cj4gLQlzcHJjdGwgPSBTUF9FTkFCTEUgfCBTUF9HQU1NQV9FTkFCTEU7Cj4gKwlzcHJjdGwgPSBT UF9FTkFCTEU7Cj4gIAo+ICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKPiAgCWNhc2Ug RFJNX0ZPUk1BVF9ZVVlWOgo+IEBAIC04MDYsNyArODE3LDYgQEAgdmx2X3VwZGF0ZV9wbGFuZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBw bGFuZS0+cGlwZTsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gLQl1 MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bDsKPiAgCXUzMiBzcHJzdXJmX29mZnNldCA9IHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7Cj4gIAl1MzIgbGluZWFyX29mZnNldDsK PiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7Cj4gQEAgLTgxNyw2ICs4MjcsOSBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl1aW50MzJfdCB4ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzBdLng7Cj4gIAl1aW50MzJfdCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd Lnk7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICsJdTMyIHNwcmN0bDsKPiArCj4gKwlz cHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwgdmx2X3Nwcml0ZV9jdGxfY3J0YyhjcnRjX3N0YXRl KTsKPiAgCj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ICAJY3J0Y193LS07Cj4gQEAgLTg5 Nyw2ICs5MTAsMTkgQEAgdmx2X3BsYW5lX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiArc3RhdGljIHUzMiBpdmJfc3ByaXRl X2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3Rh dGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXUzMiBzcHJjdGwgPSAwOwo+ICsKPiArCXNwcmN0bCB8 PSBTUFJJVEVfR0FNTUFfRU5BQkxFOwo+ICsKPiArCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICsJCXNwcmN0bCB8PSBTUFJJVEVfUElQRV9DU0Nf RU5BQkxFOwo+ICsKPiArCXJldHVybiBzcHJjdGw7Cj4gK30KPiArCj4gIHN0YXRpYyB1MzIgaXZi X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ IEBAIC05MDcsMTQgKzkzMywxMSBAQCBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY29uc3Qgc3RydWN0IGRybV9p bnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAgCXUzMiBz cHJjdGw7Cj4gIAo+IC0Jc3ByY3RsID0gU1BSSVRFX0VOQUJMRSB8IFNQUklURV9HQU1NQV9FTkFC TEU7Cj4gKwlzcHJjdGwgPSBTUFJJVEVfRU5BQkxFOwo+ICAKPiAgCWlmIChJU19JVllCUklER0Uo ZGV2X3ByaXYpKQo+ICAJCXNwcmN0bCB8PSBTUFJJVEVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4g IAo+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp Cj4gLQkJc3ByY3RsIHw9IFNQUklURV9QSVBFX0NTQ19FTkFCTEU7Cj4gLQo+ICAJc3dpdGNoIChm Yi0+Zm9ybWF0LT5mb3JtYXQpIHsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPiAgCQlz cHJjdGwgfD0gU1BSSVRFX0ZPUk1BVF9SR0JYODg4IHwgU1BSSVRFX1JHQl9PUkRFUl9SR0JYOwo+ IEBAIC05NjYsNyArOTg5LDYgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ IC0JdTMyIHNwcmN0bCA9IHBsYW5lX3N0YXRlLT5jdGwsIHNwcnNjYWxlID0gMDsKPiAgCXUzMiBz cHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7Cj4gIAl1 MzIgbGluZWFyX29mZnNldDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9y a2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gQEAgLTk3OCw4ICsxMDAwLDExIEBAIGl2 Yl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCXVpbnQzMl90IHkg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAgCXVpbnQzMl90IHNyY193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAl1aW50MzJfdCBz cmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAr CXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4g IAo+ICsJc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bCB8IGl2Yl9zcHJpdGVfY3RsX2NydGMoY3J0 Y19zdGF0ZSk7Cj4gKwo+ICAJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KPiAgCXNyY193LS07Cj4g IAlzcmNfaC0tOwo+IEBAIC0xMDc0LDYgKzEwOTksMTEgQEAgZzR4X3Nwcml0ZV9tYXhfc3RyaWRl KHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAlyZXR1cm4gMTYzODQ7Cj4gIH0KPiAgCj4g K3N0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJcmV0dXJuIERWU19HQU1NQV9FTkFCTEU7Cj4gK30K PiArCj4gIHN0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+IEBAIC0xMDg0LDcgKzExMTQsNyBAQCBzdGF0aWMgdTMyIGc0 eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9z dGF0ZS0+Y2tleTsKPiAgCXUzMiBkdnNjbnRyOwo+ICAKPiAtCWR2c2NudHIgPSBEVlNfRU5BQkxF IHwgRFZTX0dBTU1BX0VOQUJMRTsKPiArCWR2c2NudHIgPSBEVlNfRU5BQkxFOwo+ICAKPiAgCWlm IChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ICAJCWR2c2NudHIgfD0gRFZTX1RSSUNLTEVfRkVFRF9E SVNBQkxFOwo+IEBAIC0xMTQwLDcgKzExNzAsNiBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxh bmUtPnBpcGU7Cj4gLQl1MzIgZHZzY250ciA9IHBsYW5lX3N0YXRlLT5jdGwsIGR2c3NjYWxlID0g MDsKPiAgCXUzMiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5v ZmZzZXQ7Cj4gIAl1MzIgbGluZWFyX29mZnNldDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxf c3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gQEAgLTExNTIsOCAr MTE4MSwxMSBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g IAl1aW50MzJfdCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gIAl1aW50MzJf dCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YykgPj4gMTY7Cj4gKwl1MzIgZHZzY250ciwgZHZzc2NhbGUgPSAwOwo+ICAJdW5zaWduZWQgbG9u ZyBpcnFmbGFnczsKPiAgCj4gKwlkdnNjbnRyID0gcGxhbmVfc3RhdGUtPmN0bCB8IGc0eF9zcHJp dGVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gKwo+ICAJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8K PiAgCXNyY193LS07Cj4gIAlzcmNfaC0tOwo+IC0tIAo+IDIuMTkuMgo+IAoKLS0gCk1hdHQgUm9w ZXIKR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERl dmVsb3BtZW50CkludGVsIENvcnBvcmF0aW9uCig5MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=