From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v4 3/8] drm/i915: Kill off intel_crtc->atomic.wait_vblank, v4. Date: Thu, 18 Feb 2016 15:46:02 +0100 Message-ID: <56C5D92A.6060403@linux.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> <1455804871.2576.51.camel@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 3D51C6EC1D for ; Thu, 18 Feb 2016 14:46:04 +0000 (UTC) In-Reply-To: <1455804871.2576.51.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T3AgMTgtMDItMTYgb20gMTU6MTQgc2NocmVlZiBaYW5vbmksIFBhdWxvIFI6Cj4gRW0gUXVpLCAy MDE2LTAyLTE4IMOgcyAxNDoyMiArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNjcmV2ZXU6Cj4+ IE9wIDE3LTAyLTE2IG9tIDIyOjIwIHNjaHJlZWYgWmFub25pLCBQYXVsbyBSOgo+Pj4gRW0gUXVh LCAyMDE2LTAyLTEwIMOgcyAxMzo0OSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNjcmV2ZXU6 Cj4+Pj4gQ3VycmVudGx5IHdlIHBlcmZvcm0gb3VyIG93biB3YWl0IGluIHBvc3RfcGxhbmVfdXBk YXRlLAo+Pj4+IGJ1dCB0aGUgYXRvbWljIGNvcmUgcGVyZm9ybXMgYW5vdGhlciBvbmUgaW4gd2Fp dF9mb3JfdmJsYW5rcy4KPj4+PiBUaGlzIG1lYW5zIHRoYXQgMiB2YmxhbmtzIGFyZSBkb25lIHdo ZW4gYSBmYiBpcyBjaGFuZ2VkLAo+Pj4+IHdoaWNoIGlzIGEgYml0IG92ZXJraWxsLgo+Pj4+Cj4+ Pj4gTWVyZ2UgdGhlbSBieSBjcmVhdGluZyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHRha2VzIGEg Y3J0YyBtYXNrCj4+Pj4gZm9yIHRoZSBwbGFuZXMgdG8gd2FpdCBvbi4KPj4+Pgo+Pj4+IFRoZSBi cm9hZHdlbGwgdmJsYW5rIHdvcmthcm91bmQgbWF5IGxvb2sgZ29uZSBlbnRpcmVseSBidXQgdGhp cwo+Pj4+IGlzCj4+Pj4gbm90IHRoZSBjYXNlLiBwaXBlX2NvbmZpZy0+d21fY2hhbmdlZCBpcyBz ZXQgdG8gdHJ1ZQo+Pj4+IHdoZW4gYW55IHBsYW5lIGlzIHR1cm5lZCBvbiwgd2hpY2ggZm9yY2Vz IGEgdmJsYW5rIHdhaXQuCj4+Pj4KPj4+PiBDaGFuZ2VzIHNpbmNlIHYxOgo+Pj4+IC0gUmVtb3Zp bmcgdGhlIGRvdWJsZSB2Ymxhbmsgd2FpdCBvbiBicm9hZHdlbGwgbW92ZWQgdG8gaXRzIG93bgo+ Pj4+IGNvbW1pdC4KPj4+PiBDaGFuZ2VzIHNpbmNlIHYyOgo+Pj4+IC0gTW92ZSBvdXQgUE9XRVJf RE9NQUlOX01PREVTRVQgaGFuZGxpbmcgdG8gaXRzIG93biBjb21taXQuCj4+Pj4gQ2hhbmdlcyBz aW5jZSB2MzoKPj4+PiAtIERvIG5vdCB3YWl0IGZvciB2Ymxhbmsgb24gbGVnYWN5IGN1cnNvciB1 cGRhdGVzLiAoVmlsbGUpCj4+Pj4gLSBNb3ZlIGJyb2Fkd2VsbCB2Ymxhbmsgd29ya2Fyb3VuZCBj b21tZW50IHRvIHBhZ2VfZmxpcF9maW5pc2hlZC4KPj4+PiAoVmlsbGUpCj4+Pj4gQ2hhbmdlcyBz aW5jZSB2NDoKPj4+PiAtIENvbXBpbGUgZml4LCBsZWdhY3lfY3Vyc29yX2ZsaXAgLT4gKl91cGRh dGUuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuYwo+Pj4+IG9tPgo+Pj4+IC0tLQo+Pj4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgfCAgMSArCj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyB8IDg2Cj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tCj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAy ICstCj4+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25z KC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRv bWljLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+Pj4gaW5k ZXggNDYyNWY4YTliYTEyLi44ZTU3OWE4NTA1YWMgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdG9taWMuYwo+Pj4+IEBAIC05Nyw2ICs5Nyw3IEBAIGludGVsX2NydGNfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0Ywo+Pj4+ICpjcnRjKQo+Pj4+ICAJY3J0Y19zdGF0ZS0+ ZGlzYWJsZV9scF93bSA9IGZhbHNlOwo+Pj4+ICAJY3J0Y19zdGF0ZS0+ZGlzYWJsZV9jeHNyID0g ZmFsc2U7Cj4+Pj4gIAljcnRjX3N0YXRlLT53bV9jaGFuZ2VkID0gZmFsc2U7Cj4+Pj4gKwljcnRj X3N0YXRlLT5mYl9jaGFuZ2VkID0gZmFsc2U7Cj4+Pj4gIAo+Pj4+ICAJcmV0dXJuICZjcnRjX3N0 YXRlLT5iYXNlOwo+Pj4+ICB9Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4+Pj4gaW5kZXggODA0ZjJjNmYyNjBkLi40ZDRkZGRjMWY5NzAgMTAwNjQ0Cj4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gQEAgLTQ3ODUsOSArNDc4NSw2IEBA IHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKHN0cnVjdAo+Pj4+IGludGVsX2Ny dGMgKmNydGMpCj4+Pj4gIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsK Pj4+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPj4+PiAgCj4+ Pj4gLQlpZiAoYXRvbWljLT53YWl0X3ZibGFuaykKPj4+PiAtCQlpbnRlbF93YWl0X2Zvcl92Ymxh bmsoZGV2LCBjcnRjLT5waXBlKTsKPj4+PiAtCj4+Pj4gIAlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlw KGRldiwgYXRvbWljLT5mYl9iaXRzKTsKPj4+PiAgCj4+Pj4gIAljcnRjLT53bS5jeHNyX2FsbG93 ZWQgPSB0cnVlOwo+Pj4+IEBAIC0xMDkwMiw2ICsxMDg5OSwxMiBAQCBzdGF0aWMgYm9vbCBwYWdl X2ZsaXBfZmluaXNoZWQoc3RydWN0Cj4+Pj4gaW50ZWxfY3J0YyAqY3J0YykKPj4+PiAgCQlyZXR1 cm4gdHJ1ZTsKPj4+PiAgCj4+Pj4gIAkvKgo+Pj4+ICsJICogQkRXIHNpZ25hbHMgZmxpcCBkb25l IGltbWVkaWF0ZWx5IGlmIHRoZSBwbGFuZQo+Pj4+ICsJICogaXMgZGlzYWJsZWQsIGV2ZW4gaWYg dGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Cj4+Pj4gKwkgKiBhcm1lZCB0byBvY2N1ciBhdCB0 aGUgbmV4dCB2YmxhbmsgOigKPj4+PiArCSAqLwo+Pj4gSGF2aW5nIHRoaXMgY29tbWVudCBoZXJl IGlzIGp1c3QuLi4gd2VpcmQuIEkgdGhpbmsgaXQgcmVtb3ZlcyBhIGxvdAo+Pj4gb2YKPj4+IHRo ZSBjb250ZXh0IHRoYXQgd2FzIHByZXNlbnQgYmVmb3JlLgo+Pj4KPj4+PiArCj4+Pj4gKwkvKgo+ Pj4+ICAJICogQSBEU1BTVVJGTElWRSBjaGVjayBpc24ndCBlbm91Z2ggaW4gY2FzZSB0aGUgbW1p byBhbmQKPj4+PiBDUwo+Pj4+IGZsaXBzCj4+Pj4gIAkgKiB1c2VkIHRoZSBzYW1lIGJhc2UgYWRk cmVzcy4gSW4gdGhhdCBjYXNlIHRoZSBtbWlvCj4+Pj4gZmxpcAo+Pj4+IG1pZ2h0Cj4+Pj4gIAkg KiBoYXZlIGNvbXBsZXRlZCwgYnV0IHRoZSBDUyBoYXNuJ3QgZXZlbiBleGVjdXRlZCB0aGUKPj4+ PiBmbGlwCj4+Pj4geWV0Lgo+Pj4+IEBAIC0xMTc3OCw2ICsxMTc4MSw5IEBAIGludAo+Pj4+IGlu dGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0Cj4+Pj4gZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4+Pj4gIAlpZiAoIXdhc192aXNpYmxlICYmICF2aXNpYmxlKQo+Pj4+ICAJ CXJldHVybiAwOwo+Pj4+ICAKPj4+PiArCWlmIChmYiAhPSBvbGRfcGxhbmVfc3RhdGUtPmJhc2Uu ZmIpCj4+Pj4gKwkJcGlwZV9jb25maWctPmZiX2NoYW5nZWQgPSB0cnVlOwo+Pj4+ICsKPj4+PiAg CXR1cm5fb2ZmID0gd2FzX3Zpc2libGUgJiYgKCF2aXNpYmxlIHx8IG1vZGVfY2hhbmdlZCk7Cj4+ Pj4gIAl0dXJuX29uID0gdmlzaWJsZSAmJiAoIXdhc192aXNpYmxlIHx8IG1vZGVfY2hhbmdlZCk7 Cj4+Pj4gIAo+Pj4+IEBAIC0xMTc5Myw4ICsxMTc5OSw2IEBAIGludAo+Pj4+IGludGVsX3BsYW5l X2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0Cj4+Pj4gZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4+Pj4gIAo+Pj4+ICAJCS8qIG11c3QgZGlzYWJsZSBjeHNyIGFyb3VuZCBwbGFuZSBlbmFi bGUvZGlzYWJsZQo+Pj4+ICovCj4+Pj4gIAkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9U WVBFX0NVUlNPUikgewo+Pj4+IC0JCQlpZiAoaXNfY3J0Y19lbmFibGVkKQo+Pj4+IC0JCQkJaW50 ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0KPj4+PiB0cnVlOwo+Pj4+ICAJCQlwaXBlX2Nv bmZpZy0+ZGlzYWJsZV9jeHNyID0gdHJ1ZTsKPj4+PiAgCQl9Cj4+PiBXZSBjb3VsZCBoYXZlIGtp bGxlZCB0aGUgYnJhY2tldHMgaGVyZSA6KQo+PiBJbmRlZWQsIHdpbGwgZG8gc28gaW4gbmV4dCB2 ZXJzaW9uLgo+Pj4+ICAJfSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZShwbGFuZSwgcGxh bmVfc3RhdGUpKSB7Cj4+Pj4gQEAgLTExODEwLDE0ICsxMTgxNCw2IEBAIGludAo+Pj4+IGludGVs X3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0Cj4+Pj4gZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4+Pj4gIAkJaW50ZWxfY3J0Yy0+YXRvbWljLnBvc3RfZW5hYmxlX3ByaW1hcnkg PQo+Pj4+IHR1cm5fb247Cj4+Pj4gIAkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9mYmMgPSB0 cnVlOwo+Pj4+ICAKPj4+PiAtCQkvKgo+Pj4+IC0JCSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBp bW1lZGlhdGVseSBpZiB0aGUKPj4+PiBwbGFuZQo+Pj4+IC0JCSAqIGlzIGRpc2FibGVkLCBldmVu IGlmIHRoZSBwbGFuZSBlbmFibGUgaXMKPj4+PiBhbHJlYWR5Cj4+Pj4gLQkJICogYXJtZWQgdG8g b2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCj4+Pj4gLQkJICovCj4+Pj4gLQkJaWYgKHR1cm5f b24gJiYgSVNfQlJPQURXRUxMKGRldikpCj4+Pj4gLQkJCWludGVsX2NydGMtPmF0b21pYy53YWl0 X3ZibGFuayA9IHRydWU7Cj4+Pj4gLQo+Pj4+ICAJCWJyZWFrOwo+Pj4+ICAJY2FzZSBEUk1fUExB TkVfVFlQRV9DVVJTT1I6Cj4+Pj4gIAkJYnJlYWs7Cj4+Pj4gQEAgLTExODMxLDEyICsxMTgyNywx MCBAQCBpbnQKPj4+PiBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdAo+Pj4+ IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+Pj4+ICAJCWlmIChJU19JVllCUklER0UoZGV2 KSAmJgo+Pj4+ICAJCSAgICBuZWVkc19zY2FsaW5nKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5l X3N0YQo+Pj4+IHRlKSkKPj4+PiAmJgo+Pj4+ICAJCSAgICAhbmVlZHNfc2NhbGluZyhvbGRfcGxh bmVfc3RhdGUpKSB7Cj4+Pj4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktCj4+ Pj4+IGRpc2FibGVfbHBfd20gPSB0cnVlOwo+Pj4+IC0JCX0gZWxzZSBpZiAodHVybl9vZmYgJiYg IW1vZGVfY2hhbmdlZCkgewo+Pj4+IC0JCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92Ymxhbmsg PSB0cnVlOwo+Pj4+ICsJCQlwaXBlX2NvbmZpZy0+ZGlzYWJsZV9scF93bSA9IHRydWU7Cj4+Pj4g KwkJfSBlbHNlIGlmICh0dXJuX29mZiAmJiAhbW9kZV9jaGFuZ2VkKQo+Pj4+ICAJCQlpbnRlbF9j cnRjLQo+Pj4+PiBhdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzCj4+Pj4+ID0KPj4+PiAg CQkJCTEgPDwgaTsKPj4+PiAtCQl9Cj4+PiBXZWlyZCBicmFja2V0cyBoZXJlLiBFaXRoZXIga2ls bCBvbiBib3RoIHNpZGVzIG9mIHRoZSBpZiBzdGF0ZW1lbnQKPj4+ICh0aGUKPj4+IHByZWZlcnJl ZCB3YXkpLCBvciBub25lLgo+Pj4KPj4+IEFsc28sIHNob3VsZG4ndCB3ZSBpbnRyb2R1Y2UgcGlw ZV9jb25maWctPnNwcml0ZV9jaGFuZ2VkPyBXaGF0J3MKPj4+IGd1YXJhbnRlZWluZyB0aGF0IHdl J3JlIGdvaW5nIHRvIGRlZmluaXRlbHkgd2FpdCBmb3IgYSB2YmxhbmsKPj4+IGR1cmluZwo+Pj4g c3ByaXRlIHVwZGF0ZXM/IEkgbGlrZSBleHBsaWNpdCBkdW1iLXByb29mIGNvZGUgaW5zdGVhZCBv Zgo+Pj4gaW1wbGljYXRpb25zCj4+PiBzdWNoIGFzICJ3ZSdyZSBkb2luZyB3YWl0cyBkdXJpbmcg c3ByaXRlIHVwZGF0ZXMgYmVjYXVzZSB3aGVuZXZlcgo+Pj4gd2UKPj4+IHVwZGF0ZSBzcHJpdGVz LCBhIHNwZWNpZmljIHVucmVsYXRlZCB2YXJpYWJsZSB0aGF0J3MgdXNlZCBmb3IgYQo+Pj4gZGlm ZmVyZW50IHB1cnBvc2UgZ2V0cyBzZXQgdG8gdHJ1ZSwgYW5kIHdlIGNoZWNrIGZvciB0aGlzCj4+ PiB2YXJpYWJsZSIuCj4+IHNwcml0ZV9jaGFuZ2VkIHdvdWxkIGJlIHNhbWUgYXMgZmJfY2hhbmdl ZCArIHdtX2NoYW5nZWQsIGFuZAo+PiB1cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgZ2V0cyByZW1v dmVkIGluIHRoaXMgc2VyaWVzCj4+IGJlY2F1c2Ugbm90aGluZyB1c2VzIGl0Lgo+IEhtbW0sIHJp Z2h0LiBGb3Igc29tZSByZWFzb24sIEkgd2FzIGludGVycHJldGluZyBmYl9jaGFuZ2VkIGFzIGJl aW5nCj4gb25seSB2YWxpZCBmb3IgdGhlIHByaW1hcnkgZmIsIG5vdCBmb3Igc3ByL2N1ci4gTXkg YmFkLiBTbyBmYl9jaGFuZ2VkCj4gbWVhbnMgImlmIGFueSBvZiBwcmkvY3VyL3NwciBjaGFuZ2Vk IiBJIGd1ZXNzLiBNYXliZSBwbGFuZXNfY2hhbmdlZAo+IGNvdWxkIGJlIGEgYmV0dGVyIG5hbWUs IG9yIGZic19jaGFuZ2VkIChwbHVyYWwpLCBzaW5jZSB3ZSdyZSB0YWxraW5nCj4gYWJvdXQgbW9y ZSB0aGVuIG9uZSBwb3NzaWJsZSBwbGFuZSBoZXJlLiBOb3QgYSByZXF1aXJlbWVudCwganVzdAo+ IHRocm93aW5nIHRoZSBpZGVhLgpwbGFuZXNfY2hhbmdlZCBpcyBhbHJlYWR5IHVzZWQsIGl0IG1l YW5zIHRoYXQgYW55IHBsYW5lX3N0YXRlIGlzIGJlaW5nIHVwZGF0ZWQgZm9yIHRoaXMgY3J0Yy4K ZmJzX2NoYW5nZWQgY291bGQgd29yayB0aG91Z2gsIG1vc3Qgb3RoZXIgKl9jaGFuZ2VkIGFyZSBw bHVyYWwuCj4+Pj4gIAo+Pj4+ICAJCWJyZWFrOwo+Pj4+ICAJfQo+Pj4+IEBAIC0xMzM3MCw2ICsx MzM2NCw0OCBAQCBzdGF0aWMgaW50Cj4+Pj4gaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4gIAlyZXR1cm4gcmV0Owo+Pj4+ICB9Cj4+Pj4gIAo+ Pj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfd2FpdF9mb3JfdmJsYW5rcyhzdHJ1Y3QgZHJt X2RldmljZQo+Pj4+ICpkZXYsCj4+Pj4gKwkJCQkJICBzdHJ1Y3QKPj4+PiBkcm1faTkxNV9wcml2 YXRlCj4+Pj4gKmRldl9wcml2LAo+Pj4+ICsJCQkJCSAgdW5zaWduZWQgY3J0Y19tYXNrKQo+Pj4+ ICt7Cj4+Pj4gKwl1bnNpZ25lZCBsYXN0X3ZibGFua19jb3VudFtJOTE1X01BWF9QSVBFU107Cj4+ Pj4gKwllbnVtIHBpcGUgcGlwZTsKPj4+PiArCWludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJaWYgKCFj cnRjX21hc2spCj4+Pj4gKwkJcmV0dXJuOwo+Pj4+ICsKPj4+PiArCWZvcl9lYWNoX3BpcGUoZGV2 X3ByaXYsIHBpcGUpIHsKPj4+PiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0K Pj4+Pj4gcGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV07Cj4+Pj4gKwo+Pj4+ICsJCWlmICghKCgx IDw8IHBpcGUpICYgY3J0Y19tYXNrKSkKPj4+PiArCQkJY29udGludWU7Cj4+Pj4gKwo+Pj4+ICsJ CXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7Cj4+Pj4gKwkJaWYgKHJldCAhPSAwKSB7 Cj4+Pj4gKwkJCWNydGNfbWFzayAmPSB+KDEgPDwgcGlwZSk7Cj4+Pj4gKwkJCWNvbnRpbnVlOwo+ Pj4gU2hvdWxkbid0IHdlIERSTV9FUlJPUiBoZXJlPwo+PiBXQVJOX09OIGlzIGVub3VnaCwgdGhp cyBzaG91bGRuJ3QgZXZlciBoYXBwZW4uCj4gRXZlbiBiZXR0ZXIgOikKPgo+Pj4+ICsJCX0KPj4+ PiArCj4+Pj4gKwkJbGFzdF92YmxhbmtfY291bnRbcGlwZV0gPQo+Pj4+IGRybV9jcnRjX3ZibGFu a19jb3VudChjcnRjKTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlmb3JfZWFjaF9waXBlKGRldl9w cml2LCBwaXBlKSB7Cj4+Pj4gKwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtCj4+ Pj4+IHBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+Pj4+ICsKPj4+PiArCQlpZiAoISgoMSA8 PCBwaXBlKSAmIGNydGNfbWFzaykpCj4+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4+ICsKPj4+PiArCQl3 YWl0X2V2ZW50X3RpbWVvdXQoZGV2LT52YmxhbmtbcGlwZV0ucXVldWUsCj4+Pj4gKwkJCQlsYXN0 X3ZibGFua19jb3VudFtwaXBlXSAhPQo+Pj4+ICsJCQkJCWRybV9jcnRjX3ZibGFua19jb3VudChj cgo+Pj4+IHRjKSwKPj4+PiArCQkJCW1zZWNzX3RvX2ppZmZpZXMoNTApKTsKPj4+IEFsc28gbWF5 YmUgRFJNX0VSUk9SIGluIGNhc2Ugd2UgaGl0IHRoZSB0aW1lb3V0Pwo+Pj4KPj4+IEkga25vdyB0 aGUgb3JpZ2luYWwgY29kZSBkb2Vzbid0IGhhdmUgdGhpcywgYnV0IG5vdyB0aGF0IHdlJ3JlCj4+ PiBkb2luZyBvcgo+Pj4gb3duIHRoaW5nLCB3ZSBtYXkgc2NyZWFtIGluIHVuZXhwZWN0ZWQgY2Fz ZXMuCj4+IEknbGwgbWFrZSBpdCBhIFdBUk5fT04sIHNob3VsZG4ndCBoYXBwZW4uCj4+Pj4gKwo+ Pj4+ICsJCWRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7Cj4+Pj4gKwl9Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gKwo+Pj4gVHdvIG5ld2xpbmVzIDopCj4+IEluZGVlZCEKPj4+PiAgLyoqCj4+Pj4gICAq IGludGVsX2F0b21pY19jb21taXQgLSBjb21taXQgdmFsaWRhdGVkIHN0YXRlIG9iamVjdAo+Pj4+ ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4+Pj4gQEAgLTEzMzk3LDYgKzEzNDMzLDcgQEAgc3RhdGlj IGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdAo+Pj4+IGRybV9kZXZpY2UgKmRldiwKPj4+ PiAgCWludCByZXQgPSAwLCBpOwo+Pj4+ICAJYm9vbCBod19jaGVjayA9IGludGVsX3N0YXRlLT5t b2Rlc2V0Owo+Pj4+ICAJdW5zaWduZWQgbG9uZyBwdXRfZG9tYWluc1tJOTE1X01BWF9QSVBFU10g PSB7fTsKPj4+PiArCXVuc2lnbmVkIGNydGNfdmJsYW5rX21hc2sgPSAwOwo+Pj4+ICAKPj4+PiAg CXJldCA9IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChkZXYsIHN0YXRlLCBhc3luYyk7Cj4+ Pj4gIAlpZiAocmV0KSB7Cj4+Pj4gQEAgLTEzNDcwLDggKzEzNTA3LDkgQEAgc3RhdGljIGludCBp bnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdAo+Pj4+IGRybV9kZXZpY2UgKmRldiwKPj4+PiAgCWZv cl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPj4+PiAg CQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9Cj4+Pj4gdG9faW50ZWxfY3J0YyhjcnRj KTsKPj4+PiAgCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKTsKPj4+ PiAtCQlib29sIHVwZGF0ZV9waXBlID0gIW1vZGVzZXQgJiYKPj4+PiAtCQkJdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSktCj4+Pj4+IHVwZGF0ZV9waXBlOwo+Pj4+ICsJCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4+Pj4gKwkJCXRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOwo+Pj4+ICsJCWJvb2wgdXBkYXRlX3BpcGUgPSAhbW9kZXNldCAmJiBw aXBlX2NvbmZpZy0KPj4+Pj4gdXBkYXRlX3BpcGU7Cj4+Pj4gIAo+Pj4+ICAJCWlmIChtb2Rlc2V0 ICYmIGNydGMtPnN0YXRlLT5hY3RpdmUpIHsKPj4+PiAgCQkJdXBkYXRlX3NjYW5saW5lX29mZnNl dCh0b19pbnRlbF9jcnRjKGNydAo+Pj4+IGMpKTsKPj4+PiBAQCAtMTM0ODgsMTQgKzEzNTI2LDIw IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QKPj4+PiBkcm1fZGV2aWNl ICpkZXYsCj4+Pj4gIAkJICAgIChjcnRjLT5zdGF0ZS0+cGxhbmVzX2NoYW5nZWQgfHwKPj4+PiB1 cGRhdGVfcGlwZSkpCj4+Pj4gIAkJCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25f Y3J0YygKPj4+PiBjcnRjCj4+Pj4gX3N0YXRlKTsKPj4+PiAgCj4+Pj4gLQkJaW50ZWxfcG9zdF9w bGFuZV91cGRhdGUoaW50ZWxfY3J0Yyk7Cj4+Pj4gKwkJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFj dGl2ZSAmJgo+Pj4+ICsJCSAgICAocGlwZV9jb25maWctPndtX2NoYW5nZWQgfHwgcGlwZV9jb25m aWctCj4+Pj4+IGRpc2FibGVfY3hzciB8fAo+Pj4+ICsJCSAgICAgcGlwZV9jb25maWctPmZiX2No YW5nZWQpKQo+Pj4gU28gdGhlIHdtX2NoYW5nZWQgaXMganVzdCBmb3IgdGhlIEJEVyB3b3JrYXJv dW5kICsgc3ByaXRlcz8gV2hhdAo+Pj4gYWJvdXQKPj4+IHRoaXMgZGlzYWJsZV9jeHNyLCB3aHkg aXMgaXQgaGVyZT8gQWxzbyBzZWUgbXkgY29tbWVudCBhYm92ZSBhYm91dAo+Pj4gc3ByaXRlX2No YW5nZWQuIE1heWJlIHdlIG5lZWQgc29tZSBjb21tZW50cyBoZXJlIHRvIGV4cGxhaW4gdGhlCj4+ PiBjb21wbGV4Cj4+PiBjaGVja3MuCj4+IE5vIGl0J3Mgd2FpdGluZyBmb3IgYSB2YmxhbmsgZm9y IHBvc3RfcGxhbmVfdXBkYXRlIHNvIGFsbCBvcHRpbWl6ZWQKPj4gd20gdmFsdWVzCj4+IGNhbiBn ZXQgd3JpdHRlbiwgaXQncyBub3QganVzdCBmb3IgdGhlIEJEVyB3b3JrYXJvdW5kLgo+PiBJdCBq dXN0IGhhcHBlbnMgdG8gYmUgdGhhdCB0aGUgQkRXIHcvYSBnZXRzIGFwcGxpZWQgdG9vIGFzIGEg c2lkZQo+PiBlZmZlY3QuCj4gU28gbWF5YmUgc29tZSBjb21tZW50IHJlZ2FyZGluZyB0aGUgQkRX IFdBIGNvdWxkIGJlIGhlcmUuCj4KPiBXaGF0IGFib3V0IGRpc2FibGVfY3hzcj8gV2h5IGlzIHRo aXMgaGVyZT8KVGhhdCdzIHdoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCBjb2RlLCBzZWUgdGhlIGNh bGNfY2hhbmdlcyBodW5rIHdoaWNoIGhhZCBhIHZibGFua193YWl0ID0gdHJ1ZS4KPj4+PiArCQkJ Y3J0Y192YmxhbmtfbWFzayB8PSAxIDw8IGk7Cj4+Pj4gIAl9Cj4+Pj4gIAo+Pj4+ICAJLyogRklY TUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwo+Pj4+ICAKPj4+PiAtCWRybV9hdG9taWNfaGVscGVy X3dhaXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7Cj4+Pj4gKwlpZiAoIXN0YXRlLT5sZWdhY3lf Y3Vyc29yX3VwZGF0ZSkKPj4+PiArCQlpbnRlbF9hdG9taWNfd2FpdF9mb3JfdmJsYW5rcyhkZXYs IGRldl9wcml2LAo+Pj4+IGNydGNfdmJsYW5rX21hc2spOwo+Pj4+ICAKPj4+PiAgCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPj4+PiArCQlpbnRl bF9wb3N0X3BsYW5lX3VwZGF0ZSh0b19pbnRlbF9jcnRjKGNydGMpKTsKPj4+PiArCj4+Pj4gIAkJ aWYgKHB1dF9kb21haW5zW2ldKQo+Pj4+ICAJCQltb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5zKGRl dl9wcml2LAo+Pj4+IHB1dF9kb21haW5zW2ldKTsKPj4+PiAgCX0KPj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4+Pj4gaW5kZXggMzM1ZTZiMjRiMGJjLi5lOTExYzg2Zjg3M2IgMTAw NjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+IEBAIC0zNzksNiArMzc5LDcg QEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+Pj4+ICAJYm9vbCB1cGRhdGVfcGlwZTsgLyog Y2FuIGEgZmFzdCBtb2Rlc2V0IGJlIHBlcmZvcm1lZD8gKi8KPj4+PiAgCWJvb2wgZGlzYWJsZV9j eHNyOwo+Pj4+ICAJYm9vbCB3bV9jaGFuZ2VkOyAvKiB3YXRlcm1hcmtzIGFyZSB1cGRhdGVkICov Cj4+Pj4gKwlib29sIGZiX2NoYW5nZWQ7IC8qIGZiIG9uIGFueSBvZiB0aGUgcGxhbmVzIGlzIGNo YW5nZWQKPj4+PiAqLwo+Pj4+ICAKPj4+PiAgCS8qIFBpcGUgc291cmNlIHNpemUgKGllLiBwYW5l bCBmaXR0ZXIgaW5wdXQgc2l6ZSkKPj4+PiAgCSAqIEFsbCBwbGFuZXMgd2lsbCBiZSBwb3NpdGlv bmVkIGluc2lkZSB0aGlzIHNwYWNlLAo+Pj4+IEBAIC01NDcsNyArNTQ4LDYgQEAgc3RydWN0IGlu dGVsX2NydGNfYXRvbWljX2NvbW1pdCB7Cj4+Pj4gIAo+Pj4+ICAJLyogU2xlZXBhYmxlIG9wZXJh dGlvbnMgdG8gcGVyZm9ybSBhZnRlciBjb21taXQgKi8KPj4+PiAgCXVuc2lnbmVkIGZiX2JpdHM7 Cj4+Pj4gLQlib29sIHdhaXRfdmJsYW5rOwo+Pj4gT25lIG9mIHRoZSB0aGluZ3MgdGhhdCBJIGxp a2UgYWJvdXQgdGhlIGNvZGUgd2l0aG91dCB0aGlzIHBhdGNoIGlzCj4+PiB0aGF0Cj4+PiBpdCdz IHZlcnkgZXhwbGljaXQgb24gd2hlbiB3ZSBuZWVkIHRvIHdhaXQgZm9yIHZibGFua3MgKGV4Y2Vw dCBmb3IKPj4+IHRoZQo+Pj4gcHJvYmxlbSB3aGVyZSB3ZSB3YWl0IHR3aWNlKS4gVGhlIG5ldyBj b2RlIGlzIG5vdCBhcyBlYXN5IHRvCj4+PiByZWFkL3VuZGVyc3RhbmQgYXMgdGhlIG9sZCBvbmUu IFRoaXMgY29tbWVudCBpcyBzaW1pbGFyIHRvIHRoZSBvbmUKPj4+IEkKPj4+IG1hZGUgaW4gcGF0 Y2ggNjogSSdtIG5vdCBzdXJlIGlmIHNhY3JpZmljaW5nIHJlYWRhYmlsaXR5IGlzIHdvcnRoCj4+ PiBpdC4KPj4+Cj4+PiBJIHdvbmRlciB0aGF0IG1heWJlIHRoZSBjbGVhbmVzdCBmaXggdG8gdGhl ICJ3ZSdyZSB3YWl0aW5nIDIKPj4+IHZibGFua3MiCj4+PiBwcm9ibGVtIGlzIHRvIGp1c3QgcmVt b3ZlIHRoZSBjYWxsIHRvCj4+PiBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKCks IHdoaWNoIHdvdWxkIGJlIGEgZmlyc3QgcGF0Y2guCj4+PiBUaGVuIHdlJ2QgaGF2ZSBhIHNlY29u ZCBwYXRjaCBpbnRyb2R1Y2luZwo+Pj4gaW50ZWxfYXRvbWljX3dhaXRfZm9yX3ZibGFua3MoKSBm b3IgdGhlICJ3YWl0IGZvciBhbGwgdmJsYW5rcyBhdAo+Pj4gdGhlCj4+PiBzYW1lIHRpbWUiIG9w dGltaXphdGlvbiwgYW5kIHRoZW4gYSBsYXN0IGNvbW1pdCBwb3NzaWJseSByZXBsYWNpbmcKPj4+ IGNvbW1pdC0+d2FpdF92YmxhbmsgZm9yIHN0YXRlLT5mYl9jaGFuZ2VkLiBKdXN0IGFuIGlkZWEs IG5vdCBhCj4+PiByZXF1ZXN0Lgo+PiBUaGVyZSB3ZXJlIGNhc2VzIGluIHdoaWNoIHRoZSBhdG9t aWMgaGVscGVyIHdvdWxkIHdhaXQgZm9yIHZibGFua3MKPj4gd2hpY2gKPj4gd291bGRuJ3QgdHJp Z2dlciBhbnkgb2YgdGhlIG90aGVyIGNoYW5nZXMsIHNvIGl0IGNhbid0IGJlIGJsaW5kbHkKPj4g cmVtb3ZlZC4gTW9zdGx5IHdoZW4KPj4gdXBkYXRpbmcgYSBwbGFuZSB3aXRoIGEgc2FtZSBzaXpl ZCBmYi4KPiBUaG9zZSBjb3VsZCBiZSBzcGVjaWZpY2FsbHkgYWRkcmVzc2VkIG9uIHRoZWlyIG93 biBwYXRjaGVzLCB0aGVuIDopCkl0IHdvdWxkIGJyZWFrIHRoaW5ncyB0aG91Z2guCgpJIHRoaW5r IHdoYXQgbWlnaHQgbWFrZSB0aGUgbW9zdCBzZW5zZSBpcyBhZGRpbmcgYSBpbmxpbmUgZnVuY3Rp b24gZm9yIG5lZWRzX3ZibGFuaywKd2l0aCBjb21tZW50cyB3aHkgY2VydGFpbiBmbGFncyByZXF1 aXJlIGEgdmJsYW5rIHdhaXQuCj4+IFdhaXQgZm9yIHZibGFuayBpcyByZXF1aXJlZCBmb3IgdW5w aW5uaW5nLCBpdCB3b3VsZCBiZSBiYWQgaWYgdGhlCj4+IGN1cnJlbnQgZmIgaXMgdW5waW5uZWQu Cj4+Cj4+PiBJJ2xsIHdhaXQgZm9yIHlvdXIgYW5zd2VycyBiZWZvcmUgcmVhY2hpbmcgYW55IGNv bmNsdXNpb25zIG9mIHdoYXQKPj4+IEkKPj4+IHRoaW5rIHNob3VsZCBiZSBkb25lLCBzaW5jZSBJ IG1heSBiZSBtaXN1bmRlcnN0YW5kaW5nIHNvbWV0aGluZy4KPj4gSSB3YW50IHRvIGNhbGwgYWxs IHBvc3QgZmxpcCB3b3JrIHNjaGVkdWxlZCBsYXRlciBvbiBzbyBpdCBoYXBwZW5zCj4+IGFmdGVy IHRoZSBuZXh0IHZibGFuay4KPj4gVGhhdCB3aWxsIHJlbW92ZSBhbGwgY29uZnVzaW9uIG9uIHdo ZW4gYSB2YmxhbmsgaXMgcmVxdWlyZWQsIGJlY2F1c2UKPj4gYWxsIHBvc3RfcGxhbmVfdXBkYXRl Cj4+IGFuZCB1bnBpbiB3aWxsIGFsd2F5cyB3YWl0IHVudGlsIG5leHQgdmJsYW5rLgo+Pgo+PiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=