From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 1/3] drm/i915: Convert intel_tv connector properties to atomic, v2. Date: Mon, 13 Mar 2017 17:44:21 +0100 Message-ID: <55d46b06-af91-2afd-9e6b-99cb41a279fa@linux.intel.com> References: <1489064777-5460-1-git-send-email-maarten.lankhorst@linux.intel.com> <1489064777-5460-2-git-send-email-maarten.lankhorst@linux.intel.com> <20170309173602.GU31595@intel.com> <20170313092905.GZ31595@intel.com> <20170313105531.GH31595@intel.com> <55c80a55-c155-afa8-f244-20d1c4775231@linux.intel.com> <20170313162218.GK31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 016986E57A for ; Mon, 13 Mar 2017 16:44:23 +0000 (UTC) In-Reply-To: <20170313162218.GK31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTMtMDMtMTcgb20gMTc6MjIgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gTW9uLCBN YXIgMTMsIDIwMTcgYXQgMDU6MTA6MjhQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IEFzIGEgcHJvb2Ygb2YgY29uY2VwdCwgZmlyc3QgdHJ5IHRvIGNvbnZlcnQgaW50ZWxfdHYs IHdoaWNoIGlzIGEgcmFyZWx5Cj4+IHVzZWQgY29ubmVjdG9yLiBJdCBoYXMgNSBwcm9wZXJ0aWVz LCB0diBmb3JtYXQgYW5kIDQgbWFyZ2lucy4KPj4KPj4gSSdtIGxlc3MgY2VydGFpbiBhYm91dCB0 aGUgc3RhdGUgYmVoYXZpb3IgaXRzZWxmLCBzaG91bGQgd2UgcGFzcyBhIHNpemUKPj4gcGFyYW1l dGVyIHRvIGludGVsX2Nvbm5lY3Rvcl9hbGxvYyBpbnN0ZWFkLCBzbyBkdXBsaWNhdGVfc3RhdGUK Pj4gY2FuIGJlIGRvbmUgZ2xvYmFsbHkgaWYgaXQgY2FuIGJlIGJsaW5kbHkgY29waWVkPwo+Pgo+ PiBDYW4gd2UgYWxzbyBoYXZlIGEgYXRvbWljX2NoZWNrIGZ1bmN0aW9uIGZvciBjb25uZWN0b3Jz LCBzbyB0aGUKPj4gY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkIGNhbiBiZSBzZXQgdGhl cmU/IEl0IHdvdWxkIGJlIGNsZWFuZXIKPj4gYW5kIG1vcmUgYXRvbWljLWxpa2UuCj4+Cj4+IFRv IG1hdGNoIHRoZSBsZWdhY3kgYmVoYXZpb3IsIGZvcm1hdCBjYW4gYmUgY2hhbmdlZCBieSBwcm9i aW5nIGp1c3QgbGlrZQo+PiBpbiBsZWdhY3kgbW9kZS4KPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MToK Pj4gLSBBZGQgaW50ZWxfZW5jb2Rlci0+c3dhcF9zdGF0ZSB0byBhbGxvdyB1cGRhdGluZyBjb25u ZWN0b3Igc3RhdGUuCj4+IC0gQWRkIGludGVsX3R2LT5mb3JtYXQgZm9yIGRldGVjdF9tb2RlIGFu ZCBtb2RlX3ZhbGlkLCB1cGRhdGVkIG9uIGF0b21pYyBjb21taXQuCj4+Cj4+IFNpZ25lZC1vZmYt Ynk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE1ICsr Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDQgKwo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyAgICAgIHwgMjU5ICsrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCsp LCAxMDIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK Pj4gaW5kZXggYWMyNWM5YmM4YjgxLi4xOGI3ZTc1NDZlZTEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAgLTEyOTU0LDYgKzEyOTU0LDIwIEBAIHN0YXRpYyB2 b2lkIGludGVsX2F0b21pY190cmFja19mYnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+PiAgCQkJCSAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9iaXQpOwo+PiAg fQo+PiAgCj4+ICtzdGF0aWMgdm9pZCBzd2FwX2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7Cj4+ ICsJaW50IGk7Cj4+ICsKPj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRl LCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7Cj4+ICsJCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm4gPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPj4gKwo+PiArCQlp ZiAoY29ubi0+c3dhcF9zdGF0ZSkKPj4gKwkJCWNvbm4tPnN3YXBfc3RhdGUoY29ubiwgbmV3X2Nv bm5fc3RhdGUpOwo+PiArCX0KPj4gK30KPj4gKwo+PiAgLyoqCj4+ICAgKiBpbnRlbF9hdG9taWNf Y29tbWl0IC0gY29tbWl0IHZhbGlkYXRlZCBzdGF0ZSBvYmplY3QKPj4gICAqIEBkZXY6IERSTSBk ZXZpY2UKPj4gQEAgLTEzMDEyLDYgKzEzMDI2LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJCWRldl9wcml2LT5jZGNsay5sb2dp Y2FsID0gaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWw7Cj4+ICAJCWRldl9wcml2LT5jZGNsay5h Y3R1YWwgPSBpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsOwo+PiAgCX0KPj4gKwlzd2FwX2Nvbm5l Y3Rvcl9zdGF0ZShzdGF0ZSk7Cj4+ICAKPj4gIAlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7 Cj4+ICAJSU5JVF9XT1JLKCZzdGF0ZS0+Y29tbWl0X3dvcmssCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4+IGluZGV4IDkzNzYyM2ZmNmQ3Yy4uYjdiOTM3OTlkMjg4IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtMzA3LDYgKzMwNywxMCBAQCBzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yIHsKPj4gIAkgKiBhbmQgYWN0aXZlIChpLmUuIGRwbXMgT04gc3RhdGUpLiAqLwo+ PiAgCWJvb2wgKCpnZXRfaHdfc3RhdGUpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7Cj4+ICAK Pj4gKwkvKiBVcGRhdGUgZGV2aWNlIHN0YXRlIHdpdGggdGhlIG5ldyBhdG9taWMgc3RhdGUuICov Cj4+ICsJdm9pZCAoKnN3YXBfc3RhdGUpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKiwKPj4gKwkJ CSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKik7Cj4+ICsKPj4gIAkvKiBQYW5lbCBp bmZvIGZvciBlRFAgYW5kIExWRFMgKi8KPj4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgcGFuZWw7Cj4+ ICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4+IGluZGV4IDZlZDFhM2NlNDdiNy4uYjg3ZDUx ZTYxOTc1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMKPj4gQEAgLTQ4LDggKzQ4LDYg QEAgc3RydWN0IGludGVsX3R2IHsKPj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciBiYXNlOwo+PiAg Cj4+ICAJaW50IHR5cGU7Cj4+IC0JY29uc3QgY2hhciAqdHZfZm9ybWF0Owo+PiAtCWludCBtYXJn aW5bNF07Cj4+ICAJdTMyIHNhdmVfVFZfSF9DVExfMTsKPj4gIAl1MzIgc2F2ZV9UVl9IX0NUTF8y Owo+PiAgCXUzMiBzYXZlX1RWX0hfQ1RMXzM7Cj4+IEBAIC04Myw4ICs4MSwyMCBAQCBzdHJ1Y3Qg aW50ZWxfdHYgewo+PiAgCj4+ICAJdTMyIHNhdmVfVFZfREFDOwo+PiAgCXUzMiBzYXZlX1RWX0NU TDsKPj4gKwo+PiArCWludCBmb3JtYXQ7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgaW50ZWxfdHZf Y29ubmVjdG9yX3N0YXRlIHsKPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSBiYXNlOwo+ PiArCj4+ICsJaW50IGZvcm1hdDsKPj4gKwlpbnQgbWFyZ2luWzRdOwo+PiAgfTsKPj4gIAo+PiAr I2RlZmluZSB0b19pbnRlbF90dl9jb25uZWN0b3Jfc3RhdGUoc3RhdGUpIFwKPj4gKwljb250YWlu ZXJfb2YoKHN0YXRlKSwgc3RydWN0IGludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZSwgYmFzZSkKPj4g Kwo+PiAgc3RydWN0IHZpZGVvX2xldmVscyB7Cj4+ICAJdTE2IGJsYW5rLCBibGFjazsKPj4gIAl1 OCBidXJzdDsKPj4gQEAgLTg0OCw2ICs4NTgsMTcgQEAgaW50ZWxfdHZfZ2V0X2h3X3N0YXRlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBlbnVtIHBpcGUgKnBpcGUpCj4+ICB9Cj4+ICAK Pj4gIHN0YXRpYyB2b2lkCj4+ICtpbnRlbF90dl9zd2FwX3N0YXRlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPj4gKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpj b25uX3N0YXRlKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF90diAqaW50ZWxfdHYgPSBpbnRlbF9h dHRhY2hlZF90digmY29ubmVjdG9yLT5iYXNlKTsKPj4gKwlzdHJ1Y3QgaW50ZWxfdHZfY29ubmVj dG9yX3N0YXRlICp0dl9zdGF0ZSA9Cj4+ICsJCXRvX2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShj b25uX3N0YXRlKTsKPj4gKwo+PiArCWludGVsX3R2LT5mb3JtYXQgPSB0dl9zdGF0ZS0+Zm9ybWF0 Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZAo+PiAgaW50ZWxfZW5hYmxlX3R2KHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcsCj4+ICAJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ PiBAQCAtODczLDMyICs4OTQsMjUgQEAgaW50ZWxfZGlzYWJsZV90dihzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPj4gIAlJOTE1X1dSSVRFKFRWX0NUTCwgSTkxNV9SRUFEKFRWX0NUTCkg JiB+VFZfRU5DX0VOQUJMRSk7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHZf bW9kZSAqCj4+IC1pbnRlbF90dl9tb2RlX2xvb2t1cChjb25zdCBjaGFyICp0dl9mb3JtYXQpCj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR2X21vZGUgKmludGVsX3R2X21vZGVfZmluZChzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPj4gIHsKPj4gLQlpbnQgaTsKPj4gLQo+ PiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHR2X21vZGVzKTsgaSsrKSB7Cj4+IC0JCWNv bnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0gJnR2X21vZGVzW2ldOwo+PiArCWludCBmb3Jt YXQgPSB0b19pbnRlbF90dl9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSktPmZvcm1hdDsKPj4g IAo+PiAtCQlpZiAoIXN0cmNtcCh0dl9mb3JtYXQsIHR2X21vZGUtPm5hbWUpKQo+PiAtCQkJcmV0 dXJuIHR2X21vZGU7Cj4+IC0JfQo+PiAtCXJldHVybiBOVUxMOwo+PiArCXJldHVybiAmdHZfbW9k ZXNbZm9ybWF0XTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCB0dl9tb2RlICoK Pj4gLWludGVsX3R2X21vZGVfZmluZChzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2KQo+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCB0dl9tb2RlICppbnRlbF90dl9tb2RlX2ZpbmRfY29tbWl0dGVkKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICB7Cj4+IC0JcmV0dXJuIGludGVsX3R2 X21vZGVfbG9va3VwKGludGVsX3R2LT50dl9mb3JtYXQpOwo+PiArCWludCBmb3JtYXQgPSBpbnRl bF9hdHRhY2hlZF90dihjb25uZWN0b3IpLT5mb3JtYXQ7Cj4+ICsKPj4gKwlyZXR1cm4gJnR2X21v ZGVzW2Zvcm1hdF07Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwo+ PiAgaW50ZWxfdHZfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ PiAgCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4+ICB7Cj4+IC0Jc3RydWN0 IGludGVsX3R2ICppbnRlbF90diA9IGludGVsX2F0dGFjaGVkX3R2KGNvbm5lY3Rvcik7Cj4+IC0J Y29uc3Qgc3RydWN0IHR2X21vZGUgKnR2X21vZGUgPSBpbnRlbF90dl9tb2RlX2ZpbmQoaW50ZWxf dHYpOwo+PiArCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0gaW50ZWxfdHZfbW9kZV9m aW5kX2NvbW1pdHRlZChjb25uZWN0b3IpOwo+PiAgCWludCBtYXhfZG90Y2xrID0gdG9faTkxNShj b25uZWN0b3ItPmRldiktPm1heF9kb3RjbGtfZnJlcTsKPj4gIAo+PiAgCWlmIChtb2RlLT5jbG9j ayA+IG1heF9kb3RjbGspCj4+IEBAIC05MjUsOCArOTM5LDcgQEAgaW50ZWxfdHZfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAJCQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4+ICAJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSkKPj4gIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2ID0gZW5j X3RvX3R2KGVuY29kZXIpOwo+PiAtCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0gaW50 ZWxfdHZfbW9kZV9maW5kKGludGVsX3R2KTsKPj4gKwljb25zdCBzdHJ1Y3QgdHZfbW9kZSAqdHZf bW9kZSA9IGludGVsX3R2X21vZGVfZmluZChjb25uX3N0YXRlKTsKPj4gIAo+PiAgCWlmICghdHZf bW9kZSkKPj4gIAkJcmV0dXJuIGZhbHNlOwo+PiBAQCAtMTAzMiw3ICsxMDQ1LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdHZfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPj4gIAlzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2 ID0gZW5jX3RvX3R2KGVuY29kZXIpOwo+PiAtCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2Rl ID0gaW50ZWxfdHZfbW9kZV9maW5kKGludGVsX3R2KTsKPj4gKwljb25zdCBzdHJ1Y3QgdHZfbW9k ZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmluZChjb25uX3N0YXRlKTsKPj4gIAl1MzIgdHZf Y3RsOwo+PiAgCXUzMiBzY2N0bDEsIHNjY3RsMiwgc2NjdGwzOwo+PiAgCWludCBpLCBqOwo+PiBA QCAtMTA0MSw2ICsxMDU0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfdHZfcHJlX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gIAlib29sIGJ1cnN0X2VuYTsKPj4gIAlpbnQg eHBvcyA9IDB4MCwgeXBvcyA9IDB4MDsKPj4gIAl1bnNpZ25lZCBpbnQgeHNpemUsIHlzaXplOwo+ PiArCXN0cnVjdCBpbnRlbF90dl9jb25uZWN0b3Jfc3RhdGUgKnR2X3N0YXRlID0KPj4gKwkJdG9f aW50ZWxfdHZfY29ubmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwo+PiAgCj4+ICAJaWYgKCF0dl9t b2RlKQo+PiAgCQlyZXR1cm47CS8qIGNhbid0IGhhcHBlbiAobW9kZV9wcmVwYXJlIHByZXZlbnRz IHRoaXMpICovCj4+IEBAIC0xMTM1LDEyICsxMTUwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3R2 X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAJZWxzZQo+PiAg CQl5c2l6ZSA9IDIqdHZfbW9kZS0+bmJyX2VuZCArIDE7Cj4+ICAKPj4gLQl4cG9zICs9IGludGVs X3R2LT5tYXJnaW5bVFZfTUFSR0lOX0xFRlRdOwo+PiAtCXlwb3MgKz0gaW50ZWxfdHYtPm1hcmdp bltUVl9NQVJHSU5fVE9QXTsKPj4gLQl4c2l6ZSAtPSAoaW50ZWxfdHYtPm1hcmdpbltUVl9NQVJH SU5fTEVGVF0gKwo+PiAtCQkgIGludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX1JJR0hUXSk7Cj4+ IC0JeXNpemUgLT0gKGludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX1RPUF0gKwo+PiAtCQkgIGlu dGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX0JPVFRPTV0pOwo+PiArCXhwb3MgKz0gdHZfc3RhdGUt Pm1hcmdpbltUVl9NQVJHSU5fTEVGVF07Cj4+ICsJeXBvcyArPSB0dl9zdGF0ZS0+bWFyZ2luW1RW X01BUkdJTl9UT1BdOwo+PiArCXhzaXplIC09ICh0dl9zdGF0ZS0+bWFyZ2luW1RWX01BUkdJTl9M RUZUXSArCj4+ICsJCSAgdHZfc3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fUklHSFRdKTsKPj4gKwl5 c2l6ZSAtPSAodHZfc3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fVE9QXSArCj4+ICsJCSAgdHZfc3Rh dGUtPm1hcmdpbltUVl9NQVJHSU5fQk9UVE9NXSk7Cj4+ICAJSTkxNV9XUklURShUVl9XSU5fUE9T LCAoeHBvczw8MTYpfHlwb3MpOwo+PiAgCUk5MTVfV1JJVEUoVFZfV0lOX1NJWkUsICh4c2l6ZTw8 MTYpfHlzaXplKTsKPj4gIAo+PiBAQCAtMTI4OCw3ICsxMzAzLDcgQEAgaW50ZWxfdHZfZGV0ZWN0 X3R5cGUoc3RydWN0IGludGVsX3R2ICppbnRlbF90diwKPj4gIHN0YXRpYyB2b2lkIGludGVsX3R2 X2ZpbmRfYmV0dGVyX2Zvcm1hdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAg ewo+PiAgCXN0cnVjdCBpbnRlbF90diAqaW50ZWxfdHYgPSBpbnRlbF9hdHRhY2hlZF90dihjb25u ZWN0b3IpOwo+PiAtCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0gaW50ZWxfdHZfbW9k ZV9maW5kKGludGVsX3R2KTsKPj4gKwljb25zdCBzdHJ1Y3QgdHZfbW9kZSAqdHZfbW9kZSA9IGlu dGVsX3R2X21vZGVfZmluZChjb25uZWN0b3ItPnN0YXRlKTsKPiBpbnRlbF90dl9tb2RlX2ZpbmRf Y29tbWl0dGVkKCkgPwpFaXRoZXIgaXMgZmluZSwgYnV0IHllYWggbGF0dGVyIGlzIHByb2JhYmx5 IG1vcmUgY29ycmVjdC4KPgo+PiAgCWludCBpOwo+PiAgCj4+ICAJaWYgKChpbnRlbF90di0+dHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfQ29tcG9uZW50KSA9PQo+PiBAQCAtMTMwNCw5ICsxMzE5 LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfdHZfZmluZF9iZXR0ZXJfZm9ybWF0KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICAJCQlicmVhazsKPj4gIAl9Cj4+ICAKPj4gLQlpbnRl bF90di0+dHZfZm9ybWF0ID0gdHZfbW9kZS0+bmFtZTsKPj4gLQlkcm1fb2JqZWN0X3Byb3BlcnR5 X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAo+PiAtCQljb25uZWN0b3ItPmRldi0+bW9kZV9j b25maWcudHZfbW9kZV9wcm9wZXJ0eSwgaSk7Cj4+ICsJdG9faW50ZWxfdHZfY29ubmVjdG9yX3N0 YXRlKGNvbm5lY3Rvci0+c3RhdGUpLT5mb3JtYXQgPSBpOwo+IEkgd2FzIHRoaW5raW5nIHdlJ2Qg ZG8gdGhpcyBpbiBkdXBsaWNhdGVfc3RhdGUuCj4KPiBXaXRoIHRoZXNlIHR3byBjaGFuZ2VzIHdl IHNob3VsZG4ndCBoYXZlIHRvIGFjY2VzcyAtPnN0YXRlIGluIGRldGVjdCgpCj4gQUZBSUNTLgpI bSBJIHRoaW5rIEkgbWlnaHQgbmVlZCB0byBrZWVwIGl0IGhlcmUuIFRoYXQgd291bGQgcmV0dXJu IG9sZCB2YWx1ZXMgd2hlbiB1c2Vyc3BhY2UgY2FsbHMgZ2V0X3Byb3BlcnR5LCB3ZSBkb24ndCB3 YW50IHRoYXQuIDopCj4KPj4gKwlpbnRlbF9hdHRhY2hlZF90dihjb25uZWN0b3IpLT5mb3JtYXQg PSBpOwo+PiAgfQo+PiAgCj4+ICAvKioKPj4gQEAgLTEzNDQsMTggKzEzNTgsMTcgQEAgaW50ZWxf dHZfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4+ ICAJCX0gZWxzZQo+PiAgCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c191bmtub3duOwo+PiAg Cj4+ICsJCWlmIChzdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpIHsKPj4gKwkJ CWludGVsX3R2LT50eXBlID0gdHlwZTsKPj4gKwkJCWludGVsX3R2X2ZpbmRfYmV0dGVyX2Zvcm1h dChjb25uZWN0b3IpOwo+PiArCQl9Cj4+ICsKPj4gIAkJZHJtX21vZGVzZXRfZHJvcF9sb2Nrcygm Y3R4KTsKPj4gIAkJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+PiAtCX0gZWxzZQo+ PiAtCQlyZXR1cm4gY29ubmVjdG9yLT5zdGF0dXM7Cj4+ICAKPj4gLQlpZiAoc3RhdHVzICE9IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+PiAgCQlyZXR1cm4gc3RhdHVzOwo+PiAtCj4+IC0J aW50ZWxfdHYtPnR5cGUgPSB0eXBlOwo+PiAtCWludGVsX3R2X2ZpbmRfYmV0dGVyX2Zvcm1hdChj b25uZWN0b3IpOwo+PiAtCj4+IC0JcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ PiArCX0gZWxzZQo+PiArCQlyZXR1cm4gY29ubmVjdG9yLT5zdGF0dXM7Cj4+ICB9Cj4+ICAKPj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5wdXRfcmVzIHsKPj4gQEAgLTEzNzUsMTIgKzEzODgsOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGlucHV0X3JlcyB7Cj4+ICAgKiBDaG9zZSBwcmVmZXJyZWQg bW9kZSAgYWNjb3JkaW5nIHRvIGxpbmUgbnVtYmVyIG9mIFRWIGZvcm1hdAo+PiAgICovCj4+ICBz dGF0aWMgdm9pZAo+PiAtaW50ZWxfdHZfY2hvc2VfcHJlZmVycmVkX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICtpbnRlbF90dl9jaG9zZV9wcmVmZXJyZWRfbW9kZXMo Y29uc3Qgc3RydWN0IHR2X21vZGUgKnR2X21vZGUsCj4+ICAJCQkgICAgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGVfcHRyKQo+PiAgewo+PiAtCXN0cnVjdCBpbnRlbF90diAqaW50ZWxf dHYgPSBpbnRlbF9hdHRhY2hlZF90dihjb25uZWN0b3IpOwo+PiAtCWNvbnN0IHN0cnVjdCB0dl9t b2RlICp0dl9tb2RlID0gaW50ZWxfdHZfbW9kZV9maW5kKGludGVsX3R2KTsKPj4gLQo+PiAgCWlm ICh0dl9tb2RlLT5uYnJfZW5kIDwgNDgwICYmIG1vZGVfcHRyLT52ZGlzcGxheSA9PSA0ODApCj4+ ICAJCW1vZGVfcHRyLT50eXBlIHw9IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOwo+PiAgCWVsc2Ug aWYgKHR2X21vZGUtPm5icl9lbmQgPiA0ODApIHsKPj4gQEAgLTE0MDMsOCArMTQxMyw3IEBAIHN0 YXRpYyBpbnQKPj4gIGludGVsX3R2X2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlX3B0cjsKPj4g LQlzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2ID0gaW50ZWxfYXR0YWNoZWRfdHYoY29ubmVjdG9y KTsKPj4gLQljb25zdCBzdHJ1Y3QgdHZfbW9kZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmlu ZChpbnRlbF90dik7Cj4+ICsJY29uc3Qgc3RydWN0IHR2X21vZGUgKnR2X21vZGUgPSBpbnRlbF90 dl9tb2RlX2ZpbmRfY29tbWl0dGVkKGNvbm5lY3Rvcik7Cj4+ICAJaW50IGosIGNvdW50ID0gMDsK Pj4gIAl1NjQgdG1wOwo+PiAgCj4+IEBAIC0xNDQ3LDcgKzE0NTYsNyBAQCBpbnRlbF90dl9nZXRf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gIAkJbW9kZV9wdHItPmNs b2NrID0gKGludCkgdG1wOwo+PiAgCj4+ICAJCW1vZGVfcHRyLT50eXBlID0gRFJNX01PREVfVFlQ RV9EUklWRVI7Cj4+IC0JCWludGVsX3R2X2Nob3NlX3ByZWZlcnJlZF9tb2Rlcyhjb25uZWN0b3Is IG1vZGVfcHRyKTsKPj4gKwkJaW50ZWxfdHZfY2hvc2VfcHJlZmVycmVkX21vZGVzKHR2X21vZGUs IG1vZGVfcHRyKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl4KPgo+IFByZS1leGlz dGluZyB0eXBvIDopIE1pZ2h0IHdhbnQgdG8gZml4IHRoYXQgdXAgdG9vLgpJbmRlZWQuCj4gICAg ICAgICAgICAgICAgICAKPgo+PiAgCQlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9k ZV9wdHIpOwo+PiAgCQljb3VudCsrOwo+PiAgCX0KPj4gQEAgLTE0NjIsNTYgKzE0NzEsOTcgQEAg aW50ZWxfdHZfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgCWtm cmVlKGNvbm5lY3Rvcik7Cj4+ICB9Cj4+ICAKPj4gLQo+PiAgc3RhdGljIGludAo+PiAtaW50ZWxf dHZfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBk cm1fcHJvcGVydHkgKnByb3BlcnR5LAo+PiAtCQkgICAgICB1aW50NjRfdCB2YWwpCj4+ICtpbnRl bF90dl9hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4+ICsJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAo+PiAr CQkJICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKwkJCSAgICAgdWludDY0 X3QgdmFsKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRl djsKPj4gLQlzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2ID0gaW50ZWxfYXR0YWNoZWRfdHYoY29u bmVjdG9yKTsKPj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBpbnRlbF90di0+YmFzZS5iYXNl LmNydGM7Cj4+IC0JaW50IHJldCA9IDA7Cj4+ICsKPj4gKwlzdHJ1Y3QgaW50ZWxfdHZfY29ubmVj dG9yX3N0YXRlICp0dl9zdGF0ZSA9Cj4+ICsJCXRvX2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShj b25uX3N0YXRlKTsKPj4gIAlib29sIGNoYW5nZWQgPSBmYWxzZTsKPj4gIAo+PiAtCXJldCA9IGRy bV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlKCZjb25uZWN0b3ItPmJhc2UsIHByb3BlcnR5LCB2 YWwpOwo+PiAtCWlmIChyZXQgPCAwKQo+PiAtCQlnb3RvIG91dDsKPj4gLQo+PiAtCWlmIChwcm9w ZXJ0eSA9PSBkZXYtPm1vZGVfY29uZmlnLnR2X2xlZnRfbWFyZ2luX3Byb3BlcnR5ICYmCj4+IC0J CWludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX0xFRlRdICE9IHZhbCkgewo+PiAtCQlpbnRlbF90 di0+bWFyZ2luW1RWX01BUkdJTl9MRUZUXSA9IHZhbDsKPj4gLQkJY2hhbmdlZCA9IHRydWU7Cj4+ IC0JfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBkZXYtPm1vZGVfY29uZmlnLnR2X3JpZ2h0X21hcmdp bl9wcm9wZXJ0eSAmJgo+PiAtCQlpbnRlbF90di0+bWFyZ2luW1RWX01BUkdJTl9SSUdIVF0gIT0g dmFsKSB7Cj4+IC0JCWludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX1JJR0hUXSA9IHZhbDsKPj4g LQkJY2hhbmdlZCA9IHRydWU7Cj4+IC0JfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBkZXYtPm1vZGVf Y29uZmlnLnR2X3RvcF9tYXJnaW5fcHJvcGVydHkgJiYKPj4gLQkJaW50ZWxfdHYtPm1hcmdpbltU Vl9NQVJHSU5fVE9QXSAhPSB2YWwpIHsKPj4gLQkJaW50ZWxfdHYtPm1hcmdpbltUVl9NQVJHSU5f VE9QXSA9IHZhbDsKPj4gLQkJY2hhbmdlZCA9IHRydWU7Cj4+IC0JfSBlbHNlIGlmIChwcm9wZXJ0 eSA9PSBkZXYtPm1vZGVfY29uZmlnLnR2X2JvdHRvbV9tYXJnaW5fcHJvcGVydHkgJiYKPj4gLQkJ aW50ZWxfdHYtPm1hcmdpbltUVl9NQVJHSU5fQk9UVE9NXSAhPSB2YWwpIHsKPj4gLQkJaW50ZWxf dHYtPm1hcmdpbltUVl9NQVJHSU5fQk9UVE9NXSA9IHZhbDsKPj4gLQkJY2hhbmdlZCA9IHRydWU7 Cj4+ICsJaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25maWcudHZfbGVmdF9tYXJnaW5fcHJv cGVydHkpIHsKPj4gKwkJY2hhbmdlZCA9IHR2X3N0YXRlLT5tYXJnaW5bVFZfTUFSR0lOX0xFRlRd ICE9IHZhbDsKPj4gKwo+PiArCQl0dl9zdGF0ZS0+bWFyZ2luW1RWX01BUkdJTl9MRUZUXSA9IHZh bDsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25maWcudHZfcmlnaHRf bWFyZ2luX3Byb3BlcnR5KSB7Cj4+ICsJCWNoYW5nZWQgPSB0dl9zdGF0ZS0+bWFyZ2luW1RWX01B UkdJTl9SSUdIVF0gIT0gdmFsOwo+PiArCj4+ICsJCXR2X3N0YXRlLT5tYXJnaW5bVFZfTUFSR0lO X1JJR0hUXSA9IHZhbDsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25m aWcudHZfdG9wX21hcmdpbl9wcm9wZXJ0eSkgewo+PiArCQljaGFuZ2VkID0gdHZfc3RhdGUtPm1h cmdpbltUVl9NQVJHSU5fVE9QXSAhPSB2YWw7Cj4+ICsKPj4gKwkJdHZfc3RhdGUtPm1hcmdpbltU Vl9NQVJHSU5fVE9QXSA9IHZhbDsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9k ZV9jb25maWcudHZfYm90dG9tX21hcmdpbl9wcm9wZXJ0eSkgewo+PiArCQljaGFuZ2VkID0gdHZf c3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fQk9UVE9NXSAhPSB2YWw7Cj4+ICsKPj4gKwkJdHZfc3Rh dGUtPm1hcmdpbltUVl9NQVJHSU5fQk9UVE9NXSA9IHZhbDsKPj4gIAl9IGVsc2UgaWYgKHByb3Bl cnR5ID09IGRldi0+bW9kZV9jb25maWcudHZfbW9kZV9wcm9wZXJ0eSkgewo+PiAgCQlpZiAodmFs ID49IEFSUkFZX1NJWkUodHZfbW9kZXMpKSB7Cj4+IC0JCQlyZXQgPSAtRUlOVkFMOwo+PiAtCQkJ Z290byBvdXQ7Cj4+ICsJCQlEUk1fREVCVUdfQVRPTUlDKCJ2YWx1ZSAlbGx1IG91dCBvZiB0dl9t b2RlcyBhcnJheSBib3VuZHNcbiIsIHZhbCk7Cj4+ICsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ PiAgCQl9Cj4+IC0JCWlmICghc3RyY21wKGludGVsX3R2LT50dl9mb3JtYXQsIHR2X21vZGVzW3Zh bF0ubmFtZSkpCj4+IC0JCQlnb3RvIG91dDsKPj4gIAo+PiAtCQlpbnRlbF90di0+dHZfZm9ybWF0 ID0gdHZfbW9kZXNbdmFsXS5uYW1lOwo+PiAtCQljaGFuZ2VkID0gdHJ1ZTsKPj4gKwkJY2hhbmdl ZCA9IHR2X3N0YXRlLT5mb3JtYXQgIT0gdmFsOwo+PiArCQl0dl9zdGF0ZS0+Zm9ybWF0ID0gdmFs Owo+PiArCX0gZWxzZSB7Cj4+ICsJCURSTV9ERUJVR19BVE9NSUMoIlVua25vd24gYXRvbWljIHBy b3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiAr CX0KPj4gKwo+PiArCS8qIFRyaWdnZXIgYSBtb2Rlc2V0IHdoZW4gY29ubmVjdG9yIHByb3BlcnRp ZXMgYXJlIGNoYW5nZWQuICovCj4+ICsJaWYgKGNoYW5nZWQgJiYgY29ubl9zdGF0ZS0+Y3J0Yykg ewo+PiArCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+PiArCQkJZHJtX2F0 b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShjb25uX3N0YXRlLT5zdGF0ZSwKPj4gKwkJCQkJ CQkgICBjb25uX3N0YXRlLT5jcnRjKTsKPj4gKwo+PiArCQljcnRjX3N0YXRlLT5jb25uZWN0b3Jz X2NoYW5nZWQgPSB0cnVlOwo+PiArCX0KPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludAo+PiAraW50ZWxfdHZfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+PiArCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqc3RhdGUsCj4+ICsJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+ PiArCQkJCSAgICB1aW50NjRfdCAqdmFsKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjb25uZWN0b3ItPmRldjsKPj4gKwlzdHJ1Y3QgaW50ZWxfdHZfY29ubmVjdG9yX3N0YXRl ICp0dl9zdGF0ZSA9Cj4+ICsJCXRvX2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSk7Cj4+ ICsKPj4gKwlpZiAocHJvcGVydHkgPT0gZGV2LT5tb2RlX2NvbmZpZy50dl9sZWZ0X21hcmdpbl9w cm9wZXJ0eSkKPj4gKwkJKnZhbCA9IHR2X3N0YXRlLT5tYXJnaW5bVFZfTUFSR0lOX0xFRlRdOwo+ PiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25maWcudHZfcmlnaHRfbWFyZ2lu X3Byb3BlcnR5KQo+PiArCQkqdmFsID0gdHZfc3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fUklHSFRd Owo+PiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25maWcudHZfdG9wX21hcmdp bl9wcm9wZXJ0eSkKPj4gKwkJKnZhbCA9IHR2X3N0YXRlLT5tYXJnaW5bVFZfTUFSR0lOX1RPUF07 Cj4+ICsJZWxzZSBpZiAocHJvcGVydHkgPT0gZGV2LT5tb2RlX2NvbmZpZy50dl9ib3R0b21fbWFy Z2luX3Byb3BlcnR5KQo+PiArCQkqdmFsID0gdHZfc3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fQk9U VE9NXTsKPj4gKwllbHNlIGlmIChwcm9wZXJ0eSA9PSBkZXYtPm1vZGVfY29uZmlnLnR2X21vZGVf cHJvcGVydHkpIHsKPj4gKwkJKnZhbCA9IHR2X3N0YXRlLT5mb3JtYXQ7Cj4+ICAJfSBlbHNlIHsK Pj4gLQkJcmV0ID0gLUVJTlZBTDsKPj4gLQkJZ290byBvdXQ7Cj4+ICsJCURSTV9ERUJVR19BVE9N SUMoIlVua25vd24gYXRvbWljIHByb3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4+ICsJ CXJldHVybiAtRUlOVkFMOwo+PiAgCX0KPj4gIAo+PiAtCWlmIChjaGFuZ2VkICYmIGNydGMpCj4+ IC0JCWludGVsX2NydGNfcmVzdG9yZV9tb2RlKGNydGMpOwo+PiAtb3V0Ogo+PiAtCXJldHVybiBy ZXQ7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqCj4+ICtpbnRlbF90dl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfdHZfY29ubmVjdG9yX3N0 YXRlICpzdGF0ZTsKPj4gKwo+PiArCXN0YXRlID0ga21lbWR1cCgmY29ubmVjdG9yLT5zdGF0ZSwg c2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+PiArCWlmIChzdGF0ZSkKPj4gKwkJX19kcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKGNvbm5lY3RvciwgJnN0YXRl LT5iYXNlKTsKPj4gKwo+PiArCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4+ICB9Cj4+ICAKPj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBpbnRlbF90dl9jb25uZWN0b3Jf ZnVuY3MgPSB7Cj4+IEBAIC0xNTIwLDExICsxNTcwLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9mdW5jcyBpbnRlbF90dl9jb25uZWN0b3JfZnVuY3MgPSB7Cj4+ICAJLmxh dGVfcmVnaXN0ZXIgPSBpbnRlbF9jb25uZWN0b3JfcmVnaXN0ZXIsCj4+ICAJLmVhcmx5X3VucmVn aXN0ZXIgPSBpbnRlbF9jb25uZWN0b3JfdW5yZWdpc3RlciwKPj4gIAkuZGVzdHJveSA9IGludGVs X3R2X2Rlc3Ryb3ksCj4+IC0JLnNldF9wcm9wZXJ0eSA9IGludGVsX3R2X3NldF9wcm9wZXJ0eSwK Pj4gLQkuYXRvbWljX2dldF9wcm9wZXJ0eSA9IGludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3By b3BlcnR5LAo+PiArCS5zZXRfcHJvcGVydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf c2V0X3Byb3BlcnR5LAo+PiArCS5hdG9taWNfc2V0X3Byb3BlcnR5ID0gaW50ZWxfdHZfYXRvbWlj X3NldF9wcm9wZXJ0eSwKPj4gKwkuYXRvbWljX2dldF9wcm9wZXJ0eSA9IGludGVsX3R2X2F0b21p Y19nZXRfcHJvcGVydHksCj4+ICAJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3Npbmds ZV9jb25uZWN0b3JfbW9kZXMsCj4+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4+IC0JLmF0b21pY19kdXBsaWNhdGVf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+PiAr CS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfdHZfZHVwbGljYXRlX3N0YXRlLAo+PiAg fTsKPj4gIAo+PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyBpbnRlbF90dl9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+PiBAQCAtMTU0Nyw2ICsxNTk4 LDcgQEAgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ ICAJdTMyIHR2X2RhY19vbiwgdHZfZGFjX29mZiwgc2F2ZV90dl9kYWM7Cj4+ICAJY29uc3QgY2hh ciAqdHZfZm9ybWF0X25hbWVzW0FSUkFZX1NJWkUodHZfbW9kZXMpXTsKPj4gIAlpbnQgaSwgaW5p dGlhbF9tb2RlID0gMDsKPj4gKwlzdHJ1Y3QgaW50ZWxfdHZfY29ubmVjdG9yX3N0YXRlICpzdGF0 ZTsKPj4gIAo+PiAgCWlmICgoSTkxNV9SRUFEKFRWX0NUTCkgJiBUVl9GVVNFX1NUQVRFX01BU0sp ID09IFRWX0ZVU0VfU1RBVEVfRElTQUJMRUQpCj4+ICAJCXJldHVybjsKPj4gQEAgLTE1ODAsMTYg KzE2MzIsMTcgQEAgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCWludGVsX3R2ID0ga3phbGxvYyhzaXplb2YoKmlu dGVsX3R2KSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKCFpbnRlbF90dikgewo+PiAtCQlyZXR1cm47 Cj4+IC0JfQo+PiAtCj4+IC0JaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfY29ubmVjdG9yX2FsbG9j KCk7Cj4+IC0JaWYgKCFpbnRlbF9jb25uZWN0b3IpIHsKPj4gKwlpbnRlbF9jb25uZWN0b3IgPSBr emFsbG9jKHNpemVvZigqaW50ZWxfY29ubmVjdG9yKSwgR0ZQX0tFUk5FTCk7Cj4+ICsJc3RhdGUg PSBremFsbG9jKHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWludGVsX3R2 IHx8ICFpbnRlbF9jb25uZWN0b3IgfHwgIXN0YXRlKSB7Cj4+ICsJCWtmcmVlKGludGVsX2Nvbm5l Y3Rvcik7Cj4+ICsJCWtmcmVlKHN0YXRlKTsKPj4gIAkJa2ZyZWUoaW50ZWxfdHYpOwo+PiAgCQly ZXR1cm47Cj4+ICAJfQo+PiAgCj4+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVz ZXQoJmludGVsX2Nvbm5lY3Rvci0+YmFzZSwgJnN0YXRlLT5iYXNlKTsKPj4gKwo+PiAgCWludGVs X2VuY29kZXIgPSAmaW50ZWxfdHYtPmJhc2U7Cj4+ICAJY29ubmVjdG9yID0gJmludGVsX2Nvbm5l Y3Rvci0+YmFzZTsKPj4gIAo+PiBAQCAtMTYxNyw2ICsxNjcwLDcgQEAgaW50ZWxfdHZfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJaW50ZWxfZW5jb2Rlci0+ZGlz YWJsZSA9IGludGVsX2Rpc2FibGVfdHY7Cj4+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2h3X3N0YXRl ID0gaW50ZWxfdHZfZ2V0X2h3X3N0YXRlOwo+PiAgCWludGVsX2Nvbm5lY3Rvci0+Z2V0X2h3X3N0 YXRlID0gaW50ZWxfY29ubmVjdG9yX2dldF9od19zdGF0ZTsKPj4gKwlpbnRlbF9jb25uZWN0b3It PnN3YXBfc3RhdGUgPSBpbnRlbF90dl9zd2FwX3N0YXRlOwo+PiAgCj4+ICAJaW50ZWxfY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKGludGVsX2Nvbm5lY3RvciwgaW50ZWxfZW5jb2Rlcik7Cj4+ICAK Pj4gQEAgLTE2MjksMTIgKzE2ODMsMTMgQEAgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJaW50ZWxfdHYtPnR5cGUgPSBEUk1fTU9ERV9DT05ORUNU T1JfVW5rbm93bjsKPj4gIAo+PiAgCS8qIEJJT1MgbWFyZ2luIHZhbHVlcyAqLwo+PiAtCWludGVs X3R2LT5tYXJnaW5bVFZfTUFSR0lOX0xFRlRdID0gNTQ7Cj4+IC0JaW50ZWxfdHYtPm1hcmdpbltU Vl9NQVJHSU5fVE9QXSA9IDM2Owo+PiAtCWludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX1JJR0hU XSA9IDQ2Owo+PiAtCWludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX0JPVFRPTV0gPSAzNzsKPj4g KwlzdGF0ZS0+bWFyZ2luW1RWX01BUkdJTl9MRUZUXSA9IDU0Owo+PiArCXN0YXRlLT5tYXJnaW5b VFZfTUFSR0lOX1RPUF0gPSAzNjsKPj4gKwlzdGF0ZS0+bWFyZ2luW1RWX01BUkdJTl9SSUdIVF0g PSA0NjsKPj4gKwlzdGF0ZS0+bWFyZ2luW1RWX01BUkdJTl9CT1RUT01dID0gMzc7Cj4+ICAKPj4g LQlpbnRlbF90di0+dHZfZm9ybWF0ID0gdHZfbW9kZXNbaW5pdGlhbF9tb2RlXS5uYW1lOwo+PiAr CXN0YXRlLT5mb3JtYXQgPSBpbml0aWFsX21vZGU7Cj4+ICsJaW50ZWxfdHYtPmZvcm1hdCA9IGlu aXRpYWxfbW9kZTsKPj4gIAo+PiAgCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3Is ICZpbnRlbF90dl9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPj4gIAljb25uZWN0b3ItPmludGVy bGFjZV9hbGxvd2VkID0gZmFsc2U7Cj4+IEBAIC0xNjQ4LDE3ICsxNzAzLDE3IEBAIGludGVsX3R2 X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgCQkJCSAgICAgIHR2 X2Zvcm1hdF9uYW1lcyk7Cj4+ICAKPj4gIAlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29u bmVjdG9yLT5iYXNlLCBkZXYtPm1vZGVfY29uZmlnLnR2X21vZGVfcHJvcGVydHksCj4+IC0JCQkJ ICAgaW5pdGlhbF9tb2RlKTsKPj4gKwkJCQkgICBzdGF0ZS0+Zm9ybWF0KTsKPj4gIAlkcm1fb2Jq ZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+PiAgCQkJCSAgIGRldi0+bW9k ZV9jb25maWcudHZfbGVmdF9tYXJnaW5fcHJvcGVydHksCj4+IC0JCQkJICAgaW50ZWxfdHYtPm1h cmdpbltUVl9NQVJHSU5fTEVGVF0pOwo+PiArCQkJCSAgIHN0YXRlLT5tYXJnaW5bVFZfTUFSR0lO X0xFRlRdKTsKPj4gIAlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNl LAo+PiAgCQkJCSAgIGRldi0+bW9kZV9jb25maWcudHZfdG9wX21hcmdpbl9wcm9wZXJ0eSwKPj4g LQkJCQkgICBpbnRlbF90di0+bWFyZ2luW1RWX01BUkdJTl9UT1BdKTsKPj4gKwkJCQkgICBzdGF0 ZS0+bWFyZ2luW1RWX01BUkdJTl9UT1BdKTsKPj4gIAlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmY29ubmVjdG9yLT5iYXNlLAo+PiAgCQkJCSAgIGRldi0+bW9kZV9jb25maWcudHZfcmlnaHRf bWFyZ2luX3Byb3BlcnR5LAo+PiAtCQkJCSAgIGludGVsX3R2LT5tYXJnaW5bVFZfTUFSR0lOX1JJ R0hUXSk7Cj4+ICsJCQkJICAgc3RhdGUtPm1hcmdpbltUVl9NQVJHSU5fUklHSFRdKTsKPj4gIAlk cm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+PiAgCQkJCSAgIGRl di0+bW9kZV9jb25maWcudHZfYm90dG9tX21hcmdpbl9wcm9wZXJ0eSwKPj4gLQkJCQkgICBpbnRl bF90di0+bWFyZ2luW1RWX01BUkdJTl9CT1RUT01dKTsKPj4gKwkJCQkgICBzdGF0ZS0+bWFyZ2lu W1RWX01BUkdJTl9CT1RUT01dKTsKPj4gIH0KPj4gLS0gCj4+IDIuNy40Cj4+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK