From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 13/14] drm/i915: skylake primary plane scaling using shared scalers Date: Fri, 1 May 2015 09:47:28 -0700 Message-ID: <20150501164728.GA6364@intel.com> References: <1428445727-18103-14-git-send-email-chandra.konduru@intel.com> <1430167719-13074-1-git-send-email-chandra.konduru@intel.com> <87zj5rnned.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 789E16E92A for ; Fri, 1 May 2015 09:47:29 -0700 (PDT) Content-Disposition: inline In-Reply-To: <87zj5rnned.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: ander.conselvan.de.oliveira@intel.com, daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMjksIDIwMTUgYXQgMDM6MTI6NThQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gTW9uLCAyNyBBcHIgMjAxNSwgQ2hhbmRyYSBLb25kdXJ1IDxjaGFuZHJhLmtvbmR1 cnVAaW50ZWwuY29tPiB3cm90ZToKPiA+IFRoaXMgcGF0Y2ggZW5hYmxlcyBza3lsYWtlIHByaW1h cnkgcGxhbmUgc2NhbGluZyB1c2luZyBzaGFyZWQKPiA+IHNjYWxlcnMgYXRvbWljIGRlc2dpbi4K PiA+Cj4gPiB2MjoKPiA+IC11c2Ugc2luZ2xlIGNvcHkgb2Ygc2NhbGVyIGxpbWl0cyAoTWF0dCkK PiA+Cj4gPiB2MzoKPiA+IC1tb3ZlIGRldGFjaF9zY2FsZXJzIHRvIGNydGMgY29tbWl0IHBhdGgg KE1hdHQpCj4gPiAtdXNlIHZhbHVlcyBpbiBwbGFuZV9zdGF0ZS0+c3JjIGFzIHJlZ3VsYXIgaW50 ZWdlcnMgKG1lKQo+ID4KPiA+IHY0Ogo+ID4gLWNoYW5nZXMgdG8gYWxpZ24gd2l0aCB1cGRhdGVk IHNjYWxlciBzdHJ1Y3R1cmVzIChNYXR0LCBtZSkKPiA+IC1rZWVwIHBsYW5lIHNyYyByZWN0IGlu IDE2LjE2IGZvcm1hdCAoTWF0dCwgRGFuaWVsKQo+ID4KPiA+IHY1Ogo+ID4gLVJlYmFzZWQgb24g dG9wIG9mIDkwLzI3MCByb3RhdGlvbiBjaGFuZ2VzIChtZSkKPiA+IC1GaXhlZCBhbiBpc3N1ZSBp bnRyb2R1Y2VkIGJ5IDkwLzI3MCBjaGFuZ2VzIHdoZXJlIHBsYW5lIHByb2dyYW1taW5nCj4gPiAg aXMgdXNpbmcgZHJtX3BsYW5lLT5zdGF0ZSByZWN0IGluc3RlYWQgb2YgaW50ZWxfcGxhbmUtPnN0 YXRlIHJlY3QuCj4gPiAgVGhpcyBjaGFuZ2UgYWxzbyByZXF1aXJlZCBmb3Igc2NhbGluZyB0byB3 b3JrIHByb3Blcmx5LiAobWUpCj4gPiAtV2l0aCA5MC8yNzAsIHVwZGF0ZWQgbGltaXRzIHRvIGNv dmVyIGJvdGggcG9ydHJhaXQgYW5kIGxhbmRzY2FwZSB1c2FnZXMgKG1lKQo+ID4gLVJlZmFjdG9y ZWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZSB0byByZWR1Y2UgaXRzIHNpemUgKERhbmll bCkKPiA+ICBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zIGZvciByZWZhY3RvcmluZyBhcmUgY29tcHJl aGVuZGVkIGVub3VnaCB0byBiZQo+ID4gIHVzZWQgZm9yIHNreWxha2VfdXBkYXRlX3BsYW5lIChm b3Igc3ByaXRlKSB0b28uIE9uZSBzdG9wIHRvd2FyZHMKPiA+ICBoYXZpbmcgc2luZ2xlIGZ1bmN0 aW9uIGZvciBhbGwgcGxhbmVzLgo+ID4KPiA+IHY2Ogo+ID4gLUFkZGVkIGZpeG1lIG5vdGUgd2hl biBjaGVja2luZyBwbGFuZV9zdGF0ZS0+c3JjIHdpZHRoIGluIHVwZGF0ZV9wbGFuZSAoRGFuaWVs KQo+ID4gLVJlbGVhc2UgbG9jayB3aGVuIGZhaWxpbmcgdG8gY29sb3JrZXkgcmVxdWVzdCB3aXRo IGFjdGl2ZSBzY2FsZXIgKERhbmllbCkKPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGFuZHJhIEtv bmR1cnUgPGNoYW5kcmEua29uZHVydUBpbnRlbC5jb20+Cj4gPiBSZXZpZXdlZC1ieTogbWF0dGhl dy5kLnJvcGVyQGludGVsLmNvbQo+IAo+IE1hdHQsIEkgbmV2ZXIgc2F3IGFuIGV4cGxpY2l0IHIt YiBmcm9tIHlvdSBmb3IgdGhpcyBwYXRjaCwgYW5kIHRoZXJlCj4gd2VyZSBhbHNvIHBsZW50eSBv ZiByZWNlbnQgY2hhbmdlcy4gRG9lcyB5b3VyIHItYiBzdGlsbCBob2xkPwoKU29ycnkgZm9yIHRo ZSBzbG93IHJlc3BvbnNlOyBJJ3ZlIGJlZW4gYXdheSBmcm9tIGVtYWlsIGZvciBhIGZldyBkYXlz LgoKWWVhaCwgSSB0aGluayBJIGdhdmUgbXkgci1iIG9uIElSQyBhIHdoaWxlIGJhY2ssIGJ1dCBz dWdnZXN0ZWQgdGhhdApTb25pa2EgYWxzbyBkbyBhIHJldmlldyBzaW5jZSB0aGUgbWVyZ2UgY29u ZmxpY3RzIHdlcmUgd2l0aCBoZXIgY29kZS4KSXQgbG9va3MgbGlrZSBzaGUncyBnaXZlbiBoZXIg ci1iIGFzIHdlbGwsIHNvIEkgdGhpbmsgdGhpcyBpcyBnb29kIHRvCmdvLgoKUmV2aWV3ZWQtYnk6 IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+CgpUaGFua3MuCgoKTWF0dAoK PiBDaGFuZHJhLCBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHBhdGNoIGhhcyBUZXN0Y2FzZTog a21zX3BsYW5lX3NjYWxpbmcKPiBidXQgdGhpcyBvbmUgZG9lc24ndC4gRG9lcyB0aGF0IHRlc3Qg bm93IGRvIHdoYXQgRGFuaWVsIHJlcXVlc3RlZCBpbgo+IFsxXT8KPiAKPiBCUiwKPiBKYW5pLgo+ IAo+IAo+IFsxXSBodHRwOi8vbWlkLmdtYW5lLm9yZy8yMDE1MDQxMzE4MTI0NS5HQzYwOTJAcGhl bm9tLmZmd2xsLmxvY2FsCj4gCj4gPiBSZXZpZXdlZC1ieTogc29uaWthLmppbmRhbEBpbnRlbC5j b20gKHY1KQo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMg IHwgICAgNSArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAy NjYgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgIDggKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyAgfCAgIDEwICsrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMTkgaW5z ZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljLmMKPiA+IGluZGV4IDNjNGI3Y2QuLmNiNmQ1ZjIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmMKPiA+IEBAIC0xNjksNyArMTY5LDcgQEAgaW50IGludGVsX2F0 b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCXBsYW5lLT5zdGF0ZS0+ c3RhdGUgPSBOVUxMOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCS8qIHN3YXAgY3J0Y19zdGF0ZSAqLwo+ ID4gKwkvKiBzd2FwIGNydGNfc2NhbGVyX3N0YXRlICovCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBk ZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOyBpKyspIHsKPiA+ICAJCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKPiA+ICAJCWlmICghY3J0Yykgewo+ID4gQEAgLTE3OCw2 ICsxNzgsOSBAQCBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gIAo+ID4gIAkJdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5zY2FsZXJfc3RhdGUg PQo+ID4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUtPmNydGNfc3RhdGVzW2ldKS0+c2Nh bGVyX3N0YXRlOwo+ID4gKwo+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4g PiArCQkJc2tsX2RldGFjaF9zY2FsZXJzKHRvX2ludGVsX2NydGMoY3J0YykpOwo+ID4gIAl9Cj4g PiAgCj4gPiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCA1ZjdhNDBmLi4yMjc5 OWZiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0y OTYwLDEyNiArMjk2MCwyMDQgQEAgdm9pZCBza2xfZGV0YWNoX3NjYWxlcnMoc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMpCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQg c2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAt CQkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiAtCQkJCQkgaW50IHgsIGludCB5 KQo+ID4gK3UzMiBza2xfcGxhbmVfY3RsX2Zvcm1hdCh1aW50MzJfdCBwaXhlbF9mb3JtYXQpCj4g PiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAt CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiAtCWludCBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiA+IC0JdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ID4g LQl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiA+IC0JdW5zaWdu ZWQgaW50IHJvdGF0aW9uOwo+ID4gLQlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0Owo+ID4gLQl1bnNp Z25lZCBsb25nIHN1cmZfYWRkcjsKPiA+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAt Cj4gPiAtCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gPiAtCQlJOTE1X1dS SVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gPiAtCQlJOTE1X1dSSVRFKFBMQU5FX1NVUkYo cGlwZSwgMCksIDApOwo+ID4gLQkJUE9TVElOR19SRUFEKFBMQU5FX0NUTChwaXBlLCAwKSk7Cj4g PiAtCQlyZXR1cm47Cj4gPiAtCX0KPiA+IC0KPiA+IC0JcGxhbmVfY3RsID0gUExBTkVfQ1RMX0VO QUJMRSB8Cj4gPiAtCQkgICAgUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiA+IC0JCSAg ICBQTEFORV9DVExfUElQRV9DU0NfRU5BQkxFOwo+ID4gLQo+ID4gLQlzd2l0Y2ggKGZiLT5waXhl bF9mb3JtYXQpIHsKPiA+ICsJdTMyIHBsYW5lX2N0bF9mb3JtYXQgPSAwOwo+ID4gKwlzd2l0Y2gg KHBpeGVsX2Zvcm1hdCkgewo+ID4gIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ID4gLQkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfUkdCXzU2NTsKPiA+IC0JCWJyZWFrOwo+ID4gLQlj YXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gPiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX0ZP Uk1BVF9YUkdCXzg4ODg7Cj4gPiAtCQlicmVhazsKPiA+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4 ODg4Ogo+ID4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl84ODg4Owo+ID4g LQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPiA+ICsJCXBs YW5lX2N0bF9mb3JtYXQgPSBQTEFORV9DVExfRk9STUFUX1JHQl81NjU7Cj4gPiAgCQlicmVhazsK PiA+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ID4gLQkJcGxhbmVfY3RsIHw9IFBMQU5F X0NUTF9PUkRFUl9SR0JYOwo+ID4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJH Ql84ODg4Owo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl84 ODg4IHwgUExBTkVfQ1RMX09SREVSX1JHQlg7Cj4gPiAgCQlicmVhazsKPiA+ICsJY2FzZSBEUk1f Rk9STUFUX1hSR0I4ODg4Ogo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JN QVRfWFJHQl84ODg4Owo+ID4gKwkJYnJlYWs7Cj4gPiArCS8qCj4gPiArCSAqIFhYWDogRm9yIEFS QkcvQUJHUiBmb3JtYXRzIHdlIGRlZmF1bHQgdG8gZXhwZWN0aW5nIHNjYW5vdXQgYnVmZmVycwo+ ID4gKwkgKiB0byBiZSBhbHJlYWR5IHByZS1tdWx0aXBsaWVkLiBXZSBuZWVkIHRvIGFkZCBhIGtu b2IgKG9yIGEgZGlmZmVyZW50Cj4gPiArCSAqIERSTV9GT1JNQVQpIGZvciB1c2VyLXNwYWNlIHRv IGNvbmZpZ3VyZSB0aGF0Lgo+ID4gKwkgKi8KPiA+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4 Ogo+ID4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9PUkRFUl9SR0JYOwo+ID4gLQkJcGxhbmVf Y3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl84ODg4Owo+ID4gLQkJcGxhbmVfY3RsIHw9IFBM QU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPiA+ICsJCXBsYW5lX2N0bF9mb3JtYXQgPSBQ TEFORV9DVExfRk9STUFUX1hSR0JfODg4OCB8IFBMQU5FX0NUTF9PUkRFUl9SR0JYIHwKPiA+ICsJ CQlQTEFORV9DVExfQUxQSEFfU1dfUFJFTVVMVElQTFk7Cj4gPiArCQlicmVhazsKPiA+ICsJY2Fz ZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NU TF9GT1JNQVRfWFJHQl84ODg4IHwKPiA+ICsJCQlQTEFORV9DVExfQUxQSEFfU1dfUFJFTVVMVElQ TFk7Cj4gPiAgCQlicmVhazsKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgo+ID4g LQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8yMTAxMDEwOwo+ID4gKwkJcGxh bmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8yMTAxMDEwOwo+ID4gIAkJYnJl YWs7Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiA+IC0JCXBsYW5lX2N0bCB8 PSBQTEFORV9DVExfT1JERVJfUkdCWDsKPiA+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfRk9S TUFUX1hSR0JfMjEwMTAxMDsKPiA+ICsJCXBsYW5lX2N0bF9mb3JtYXQgPSBQTEFORV9DVExfT1JE RVJfUkdCWCB8IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8yMTAxMDEwOwo+ID4gKwkJYnJlYWs7Cj4g PiArCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5F X0NUTF9GT1JNQVRfWVVWNDIyIHwgUExBTkVfQ1RMX1lVVjQyMl9ZVVlWOwo+ID4gKwkJYnJlYWs7 Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBM QU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwgUExBTkVfQ1RMX1lVVjQyMl9ZVllVOwo+ID4gKwkJYnJl YWs7Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9 IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwgUExBTkVfQ1RMX1lVVjQyMl9VWVZZOwo+ID4gKwkJ YnJlYWs7Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgo+ID4gKwkJcGxhbmVfY3RsX2Zvcm1h dCA9IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwgUExBTkVfQ1RMX1lVVjQyMl9WWVVZOwo+ID4g IAkJYnJlYWs7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAgCQlCVUcoKTsKPiA+ICAJfQo+ID4gKwlyZXR1 cm4gcGxhbmVfY3RsX2Zvcm1hdDsKPiA+ICt9Cj4gPiAgCj4gPiAtCXN3aXRjaCAoZmItPm1vZGlm aWVyWzBdKSB7Cj4gPiArdTMyIHNrbF9wbGFuZV9jdGxfdGlsaW5nKHVpbnQ2NF90IGZiX21vZGlm aWVyKQo+ID4gK3sKPiA+ICsJdTMyIHBsYW5lX2N0bF90aWxpbmcgPSAwOwo+ID4gKwlzd2l0Y2gg KGZiX21vZGlmaWVyKSB7Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTk9ORToKPiA+ICAJCWJy ZWFrOwo+ID4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+ID4gLQkJcGxhbmVfY3Rs IHw9IFBMQU5FX0NUTF9USUxFRF9YOwo+ID4gKwkJcGxhbmVfY3RsX3RpbGluZyA9IFBMQU5FX0NU TF9USUxFRF9YOwo+ID4gIAkJYnJlYWs7Cj4gPiAgCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ6Cj4gPiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1k7Cj4gPiArCQlwbGFuZV9j dGxfdGlsaW5nID0gUExBTkVfQ1RMX1RJTEVEX1k7Cj4gPiAgCQlicmVhazsKPiA+ICAJY2FzZSBJ OTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gPiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1RJ TEVEX1lGOwo+ID4gKwkJcGxhbmVfY3RsX3RpbGluZyA9IFBMQU5FX0NUTF9USUxFRF9ZRjsKPiA+ ICAJCWJyZWFrOwo+ID4gIAlkZWZhdWx0Ogo+ID4gLQkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmll clswXSk7Cj4gPiArCQlNSVNTSU5HX0NBU0UoZmJfbW9kaWZpZXIpOwo+ID4gIAl9Cj4gPiArCXJl dHVybiBwbGFuZV9jdGxfdGlsaW5nOwo+ID4gK30KPiA+ICAKPiA+IC0JcGxhbmVfY3RsIHw9IFBM QU5FX0NUTF9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ID4gLQo+ID4gLQlwbGFuZSA9IGNydGMtPnBy aW1hcnk7Cj4gPiAtCXJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+ICt1MzIg c2tsX3BsYW5lX2N0bF9yb3RhdGlvbih1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4gPiArewo+ID4g Kwl1MzIgcGxhbmVfY3RsX3JvdGF0aW9uID0gMDsKPiA+ICAJc3dpdGNoIChyb3RhdGlvbikgewo+ ID4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzApOgo+ID4gKwkJYnJlYWs7Cj4gPiAgCWNhc2UgQklU KERSTV9ST1RBVEVfOTApOgo+ID4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfOTA7 Cj4gPiArCQlwbGFuZV9jdGxfcm90YXRpb24gPSBQTEFORV9DVExfUk9UQVRFXzkwOwo+ID4gIAkJ YnJlYWs7Cj4gPiAtCj4gPiAgCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPiA+IC0JCXBsYW5l X2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzE4MDsKPiA+ICsJCXBsYW5lX2N0bF9yb3RhdGlvbiA9 IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+ID4gIAkJYnJlYWs7Cj4gPiAtCj4gPiAgCWNhc2UgQklU KERSTV9ST1RBVEVfMjcwKToKPiA+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzI3 MDsKPiA+ICsJCXBsYW5lX2N0bF9yb3RhdGlvbiA9IFBMQU5FX0NUTF9ST1RBVEVfMjcwOwo+ID4g IAkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0Uocm90YXRpb24pOwo+ ID4gIAl9Cj4gPiAgCj4gPiArCXJldHVybiBwbGFuZV9jdGxfcm90YXRpb247Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ID4gKwkJCQkJIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4g KwkJCQkJIGludCB4LCBpbnQgeSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK PiA+ICsJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gKwl1MzIgcGxhbmVfY3RsLCBz dHJpZGVfZGl2LCBzdHJpZGU7Cj4gPiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBw bGFuZV9zaXplOwo+ID4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb247Cj4gPiArCWludCB4X29mZnNl dCwgeV9vZmZzZXQ7Cj4gPiArCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+ID4gKwlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKPiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUgPSBpbnRlbF9jcnRjLT5jb25maWc7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGU7Cj4gPiArCWludCBzcmNfeCA9IDAsIHNyY195ID0gMCwgc3JjX3cgPSAwLCBz cmNfaCA9IDA7Cj4gPiArCWludCBkc3RfeCA9IDAsIGRzdF95ID0gMCwgZHN0X3cgPSAwLCBkc3Rf aCA9IDA7Cj4gPiArCWludCBzY2FsZXJfaWQgPSAtMTsKPiA+ICsKPiA+ICsJcGxhbmUgPSBjcnRj LT5wcmltYXJ5Owo+ID4gKwlwbGFuZV9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5l LT5zdGF0ZSk7Cj4gPiArCj4gPiArCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7 Cj4gPiArCQlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gPiArCQlJOTE1X1dS SVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIDApOwo+ID4gKwkJUE9TVElOR19SRUFEKFBMQU5FX0NU TChwaXBlLCAwKSk7Cj4gPiArCQlyZXR1cm47Cj4gPiArCX0KPiA+ICsKPiA+ICsJcGxhbmVfY3Rs ID0gUExBTkVfQ1RMX0VOQUJMRSB8Cj4gPiArCQkgICAgUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5B QkxFIHwKPiA+ICsJCSAgICBQTEFORV9DVExfUElQRV9DU0NfRU5BQkxFOwo+ID4gKwo+ID4gKwlw bGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9mb3JtYXQoZmItPnBpeGVsX2Zvcm1hdCk7Cj4gPiAr CXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0pOwo+ID4g KwlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4gPiArCj4gPiAr CXJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+ICsJcGxhbmVfY3RsIHw9IHNr bF9wbGFuZV9jdGxfcm90YXRpb24ocm90YXRpb24pOwo+ID4gKwo+ID4gIAlvYmogPSBpbnRlbF9m Yl9vYmooZmIpOwo+ID4gIAlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChk ZXYsIGZiLT5tb2RpZmllclswXSwKPiA+ICAJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsK PiA+ICAJc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFuZShw bGFuZSksIG9iaik7Cj4gPiAgCj4gPiArCS8qCj4gPiArCSAqIEZJWE1FOiBpbnRlbF9wbGFuZV9z dGF0ZS0+c3JjLCBkc3QgYXJlbid0IHNldCB3aGVuIHRyYW5zaXRpb25hbAo+ID4gKwkgKiB1cGRh dGVfcGxhbmUgaGVscGVycyBhcmUgY2FsbGVkIGZyb20gbGVnYWN5IHBhdGhzLgo+ID4gKwkgKiBP bmNlIGZ1bGwgYXRvbWljIGNydGMgaXMgYXZhaWxhYmxlLCBiZWxvdyBjaGVjayBjYW4gYmUgYXZv aWRlZC4KPiA+ICsJICovCj4gPiArCWlmIChkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNy YykpIHsKPiA+ICsJCXNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7Cj4gPiArCQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5zcmMueDEgPj4gMTY7Cj4gPiArCQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5zcmMueTEgPj4gMTY7Cj4gPiArCQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+c3JjKSA+PiAxNjsKPiA+ICsJCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+c3JjKSA+PiAxNjsKPiA+ICsJCWRzdF94ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKPiA+ ICsJCWRzdF95ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKPiA+ICsJCWRzdF93ID0gZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT5kc3QpOwo+ID4gKwkJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5kc3QpOwo+ID4gKwo+ID4gKwkJV0FSTl9PTih4ICE9IHNyY194IHx8IHkg IT0gc3JjX3kpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJc3JjX3cgPSBpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfc3JjX3c7Cj4gPiArCQlzcmNfaCA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9z cmNfaDsKPiA+ICsJfQo+ID4gKwo+ID4gIAlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJv dGF0aW9uKSkgewo+ID4gIAkJLyogc3RyaWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8K PiA+ICAJCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2LCBmYi0+Yml0c19wZXJf cGl4ZWwsCj4gPiAgCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiA+ICAJCXN0cmlkZSA9IERJVl9S T1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4gPiAtCQl4X29mZnNldCA9IHN0cmlk ZSAqIHRpbGVfaGVpZ2h0IC0geSAtIChwbGFuZS0+c3RhdGUtPnNyY19oID4+IDE2KTsKPiA+ICsJ CXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5IC0gc3JjX2g7Cj4gPiAgCQl5X29m ZnNldCA9IHg7Cj4gPiAtCQlwbGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2 KSAtIDEpIDw8IDE2IHwKPiA+IC0JCQkJCSgocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikgLSAx KTsKPiA+ICsJCXBsYW5lX3NpemUgPSAoc3JjX3cgLSAxKSA8PCAxNiB8IChzcmNfaCAtIDEpOwo+ ID4gIAl9IGVsc2Ugewo+ID4gIAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2 Owo+ID4gIAkJeF9vZmZzZXQgPSB4Owo+ID4gIAkJeV9vZmZzZXQgPSB5Owo+ID4gLQkJcGxhbmVf c2l6ZSA9ICgocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikgLSAxKSA8PCAxNiB8Cj4gPiAtCQkJ KChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpOwo+ID4gKwkJcGxhbmVfc2l6ZSA9IChz cmNfaCAtIDEpIDw8IDE2IHwgKHNyY193IC0gMSk7Cj4gPiAgCX0KPiA+ICAJcGxhbmVfb2Zmc2V0 ID0geV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKPiA+ICAKPiA+ICAJSTkxNV9XUklURShQTEFO RV9DVEwocGlwZSwgMCksIHBsYW5lX2N0bCk7Cj4gPiAtCUk5MTVfV1JJVEUoUExBTkVfUE9TKHBp cGUsIDApLCAwKTsKPiA+ICAJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksIHBsYW5l X29mZnNldCk7Cj4gPiAgCUk5MTVfV1JJVEUoUExBTkVfU0laRShwaXBlLCAwKSwgcGxhbmVfc2l6 ZSk7Cj4gPiAgCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBzdHJpZGUpOwo+ID4g Kwo+ID4gKwlpZiAoc2NhbGVyX2lkID49IDApIHsKPiA+ICsJCXVpbnQzMl90IHBzX2N0cmwgPSAw Owo+ID4gKwo+ID4gKwkJV0FSTl9PTighZHN0X3cgfHwgIWRzdF9oKTsKPiA+ICsJCXBzX2N0cmwg PSBQU19TQ0FMRVJfRU4gfCBQU19QTEFORV9TRUwoMCkgfAo+ID4gKwkJCWNydGNfc3RhdGUtPnNj YWxlcl9zdGF0ZS5zY2FsZXJzW3NjYWxlcl9pZF0ubW9kZTsKPiA+ICsJCUk5MTVfV1JJVEUoU0tM X1BTX0NUUkwocGlwZSwgc2NhbGVyX2lkKSwgcHNfY3RybCk7Cj4gPiArCQlJOTE1X1dSSVRFKFNL TF9QU19QV1JfR0FURShwaXBlLCBzY2FsZXJfaWQpLCAwKTsKPiA+ICsJCUk5MTVfV1JJVEUoU0tM X1BTX1dJTl9QT1MocGlwZSwgc2NhbGVyX2lkKSwgKGRzdF94IDw8IDE2KSB8IGRzdF95KTsKPiA+ ICsJCUk5MTVfV1JJVEUoU0tMX1BTX1dJTl9TWihwaXBlLCBzY2FsZXJfaWQpLCAoZHN0X3cgPDwg MTYpIHwgZHN0X2gpOwo+ID4gKwkJSTkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIDApOwo+ ID4gKwl9IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIChkc3Rf eSA8PCAxNikgfCBkc3RfeCk7Cj4gPiArCX0KPiA+ICsKPiA+ICAJSTkxNV9XUklURShQTEFORV9T VVJGKHBpcGUsIDApLCBzdXJmX2FkZHIpOwo+ID4gIAo+ID4gIAlQT1NUSU5HX1JFQUQoUExBTkVf U1VSRihwaXBlLCAwKSk7Cj4gPiBAQCAtNDMzOCw2ICs0NDE2LDcgQEAgc2tsX3VwZGF0ZV9zY2Fs ZXJfdXNlcnMoCj4gPiAgCWludCAqc2NhbGVyX2lkOwo+ID4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYjsKPiA+ICAJc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3Rh dGU7Cj4gPiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiA+ICAKPiA+ICAJaWYgKCFpbnRlbF9j cnRjIHx8ICFjcnRjX3N0YXRlKQo+ID4gIAkJcmV0dXJuIDA7Cj4gPiBAQCAtNDM1Myw2ICs0NDMy LDcgQEAgc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoCj4gPiAgCQlkc3RfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+ZHN0KTsKPiA+ICAJCWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+ZHN0KTsKPiA+ICAJCXNjYWxlcl9pZCA9ICZwbGFuZV9zdGF0ZS0+c2NhbGVy X2lkOwo+ID4gKwkJcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiA+ICAJ fSBlbHNlIHsKPiA+ICAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0K PiA+ICAJCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gQEAgLTQzNjEsOCAr NDQ0MSwxMiBAQCBza2xfdXBkYXRlX3NjYWxlcl91c2VycygKPiA+ICAJCWRzdF93ID0gYWRqdXN0 ZWRfbW9kZS0+aGRpc3BsYXk7Cj4gPiAgCQlkc3RfaCA9IGFkanVzdGVkX21vZGUtPnZkaXNwbGF5 Owo+ID4gIAkJc2NhbGVyX2lkID0gJnNjYWxlcl9zdGF0ZS0+c2NhbGVyX2lkOwo+ID4gKwkJcm90 YXRpb24gPSBEUk1fUk9UQVRFXzA7Cj4gPiAgCX0KPiA+IC0JbmVlZF9zY2FsaW5nID0gKHNyY193 ICE9IGRzdF93IHx8IHNyY19oICE9IGRzdF9oKTsKPiA+ICsKPiA+ICsJbmVlZF9zY2FsaW5nID0g aW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSA/Cj4gPiArCQkoc3JjX2ggIT0gZHN0 X3cgfHwgc3JjX3cgIT0gZHN0X2gpOgo+ID4gKwkJKHNyY193ICE9IGRzdF93IHx8IHNyY19oICE9 IGRzdF9oKTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogaWYgcGxhbmUgaXMgYmVpbmcgZGlzYWJs ZWQgb3Igc2NhbGVyIGlzIG5vIG1vcmUgcmVxdWlyZWQgb3IgZm9yY2UgZGV0YWNoCj4gPiBAQCAt MTI4MDUsNiArMTI4ODksMzYgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+ICtpbnQKPiA+ICtza2xfbWF4X3Nj YWxlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiA+ICt7Cj4gPiArCWludCBtYXhfc2NhbGU7Cj4gPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXY7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsK PiA+ICsJaW50IGNydGNfY2xvY2ssIGNkY2xrOwo+ID4gKwo+ID4gKwlpZiAoIWludGVsX2NydGMg fHwgIWNydGNfc3RhdGUpCj4gPiArCQlyZXR1cm4gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5H Owo+ID4gKwo+ID4gKwlkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiA+ICsJZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ID4gKwljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gPiArCWNkY2xrID0gZGV2X3ByaXYtPmRpc3BsYXku Z2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQoZGV2KTsKPiA+ICsKPiA+ICsJaWYgKCFjcnRjX2Nsb2Nr IHx8ICFjZGNsaykKPiA+ICsJCXJldHVybiBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4g PiArCj4gPiArCS8qCj4gPiArCSAqIHNrbCBtYXggc2NhbGUgaXMgbG93ZXIgb2Y6Cj4gPiArCSAq ICAgIGNsb3NlIHRvIDMgYnV0IG5vdCAzLCAtMSBpcyBmb3IgdGhhdCBwdXJwb3NlCj4gPiArCSAq ICAgICAgICAgICAgb3IKPiA+ICsJICogICAgY2RjbGsvY3J0Y19jbG9jawo+ID4gKwkgKi8KPiA+ ICsJbWF4X3NjYWxlID0gbWluKCgxIDw8IDE2KSAqIDMgLSAxLCAoMSA8PCA4KSAqICgoY2RjbGsg PDwgOCkgLyBjcnRjX2Nsb2NrKSk7Cj4gPiArCj4gPiArCXJldHVybiBtYXhfc2NhbGU7Cj4gPiAr fQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQKPiA+ICBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpzdGF0ZSkKPiA+IEBAIC0xMjgxMywyMyArMTI5MjcsMzEgQEAgaW50ZWxfY2hlY2tfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGM7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gIAlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ID4gIAlzdHJ1Y3Qg ZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiA+ICAJc3RydWN0IGRybV9yZWN0ICpzcmMg PSAmc3RhdGUtPnNyYzsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRl LT5jbGlwOwo+ID4gIAlib29sIGNhbl9wb3NpdGlvbiA9IGZhbHNlOwo+ID4gKwlpbnQgbWF4X3Nj YWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ID4gKwlpbnQgbWluX3NjYWxlID0g RFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ID4gIAlpbnQgcmV0Owo+ID4gIAo+ID4gIAlj cnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiA+ICAJaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gPiArCWNydGNfc3RhdGUgPSBzdGF0ZS0+YmFzZS5zdGF0ZSA/Cj4g PiArCQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUtPmJhc2Uuc3RhdGUsIGludGVs X2NydGMpIDogTlVMTDsKPiA+ICAKPiA+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp Cj4gPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gPiArCQltaW5fc2NhbGUg PSAxOwo+ID4gKwkJbWF4X3NjYWxlID0gc2tsX21heF9zY2FsZShpbnRlbF9jcnRjLCBjcnRjX3N0 YXRlKTsKPiA+ICAJCWNhbl9wb3NpdGlvbiA9IHRydWU7Cj4gPiArCX0KPiA+ICAKPiA+ICAJcmV0 ID0gZHJtX3BsYW5lX2hlbHBlcl9jaGVja191cGRhdGUocGxhbmUsIGNydGMsIGZiLAo+ID4gIAkJ CQkJICAgIHNyYywgZGVzdCwgY2xpcCwKPiA+IC0JCQkJCSAgICBEUk1fUExBTkVfSEVMUEVSX05P X1NDQUxJTkcsCj4gPiAtCQkJCQkgICAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ID4g KwkJCQkJICAgIG1pbl9zY2FsZSwKPiA+ICsJCQkJCSAgICBtYXhfc2NhbGUsCj4gPiAgCQkJCQkg ICAgY2FuX3Bvc2l0aW9uLCB0cnVlLAo+ID4gIAkJCQkJICAgICZzdGF0ZS0+dmlzaWJsZSk7Cj4g PiAgCWlmIChyZXQpCj4gPiBAQCAtMTI4NzQsNiArMTI5OTYsMTMgQEAgaW50ZWxfY2hlY2tfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJCQlpbnRlbF9jcnRjLT5h dG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKPiA+ICAJfQo+ID4gIAo+ID4gKwlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkgewo+ID4gKwkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMo aW50ZWxfY3J0YywgY3J0Y19zdGF0ZSwKPiA+ICsJCQl0b19pbnRlbF9wbGFuZShwbGFuZSksIHN0 YXRlLCAwKTsKPiA+ICsJCWlmIChyZXQpCj4gPiArCQkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4g Kwo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtMTMwNTMsNiArMTMxODIsOSBA QCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAKPiA+ICAJcHJpbWFyeS0+Y2FuX3NjYWxlID0gZmFs c2U7Cj4gPiAgCXByaW1hcnktPm1heF9kb3duc2NhbGUgPSAxOwo+ID4gKwlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkgewo+ID4gKwkJcHJpbWFyeS0+Y2FuX3NjYWxlID0gdHJ1ZTsKPiA+ ICsJfQo+ID4gIAlzdGF0ZS0+c2NhbGVyX2lkID0gLTE7Cj4gPiAgCXByaW1hcnktPnBpcGUgPSBw aXBlOwo+ID4gIAlwcmltYXJ5LT5wbGFuZSA9IHBpcGU7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4gaW5kZXggMjc1YTRlZi4uYzliYzk3NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gQEAgLTI4OCwxMSArMjg4LDExIEBAIHN0cnVjdCBpbnRlbF9pbml0aWFs X3BsYW5lX2NvbmZpZyB7Cj4gPiAgI2RlZmluZSBTS0xfTUlOX1NSQ19XIDgKPiA+ICAjZGVmaW5l IFNLTF9NQVhfU1JDX1cgNDA5Ngo+ID4gICNkZWZpbmUgU0tMX01JTl9TUkNfSCA4Cj4gPiAtI2Rl ZmluZSBTS0xfTUFYX1NSQ19IIDIzMDQKPiA+ICsjZGVmaW5lIFNLTF9NQVhfU1JDX0ggNDA5Ngo+ ID4gICNkZWZpbmUgU0tMX01JTl9EU1RfVyA4Cj4gPiAgI2RlZmluZSBTS0xfTUFYX0RTVF9XIDQw OTYKPiA+ICAjZGVmaW5lIFNLTF9NSU5fRFNUX0ggOAo+ID4gLSNkZWZpbmUgU0tMX01BWF9EU1Rf SCAyMzA0Cj4gPiArI2RlZmluZSBTS0xfTUFYX0RTVF9IIDQwOTYKPiA+ICAKPiA+ICBzdHJ1Y3Qg aW50ZWxfc2NhbGVyIHsKPiA+ICAJaW50IGlkOwo+ID4gQEAgLTExMzEsOSArMTEzMSwxMyBAQCB2 b2lkIHNrbF9kZXRhY2hfc2NhbGVycyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yyk7Cj4g PiAgaW50IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSwKPiA+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwgaW50IGZvcmNlX2RldGFjaCk7Cj4gPiAraW50IHNrbF9tYXhfc2NhbGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KTsKPiA+ICAKPiA+ICB1bnNpZ25lZCBsb25nIGludGVsX3BsYW5lX29ial9vZmZzZXQoc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSwKPiA+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKPiA+ICt1MzIgc2tsX3BsYW5lX2N0bF9mb3JtYXQodWludDMyX3Qg cGl4ZWxfZm9ybWF0KTsKPiA+ICt1MzIgc2tsX3BsYW5lX2N0bF90aWxpbmcodWludDY0X3QgZmJf bW9kaWZpZXIpOwo+ID4gK3UzMiBza2xfcGxhbmVfY3RsX3JvdGF0aW9uKHVuc2lnbmVkIGludCBy b3RhdGlvbik7Cj4gPiAgCj4gPiAgLyogaW50ZWxfZHAuYyAqLwo+ID4gIHZvaWQgaW50ZWxfZHBf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgb3V0cHV0X3JlZywgZW51bSBwb3J0IHBv cnQpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+IGluZGV4IDBjYjM3Njcu LmM4ZTczNzcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+IEBA IC0xMTUwLDYgKzExNTAsMTYgQEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICAJfQo+ID4gIAo+ID4gIAlpbnRlbF9w bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiA+ICsKPiA+ICsJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpIHsKPiA+ICsJCS8qIHBsYW5lIHNjYWxpbmcgYW5kIGNvbG9ya2V5IGFy ZSBtdXR1YWxseSBleGNsdXNpdmUgKi8KPiA+ICsJCWlmICh0b19pbnRlbF9wbGFuZV9zdGF0ZShw bGFuZS0+c3RhdGUpLT5zY2FsZXJfaWQgPj0gMCkgewo+ID4gKwkJCURSTV9FUlJPUigiY29sb3Jr ZXkgbm90IGFsbG93ZWQgd2l0aCBzY2FsZXJcbiIpOwo+ID4gKwkJCXJldCA9IC1FSU5WQUw7Cj4g PiArCQkJZ290byBvdXRfdW5sb2NrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiAgCWludGVs X3BsYW5lLT5ja2V5ID0gKnNldDsKPiA+ICAKPiA+ICAJLyoKPiA+IC0tIAo+ID4gMS43LjkuNQo+ ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cj4gCj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xv Z3kgQ2VudGVyCgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RH IFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikg MzU2LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK