From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Partial revert of atomic watermark series Date: Fri, 9 Oct 2015 10:41:00 +0200 Message-ID: <20151009084100.GM26718@phenom.ffwll.local> References: <1444343305-321-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id A74146EDF5 for ; Fri, 9 Oct 2015 01:38:07 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so60468145wic.0 for ; Fri, 09 Oct 2015 01:38:06 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1444343305-321-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: "Vetter, Daniel" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMDgsIDIwMTUgYXQgMDM6Mjg6MjVQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBJdCdzIGJlZW4gcmVwb3J0ZWQgdGhhdCB0aGUgYXRvbWljIHdhdGVybWFyayBzZXJpZXMg dHJpZ2dlcnMgc29tZQo+IHJlZ3Jlc3Npb25zIG9uIFNLTCwgd2hpY2ggd2UgaGF2ZW4ndCBiZWVu IGFibGUgdG8gdHJhY2sgZG93biB5ZXQuICBMZXQncwo+IHRlbXBvcmFyaWx5IHJldmVydCB0aGVz ZSBwYXRjaGVzIHdoaWxlIHdlIHRyYWNrIGRvd24gdGhlIHJvb3QgY2F1c2UuCj4gCj4gVGhpcyBj b21taXQgc3F1YXNoZXMgdGhlIHJldmVydHMgb2Y6Cj4gICA3NjMwNWIxIGRybS9pOTE1OiBDYWxj dWxhdGUgd2F0ZXJtYXJrIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGF0b21pYyBjaGVjayAodjIpCj4g ICBhNDYxMWU0IGRybS9pOTE1OiBEb24ndCBzZXQgcGxhbmUgdmlzaWJsZSBkdXJpbmcgSFcgcmVh ZG91dCBpZiBDUlRDIGlzIG9mZgo+ICAgYTI4MTcwZiBkcm0vaTkxNTogQ2FsY3VsYXRlIElMSy1z dHlsZSB3YXRlcm1hcmtzIGR1cmluZyBhdG9taWMgY2hlY2sgKHYzKQo+ICAgZGU0YTlmOCBkcm0v aTkxNTogQ2FsY3VsYXRlIHBpcGUgd2F0ZXJtYXJrcyBpbnRvIENSVEMgc3RhdGUgKHYzKQo+ICAg ZGUxNjVlMCBkcm0vaTkxNTogUmVmYWN0b3IgaWxrX3VwZGF0ZV93bSAodjMpCj4gCj4gUmVmZXJl bmNlOiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2ludGVsLWdmeC8yMDE1 LU9jdG9iZXIvMDc3MTkwLmh0bWwKPiBDYzogIlphbm9uaSwgUGF1bG8gUiIgPHBhdWxvLnIuemFu b25pQGludGVsLmNvbT4KPiBDYzogIlZldHRlciwgRGFuaWVsIiA8ZGFuaWVsLnZldHRlckBpbnRl bC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVs LmNvbT4KPiAtLS0KPiBJIGp1c3QgZ290IGFjY2VzcyB0byBCWFQgaGFyZHdhcmUsIHNvIEknbSBo b3BpbmcgdGhhdCB0aGUgU0tMIHByb2JsZW1zIHJlcG9ydGVkCj4gYnkgUGF1bG8gd2lsbCBhbHNv IGJlIHJlcHJvZHVjaWJsZSBvbiBCWFQuICBIb3dldmVyIEknbSBub3QgZ29pbmcgdG8gYmUgYWJs ZSB0bwo+IHdvcmsgb24gdGhpcyBmb3IgYSBjb3VwbGUgZGF5cywgc28gaXQncyBwcm9iYWJseSBi ZXR0ZXIgdG8gZG8gc29tZSByZXZlcnRzIG5vdwo+IHNvIHRoYXQgd2UgZG9uJ3QgbGVhdmUgZGkt bmlnaHRseSBpbiBhIGJyb2tlbiBzdGF0ZSBpbiB0aGUgbWVhbnRpbWUuCj4gCj4gQWxzbyBub3Rl IHRoYXQgdGhpcyBpcyBhIGRpZmZlcmVudCByZWdyZXNzaW9uIHRoYW4gdGhlIG9uZSByZXBvcnRl ZCBieSBKYW5pCj4gKGZvciB3aGljaCB3ZSd2ZSBhbHJlYWR5IHJldmVydGVkIGEgY291cGxlIHBh dGNoZXMpOyBoaXMgaXNzdWUgaGFwcGVucyBvbiB0aGUKPiBJTEstc3R5bGUgd2F0ZXJtYXJrIHBh dGggd2hpY2ggaXNuJ3QgcmVsZXZhbnQgZm9yIFBhdWxvJ3MgaXNzdWVzIGhlcmUuCgpZZWFoIHRv ZGF5J3MgdGhlIGxhc3QgZGF5IGZvciA0LjQgZmVhdHVyZXMsIEkgdGhpbmsgcmV2ZXJ0aW5nIGlz IHRoZSByaWdodAptb3ZlIChldmVuIGlmIEkgcmVhbGx5IHdhbnQgdG8gc2VlIGF0b21pYyB3YXRl cm1hcmtzIGdldHRpbmcgaW4gc29vbmVyCnRoYW4gbGF0ZXIpLgoKVGhhbmtzLCBEYW5laWwKPiAK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDEyIC0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA2MCArLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDQ5ICsrKy0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDIzMiArKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAyMDIg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZmJmMGFlOS4u NGIwMmJlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MjcsOCArNjI3LDYg QEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJCQkgIGludCB0YXJnZXQsIGlu dCByZWZjbGssCj4gIAkJCSAgc3RydWN0IGRwbGwgKm1hdGNoX2Nsb2NrLAo+ICAJCQkgIHN0cnVj dCBkcGxsICpiZXN0X2Nsb2NrKTsKPiAtCWludCAoKmNvbXB1dGVfcGlwZV93bSkoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gLQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOwo+ICAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAgCWlu dCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsK PiAgCXZvaWQgKCptb2Rlc2V0X2NvbW1pdF9jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKPiBAQCAtMTY5MiwxMyArMTY5MCw2IEBAIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJf cGFyYW1zIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAgICAgKnJlcXVlc3Q7Cj4g IH07Cj4gIAo+IC0vKiB1c2VkIGluIGNvbXB1dGluZyB0aGUgbmV3IHdhdGVybWFya3Mgc3RhdGUg Ki8KPiAtc3RydWN0IGludGVsX3dtX2NvbmZpZyB7Cj4gLQl1bnNpZ25lZCBpbnQgbnVtX3BpcGVz X2FjdGl2ZTsKPiAtCWJvb2wgc3ByaXRlc19lbmFibGVkOwo+IC0JYm9vbCBzcHJpdGVzX3NjYWxl ZDsKPiAtfTsKPiAtCj4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXY7Cj4gIAlzdHJ1Y3Qga21lbV9jYWNoZSAqb2JqZWN0czsKPiBAQCAtMTkyMyw5 ICsxOTE0LDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJCSAqLwo+ICAJCXVpbnQx Nl90IHNrbF9sYXRlbmN5WzhdOwo+ICAKPiAtCQkvKiBDb21taXR0ZWQgd20gY29uZmlnICovCj4g LQkJc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWc7Cj4gLQo+ICAJCS8qCj4gIAkJICogVGhl IHNrbF93bV92YWx1ZXMgc3RydWN0dXJlIGlzIGEgYml0IHRvbyBiaWcgZm9yIHN0YWNrCj4gIAkJ ICogYWxsb2NhdGlvbiwgc28gd2Uga2VlcCB0aGUgc3RhZ2luZyBzdHJ1Y3Qgd2hlcmUgd2Ugc3Rv cmUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNTM5YzM3My4uZDg0 ZDVjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTE4Mzcs MTIgKzExODM3LDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIAl9Cj4gIAo+ICAJcmV0ID0gMDsKPiAtCWlmIChkZXZfcHJpdi0+ ZGlzcGxheS5jb21wdXRlX3BpcGVfd20pIHsKPiAtCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5j b21wdXRlX3BpcGVfd20oaW50ZWxfY3J0Yywgc3RhdGUpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJl dHVybiByZXQ7Cj4gLQl9Cj4gLQo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsK PiAgCQlpZiAobW9kZV9jaGFuZ2VkKQo+ICAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9jcnRj KHBpcGVfY29uZmlnKTsKPiBAQCAtMTMwNDgsNDUgKzEzMDQyLDYgQEAgc3RhdGljIGludCBpbnRl bF9tb2Rlc2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiAtLyoKPiAtICogSGFuZGxlIGNhbGN1bGF0aW9uIG9mIHZhcmlvdXMg d2F0ZXJtYXJrIGRhdGEgYXQgdGhlIGVuZCBvZiB0aGUgYXRvbWljIGNoZWNrCj4gLSAqIHBoYXNl LiAgVGhlIGNvZGUgaGVyZSBzaG91bGQgYmUgcnVuIGFmdGVyIHRoZSBwZXItY3J0YyBhbmQgcGVy LXBsYW5lICdjaGVjaycKPiAtICogaGFuZGxlcnMgdG8gZW5zdXJlIHRoYXQgYWxsIGRlcml2ZWQg c3RhdGUgaGFzIGJlZW4gdXBkYXRlZC4KPiAtICovCj4gLXN0YXRpYyB2b2lkIGNhbGNfd2F0ZXJt YXJrX2RhdGEoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAtCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwo+IC0J c3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3Rh dGU7Cj4gLQo+IC0JLyoKPiAtCSAqIENhbGN1bGF0ZSB3YXRlcm1hcmsgY29uZmlndXJhdGlvbiBk ZXRhaWxzIG5vdyB0aGF0IGRlcml2ZWQKPiAtCSAqIHBsYW5lL2NydGMgc3RhdGUgaXMgYWxsIHBy b3Blcmx5IHVwZGF0ZWQuCj4gLQkgKi8KPiAtCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikg ewo+IC0JCWNzdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUs IGNydGMpID86Cj4gLQkJCWNydGMtPnN0YXRlOwo+IC0KPiAtCQlpZiAoY3N0YXRlLT5hY3RpdmUp Cj4gLQkJCWludGVsX3N0YXRlLT53bV9jb25maWcubnVtX3BpcGVzX2FjdGl2ZSsrOwo+IC0JfQo+ IC0JZHJtX2Zvcl9lYWNoX2xlZ2FjeV9wbGFuZShwbGFuZSwgZGV2KSB7Cj4gLQkJcHN0YXRlID0g ZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKSA/Ogo+IC0J CQlwbGFuZS0+c3RhdGU7Cj4gLQo+IC0JCWlmICghdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRl KS0+dmlzaWJsZSkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCWludGVsX3N0YXRlLT53bV9jb25m aWcuc3ByaXRlc19lbmFibGVkID0gdHJ1ZTsKPiAtCQlpZiAocHN0YXRlLT5jcnRjX3cgIT0gcHN0 YXRlLT5zcmNfdyA+PiAxNiB8fAo+IC0JCSAgICBwc3RhdGUtPmNydGNfaCAhPSBwc3RhdGUtPnNy Y19oID4+IDE2KQo+IC0JCQlpbnRlbF9zdGF0ZS0+d21fY29uZmlnLnNwcml0ZXNfc2NhbGVkID0g dHJ1ZTsKPiAtCX0KPiAtfQo+IC0KPiAgLyoqCj4gICAqIGludGVsX2F0b21pY19jaGVjayAtIHZh bGlkYXRlIHN0YXRlIG9iamVjdAo+ICAgKiBAZGV2OiBkcm0gZGV2aWNlCj4gQEAgLTEzMDk1LDcg KzEzMDUwLDYgQEAgc3RhdGljIHZvaWQgY2FsY193YXRlcm1hcmtfZGF0YShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0 b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJaW50IHJldCwgaTsKPiBA QCAtMTMxNTksMTUgKzEzMTEzLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAg CX0gZWxzZQo+IC0JCWludGVsX3N0YXRlLT5jZGNsayA9IHRvX2k5MTUoc3RhdGUtPmRldiktPmNk Y2xrX2ZyZXE7Cj4gLQo+IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0 YXRlLT5kZXYsIHN0YXRlKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlj YWxjX3dhdGVybWFya19kYXRhKHN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3Rh dGUpLT5jZGNsayA9Cj4gKwkJCXRvX2k5MTUoc3RhdGUtPmRldiktPmNkY2xrX2ZyZXE7Cj4gIAo+ IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0 YXRlLT5kZXYsIHN0YXRlKTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTEzMjA3LDcgKzEzMTU2LDYg QEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRl diwgc3RhdGUpOwo+IC0JZGV2X3ByaXYtPndtLmNvbmZpZyA9IHRvX2ludGVsX2F0b21pY19zdGF0 ZShzdGF0ZSktPndtX2NvbmZpZzsKPiAgCj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gIAkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IEBAIC0xNTIyMSw3ICsxNTE2OSw3IEBAIHN0YXRp YyB2b2lkIHJlYWRvdXRfcGxhbmVfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAgCQl0b19pbnRlbF9wbGFu ZV9zdGF0ZShwcmltYXJ5LT5zdGF0ZSk7Cj4gIAo+IC0JcGxhbmVfc3RhdGUtPnZpc2libGUgPSBj cnRjLT5hY3RpdmUgJiYKPiArCXBsYW5lX3N0YXRlLT52aXNpYmxlID0KPiAgCQlwcmltYXJ5X2dl dF9od19zdGF0ZSh0b19pbnRlbF9wbGFuZShwcmltYXJ5KSk7Cj4gIAo+ICAJaWYgKHBsYW5lX3N0 YXRlLT52aXNpYmxlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggZTMyMDgyNS4u OTFiNmI0MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI1MCw3ICsyNTAs NiBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKPiAgCXVuc2lnbmVkIGludCBjZGNsazsK PiAgCWJvb2wgZHBsbF9zZXQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHNo YXJlZF9kcGxsW0k5MTVfTlVNX1BMTFNdOwo+IC0Jc3RydWN0IGludGVsX3dtX2NvbmZpZyB3bV9j b25maWc7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewo+IEBAIC0zMzUs MjEgKzMzNCw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSB7Cj4gIC8qIGRybV9t b2RlLT5wcml2YXRlX2ZsYWdzICovCj4gICNkZWZpbmUgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVE IDEKPiAgCj4gLXN0cnVjdCBpbnRlbF9waXBlX3dtIHsKPiAtCXN0cnVjdCBpbnRlbF93bV9sZXZl bCB3bVs1XTsKPiAtCXVpbnQzMl90IGxpbmV0aW1lOwo+IC0JYm9vbCBmYmNfd21fZW5hYmxlZDsK PiAtCWJvb2wgcGlwZV9lbmFibGVkOwo+IC0JYm9vbCBzcHJpdGVzX2VuYWJsZWQ7Cj4gLQlib29s IHNwcml0ZXNfc2NhbGVkOwo+IC19Owo+IC0KPiAtc3RydWN0IHNrbF9waXBlX3dtIHsKPiAtCXN0 cnVjdCBza2xfd21fbGV2ZWwgd21bOF07Cj4gLQlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHRyYW5zX3dt Owo+IC0JdWludDMyX3QgbGluZXRpbWU7Cj4gLX07Cj4gLQo+ICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKPiAgCj4gQEAgLTQ4NywxNyAr NDcxLDYgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ICAKPiAgCS8qIElWQiBzcHJpdGUg c2NhbGluZyB3L2EgKFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIpICovCj4gIAli b29sIGRpc2FibGVfbHBfd207Cj4gLQo+IC0Jc3RydWN0IHsKPiAtCQkvKgo+IC0JCSAqIG9wdGlt YWwgd2F0ZXJtYXJrcywgcHJvZ3JhbW1lZCBwb3N0LXZibGFuayB3aGVuIHRoaXMgc3RhdGUKPiAt CQkgKiBpcyBjb21taXR0ZWQKPiAtCQkgKi8KPiAtCQl1bmlvbiB7Cj4gLQkJCXN0cnVjdCBpbnRl bF9waXBlX3dtIGlsazsKPiAtCQkJc3RydWN0IHNrbF9waXBlX3dtIHNrbDsKPiAtCQl9IG9wdGlt YWw7Cj4gLQl9IHdtOwo+ICB9Owo+ICAKPiAgc3RydWN0IHZsdl93bV9zdGF0ZSB7Cj4gQEAgLTUw OSw2ICs0ODIsMTUgQEAgc3RydWN0IHZsdl93bV9zdGF0ZSB7Cj4gIAlib29sIGN4c3I7Cj4gIH07 Cj4gIAo+ICtzdHJ1Y3QgaW50ZWxfcGlwZV93bSB7Cj4gKwlzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwg d21bNV07Cj4gKwl1aW50MzJfdCBsaW5ldGltZTsKPiArCWJvb2wgZmJjX3dtX2VuYWJsZWQ7Cj4g Kwlib29sIHBpcGVfZW5hYmxlZDsKPiArCWJvb2wgc3ByaXRlc19lbmFibGVkOwo+ICsJYm9vbCBz cHJpdGVzX3NjYWxlZDsKPiArfTsKPiArCj4gIHN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgewo+ICAJ c3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NTsKPiBAQCAtNTE2LDYgKzQ5OCwxMiBAQCBzdHJ1Y3QgaW50ZWxfbW1pb19mbGlwIHsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICB9Owo+ICAKPiArc3RydWN0IHNrbF9waXBlX3dtIHsK PiArCXN0cnVjdCBza2xfd21fbGV2ZWwgd21bOF07Cj4gKwlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHRy YW5zX3dtOwo+ICsJdWludDMyX3QgbGluZXRpbWU7Cj4gK307Cj4gKwo+ICAvKgo+ICAgKiBUcmFj a2luZyBvZiBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwZXJmb3JtZWQgYXQgdGhlIGJlZ2lu bmluZy9lbmQgb2YgYW4KPiAgICogYXRvbWljIGNvbW1pdCwgb3V0c2lkZSB0aGUgYXRvbWljIHNl Y3Rpb24gd2hlcmUgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQuCj4gQEAgLTU4MywxMCArNTcxLDkg QEAgc3RydWN0IGludGVsX2NydGMgewo+ICAJLyogcGVyLXBpcGUgd2F0ZXJtYXJrIHN0YXRlICov Cj4gIAlzdHJ1Y3Qgewo+ICAJCS8qIHdhdGVybWFya3MgY3VycmVudGx5IGJlaW5nIHVzZWQgICov Cj4gLQkJdW5pb24gewo+IC0JCQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBpbGs7Cj4gLQkJCXN0cnVj dCBza2xfcGlwZV93bSBza2w7Cj4gLQkJfSBhY3RpdmU7Cj4gKwkJc3RydWN0IGludGVsX3BpcGVf d20gYWN0aXZlOwo+ICsJCS8qIFNLTCB3bSB2YWx1ZXMgY3VycmVudGx5IGluIHVzZSAqLwo+ICsJ CXN0cnVjdCBza2xfcGlwZV93bSBza2xfYWN0aXZlOwo+ICAJCS8qIGFsbG93IEN4U1Igb24gdGhp cyBwaXBlICovCj4gIAkJYm9vbCBjeHNyX2FsbG93ZWQ7Cj4gIAl9IHdtOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IGluZGV4IDYwZDEyMGMuLjQ5OTM2OTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBAQCAtMTc3Miw2ICsxNzcyLDEzIEBAIHN0cnVjdCBpbGtfd21fbWF4aW11bXMg ewo+ICAJdWludDE2X3QgZmJjOwo+ICB9Owo+ICAKPiArLyogdXNlZCBpbiBjb21wdXRpbmcgdGhl IG5ldyB3YXRlcm1hcmtzIHN0YXRlICovCj4gK3N0cnVjdCBpbnRlbF93bV9jb25maWcgewo+ICsJ dW5zaWduZWQgaW50IG51bV9waXBlc19hY3RpdmU7Cj4gKwlib29sIHNwcml0ZXNfZW5hYmxlZDsK PiArCWJvb2wgc3ByaXRlc19zY2FsZWQ7Cj4gK307Cj4gKwo+ICAvKgo+ICAgKiBGb3IgYm90aCBX TV9QSVBFIGFuZCBXTV9MUC4KPiAgICogbWVtX3ZhbHVlIG11c3QgYmUgaW4gMC4xdXMgdW5pdHMu Cj4gQEAgLTIwMjIsMTEgKzIwMjksOSBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9sZXZl bChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgY29uc3Qg c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAkJCQkgaW50IGxldmVsLAo+ICAJCQkJ IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJCQkgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwcmlzdGF0ZSwKPiAtCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnNw cnN0YXRlLAo+IC0JCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqY3Vyc3RhdGUsCj4gIAkJ CQkgc3RydWN0IGludGVsX3dtX2xldmVsICpyZXN1bHQpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmU7Cj4gIAl1aW50MTZfdCBwcmlfbGF0ZW5jeSA9IGRldl9wcml2LT53 bS5wcmlfbGF0ZW5jeVtsZXZlbF07Cj4gIAl1aW50MTZfdCBzcHJfbGF0ZW5jeSA9IGRldl9wcml2 LT53bS5zcHJfbGF0ZW5jeVtsZXZlbF07Cj4gIAl1aW50MTZfdCBjdXJfbGF0ZW5jeSA9IGRldl9w cml2LT53bS5jdXJfbGF0ZW5jeVtsZXZlbF07Cj4gQEAgLTIwMzgsMTEgKzIwNDMsMjkgQEAgc3Rh dGljIHZvaWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCWN1cl9sYXRlbmN5ICo9IDU7Cj4gIAl9Cj4gIAo+IC0JcmVzdWx0 LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVfcHJpX3dtKGNzdGF0ZSwgcHJpc3RhdGUsCj4gLQkJCQkJ ICAgICBwcmlfbGF0ZW5jeSwgbGV2ZWwpOwo+IC0JcmVzdWx0LT5zcHJfdmFsID0gaWxrX2NvbXB1 dGVfc3ByX3dtKGNzdGF0ZSwgc3Byc3RhdGUsIHNwcl9sYXRlbmN5KTsKPiAtCXJlc3VsdC0+Y3Vy X3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUsIGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7 Cj4gLQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9mYmNfd20oY3N0YXRlLCBwcmlzdGF0 ZSwgcmVzdWx0LT5wcmlfdmFsKTsKPiArCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2 X3ByaXYtPmRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiArCQlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBzdGF0ZSA9Cj4gKwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3Bs YW5lLT5iYXNlLnN0YXRlKTsKPiArCj4gKwkJc3dpdGNoIChpbnRlbF9wbGFuZS0+YmFzZS50eXBl KSB7Cj4gKwkJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+ICsJCQlyZXN1bHQtPnByaV92 YWwgPSBpbGtfY29tcHV0ZV9wcmlfd20oY3N0YXRlLCBwc3RhdGUsCj4gKwkJCQkJCQkgICAgIHBy aV9sYXRlbmN5LAo+ICsJCQkJCQkJICAgICBsZXZlbCk7Cj4gKwkJCXJlc3VsdC0+ZmJjX3ZhbCA9 IGlsa19jb21wdXRlX2ZiY193bShjc3RhdGUsIHBzdGF0ZSwKPiArCQkJCQkJCSAgICAgcmVzdWx0 LT5wcmlfdmFsKTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZ Ogo+ICsJCQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBwc3Rh dGUsCj4gKwkJCQkJCQkgICAgIHNwcl9sYXRlbmN5KTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBE Uk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4gKwkJCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRl X2N1cl93bShjc3RhdGUsIHBzdGF0ZSwKPiArCQkJCQkJCSAgICAgY3VyX2xhdGVuY3kpOwo+ICsJ CQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJcmVzdWx0LT5lbmFibGUgPSB0cnVlOwo+ICB9 Cj4gIAo+IEBAIC0yMzAxLDE5ICsyMzI0LDM0IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9s YXRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnRlbF9wcmludF93bV9sYXRlbmN5 KGRldiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kpOwo+ICB9Cj4gIAo+ ICtzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiArCQkJCSAgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnKQo+ICt7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiArCj4gKwkvKiBDb21wdXRlIHRoZSBjdXJyZW50 bHkgX2FjdGl2ZV8gY29uZmlnICovCj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxf Y3J0Yykgewo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICp3bSA9ICZpbnRlbF9jcnRj LT53bS5hY3RpdmU7Cj4gKwo+ICsJCWlmICghd20tPnBpcGVfZW5hYmxlZCkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCWNvbmZpZy0+c3ByaXRlc19lbmFibGVkIHw9IHdtLT5zcHJpdGVzX2VuYWJs ZWQ7Cj4gKwkJY29uZmlnLT5zcHJpdGVzX3NjYWxlZCB8PSB3bS0+c3ByaXRlc19zY2FsZWQ7Cj4g KwkJY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlKys7Cj4gKwl9Cj4gK30KPiArCj4gIC8qIENvbXB1 dGUgbmV3IHdhdGVybWFya3MgZm9yIHRoZSBwaXBlICovCj4gLXN0YXRpYyBpbnQgaWxrX2NvbXB1 dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAtCQkJICAgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIGJvb2wgaW50ZWxfY29tcHV0 ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gKwkJCQkgIHN0cnVj dCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAq cGlwZV93bTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRl djsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlID0gTlVMTDsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxf cGxhbmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwczsKPiAtCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcHJpc3RhdGUgPSBOVUxMOwo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpzcHJzdGF0ZSA9IE5VTEw7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1cnN0YXRl ID0gTlVMTDsKPiAgCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYp Owo+ICAJLyogTFAwIHdhdGVybWFyayBtYXhpbXVtcyBkZXBlbmQgb24gdGhpcyBwaXBlIGFsb25l ICovCj4gIAlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNvbmZpZyA9IHsKPiBAQCAtMjMyMSwyNCAr MjM1OSwxMSBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gIAl9Owo+ICAJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7Cj4g IAo+IC0JY3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9j cnRjKTsKPiAtCWlmIChJU19FUlIoY3N0YXRlKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihjc3RhdGUp Owo+IC0KPiAtCXBpcGVfd20gPSAmY3N0YXRlLT53bS5vcHRpbWFsLmlsazsKPiAtCj4gIAlmb3Jf ZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsK PiAtCQlwcyA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLAo+IC0JCQkJCQkmaW50 ZWxfcGxhbmUtPmJhc2UpOwo+IC0JCWlmIChJU19FUlIocHMpKQo+IC0JCQlyZXR1cm4gUFRSX0VS Uihwcyk7Cj4gLQo+IC0JCWlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9U WVBFX1BSSU1BUlkpCj4gLQkJCXByaXN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+ IC0JCWVsc2UgaWYgKGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfT1ZF UkxBWSkKPiAtCQkJc3Byc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7Cj4gLQkJZWxz ZSBpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4g LQkJCWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+ICsJCWlmIChpbnRlbF9w bGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkpIHsKPiArCQkJc3Byc3Rh dGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShpbnRlbF9wbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0KPiAgCX0KPiAgCj4gIAljb25maWcuc3ByaXRlc19lbmFibGVkID0gc3By c3RhdGUtPnZpc2libGU7Cj4gQEAgLTIzNDcsNyArMjM3Miw3IEBAIHN0YXRpYyBpbnQgaWxrX2Nv bXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQlkcm1fcmVj dF9oZWlnaHQoJnNwcnN0YXRlLT5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPnNy YykgPj4gMTYpOwo+ICAKPiAgCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNzdGF0ZS0+YmFzZS5h Y3RpdmU7Cj4gLQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBjb25maWcuc3ByaXRlc19lbmFi bGVkOwo+ICsJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4g IAlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IGNvbmZpZy5zcHJpdGVzX3NjYWxlZDsKPiAgCj4g IAkvKiBJTEsvU05COiBMUDIrIHdhdGVybWFya3Mgb25seSB3L28gc3ByaXRlcyAqLwo+IEBAIC0y MzU4LDI3ICsyMzgzLDI0IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCWlmIChjb25maWcuc3ByaXRlc19zY2FsZWQpCj4g IAkJbWF4X2xldmVsID0gMDsKPiAgCj4gLQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwg aW50ZWxfY3J0YywgMCwgY3N0YXRlLAo+IC0JCQkgICAgIHByaXN0YXRlLCBzcHJzdGF0ZSwgY3Vy c3RhdGUsICZwaXBlX3dtLT53bVswXSk7Cj4gKwlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJp diwgaW50ZWxfY3J0YywgMCwgY3N0YXRlLCAmcGlwZV93bS0+d21bMF0pOwo+ICAKPiAgCWlmIChJ U19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4gLQkJcGlwZV93bS0+bGluZXRp bWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShkZXYsCj4gLQkJCQkJCQkgICAgJmludGVsX2Ny dGMtPmJhc2UpOwo+ICsJCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2NvbXB1dGVfbGluZXRpbWVf d20oZGV2LCBjcnRjKTsKPiAgCj4gIAkvKiBMUDAgd2F0ZXJtYXJrcyBhbHdheXMgdXNlIDEvMiBE REIgcGFydGl0aW9uaW5nICovCj4gIAlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDAsICZj b25maWcsIElOVEVMX0REQl9QQVJUXzFfMiwgJm1heCk7Cj4gIAo+ICAJLyogQXQgbGVhc3QgTFAw IG11c3QgYmUgdmFsaWQgKi8KPiAgCWlmICghaWxrX3ZhbGlkYXRlX3dtX2xldmVsKDAsICZtYXgs ICZwaXBlX3dtLT53bVswXSkpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJcmV0dXJuIGZhbHNl Owo+ICAKPiAgCWlsa19jb21wdXRlX3dtX3JlZ19tYXhpbXVtcyhkZXYsIDEsICZtYXgpOwo+ICAK PiAgCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAgCQlz dHJ1Y3QgaW50ZWxfd21fbGV2ZWwgd20gPSB7fTsKPiAgCj4gLQkJaWxrX2NvbXB1dGVfd21fbGV2 ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIGxldmVsLCBjc3RhdGUsCj4gLQkJCQkgICAgIHByaXN0 YXRlLCBzcHJzdGF0ZSwgY3Vyc3RhdGUsICZ3bSk7Cj4gKwkJaWxrX2NvbXB1dGVfd21fbGV2ZWwo ZGV2X3ByaXYsIGludGVsX2NydGMsIGxldmVsLCBjc3RhdGUsICZ3bSk7Cj4gIAo+ICAJCS8qCj4g IAkJICogRGlzYWJsZSBhbnkgd2F0ZXJtYXJrIGxldmVsIHRoYXQgZXhjZWVkcyB0aGUKPiBAQCAt MjM5MSw3ICsyNDEzLDcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCXBpcGVfd20tPndtW2xldmVsXSA9IHdtOwo+ICAJ fQo+ICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gIC8qCj4gQEAg LTI0MDYsOSArMjQyOCw3IEBAIHN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJcmV0X3dtLT5lbmFibGUgPSB0cnVlOwo+ICAKPiAgCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSA9Cj4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0 Yy0+YmFzZS5zdGF0ZSk7Cj4gLQkJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9 ICZjc3RhdGUtPndtLm9wdGltYWwuaWxrOwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dt ICphY3RpdmUgPSAmaW50ZWxfY3J0Yy0+d20uYWN0aXZlOwo+ICAJCWNvbnN0IHN0cnVjdCBpbnRl bF93bV9sZXZlbCAqd20gPSAmYWN0aXZlLT53bVtsZXZlbF07Cj4gIAo+ICAJCWlmICghYWN0aXZl LT5waXBlX2VuYWJsZWQpCj4gQEAgLTI1NTYsMTUgKzI1NzYsMTQgQEAgc3RhdGljIHZvaWQgaWxr X2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCS8qIExQ MCByZWdpc3RlciB2YWx1ZXMgKi8KPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9j cnRjKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9Cj4gLQkJ CXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAkJZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9s ZXZlbCAqciA9ICZjc3RhdGUtPndtLm9wdGltYWwuaWxrLndtWzBdOwo+ICsJCWNvbnN0IHN0cnVj dCBpbnRlbF93bV9sZXZlbCAqciA9Cj4gKwkJCSZpbnRlbF9jcnRjLT53bS5hY3RpdmUud21bMF07 Cj4gIAo+ICAJCWlmIChXQVJOX09OKCFyLT5lbmFibGUpKQo+ICAJCQljb250aW51ZTsKPiAgCj4g LQkJcmVzdWx0cy0+d21fbGluZXRpbWVbcGlwZV0gPSBjc3RhdGUtPndtLm9wdGltYWwuaWxrLmxp bmV0aW1lOwo+ICsJCXJlc3VsdHMtPndtX2xpbmV0aW1lW3BpcGVdID0gaW50ZWxfY3J0Yy0+d20u YWN0aXZlLmxpbmV0aW1lOwo+ICAKPiAgCQlyZXN1bHRzLT53bV9waXBlW3BpcGVdID0KPiAgCQkJ KHItPnByaV92YWwgPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwKPiBAQCAtMjk0NiwxMiArMjk2 NSwxMSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ICAKPiAgc3RhdGljIHZvaWQKPiAgc2tsX2FsbG9jYXRl X3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gKwkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAo+ICAJCSAgICAgIHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZyA9ICZkZXZfcHJpdi0+d20u Y29uZmlnOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiAgCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiBAQCAtMzEyNiw2ICszMTQ0LDE1IEBAIHN0YXRp YyBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9jaGFuZ2VkKGNvbnN0IHN0cnVjdCBza2xfZGRiX2Fs bG9jYXRpb24gKm5ld19kZGIsCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2 b2lkIHNrbF9jb21wdXRlX3dtX2dsb2JhbF9wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gKwkJCQkJICAgICBzdHJ1Y3QgaW50ZWxfd21fY29uZmlnICpjb25maWcpCj4gK3sKPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMs ICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkKPiArCQljb25maWctPm51bV9waXBl c19hY3RpdmUgKz0gdG9faW50ZWxfY3J0YyhjcnRjKS0+YWN0aXZlOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAg CQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lLAo+IEBAIC0zNTMwLDI1ICszNTU3 LDI3IEBAIHN0YXRpYyB2b2lkIHNrbF9mbHVzaF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVf d20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgICAgICAgc3RydWN0IGludGVsX3dtX2Nv bmZpZyAqY29uZmlnLAo+ICAJCQkgICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRi LCAvKiBvdXQgKi8KPiAgCQkJICAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSAvKiBv dXQgKi8pCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCj4gLQlza2xfYWxsb2NhdGVfcGlwZV9kZGIo Y3N0YXRlLCBkZGIpOwo+ICsJc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgY29uZmlnLCBk ZGIpOwo+ICAJc2tsX2NvbXB1dGVfcGlwZV93bShjc3RhdGUsIGRkYiwgcGlwZV93bSk7Cj4gIAo+ IC0JaWYgKCFtZW1jbXAoJmludGVsX2NydGMtPndtLmFjdGl2ZS5za2wsIHBpcGVfd20sIHNpemVv ZigqcGlwZV93bSkpKQo+ICsJaWYgKCFtZW1jbXAoJmludGVsX2NydGMtPndtLnNrbF9hY3RpdmUs IHBpcGVfd20sIHNpemVvZigqcGlwZV93bSkpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlp bnRlbF9jcnRjLT53bS5hY3RpdmUuc2tsID0gKnBpcGVfd207Cj4gKwlpbnRlbF9jcnRjLT53bS5z a2xfYWN0aXZlID0gKnBpcGVfd207Cj4gIAo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB2b2lkIHNrbF91cGRhdGVfb3RoZXJfcGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgICAgIHN0cnVjdCBp bnRlbF93bV9jb25maWcgKmNvbmZpZywKPiAgCQkJCSAgICAgc3RydWN0IHNrbF93bV92YWx1ZXMg KnIpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+IEBAIC0zNTc4LDcg KzM2MDcsNyBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVfd20oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgCQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKPiAgCQkJY29udGlu dWU7Cj4gIAo+IC0JCXdtX2NoYW5nZWQgPSBza2xfdXBkYXRlX3BpcGVfd20oJmludGVsX2NydGMt PmJhc2UsCj4gKwkJd21fY2hhbmdlZCA9IHNrbF91cGRhdGVfcGlwZV93bSgmaW50ZWxfY3J0Yy0+ YmFzZSwgY29uZmlnLAo+ICAJCQkJCQkmci0+ZGRiLCAmcGlwZV93bSk7Cj4gIAo+ICAJCS8qCj4g QEAgLTM2MTksOCArMzY0OCw4IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g IAlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZkZXZfcHJpdi0+d20uc2tsX3Jlc3Vs dHM7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSk7Cj4gLQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20gPSAmY3N0 YXRlLT53bS5vcHRpbWFsLnNrbDsKPiArCXN0cnVjdCBza2xfcGlwZV93bSBwaXBlX3dtID0ge307 Cj4gKwlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNvbmZpZyA9IHt9Owo+ICAKPiAgCj4gIAkvKiBD bGVhciBhbGwgZGlydHkgZmxhZ3MgKi8KPiBAQCAtMzYyOCwxMyArMzY1NywxNSBAQCBzdGF0aWMg dm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlza2xfY2xl YXJfd20ocmVzdWx0cywgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAo+IC0JaWYgKCFza2xfdXBkYXRl X3BpcGVfd20oY3J0YywgJnJlc3VsdHMtPmRkYiwgcGlwZV93bSkpCj4gKwlza2xfY29tcHV0ZV93 bV9nbG9iYWxfcGFyYW1ldGVycyhkZXYsICZjb25maWcpOwo+ICsKPiArCWlmICghc2tsX3VwZGF0 ZV9waXBlX3dtKGNydGMsICZjb25maWcsICZyZXN1bHRzLT5kZGIsICZwaXBlX3dtKSkKPiAgCQly ZXR1cm47Cj4gIAo+IC0Jc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsIHBpcGVfd20sIHJlc3Vs dHMsIGludGVsX2NydGMpOwo+ICsJc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsICZwaXBlX3dt LCByZXN1bHRzLCBpbnRlbF9jcnRjKTsKPiAgCXJlc3VsdHMtPmRpcnR5W2ludGVsX2NydGMtPnBp cGVdID0gdHJ1ZTsKPiAgCj4gLQlza2xfdXBkYXRlX290aGVyX3BpcGVfd20oZGV2LCBjcnRjLCBy ZXN1bHRzKTsKPiArCXNrbF91cGRhdGVfb3RoZXJfcGlwZV93bShkZXYsIGNydGMsICZjb25maWcs IHJlc3VsdHMpOwo+ICAJc2tsX3dyaXRlX3dtX3ZhbHVlcyhkZXZfcHJpdiwgcmVzdWx0cyk7Cj4g IAlza2xfZmx1c2hfd21fdmFsdWVzKGRldl9wcml2LCByZXN1bHRzKTsKPiAgCj4gQEAgLTM2NDIs MjMgKzM2NzMsNTAgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gIAlkZXZfcHJpdi0+d20uc2tsX2h3ID0gKnJlc3VsdHM7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4g LQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBscF93bV8xXzIgPSB7fSwgbHBfd21fNV82ID0ge30sICpi ZXN0X2xwX3dtOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaWxrX3dtX21heGltdW1zIG1heDsKPiAtCXN0cnVjdCBpbnRl bF93bV9jb25maWcgKmNvbmZpZyA9ICZkZXZfcHJpdi0+d20uY29uZmlnOwo+ICAJc3RydWN0IGls a193bV92YWx1ZXMgcmVzdWx0cyA9IHt9Owo+ICAJZW51bSBpbnRlbF9kZGJfcGFydGl0aW9uaW5n IHBhcnRpdGlvbmluZzsKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtIHBpcGVfd20gPSB7fTsKPiAr CXN0cnVjdCBpbnRlbF9waXBlX3dtIGxwX3dtXzFfMiA9IHt9LCBscF93bV81XzYgPSB7fSwgKmJl c3RfbHBfd207Cj4gKwlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNvbmZpZyA9IHt9Owo+ICAKPiAt CWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgY29uZmlnLCBJTlRFTF9EREJfUEFSVF8x XzIsICZtYXgpOwo+IC0JaWxrX3dtX21lcmdlKGRldiwgY29uZmlnLCAmbWF4LCAmbHBfd21fMV8y KTsKPiArCVdBUk5fT04oY3N0YXRlLT5iYXNlLmFjdGl2ZSAhPSBpbnRlbF9jcnRjLT5hY3RpdmUp Owo+ICsKPiArCS8qCj4gKwkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxvdyBwb3dl ciB3YXRlcm1hcmtzIGZvciBhdCBsZWFzdAo+ICsJICogb25lIGZyYW1lIGJlZm9yZSBlbmFibGlu ZyBzY2FsaW5nLiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUgcmUtZW5hYmxlZAo+ICsJICogd2hlbiBz Y2FsaW5nIGlzIGRpc2FibGVkLgo+ICsJICoKPiArCSAqIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRl U2NhbGluZzppdmIKPiArCSAqLwo+ICsJaWYgKGNzdGF0ZS0+ZGlzYWJsZV9scF93bSkgewo+ICsJ CWlsa19kaXNhYmxlX2xwX3dtKGRldik7Cj4gKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwg aW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwl9Cj4gKwo+ICsJaW50ZWxfY29tcHV0ZV9waXBlX3dtKGNz dGF0ZSwgJnBpcGVfd20pOwo+ICsKPiArCWlmICghbWVtY21wKCZpbnRlbF9jcnRjLT53bS5hY3Rp dmUsICZwaXBlX3dtLCBzaXplb2YocGlwZV93bSkpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpbnRl bF9jcnRjLT53bS5hY3RpdmUgPSBwaXBlX3dtOwo+ICsKPiArCWlsa19jb21wdXRlX3dtX2NvbmZp ZyhkZXYsICZjb25maWcpOwo+ICsKPiArCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwg JmNvbmZpZywgSU5URUxfRERCX1BBUlRfMV8yLCAmbWF4KTsKPiArCWlsa193bV9tZXJnZShkZXYs ICZjb25maWcsICZtYXgsICZscF93bV8xXzIpOwo+ICAKPiAgCS8qIDUvNiBzcGxpdCBvbmx5IGlu IHNpbmdsZSBwaXBlIGNvbmZpZyBvbiBJVkIrICovCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNyAmJgo+IC0JICAgIGNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZSA9PSAxICYmIGNvbmZp Zy0+c3ByaXRlc19lbmFibGVkKSB7Cj4gLQkJaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAx LCBjb25maWcsIElOVEVMX0REQl9QQVJUXzVfNiwgJm1heCk7Cj4gLQkJaWxrX3dtX21lcmdlKGRl diwgY29uZmlnLCAmbWF4LCAmbHBfd21fNV82KTsKPiArCSAgICBjb25maWcubnVtX3BpcGVzX2Fj dGl2ZSA9PSAxICYmIGNvbmZpZy5zcHJpdGVzX2VuYWJsZWQpIHsKPiArCQlpbGtfY29tcHV0ZV93 bV9tYXhpbXVtcyhkZXYsIDEsICZjb25maWcsIElOVEVMX0REQl9QQVJUXzVfNiwgJm1heCk7Cj4g KwkJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzVfNik7Cj4gIAo+ICAJ CWJlc3RfbHBfd20gPSBpbGtfZmluZF9iZXN0X3Jlc3VsdChkZXYsICZscF93bV8xXzIsICZscF93 bV81XzYpOwo+ICAJfSBlbHNlIHsKPiBAQCAtMzY3MywzMSArMzczMSw2IEBAIHN0YXRpYyB2b2lk IGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaWxrX3dyaXRlX3dtX3ZhbHVlcyhkZXZfcHJpdiwgJnJlc3VsdHMpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAtewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYp Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp Owo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOwo+IC0KPiAtCVdBUk5fT04oY3N0YXRlLT5iYXNlLmFjdGl2ZSAhPSBp bnRlbF9jcnRjLT5hY3RpdmUpOwo+IC0KPiAtCS8qCj4gLQkgKiBJVkIgd29ya2Fyb3VuZDogbXVz dCBkaXNhYmxlIGxvdyBwb3dlciB3YXRlcm1hcmtzIGZvciBhdCBsZWFzdAo+IC0JICogb25lIGZy YW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5nLiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUgcmUtZW5h YmxlZAo+IC0JICogd2hlbiBzY2FsaW5nIGlzIGRpc2FibGVkLgo+IC0JICoKPiAtCSAqIFdhQ3hT UkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIKPiAtCSAqLwo+IC0JaWYgKGNzdGF0ZS0+ZGlz YWJsZV9scF93bSkgewo+IC0JCWlsa19kaXNhYmxlX2xwX3dtKGNydGMtPmRldik7Cj4gLQkJaW50 ZWxfd2FpdF9mb3JfdmJsYW5rKGNydGMtPmRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gLQl9Cj4g LQo+IC0JaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7 Cj4gLQo+IC0JaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7Cj4gLX0KPiAtCj4gIHN0 YXRpYyB2b2lkIHNrbF9waXBlX3dtX2FjdGl2ZV9zdGF0ZSh1aW50MzJfdCB2YWwsCj4gIAkJCQkg ICAgIHN0cnVjdCBza2xfcGlwZV93bSAqYWN0aXZlLAo+ICAJCQkJICAgICBib29sIGlzX3RyYW5z d20sCj4gQEAgLTM3NDgsOCArMzc4MSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IHNrbF93bV92YWx1ZXMg Kmh3ID0gJmRldl9wcml2LT53bS5za2xfaHc7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gLQlzdHJ1Y3Qgc2ts X3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndtLm9wdGltYWwuc2tsOwo+ICsJc3RydWN0IHNr bF9waXBlX3dtICphY3RpdmUgPSAmaW50ZWxfY3J0Yy0+d20uc2tsX2FjdGl2ZTsKPiAgCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWludCBsZXZlbCwgaSwgbWF4X2xldmVs Owo+ICAJdWludDMyX3QgdGVtcDsKPiBAQCAtMzc5Myw4ICszODI1LDYgQEAgc3RhdGljIHZvaWQg c2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAl0 ZW1wID0gaHctPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl07Cj4gIAlza2xfcGlwZV93 bV9hY3RpdmVfc3RhdGUodGVtcCwgYWN0aXZlLCB0cnVlLCB0cnVlLCBpLCAwKTsKPiAtCj4gLQlp bnRlbF9jcnRjLT53bS5hY3RpdmUuc2tsID0gKmFjdGl2ZTsKPiAgfQo+ICAKPiAgdm9pZCBza2xf d21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTM4MTQsOCArMzg0 NCw3IEBAIHN0YXRpYyB2b2lkIGlsa19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAJc3RydWN0IGlsa193bV92YWx1ZXMgKmh3ID0gJmRldl9wcml2LT53bS5o dzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKTsKPiAtCXN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAmY3N0 YXRlLT53bS5vcHRpbWFsLmlsazsKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAm aW50ZWxfY3J0Yy0+d20uYWN0aXZlOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+ICAJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB3bTBfcGlwZV9yZWdbXSA9IHsKPiAg CQlbUElQRV9BXSA9IFdNMF9QSVBFQV9JTEssCj4gQEAgLTM4NTQsOCArMzg4Myw2IEBAIHN0YXRp YyB2b2lkIGlsa19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g IAkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykKPiAgCQkJYWN0 aXZlLT53bVtsZXZlbF0uZW5hYmxlID0gdHJ1ZTsKPiAgCX0KPiAtCj4gLQlpbnRlbF9jcnRjLT53 bS5hY3RpdmUuaWxrID0gKmFjdGl2ZTsKPiAgfQo+ICAKPiAgI2RlZmluZSBfRldfV00odmFsdWUs IHBsYW5lKSBcCj4gQEAgLTcwMTUsNyArNzA0Miw2IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCSAgICAoIUlTX0dFTjUoZGV2KSAmJiBkZXZfcHJpdi0+ d20ucHJpX2xhdGVuY3lbMF0gJiYKPiAgCQkgICAgIGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeVsw XSAmJiBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3lbMF0pKSB7Cj4gIAkJCWRldl9wcml2LT5kaXNw bGF5LnVwZGF0ZV93bSA9IGlsa191cGRhdGVfd207Cj4gLQkJCWRldl9wcml2LT5kaXNwbGF5LmNv bXB1dGVfcGlwZV93bSA9IGlsa19jb21wdXRlX3BpcGVfd207Cj4gIAkJfSBlbHNlIHsKPiAgCQkJ RFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgZGlzcGxheSBwbGFuZSBsYXRlbmN5LiAiCj4g IAkJCQkgICAgICAiRGlzYWJsZSBDeFNSXG4iKTsKPiAtLSAKPiAyLjEuNAo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK