From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/14] drm/i915: skylake primary plane scaling using shared scalers Date: Thu, 16 Apr 2015 09:36:20 +0200 Message-ID: <20150416073620.GD6092@phenom.ffwll.local> References: <1428445727-18103-14-git-send-email-chandra.konduru@intel.com> <1429136078-15666-1-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTP id C363A6E974 for ; Thu, 16 Apr 2015 00:34:21 -0700 (PDT) Received: by widdi4 with SMTP id di4so86803899wid.0 for ; Thu, 16 Apr 2015 00:34:20 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1429136078-15666-1-git-send-email-chandra.konduru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chandra Konduru Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, ander.conselvan.de.oliveira@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMTUsIDIwMTUgYXQgMDM6MTQ6MzhQTSAtMDcwMCwgQ2hhbmRyYSBLb25kdXJ1 IHdyb3RlOgo+IFRoaXMgcGF0Y2ggZW5hYmxlcyBza3lsYWtlIHByaW1hcnkgcGxhbmUgc2NhbGlu ZyB1c2luZyBzaGFyZWQKPiBzY2FsZXJzIGF0b21pYyBkZXNnaW4uCj4gCj4gdjI6Cj4gLXVzZSBz aW5nbGUgY29weSBvZiBzY2FsZXIgbGltaXRzIChNYXR0KQo+IAo+IHYzOgo+IC1tb3ZlIGRldGFj aF9zY2FsZXJzIHRvIGNydGMgY29tbWl0IHBhdGggKE1hdHQpCj4gLXVzZSB2YWx1ZXMgaW4gcGxh bmVfc3RhdGUtPnNyYyBhcyByZWd1bGFyIGludGVnZXJzIChtZSkKPiAKPiB2NDoKPiAtY2hhbmdl cyB0byBhbGlnbiB3aXRoIHVwZGF0ZWQgc2NhbGVyIHN0cnVjdHVyZXMgKE1hdHQsIG1lKQo+IC1r ZWVwIHBsYW5lIHNyYyByZWN0IGluIDE2LjE2IGZvcm1hdCAoTWF0dCwgRGFuaWVsKQo+IAo+IHY1 Ogo+IC1SZWJhc2VkIG9uIHRvcCBvZiA5MC8yNzAgcm90YXRpb24gY2hhbmdlcyAobWUpCj4gLUZp eGVkIGFuIGlzc3VlIGludHJvZHVjZWQgYnkgOTAvMjcwIGNoYW5nZXMgd2hlcmUgcGxhbmUgcHJv Z3JhbW1pbmcKPiAgaXMgdXNpbmcgZHJtX3BsYW5lLT5zdGF0ZSByZWN0IGluc3RlYWQgb2YgaW50 ZWxfcGxhbmUtPnN0YXRlIHJlY3QuCj4gIFRoaXMgY2hhbmdlIGFsc28gcmVxdWlyZWQgZm9yIHNj YWxpbmcgdG8gd29yayBwcm9wZXJseS4gKG1lKQo+IC1XaXRoIDkwLzI3MCwgdXBkYXRlZCBsaW1p dHMgdG8gY292ZXIgYm90aCBwb3J0cmFpdCBhbmQgbGFuZHNjYXBlIHVzYWdlcyAobWUpCj4gLVJl ZmFjdG9yZWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZSB0byByZWR1Y2UgaXRzIHNpemUg KERhbmllbCkKPiAgQWRkZWQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgcmVmYWN0b3JpbmcgYXJlIGNv bXByZWhlbmRlZCBlbm91Z2ggdG8gYmUKPiAgdXNlZCBmb3Igc2t5bGFrZV91cGRhdGVfcGxhbmUg KGZvciBzcHJpdGUpIHRvby4gT25lIHN0b3AgdG93YXJkcwo+ICBoYXZpbmcgc2luZ2xlIGZ1bmN0 aW9uIGZvciBhbGwgcGxhbmVzLgoKUGxlYXNlIHNwbGl0IG91dCB0aGUgcmVmYWN0b3JpbmcgaW50 byBhIHByZXAgcGF0Y2ggc2luY2UgaXQncyByZWFsbHkgaGFyZAp0byByZXZpZXcgZm9yIGZ1bmN0 aW9uYWwgY2hhbmdlcyB3aGVuIHRoZSBjb2RlIG1vdmVzIGFyb3VuZC4gQnV0IHdoZW4KdGhhdCdz IHNwbGl0IGludG8gYSBwdXJlIGNvZGUtbW90aW9uIHBhdGNoICh3aGljaCBzaG91bGRuJ3QgaGF2 ZSBhbnkKZnVuY3Rpb25hbCBjaGFuZ2VzKSBhbmQgYSBzdWJzZXF1ZW50IHBhdGNoIHRvIGFjdHVh bGx5IGNoYW5nZSB0aGUgbG9naWMKdGhlbiBldmVyeXRoaW5nJ3MgYSBsb3QgY2xlYXJlci4gTXkg QktNIGZvciBzcGxpdHRpbmcgb3V0IHByZXAgcGF0Y2hlcyBpczoKCjEuIENyZWF0ZSBhIG5ldyBi cmFuY2ggYmFzZWQgb24gZHJtLWludGVsLW5pZ2h0bHkuCjIuIEV4dHJhY3QgdGhlIGZpcnN0IHJl ZmFjdG9yIHN0ZXA6IFlvdSBjYW4gZWl0aGVyIGNoZXJyeS1waWNrIHBhcnRzIG9mCnRoZSBwYXRj aCBvciBjcmVhdGUgaXQgYW5ldy4gRG9uJ3QgYm90aGVyIHRoaW5raW5nIGFib3V0IGNvbmZsaWN0 cy4gVGVzdAp0aGlzIHBhdGNoIHRvIG1ha2Ugc3VyZSB5b3UgZG9uJ3QgaW50cm9kdWNlIGEgYmlz ZWN0IGlzc3VlLgozLiBDb21taXQgYSByZXZlcnQgb2YgeW91ciByZWZhY3RvciBwYXRjaC4KNC4g Q2hlcnJ5LXBpY2sgdGhlIG9yaWdpbmFsIHBhdGNoLCBpdCBzaG91bGQgYXBwbHkgY2xlYW5seSBi ZWNhdXNlIHRoZQpiYXNlbGluZSBpcyB1bmNoYW5nZWQgZHVlIHRvIHRoZSByZXZlcnQuCjUuIFlv dSBub3cgaGF2ZSAzIHBhdGNoZXMgaW4geW91ciBicmFuY2gKCS0gcmVmYWN0b3IgcGF0Y2gKCS0g UmV2ZXJ0ICJyZWZhY3RvciBwYXRjaCIKCS0gcmVhbCBwYXRjaCB5b3Ugd2FudCB0byBzcGxpdCB1 cApOb3cgZG8gYSByZWJhc2UgYW5kIHNxdWFzaCB0b2dldGhlciB0aGUgUmV2ZXJ0IGFuZCB0aGUg cmVhbCBwYXRjaC4KLT4gRmlyc3Qgc3RlcCBpcyBjbGVhbmx5IHNwbGl0IG91dCB3aXRob3V0IGV2 ZXIgaGF2aW5nIHRvIGRlYWwgd2l0aApjb25mbGljdHMgb3Igcmlza2luZyBiaXNlY3RhYmlsaXR5 IGlzc3Vlcy4gWW91ciBicmFuY2ggaGFzIG5vdyAyIHBhdGNoZXM6CgktIHJlZmFjdG9yIHBhdGNo CgktIHJlYWwgcGF0Y2ggd2l0aCByZWZhY3RvciBwYXJ0cyB0YWtlbiBvdXQKClJlcGVhdCB1bnRp bCB5b3UndmUgc3BsaXQgdXAgdGhlIHBhdGNoIGludG8gYWxsIHRoZSBkaWZmZXJlbnQgcGFydHMu CgpDaGVlcnMsIERhbmllbAo+IAo+IFNpZ25lZC1vZmYtYnk6IENoYW5kcmEgS29uZHVydSA8Y2hh bmRyYS5rb25kdXJ1QGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhl dy5kLnJvcGVyQGludGVsLmNvbT4KPiBUZXN0Y2FzZToga21zX3BsYW5lX3NjYWxpbmcKPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICAgNSArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMjYxICsrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg IHwgICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgICA5 ICsrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gaW5kZXggM2M0YjdjZC4uY2I2 ZDVmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gQEAgLTE2OSw3ICsx NjksNyBAQCBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJCXBsYW5lLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ICAJfQo+ICAKPiAtCS8qIHN3YXAgY3J0 Y19zdGF0ZSAqLwo+ICsJLyogc3dhcCBjcnRjX3NjYWxlcl9zdGF0ZSAqLwo+ICAJZm9yIChpID0g MDsgaSA8IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7IGkrKykgewo+ICAJCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKPiAgCQlpZiAoIWNydGMpIHsKPiBAQCAtMTc4 LDYgKzE3OCw5IEBAIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAo+ICAJCXRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+c2NhbGVyX3N0YXRlID0K PiAgCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV0pLT5zY2FsZXJf c3RhdGU7Cj4gKwo+ICsJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCQlza2xf ZGV0YWNoX3NjYWxlcnModG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gIAl9Cj4gIAo+ICAJZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIHN0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNWY3YTQwZi4uN2YzYWU4ZSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjk2MCwxMjYgKzI5NjAsMTk5IEBAIHZvaWQg c2tsX2RldGFjaF9zY2FsZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICAJfQo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4g LQkJCQkJIGludCB4LCBpbnQgeSkKPiArdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90 IHBpeGVsX2Zvcm1hdCkKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+IC0JaW50IHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwo+IC0JdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ IC0JdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4gLQl1bnNpZ25l ZCBpbnQgcm90YXRpb247Cj4gLQlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0Owo+IC0JdW5zaWduZWQg bG9uZyBzdXJmX2FkZHI7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAtCj4gLQlpZiAo IWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCkgewo+IC0JCUk5MTVfV1JJVEUoUExBTkVfQ1RM KHBpcGUsIDApLCAwKTsKPiAtCQlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIDApOwo+ IC0JCVBPU1RJTkdfUkVBRChQTEFORV9DVEwocGlwZSwgMCkpOwo+IC0JCXJldHVybjsKPiAtCX0K PiAtCj4gLQlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiAtCQkgICAgUExBTkVfQ1RM X1BJUEVfR0FNTUFfRU5BQkxFIHwKPiAtCQkgICAgUExBTkVfQ1RMX1BJUEVfQ1NDX0VOQUJMRTsK PiAtCj4gLQlzd2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKPiArCXUzMiBwbGFuZV9jdGxfZm9y bWF0ID0gMDsKPiArCXN3aXRjaCAocGl4ZWxfZm9ybWF0KSB7Cj4gIAljYXNlIERSTV9GT1JNQVRf UkdCNTY1Ogo+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfRk9STUFUX1JHQl81NjU7Cj4gLQkJ YnJlYWs7Cj4gLQljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gLQkJcGxhbmVfY3RsIHw9IFBM QU5FX0NUTF9GT1JNQVRfWFJHQl84ODg4Owo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fRk9STUFU X0FSR0I4ODg4Ogo+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfRk9STUFUX1hSR0JfODg4ODsK PiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX0FMUEhBX1NXX1BSRU1VTFRJUExZOwo+ICsJCXBs YW5lX2N0bF9mb3JtYXQgPSBQTEFORV9DVExfRk9STUFUX1JHQl81NjU7Cj4gIAkJYnJlYWs7Cj4g IAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9P UkRFUl9SR0JYOwo+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfRk9STUFUX1hSR0JfODg4ODsK PiArCQlwbGFuZV9jdGxfZm9ybWF0ID0gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzg4ODggfCBQTEFO RV9DVExfT1JERVJfUkdCWDsKPiAgCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4 ODoKPiArCQlwbGFuZV9jdGxfZm9ybWF0ID0gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzg4ODg7Cj4g KwkJYnJlYWs7Cj4gKwkvKgo+ICsJICogWFhYOiBGb3IgQVJCRy9BQkdSIGZvcm1hdHMgd2UgZGVm YXVsdCB0byBleHBlY3Rpbmcgc2Nhbm91dCBidWZmZXJzCj4gKwkgKiB0byBiZSBhbHJlYWR5IHBy ZS1tdWx0aXBsaWVkLiBXZSBuZWVkIHRvIGFkZCBhIGtub2IgKG9yIGEgZGlmZmVyZW50Cj4gKwkg KiBEUk1fRk9STUFUKSBmb3IgdXNlci1zcGFjZSB0byBjb25maWd1cmUgdGhhdC4KPiArCSAqLwo+ ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+IC0JCXBsYW5lX2N0bCB8PSBQTEFORV9DVExf T1JERVJfUkdCWDsKPiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzg4ODg7 Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPiArCQlw bGFuZV9jdGxfZm9ybWF0ID0gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzg4ODggfCBQTEFORV9DVExf T1JERVJfUkdCWCB8Cj4gKwkJCVBMQU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPiArCQli cmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiArCQlwbGFuZV9jdGxfZm9ybWF0 ID0gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzg4ODggfAo+ICsJCQlQTEFORV9DVExfQUxQSEFfU1df UFJFTVVMVElQTFk7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6 Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8yMTAxMDEwOwo+ICsJCXBs YW5lX2N0bF9mb3JtYXQgPSBQTEFORV9DVExfRk9STUFUX1hSR0JfMjEwMTAxMDsKPiAgCQlicmVh azsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiAtCQlwbGFuZV9jdGwgfD0gUExB TkVfQ1RMX09SREVSX1JHQlg7Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9GT1JNQVRfWFJH Ql8yMTAxMDEwOwo+ICsJCXBsYW5lX2N0bF9mb3JtYXQgPSBQTEFORV9DVExfT1JERVJfUkdCWCB8 IFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8yMTAxMDEwOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1f Rk9STUFUX1lVWVY6Cj4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWVVW NDIyIHwgUExBTkVfQ1RMX1lVVjQyMl9ZVVlWOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9S TUFUX1lWWVU6Cj4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIy IHwgUExBTkVfQ1RMX1lVVjQyMl9ZVllVOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFU X1VZVlk6Cj4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwg UExBTkVfQ1RMX1lVVjQyMl9VWVZZOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1ZZ VVk6Cj4gKwkJcGxhbmVfY3RsX2Zvcm1hdCA9IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwgUExB TkVfQ1RMX1lVVjQyMl9WWVVZOwo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlCVUcoKTsK PiAgCX0KPiArCXJldHVybiBwbGFuZV9jdGxfZm9ybWF0Owo+ICt9Cj4gIAo+IC0Jc3dpdGNoIChm Yi0+bW9kaWZpZXJbMF0pIHsKPiArdTMyIHNrbF9wbGFuZV9jdGxfdGlsaW5nKHVpbnQ2NF90IGZi X21vZGlmaWVyKQo+ICt7Cj4gKwl1MzIgcGxhbmVfY3RsX3RpbGluZyA9IDA7Cj4gKwlzd2l0Y2gg KGZiX21vZGlmaWVyKSB7Cj4gIAljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6Cj4gIAkJYnJlYWs7 Cj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+IC0JCXBsYW5lX2N0bCB8PSBQTEFO RV9DVExfVElMRURfWDsKPiArCQlwbGFuZV9jdGxfdGlsaW5nID0gUExBTkVfQ1RMX1RJTEVEX1g7 Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+IC0JCXBsYW5l X2N0bCB8PSBQTEFORV9DVExfVElMRURfWTsKPiArCQlwbGFuZV9jdGxfdGlsaW5nID0gUExBTkVf Q1RMX1RJTEVEX1k7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RDoKPiAtCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1lGOwo+ICsJCXBsYW5lX2N0bF90 aWxpbmcgPSBQTEFORV9DVExfVElMRURfWUY7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0J CU1JU1NJTkdfQ0FTRShmYi0+bW9kaWZpZXJbMF0pOwo+ICsJCU1JU1NJTkdfQ0FTRShmYl9tb2Rp Zmllcik7Cj4gIAl9Cj4gKwlyZXR1cm4gcGxhbmVfY3RsX3RpbGluZzsKPiArfQo+ICAKPiAtCXBs YW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKPiAtCj4gLQlwbGFuZSA9 IGNydGMtPnByaW1hcnk7Cj4gLQlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4g K3UzMiBza2xfcGxhbmVfY3RsX3JvdGF0aW9uKHVuc2lnbmVkIGludCByb3RhdGlvbikKPiArewo+ ICsJdTMyIHBsYW5lX2N0bF9yb3RhdGlvbiA9IDA7Cj4gIAlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4g KwljYXNlIEJJVChEUk1fUk9UQVRFXzApOgo+ICsJCWJyZWFrOwo+ICAJY2FzZSBCSVQoRFJNX1JP VEFURV85MCk6Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfOTA7Cj4gKwkJcGxh bmVfY3RsX3JvdGF0aW9uID0gUExBTkVfQ1RMX1JPVEFURV85MDsKPiAgCQlicmVhazsKPiAtCj4g IAljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gLQkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9S T1RBVEVfMTgwOwo+ICsJCXBsYW5lX2N0bF9yb3RhdGlvbiA9IFBMQU5FX0NUTF9ST1RBVEVfMTgw Owo+ICAJCWJyZWFrOwo+IC0KPiAgCWNhc2UgQklUKERSTV9ST1RBVEVfMjcwKToKPiAtCQlwbGFu ZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8yNzA7Cj4gKwkJcGxhbmVfY3RsX3JvdGF0aW9uID0g UExBTkVfQ1RMX1JPVEFURV8yNzA7Cj4gIAkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJ TkdfQ0FTRShyb3RhdGlvbik7Cj4gIAl9Cj4gIAo+ICsJcmV0dXJuIHBsYW5lX2N0bF9yb3RhdGlv bjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkJIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LAo+ICsJCQkJCSBpbnQgeCwgaW50IHkpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCWlu dCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYs IHN0cmlkZTsKPiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9zaXplOwo+ ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsKPiAr CXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGludGVsX2NydGMtPmNvbmZp ZzsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gKwlpbnQgc3Jj X3ggPSAwLCBzcmNfeSA9IDAsIHNyY193ID0gMCwgc3JjX2ggPSAwOwo+ICsJaW50IGRzdF94ID0g MCwgZHN0X3kgPSAwLCBkc3RfdyA9IDAsIGRzdF9oID0gMDsKPiArCWludCBzY2FsZXJfaWQgPSAt MTsKPiArCj4gKwlwbGFuZSA9IGNydGMtPnByaW1hcnk7Cj4gKwlwbGFuZV9zdGF0ZSA9IHBsYW5l ID8gdG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+cHJpbWFyeS0+c3RhdGUpIDogTlVMTDsKPiAr Cj4gKwlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCkgewo+ICsJCUk5MTVfV1JJVEUo UExBTkVfQ1RMKHBpcGUsIDApLCAwKTsKPiArCQlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwg MCksIDApOwo+ICsJCVBPU1RJTkdfUkVBRChQTEFORV9DVEwocGlwZSwgMCkpOwo+ICsJCXJldHVy bjsKPiArCX0KPiArCj4gKwlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiArCQkgICAg UExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiArCQkgICAgUExBTkVfQ1RMX1BJUEVfQ1ND X0VOQUJMRTsKPiArCj4gKwlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9mb3JtYXQoZmItPnBp eGVsX2Zvcm1hdCk7Cj4gKwlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF90aWxpbmcoZmItPm1v ZGlmaWVyWzBdKTsKPiArCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJM RTsKPiArCj4gKwlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4gKwlwbGFuZV9j dGwgfD0gc2tsX3BsYW5lX2N0bF9yb3RhdGlvbihyb3RhdGlvbik7Cj4gKwo+ICAJb2JqID0gaW50 ZWxfZmJfb2JqKGZiKTsKPiAgCXN0cmlkZV9kaXYgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50 KGRldiwgZmItPm1vZGlmaWVyWzBdLAo+ICAJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsK PiAgCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUocGxh bmUpLCBvYmopOwo+ICAKPiArCWlmIChwbGFuZV9zdGF0ZSAmJiBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnNyYykpIHsKPiArCQlzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lk Owo+ICsJCXNyY194ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAxNjsKPiArCQlzcmNfeSA9IHBs YW5lX3N0YXRlLT5zcmMueTEgPj4gMTY7Cj4gKwkJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwkJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5zcmMpID4+IDE2Owo+ICsJCWRzdF94ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKPiAr CQlkc3RfeSA9IHBsYW5lX3N0YXRlLT5kc3QueTE7Cj4gKwkJZHN0X3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmRzdCk7Cj4gKwkJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5kc3QpOwo+ICsKPiArCQlXQVJOX09OKHggIT0gc3JjX3ggfHwgeSAhPSBzcmNfeSk7 Cj4gKwl9IGVsc2Ugewo+ICsJCXNyY193ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193 Owo+ICsJCXNyY19oID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oOwo+ICsJfQo+ICsK PiAgCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7Cj4gIAkJLyogc3Ry aWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPiAgCQl0aWxlX2hlaWdodCA9IGludGVs X3RpbGVfaGVpZ2h0KGRldiwgZmItPmJpdHNfcGVyX3BpeGVsLAo+ICAJCQkJCQlmYi0+bW9kaWZp ZXJbMF0pOwo+ICAJCXN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdo dCk7Cj4gLQkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAtIHkgLSAocGxhbmUtPnN0 YXRlLT5zcmNfaCA+PiAxNik7Cj4gKwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAt IHkgLSBzcmNfaDsKPiAgCQl5X29mZnNldCA9IHg7Cj4gLQkJcGxhbmVfc2l6ZSA9ICgocGxhbmUt PnN0YXRlLT5zcmNfdyA+PiAxNikgLSAxKSA8PCAxNiB8Cj4gLQkJCQkJKChwbGFuZS0+c3RhdGUt PnNyY19oID4+IDE2KSAtIDEpOwo+ICsJCXBsYW5lX3NpemUgPSAoc3JjX3cgLSAxKSA8PCAxNiB8 IChzcmNfaCAtIDEpOwo+ICAJfSBlbHNlIHsKPiAgCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSAv IHN0cmlkZV9kaXY7Cj4gIAkJeF9vZmZzZXQgPSB4Owo+ICAJCXlfb2Zmc2V0ID0geTsKPiAtCQlw bGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUtPnNyY19oID4+IDE2KSAtIDEpIDw8IDE2IHwKPiAt CQkJKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpOwo+ICsJCXBsYW5lX3NpemUgPSAo c3JjX2ggLSAxKSA8PCAxNiB8IChzcmNfdyAtIDEpOwo+ICAJfQo+ICAJcGxhbmVfb2Zmc2V0ID0g eV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKPiAgCj4gIAlJOTE1X1dSSVRFKFBMQU5FX0NUTChw aXBlLCAwKSwgcGxhbmVfY3RsKTsKPiAtCUk5MTVfV1JJVEUoUExBTkVfUE9TKHBpcGUsIDApLCAw KTsKPiAgCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIDApLCBwbGFuZV9vZmZzZXQpOwo+ ICAJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLCBwbGFuZV9zaXplKTsKPiAgCUk5MTVf V1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBzdHJpZGUpOwo+ICsKPiArCWlmIChzY2FsZXJf aWQgPj0gMCkgewo+ICsJCXVpbnQzMl90IHBzX2N0cmwgPSAwOwo+ICsKPiArCQlXQVJOX09OKCFk c3RfdyB8fCAhZHN0X2gpOwo+ICsJCXBzX2N0cmwgPSBQU19TQ0FMRVJfRU4gfCBQU19QTEFORV9T RUwoMCkgfAo+ICsJCQljcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRd Lm1vZGU7Cj4gKwkJSTkxNV9XUklURShTS0xfUFNfQ1RSTChwaXBlLCBzY2FsZXJfaWQpLCBwc19j dHJsKTsKPiArCQlJOTE1X1dSSVRFKFNLTF9QU19QV1JfR0FURShwaXBlLCBzY2FsZXJfaWQpLCAw KTsKPiArCQlJOTE1X1dSSVRFKFNLTF9QU19XSU5fUE9TKHBpcGUsIHNjYWxlcl9pZCksIChkc3Rf eCA8PCAxNikgfCBkc3RfeSk7Cj4gKwkJSTkxNV9XUklURShTS0xfUFNfV0lOX1NaKHBpcGUsIHNj YWxlcl9pZCksIChkc3RfdyA8PCAxNikgfCBkc3RfaCk7Cj4gKwkJSTkxNV9XUklURShQTEFORV9Q T1MocGlwZSwgMCksIDApOwo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKFBMQU5FX1BPUyhw aXBlLCAwKSwgKGRzdF95IDw8IDE2KSB8IGRzdF94KTsKPiArCX0KPiArCj4gIAlJOTE1X1dSSVRF KFBMQU5FX1NVUkYocGlwZSwgMCksIHN1cmZfYWRkcik7Cj4gIAo+ICAJUE9TVElOR19SRUFEKFBM QU5FX1NVUkYocGlwZSwgMCkpOwo+IEBAIC00MzM4LDYgKzQ0MTEsNyBAQCBza2xfdXBkYXRlX3Nj YWxlcl91c2VycygKPiAgCWludCAqc2NhbGVyX2lkOwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZTsK PiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAgCj4gIAlpZiAoIWludGVsX2NydGMgfHwgIWNy dGNfc3RhdGUpCj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTQzNTMsNiArNDQyNyw3IEBAIHNrbF91cGRh dGVfc2NhbGVyX3VzZXJzKAo+ICAJCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5kc3QpOwo+ICAJCWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ZHN0KTsK PiAgCQlzY2FsZXJfaWQgPSAmcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKPiArCQlyb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICAJfSBlbHNlIHsKPiAgCQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJCSZjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gQEAgLTQzNjEsOCArNDQzNiwxMiBAQCBza2xfdXBkYXRlX3NjYWxlcl91 c2VycygKPiAgCQlkc3RfdyA9IGFkanVzdGVkX21vZGUtPmhkaXNwbGF5Owo+ICAJCWRzdF9oID0g YWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXk7Cj4gIAkJc2NhbGVyX2lkID0gJnNjYWxlcl9zdGF0ZS0+ c2NhbGVyX2lkOwo+ICsJCXJvdGF0aW9uID0gRFJNX1JPVEFURV8wOwo+ICAJfQo+IC0JbmVlZF9z Y2FsaW5nID0gKHNyY193ICE9IGRzdF93IHx8IHNyY19oICE9IGRzdF9oKTsKPiArCj4gKwluZWVk X3NjYWxpbmcgPSBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pID8KPiArCQkoc3Jj X2ggIT0gZHN0X3cgfHwgc3JjX3cgIT0gZHN0X2gpOgo+ICsJCShzcmNfdyAhPSBkc3RfdyB8fCBz cmNfaCAhPSBkc3RfaCk7Cj4gIAo+ICAJLyoKPiAgCSAqIGlmIHBsYW5lIGlzIGJlaW5nIGRpc2Fi bGVkIG9yIHNjYWxlciBpcyBubyBtb3JlIHJlcXVpcmVkIG9yIGZvcmNlIGRldGFjaAo+IEBAIC0x MjgwNSw2ICsxMjg4NCwzNiBAQCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAJfQo+ICB9Cj4gIAo+ICtpbnQKPiArc2tsX21heF9zY2FsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gK3sKPiArCWludCBtYXhfc2NhbGU7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICsJaW50IGNydGNfY2xvY2ss IGNkY2xrOwo+ICsKPiArCWlmICghaW50ZWxfY3J0YyB8fCAhY3J0Y19zdGF0ZSkKPiArCQlyZXR1 cm4gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ICsKPiArCWRldiA9IGludGVsX2NydGMt PmJhc2UuZGV2Owo+ICsJZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJY3J0Y19jbG9j ayA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJY2RjbGsg PSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZChkZXYpOwo+ICsKPiAr CWlmICghY3J0Y19jbG9jayB8fCAhY2RjbGspCj4gKwkJcmV0dXJuIERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORzsKPiArCj4gKwkvKgo+ICsJICogc2tsIG1heCBzY2FsZSBpcyBsb3dlciBvZjoK PiArCSAqICAgIGNsb3NlIHRvIDMgYnV0IG5vdCAzLCAtMSBpcyBmb3IgdGhhdCBwdXJwb3NlCj4g KwkgKiAgICAgICAgICAgIG9yCj4gKwkgKiAgICBjZGNsay9jcnRjX2Nsb2NrCj4gKwkgKi8KPiAr CW1heF9zY2FsZSA9IG1pbigoMSA8PCAxNikgKiAzIC0gMSwgKDEgPDwgOCkgKiAoKGNkY2xrIDw8 IDgpIC8gY3J0Y19jbG9jaykpOwo+ICsKPiArCXJldHVybiBtYXhfc2NhbGU7Cj4gK30KPiArCj4g IHN0YXRpYyBpbnQKPiAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+IEBAIC0x MjgxMywyMyArMTI5MjIsMzEgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5j cnRjOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g c3RhdGUtPmJhc2UuZmI7Cj4gIAlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsK PiAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7Cj4gIAljb25zdCBzdHJ1Y3Qg ZHJtX3JlY3QgKmNsaXAgPSAmc3RhdGUtPmNsaXA7Cj4gIAlib29sIGNhbl9wb3NpdGlvbiA9IGZh bHNlOwo+ICsJaW50IG1heF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiAr CWludCBtaW5fc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4gIAlpbnQgcmV0 Owo+ICAKPiAgCWNydGMgPSBjcnRjID8gY3J0YyA6IHBsYW5lLT5jcnRjOwo+ICAJaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwljcnRjX3N0YXRlID0gc3RhdGUtPmJhc2Uuc3Rh dGUgPwo+ICsJCWludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZS0+YmFzZS5zdGF0ZSwg aW50ZWxfY3J0YykgOiBOVUxMOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5 KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCQltaW5fc2NhbGUgPSAx Owo+ICsJCW1heF9zY2FsZSA9IHNrbF9tYXhfc2NhbGUoaW50ZWxfY3J0YywgY3J0Y19zdGF0ZSk7 Cj4gIAkJY2FuX3Bvc2l0aW9uID0gdHJ1ZTsKPiArCX0KPiAgCj4gIAlyZXQgPSBkcm1fcGxhbmVf aGVscGVyX2NoZWNrX3VwZGF0ZShwbGFuZSwgY3J0YywgZmIsCj4gIAkJCQkJICAgIHNyYywgZGVz dCwgY2xpcCwKPiAtCQkJCQkgICAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+IC0JCQkJ CSAgICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gKwkJCQkJICAgIG1pbl9zY2FsZSwK PiArCQkJCQkgICAgbWF4X3NjYWxlLAo+ICAJCQkJCSAgICBjYW5fcG9zaXRpb24sIHRydWUsCj4g IAkJCQkJICAgICZzdGF0ZS0+dmlzaWJsZSk7Cj4gIAlpZiAocmV0KQo+IEBAIC0xMjg3NCw2ICsx Mjk5MSwxMyBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKPiAgCX0KPiAg Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJCXJldCA9IHNrbF91cGRh dGVfc2NhbGVyX3VzZXJzKGludGVsX2NydGMsIGNydGNfc3RhdGUsCj4gKwkJCXRvX2ludGVsX3Bs YW5lKHBsYW5lKSwgc3RhdGUsIDApOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4g Kwl9Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTEzMDUzLDYgKzEzMTc3LDkgQEAg c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJcHJpbWFyeS0+Y2FuX3NjYWxlID0gZmFsc2U7Cj4g IAlwcmltYXJ5LT5tYXhfZG93bnNjYWxlID0gMTsKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA5KSB7Cj4gKwkJcHJpbWFyeS0+Y2FuX3NjYWxlID0gdHJ1ZTsKPiArCX0KPiAgCXN0YXRl LT5zY2FsZXJfaWQgPSAtMTsKPiAgCXByaW1hcnktPnBpcGUgPSBwaXBlOwo+ICAJcHJpbWFyeS0+ cGxhbmUgPSBwaXBlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMjc1YTRlZi4u YzliYzk3NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI4OCwxMSArMjg4 LDExIEBAIHN0cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyB7Cj4gICNkZWZpbmUgU0tM X01JTl9TUkNfVyA4Cj4gICNkZWZpbmUgU0tMX01BWF9TUkNfVyA0MDk2Cj4gICNkZWZpbmUgU0tM X01JTl9TUkNfSCA4Cj4gLSNkZWZpbmUgU0tMX01BWF9TUkNfSCAyMzA0Cj4gKyNkZWZpbmUgU0tM X01BWF9TUkNfSCA0MDk2Cj4gICNkZWZpbmUgU0tMX01JTl9EU1RfVyA4Cj4gICNkZWZpbmUgU0tM X01BWF9EU1RfVyA0MDk2Cj4gICNkZWZpbmUgU0tMX01JTl9EU1RfSCA4Cj4gLSNkZWZpbmUgU0tM X01BWF9EU1RfSCAyMzA0Cj4gKyNkZWZpbmUgU0tMX01BWF9EU1RfSCA0MDk2Cj4gIAo+ICBzdHJ1 Y3QgaW50ZWxfc2NhbGVyIHsKPiAgCWludCBpZDsKPiBAQCAtMTEzMSw5ICsxMTMxLDEzIEBAIHZv aWQgc2tsX2RldGFjaF9zY2FsZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKTsKPiAg aW50IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIHN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUsCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLCBpbnQgZm9yY2VfZGV0YWNoKTsKPiAraW50IHNrbF9tYXhfc2NhbGUoc3RydWN0IGludGVs X2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgCj4g IHVuc2lnbmVkIGxvbmcgaW50ZWxfcGxhbmVfb2JqX29mZnNldChzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKPiArdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCk7Cj4g K3UzMiBza2xfcGxhbmVfY3RsX3RpbGluZyh1aW50NjRfdCBmYl9tb2RpZmllcik7Cj4gK3UzMiBz a2xfcGxhbmVfY3RsX3JvdGF0aW9uKHVuc2lnbmVkIGludCByb3RhdGlvbik7Cj4gIAo+ICAvKiBp bnRlbF9kcC5jICovCj4gIHZvaWQgaW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgb3V0cHV0X3JlZywgZW51bSBwb3J0IHBvcnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCj4gaW5kZXggMGNiMzc2Ny4uMmY0Mjc3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTExNTAsNiArMTE1MCwxNSBAQCBpbnQgaW50ZWxfc3ByaXRl X3NldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJfQo+ ICAKPiAgCWludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsKPiArCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwkJLyogcGxhbmUgc2NhbGluZyBhbmQgY29s b3JrZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSAqLwo+ICsJCWlmICh0b19pbnRlbF9wbGFuZV9z dGF0ZShwbGFuZS0+c3RhdGUpLT5zY2FsZXJfaWQgPj0gMCkgewo+ICsJCQlEUk1fRVJST1IoImNv bG9ya2V5IG5vdCBhbGxvd2VkIHdpdGggc2NhbGVyXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCWludGVsX3BsYW5lLT5ja2V5ID0gKnNldDsKPiAgCj4gIAkv Kgo+IC0tIAo+IDEuNy45LjUKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==