From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 2/2] drm/i915: Only recalculate wm's for planes part of the state, v2. Date: Wed, 2 Mar 2016 21:08:31 +0000 Message-ID: <1456952909.2408.36.camel@intel.com> References: <1456826842-32553-1-git-send-email-maarten.lankhorst@linux.intel.com> <1456826842-32553-2-git-send-email-maarten.lankhorst@linux.intel.com> <20160301222804.GC12786@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 8EE9D6E99D for ; Wed, 2 Mar 2016 21:08:32 +0000 (UTC) In-Reply-To: <20160301222804.GC12786@intel.com> Content-Language: en-US Content-ID: <6370C02F76BB5048901088449C380CA9@intel.com> 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" , "maarten.lankhorst@linux.intel.com" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org RW0gVGVyLCAyMDE2LTAzLTAxIMOgcyAxNDoyOCAtMDgwMCwgTWF0dCBSb3BlciBlc2NyZXZldToN Cj4gT24gVHVlLCBNYXIgMDEsIDIwMTYgYXQgMTE6MDc6MjJBTSArMDEwMCwgTWFhcnRlbiBMYW5r aG9yc3Qgd3JvdGU6DQo+ID4gT25seSBwbGFuZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgc3RhdGUg c2hvdWxkIGJlIHVzZWQgZm9yDQo+ID4gcmVjYWxjdWxhdGluZw0KPiA+IHdhdGVybWFya3MuIEZv ciBwbGFuZXMgbm90IHBhcnQgb2YgdGhlIHN0YXRlIHRoZSBwcmV2aW91cyBwYXRjaA0KPiA+IGFs bG93cw0KPiA+IHVzIHRvIHJlLXVzZSB0aGUgb2xkIHZhbHVlcyBzaW5jZSB0aGV5J3JlIGNhbGN1 bGF0ZWQgZXZlbiBmb3INCj4gPiBsZXZlbHMNCj4gPiB0aGF0IGFyZSBub3QgYWN0aXZlbHkgdXNl ZC4NCj4gPiANCj4gPiBDaGFuZ2VzIHNpbmNlIHYxOg0KPiA+IC0gUmVtb3ZlIGJpZyBpZiBmcm9t IGludGVsX2NydGNfYXRvbWljX2NoZWNrLg0KPiA+IC0gUmVtb3ZlIGV4dHJhIG5ld2xpbmUuDQo+ ID4gLSBSZW1vdmUgbWVtc2V0IGluIGlsa19jb21wdXRlX3BpcGVfd20uDQo+ID4gDQo+ID4gU2ln bmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbQ0KPiA+ID4NCj4gPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVs LmNvbT4NCj4gDQo+IEkgaGF2ZW4ndCB0aG91Z2h0IHRocm91Z2ggdGhpcyB0b28gY2FyZWZ1bGx5 IHlldCwgYnV0IG9mZiB0aGUgdG9wIG9mDQo+IG15DQo+IGhlYWQgSSdtIG5vdCBzdXJlIGlmIHRo aXMgd2lsbCB3b3JrIGZvciBTS0wgb25jZSB3ZSB0cmFuc2l0aW9uIGl0IHRvDQo+IGFsc28gdXNl IGEgbW9yZSBhdG9taWMgc3R5bGUuwqDCoENoYW5nZXMgdG8gb3RoZXIgc3RhdGUgbWlnaHQgcmVz dWx0IGluDQo+IGNoYW5nZXMgdG8gRERCIGFsbG9jYXRpb24sIG1ha2luZyBvdXIgcHJldmlvdXNs eS1jYWxjdWxhdGVkIHZhbHVlcw0KPiBpbnZhbGlkLg0KPiANCj4gSSB0aGluayB0aGlzIGlzIG9r YXkgZm9yIHRoZSBjdXJyZW50IGNvZGUgKHdoZXJlIG9ubHkgSUxLIGlzIGF0b21pYyksDQo+IHNv DQo+IA0KPiDCoMKgwqDCoEFja25vd2xlZGdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJv cGVyQGludGVsLmNvbT4NCj4gDQo+IGZvciB0aGUgdGltZSBiZWluZy7CoMKgSSdsbCBiZSBiYWNr IHRvIGxvb2tpbmcgYXQgU0tMLXN0eWxlIHdhdGVybWFya3MNCj4gaW4NCj4gdGhlIG5leHQgZGF5 IG9yIHR3byBhbmQgSSBtaWdodCBoYXZlIHRvIGJhY2t0cmFjayBzb21ld2hhdCBpbiBjYXNlcw0K PiB3aGVyZSBhIEREQiBwYXJ0aXRpb25pbmcgY2hhbmdlcyByZXN1bHRzIGluIGEgZnVsbCByZWNv bXB1dGUsIGJ1dCBJDQo+IG5lZWQNCj4gdG8gdGhpbmsgdGhyb3VnaCB0aGUgZGV0YWlscyBhIGJp dCBtb3JlIGFib3V0IGhvdyBiZXN0IHRvIGhhbmRsZQ0KPiB0aGF0Lg0KDQpJIHNwZW50IHNvbWUg dGltZSBsb29raW5nIGF0IHRoYXQgZWFybHkgcmV0dXJuIGZyb20gaW52YWxpZCBwaXBlDQp3YXRl cm1hcmtzLCBidXQgSSBzdXBwb3NlIHRoYXQgcmV0dXJuIG1lYW5zIHdlJ2xsIGNvbXBsZXRlbHkg ZGlzY2FyZA0KYW55dGhpbmcganVzdCBjb21wdXRlZCBieSB0aGUgZnVuY3Rpb24sIHJpZ2h0Pw0K DQpUaGUgcGF0Y2ggc2VlbXMgdG8gZG8gd2hhdCBpdCBzYXlzIG9uIHRoZSBib3gsIHNvIGlmIHdl IGFzc3VtZSB3ZQ0KYWN0dWFsbHkgd2FudCB0aGUgcGF0Y2g6DQpSZXZpZXdlZC1ieTogUGF1bG8g WmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+DQoNCkknbGwgbGV0IHlvdSBhbmQgTWF0 dCBkZWNpZGUgd2hldGhlciB3ZSBhY3R1YWxseSB3YW50IHRoZSBwYXRjaCBvciBub3QuDQoNCg0K DQo+IE1hdHQNCj4gDQo+IA0KPiA+IC0tLQ0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaMKgwqDCoMKgwqDCoHzCoMKgMyArLQ0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHzCoMKgMiArLQ0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmjCoMKgwqDCoMKgfCAxMiArKysrKysrKw0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoHwgNTkgKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ IC0tLS0tLS0tLS0tLS0tDQo+ID4gwqA0IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyks IDI5IGRlbGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ ID4gaW5kZXggNjcxMjk1NTIzMzE3Li40YjhmNDQ2Y2RmNDQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgNCj4gPiBAQCAtNjI5LDggKzYyOSw3IEBAIHN0cnVjdCBkcm1faTkxNV9k aXNwbGF5X2Z1bmNzIHsNCj4gPiDCoAkJCcKgwqBpbnQgdGFyZ2V0LCBpbnQgcmVmY2xrLA0KPiA+ IMKgCQkJwqDCoHN0cnVjdCBkcGxsICptYXRjaF9jbG9jaywNCj4gPiDCoAkJCcKgwqBzdHJ1Y3Qg ZHBsbCAqYmVzdF9jbG9jayk7DQo+ID4gLQlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLA0KPiA+IC0JCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSk7DQo+ID4gKwlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUpOw0KPiA+IMKgCWludCAoKmNvbXB1dGVfaW50ZXJtZWRpYXRl X3dtKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiA+IMKgCQkJCcKgwqDCoMKgwqDCoMKgc3Ry dWN0IGludGVsX2NydGMNCj4gPiAqaW50ZWxfY3J0YywNCj4gPiDCoAkJCQnCoMKgwqDCoMKgwqDC oHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ID4gKm5ld3N0YXRlKTsNCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4gPiBpbmRleCA3OWJmNTI3ZTBhNzMuLjIwYTRj YjNmNjlkMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4g PiBAQCAtMTE5OTQsNyArMTE5OTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2No ZWNrKHN0cnVjdA0KPiA+IGRybV9jcnRjICpjcnRjLA0KPiA+IMKgDQo+ID4gwqAJcmV0ID0gMDsN Cj4gPiDCoAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKSB7DQo+ID4gLQkJ cmV0ID0gZGV2X3ByaXYtDQo+ID4gPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKGludGVsX2NydGMs IHN0YXRlKTsNCj4gPiArCQlyZXQgPSBkZXZfcHJpdi0NCj4gPiA+ZGlzcGxheS5jb21wdXRlX3Bp cGVfd20ocGlwZV9jb25maWcpOw0KPiA+IMKgCQlpZiAocmV0KSB7DQo+ID4gwqAJCQlEUk1fREVC VUdfS01TKCJUYXJnZXQgcGlwZSB3YXRlcm1hcmtzIGFyZQ0KPiA+IGludmFsaWRcbiIpOw0KPiA+ IMKgCQkJcmV0dXJuIHJldDsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4g aW5kZXggNWRhZjUzYzA4MGUxLi4wM2I3ZDAzMWU5MTAgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaA0KPiA+IEBAIC0xNjMwLDYgKzE2MzAsMTggQEAgaW50ZWxfYXRvbWljX2dl dF9jcnRjX3N0YXRlKHN0cnVjdA0KPiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiA+IMKg DQo+ID4gwqAJcmV0dXJuIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7DQo+ID4gwqB9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqDQo+ ID4gK2ludGVsX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUNCj4gPiAqc3RhdGUsDQo+ID4gKwkJCQnCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZTsNCj4gPiArDQo+ID4gKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0 aW5nX3BsYW5lX3N0YXRlKHN0YXRlLA0KPiA+ICZwbGFuZS0+YmFzZSk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiDCoGludCBpbnRlbF9hdG9taWNfc2V0dXBfc2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LA0KPiA+IMKgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLA0KPiA+IMKgCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYw0KPiA+IGluZGV4IDFiOGJhNzc3ZDJiMy4uZGMxZTE2ODNmNGEzIDEwMDY0NA0KPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+ID4gQEAgLTE5OTYsMTEgKzE5OTYsMTggQEAgc3Rh dGljIHZvaWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3QNCj4gPiBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gwqAJCWN1cl9sYXRlbmN5ICo9IDU7DQo+ID4gwqAJfQ0K PiA+IMKgDQo+ID4gLQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29tcHV0ZV9wcmlfd20oY3N0YXRl LCBwcmlzdGF0ZSwNCj4gPiAtCQkJCQnCoMKgwqDCoMKgcHJpX2xhdGVuY3ksIGxldmVsKTsNCj4g PiAtCXJlc3VsdC0+c3ByX3ZhbCA9IGlsa19jb21wdXRlX3Nwcl93bShjc3RhdGUsIHNwcnN0YXRl LA0KPiA+IHNwcl9sYXRlbmN5KTsNCj4gPiAtCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRl X2N1cl93bShjc3RhdGUsIGN1cnN0YXRlLA0KPiA+IGN1cl9sYXRlbmN5KTsNCj4gPiAtCXJlc3Vs dC0+ZmJjX3ZhbCA9IGlsa19jb21wdXRlX2ZiY193bShjc3RhdGUsIHByaXN0YXRlLA0KPiA+IHJl c3VsdC0+cHJpX3ZhbCk7DQo+ID4gKwlpZiAocHJpc3RhdGUpIHsNCj4gPiArCQlyZXN1bHQtPnBy aV92YWwgPSBpbGtfY29tcHV0ZV9wcmlfd20oY3N0YXRlLA0KPiA+IHByaXN0YXRlLA0KPiA+ICsJ CQkJCQnCoMKgwqDCoMKgcHJpX2xhdGVuY3ksDQo+ID4gbGV2ZWwpOw0KPiA+ICsJCXJlc3VsdC0+ ZmJjX3ZhbCA9IGlsa19jb21wdXRlX2ZiY193bShjc3RhdGUsDQo+ID4gcHJpc3RhdGUsIHJlc3Vs dC0+cHJpX3ZhbCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHNwcnN0YXRlKQ0KPiA+ICsJ CXJlc3VsdC0+c3ByX3ZhbCA9IGlsa19jb21wdXRlX3Nwcl93bShjc3RhdGUsDQo+ID4gc3Byc3Rh dGUsIHNwcl9sYXRlbmN5KTsNCj4gPiArDQo+ID4gKwlpZiAoY3Vyc3RhdGUpDQo+ID4gKwkJcmVz dWx0LT5jdXJfdmFsID0gaWxrX2NvbXB1dGVfY3VyX3dtKGNzdGF0ZSwNCj4gPiBjdXJzdGF0ZSwg Y3VyX2xhdGVuY3kpOw0KPiA+ICsNCj4gPiDCoAlyZXN1bHQtPmVuYWJsZSA9IHRydWU7DQo+ID4g wqB9DQo+ID4gwqANCj4gPiBAQCAtMjI4OCw1MSArMjI5NSw1MSBAQCBzdGF0aWMgYm9vbCBpbGtf dmFsaWRhdGVfcGlwZV93bShzdHJ1Y3QNCj4gPiBkcm1fZGV2aWNlICpkZXYsDQo+ID4gwqB9DQo+ ID4gwqANCj4gPiDCoC8qIENvbXB1dGUgbmV3IHdhdGVybWFya3MgZm9yIHRoZSBwaXBlICovDQo+ ID4gLXN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywNCj4gPiAtCQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpDQo+ID4gK3N0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlKQ0KPiA+IMKgew0KPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOw0KPiA+ICsJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0NCj4gPiA+YmFzZS5jcnRjKTsNCj4g PiDCoAlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqcGlwZV93bTsNCj4gPiAtCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsNCj4gPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBzdGF0ZS0+ZGV2Ow0KPiA+IMKgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0NCj4gPiA+ZGV2X3ByaXZhdGU7DQo+ID4gLQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlID0gTlVMTDsNCj4gPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lOw0KPiA+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHM7DQo+ID4gwqAJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwcmlzdGF0ZSA9IE5VTEw7DQo+ID4gwqAJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpzcHJzdGF0ZSA9IE5VTEw7DQo+ID4gwqAJc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7DQo+ID4gwqAJaW50IGxldmVsLCBtYXhfbGV2ZWwg PSBpbGtfd21fbWF4X2xldmVsKGRldiksDQo+ID4gdXNhYmxlX2xldmVsOw0KPiA+IMKgCXN0cnVj dCBpbGtfd21fbWF4aW11bXMgbWF4Ow0KPiA+IMKgDQo+ID4gLQljc3RhdGUgPSBpbnRlbF9hdG9t aWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOw0KPiA+IC0JaWYgKElTX0VSUihj c3RhdGUpKQ0KPiA+IC0JCXJldHVybiBQVFJfRVJSKGNzdGF0ZSk7DQo+ID4gLQ0KPiA+IMKgCXBp cGVfd20gPSAmY3N0YXRlLT53bS5vcHRpbWFsLmlsazsNCj4gPiDCoA0KPiA+IMKgCWZvcl9lYWNo X2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkNCj4gPiB7 DQo+ID4gLQkJcHMgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwNCj4gPiAtCQkJ CQkJJmludGVsX3BsYW5lLQ0KPiA+ID5iYXNlKTsNCj4gPiAtCQlpZiAoSVNfRVJSKHBzKSkNCj4g PiAtCQkJcmV0dXJuIFBUUl9FUlIocHMpOw0KPiA+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcHM7DQo+ID4gKw0KPiA+ICsJCXBzID0gaW50ZWxfYXRvbWljX2dldF9leGlzdGluZ19wbGFu ZV9zdGF0ZShzdGF0ZSwNCj4gPiArCQkJCQkJCcKgwqDCoGludGVsX3ANCj4gPiBsYW5lKTsNCj4g PiArCQlpZiAoIXBzKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiDCoA0KPiA+IMKgCQlpZiAoaW50 ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQ0KPiA+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpDQo+ID4g LQkJCXByaXN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiA+ICsJCQlwcmlzdGF0 ZSA9IHBzOw0KPiA+IMKgCQllbHNlIGlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09DQo+ID4g RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkNCj4gPiAtCQkJc3Byc3RhdGUgPSB0b19pbnRlbF9wbGFu ZV9zdGF0ZShwcyk7DQo+ID4gKwkJCXNwcnN0YXRlID0gcHM7DQo+ID4gwqAJCWVsc2UgaWYgKGlu dGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0NCj4gPiBEUk1fUExBTkVfVFlQRV9DVVJTT1IpDQo+ID4g LQkJCWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiA+ICsJCQljdXJzdGF0 ZSA9IHBzOw0KPiA+IMKgCX0NCj4gPiDCoA0KPiA+IMKgCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9 IGNzdGF0ZS0+YmFzZS5hY3RpdmU7DQo+ID4gLQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBz cHJzdGF0ZS0+dmlzaWJsZTsNCj4gPiAtCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gc3Byc3Rh dGUtPnZpc2libGUgJiYNCj4gPiAtCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5kc3QpICE9 DQo+ID4gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5zcmMpID4+IDE2IHx8DQo+ID4gLQkJZHJt X3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+ZHN0KSAhPQ0KPiA+IGRybV9yZWN0X2hlaWdodCgmc3By c3RhdGUtPnNyYykgPj4gMTYpOw0KPiA+ICsJaWYgKHNwcnN0YXRlKSB7DQo+ID4gKwkJcGlwZV93 bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7DQo+ID4gKwkJcGlwZV93bS0+ c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+dmlzaWJsZSAmJg0KPiA+ICsJCQkoZHJtX3JlY3Rf d2lkdGgoJnNwcnN0YXRlLT5kc3QpICE9DQo+ID4gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5z cmMpID4+IDE2IHx8DQo+ID4gKwkJCcKgZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+ZHN0KSAh PQ0KPiA+IGRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPnNyYykgPj4gMTYpOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiDCoA0KPiA+IMKgCXVzYWJsZV9sZXZlbCA9IG1heF9sZXZlbDsNCj4gPiDCoA0K PiA+IMKgCS8qIElMSy9TTkI6IExQMisgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzcHJpdGVzICovDQo+ ID4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNiAmJiBzcHJzdGF0ZS0+dmlzaWJsZSkN Cj4gPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2ICYmIHBpcGVfd20tPnNwcml0ZXNf ZW5hYmxlZCkNCj4gPiDCoAkJdXNhYmxlX2xldmVsID0gMTsNCj4gPiDCoA0KPiA+IMKgCS8qIElM Sy9TTkIvSVZCOiBMUDErIHdhdGVybWFya3Mgb25seSB3L28gc2NhbGluZyAqLw0KPiA+IC0twqAN Cj4gPiAyLjEuMA0KPiA+IA0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==