From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 01/25] drm/i915/fbc: wait for a vblank instead of 50ms when enabling Date: Fri, 29 Jan 2016 20:42:45 +0000 Message-ID: <1454100162.12148.49.camel@intel.com> References: <1453395393.22174.124.camel@intel.com> <1453406585-10233-1-git-send-email-paulo.r.zanoni@intel.com> <1453831704.12148.43.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 9378C6E427 for ; Fri, 29 Jan 2016 12:42:46 -0800 (PST) In-Reply-To: Content-Language: en-US Content-ID: <588E72E43D979048AE5CF9D618B93A3B@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "rodrigo.vivi@gmail.com" List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE2LTAxLTI5IMOgcyAwMDowNyArMDAwMCwgUm9kcmlnbyBWaXZpIGVzY3JldmV1 Og0KPiBUaGFua3MgZm9yIGFsbCB0aGUgZXhwbGFuYXRpb24uDQo+IA0KPiBNYWtlcyBzZW5zZSBu b3cgYW5kIGV2ZXJ5dGhpbmcgbG9va3MgZmluZSBmb3IgbWUuDQo+IA0KPiBSZXZpZXdlZC1ieTog Um9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPg0KDQpUaGFua3MgUm9kcmlnbyBh bmQgTWFhcnRlbiBmb3IgdGhlIHJldmlld3MuDQoNClRoZSBDSSBwYXJ0IHdhcyBkaXNjdXNzZWQg b2ZmbGluZSB3aXRoIERhbmllbCwgc28gSSBqdXN0IHB1c2hlZCB0aGUNCnBhdGNoZXMuDQoNClRo YW5rcywNClBhdWxvDQoNCj4gDQo+IA0KPiBPbiBUdWUsIEphbiAyNiwgMjAxNiBhdCAxMDowOCBB TSBaYW5vbmksIFBhdWxvIFIgPHBhdWxvLnIuemFub25pQGludGUNCj4gbC5jb20+IHdyb3RlOg0K PiA+IEVtIFRlciwgMjAxNi0wMS0yNiDDoHMgMTc6NDQgKzAwMDAsIFJvZHJpZ28gVml2aSBlc2Ny ZXZldToNCj4gPiA+DQo+ID4gPg0KPiA+ID4gT24gVGh1LCBKYW4gMjEsIDIwMTYgYXQgMTI6MDMg UE0gUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnQNCj4gPiBlbC5jDQo+ID4gPiBvbT4g d3JvdGU6DQo+ID4gPiA+IEluc3RlYWQgb2Ygd2FpdGluZyBmb3IgNTBtcywganVzdCB3YWl0IHVu dGlsIHRoZSBuZXh0IHZibGFuaywNCj4gPiBzaW5jZQ0KPiA+ID4gPiBpdCdzIHRoZSBtaW5pbXVt IHJlcXVpcmVtZW50LiBUaGUgd2hvbGUgaW5mcmFzdHJ1Y3R1cmUgb2YgRkJDDQo+ID4gaXMNCj4g PiA+ID4gYmFzZWQNCj4gPiA+ID4gb24gdmJsYW5rcywgc28gd2FpdGluZyBmb3IgWCB2Ymxhbmtz IGluc3RlYWQgb2YgWCBtaWxsaXNlY29uZHMNCj4gPiA+ID4gc291bmRzDQo+ID4gPiA+IGxpa2Ug dGhlIGNvcnJlY3Qgd2F5IHRvIGdvLiBCZXNpZGVzLCA1MG1zIG1heSBiZSBsZXNzIHRoYW4gYQ0K PiA+IHZibGFuaw0KPiA+ID4gPiBvbg0KPiA+ID4gPiBzdXBlciBzbG93IG1vZGVzIHRoYXQgbWF5 IG9yIG1heSBub3QgZXhpc3QuDQo+ID4gPiA+DQo+ID4gPiA+IFRoZXJlIGFyZSBzb21lIHNtYWxs IGltcHJvdmVtZW50cyBpbiBQQyBzdGF0ZSByZXNpZGVuY3kgKGR1ZSB0bw0KPiA+IHRoZQ0KPiA+ ID4gPiBmYWN0IHRoYXQgd2UncmUgbm93IHVzaW5nIDE2bXMgZm9yIHRoZSBjb21tb24gbW9kZXMg aW5zdGVhZCBvZg0KPiA+ID4gPiA1MG1zKSwNCj4gPiA+ID4gYnV0IHRoZSBiaWdnZXN0IGFkdmFu dGFnZSBpcyBzdGlsbCB0aGUgY29ycmVjdG5lc3Mgb2YgYmVpbmcNCj4gPiA+ID4gdmJsYW5rLWJh c2VkIGluc3RlYWQgb2YgdGltZS1iYXNlZC4NCj4gPiA+ID4NCj4gPiA+ID4gdjI6DQo+ID4gPiA+ IMKgIC0gUmViYXNlIGFmdGVyIGNoYW5naW5nIHRoZSBwYXRjaCBvcmRlci4NCj4gPiA+ID4gwqAg LSBVcGRhdGUgdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiA+ID4gPiB2MzoNCj4gPiA+ID4gwqAgLSBG aXggYm9ndXMgdmJsYW5rX2dldCgpIGluc3RlYWQgb2YgdmJsYW5rX2NvdW50KCkgKFZpbGxlKS4N Cj4gPiA+ID4gwqAgLSBEb24ndCBmb3JnZXQgdG8gY2FsbCBkcm1fY3J0Y192Ymxhbmtfe2dldCxw dXR9IChDaHJpcywNCj4gPiBWaWxsZSkNCj4gPiA+ID4gwqAgLSBBZGp1c3QgdGhlIHBlcmZvcm1h bmNlIGRldGFpbHMgb24gdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiA+ID4gPiB2NDoNCj4gPiA+ID4g wqAgLSBEb24ndCBncmFiIHRoZSBGQkMgbXV0ZXgganVzdCB0byBncmFiIHRoZSB2YmxhbmsgKE1h YXJ0ZW4pDQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1 bG8uci56YW5vbmlAaW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5owqAgfMKgIDIgKy0NCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mYmMuYyB8IDM5DQo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLQ0KPiA+ID4gPiDCoDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaA0KPiA+ID4gPiBpbmRleCAyMDQ2NjFmLi5kOGYyMWYwIDEwMDY0NA0KPiA+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ID4gQEAgLTkyMSw5ICs5MjEs OSBAQCBzdHJ1Y3QgaTkxNV9mYmMgew0KPiA+ID4gPg0KPiA+ID4gPiDCoCDCoCDCoCDCoCBzdHJ1 Y3QgaW50ZWxfZmJjX3dvcmsgew0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBib29s IHNjaGVkdWxlZDsNCj4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdTMyIHNjaGVkdWxl ZF92Ymxhbms7DQo+ID4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCB3b3JrX3N0 cnVjdCB3b3JrOw0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYjsNCj4gPiA+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdW5zaWduZWQg bG9uZyBlbmFibGVfamlmZmllczsNCj4gPiA+ID4gwqAgwqAgwqAgwqAgfSB3b3JrOw0KPiA+ID4g Pg0KPiA+ID4gPiDCoCDCoCDCoCDCoCBjb25zdCBjaGFyICpub19mYmNfcmVhc29uOw0KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMNCj4gPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYw0KPiA+ID4gPiBpbmRleCBhMTk4OGE0 Li4zOTkzYjQzIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYw0K PiA+ID4gPiBAQCAtMzgxLDcgKzM4MSwxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfd29ya19m bihzdHJ1Y3QNCj4gPiA+ID4gd29ya19zdHJ1Y3QgKl9fd29yaykNCj4gPiA+ID4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUsDQo+ID4gPiA+IGZiYy53b3JrLndvcmspOw0KPiA+ID4gPiDCoCDCoCDCoCDCoCBzdHJ1Y3Qg aW50ZWxfZmJjX3dvcmsgKndvcmsgPSAmZGV2X3ByaXYtPmZiYy53b3JrOw0KPiA+ID4gPiDCoCDC oCDCoCDCoCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5mYmMuY3J0YzsNCj4g PiA+ID4gLcKgIMKgIMKgIMKgaW50IGRlbGF5X21zID0gNTA7DQo+ID4gPiA+ICvCoCDCoCDCoCDC oHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXZfcHJpdi0+ZGV2LQ0KPiA+ID4g PiA+dmJsYW5rW2NydGMtPnBpcGVdOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoCDCoCDCoCDCoGlm IChkcm1fY3J0Y192YmxhbmtfZ2V0KCZjcnRjLT5iYXNlKSkgew0KPiA+ID4gPiArwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBEUk1fRVJST1IoInZibGFuayBub3QgYXZhaWxhYmxlIGZvciBGQkMgb24g cGlwZQ0KPiA+ID4gPiAlY1xuIiwNCj4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBtdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOw0K PiA+ID4gPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB3b3JrLT5zY2hlZHVsZWQgPSBmYWxzZTsN Cj4gPiA+IEkgY291bGRuJ3QgdW5kZXJzdGFuZCB0aGlzIGhlcmUuLi4gZG9lc24ndCBsb29rIHJl bGF0ZWQgdG8NCj4gPiA+IHMvdGltZS92YmxhbmsuLi4NCj4gPiA+IGNvdWxkIHlvdSBwbGVhc2Ug ZXhwbGFpbj8NCj4gPiANCj4gPiBQcmV2aW91c2x5IHdlIHdlcmUganVzdCBkZWFsaW5nIHdpdGgg IndhaXQgYSBjZXJ0YWluIGFtb3VudCBvZg0KPiA+IHRpbWUvamlmZmllcyIsIGFuZCBmb3IgdGhh dCB3ZSBjYW4ganVzdCBjYWxsIHRoZQ0KPiA+IGRlbGF5L3NsZWVwL3dhaXQvZXRjDQo+ID4gY2Fs bHMgd2l0aG91dCBuZWVkaW5nIGFueSBnZXQvcHV0IGNhbGxzLg0KPiA+IA0KPiA+IE5vdyB3ZSds bCB3YWl0IGZvciBhIGNlcnRhaW4gbnVtYmVyIG9mIHZibGFua3MsIGFuZCB3ZSBuZWVkIHRvIGhh dmUNCj4gPiB0aGUNCj4gPiB2YmxhbmsgaW50ZXJydXB0cyBlbmFibGVkIGJlZm9yZSB3ZSBjYW4g d2FpdCBmb3IgdGhlbS4gVGhhdCdzIHdoeQ0KPiA+IHdlDQo+ID4gaGF2ZSB0aGUgdmJsYW5rIGdl dC9wdXQgY2FsbHMuIEFuZCBzaW5jZSBnZXQoKSBjYW4gZmFpbCwgd2UgbmVlZCBhbg0KPiA+IGVy cm9yIHBhdGguDQo+ID4gDQo+ID4gVW5kZXIgbm9ybWFsIEZCQyBvcGVyYXRpb24sIGV2ZXJ5IHZi bGFuayBnZXQvcHV0IGNhbGwgc2hvdWxkDQo+ID4gc3VjY2VlZA0KPiA+IGJlY2F1c2UgdGhlIHBp cGUncyBzdXBwb3NlZCB0byBiZSBydW5uaW5nLsKgIEJ1dCBpbiBjYXNlIHdlIGFjdHVhbGx5DQo+ ID4gZmFpbCB0byBnZXQgdmJsYW5rcywgd2UganVzdCBleGl0IGZyb20gdGhlIHdvcmsgZnVuY3Rp b24uIFRoZSB3YXkNCj4gPiB3ZQ0KPiA+IHNpZ25hbCAidGhlIHdvcmsgZnVuY3Rpb24gaXMgbm90 IHJ1bm5pbmciIGlzIGJ5IHNldHRpbmcgd29yay0NCj4gPiA+c2NoZWR1bGVkDQo+ID4gdG8gZmFs c2UuDQo+ID4gDQo+ID4gPg0KPiA+ID4gPiDCoCvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsNCj4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcmV0dXJuOw0KPiA+ID4gPiArwqAgwqAgwqAgwqB9DQo+ID4gPiA+DQo+ID4gPiA+IMKg cmV0cnk6DQo+ID4gPiA+IMKgIMKgIMKgIMKgIC8qIERlbGF5IHRoZSBhY3R1YWwgZW5hYmxpbmcg dG8gbGV0IHBhZ2VmbGlwcGluZyBjZWFzZQ0KPiA+IGFuZA0KPiA+ID4gPiB0aGUNCj4gPiA+ID4g QEAgLTM5MCwxNCArNDAwLDE2IEBAIHJldHJ5Og0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCogdmJs YW5rIHRvIHBhc3MgYWZ0ZXIgZGlzYWJsaW5nIHRoZSBGQkMgYmVmb3JlIHdlDQo+ID4gYXR0ZW1w dA0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCogdG8gbW9kaWZ5IHRoZSBjb250cm9sIHJlZ2lzdGVy cy4NCj4gPiA+ID4gwqAgwqAgwqAgwqAgwqAqDQo+ID4gPiA+IC3CoCDCoCDCoCDCoCAqIEEgbW9y ZSBjb21wbGljYXRlZCBzb2x1dGlvbiB3b3VsZCBpbnZvbHZlIHRyYWNraW5nDQo+ID4gPiA+IHZi bGFua3MNCj4gPiA+ID4gLcKgIMKgIMKgIMKgICogZm9sbG93aW5nIHRoZSB0ZXJtaW5hdGlvbiBv ZiB0aGUgcGFnZS1mbGlwcGluZw0KPiA+IHNlcXVlbmNlDQo+ID4gPiA+IC3CoCDCoCDCoCDCoCAq IGFuZCBpbmRlZWQgcGVyZm9ybWluZyB0aGUgZW5hYmxlIGFzIGEgY28tcm91dGluZSBhbmQNCj4g PiBub3QNCj4gPiA+ID4gLcKgIMKgIMKgIMKgICogd2FpdGluZyBzeW5jaHJvbm91c2x5IHVwb24g dGhlIHZibGFuay4NCj4gPiA+ID4gLcKgIMKgIMKgIMKgICoNCj4gPiA+ID4gwqAgwqAgwqAgwqAg wqAqIFdhRmJjV2FpdEZvclZCbGFua0JlZm9yZUVuYWJsZTppbGssc25iDQo+ID4gPiBobS4uLiBp cyBpdCBzdGlsbCB2YWxpZCBmb3IgbmV3ZXIgcGxhdGZvcm1zIG9yIHdlIHNob3VsZCBwdXQgYSBp Zg0KPiA+IGdlbg0KPiA+ID4gPD02IG9uIHRoZXNlIGNoZWNrcz8NCj4gPiANCj4gPiBJIHRlc3Rl ZCB0aGlzIG9uIEJEVyBzb21lIHRpbWUgYWdvLCBhbmQgaXQgc2VlbXMgd2UgZG9uJ3QgYWN0dWFs bHkNCj4gPiBuZWVkDQo+ID4gdGhlIHZibGFuayB3YWl0IGFueW1vcmUgKGFsdGhvdWdoIEkgZGlk bid0IGNoZWNrIHRoZSBkb2NzIGlmIHdlDQo+ID4gc3RpbGwNCj4gPiBuZWVkIHRoZSB3YWl0KS4g QnV0IEkgd2FudGVkIHRvIGNvbnZlcnQgdGhlIGNvZGUgdG8gdXNlIHZibGFua3MNCj4gPiBiZWZv cmUNCj4gPiBvcHRpbWl6aW5nIGl0IG1vcmUuIEFuZCB0aGUgcmVzaWRlbmN5IGltcGFjdCB3b24n dCBiZSBiaWcuDQo+ID4gDQo+ID4gPiDCoA0KPiA+ID4gPiDCoCvCoCDCoCDCoCDCoCAqDQo+ID4g PiA+ICvCoCDCoCDCoCDCoCAqIEl0IGlzIGFsc28gd29ydGggbWVudGlvbmluZyB0aGF0IHNpbmNl IHdvcmstDQo+ID4gPiA+ID5zY2hlZHVsZWRfdmJsYW5rIGNhbiBiZQ0KPiA+ID4gPiArwqAgwqAg wqAgwqAgKiB1cGRhdGVkIG11bHRpcGxlIHRpbWVzIGJ5IHRoZSBvdGhlciB0aHJlYWRzLCBoaXR0 aW5nDQo+ID4gdGhlDQo+ID4gPiA+IHRpbWVvdXQgaXMNCj4gPiA+ID4gK8KgIMKgIMKgIMKgICog bm90IGFuIGVycm9yIGNvbmRpdGlvbi4gV2UnbGwganVzdCBlbmQgdXAgaGl0dGluZw0KPiA+IHRo ZQ0KPiA+ID4gPiAiZ290byByZXRyeSINCj4gPiA+ID4gK8KgIMKgIMKgIMKgICogY2FzZSBiZWxv dy4NCj4gPiA+ID4gwqAgwqAgwqAgwqAgwqAqLw0KPiA+ID4gPiAtwqAgwqAgwqAgwqB3YWl0X3Jl bWFpbmluZ19tc19mcm9tX2ppZmZpZXMod29yay0+ZW5hYmxlX2ppZmZpZXMsDQo+ID4gPiA+IGRl bGF5X21zKTsNCj4gPiA+ID4gK8KgIMKgIMKgIMKgd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0+ cXVldWUsDQo+ID4gPiA+ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRybV9jcnRjX3ZibGFua19j b3VudCgmY3J0Yy0+YmFzZSkgIT0gd29yay0NCj4gPiA+ID4gPnNjaGVkdWxlZF92YmxhbmssDQo+ ID4gPiA+ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG1zZWNzX3RvX2ppZmZpZXMoNTApKTsNCj4g PiA+ID4NCj4gPiA+ID4gwqAgwqAgwqAgwqAgbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2Nr KTsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQwNiw4ICs0MTgsNyBAQCByZXRyeToNCj4gPiA+ID4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBvdXQ7DQo+ID4gPiA+DQo+ID4gPiA+IMKgIMKg IMKgIMKgIC8qIFdlcmUgd2UgZGVsYXllZCBhZ2FpbiB3aGlsZSB0aGlzIGZ1bmN0aW9uIHdhcw0K PiA+IHNsZWVwaW5nPw0KPiA+ID4gPiAqLw0KPiA+ID4gPiAtwqAgwqAgwqAgwqBpZiAodGltZV9h ZnRlcih3b3JrLT5lbmFibGVfamlmZmllcyArDQo+ID4gPiA+IG1zZWNzX3RvX2ppZmZpZXMoZGVs YXlfbXMpLA0KPiA+ID4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgamlmZmll cykpIHsNCj4gPiA+ID4gK8KgIMKgIMKgIMKgaWYgKGRybV9jcnRjX3ZibGFua19jb3VudCgmY3J0 Yy0+YmFzZSkgPT0gd29yay0NCj4gPiA+ID4gPnNjaGVkdWxlZF92YmxhbmspIHsNCj4gPiA+ID4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2sp Ow0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIHJldHJ5Ow0KPiA+ID4gPiDC oCDCoCDCoCDCoCB9DQo+ID4gPiA+IEBAIC00MTksNiArNDMwLDcgQEAgcmV0cnk6DQo+ID4gPiA+ DQo+ID4gPiA+IMKgb3V0Og0KPiA+ID4gPiDCoCDCoCDCoCDCoCBtdXRleF91bmxvY2soJmRldl9w cml2LT5mYmMubG9jayk7DQo+ID4gPiA+ICvCoCDCoCDCoCDCoGRybV9jcnRjX3ZibGFua19wdXQo JmNydGMtPmJhc2UpOw0KPiA+ID4gPiDCoH0NCj4gPiA+ID4NCj4gPiA+ID4gwqBzdGF0aWMgdm9p ZCBpbnRlbF9mYmNfY2FuY2VsX3dvcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ID4g KmRldl9wcml2KQ0KPiA+ID4gPiBAQCAtNDM0LDEzICs0NDYsMjAgQEAgc3RhdGljIHZvaWQNCj4g PiA+ID4gaW50ZWxfZmJjX3NjaGVkdWxlX2FjdGl2YXRpb24oc3RydWN0IGludGVsX2NydGMgKmNy dGMpDQo+ID4gPiA+DQo+ID4gPiA+IMKgIMKgIMKgIMKgIFdBUk5fT04oIW11dGV4X2lzX2xvY2tl ZCgmZGV2X3ByaXYtPmZiYy5sb2NrKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICvCoCDCoCDCoCDCoGlm IChkcm1fY3J0Y192YmxhbmtfZ2V0KCZjcnRjLT5iYXNlKSkgew0KPiA+ID4gPiArwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBEUk1fRVJST1IoInZibGFuayBub3QgYXZhaWxhYmxlIGZvciBGQkMgb24g cGlwZQ0KPiA+ID4gPiAlY1xuIiwNCj4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsNCj4gPiA+ID4gK8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcmV0dXJuOw0KPiA+ID4gPiArwqAgwqAgwqAgwqB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gwqAgwqAgwqAgwqAgLyogSXQgaXMgdXNlbGVzcyB0byBjYWxsIGludGVsX2ZiY19jYW5j ZWxfd29yaygpIGluDQo+ID4gdGhpcw0KPiA+ID4gPiBmdW5jdGlvbiBzaW5jZQ0KPiA+ID4gPiDC oCDCoCDCoCDCoCDCoCogd2UncmUgbm90IHJlbGVhc2luZyBmYmMubG9jaywgc28gaXQgd29uJ3Qg aGF2ZSBhbg0KPiA+ID4gPiBvcHBvcnR1bml0eSB0byBncmFiDQo+ID4gPiA+IMKgIMKgIMKgIMKg IMKgKiBpdCB0byBkaXNjb3ZlciB0aGF0IGl0IHdhcyBjYW5jZWxsZWQuIFNvIHdlIGp1c3QNCj4g PiB1cGRhdGUNCj4gPiA+ID4gdGhlIGV4cGVjdGVkDQo+ID4gPiA+IMKgIMKgIMKgIMKgIMKgKiBq aWZmeSBjb3VudC4gKi8NCj4gPiA+ID4gwqAgwqAgwqAgwqAgd29yay0+ZmIgPSBjcnRjLT5iYXNl LnByaW1hcnktPmZiOw0KPiA+ID4gPiDCoCDCoCDCoCDCoCB3b3JrLT5zY2hlZHVsZWQgPSB0cnVl Ow0KPiA+ID4gPiAtwqAgwqAgwqAgwqB3b3JrLT5lbmFibGVfamlmZmllcyA9IGppZmZpZXM7DQo+ ID4gPiA+ICvCoCDCoCDCoCDCoHdvcmstPnNjaGVkdWxlZF92YmxhbmsgPSBkcm1fY3J0Y192Ymxh bmtfY291bnQoJmNydGMtDQo+ID4gPiA+ID5iYXNlKTsNCj4gPiA+ID4gK8KgIMKgIMKgIMKgZHJt X2NydGNfdmJsYW5rX3B1dCgmY3J0Yy0+YmFzZSk7DQo+ID4gPiA+DQo+ID4gPiA+IMKgIMKgIMKg IMKgIHNjaGVkdWxlX3dvcmsoJndvcmstPndvcmspOw0KPiA+ID4gPiDCoH0NCj4gPiA+ID4gLS0N Cj4gPiA+ID4gMi42LjQNCj4gPiA+ID4NCj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdA0K PiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gPiA+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4gPiA+ID7C oA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcN Cj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=