From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH i-g-t] lib/igt_kms: Add COMIT_ATOMIC to igt_display_commit2() Date: Fri, 22 Jan 2016 08:00:10 -0800 Message-ID: <20160122160010.GG13311@intel.com> References: <1452848784-7970-1-git-send-email-marius.c.vlad@intel.com> <20160121185750.GA13311@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id B5AFD6EC47 for ; Fri, 22 Jan 2016 08:00:11 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Palleti, Avinash Reddy" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKYW4gMjEsIDIwMTYgYXQgMDk6NDM6MTRQTSAtMDgwMCwgUGFsbGV0aSwgQXZpbmFz aCBSZWRkeSB3cm90ZToKPiBUaGFua3MgTWF0dCBmb3IgcG9pbnRpbmcgbWUgdG8gdGhpcy4KPiAK PiBWbGFkLAo+IEFzIE1hdHQgbWVudGlvbmVkLCB3ZSBhcmUgYWxzbyB3b3JraW5nIG9uIHRoaXMg dG8gZ2V0IGF0b21pYyBzdXBwb3J0IGluIGktZy10LiBMYXN0IHdlZWsgd2UgZmluYWxpemVkIHRo ZSBkZXNpZ24gd2l0aCBNYXR0LiBJIGFtIHB1dHRpbmcgdGhlIGRlc2lnbiB3ZSBkaXNjdXNzZWQg aGVyZSBmb3IgcmVmZXJlbmNlLAo+IAo+IC0gTmV3IGNvbW1pdCBzdHlsZSB3aWxsIGJlIGFkZGVk IGFzICJDT01NSVRfTlVDTEVBUiIKPiAtIElmIHRoZSBjb21taXQgc3R5bGUgaXMgbnVjbGVhciB3 ZSB3aWxsIHVzZSBsaWJkcm0gaW50ZXJmYWNlIHRvIGJ1aWxkIHRoZSBpbnB1dCBzdHJ1Y3R1cmUg YnkgdGFraW5nIGVhY2ggcHJvcGVydHkoZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KQo+IC0gQWJv dmUgbGliZHJtIGludGVyZmFjZSB3aWxsIGNyZWF0ZSB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIGFu ZCBhZGQgZWFjaCBwcm9wZXJ0eSB0byBsaXN0IHdoZW5ldmVyIGNhbGxlZAo+IC0gT25jZSBhbGwg cHJvcGVydGllcyBhcmUgYWRkZWQgaW50byBsaXN0LCBjYWxsIGRybU1vZGVBdG9taWNDb21taXQo KSB0byBkbyBmaW5hbCBjb21taXQuCj4gLSBUaGVyZSB3aWxsIGJlIGNvbmZpZ3VyYXRpb24gdmFy aWFibGUgb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2ggc3BlY2lmaWVzIGNvbW1pdCBzdHls ZSAoZS5nLiwgSUdUX0NPTU1JVF9TVFlMRSkgdGhhdCB3aWxsIGFsbG93IHRvIG92ZXJyaWRlIHRo ZSBjb21taXQgc3R5bGUgb2YgZXhpc3RpbmcgSUdUIHRlc3RzLgo+IAo+IE1hdHQsCj4gQXMgZmFy IGFzIEkga25vdyBib3RoIG51Y2xlYXIgYW5kIGF0b21pYyBhcmUgc2FtZSwgYW5kIHRoZXkgbWVh bgo+IGNvbW1pdCBwZXIgQ1JUQy4gVGhvdWdoIHVzZXJzcGFjZSBkbyBjb21taXQgb25jZSBhdCB0 b3AgbGV2ZWwgZm9yCj4gbXVsdGlwbGUgQ1JUQyB0b2dldGhlciwgS2VybmVsIHdpbGwgaW50ZXJu YWxseSBjb21taXQgb25jZSBwZXIgQ1JUQy4KPiBTbyBubyBuZWVkIG9mIHR3byBjb21taXQgc3R5 bGVzIHRvIGJlIGV4cG9zZWQgaW4gSUdULiAKCkF0b21pYyAoYXMgYW4gaW50ZXJmYWNlKSBhbGxv d3MgeW91IHRvIHN1Ym1pdCBhIHNpbmdsZSBwcm9wZXJ0eXNldCB0aGF0CnVwZGF0ZXMgbXVsdGlw bGUgQ1JUQydzLiAgT3VyIEludGVsIHBsYXRmb3JtcyBkb24ndCBoYXZlIGxvY2tlZCB2Ymxhbmtz LApzbyB5b3UgZG9uJ3QgaGF2ZSBhIGd1YXJhbnRlZSB0aGF0IHRoZSBjaGFuZ2VzIHdpbGwgYmUg dmlzaWJsZSBhdApleGFjdGx5IHRoZSBzYW1lIHRpbWUgYWNyb3NzIHRoZSBkaXNwbGF5cywgYnV0 IHlvdSBkbyBzdGlsbCBnZXQgYQpndWFyYW50ZWUgdGhhdCB0aGUgY29tbWl0IGFzIGEgd2hvbGUg Y29tcGxldGVseSBzdWNjZWVkcyBvciBjb21wbGV0ZWx5CmZhaWxzIHdpdGhvdXQgbGVhdmluZyB5 b3UgaW4gc29tZSBraW5kIG9mIGhhbGZ3YXkgbGltYm8gc3RhdGUuCgoiTnVjbGVhciBwYWdlZmxp cCIgaXMgYSBzdWJzZXQgb2YgdGhhdCBncmVhdGVyIGF0b21pYyBtb2Rlc2V0CmZ1bmN0aW9uYWxp dHkgd2hlcmUgeW91J3JlIG9ubHkgc3VibWl0dGluZyBjaGFuZ2VzIHRoYXQgYWZmZWN0IGEgc2lu Z2xlCkNSVEMuICBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgbWF0Y2hlcyB0aGUgYmVo YXZpb3Igb2YgbW9zdAp1c2Vyc3BhY2UgY29tcG9zaXRvcnM7IGEgbG90IG9mIGNvbXBvc2l0b3Jz IHRlbmQgdG8gaGFuZGxlIGVhY2ggQ1JUQwpzZXBhcmF0ZWx5IGFuZCBzdWJtaXQgbmV3IHVwZGF0 ZSB0cmFuc2FjdGlvbnMgdGllZCB0byB0aGUgc3BlY2lmaWMKQ1JUQydzIHZibGFua3MuCgpTb21l IG9mIG15IGluaXRpYWwgd29yayBoYWQgdHdvIG5ldyBJR1QgY29tbWl0IHN0eWxlcywgTlVDTEVB UiBhbmQKQVRPTUlDLCBiZWNhdXNlIHdlIGhhZCBudWNsZWFyIHBhZ2VmbGlwIHN1cHBvcnQgaW4g aTkxNSB3ZWxsIGJlZm9yZSB3ZQpmaW5pc2hlZCBpbXBsZW1lbnRpbmcgZnVsbCBhdG9taWMgbW9k ZXNldC4gIFRoZXNlIGRheXMgKHRoYW5rcyB0byBsb3RzCm9mIHdvcmsgYnkgTWFhcnRlbiBhbmQg b3RoZXJzKSBvdXIga2VybmVsIGNvZGUgc3VwcG9ydHMgYm90aDsgdGhlIG9ubHkKdGhpbmcgd2Un cmUgcmVhbGx5IGxhY2tpbmcgZnJvbSBhbiBpbnRlcmZhY2UgcGVyc3BlY3RpdmUgaXMgc3VwcG9y dCBmb3IKbm9uLWJsb2NraW5nIGNvbW1pdHMsIGFuZCB0aGF0J3MgYW5vdGhlciBpc3N1ZSBhbHRv Z2V0aGVyLiAgSXQncwpwcm9iYWJseSBmaW5lIHRvIGp1c3QgaGF2ZSBhIHNpbmdsZSBuZXcgY29t bWl0IHN0eWxlIGluIElHVCBub3csIGJ1dCBJJ2QKc3VnZ2VzdCBjYWxsaW5nIGl0ICdBVE9NSUMn IHJhdGhlciB0aGFuICdOVUNMRUFSJyBhbmQgbWFrZSBzdXJlIHRoYXQgaXQKYWxsb3dzIHByb3Bl cnRpZXMgZm9yIG11bHRwbGUgQ1JUQydzIHRvIGFsbCBiZSBjb21taXR0ZWQgdG9nZXRoZXIuICBJ ZiBhCnNwZWNpZmljIElHVCB0ZXN0IHdhbnRzIHRvIGV4ZXJjaXNlIHRoZSBzdWJzZXQgb2YgZnVu Y3Rpb25hbGl0eQpzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgIm51Y2xlYXIgcGFnZWZsaXAiIHRo ZW4gdGhhdCB0ZXN0IGNhbiBlYXNpbHkKanVzdCBtYWtlIHN1cmUgdGhhdCBpdCBvbmx5IHVwZGF0 ZXMgdGhlIHByb3BlcnRpZXMgb2YgYSBzaW5nbGUgQ1JUQwpiZWZvcmUgc3VibWl0dGluZyB0aGUg Y29tbWl0LgoKCk1hdHQKCj4gCj4gVGhhbmtzLAo+IEF2aW5hc2gKPiAKPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQo+IEZyb206IFJvcGVyLCBNYXR0aGV3IEQgCj4gU2VudDogRnJpZGF5LCBK YW51YXJ5IDIyLCAyMDE2IDEyOjI4IEFNCj4gVG86IFZsYWQsIE1hcml1cyBDIDxtYXJpdXMuYy52 bGFkQGludGVsLmNvbT4KPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgUGFs bGV0aSwgQXZpbmFzaCBSZWRkeSA8YXZpbmFzaC5yZWRkeS5wYWxsZXRpQGludGVsLmNvbT4KPiBT dWJqZWN0OiBSZTogW0ludGVsLWdmeF0gW1BBVENIIGktZy10XSBsaWIvaWd0X2ttczogQWRkIENP TUlUX0FUT01JQyB0byBpZ3RfZGlzcGxheV9jb21taXQyKCkKPiAKPiBPbiBGcmksIEphbiAxNSwg MjAxNiBhdCAxMTowNjoyNEFNICswMjAwLCBNYXJpdXMgVmxhZCB3cm90ZToKPiA+IFNvIGZhciwg d2UgaGFkIG9ubHkgQ09NTUlUX1VOSVZFUlNBTCBhbmQgQ09NTUlUX0xFR0FDWSwgdXNpbmcgCj4g PiBkcm1Nb2RlU2V0UGxhbmUoKS9kcm1TZXRDcnRjKCkuIFRoaXMgcGF0Y2ggYWRkcyBDT01NSVRf QVRPTUlDIHRvIAo+ID4gaWd0X2Rpc3BsYXlfY29tbWl0MigpIHRoYXQgbWFrZXMgdXNlIG9mIGRy bU1vZGVBdG9taWNDb21taXQoKS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWFyaXVzIFZsYWQg PG1hcml1cy5jLnZsYWRAaW50ZWwuY29tPgo+IAo+IEhtbSwgdGhpcyBsb29rcyBwcmV0dHkgc2lt aWxhciB0byB0aGUgSUdUIGluZnJhc3RydWN0dXJlIEkgYWRkZWQgZm9yIG51Y2xlYXIvYXRvbWlj IGFib3V0IGEgeWVhciBhZ286Cj4gCj4gICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vbWF0dHJv cGUvaW50ZWwtZ3B1LXRvb2xzL2NvbW1pdHMvbnVjbGVhcl9wYWdlZmxpcAo+IAo+IFNwZWNpZmlj YWxseSB0aGUgY29tbWl0ICJsaWIva21zOiBBZGQgbnVjbGVhciBwYWdlZmxpcCBjb21taXQgc3R5 bGUiCj4gCj4gQXQgdGhlIHRpbWUgYXRvbWljIHdhcyBzdGlsbCB0b28gbmV3IGFuZCB0aGUgdmFy aW91cyBwaWVjZXMgbGlrZSBsaWJkcm0gd2VyZW4ndCByZWFkaWx5IGF2YWlsYWJsZSBzbyB3ZSBk aWRuJ3QgYWN0dWFsbHkgbWVyZ2UgaXQuICBUaGVuIEkgZ290IHRvbyBidXN5IGFuZCBuZXZlciB1 cGRhdGVkL21lcmdlZCBpdCBvbmNlIHRoZSBBUEkgZmluYWxpemVkLgo+IAo+IE9uZSBvZiB0aGUg VlBHIHZhbGlkYXRpb24gdGVhbXMgd2FzIGluIHRoZSBwcm9jZXNzIG9mIHJlc3VycmVjdGluZyBt eSBvbGQgSUdUIHdvcmsgYW5kIHVwZGF0aW5nIGl0IHRvIG1hdGNoIHRoZSBzbWFsbCBjaGFuZ2Vz IHRoYXQgc251Y2sgaW4gYXMgdGhlIEFQSSBmaW5hbGl6ZWQ7IGl0IG1heSBtYWtlIG1vcmUgc2Vu c2UgZm9yIHRoZW0gdG8gbGV2ZXJhZ2UgeW91ciB3b3JrIGhlcmUgaW5zdGVhZCBzaW5jZSBpdCdz IGFscmVhZHkgdXAtdG8tZGF0ZS4gICtDYyBBdmluYXNoLgo+IAo+IEFsc28sIGFzIG5vdGVkIGJ5 IE1hYXJ0ZW4sIHlvdSdyZSBjYWxsaW5nIGRybU1vZGVBdG9taWNDb21taXQoKSBhdCB0aGUgd3Jv bmcgbGF5ZXIgYW5kIHN1Ym1pdHRpbmcgZXZlcnkgc2luZ2xlIHBsYW5lIHVwZGF0ZSBhcyBpdHMg b3duIHRyYW5zYWN0aW9uIChhbmQgbWlzc2luZyB0aGUgQ1JUQy1sZXZlbCB1cGRhdGVzPykuICBZ b3UgZWl0aGVyIHdhbnQgdG8gY2FsbCBjb21taXQgb25jZSBwZXItdG9wIGxldmVsIHVwZGF0ZSAo Zm9yIHRydWUgYXRvbWljKSBvciBvbmNlIHBlciBDUlRDIHVwZGF0ZSAoZm9yIHRoZSAibnVjbGVh ciBwYWdlZmxpcCIgc3Vic2V0KS4gIEkgZG9uJ3QgdGhpbmsgSSBoYWQgaXQgaW4gbXkgZ2l0aHVi IHJlcG8sIGJ1dCBJIGhhZCBzb21lIHBhdGNoZXMgdGhhdCBtYWRlIHRoZXNlIHR3byBzZXBhcmF0 ZSBjb21taXQgc3R5bGVzLCBDT01NSVRfQVRPTUlDIGFuZCBDT01NSVRfTlVDTEVBUiB0aGF0IHdv dWxkIGFsbG93IGVpdGhlciBvZiB0aGVzZSBzdHlsZXMgdG8gYmUgdXNlZC4KPiAKPiAKPiBNYXR0 Cj4gCj4gPiAtLS0KPiA+ICBsaWIvaWd0X2ttcy5jIHwgMTkwIAo+ID4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gIGxpYi9pZ3Rf a21zLmggfCAgMzMgKysrKysrKysrLQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5j IGIvbGliL2lndF9rbXMuYyBpbmRleCA0OTcxMThhLi42MWY3YTM5IAo+ID4gMTAwNjQ0Cj4gPiAt LS0gYS9saWIvaWd0X2ttcy5jCj4gPiArKysgYi9saWIvaWd0X2ttcy5jCj4gPiBAQCAtMTMwNiw2 ICsxMzA2LDE5MSBAQCBzdGF0aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxl KGlndF9wbGFuZV90ICpwbGFuZSkKPiA+ICAJaWd0X2Fzc2VydChyID09IDApOwlcCj4gPiAgfQo+ ID4gIAo+ID4gK3N0YXRpYyBjb25zdCBjaGFyICppZ3RfcGxhbmVfcHJvcF9uYW1lc1tJR1RfTlVN X1BMQU5FX1BST1BTXSA9IHsKPiA+ICsJIlNSQ19YIiwKPiA+ICsJIlNSQ19ZIiwKPiA+ICsJIlNS Q19XIiwKPiA+ICsJIlNSQ19IIiwKPiA+ICsJIkNSVENfWCIsCj4gPiArCSJDUlRDX1kiLAo+ID4g KwkiQ1JUQ19XIiwKPiA+ICsJIkNSVENfSCIsCj4gPiArCSJGQl9JRCIsCj4gPiArCSJDUlRDX0lE IiwKPiA+ICsJInR5cGUiCj4gPiArfTsKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIFJldHJpZXZlIGFs bCB0aGUgcHJvcGVyaWVzIHNwZWNpZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtIAo+ ID4gK2ludG8KPiA+ICsgKiBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgo+ID4gKyAqLwo+ID4g K3N0YXRpYyB2b2lkCj4gPiAraWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKPiA+ICsJCQkgICAgaW50IHR5cGUsIGlu dCBudW1fcHJvcHMsIGNvbnN0IGNoYXIgKipwcm9wX25hbWVzKSB7Cj4gPiArCWRybU1vZGVPYmpl Y3RQcm9wZXJ0aWVzUHRyIHByb3BzOwo+ID4gKwlpbnQgaSwgaiwgZmQ7Cj4gPiArCj4gPiArCWZk ID0gZGlzcGxheS0+ZHJtX2ZkOwo+ID4gKwo+ID4gKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQ cm9wZXJ0aWVzKGZkLCBwbGFuZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCwgdHlwZSk7Cj4gPiArCWln dF9hc3NlcnQocHJvcHMpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50 X3Byb3BzOyBpKyspIHsKPiA+ICsJCWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0KPiA+ICsJCQlk cm1Nb2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9wc1tpXSk7Cj4gPiArCj4gPiArCQlmb3Ig KGogPSAwOyBqIDwgbnVtX3Byb3BzOyBqKyspIHsKPiA+ICsJCQlpZiAoc3RyY21wKHByb3AtPm5h bWUsIHByb3BfbmFtZXNbal0pICE9IDApCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwkJCXBsYW5l LT5hdG9taWNfcHJvcHNfcGxhbmVbal0gPSBwcm9wcy0+cHJvcHNbaV07Cj4gPiArCQkJYnJlYWs7 Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOwo+ID4gKwl9 Cj4gPiArCj4gPiArCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVydGllcyhwcm9wcyk7Cj4gPiArfQo+ ID4gKwo+ID4gKy8qCj4gPiArICogQ29tbWl0IHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIHRvIGEg RFJNIHBsYW5lIHZpYSB0aGUgCj4gPiArQXRvbWljQ29tbWl0KCkKPiA+ICsgKiBpb2N0bDsgaWYg dGhlIERSTSBjYWxsIHRvIHByb2dyYW0gdGhlIHBsYW5lIGZhaWxzLCB3ZSdsbCBlaXRoZXIgCj4g PiArZmFpbAo+ID4gKyAqIGltbWVkaWF0ZWx5IChmb3IgdGVzdHMgdGhhdCBleHBlY3QgdGhlIGNv bW1pdCB0byBzdWNjZWVkKSBvciAKPiA+ICtyZXR1cm4gdGhlCj4gPiArICogZmFpbHVyZSBjb2Rl IChmb3IgdGVzdHMgdGhhdCBleHBlY3QgYSBzcGVjaWZpYyBlcnJvciBjb2RlKS4KPiA+ICsgKi8K PiA+ICtzdGF0aWMgaW50Cj4gPiAraWd0X2F0b21pY19wbGFuZV9jb21taXQoaWd0X3BsYW5lX3Qg KnBsYW5lLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiA+ICsJCQlib29sIGZhaWxfb25fZXJyb3Ip Cj4gPiArewo+ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5Owo+ ID4gKwo+ID4gKwl1aW50MzJfdCBmYl9pZCwgY3J0Y19pZDsKPiA+ICsJaW50IHJldDsKPiA+ICsJ dWludDMyX3Qgc3JjX3g7Cj4gPiArCXVpbnQzMl90IHNyY195Owo+ID4gKwl1aW50MzJfdCBzcmNf dzsKPiA+ICsJdWludDMyX3Qgc3JjX2g7Cj4gPiArCWludDMyX3QgY3J0Y194Owo+ID4gKwlpbnQz Ml90IGNydGNfeTsKPiA+ICsJdWludDMyX3QgY3J0Y193Owo+ID4gKwl1aW50MzJfdCBjcnRjX2g7 Cj4gPiArCWRybU1vZGVBdG9taWNSZXEgKnJlcTsKPiA+ICsKPiA+ICsJaWd0X2Fzc2VydChwbGFu ZS0+ZHJtX3BsYW5lKTsKPiA+ICsKPiA+ICsJZG9fb3JfZGllKGRybVNldENsaWVudENhcChkaXNw bGF5LT5kcm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01JQywgCj4gPiArMSkpOwo+ID4gKwo+ID4g KwkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCj4gPiAr CWlndF9hc3NlcnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8fAo+ID4gKwkJ CSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4gPiArCj4gPiArCWZiX2lkID0gaWd0X3BsYW5l X2dldF9mYl9pZChwbGFuZSk7Cj4gPiArCWNydGNfaWQgPSBvdXRwdXQtPmNvbmZpZy5jcnRjLT5j cnRjX2lkOwo+ID4gKwo+ID4gKwlpZiAoKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXpl X2NoYW5nZWQpICYmIGZiX2lkID09IDApIHsKPiA+ICsKPiA+ICsJCUxPRyhkaXNwbGF5LAo+ID4g KwkJICAgICIlczogZHJtTW9kZUF0b21pY0NvbW1pdCBwaXBlICVzLCBwbGFuZSAlZCwgZGlzYWJs aW5nXG4iLAo+ID4gKwkJICAgICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKPiA+ICsJCSAgICAg a21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCj4gPiArCQkgICAgIHBsYW5l LT5pbmRleCk7Cj4gPiArCj4gPiArCQlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKPiA+ICsJ CWlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhkaXNwbGF5LCBwbGFuZSwKPiA+ICsJCQkJCSAg ICBEUk1fTU9ERV9PQkpFQ1RfUExBTkUsCj4gPiArCQkJCQkgICAgSUdUX05VTV9QTEFORV9QUk9Q UywKPiA+ICsJCQkJCSAgICBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Cj4gPiArCj4gPiArCQlkcm1N b2RlQXRvbWljU2V0Q3Vyc29yKHJlcSwgMCk7Cj4gPiArCj4gPiArCQkvKiBwb3B1bGF0ZSBwbGFu ZSByZXEgKi8KPiA+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9DUlRDX0lELCAKPiA+ICtjcnRjX2lkKTsKPiA+ICsKPiA+ICsJCWlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwgSUdUX0ZJ WEVEKDAsIDApKTsKPiA+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9TUkNfWSwgSUdUX0ZJWEVEKDAsIDApKTsKPiA+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgSUdUX0ZJWEVE KDAsIDApKTsKPiA+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9TUkNfSCwgCj4gPiArSUdUX0ZJWEVEKDAsIDApKTsKPiA+ICsKPiA+ICsJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gs IDApOwo+ID4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdU X1BMQU5FX0NSVENfWSwgMCk7Cj4gPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShy ZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19XLCAwKTsKPiA+ICsJCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIDApOwo+ID4gKwo+ID4g KwkJcmV0ID0gZHJtTW9kZUF0b21pY0NvbW1pdChkaXNwbGF5LT5kcm1fZmQsIHJlcSwgMCwgTlVM TCk7Cj4gPiArCQlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOwo+ID4gKwo+ID4gKwkJQ0hFQ0tfUkVU VVJOKHJldCwgZmFpbF9vbl9lcnJvcik7Cj4gPiArCj4gPiArCX0gZWxzZSBpZiAocGxhbmUtPmZi X2NoYW5nZWQgfHwgcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwKPiA+ICsJCQlwbGFuZS0+c2l6 ZV9jaGFuZ2VkKSB7Cj4gPiArCj4gPiArCQlzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNy Y194LDApOyAvKiBzcmNfeCAqLwo+ID4gKwkJc3JjX3kgPSBJR1RfRklYRUQocGxhbmUtPmZiLT5z cmNfeSwwKTsgLyogc3JjX3kgKi8KPiA+ICsJCXNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+ c3JjX3csMCk7IC8qIHNyY193ICovCj4gPiArCQlzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ZmIt PnNyY19oLDApOyAvKiBzcmNfaCAqLwo+ID4gKwkJY3J0Y194ID0gcGxhbmUtPmNydGNfeDsKPiA+ ICsJCWNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gPiArCQljcnRjX3cgPSBwbGFuZS0+Y3J0Y193 Owo+ID4gKwkJY3J0Y19oID0gcGxhbmUtPmNydGNfaDsKPiA+ICsKPiA+ICsJCUxPRyhkaXNwbGF5 LAo+ID4gKwkJICAgICIlczogZHJtTW9kZUF0b21pY0NvbW1pdCAlcy4lZCwgZmIgJXUsIHNyYyA9 ICglZCwgJWQpICIKPiA+ICsJCSAgICAiJXV4JXUgZHN0ID0gKCV1LCAldSkgJXV4JXVcbiIsCj4g PiArCQkgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCj4gPiArCQkgICAga21zdGVzdF9waXBl X25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCj4gPiArCQkgICAgcGxhbmUtPmluZGV4LAo+ID4g KwkJICAgIGZiX2lkLAo+ID4gKwkJICAgIHNyY194ID4+IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cg Pj4gMTYsIHNyY19oID4+IDE2LAo+ID4gKwkJICAgIGNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNy dGNfaCk7Cj4gPiArCj4gPiArCj4gPiArCQlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKPiA+ ICsJCWlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhkaXNwbGF5LCBwbGFuZSwKPiA+ICsJCQkJ CSAgICBEUk1fTU9ERV9PQkpFQ1RfUExBTkUsCj4gPiArCQkJCQkgICAgSUdUX05VTV9QTEFORV9Q Uk9QUywKPiA+ICsJCQkJCSAgICBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Cj4gPiArCj4gPiArCQlk cm1Nb2RlQXRvbWljU2V0Q3Vyc29yKHJlcSwgMCk7Cj4gPiArCj4gPiArCQkvKiBwb3B1bGF0ZSBw bGFuZSByZXEgKi8KPiA+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9DUlRDX0lELCBjcnRjX2lkKTsKPiA+ICsJCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOwo+ID4gKwo+ ID4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5F X1NSQ19YLCBzcmNfeCk7Cj4gPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEs IHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKPiA+ICsJCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgc3JjX3cpOwo+ID4gKwkJ aWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19I LCBzcmNfaCk7Cj4gPiArCj4gPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEs IHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19YLCBjcnRjX3gpOwo+ID4gKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKPiA+ ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9D UlRDX1csIGNydGNfdyk7Cj4gPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEs IHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCAKPiA+ICtjcnRjX2gpOwo+ID4gKwo+ID4gKwkJcmV0 ID0gZHJtTW9kZUF0b21pY0NvbW1pdChkaXNwbGF5LT5kcm1fZmQsIHJlcSwgMCwgTlVMTCk7Cj4g PiArCQlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOwo+ID4gKwo+ID4gKwkJQ0hFQ0tfUkVUVVJOKHJl dCwgZmFpbF9vbl9lcnJvcik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcGxhbmUtPmZiX2NoYW5nZWQg PSBmYWxzZTsKPiA+ICsJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKPiA+ICsJcGxh bmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOwo+ID4gKwo+ID4gKwo+ID4gKwlpZiAocGxhbmUtPnJv dGF0aW9uX2NoYW5nZWQpIHsKPiA+ICsJCXJldCA9IGlndF9wbGFuZV9zZXRfcHJvcGVydHkocGxh bmUsIHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSwKPiA+ICsJCQkJCSAgICAgcGxhbmUtPnJvdGF0 aW9uKTsKPiA+ICsKPiA+ICsJCXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkID0gZmFsc2U7Cj4gPiAr CQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9yKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwly ZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArCj4gPiArCj4gPiAgLyoKPiA+ICAgKiBDb21taXQg cG9zaXRpb24gYW5kIGZiIGNoYW5nZXMgdG8gYSBEUk0gcGxhbmUgdmlhIHRoZSBTZXRQbGFuZSBp b2N0bDsgaWYgdGhlCj4gPiAgICogRFJNIGNhbGwgdG8gcHJvZ3JhbSB0aGUgcGxhbmUgZmFpbHMs IHdlJ2xsIGVpdGhlciBmYWlsIGltbWVkaWF0ZWx5IAo+ID4gKGZvciBAQCAtMTU1OCw3ICsxNzQz LDEwIEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCj4g PiAgCQlyZXR1cm4gaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xlZ2FjeShwbGFuZSwgb3V0cHV0 LAo+ID4gIAkJCQkJCSAgICAgICBmYWlsX29uX2Vycm9yKTsKPiA+ICAJfSBlbHNlIHsKPiA+IC0J CXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCBmYWlsX29uX2Vycm9y KTsKPiA+ICsJCWlmIChzID09IENPTU1JVF9BVE9NSUMpCj4gPiArCQkJcmV0dXJuIGlndF9hdG9t aWNfcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwo+ID4gKwkJZWxz ZQo+ID4gKwkJCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCBmYWls X29uX2Vycm9yKTsKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0 X2ttcy5oIGIvbGliL2lndF9rbXMuaCBpbmRleCA5NGYzMTVmLi44MWQ4ZGQ3IAo+ID4gMTAwNjQ0 Cj4gPiAtLS0gYS9saWIvaWd0X2ttcy5oCj4gPiArKysgYi9saWIvaWd0X2ttcy5oCj4gPiBAQCAt MTU2LDkgKzE1NiwyNyBAQCB2b2lkIGttc3Rlc3RfdW5zZXRfYWxsX2NydGNzKGludCBkcm1fZmQs IAo+ID4gZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMpOyAgZW51bSBpZ3RfY29tbWl0X3N0eWxlIHsK PiA+ICAJQ09NTUlUX0xFR0FDWSA9IDAsCj4gPiAgCUNPTU1JVF9VTklWRVJTQUwsCj4gPiAtCS8q IFdlJ2xsIGFkZCBhdG9taWMgaGVyZSBldmVudHVhbGx5LiAqLwo+ID4gKwlDT01NSVRfQVRPTUlD LAo+ID4gIH07Cj4gPiAgCj4gPiArZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMgewo+ ID4gKyAgICAgICBJR1RfUExBTkVfU1JDX1ggPSAwLAo+ID4gKyAgICAgICBJR1RfUExBTkVfU1JD X1ksCj4gPiArICAgICAgIElHVF9QTEFORV9TUkNfVywKPiA+ICsgICAgICAgSUdUX1BMQU5FX1NS Q19ILAo+ID4gKwo+ID4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19YLAo+ID4gKyAgICAgICBJR1Rf UExBTkVfQ1JUQ19ZLAo+ID4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19XLAo+ID4gKyAgICAgICBJ R1RfUExBTkVfQ1JUQ19ILAo+ID4gKwo+ID4gKyAgICAgICBJR1RfUExBTkVfRkJfSUQsCj4gPiAr ICAgICAgIElHVF9QTEFORV9DUlRDX0lELAo+ID4gKyAgICAgICBJR1RfUExBTkVfVFlQRSwKPiA+ ICsgICAgICAgSUdUX05VTV9QTEFORV9QUk9QUwo+ID4gK307Cj4gPiArCj4gPiArCj4gPiAgdHlw ZWRlZiBzdHJ1Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlfdDsgIHR5cGVkZWYgc3RydWN0IGln dF9waXBlIAo+ID4gaWd0X3BpcGVfdDsKPiA+ICB0eXBlZGVmIHVpbnQzMl90IGlndF9maXhlZF90 OwkJCS8qIDE2LjE2IGZpeGVkIHBvaW50ICovCj4gPiBAQCAtMjAwLDYgKzIxOCw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKPiA+ICAJLyogcGFubmluZyBvZmZzZXQgd2l0aGluIHRoZSBmYiAqLwo+ID4g IAl1bnNpZ25lZCBpbnQgcGFuX3gsIHBhbl95Owo+ID4gIAlpZ3Rfcm90YXRpb25fdCByb3RhdGlv bjsKPiA+ICsJdWludDMyX3QgYXRvbWljX3Byb3BzX3BsYW5lW0lHVF9OVU1fUExBTkVfUFJPUFNd Owo+ID4gIH0gaWd0X3BsYW5lX3Q7Cj4gPiAgCj4gPiAgc3RydWN0IGlndF9waXBlIHsKPiA+IEBA IC0yODEsNiArMzAwLDE4IEBAIHZvaWQgaWd0X3dhaXRfZm9yX3ZibGFuayhpbnQgZHJtX2ZkLCBl bnVtIHBpcGUgCj4gPiBwaXBlKTsKPiA+ICAKPiA+ICAjZGVmaW5lIElHVF9GSVhFRChpLGYpCSgo aSkgPDwgMTYgfCAoZikpCj4gPiAgCj4gPiArLyoqCj4gPiArICogaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXE6Cj4gPiArICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEK PiA+ICsgKiBAcGxhbmU6IEEgcG9pbnRlciBpZ3RfcGxhbmVfdAo+ID4gKyAqIEBwcm9wOiBvbmUg b2YgaWd0X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzCj4gPiArICogQHZhbHVlOiB0aGUgdmFsdWUg dG8gYWRkCj4gPiArICovCj4gPiArI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBwcm9wLCB2YWx1ZSkgXAo+ID4gKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1v ZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLFwKPiA+ ICsJCQkJCQkgIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbcHJvcF0sIHZhbHVlKSkKPiA+ICsK PiA+ICsKPiA+ICB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKPiA+ICB2b2lkIGln dF9yZXNldF9jb25uZWN0b3JzKHZvaWQpOwo+ID4gIAo+ID4gLS0KPiA+IDIuNi4yCj4gPiAKPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cj4gCj4gLS0KPiBNYXR0IFJvcGVyCj4gR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKPiBJb1RH IFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKPiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICg5 MTYpIDM1Ni0yNzk1CgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJ b1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkx NikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK