From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH v4 3/8] drm/i915: Kill off intel_crtc->atomic.wait_vblank, v4. Date: Thu, 18 Feb 2016 14:14:33 +0000 Message-ID: <1455804871.2576.51.camel@intel.com> References: <1455108583-29227-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455108583-29227-4-git-send-email-maarten.lankhorst@linux.intel.com> <1455744008.2576.41.camel@intel.com> <56C5C5AC.8080906@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id BF2CB6EBE6 for ; Thu, 18 Feb 2016 14:14:35 +0000 (UTC) In-Reply-To: <56C5C5AC.8080906@linux.intel.com> Content-Language: en-US Content-ID: <8DAFA915E8C9544AA2E908E687B4538A@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" , "maarten.lankhorst@linux.intel.com" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE2LTAyLTE4IMOgcyAxNDoyMiArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNj cmV2ZXU6DQo+IE9wIDE3LTAyLTE2IG9tIDIyOjIwIHNjaHJlZWYgWmFub25pLCBQYXVsbyBSOg0K PiA+IEVtIFF1YSwgMjAxNi0wMi0xMCDDoHMgMTM6NDkgKzAxMDAsIE1hYXJ0ZW4gTGFua2hvcnN0 IGVzY3JldmV1Og0KPiA+ID4gQ3VycmVudGx5IHdlIHBlcmZvcm0gb3VyIG93biB3YWl0IGluIHBv c3RfcGxhbmVfdXBkYXRlLA0KPiA+ID4gYnV0IHRoZSBhdG9taWMgY29yZSBwZXJmb3JtcyBhbm90 aGVyIG9uZSBpbiB3YWl0X2Zvcl92YmxhbmtzLg0KPiA+ID4gVGhpcyBtZWFucyB0aGF0IDIgdmJs YW5rcyBhcmUgZG9uZSB3aGVuIGEgZmIgaXMgY2hhbmdlZCwNCj4gPiA+IHdoaWNoIGlzIGEgYml0 IG92ZXJraWxsLg0KPiA+ID4gDQo+ID4gPiBNZXJnZSB0aGVtIGJ5IGNyZWF0aW5nIGEgaGVscGVy IGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBjcnRjIG1hc2sNCj4gPiA+IGZvciB0aGUgcGxhbmVzIHRv IHdhaXQgb24uDQo+ID4gPiANCj4gPiA+IFRoZSBicm9hZHdlbGwgdmJsYW5rIHdvcmthcm91bmQg bWF5IGxvb2sgZ29uZSBlbnRpcmVseSBidXQgdGhpcw0KPiA+ID4gaXMNCj4gPiA+IG5vdCB0aGUg Y2FzZS4gcGlwZV9jb25maWctPndtX2NoYW5nZWQgaXMgc2V0IHRvIHRydWUNCj4gPiA+IHdoZW4g YW55IHBsYW5lIGlzIHR1cm5lZCBvbiwgd2hpY2ggZm9yY2VzIGEgdmJsYW5rIHdhaXQuDQo+ID4g PiANCj4gPiA+IENoYW5nZXMgc2luY2UgdjE6DQo+ID4gPiAtIFJlbW92aW5nIHRoZSBkb3VibGUg dmJsYW5rIHdhaXQgb24gYnJvYWR3ZWxsIG1vdmVkIHRvIGl0cyBvd24NCj4gPiA+IGNvbW1pdC4N Cj4gPiA+IENoYW5nZXMgc2luY2UgdjI6DQo+ID4gPiAtIE1vdmUgb3V0IFBPV0VSX0RPTUFJTl9N T0RFU0VUIGhhbmRsaW5nIHRvIGl0cyBvd24gY29tbWl0Lg0KPiA+ID4gQ2hhbmdlcyBzaW5jZSB2 MzoNCj4gPiA+IC0gRG8gbm90IHdhaXQgZm9yIHZibGFuayBvbiBsZWdhY3kgY3Vyc29yIHVwZGF0 ZXMuIChWaWxsZSkNCj4gPiA+IC0gTW92ZSBicm9hZHdlbGwgdmJsYW5rIHdvcmthcm91bmQgY29t bWVudCB0byBwYWdlX2ZsaXBfZmluaXNoZWQuDQo+ID4gPiAoVmlsbGUpDQo+ID4gPiBDaGFuZ2Vz IHNpbmNlIHY0Og0KPiA+ID4gLSBDb21waWxlIGZpeCwgbGVnYWN5X2N1cnNvcl9mbGlwIC0+ICpf dXBkYXRlLg0KPiA+ID4gDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuYw0KPiA+ID4gb20+DQo+ID4gPiAtLS0NCj4g PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmPCoMKgfMKgwqAxICsNCj4g PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgODYNCj4gPiA+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiA+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgwqB8wqDCoDIgKy0NCj4gPiA+IMKgMyBmaWxlcyBj aGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jDQo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jDQo+ID4gPiBpbmRleCA0NjI1Zjhh OWJhMTIuLjhlNTc5YTg1MDVhYyAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pYy5jDQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWMuYw0KPiA+ID4gQEAgLTk3LDYgKzk3LDcgQEAgaW50ZWxfY3J0Y19kdXBsaWNhdGVf c3RhdGUoc3RydWN0IGRybV9jcnRjDQo+ID4gPiAqY3J0YykNCj4gPiA+IMKgCWNydGNfc3RhdGUt PmRpc2FibGVfbHBfd20gPSBmYWxzZTsNCj4gPiA+IMKgCWNydGNfc3RhdGUtPmRpc2FibGVfY3hz ciA9IGZhbHNlOw0KPiA+ID4gwqAJY3J0Y19zdGF0ZS0+d21fY2hhbmdlZCA9IGZhbHNlOw0KPiA+ ID4gKwljcnRjX3N0YXRlLT5mYl9jaGFuZ2VkID0gZmFsc2U7DQo+ID4gPiDCoA0KPiA+ID4gwqAJ cmV0dXJuICZjcnRjX3N0YXRlLT5iYXNlOw0KPiA+ID4gwqB9DQo+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiA+ID4gaW5kZXggODA0ZjJjNmYyNjBkLi40ZDRk ZGRjMWY5NzAgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Yw0KPiA+ID4gQEAgLTQ3ODUsOSArNDc4NSw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfcGxh bmVfdXBkYXRlKHN0cnVjdA0KPiA+ID4gaW50ZWxfY3J0YyAqY3J0YykNCj4gPiA+IMKgCQl0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOw0KPiA+ID4gwqAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Ow0KPiA+ID4gwqANCj4gPiA+IC0JaWYgKGF0b21p Yy0+d2FpdF92YmxhbmspDQo+ID4gPiAtCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBjcnRj LT5waXBlKTsNCj4gPiA+IC0NCj4gPiA+IMKgCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBh dG9taWMtPmZiX2JpdHMpOw0KPiA+ID4gwqANCj4gPiA+IMKgCWNydGMtPndtLmN4c3JfYWxsb3dl ZCA9IHRydWU7DQo+ID4gPiBAQCAtMTA5MDIsNiArMTA4OTksMTIgQEAgc3RhdGljIGJvb2wgcGFn ZV9mbGlwX2ZpbmlzaGVkKHN0cnVjdA0KPiA+ID4gaW50ZWxfY3J0YyAqY3J0YykNCj4gPiA+IMKg CQlyZXR1cm4gdHJ1ZTsNCj4gPiA+IMKgDQo+ID4gPiDCoAkvKg0KPiA+ID4gKwnCoCogQkRXIHNp Z25hbHMgZmxpcCBkb25lIGltbWVkaWF0ZWx5IGlmIHRoZSBwbGFuZQ0KPiA+ID4gKwnCoCogaXMg ZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5DQo+ID4gPiArCcKg KiBhcm1lZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2YmxhbmsgOigNCj4gPiA+ICsJwqAqLw0KPiA+ IEhhdmluZyB0aGlzIGNvbW1lbnQgaGVyZSBpcyBqdXN0Li4uIHdlaXJkLiBJIHRoaW5rIGl0IHJl bW92ZXMgYSBsb3QNCj4gPiBvZg0KPiA+IHRoZSBjb250ZXh0IHRoYXQgd2FzIHByZXNlbnQgYmVm b3JlLg0KPiA+IA0KPiA+ID4gKw0KPiA+ID4gKwkvKg0KPiA+ID4gwqAJwqAqIEEgRFNQU1VSRkxJ VkUgY2hlY2sgaXNuJ3QgZW5vdWdoIGluIGNhc2UgdGhlIG1taW8gYW5kDQo+ID4gPiBDUw0KPiA+ ID4gZmxpcHMNCj4gPiA+IMKgCcKgKiB1c2VkIHRoZSBzYW1lIGJhc2UgYWRkcmVzcy4gSW4gdGhh dCBjYXNlIHRoZSBtbWlvDQo+ID4gPiBmbGlwDQo+ID4gPiBtaWdodA0KPiA+ID4gwqAJwqAqIGhh dmUgY29tcGxldGVkLCBidXQgdGhlIENTIGhhc24ndCBldmVuIGV4ZWN1dGVkIHRoZQ0KPiA+ID4g ZmxpcA0KPiA+ID4geWV0Lg0KPiA+ID4gQEAgLTExNzc4LDYgKzExNzgxLDkgQEAgaW50DQo+ID4g PiBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdA0KPiA+ID4gZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiDCoAlpZiAoIXdhc192aXNpYmxlICYmICF2aXNpYmxl KQ0KPiA+ID4gwqAJCXJldHVybiAwOw0KPiA+ID4gwqANCj4gPiA+ICsJaWYgKGZiICE9IG9sZF9w bGFuZV9zdGF0ZS0+YmFzZS5mYikNCj4gPiA+ICsJCXBpcGVfY29uZmlnLT5mYl9jaGFuZ2VkID0g dHJ1ZTsNCj4gPiA+ICsNCj4gPiA+IMKgCXR1cm5fb2ZmID0gd2FzX3Zpc2libGUgJiYgKCF2aXNp YmxlIHx8IG1vZGVfY2hhbmdlZCk7DQo+ID4gPiDCoAl0dXJuX29uID0gdmlzaWJsZSAmJiAoIXdh c192aXNpYmxlIHx8IG1vZGVfY2hhbmdlZCk7DQo+ID4gPiDCoA0KPiA+ID4gQEAgLTExNzkzLDgg KzExNzk5LDYgQEAgaW50DQo+ID4gPiBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0 cnVjdA0KPiA+ID4gZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiDCoA0KPiA+ID4g wqAJCS8qIG11c3QgZGlzYWJsZSBjeHNyIGFyb3VuZCBwbGFuZSBlbmFibGUvZGlzYWJsZQ0KPiA+ ID4gKi8NCj4gPiA+IMKgCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09S KSB7DQo+ID4gPiAtCQkJaWYgKGlzX2NydGNfZW5hYmxlZCkNCj4gPiA+IC0JCQkJaW50ZWxfY3J0 Yy0+YXRvbWljLndhaXRfdmJsYW5rID0NCj4gPiA+IHRydWU7DQo+ID4gPiDCoAkJCXBpcGVfY29u ZmlnLT5kaXNhYmxlX2N4c3IgPSB0cnVlOw0KPiA+ID4gwqAJCX0NCj4gPiBXZSBjb3VsZCBoYXZl IGtpbGxlZCB0aGUgYnJhY2tldHMgaGVyZSA6KQ0KPiBJbmRlZWQsIHdpbGwgZG8gc28gaW4gbmV4 dCB2ZXJzaW9uLg0KPiA+ID4gwqAJfSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZShwbGFu ZSwgcGxhbmVfc3RhdGUpKSB7DQo+ID4gPiBAQCAtMTE4MTAsMTQgKzExODE0LDYgQEAgaW50DQo+ ID4gPiBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdA0KPiA+ID4gZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiDCoAkJaW50ZWxfY3J0Yy0+YXRvbWljLnBvc3Rf ZW5hYmxlX3ByaW1hcnkgPQ0KPiA+ID4gdHVybl9vbjsNCj4gPiA+IMKgCQlpbnRlbF9jcnRjLT5h dG9taWMudXBkYXRlX2ZiYyA9IHRydWU7DQo+ID4gPiDCoA0KPiA+ID4gLQkJLyoNCj4gPiA+IC0J CcKgKiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRlbHkgaWYgdGhlDQo+ID4gPiBwbGFu ZQ0KPiA+ID4gLQkJwqAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRoZSBwbGFuZSBlbmFibGUgaXMN Cj4gPiA+IGFscmVhZHkNCj4gPiA+IC0JCcKgKiBhcm1lZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2 YmxhbmsgOigNCj4gPiA+IC0JCcKgKi8NCj4gPiA+IC0JCWlmICh0dXJuX29uICYmIElTX0JST0FE V0VMTChkZXYpKQ0KPiA+ID4gLQkJCWludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuayA9IHRy dWU7DQo+ID4gPiAtDQo+ID4gPiDCoAkJYnJlYWs7DQo+ID4gPiDCoAljYXNlIERSTV9QTEFORV9U WVBFX0NVUlNPUjoNCj4gPiA+IMKgCQlicmVhazsNCj4gPiA+IEBAIC0xMTgzMSwxMiArMTE4Mjcs MTAgQEAgaW50DQo+ID4gPiBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdA0K PiA+ID4gZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiDCoAkJaWYgKElTX0lWWUJS SURHRShkZXYpICYmDQo+ID4gPiDCoAkJwqDCoMKgwqBuZWVkc19zY2FsaW5nKHRvX2ludGVsX3Bs YW5lX3N0YXRlKHBsYW5lX3N0YQ0KPiA+ID4gdGUpKQ0KPiA+ID4gJiYNCj4gPiA+IMKgCQnCoMKg wqDCoCFuZWVkc19zY2FsaW5nKG9sZF9wbGFuZV9zdGF0ZSkpIHsNCj4gPiA+IC0JCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLQ0KPiA+ID4gPiBkaXNhYmxlX2xwX3dtID0gdHJ1ZTsN Cj4gPiA+IC0JCX0gZWxzZSBpZiAodHVybl9vZmYgJiYgIW1vZGVfY2hhbmdlZCkgew0KPiA+ID4g LQkJCWludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuayA9IHRydWU7DQo+ID4gPiArCQkJcGlw ZV9jb25maWctPmRpc2FibGVfbHBfd20gPSB0cnVlOw0KPiA+ID4gKwkJfSBlbHNlIGlmICh0dXJu X29mZiAmJiAhbW9kZV9jaGFuZ2VkKQ0KPiA+ID4gwqAJCQlpbnRlbF9jcnRjLQ0KPiA+ID4gPmF0 b21pYy51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MNCj4gPiA+ID4gPQ0KPiA+ID4gwqAJCQkJMSA8 PCBpOw0KPiA+ID4gLQkJfQ0KPiA+IFdlaXJkIGJyYWNrZXRzIGhlcmUuIEVpdGhlciBraWxsIG9u IGJvdGggc2lkZXMgb2YgdGhlIGlmIHN0YXRlbWVudA0KPiA+ICh0aGUNCj4gPiBwcmVmZXJyZWQg d2F5KSwgb3Igbm9uZS4NCj4gPiANCj4gPiBBbHNvLCBzaG91bGRuJ3Qgd2UgaW50cm9kdWNlIHBp cGVfY29uZmlnLT5zcHJpdGVfY2hhbmdlZD8gV2hhdCdzDQo+ID4gZ3VhcmFudGVlaW5nIHRoYXQg d2UncmUgZ29pbmcgdG8gZGVmaW5pdGVseSB3YWl0IGZvciBhIHZibGFuaw0KPiA+IGR1cmluZw0K PiA+IHNwcml0ZSB1cGRhdGVzPyBJIGxpa2UgZXhwbGljaXQgZHVtYi1wcm9vZiBjb2RlIGluc3Rl YWQgb2YNCj4gPiBpbXBsaWNhdGlvbnMNCj4gPiBzdWNoIGFzICJ3ZSdyZSBkb2luZyB3YWl0cyBk dXJpbmcgc3ByaXRlIHVwZGF0ZXMgYmVjYXVzZSB3aGVuZXZlcg0KPiA+IHdlDQo+ID4gdXBkYXRl IHNwcml0ZXMsIGEgc3BlY2lmaWMgdW5yZWxhdGVkIHZhcmlhYmxlIHRoYXQncyB1c2VkIGZvciBh DQo+ID4gZGlmZmVyZW50IHB1cnBvc2UgZ2V0cyBzZXQgdG8gdHJ1ZSwgYW5kIHdlIGNoZWNrIGZv ciB0aGlzDQo+ID4gdmFyaWFibGUiLg0KPiBzcHJpdGVfY2hhbmdlZCB3b3VsZCBiZSBzYW1lIGFz IGZiX2NoYW5nZWQgKyB3bV9jaGFuZ2VkLCBhbmQNCj4gdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtz IGdldHMgcmVtb3ZlZCBpbiB0aGlzIHNlcmllcw0KPiBiZWNhdXNlIG5vdGhpbmcgdXNlcyBpdC4N Cg0KSG1tbSwgcmlnaHQuIEZvciBzb21lIHJlYXNvbiwgSSB3YXMgaW50ZXJwcmV0aW5nIGZiX2No YW5nZWQgYXMgYmVpbmcNCm9ubHkgdmFsaWQgZm9yIHRoZSBwcmltYXJ5IGZiLCBub3QgZm9yIHNw ci9jdXIuIE15IGJhZC4gU28gZmJfY2hhbmdlZA0KbWVhbnMgImlmIGFueSBvZiBwcmkvY3VyL3Nw ciBjaGFuZ2VkIiBJIGd1ZXNzLiBNYXliZSBwbGFuZXNfY2hhbmdlZA0KY291bGQgYmUgYSBiZXR0 ZXIgbmFtZSwgb3IgZmJzX2NoYW5nZWQgKHBsdXJhbCksIHNpbmNlIHdlJ3JlIHRhbGtpbmcNCmFi b3V0IG1vcmUgdGhlbiBvbmUgcG9zc2libGUgcGxhbmUgaGVyZS4gTm90IGEgcmVxdWlyZW1lbnQs IGp1c3QNCnRocm93aW5nIHRoZSBpZGVhLg0KDQo+ID4gPiDCoA0KPiA+ID4gwqAJCWJyZWFrOw0K PiA+ID4gwqAJfQ0KPiA+ID4gQEAgLTEzMzcwLDYgKzEzMzY0LDQ4IEBAIHN0YXRpYyBpbnQNCj4g PiA+IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0K PiA+ID4gwqAJcmV0dXJuIHJldDsNCj4gPiA+IMKgfQ0KPiA+ID4gwqANCj4gPiA+ICtzdGF0aWMg dm9pZCBpbnRlbF9hdG9taWNfd2FpdF9mb3JfdmJsYW5rcyhzdHJ1Y3QgZHJtX2RldmljZQ0KPiA+ ID4gKmRldiwNCj4gPiA+ICsJCQkJCcKgwqBzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUN Cj4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ICsJCQkJCcKgwqB1bnNpZ25lZCBjcnRjX21hc2spDQo+ ID4gPiArew0KPiA+ID4gKwl1bnNpZ25lZCBsYXN0X3ZibGFua19jb3VudFtJOTE1X01BWF9QSVBF U107DQo+ID4gPiArCWVudW0gcGlwZSBwaXBlOw0KPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gKw0K PiA+ID4gKwlpZiAoIWNydGNfbWFzaykNCj4gPiA+ICsJCXJldHVybjsNCj4gPiA+ICsNCj4gPiA+ ICsJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgew0KPiA+ID4gKwkJc3RydWN0IGRybV9j cnRjICpjcnRjID0gZGV2X3ByaXYtDQo+ID4gPiA+IHBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVd Ow0KPiA+ID4gKw0KPiA+ID4gKwkJaWYgKCEoKDEgPDwgcGlwZSkgJiBjcnRjX21hc2spKQ0KPiA+ ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4gKw0KPiA+ID4gKwkJcmV0ID0gZHJtX2NydGNfdmJsYW5r X2dldChjcnRjKTsNCj4gPiA+ICsJCWlmIChyZXQgIT0gMCkgew0KPiA+ID4gKwkJCWNydGNfbWFz ayAmPSB+KDEgPDwgcGlwZSk7DQo+ID4gPiArCQkJY29udGludWU7DQo+ID4gU2hvdWxkbid0IHdl IERSTV9FUlJPUiBoZXJlPw0KPiBXQVJOX09OIGlzIGVub3VnaCwgdGhpcyBzaG91bGRuJ3QgZXZl ciBoYXBwZW4uDQoNCkV2ZW4gYmV0dGVyIDopDQoNCj4gPiA+ICsJCX0NCj4gPiA+ICsNCj4gPiA+ ICsJCWxhc3RfdmJsYW5rX2NvdW50W3BpcGVdID0NCj4gPiA+IGRybV9jcnRjX3ZibGFua19jb3Vu dChjcnRjKTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlmb3JfZWFjaF9waXBlKGRldl9w cml2LCBwaXBlKSB7DQo+ID4gPiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0N Cj4gPiA+ID4gcGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV07DQo+ID4gPiArDQo+ID4gPiArCQlp ZiAoISgoMSA8PCBwaXBlKSAmIGNydGNfbWFzaykpDQo+ID4gPiArCQkJY29udGludWU7DQo+ID4g PiArDQo+ID4gPiArCQl3YWl0X2V2ZW50X3RpbWVvdXQoZGV2LT52YmxhbmtbcGlwZV0ucXVldWUs DQo+ID4gPiArCQkJCWxhc3RfdmJsYW5rX2NvdW50W3BpcGVdICE9DQo+ID4gPiArCQkJCQlkcm1f Y3J0Y192YmxhbmtfY291bnQoY3INCj4gPiA+IHRjKSwNCj4gPiA+ICsJCQkJbXNlY3NfdG9famlm Zmllcyg1MCkpOw0KPiA+IEFsc28gbWF5YmUgRFJNX0VSUk9SIGluIGNhc2Ugd2UgaGl0IHRoZSB0 aW1lb3V0Pw0KPiA+IA0KPiA+IEkga25vdyB0aGUgb3JpZ2luYWwgY29kZSBkb2Vzbid0IGhhdmUg dGhpcywgYnV0IG5vdyB0aGF0IHdlJ3JlDQo+ID4gZG9pbmcgb3INCj4gPiBvd24gdGhpbmcsIHdl IG1heSBzY3JlYW0gaW4gdW5leHBlY3RlZCBjYXNlcy4NCj4gSSdsbCBtYWtlIGl0IGEgV0FSTl9P Tiwgc2hvdWxkbid0IGhhcHBlbi4NCj4gPiA+ICsNCj4gPiA+ICsJCWRybV9jcnRjX3ZibGFua19w dXQoY3J0Yyk7DQo+ID4gPiArCX0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArDQo+ID4gVHdv IG5ld2xpbmVzIDopDQo+IEluZGVlZCENCj4gPiA+IMKgLyoqDQo+ID4gPiDCoCAqIGludGVsX2F0 b21pY19jb21taXQgLSBjb21taXQgdmFsaWRhdGVkIHN0YXRlIG9iamVjdA0KPiA+ID4gwqAgKiBA ZGV2OiBEUk0gZGV2aWNlDQo+ID4gPiBAQCAtMTMzOTcsNiArMTM0MzMsNyBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jb21taXQoc3RydWN0DQo+ID4gPiBkcm1fZGV2aWNlICpkZXYsDQo+ID4g PiDCoAlpbnQgcmV0ID0gMCwgaTsNCj4gPiA+IMKgCWJvb2wgaHdfY2hlY2sgPSBpbnRlbF9zdGF0 ZS0+bW9kZXNldDsNCj4gPiA+IMKgCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnNbSTkxNV9NQVhf UElQRVNdID0ge307DQo+ID4gPiArCXVuc2lnbmVkIGNydGNfdmJsYW5rX21hc2sgPSAwOw0KPiA+ ID4gwqANCj4gPiA+IMKgCXJldCA9IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChkZXYsIHN0 YXRlLCBhc3luYyk7DQo+ID4gPiDCoAlpZiAocmV0KSB7DQo+ID4gPiBAQCAtMTM0NzAsOCArMTM1 MDcsOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0DQo+ID4gPiBkcm1f ZGV2aWNlICpkZXYsDQo+ID4gPiDCoAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBjcnRjX3N0YXRlLCBpKSB7DQo+ID4gPiDCoAkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPQ0KPiA+ID4gdG9faW50ZWxfY3J0YyhjcnRjKTsNCj4gPiA+IMKgCQlib29sIG1vZGVzZXQg PSBuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKTsNCj4gPiA+IC0JCWJvb2wgdXBkYXRlX3BpcGUg PSAhbW9kZXNldCAmJg0KPiA+ID4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp LQ0KPiA+ID4gPiB1cGRhdGVfcGlwZTsNCj4gPiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyA9DQo+ID4gPiArCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSk7DQo+ID4gPiArCQlib29sIHVwZGF0ZV9waXBlID0gIW1vZGVzZXQgJiYgcGlwZV9jb25maWct DQo+ID4gPiA+IHVwZGF0ZV9waXBlOw0KPiA+ID4gwqANCj4gPiA+IMKgCQlpZiAobW9kZXNldCAm JiBjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7DQo+ID4gPiDCoAkJCXVwZGF0ZV9zY2FubGluZV9vZmZz ZXQodG9faW50ZWxfY3J0YyhjcnQNCj4gPiA+IGMpKTsNCj4gPiA+IEBAIC0xMzQ4OCwxNCArMTM1 MjYsMjAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdA0KPiA+ID4gZHJt X2RldmljZSAqZGV2LA0KPiA+ID4gwqAJCcKgwqDCoMKgKGNydGMtPnN0YXRlLT5wbGFuZXNfY2hh bmdlZCB8fA0KPiA+ID4gdXBkYXRlX3BpcGUpKQ0KPiA+ID4gwqAJCQlkcm1fYXRvbWljX2hlbHBl cl9jb21taXRfcGxhbmVzX29uX2NydGMoDQo+ID4gPiBjcnRjDQo+ID4gPiBfc3RhdGUpOw0KPiA+ ID4gwqANCj4gPiA+IC0JCWludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKGludGVsX2NydGMpOw0KPiA+ ID4gKwkJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSAmJg0KPiA+ID4gKwkJwqDCoMKgwqAo cGlwZV9jb25maWctPndtX2NoYW5nZWQgfHwgcGlwZV9jb25maWctDQo+ID4gPiA+IGRpc2FibGVf Y3hzciB8fA0KPiA+ID4gKwkJwqDCoMKgwqDCoHBpcGVfY29uZmlnLT5mYl9jaGFuZ2VkKSkNCj4g PiBTbyB0aGUgd21fY2hhbmdlZCBpcyBqdXN0IGZvciB0aGUgQkRXIHdvcmthcm91bmQgKyBzcHJp dGVzPyBXaGF0DQo+ID4gYWJvdXQNCj4gPiB0aGlzIGRpc2FibGVfY3hzciwgd2h5IGlzIGl0IGhl cmU/IEFsc28gc2VlIG15IGNvbW1lbnQgYWJvdmUgYWJvdXQNCj4gPiBzcHJpdGVfY2hhbmdlZC4g TWF5YmUgd2UgbmVlZCBzb21lIGNvbW1lbnRzIGhlcmUgdG8gZXhwbGFpbiB0aGUNCj4gPiBjb21w bGV4DQo+ID4gY2hlY2tzLg0KPiBObyBpdCdzIHdhaXRpbmcgZm9yIGEgdmJsYW5rIGZvciBwb3N0 X3BsYW5lX3VwZGF0ZSBzbyBhbGwgb3B0aW1pemVkDQo+IHdtIHZhbHVlcw0KPiBjYW4gZ2V0IHdy aXR0ZW4sIGl0J3Mgbm90IGp1c3QgZm9yIHRoZSBCRFcgd29ya2Fyb3VuZC4NCj4gSXQganVzdCBo YXBwZW5zIHRvIGJlIHRoYXQgdGhlIEJEVyB3L2EgZ2V0cyBhcHBsaWVkIHRvbyBhcyBhIHNpZGUN Cj4gZWZmZWN0Lg0KDQpTbyBtYXliZSBzb21lIGNvbW1lbnQgcmVnYXJkaW5nIHRoZSBCRFcgV0Eg Y291bGQgYmUgaGVyZS4NCg0KV2hhdCBhYm91dCBkaXNhYmxlX2N4c3I/IFdoeSBpcyB0aGlzIGhl cmU/DQoNCj4gPiA+ICsJCQljcnRjX3ZibGFua19tYXNrIHw9IDEgPDwgaTsNCj4gPiA+IMKgCX0N Cj4gPiA+IMKgDQo+ID4gPiDCoAkvKiBGSVhNRTogYWRkIHN1YnBpeGVsIG9yZGVyICovDQo+ID4g PiDCoA0KPiA+ID4gLQlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3Rh dGUpOw0KPiA+ID4gKwlpZiAoIXN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkNCj4gPiA+ICsJ CWludGVsX2F0b21pY193YWl0X2Zvcl92YmxhbmtzKGRldiwgZGV2X3ByaXYsDQo+ID4gPiBjcnRj X3ZibGFua19tYXNrKTsNCj4gPiA+IMKgDQo+ID4gPiDCoAlmb3JfZWFjaF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7DQo+ID4gPiArCQlpbnRlbF9wb3N0X3BsYW5l X3VwZGF0ZSh0b19pbnRlbF9jcnRjKGNydGMpKTsNCj4gPiA+ICsNCj4gPiA+IMKgCQlpZiAocHV0 X2RvbWFpbnNbaV0pDQo+ID4gPiDCoAkJCW1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2X3By aXYsDQo+ID4gPiBwdXRfZG9tYWluc1tpXSk7DQo+ID4gPiDCoAl9DQo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiA+IGluZGV4IDMzNWU2YjI0YjBiYy4uZTkxMWM4NmY4 NzNiIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgN Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gPiBAQCAt Mzc5LDYgKzM3OSw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsNCj4gPiA+IMKgCWJvb2wg dXBkYXRlX3BpcGU7IC8qIGNhbiBhIGZhc3QgbW9kZXNldCBiZSBwZXJmb3JtZWQ/ICovDQo+ID4g PiDCoAlib29sIGRpc2FibGVfY3hzcjsNCj4gPiA+IMKgCWJvb2wgd21fY2hhbmdlZDsgLyogd2F0 ZXJtYXJrcyBhcmUgdXBkYXRlZCAqLw0KPiA+ID4gKwlib29sIGZiX2NoYW5nZWQ7IC8qIGZiIG9u IGFueSBvZiB0aGUgcGxhbmVzIGlzIGNoYW5nZWQNCj4gPiA+ICovDQo+ID4gPiDCoA0KPiA+ID4g wqAJLyogUGlwZSBzb3VyY2Ugc2l6ZSAoaWUuIHBhbmVsIGZpdHRlciBpbnB1dCBzaXplKQ0KPiA+ ID4gwqAJwqAqIEFsbCBwbGFuZXMgd2lsbCBiZSBwb3NpdGlvbmVkIGluc2lkZSB0aGlzIHNwYWNl LA0KPiA+ID4gQEAgLTU0Nyw3ICs1NDgsNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29t bWl0IHsNCj4gPiA+IMKgDQo+ID4gPiDCoAkvKiBTbGVlcGFibGUgb3BlcmF0aW9ucyB0byBwZXJm b3JtIGFmdGVyIGNvbW1pdCAqLw0KPiA+ID4gwqAJdW5zaWduZWQgZmJfYml0czsNCj4gPiA+IC0J Ym9vbCB3YWl0X3ZibGFuazsNCj4gPiBPbmUgb2YgdGhlIHRoaW5ncyB0aGF0IEkgbGlrZSBhYm91 dCB0aGUgY29kZSB3aXRob3V0IHRoaXMgcGF0Y2ggaXMNCj4gPiB0aGF0DQo+ID4gaXQncyB2ZXJ5 IGV4cGxpY2l0IG9uIHdoZW4gd2UgbmVlZCB0byB3YWl0IGZvciB2YmxhbmtzIChleGNlcHQgZm9y DQo+ID4gdGhlDQo+ID4gcHJvYmxlbSB3aGVyZSB3ZSB3YWl0IHR3aWNlKS4gVGhlIG5ldyBjb2Rl IGlzIG5vdCBhcyBlYXN5IHRvDQo+ID4gcmVhZC91bmRlcnN0YW5kIGFzIHRoZSBvbGQgb25lLiBU aGlzIGNvbW1lbnQgaXMgc2ltaWxhciB0byB0aGUgb25lDQo+ID4gSQ0KPiA+IG1hZGUgaW4gcGF0 Y2ggNjogSSdtIG5vdCBzdXJlIGlmIHNhY3JpZmljaW5nIHJlYWRhYmlsaXR5IGlzIHdvcnRoDQo+ ID4gaXQuDQo+ID4gDQo+ID4gSSB3b25kZXIgdGhhdCBtYXliZSB0aGUgY2xlYW5lc3QgZml4IHRv IHRoZSAid2UncmUgd2FpdGluZyAyDQo+ID4gdmJsYW5rcyINCj4gPiBwcm9ibGVtIGlzIHRvIGp1 c3QgcmVtb3ZlIHRoZSBjYWxsIHRvDQo+ID4gZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJs YW5rcygpLCB3aGljaCB3b3VsZCBiZSBhIGZpcnN0IHBhdGNoLg0KPiA+IFRoZW4gd2UnZCBoYXZl IGEgc2Vjb25kIHBhdGNoIGludHJvZHVjaW5nDQo+ID4gaW50ZWxfYXRvbWljX3dhaXRfZm9yX3Zi bGFua3MoKSBmb3IgdGhlICJ3YWl0IGZvciBhbGwgdmJsYW5rcyBhdA0KPiA+IHRoZQ0KPiA+IHNh bWUgdGltZSIgb3B0aW1pemF0aW9uLCBhbmQgdGhlbiBhIGxhc3QgY29tbWl0IHBvc3NpYmx5IHJl cGxhY2luZw0KPiA+IGNvbW1pdC0+d2FpdF92YmxhbmsgZm9yIHN0YXRlLT5mYl9jaGFuZ2VkLiBK dXN0IGFuIGlkZWEsIG5vdCBhDQo+ID4gcmVxdWVzdC4NCj4gVGhlcmUgd2VyZSBjYXNlcyBpbiB3 aGljaCB0aGUgYXRvbWljIGhlbHBlciB3b3VsZCB3YWl0IGZvciB2YmxhbmtzDQo+IHdoaWNoDQo+ IHdvdWxkbid0IHRyaWdnZXIgYW55IG9mIHRoZSBvdGhlciBjaGFuZ2VzLCBzbyBpdCBjYW4ndCBi ZSBibGluZGx5DQo+IHJlbW92ZWQuIE1vc3RseSB3aGVuDQo+IHVwZGF0aW5nIGEgcGxhbmUgd2l0 aCBhIHNhbWUgc2l6ZWQgZmIuDQoNClRob3NlIGNvdWxkIGJlIHNwZWNpZmljYWxseSBhZGRyZXNz ZWQgb24gdGhlaXIgb3duIHBhdGNoZXMsIHRoZW4gOikNCg0KPiBXYWl0IGZvciB2YmxhbmsgaXMg cmVxdWlyZWQgZm9yIHVucGlubmluZywgaXQgd291bGQgYmUgYmFkIGlmIHRoZQ0KPiBjdXJyZW50 IGZiIGlzIHVucGlubmVkLg0KPiANCj4gPiBJJ2xsIHdhaXQgZm9yIHlvdXIgYW5zd2VycyBiZWZv cmUgcmVhY2hpbmcgYW55IGNvbmNsdXNpb25zIG9mIHdoYXQNCj4gPiBJDQo+ID4gdGhpbmsgc2hv dWxkIGJlIGRvbmUsIHNpbmNlIEkgbWF5IGJlIG1pc3VuZGVyc3RhbmRpbmcgc29tZXRoaW5nLg0K PiBJIHdhbnQgdG8gY2FsbCBhbGwgcG9zdCBmbGlwIHdvcmsgc2NoZWR1bGVkIGxhdGVyIG9uIHNv IGl0IGhhcHBlbnMNCj4gYWZ0ZXIgdGhlIG5leHQgdmJsYW5rLg0KPiBUaGF0IHdpbGwgcmVtb3Zl IGFsbCBjb25mdXNpb24gb24gd2hlbiBhIHZibGFuayBpcyByZXF1aXJlZCwgYmVjYXVzZQ0KPiBh bGwgcG9zdF9wbGFuZV91cGRhdGUNCj4gYW5kIHVucGluIHdpbGwgYWx3YXlzIHdhaXQgdW50aWwg bmV4dCB2YmxhbmsuDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==