From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH] drm/i915: Partial revert of atomic watermark series Date: Fri, 9 Oct 2015 20:33:16 +0000 Message-ID: <1444422794.2974.33.camel@intel.com> 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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id D3CDC6E10D for ; Fri, 9 Oct 2015 13:33:17 -0700 (PDT) In-Reply-To: <1444343305-321-1-git-send-email-matthew.d.roper@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Roper, Matthew D" , "intel-gfx@lists.freedesktop.org" Cc: "Vetter, Daniel" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE1LTEwLTA4IMOgcyAxNToyOCAtMDcwMCwgTWF0dCBSb3BlciBlc2NyZXZldToN Cj4gSXQncyBiZWVuIHJlcG9ydGVkIHRoYXQgdGhlIGF0b21pYyB3YXRlcm1hcmsgc2VyaWVzIHRy aWdnZXJzIHNvbWUNCj4gcmVncmVzc2lvbnMgb24gU0tMLCB3aGljaCB3ZSBoYXZlbid0IGJlZW4g YWJsZSB0byB0cmFjayBkb3duIHlldC4gDQo+ICBMZXQncw0KPiB0ZW1wb3JhcmlseSByZXZlcnQg dGhlc2UgcGF0Y2hlcyB3aGlsZSB3ZSB0cmFjayBkb3duIHRoZSByb290IGNhdXNlLg0KPiANCj4g VGhpcyBjb21taXQgc3F1YXNoZXMgdGhlIHJldmVydHMgb2Y6DQo+ICAgNzYzMDViMSBkcm0vaTkx NTogQ2FsY3VsYXRlIHdhdGVybWFyayBjb25maWd1cmF0aW9uIGR1cmluZyBhdG9taWMNCj4gY2hl Y2sgKHYyKQ0KPiAgIGE0NjExZTQgZHJtL2k5MTU6IERvbid0IHNldCBwbGFuZSB2aXNpYmxlIGR1 cmluZyBIVyByZWFkb3V0IGlmIENSVEMNCj4gaXMgb2ZmDQo+ICAgYTI4MTcwZiBkcm0vaTkxNTog Q2FsY3VsYXRlIElMSy1zdHlsZSB3YXRlcm1hcmtzIGR1cmluZyBhdG9taWMNCj4gY2hlY2sgKHYz KQ0KPiAgIGRlNGE5ZjggZHJtL2k5MTU6IENhbGN1bGF0ZSBwaXBlIHdhdGVybWFya3MgaW50byBD UlRDIHN0YXRlICh2MykNCj4gICBkZTE2NWUwIGRybS9pOTE1OiBSZWZhY3RvciBpbGtfdXBkYXRl X3dtICh2MykNCg0KSSBzZWUgdGhpcyBwYXRjaCBpcyBhbHJlYWR5IGFwcGxpZWQuIFVuZm9ydHVu YXRlbHkgaXQgZG9lc24ndCBzb2x2ZSB0aGUNCnByb2JsZW0gZm9yIG1lLiBJIHdhcyBjYXJyeWlu ZyBhIHJldmVydCBvZiB0aGVzZSBwYXRjaGVzIGFuZCBhbHNvIG9mOg0KICAgIDQ3Yzk5NDM4YjUy ZDEyZGY1MGUxODI1ODM2MzRhNGNmZWRlM2M5MjANCiAgICBkcm0vaTkxNTogRHJvcCBpbnRlbF91 cGRhdGVfc3ByaXRlX3dhdGVybWFya3MNCg0KQnV0IHRvZGF5IEkgZGlkIGEgZ2l0IHJlYmFzZSBh bmQganVzdCBuaWdodGx5ICsgcmV2ZXJ0IG9mIDQ3Yzk5NCBpcyBub3QNCnNvbHZpbmcgdGhlIHBy b2JsZW0gYW55bW9yZS4uLiBJIHN1c3BlY3QgdGhhdCBzb21ldGhpbmcgZWxzZSB3YXMgbWVyZ2Vk DQppbiB0aGUgbWVhbnRpbWUgdGhhdCBicm9rZSB0aGUgdHJlZSBldmVuIG1vcmUsIGFuZCBhIG5v cm1hbCBnaXQgYmlzZWN0DQp3b24ndCBoZWxwIGFueW1vcmUgc2luY2UgSSdsbCBoYXZlIHRvIGFw cGx5IHRvbnMgb2YgYWRkaXRpb25hbCBwYXRjaGVzDQpvbiB0b3Agb2YgZWFjaCBiaXNlY3Qgc3Rl cC4uLiBJJ2xsIHRyeSB0byBkaXNjb3ZlciB3aGF0IGVsc2UgaXMgY2F1c2luZw0KdGhlIHByb2Js ZW0uDQoNCkFueXdheSwgdGhhbmtzIGZvciB0aGUgaGVscCENCg0KPiANCj4gUmVmZXJlbmNlOiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2ludGVsLWdmeC8yMDE1LU9jdG9i DQo+IGVyLzA3NzE5MC5odG1sDQo+IENjOiAiWmFub25pLCBQYXVsbyBSIiA8cGF1bG8uci56YW5v bmlAaW50ZWwuY29tPg0KPiBDYzogIlZldHRlciwgRGFuaWVsIiA8ZGFuaWVsLnZldHRlckBpbnRl bC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRl bC5jb20+DQo+IC0tLQ0KPiBJIGp1c3QgZ290IGFjY2VzcyB0byBCWFQgaGFyZHdhcmUsIHNvIEkn bSBob3BpbmcgdGhhdCB0aGUgU0tMDQo+IHByb2JsZW1zIHJlcG9ydGVkDQo+IGJ5IFBhdWxvIHdp bGwgYWxzbyBiZSByZXByb2R1Y2libGUgb24gQlhULiAgSG93ZXZlciBJJ20gbm90IGdvaW5nIHRv DQo+IGJlIGFibGUgdG8NCj4gd29yayBvbiB0aGlzIGZvciBhIGNvdXBsZSBkYXlzLCBzbyBpdCdz IHByb2JhYmx5IGJldHRlciB0byBkbyBzb21lDQo+IHJldmVydHMgbm93DQo+IHNvIHRoYXQgd2Ug ZG9uJ3QgbGVhdmUgZGktbmlnaHRseSBpbiBhIGJyb2tlbiBzdGF0ZSBpbiB0aGUgbWVhbnRpbWUu DQo+IA0KPiBBbHNvIG5vdGUgdGhhdCB0aGlzIGlzIGEgZGlmZmVyZW50IHJlZ3Jlc3Npb24gdGhh biB0aGUgb25lIHJlcG9ydGVkDQo+IGJ5IEphbmkNCj4gKGZvciB3aGljaCB3ZSd2ZSBhbHJlYWR5 IHJldmVydGVkIGEgY291cGxlIHBhdGNoZXMpOyBoaXMgaXNzdWUNCj4gaGFwcGVucyBvbiB0aGUN Cj4gSUxLLXN0eWxlIHdhdGVybWFyayBwYXRoIHdoaWNoIGlzbid0IHJlbGV2YW50IGZvciBQYXVs bydzIGlzc3Vlcw0KPiBoZXJlLg0KPiANCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICB8ICAxMiAtLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgIDYwICstLS0tLS0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg IHwgIDQ5ICsrKy0tLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAg fCAyMzIgKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KPiAtLS0tLS0tLS0tDQo+ICA0IGZpbGVz IGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAyMDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gaW5kZXggZmJmMGFlOS4uNGIwMmJlNyAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+IEBAIC02MjcsOCArNjI3LDYgQEAgc3RydWN0IGRybV9p OTE1X2Rpc3BsYXlfZnVuY3Mgew0KPiAgCQkJICBpbnQgdGFyZ2V0LCBpbnQgcmVmY2xrLA0KPiAg CQkJICBzdHJ1Y3QgZHBsbCAqbWF0Y2hfY2xvY2ssDQo+ICAJCQkgIHN0cnVjdCBkcGxsICpiZXN0 X2Nsb2NrKTsNCj4gLQlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLA0KPiAtCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7DQo+ICAJ dm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsNCj4gIAlpbnQgKCptb2Rl c2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7DQo+ICAJdm9p ZCAoKm1vZGVzZXRfY29tbWl0X2NkY2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQ0KPiAqc3Rh dGUpOw0KPiBAQCAtMTY5MiwxMyArMTY5MCw2IEBAIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFy YW1zIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgICAgICpyZXF1ZXN0Ow0KPiAg fTsNCj4gIA0KPiAtLyogdXNlZCBpbiBjb21wdXRpbmcgdGhlIG5ldyB3YXRlcm1hcmtzIHN0YXRl ICovDQo+IC1zdHJ1Y3QgaW50ZWxfd21fY29uZmlnIHsNCj4gLQl1bnNpZ25lZCBpbnQgbnVtX3Bp cGVzX2FjdGl2ZTsNCj4gLQlib29sIHNwcml0ZXNfZW5hYmxlZDsNCj4gLQlib29sIHNwcml0ZXNf c2NhbGVkOw0KPiAtfTsNCj4gLQ0KPiAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgew0KPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXY7DQo+ICAJc3RydWN0IGttZW1fY2FjaGUgKm9iamVjdHM7DQo+ IEBAIC0xOTIzLDkgKzE5MTQsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+ICAJCSAq Lw0KPiAgCQl1aW50MTZfdCBza2xfbGF0ZW5jeVs4XTsNCj4gIA0KPiAtCQkvKiBDb21taXR0ZWQg d20gY29uZmlnICovDQo+IC0JCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnOw0KPiAtDQo+ ICAJCS8qDQo+ICAJCSAqIFRoZSBza2xfd21fdmFsdWVzIHN0cnVjdHVyZSBpcyBhIGJpdCB0b28g YmlnIGZvcg0KPiBzdGFjaw0KPiAgCQkgKiBhbGxvY2F0aW9uLCBzbyB3ZSBrZWVwIHRoZSBzdGFn aW5nIHN0cnVjdCB3aGVyZQ0KPiB3ZSBzdG9yZQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jDQo+IGluZGV4IDUzOWMzNzMuLmQ4NGQ1YzAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4gQEAgLTExODM3LDEyICsxMTgzNyw2IEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0DQo+IGRybV9jcnRjICpjcnRjLA0KPiAg CX0NCj4gIA0KPiAgCXJldCA9IDA7DQo+IC0JaWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVf cGlwZV93bSkgew0KPiAtCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20o aW50ZWxfY3J0YywNCj4gc3RhdGUpOw0KPiAtCQlpZiAocmV0KQ0KPiAtCQkJcmV0dXJuIHJldDsN Cj4gLQl9DQo+IC0NCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgew0KPiAgCQlp ZiAobW9kZV9jaGFuZ2VkKQ0KPiAgCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBl X2NvbmZpZyk7DQo+IEBAIC0xMzA0OCw0NSArMTMwNDIsNiBAQCBzdGF0aWMgaW50IGludGVsX21v ZGVzZXRfY2hlY2tzKHN0cnVjdA0KPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIAlyZXR1 cm4gMDsNCj4gIH0NCj4gIA0KPiAtLyoNCj4gLSAqIEhhbmRsZSBjYWxjdWxhdGlvbiBvZiB2YXJp b3VzIHdhdGVybWFyayBkYXRhIGF0IHRoZSBlbmQgb2YgdGhlDQo+IGF0b21pYyBjaGVjaw0KPiAt ICogcGhhc2UuICBUaGUgY29kZSBoZXJlIHNob3VsZCBiZSBydW4gYWZ0ZXIgdGhlIHBlci1jcnRj IGFuZCBwZXINCj4gLXBsYW5lICdjaGVjaycNCj4gLSAqIGhhbmRsZXJzIHRvIGVuc3VyZSB0aGF0 IGFsbCBkZXJpdmVkIHN0YXRlIGhhcyBiZWVuIHVwZGF0ZWQuDQo+IC0gKi8NCj4gLXN0YXRpYyB2 b2lkIGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0K PiAtew0KPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Ow0KPiAtCXN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0NCj4gdG9faW50ZWxfYXRvbWljX3N0 YXRlKHN0YXRlKTsNCj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQo+IC0Jc3RydWN0IGRybV9j cnRjX3N0YXRlICpjc3RhdGU7DQo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7DQo+IC0Jc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOw0KPiAtDQo+IC0JLyoNCj4gLQkgKiBDYWxjdWxh dGUgd2F0ZXJtYXJrIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBub3cgdGhhdA0KPiBkZXJpdmVkDQo+ IC0JICogcGxhbmUvY3J0YyBzdGF0ZSBpcyBhbGwgcHJvcGVybHkgdXBkYXRlZC4NCj4gLQkgKi8N Cj4gLQlkcm1fZm9yX2VhY2hfY3J0YyhjcnRjLCBkZXYpIHsNCj4gLQkJY3N0YXRlID0gZHJtX2F0 b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwNCj4gY3J0YykgPzoNCj4gLQkJCWNy dGMtPnN0YXRlOw0KPiAtDQo+IC0JCWlmIChjc3RhdGUtPmFjdGl2ZSkNCj4gLQkJCWludGVsX3N0 YXRlLT53bV9jb25maWcubnVtX3BpcGVzX2FjdGl2ZSsrOw0KPiAtCX0NCj4gLQlkcm1fZm9yX2Vh Y2hfbGVnYWN5X3BsYW5lKHBsYW5lLCBkZXYpIHsNCj4gLQkJcHN0YXRlID0gZHJtX2F0b21pY19n ZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUoc3RhdGUsDQo+IHBsYW5lKSA/Og0KPiAtCQkJcGxhbmUt PnN0YXRlOw0KPiAtDQo+IC0JCWlmICghdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKS0+dmlz aWJsZSkNCj4gLQkJCWNvbnRpbnVlOw0KPiAtDQo+IC0JCWludGVsX3N0YXRlLT53bV9jb25maWcu c3ByaXRlc19lbmFibGVkID0gdHJ1ZTsNCj4gLQkJaWYgKHBzdGF0ZS0+Y3J0Y193ICE9IHBzdGF0 ZS0+c3JjX3cgPj4gMTYgfHwNCj4gLQkJICAgIHBzdGF0ZS0+Y3J0Y19oICE9IHBzdGF0ZS0+c3Jj X2ggPj4gMTYpDQo+IC0JCQlpbnRlbF9zdGF0ZS0+d21fY29uZmlnLnNwcml0ZXNfc2NhbGVkID0N Cj4gdHJ1ZTsNCj4gLQl9DQo+IC19DQo+IC0NCj4gIC8qKg0KPiAgICogaW50ZWxfYXRvbWljX2No ZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0DQo+ICAgKiBAZGV2OiBkcm0gZGV2aWNlDQo+IEBA IC0xMzA5NSw3ICsxMzA1MCw2IEBAIHN0YXRpYyB2b2lkIGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3Ry dWN0DQo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gIAkJCSAgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICppbnRlbF9zdGF0ZSA9DQo+IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7DQo+ICAJc3Ry dWN0IGRybV9jcnRjICpjcnRjOw0KPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsNCj4gIAlpbnQgcmV0LCBpOw0KPiBAQCAtMTMxNTksMTUgKzEzMTEzLDEwIEBAIHN0YXRpYyBp bnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdA0KPiBkcm1fZGV2aWNlICpkZXYsDQo+ICAJCWlm IChyZXQpDQo+ICAJCQlyZXR1cm4gcmV0Ow0KPiAgCX0gZWxzZQ0KPiAtCQlpbnRlbF9zdGF0ZS0+ Y2RjbGsgPSB0b19pOTE1KHN0YXRlLT5kZXYpDQo+IC0+Y2RjbGtfZnJlcTsNCj4gLQ0KPiAtCXJl dCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdGF0ZS0+ZGV2LCBzdGF0ZSk7DQo+ IC0JaWYgKHJldCkNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQ0KPiAtCWNhbGNfd2F0ZXJtYXJrX2Rh dGEoc3RhdGUpOw0KPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsayA9DQo+ ICsJCQl0b19pOTE1KHN0YXRlLT5kZXYpLT5jZGNsa19mcmVxOw0KPiAgDQo+IC0JcmV0dXJuIDA7 DQo+ICsJcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdGF0ZS0+ZGV2LCBz dGF0ZSk7DQo+ICB9DQo+ICANCj4gIC8qKg0KPiBAQCAtMTMyMDcsNyArMTMxNTYsNiBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0DQo+IGRybV9kZXZpY2UgKmRldiwNCj4g IAkJcmV0dXJuIHJldDsNCj4gIA0KPiAgCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2 LCBzdGF0ZSk7DQo+IC0JZGV2X3ByaXYtPndtLmNvbmZpZyA9IHRvX2ludGVsX2F0b21pY19zdGF0 ZShzdGF0ZSkNCj4gLT53bV9jb25maWc7DQo+ICANCj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7DQo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsNCj4gQEAgLTE1MjIxLDcgKzE1MTY5LDcg QEAgc3RhdGljIHZvaWQgcmVhZG91dF9wbGFuZV9zdGF0ZShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAq Y3J0YykNCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0NCj4gIAkJ dG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpOw0KPiAgDQo+IC0JcGxhbmVfc3Rh dGUtPnZpc2libGUgPSBjcnRjLT5hY3RpdmUgJiYNCj4gKwlwbGFuZV9zdGF0ZS0+dmlzaWJsZSA9 DQo+ICAJCXByaW1hcnlfZ2V0X2h3X3N0YXRlKHRvX2ludGVsX3BsYW5lKHByaW1hcnkpKTsNCj4g IA0KPiAgCWlmIChwbGFuZV9zdGF0ZS0+dmlzaWJsZSkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgNCj4gaW5kZXggZTMyMDgyNS4uOTFiNmI0MCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgNCj4gQEAgLTI1MCw3ICsyNTAsNiBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl IHsNCj4gIAl1bnNpZ25lZCBpbnQgY2RjbGs7DQo+ICAJYm9vbCBkcGxsX3NldDsNCj4gIAlzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHNoYXJlZF9kcGxsW0k5MTVfTlVNX1BMTFNdOw0K PiAtCXN0cnVjdCBpbnRlbF93bV9jb25maWcgd21fY29uZmlnOw0KPiAgfTsNCj4gIA0KPiAgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlIHsNCj4gQEAgLTMzNSwyMSArMzM0LDYgQEAgc3RydWN0IGlu dGVsX2NydGNfc2NhbGVyX3N0YXRlIHsNCj4gIC8qIGRybV9tb2RlLT5wcml2YXRlX2ZsYWdzICov DQo+ICAjZGVmaW5lIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCAxDQo+ICANCj4gLXN0cnVjdCBp bnRlbF9waXBlX3dtIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgd21bNV07DQo+IC0JdWlu dDMyX3QgbGluZXRpbWU7DQo+IC0JYm9vbCBmYmNfd21fZW5hYmxlZDsNCj4gLQlib29sIHBpcGVf ZW5hYmxlZDsNCj4gLQlib29sIHNwcml0ZXNfZW5hYmxlZDsNCj4gLQlib29sIHNwcml0ZXNfc2Nh bGVkOw0KPiAtfTsNCj4gLQ0KPiAtc3RydWN0IHNrbF9waXBlX3dtIHsNCj4gLQlzdHJ1Y3Qgc2ts X3dtX2xldmVsIHdtWzhdOw0KPiAtCXN0cnVjdCBza2xfd21fbGV2ZWwgdHJhbnNfd207DQo+IC0J dWludDMyX3QgbGluZXRpbWU7DQo+IC19Ow0KPiAtDQo+ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSB7DQo+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlIGJhc2U7DQo+ICANCj4gQEAgLTQ4NywxNyAr NDcxLDYgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgew0KPiAgDQo+ICAJLyogSVZCIHNwcml0 ZSBzY2FsaW5nIHcvYQ0KPiAoV2FDeFNSRGlzYWJsZWRGb3JTcHJpdGVTY2FsaW5nOml2YikgKi8N Cj4gIAlib29sIGRpc2FibGVfbHBfd207DQo+IC0NCj4gLQlzdHJ1Y3Qgew0KPiAtCQkvKg0KPiAt CQkgKiBvcHRpbWFsIHdhdGVybWFya3MsIHByb2dyYW1tZWQgcG9zdC12Ymxhbmsgd2hlbg0KPiB0 aGlzIHN0YXRlDQo+IC0JCSAqIGlzIGNvbW1pdHRlZA0KPiAtCQkgKi8NCj4gLQkJdW5pb24gew0K PiAtCQkJc3RydWN0IGludGVsX3BpcGVfd20gaWxrOw0KPiAtCQkJc3RydWN0IHNrbF9waXBlX3dt IHNrbDsNCj4gLQkJfSBvcHRpbWFsOw0KPiAtCX0gd207DQo+ICB9Ow0KPiAgDQo+ICBzdHJ1Y3Qg dmx2X3dtX3N0YXRlIHsNCj4gQEAgLTUwOSw2ICs0ODIsMTUgQEAgc3RydWN0IHZsdl93bV9zdGF0 ZSB7DQo+ICAJYm9vbCBjeHNyOw0KPiAgfTsNCj4gIA0KPiArc3RydWN0IGludGVsX3BpcGVfd20g ew0KPiArCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bVs1XTsNCj4gKwl1aW50MzJfdCBsaW5ldGlt ZTsNCj4gKwlib29sIGZiY193bV9lbmFibGVkOw0KPiArCWJvb2wgcGlwZV9lbmFibGVkOw0KPiAr CWJvb2wgc3ByaXRlc19lbmFibGVkOw0KPiArCWJvb2wgc3ByaXRlc19zY2FsZWQ7DQo+ICt9Ow0K PiArDQo+ICBzdHJ1Y3QgaW50ZWxfbW1pb19mbGlwIHsNCj4gIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg d29yazsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsNCj4gQEAgLTUxNiw2ICs0 OTgsMTIgQEAgc3RydWN0IGludGVsX21taW9fZmxpcCB7DQo+ICAJc3RydWN0IGludGVsX2NydGMg KmNydGM7DQo+ICB9Ow0KPiAgDQo+ICtzdHJ1Y3Qgc2tsX3BpcGVfd20gew0KPiArCXN0cnVjdCBz a2xfd21fbGV2ZWwgd21bOF07DQo+ICsJc3RydWN0IHNrbF93bV9sZXZlbCB0cmFuc193bTsNCj4g Kwl1aW50MzJfdCBsaW5ldGltZTsNCj4gK307DQo+ICsNCj4gIC8qDQo+ICAgKiBUcmFja2luZyBv ZiBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwZXJmb3JtZWQgYXQgdGhlDQo+IGJlZ2lubmlu Zy9lbmQgb2YgYW4NCj4gICAqIGF0b21pYyBjb21taXQsIG91dHNpZGUgdGhlIGF0b21pYyBzZWN0 aW9uIHdoZXJlIGludGVycnVwdHMgYXJlDQo+IGRpc2FibGVkLg0KPiBAQCAtNTgzLDEwICs1NzEs OSBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7DQo+ICAJLyogcGVyLXBpcGUgd2F0ZXJtYXJrIHN0YXRl ICovDQo+ICAJc3RydWN0IHsNCj4gIAkJLyogd2F0ZXJtYXJrcyBjdXJyZW50bHkgYmVpbmcgdXNl ZCAgKi8NCj4gLQkJdW5pb24gew0KPiAtCQkJc3RydWN0IGludGVsX3BpcGVfd20gaWxrOw0KPiAt CQkJc3RydWN0IHNrbF9waXBlX3dtIHNrbDsNCj4gLQkJfSBhY3RpdmU7DQo+ICsJCXN0cnVjdCBp bnRlbF9waXBlX3dtIGFjdGl2ZTsNCj4gKwkJLyogU0tMIHdtIHZhbHVlcyBjdXJyZW50bHkgaW4g dXNlICovDQo+ICsJCXN0cnVjdCBza2xfcGlwZV93bSBza2xfYWN0aXZlOw0KPiAgCQkvKiBhbGxv dyBDeFNSIG9uIHRoaXMgcGlwZSAqLw0KPiAgCQlib29sIGN4c3JfYWxsb3dlZDsNCj4gIAl9IHdt Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMNCj4gaW5kZXggNjBkMTIwYy4uNDk5MzY5NSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IEBAIC0xNzcyLDYgKzE3NzIsMTMgQEAg c3RydWN0IGlsa193bV9tYXhpbXVtcyB7DQo+ICAJdWludDE2X3QgZmJjOw0KPiAgfTsNCj4gIA0K PiArLyogdXNlZCBpbiBjb21wdXRpbmcgdGhlIG5ldyB3YXRlcm1hcmtzIHN0YXRlICovDQo+ICtz dHJ1Y3QgaW50ZWxfd21fY29uZmlnIHsNCj4gKwl1bnNpZ25lZCBpbnQgbnVtX3BpcGVzX2FjdGl2 ZTsNCj4gKwlib29sIHNwcml0ZXNfZW5hYmxlZDsNCj4gKwlib29sIHNwcml0ZXNfc2NhbGVkOw0K PiArfTsNCj4gKw0KPiAgLyoNCj4gICAqIEZvciBib3RoIFdNX1BJUEUgYW5kIFdNX0xQLg0KPiAg ICogbWVtX3ZhbHVlIG11c3QgYmUgaW4gMC4xdXMgdW5pdHMuDQo+IEBAIC0yMDIyLDExICsyMDI5 LDkgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0DQo+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Yw0KPiAqaW50ZWxfY3J0YywNCj4gIAkJCQkgaW50IGxldmVsLA0KPiAgCQkJCSBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLA0KPiAtCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnByaXN0YXRlLA0KPiAtCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnNwcnN0YXRlLA0K PiAtCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1cnN0YXRlLA0KPiAgCQkJCSBzdHJ1 Y3QgaW50ZWxfd21fbGV2ZWwgKnJlc3VsdCkNCj4gIHsNCj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lOw0KPiAgCXVpbnQxNl90IHByaV9sYXRlbmN5ID0gZGV2X3ByaXYtPndtLnBy aV9sYXRlbmN5W2xldmVsXTsNCj4gIAl1aW50MTZfdCBzcHJfbGF0ZW5jeSA9IGRldl9wcml2LT53 bS5zcHJfbGF0ZW5jeVtsZXZlbF07DQo+ICAJdWludDE2X3QgY3VyX2xhdGVuY3kgPSBkZXZfcHJp di0+d20uY3VyX2xhdGVuY3lbbGV2ZWxdOw0KPiBAQCAtMjAzOCwxMSArMjA0MywyOSBAQCBzdGF0 aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsDQo+ICAJCWN1cl9sYXRlbmN5ICo9IDU7DQo+ICAJfQ0KPiAgDQo+IC0J cmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVfcHJpX3dtKGNzdGF0ZSwgcHJpc3RhdGUsDQo+ IC0JCQkJCSAgICAgcHJpX2xhdGVuY3ksIGxldmVsKTsNCj4gLQlyZXN1bHQtPnNwcl92YWwgPSBp bGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBzcHJzdGF0ZSwNCj4gc3ByX2xhdGVuY3kpOw0KPiAt CXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUsIGN1cnN0YXRlLA0K PiBjdXJfbGF0ZW5jeSk7DQo+IC0JcmVzdWx0LT5mYmNfdmFsID0gaWxrX2NvbXB1dGVfZmJjX3dt KGNzdGF0ZSwgcHJpc3RhdGUsDQo+IHJlc3VsdC0+cHJpX3ZhbCk7DQo+ICsJZm9yX2VhY2hfaW50 ZWxfcGxhbmVfb25fY3J0YyhkZXZfcHJpdi0+ZGV2LCBpbnRlbF9jcnRjLA0KPiBpbnRlbF9wbGFu ZSkgew0KPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSA9DQo+ICsJCQl0b19p bnRlbF9wbGFuZV9zdGF0ZShpbnRlbF9wbGFuZQ0KPiAtPmJhc2Uuc3RhdGUpOw0KPiArDQo+ICsJ CXN3aXRjaCAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSkgew0KPiArCQljYXNlIERSTV9QTEFORV9U WVBFX1BSSU1BUlk6DQo+ICsJCQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29tcHV0ZV9wcmlfd20o Y3N0YXRlLA0KPiBwc3RhdGUsDQo+ICsJCQkJCQkJICAgIA0KPiAgcHJpX2xhdGVuY3ksDQo+ICsJ CQkJCQkJICAgICBsZXZlbCk7DQo+ICsJCQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9m YmNfd20oY3N0YXRlLA0KPiBwc3RhdGUsDQo+ICsJCQkJCQkJICAgICByZXN1bHQNCj4gLT5wcmlf dmFsKTsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6DQo+ ICsJCQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLA0KPiBwc3Rh dGUsDQo+ICsJCQkJCQkJICAgIA0KPiAgc3ByX2xhdGVuY3kpOw0KPiArCQkJYnJlYWs7DQo+ICsJ CWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOg0KPiArCQkJcmVzdWx0LT5jdXJfdmFsID0gaWxr X2NvbXB1dGVfY3VyX3dtKGNzdGF0ZSwNCj4gcHN0YXRlLA0KPiArCQkJCQkJCSAgICANCj4gIGN1 cl9sYXRlbmN5KTsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICAJcmVzdWx0 LT5lbmFibGUgPSB0cnVlOw0KPiAgfQ0KPiAgDQo+IEBAIC0yMzAxLDE5ICsyMzI0LDM0IEBAIHN0 YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9sYXRlbmN5KHN0cnVjdA0KPiBkcm1fZGV2aWNlICpkZXYp DQo+ICAJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXYsICJHZW45IFBsYW5lIiwgZGV2X3ByaXYN Cj4gLT53bS5za2xfbGF0ZW5jeSk7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB2b2lkIGlsa19jb21w dXRlX3dtX2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiArCQkJCSAgc3RydWN0IGlu dGVsX3dtX2NvbmZpZyAqY29uZmlnKQ0KPiArew0KPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOw0KPiArDQo+ICsJLyogQ29tcHV0ZSB0aGUgY3VycmVudGx5IF9hY3RpdmVfIGNvbmZp ZyAqLw0KPiArCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7DQo+ICsJCWNv bnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICp3bSA9ICZpbnRlbF9jcnRjDQo+IC0+d20uYWN0aXZl Ow0KPiArDQo+ICsJCWlmICghd20tPnBpcGVfZW5hYmxlZCkNCj4gKwkJCWNvbnRpbnVlOw0KPiAr DQo+ICsJCWNvbmZpZy0+c3ByaXRlc19lbmFibGVkIHw9IHdtLT5zcHJpdGVzX2VuYWJsZWQ7DQo+ ICsJCWNvbmZpZy0+c3ByaXRlc19zY2FsZWQgfD0gd20tPnNwcml0ZXNfc2NhbGVkOw0KPiArCQlj b25maWctPm51bV9waXBlc19hY3RpdmUrKzsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gIC8qIENvbXB1 dGUgbmV3IHdhdGVybWFya3MgZm9yIHRoZSBwaXBlICovDQo+IC1zdGF0aWMgaW50IGlsa19jb21w dXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsDQo+IC0JCQkgICAgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiArc3RhdGljIGJvb2wgaW50ZWxfY29t cHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsDQo+ICsJCQkJICBz dHJ1Y3QgaW50ZWxfcGlwZV93bSAqcGlwZV93bSkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfcGlw ZV93bSAqcGlwZV93bTsNCj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+ YmFzZS5kZXY7DQo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7 DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsNCj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPiAtCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSBOVUxMOw0KPiArCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsNCj4gIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lOw0KPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzOw0KPiAt CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUgPSBOVUxMOw0KPiAgCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqc3Byc3RhdGUgPSBOVUxMOw0KPiAtCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqY3Vyc3RhdGUgPSBOVUxMOw0KPiAgCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxr X3dtX21heF9sZXZlbChkZXYpOw0KPiAgCS8qIExQMCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5k IG9uIHRoaXMgcGlwZSBhbG9uZSAqLw0KPiAgCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmln ID0gew0KPiBAQCAtMjMyMSwyNCArMjM1OSwxMSBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3Bp cGVfd20oc3RydWN0DQo+IGludGVsX2NydGMgKmludGVsX2NydGMsDQo+ICAJfTsNCj4gIAlzdHJ1 Y3QgaWxrX3dtX21heGltdW1zIG1heDsNCj4gIA0KPiAtCWNzdGF0ZSA9IGludGVsX2F0b21pY19n ZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7DQo+IC0JaWYgKElTX0VSUihjc3RhdGUp KQ0KPiAtCQlyZXR1cm4gUFRSX0VSUihjc3RhdGUpOw0KPiAtDQo+IC0JcGlwZV93bSA9ICZjc3Rh dGUtPndtLm9wdGltYWwuaWxrOw0KPiAtDQo+ICAJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0 YyhkZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7DQo+IC0JCXBzID0gZHJtX2F0b21pY19n ZXRfcGxhbmVfc3RhdGUoc3RhdGUsDQo+IC0JCQkJCQkmaW50ZWxfcGxhbmUtPmJhc2UpOw0KPiAt CQlpZiAoSVNfRVJSKHBzKSkNCj4gLQkJCXJldHVybiBQVFJfRVJSKHBzKTsNCj4gLQ0KPiAtCQlp ZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQ0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQ0K PiAtCQkJcHJpc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7DQo+IC0JCWVsc2UgaWYg KGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0NCj4gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkNCj4g LQkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiAtCQllbHNlIGlmIChp bnRlbF9wbGFuZS0+YmFzZS50eXBlID09DQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUikNCj4gLQkJ CWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiArCQlpZiAoaW50ZWxfcGxh bmUtPmJhc2UudHlwZSA9PQ0KPiBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKSB7DQo+ICsJCQlzcHJz dGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3BsYW5lDQo+IC0+YmFzZS5zdGF0ZSk7 DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiAgCX0NCj4gIA0KPiAgCWNvbmZpZy5zcHJpdGVzX2Vu YWJsZWQgPSBzcHJzdGF0ZS0+dmlzaWJsZTsNCj4gQEAgLTIzNDcsNyArMjM3Miw3IEBAIHN0YXRp YyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywNCj4gIAkJZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+ZHN0KSAhPQ0KPiBkcm1fcmVjdF9o ZWlnaHQoJnNwcnN0YXRlLT5zcmMpID4+IDE2KTsNCj4gIA0KPiAgCXBpcGVfd20tPnBpcGVfZW5h YmxlZCA9IGNzdGF0ZS0+YmFzZS5hY3RpdmU7DQo+IC0JcGlwZV93bS0+c3ByaXRlc19lbmFibGVk ID0gY29uZmlnLnNwcml0ZXNfZW5hYmxlZDsNCj4gKwlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQg PSBzcHJzdGF0ZS0+dmlzaWJsZTsNCj4gIAlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IGNvbmZp Zy5zcHJpdGVzX3NjYWxlZDsNCj4gIA0KPiAgCS8qIElMSy9TTkI6IExQMisgd2F0ZXJtYXJrcyBv bmx5IHcvbyBzcHJpdGVzICovDQo+IEBAIC0yMzU4LDI3ICsyMzgzLDI0IEBAIHN0YXRpYyBpbnQg aWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywNCj4g IAlpZiAoY29uZmlnLnNwcml0ZXNfc2NhbGVkKQ0KPiAgCQltYXhfbGV2ZWwgPSAwOw0KPiAgDQo+ IC0JaWxrX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIDAsIGNzdGF0ZSwN Cj4gLQkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJnBpcGVfd20NCj4gLT53 bVswXSk7DQo+ICsJaWxrX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIDAs IGNzdGF0ZSwNCj4gJnBpcGVfd20tPndtWzBdKTsNCj4gIA0KPiAgCWlmIChJU19IQVNXRUxMKGRl dikgfHwgSVNfQlJPQURXRUxMKGRldikpDQo+IC0JCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2Nv bXB1dGVfbGluZXRpbWVfd20oZGV2LA0KPiAtCQkJCQkJCSAgIA0KPiAgJmludGVsX2NydGMtPmJh c2UpOw0KPiArCQlwaXBlX3dtLT5saW5ldGltZSA9IGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGRl diwNCj4gY3J0Yyk7DQo+ICANCj4gIAkvKiBMUDAgd2F0ZXJtYXJrcyBhbHdheXMgdXNlIDEvMiBE REIgcGFydGl0aW9uaW5nICovDQo+ICAJaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAwLCAm Y29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsDQo+ICZtYXgpOw0KPiAgDQo+ICAJLyogQXQgbGVh c3QgTFAwIG11c3QgYmUgdmFsaWQgKi8NCj4gIAlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZlbCgw LCAmbWF4LCAmcGlwZV93bS0+d21bMF0pKQ0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJcmV0 dXJuIGZhbHNlOw0KPiAgDQo+ICAJaWxrX2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRldiwgMSwg Jm1heCk7DQo+ICANCj4gIAlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZl bCsrKSB7DQo+ICAJCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bSA9IHt9Ow0KPiAgDQo+IC0JCWls a19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCBsZXZlbCwNCj4gY3N0YXRl LA0KPiAtCQkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwNCj4gJndtKTsNCj4g KwkJaWxrX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIGxldmVsLA0KPiBj c3RhdGUsICZ3bSk7DQo+ICANCj4gIAkJLyoNCj4gIAkJICogRGlzYWJsZSBhbnkgd2F0ZXJtYXJr IGxldmVsIHRoYXQgZXhjZWVkcyB0aGUNCj4gQEAgLTIzOTEsNyArMjQxMyw3IEBAIHN0YXRpYyBp bnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywN Cj4gIAkJcGlwZV93bS0+d21bbGV2ZWxdID0gd207DQo+ICAJfQ0KPiAgDQo+IC0JcmV0dXJuIDA7 DQo+ICsJcmV0dXJuIHRydWU7DQo+ICB9DQo+ICANCj4gIC8qDQo+IEBAIC0yNDA2LDkgKzI0Mjgs NyBAQCBzdGF0aWMgdm9pZCBpbGtfbWVyZ2Vfd21fbGV2ZWwoc3RydWN0DQo+IGRybV9kZXZpY2Ug KmRldiwNCj4gIAlyZXRfd20tPmVuYWJsZSA9IHRydWU7DQo+ICANCj4gIAlmb3JfZWFjaF9pbnRl bF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgew0KPiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlID0NCj4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFz ZS5zdGF0ZSk7DQo+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAmY3N0 YXRlDQo+IC0+d20ub3B0aW1hbC5pbGs7DQo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dt ICphY3RpdmUgPSAmaW50ZWxfY3J0Yw0KPiAtPndtLmFjdGl2ZTsNCj4gIAkJY29uc3Qgc3RydWN0 IGludGVsX3dtX2xldmVsICp3bSA9ICZhY3RpdmUNCj4gLT53bVtsZXZlbF07DQo+ICANCj4gIAkJ aWYgKCFhY3RpdmUtPnBpcGVfZW5hYmxlZCkNCj4gQEAgLTI1NTYsMTUgKzI1NzYsMTQgQEAgc3Rh dGljIHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QNCj4gZHJtX2RldmljZSAqZGV2 LA0KPiAgDQo+ICAJLyogTFAwIHJlZ2lzdGVyIHZhbHVlcyAqLw0KPiAgCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7DQo+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUgPQ0KPiAtCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNl LnN0YXRlKTsNCj4gIAkJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOw0KPiAtCQlj b25zdCBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKnIgPSAmY3N0YXRlDQo+IC0+d20ub3B0aW1hbC5p bGsud21bMF07DQo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqciA9DQo+ICsJCQkm aW50ZWxfY3J0Yy0+d20uYWN0aXZlLndtWzBdOw0KPiAgDQo+ICAJCWlmIChXQVJOX09OKCFyLT5l bmFibGUpKQ0KPiAgCQkJY29udGludWU7DQo+ICANCj4gLQkJcmVzdWx0cy0+d21fbGluZXRpbWVb cGlwZV0gPSBjc3RhdGUNCj4gLT53bS5vcHRpbWFsLmlsay5saW5ldGltZTsNCj4gKwkJcmVzdWx0 cy0+d21fbGluZXRpbWVbcGlwZV0gPSBpbnRlbF9jcnRjDQo+IC0+d20uYWN0aXZlLmxpbmV0aW1l Ow0KPiAgDQo+ICAJCXJlc3VsdHMtPndtX3BpcGVbcGlwZV0gPQ0KPiAgCQkJKHItPnByaV92YWwg PDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwNCj4gQEAgLTI5NDYsMTIgKzI5NjUsMTEgQEAgc2ts X2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0DQo+IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkNCj4gIA0KPiAgc3RhdGljIHZvaWQNCj4gIHNrbF9hbGxvY2F0ZV9waXBl X2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLA0KPiArCQkgICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfd21fY29uZmlnICpjb25maWcsDQo+ICAJCSAgICAgIHN0cnVjdCBza2xfZGRi X2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pDQo+ICB7DQo+ICAJc3RydWN0IGRybV9jcnRjICpj cnRjID0gY3N0YXRlLT5iYXNlLmNydGM7DQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmRldjsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7DQo+IC0Jc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnID0gJmRldl9wcml2LT53 bS5jb25maWc7DQo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOw0KPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7DQo+ICAJZW51 bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOw0KPiBAQCAtMzEyNiw2ICszMTQ0LDE1IEBA IHN0YXRpYyBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9jaGFuZ2VkKGNvbnN0DQo+IHN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIsDQo+ICAJcmV0dXJuIGZhbHNlOw0KPiAgfQ0KPiAg DQo+ICtzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV93bV9nbG9iYWxfcGFyYW1ldGVycyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LA0KPiArCQkJCQkgICAgIHN0cnVjdCBpbnRlbF93bV9jb25maWcNCj4g KmNvbmZpZykNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQo+ICsNCj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkN Cj4gKwkJY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlICs9IHRvX2ludGVsX2NydGMoY3J0YykNCj4g LT5hY3RpdmU7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBib29sIHNrbF9jb21wdXRlX3BsYW5lX3dt KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdiwNCj4gIAkJCQkgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwNCj4gIAkJCQkgc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSwNCj4gQEAgLTM1MzAsMjUgKzM1NTcsMjcgQEAgc3RhdGljIHZvaWQgc2ts X2ZsdXNoX3dtX3ZhbHVlcyhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ ICB9DQo+ICANCj4gIHN0YXRpYyBib29sIHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsDQo+ICsJCQkgICAgICAgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLA0K PiAgCQkJICAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwgLyoNCj4gb3V0ICov DQo+ICAJCQkgICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtIC8qIG91dA0KPiAqLykN Cj4gIHsNCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7DQo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yw0KPiAtPnN0YXRlKTsNCj4gIA0KPiAtCXNrbF9hbGxvY2F0ZV9waXBlX2Rk Yihjc3RhdGUsIGRkYik7DQo+ICsJc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgY29uZmln LCBkZGIpOw0KPiAgCXNrbF9jb21wdXRlX3BpcGVfd20oY3N0YXRlLCBkZGIsIHBpcGVfd20pOw0K PiAgDQo+IC0JaWYgKCFtZW1jbXAoJmludGVsX2NydGMtPndtLmFjdGl2ZS5za2wsIHBpcGVfd20s DQo+IHNpemVvZigqcGlwZV93bSkpKQ0KPiArCWlmICghbWVtY21wKCZpbnRlbF9jcnRjLT53bS5z a2xfYWN0aXZlLCBwaXBlX3dtLA0KPiBzaXplb2YoKnBpcGVfd20pKSkNCj4gIAkJcmV0dXJuIGZh bHNlOw0KPiAgDQo+IC0JaW50ZWxfY3J0Yy0+d20uYWN0aXZlLnNrbCA9ICpwaXBlX3dtOw0KPiAr CWludGVsX2NydGMtPndtLnNrbF9hY3RpdmUgPSAqcGlwZV93bTsNCj4gIA0KPiAgCXJldHVybiB0 cnVlOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVfd20o c3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywNCj4gKwkJCQkgICAgIHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywNCj4gIAkJCQkg ICAgIHN0cnVjdCBza2xfd21fdmFsdWVzICpyKQ0KPiAgew0KPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjOw0KPiBAQCAtMzU3OCw3ICszNjA3LDcgQEAgc3RhdGljIHZvaWQgc2tsX3Vw ZGF0ZV9vdGhlcl9waXBlX3dtKHN0cnVjdA0KPiBkcm1fZGV2aWNlICpkZXYsDQo+ICAJCWlmICgh aW50ZWxfY3J0Yy0+YWN0aXZlKQ0KPiAgCQkJY29udGludWU7DQo+ICANCj4gLQkJd21fY2hhbmdl ZCA9IHNrbF91cGRhdGVfcGlwZV93bSgmaW50ZWxfY3J0Yy0+YmFzZSwNCj4gKwkJd21fY2hhbmdl ZCA9IHNrbF91cGRhdGVfcGlwZV93bSgmaW50ZWxfY3J0Yy0+YmFzZSwNCj4gY29uZmlnLA0KPiAg CQkJCQkJJnItPmRkYiwgJnBpcGVfd20pOw0KPiAgDQo+ICAJCS8qDQo+IEBAIC0zNjE5LDggKzM2 NDgsOCBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0Yw0KPiAqY3J0 YykNCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Ow0KPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICAJc3RydWN0 IHNrbF93bV92YWx1ZXMgKnJlc3VsdHMgPSAmZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzOw0KPiAt CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNy dGMNCj4gLT5zdGF0ZSk7DQo+IC0Jc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0gJmNzdGF0 ZS0+d20ub3B0aW1hbC5za2w7DQo+ICsJc3RydWN0IHNrbF9waXBlX3dtIHBpcGVfd20gPSB7fTsN Cj4gKwlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNvbmZpZyA9IHt9Ow0KPiAgDQo+ICANCj4gIAkv KiBDbGVhciBhbGwgZGlydHkgZmxhZ3MgKi8NCj4gQEAgLTM2MjgsMTMgKzM2NTcsMTUgQEAgc3Rh dGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMNCj4gKmNydGMpDQo+ICANCj4g IAlza2xfY2xlYXJfd20ocmVzdWx0cywgaW50ZWxfY3J0Yy0+cGlwZSk7DQo+ICANCj4gLQlpZiAo IXNrbF91cGRhdGVfcGlwZV93bShjcnRjLCAmcmVzdWx0cy0+ZGRiLCBwaXBlX3dtKSkNCj4gKwlz a2xfY29tcHV0ZV93bV9nbG9iYWxfcGFyYW1ldGVycyhkZXYsICZjb25maWcpOw0KPiArDQo+ICsJ aWYgKCFza2xfdXBkYXRlX3BpcGVfd20oY3J0YywgJmNvbmZpZywgJnJlc3VsdHMtPmRkYiwNCj4g JnBpcGVfd20pKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gLQlza2xfY29tcHV0ZV93bV9yZXN1bHRz KGRldiwgcGlwZV93bSwgcmVzdWx0cywgaW50ZWxfY3J0Yyk7DQo+ICsJc2tsX2NvbXB1dGVfd21f cmVzdWx0cyhkZXYsICZwaXBlX3dtLCByZXN1bHRzLCBpbnRlbF9jcnRjKTsNCj4gIAlyZXN1bHRz LT5kaXJ0eVtpbnRlbF9jcnRjLT5waXBlXSA9IHRydWU7DQo+ICANCj4gLQlza2xfdXBkYXRlX290 aGVyX3BpcGVfd20oZGV2LCBjcnRjLCByZXN1bHRzKTsNCj4gKwlza2xfdXBkYXRlX290aGVyX3Bp cGVfd20oZGV2LCBjcnRjLCAmY29uZmlnLCByZXN1bHRzKTsNCj4gIAlza2xfd3JpdGVfd21fdmFs dWVzKGRldl9wcml2LCByZXN1bHRzKTsNCj4gIAlza2xfZmx1c2hfd21fdmFsdWVzKGRldl9wcml2 LCByZXN1bHRzKTsNCj4gIA0KPiBAQCAtMzY0MiwyMyArMzY3Myw1MCBAQCBzdGF0aWMgdm9pZCBz a2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0Yw0KPiAqY3J0YykNCj4gIAlkZXZfcHJpdi0+d20u c2tsX2h3ID0gKnJlc3VsdHM7DQo+ICB9DQo+ICANCj4gLXN0YXRpYyB2b2lkIGlsa19wcm9ncmFt X3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2KQ0KPiArc3Rh dGljIHZvaWQgaWxrX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ICB7DQo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7DQo+IC0Jc3RydWN0IGludGVs X3BpcGVfd20gbHBfd21fMV8yID0ge30sIGxwX3dtXzVfNiA9IHt9LA0KPiAqYmVzdF9scF93bTsN Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 DQo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yw0KPiAtPnN0YXRlKTsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2Ow0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7DQo+ICAJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7DQo+IC0Jc3RydWN0IGludGVs X3dtX2NvbmZpZyAqY29uZmlnID0gJmRldl9wcml2LT53bS5jb25maWc7DQo+ICAJc3RydWN0IGls a193bV92YWx1ZXMgcmVzdWx0cyA9IHt9Ow0KPiAgCWVudW0gaW50ZWxfZGRiX3BhcnRpdGlvbmlu ZyBwYXJ0aXRpb25pbmc7DQo+ICsJc3RydWN0IGludGVsX3BpcGVfd20gcGlwZV93bSA9IHt9Ow0K PiArCXN0cnVjdCBpbnRlbF9waXBlX3dtIGxwX3dtXzFfMiA9IHt9LCBscF93bV81XzYgPSB7fSwN Cj4gKmJlc3RfbHBfd207DQo+ICsJc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcgPSB7fTsN Cj4gIA0KPiAtCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgY29uZmlnLCBJTlRFTF9E REJfUEFSVF8xXzIsDQo+ICZtYXgpOw0KPiAtCWlsa193bV9tZXJnZShkZXYsIGNvbmZpZywgJm1h eCwgJmxwX3dtXzFfMik7DQo+ICsJV0FSTl9PTihjc3RhdGUtPmJhc2UuYWN0aXZlICE9IGludGVs X2NydGMtPmFjdGl2ZSk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIElWQiB3b3JrYXJvdW5kOiBtdXN0 IGRpc2FibGUgbG93IHBvd2VyIHdhdGVybWFya3MgZm9yIGF0DQo+IGxlYXN0DQo+ICsJICogb25l IGZyYW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5nLiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUNCj4g cmUtZW5hYmxlZA0KPiArCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4NCj4gKwkgKg0KPiAr CSAqIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmINCj4gKwkgKi8NCj4gKwlpZiAo Y3N0YXRlLT5kaXNhYmxlX2xwX3dtKSB7DQo+ICsJCWlsa19kaXNhYmxlX2xwX3dtKGRldik7DQo+ ICsJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOw0KPiArCX0N Cj4gKw0KPiArCWludGVsX2NvbXB1dGVfcGlwZV93bShjc3RhdGUsICZwaXBlX3dtKTsNCj4gKw0K PiArCWlmICghbWVtY21wKCZpbnRlbF9jcnRjLT53bS5hY3RpdmUsICZwaXBlX3dtLA0KPiBzaXpl b2YocGlwZV93bSkpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlpbnRlbF9jcnRjLT53bS5hY3Rp dmUgPSBwaXBlX3dtOw0KPiArDQo+ICsJaWxrX2NvbXB1dGVfd21fY29uZmlnKGRldiwgJmNvbmZp Zyk7DQo+ICsNCj4gKwlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDEsICZjb25maWcsIElO VEVMX0REQl9QQVJUXzFfMiwNCj4gJm1heCk7DQo+ICsJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZp ZywgJm1heCwgJmxwX3dtXzFfMik7DQo+ICANCj4gIAkvKiA1LzYgc3BsaXQgb25seSBpbiBzaW5n bGUgcGlwZSBjb25maWcgb24gSVZCKyAqLw0KPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA3ICYmDQo+IC0JICAgIGNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZSA9PSAxICYmIGNvbmZpZw0K PiAtPnNwcml0ZXNfZW5hYmxlZCkgew0KPiAtCQlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYs IDEsIGNvbmZpZywNCj4gSU5URUxfRERCX1BBUlRfNV82LCAmbWF4KTsNCj4gLQkJaWxrX3dtX21l cmdlKGRldiwgY29uZmlnLCAmbWF4LCAmbHBfd21fNV82KTsNCj4gKwkgICAgY29uZmlnLm51bV9w aXBlc19hY3RpdmUgPT0gMSAmJiBjb25maWcuc3ByaXRlc19lbmFibGVkKQ0KPiB7DQo+ICsJCWls a19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgJmNvbmZpZywNCj4gSU5URUxfRERCX1BBUlRf NV82LCAmbWF4KTsNCj4gKwkJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwgJmxwX3dt XzVfNik7DQo+ICANCj4gIAkJYmVzdF9scF93bSA9IGlsa19maW5kX2Jlc3RfcmVzdWx0KGRldiwg JmxwX3dtXzFfMiwNCj4gJmxwX3dtXzVfNik7DQo+ICAJfSBlbHNlIHsNCj4gQEAgLTM2NzMsMzEg KzM3MzEsNiBAQCBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdA0KPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAlpbGtfd3JpdGVfd21fdmFsdWVzKGRldl9w cml2LCAmcmVzdWx0cyk7DQo+ICB9DQo+ICANCj4gLXN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20o c3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsNCj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7DQo+IC0Jc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yw0KPiAtPnN0YXRlKTsNCj4g LQ0KPiAtCVdBUk5fT04oY3N0YXRlLT5iYXNlLmFjdGl2ZSAhPSBpbnRlbF9jcnRjLT5hY3RpdmUp Ow0KPiAtDQo+IC0JLyoNCj4gLQkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxvdyBw b3dlciB3YXRlcm1hcmtzIGZvciBhdA0KPiBsZWFzdA0KPiAtCSAqIG9uZSBmcmFtZSBiZWZvcmUg ZW5hYmxpbmcgc2NhbGluZy4gIExQIHdhdGVybWFya3MgY2FuIGJlDQo+IHJlLWVuYWJsZWQNCj4g LQkgKiB3aGVuIHNjYWxpbmcgaXMgZGlzYWJsZWQuDQo+IC0JICoNCj4gLQkgKiBXYUN4U1JEaXNh YmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiDQo+IC0JICovDQo+IC0JaWYgKGNzdGF0ZS0+ZGlzYWJs ZV9scF93bSkgew0KPiAtCQlpbGtfZGlzYWJsZV9scF93bShjcnRjLT5kZXYpOw0KPiAtCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsNCj4gLQl9DQo+ IC0NCj4gLQlpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5vcHRpbWFsLmls azsNCj4gLQ0KPiAtCWlsa19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOw0KPiAtfQ0KPiAt DQo+ICBzdGF0aWMgdm9pZCBza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodWludDMyX3QgdmFsLA0K PiAgCQkJCSAgICAgc3RydWN0IHNrbF9waXBlX3dtICphY3RpdmUsDQo+ICAJCQkJICAgICBib29s IGlzX3RyYW5zd20sDQo+IEBAIC0zNzQ4LDggKzM3ODEsNyBAQCBzdGF0aWMgdm9pZCBza2xfcGlw ZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0DQo+IGRybV9jcnRjICpjcnRjKQ0KPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICAJc3RydWN0 IHNrbF93bV92YWx1ZXMgKmh3ID0gJmRldl9wcml2LT53bS5za2xfaHc7DQo+ICAJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOw0KPiAtCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMNCj4gLT5z dGF0ZSk7DQo+IC0Jc3RydWN0IHNrbF9waXBlX3dtICphY3RpdmUgPSAmY3N0YXRlLT53bS5vcHRp bWFsLnNrbDsNCj4gKwlzdHJ1Y3Qgc2tsX3BpcGVfd20gKmFjdGl2ZSA9ICZpbnRlbF9jcnRjLT53 bS5za2xfYWN0aXZlOw0KPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsNCj4g IAlpbnQgbGV2ZWwsIGksIG1heF9sZXZlbDsNCj4gIAl1aW50MzJfdCB0ZW1wOw0KPiBAQCAtMzc5 Myw4ICszODI1LDYgQEAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dA0KPiBkcm1fY3J0YyAqY3J0YykNCj4gIA0KPiAgCXRlbXAgPSBody0+cGxhbmVfdHJhbnNbcGlw ZV1bUExBTkVfQ1VSU09SXTsNCj4gIAlza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodGVtcCwgYWN0 aXZlLCB0cnVlLCB0cnVlLCBpLCAwKTsNCj4gLQ0KPiAtCWludGVsX2NydGMtPndtLmFjdGl2ZS5z a2wgPSAqYWN0aXZlOw0KPiAgfQ0KPiAgDQo+ICB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikNCj4gQEAgLTM4MTQsOCArMzg0NCw3IEBAIHN0YXRpYyB2b2lk IGlsa19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QNCj4gZHJtX2NydGMgKmNydGMpDQo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4g IAlzdHJ1Y3QgaWxrX3dtX3ZhbHVlcyAqaHcgPSAmZGV2X3ByaXYtPndtLmh3Ow0KPiAgCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsNCj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjDQo+ IC0+c3RhdGUpOw0KPiAtCXN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAmY3N0YXRlLT53 bS5vcHRpbWFsLmlsazsNCj4gKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZlID0gJmludGVs X2NydGMtPndtLmFjdGl2ZTsNCj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 DQo+ICAJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB3bTBfcGlwZV9yZWdbXSA9IHsNCj4gIAkJ W1BJUEVfQV0gPSBXTTBfUElQRUFfSUxLLA0KPiBAQCAtMzg1NCw4ICszODgzLDYgQEAgc3RhdGlj IHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdA0KPiBkcm1fY3J0YyAqY3J0YykN Cj4gIAkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykNCj4gIAkJ CWFjdGl2ZS0+d21bbGV2ZWxdLmVuYWJsZSA9IHRydWU7DQo+ICAJfQ0KPiAtDQo+IC0JaW50ZWxf Y3J0Yy0+d20uYWN0aXZlLmlsayA9ICphY3RpdmU7DQo+ICB9DQo+ICANCj4gICNkZWZpbmUgX0ZX X1dNKHZhbHVlLCBwbGFuZSkgXA0KPiBAQCAtNzAxNSw3ICs3MDQyLDYgQEAgdm9pZCBpbnRlbF9p bml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ICAJCSAgICAoIUlTX0dFTjUoZGV2KSAm JiBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbMF0gJiYNCj4gIAkJICAgICBkZXZfcHJpdi0+d20u c3ByX2xhdGVuY3lbMF0gJiYgZGV2X3ByaXYNCj4gLT53bS5jdXJfbGF0ZW5jeVswXSkpIHsNCj4g IAkJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IGlsa191cGRhdGVfd207DQo+IC0JCQlk ZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20gPQ0KPiBpbGtfY29tcHV0ZV9waXBlX3dt Ow0KPiAgCQl9IGVsc2Ugew0KPiAgCQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgZGlz cGxheSBwbGFuZQ0KPiBsYXRlbmN5LiAiDQo+ICAJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==