From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH i-g-t v7] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2() Date: Mon, 7 Mar 2016 12:50:06 +0000 Message-ID: <56DD78FE.2090000@gmail.com> References: <1457345934-28943-1-git-send-email-pratik.vishwakarma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-x244.google.com (mail-pa0-x244.google.com [IPv6:2607:f8b0:400e:c03::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7B8476E354 for ; Mon, 7 Mar 2016 12:50:11 +0000 (UTC) Received: by mail-pa0-x244.google.com with SMTP id q6so3523213pav.0 for ; Mon, 07 Mar 2016 04:50:11 -0800 (PST) In-Reply-To: <1457345934-28943-1-git-send-email-pratik.vishwakarma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Pratik Vishwakarma , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgUHJhdGlrLAoKSSdtIHJlYWxseSBsb29raW5nIGZvcndhcmQgdG8gZ2V0IHRoaXMgbWVyZ2Vk LgpKdXN0IGEgZmV3IGNvbW1lbnRzIG9uIHRoZSBwbGFuZSBjb21taXQgcGFydCBiZWxvdy4KCkNo ZWVycywKCi0KTGlvbmVsCgpPbiAwNy8wMy8xNiAxMDoxOCwgUHJhdGlrIFZpc2h3YWthcm1hIHdy b3RlOgo+IEZyb206IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJwdXJlQGludGVs LmNvbT4KPgo+IENvLUF1dGhvciA6IE1hcml1cyBWbGFkIDxtYXJpdXMuYy52bGFkQGludGVsLmNv bT4KPiBDby1BdXRob3IgOiBQcmF0aWsgVmlzaHdha2FybWEgPHByYXRpay52aXNod2FrYXJtYUBp bnRlbC5jb20+Cj4KPiBTbyBmYXIgd2UgaGF2ZSBoYWQgb25seSB0d28gY29tbWl0IHN0eWxlcywg Q09NTUlUX0xFR0FDWQo+IGFuZCBDT01NSVRfVU5JVkVSU0FMLiBUaGlzIHBhdGNoIGFkZHMgYW5v dGhlciBjb21taXQgc3R5bGUKPiBDT01NSVRfQVRPTUlDIHdoaWNoIG1ha2VzIHVzZSBvZiBkcm1N b2RlQXRvbWljQ29tbWl0KCkKPgo+IHYyOiAoTWFyaXVzKQo+IAlpKVNldCBDUlRDX0lEIHRvIHpl cm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5lCj4gCWlpKU1vZGlmaWVkIHRoZSBsb2cgbWVzc2FnZSBp biBpZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29tbWl0Cj4gCWh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9wYXRjaC83MTk0NS8KPgo+IHYzOiAoTWFyaXVzKVNldCBGQl9JRCB0byB6 ZXJvIHdoaWxlIGRpc2FibGluZyBwbGFuZQo+IAlodHRwczovL3BhdGNod29yay5mcmVlZGVza3Rv cC5vcmcvcGF0Y2gvNzIxNzkvCj4KPiB2NDogKE1hYXJ0ZW4pIENvcnJlY3RlZCB0aGUgdHlwbyBp biBjb21taXQgbWVzc2FnZQo+IAlodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0 Y2gvNzI1OTgvCj4KPiB2NTogQWRkZWQgY2hlY2sgZm9yIERSTV9DTElFTlRfQ0FQX0FUT01JQyBp biBpZ3RfZGlzcGxheV9pbml0Cj4gICAgICAoTWFyaXVzKQo+IAlpKVJlbW92ZWQgdW51c2VkIHBy b3BzIGZyb20gaWd0X2Rpc3BsYXlfaW5pdAo+IAlpaSlSZW1vdmVkIHVudXNlZCByZXQuIENoYW5n ZWQgZnVuY3Rpb24gdG8gdm9pZAo+IAlpaWkpRGVjbGFyZSB0aGUgdmFyaWFibGUgYmVmb3JlIGNo ZWNraW5nIGlmIHdlIGhhdmUKPiAJRFJNX0NMSUVOVF9DQVBfQVRPTUlDLgo+IAlodHRwczovL3Bh dGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzM1MDUvCj4KPiB2NjogKEphbmkpIENvcnJl Y3RlZCB0eXBvIGluIGNvbW1pdCBtZXNzYWdlCj4gCWh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNr dG9wLm9yZy9wYXRjaC83NDQ2OC8KPgo+IHY3OiAoVmxhZCAmIE1hYXJ0ZW4pIEFkZGVkIGlzX2F0 b21pYyBjaGVjayBmb3IgRFJNX0NMSUVOVF9DQVBfQVRPTUlDCj4gCWluIGlndF9kaXNwbGF5X2lu aXQgYW5kIGlndF9hdG9taWNfY29tbWl0Cj4KPiBTaWduZWQtb2ZmLWJ5OiBNYXl1cmVzaCBHaGFy cHVyZSA8bWF5dXJlc2gucy5naGFycHVyZUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogUHJh dGlrIFZpc2h3YWthcm1hIDxwcmF0aWsudmlzaHdha2FybWFAaW50ZWwuY29tPgo+IC0tLQo+ICAg bGliL2lndF9rbXMuYyB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCj4gICBsaWIvaWd0X2ttcy5oIHwgIDcyICsrKysrKysrKysr Ky0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMKPiBpbmRleCA1 YTYxZGVmLi4xZjczOGUxIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPiArKysgYi9saWIv aWd0X2ttcy5jCj4gQEAgLTE0NSw2ICsxNDUsMTIwIEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGln dF9rbXNfZ2V0X2Jhc2VfZWRpZCh2b2lkKQo+ICAgICoKPiAgICAqIFJldHVybnM6IGFuIGFsdGVy bmF0ZSBlZGlkIGJsb2NrCj4gICAgKi8KPiArc3RhdGljIGNvbnN0IGNoYXIgKmlndF9wbGFuZV9w cm9wX25hbWVzW0lHVF9OVU1fUExBTkVfUFJPUFNdID0gewo+ICsJIlNSQ19YIiwKPiArCSJTUkNf WSIsCj4gKwkiU1JDX1ciLAo+ICsJIlNSQ19IIiwKPiArCSJDUlRDX1giLAo+ICsJIkNSVENfWSIs Cj4gKwkiQ1JUQ19XIiwKPiArCSJDUlRDX0giLAo+ICsJIkZCX0lEIiwKPiArCSJDUlRDX0lEIiwK PiArCSJ0eXBlIiwKPiArCSJyb3RhdGlvbiIKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFy ICppZ3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7Cj4gKwkiYmFja2dy b3VuZF9jb2xvciIKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICppZ3RfY29ubmVjdG9y X3Byb3BfbmFtZXNbSUdUX05VTV9DT05ORUNUT1JfUFJPUFNdID0gewo+ICsJInNjYWxpbmcgbW9k ZSIsCj4gKwkiRFBNUyIKPiArfTsKPiArCj4gKy8qCj4gKyAqIFJldHJpZXZlIGFsbCB0aGUgcHJv cGVyaWVzIHNwZWNpZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtIGludG8KPiArICog cGxhbmUtPmF0b21pY19wcm9wc19wbGFuZS4KPiArICovCj4gK3N0YXRpYyB2b2lkCj4gK2lndF9h dG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVf dCAqcGxhbmUsCj4gKwkJCWludCBudW1fcHJvcHMsIGNvbnN0IGNoYXIgKipwcm9wX25hbWVzKQo+ ICt7Cj4gKwlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsKPiArCWludCBpLCBqLCBm ZDsKPiArCj4gKwlmZCA9IGRpc3BsYXktPmRybV9mZDsKPiArCj4gKwlwcm9wcyA9IGRybU1vZGVP YmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBwbGFuZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCwgRFJNX01P REVfT0JKRUNUX1BMQU5FKTsKPiArCWlndF9hc3NlcnQocHJvcHMpOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgewo+ICsJCWRybU1vZGVQcm9wZXJ0eVB0 ciBwcm9wID0KPiArCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOwo+ ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgbnVtX3Byb3BzOyBqKyspIHsKPiArCQkJaWYgKHN0cmNt cChwcm9wLT5uYW1lLCBwcm9wX25hbWVzW2pdKSAhPSAwKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ ICsJCQlwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW2pdID0gcHJvcHMtPnByb3BzW2ldOwo+ICsJ CQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7Cj4gKwl9 Cj4gKwo+ICsJZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKPiArfQo+ICsKPiAr LyoKPiArICogUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25h bWUgYW5kIHN0b3JlIHRoZW0gaW50bwo+ICsgKiBjb25maWctPmF0b21pY19wcm9wc19jcnRjIGFu ZCBjb25maWctPmF0b21pY19wcm9wc19jb25uZWN0b3IuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ ICtpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1 dF90ICpvdXRwdXQsCj4gKwkJCWludCBudW1fY3J0Y19wcm9wcywgY29uc3QgY2hhciAqKmNydGNf cHJvcF9uYW1lcywKPiArCQkJaW50IG51bV9jb25uZWN0b3JfcHJvcHMsIGNvbnN0IGNoYXIgKipj b25uX3Byb3BfbmFtZXMpCj4gK3sKPiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3Bz Owo+ICsJaW50IGksIGosIGZkOwo+ICsKPiArCWZkID0gZGlzcGxheS0+ZHJtX2ZkOwo+ICsKPiAr CXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmlnLmNy dGMtPmNydGNfaWQsIERSTV9NT0RFX09CSkVDVF9DUlRDKTsKPiArCWlndF9hc3NlcnQocHJvcHMp Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgewo+ICsJ CWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0KPiArCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBw cm9wcy0+cHJvcHNbaV0pOwo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgbnVtX2NydGNfcHJvcHM7 IGorKykgewo+ICsJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIGNydGNfcHJvcF9uYW1lc1tqXSkg IT0gMCkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3By b3BzX2NydGNbal0gPSBwcm9wcy0+cHJvcHNbaV07Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4g KwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPiArCX0KPiArCj4gKwlkcm1Nb2RlRnJlZU9i amVjdFByb3BlcnRpZXMocHJvcHMpOwo+ICsJcHJvcHMgPSBOVUxMOwo+ICsJcHJvcHMgPSBkcm1N b2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLT5jb25u ZWN0b3JfaWQsIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1IpOwo+ICsJaWd0X2Fzc2VydChwcm9w cyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7Cj4g KwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQo+ICsJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQs IHByb3BzLT5wcm9wc1tpXSk7Cj4gKwo+ICsJCWZvciAoaiA9IDA7IGogPCBudW1fY29ubmVjdG9y X3Byb3BzOyBqKyspIHsKPiArCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCBjb25uX3Byb3BfbmFt ZXNbal0pICE9IDApCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCW91dHB1dC0+Y29uZmlnLmF0 b21pY19wcm9wc19jb25uZWN0b3Jbal0gPSBwcm9wcy0+cHJvcHNbaV07Cj4gKwkJCWJyZWFrOwo+ ICsJCX0KPiArCj4gKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPiArCX0KPiArCj4gKwlk cm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMocHJvcHMpOwo+ICsKPiArfQo+ICsKPiAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIqIGlndF9rbXNfZ2V0X2FsdF9lZGlkKHZvaWQpCj4gICB7Cj4gICAJdXBk YXRlX2VkaWRfY3N1bShhbHRfZWRpZCk7Cj4gQEAgLTEwMDIsNiArMTExNiw4IEBAIHN0YXRpYyB2 b2lkIGlndF9vdXRwdXRfcmVmcmVzaChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPiAgIAkgICAga21z dGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwo+ICAgCj4gICAJZGlzcGxheS0+ cGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlwZTsKPiArCWlndF9hdG9taWNf ZmlsbF9wcm9wcyhkaXNwbGF5LCBvdXRwdXQsIElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNf cHJvcF9uYW1lcywKPiArCQlJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QUywgaWd0X2Nvbm5lY3Rvcl9w cm9wX25hbWVzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJvb2wKPiBAQCAtMTA3MSw2ICsxMTg3 LDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBk cm1fZmQpCj4gICAJZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwo+ICAgCWRybU1vZGVQbGFuZVJlcyAq cGxhbmVfcmVzb3VyY2VzOwo+ICAgCWludCBpOwo+ICsJaW50IHJldCA9IDA7Cj4gICAKPiAgIAlt ZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKPiAgIAo+IEBAIC0xMDg4 LDYgKzEyMDUsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxh eSwgaW50IGRybV9mZCkKPiAgIAlkaXNwbGF5LT5uX3BpcGVzID0gcmVzb3VyY2VzLT5jb3VudF9j cnRjczsKPiAgIAo+ICAgCWRybVNldENsaWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX1VO SVZFUlNBTF9QTEFORVMsIDEpOwo+ICsJcmV0ID0gZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJN X0NMSUVOVF9DQVBfQVRPTUlDLCAxKTsKPiAgIAlwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0 UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJtX2ZkKTsKPiAgIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jl c291cmNlcyk7Cj4gICAKPiBAQCAtMTE0NCw2ICsxMjYyLDEwIEBAIHZvaWQgaWd0X2Rpc3BsYXlf aW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQo+ICAgCj4gICAJCQlwbGFu ZS0+cGlwZSA9IHBpcGU7Cj4gICAJCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtX3BsYW5lOwo+ICsJ CQlpZiAocmV0ID09IDApIHsKPiArCQkJCWRpc3BsYXktPmlzX2F0b21pYyA9IHRydWU7Cj4gKwkJ CQlpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoZGlzcGxheSwgcGxhbmUsIElHVF9OVU1fUExB TkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVzKTsKPiArCQkJfQo+ICAgCj4gICAJCQlnZXRf cGxhbmVfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBkcm1fcGxhbmUtPnBsYW5lX2lkLAo+ICAg CQkJCQkgICAicm90YXRpb24iLAo+IEBAIC0xMzk5LDYgKzE1MjEsMTExIEBAIHN0YXRpYyB1aW50 MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQo+ICAg CWlndF9hc3NlcnQociA9PSAwKTsJXAo+ICAgfQo+ICAgCj4gKwo+ICsKPiArCj4gKy8qCj4gKyAq IEFkZCBwb3NpdGlvbiBhbmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMgcHJv cGVydHkgc2V0Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ICtpZ3RfYXRvbWljX3ByZXBhcmVfcGxh bmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4gKwlk cm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gK3sKPiArCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gb3V0cHV0LT5kaXNwbGF5Owo+ICsJdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7Cj4gKwl1aW50 MzJfdCBzcmNfeDsKPiArCXVpbnQzMl90IHNyY195Owo+ICsJdWludDMyX3Qgc3JjX3c7Cj4gKwl1 aW50MzJfdCBzcmNfaDsKPiArCWludDMyX3QgY3J0Y194Owo+ICsJaW50MzJfdCBjcnRjX3k7Cj4g Kwl1aW50MzJfdCBjcnRjX3c7Cj4gKwl1aW50MzJfdCBjcnRjX2g7Cj4gKwo+ICsJaWd0X2Fzc2Vy dChwbGFuZS0+ZHJtX3BsYW5lKTsKPiArCj4gKwkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1 bnN1cHBvcnRlZCBmZWF0dXJlICovCj4gKwlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19y b3RhdGlvbihwbGFuZSkgfHwKPiArCQkJIXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKTsKPiArCj4g KwlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+ICsJY3J0Y19pZCA9IG91dHB1 dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7Cj4gKwo+ICsJaWYgKChwbGFuZS0+ZmJfY2hhbmdlZCB8 fCBwbGFuZS0+c2l6ZV9jaGFuZ2VkKSAmJiBmYl9pZCA9PSAwKSB7Cj4gKwo+ICsJCUxPRyhkaXNw bGF5LAo+ICsJCSAgICAiJXM6IHBvcHVsYXRpbmcgcGxhbmUgZGF0YTogcGlwZSAlcywgcGxhbmUg JWQsIGRpc2FibGluZ1xuIiwKPiArCQkgICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAo+ICsJ CSAgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCj4gKwkJICAgICBw bGFuZS0+aW5kZXgpOwo+ICsKPiArCQkvKiBwb3B1bGF0ZSBwbGFuZSByZXEgKi8KPiArCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCwg MCk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX0ZCX0lELCAwKTsKPiArCj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBJR1RfRklYRUQoMCwgMCkpOwo+ICsJCWlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWSwgSUdUX0ZJ WEVEKDAsIDApKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBJR1RfUExBTkVfU1JDX1csIElHVF9GSVhFRCgwLCAwKSk7Cj4gKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBJR1RfRklYRUQoMCwg MCkpOwo+ICsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJ R1RfUExBTkVfQ1JUQ19YLCAwKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShy ZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCAwKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19XLCAwKTsKPiArCQlpZ3RfYXRv bWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCAwKTsK CldoeSByZXNldHRpbmcgYWxsIHRoZXNlIHByb3BlcnRpZXM/IEl0IHNlZW1zIHVubmVjZXNzYXJ5 LgpJZiB0aGVyZSBpcyBhIHJlYXNvbiBmb3IgdGhpcywgeW91IG1pZ2h0IHdhbnQgdG8gc3luY2hy b25pemUgdGhlIGZpZWxkcyAKb2YgaWd0X3BsYW5lX3QuCgo+ICsKPiArCX0gZWxzZSBpZiAocGxh bmUtPmZiX2NoYW5nZWQgfHwgcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwKPiArCQkJcGxhbmUt PnNpemVfY2hhbmdlZCkgewo+ICsKPiArCQlzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNy Y194LCAwKTsgLyogc3JjX3ggKi8KPiArCQlzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNy Y195LCAwKTsgLyogc3JjX3kgKi8KPiArCQlzcmNfdyA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNy Y193LCAwKTsgLyogc3JjX3cgKi8KPiArCQlzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNy Y19oLCAwKTsgLyogc3JjX2ggKi8KPiArCQljcnRjX3ggPSBwbGFuZS0+Y3J0Y194Owo+ICsJCWNy dGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gKwkJY3J0Y193ID0gcGxhbmUtPmNydGNfdzsKPiArCQlj cnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+ICsKPiArCQlMT0coZGlzcGxheSwKPiArCQkgICAgIiVz OiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgo+ ICsJCSAgICAiJXV4JXUgZHN0ID0gKCV1LCAldSkgJXV4JXVcbiIsCj4gKwkJICAgIGlndF9vdXRw dXRfbmFtZShvdXRwdXQpLAo+ICsJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZp Zy5waXBlKSwKPiArCQkgICAgcGxhbmUtPmluZGV4LAo+ICsJCSAgICBmYl9pZCwKPiArCQkgICAg c3JjX3ggPj4gMTYsIHNyY195ID4+IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4gMTYsCj4gKwkJ ICAgIGNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7Cj4gKwo+ICsKPiArCQkvKiBwb3B1 bGF0ZSBwbGFuZSByZXEgKi8KPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEs IHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCwgY3J0Y19pZCk7Cj4gKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Cj4gKwo+ ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9T UkNfWCwgc3JjX3gpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9TUkNfWSwgc3JjX3kpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxh bmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgc3JjX3cpOwo+ICsJCWlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfSCwgc3JjX2gp Owo+ICsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1Rf UExBTkVfQ1JUQ19YLCBjcnRjX3gpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7Cj4gKwkJaWd0X2F0b21pY19w b3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgY3J0Y193KTsK PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVf Q1JUQ19ILCBjcnRjX2gpOwo+ICsKPiArCQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCj4g KwkJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gKwkJCQlJR1Rf UExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7CldoYXQgaGFwcGVucyBpZiBvbmx5IHRo ZSByb3RhdGlvbiBoYXMgY2hhbmdlZD8KVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIG91dHNpZGUg dGhlIGlmIChwbGFuZS0+ZmJfY2hhbmdlZCB8fCAKcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwg cGxhbmUtPnNpemVfY2hhbmdlZCkuCgo+ICsKPiArCX0KPiArCj4gKwlwbGFuZS0+ZmJfY2hhbmdl ZCA9IGZhbHNlOwo+ICsJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKPiArCXBsYW5l LT5zaXplX2NoYW5nZWQgPSBmYWxzZTsKCk92ZXJhbGwgSSB0aGluayB0aGlzIGZ1bmN0aW9uIHdv dWxkIGJlIGEgbG90IGNsZWFyZXIgaWYgeW91IGp1c3QgaGFkIGEgCnRlc3QgZm9yIGVhY2ggb2Yg dGhlICpfY2hhbmdlZCBwcm9wZXJ0aWVzIGFuZCBqdXN0IHN1Ym1pdHRlZCB0aGUgCmFzc29jaWF0 ZWQgcHJvcGVydGllcyBpbiBlYWNoIGNhc2UuCj4gKwo+ICsJcmV0dXJuOwo+ICt9Cj4gKwo+ICsK PiArCj4gICAvKgo+ICAgICogQ29tbWl0IHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIHRvIGEgRFJN IHBsYW5lIHZpYSB0aGUgU2V0UGxhbmUgaW9jdGw7IGlmIHRoZQo+ICAgICogRFJNIGNhbGwgdG8g cHJvZ3JhbSB0aGUgcGxhbmUgZmFpbHMsIHdlJ2xsIGVpdGhlciBmYWlsIGltbWVkaWF0ZWx5IChm b3IKPiBAQCAtMTY1MSw3ICsxODc4LDcgQEAgc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGln dF9wbGFuZV90ICpwbGFuZSwKPiAgIAkJcmV0dXJuIGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9s ZWdhY3kocGxhbmUsIG91dHB1dCwKPiAgIAkJCQkJCSAgICAgICBmYWlsX29uX2Vycm9yKTsKPiAg IAl9IGVsc2Ugewo+IC0JCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0 LCBmYWlsX29uX2Vycm9yKTsKPiArCQkJcmV0dXJuIGlndF9kcm1fcGxhbmVfY29tbWl0KHBsYW5l LCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwo+ICAgCX0KPiAgIH0KPiAgIAo+IEBAIC0xNzA1LDYg KzE5MzIsOTAgQEAgc3RhdGljIGludCBpZ3Rfb3V0cHV0X2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICsKPiArLyoKPiArICogQWRkIGNydGMg cHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAo+ICsgKi8KPiArc3Rh dGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2NydGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gK3sKPiArCj4gKwlpZ3RfcGlwZV90ICpwaXBl X29iaiA9IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOwo+ICsKPiArCWlmIChw aXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0 Y19yZXEocmVxLCBvdXRwdXQsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3Jv dW5kKTsKPiArCj4gKwkvKgo+ICsJICoJVE9ETzogQWRkIGFsbCBjcnRjIGxldmVsIHByb3BlcnRp ZXMgaGVyZQo+ICsJICovCj4gKwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBBZGQgY29ubmVjdG9yIHBy b3BlcnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKPiArICovCj4gK3N0YXRp YyB2b2lkIGlndF9hdG9taWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KGlndF9vdXRwdXRfdCAq b3V0cHV0LCBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gK3sKPiArCj4gKwlzdHJ1Y3Qga21zdGVz dF9jb25uZWN0b3JfY29uZmlnICpjb25maWcgPSAmb3V0cHV0LT5jb25maWc7Cj4gKwo+ICsJaWYg KGNvbmZpZy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkKQo+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5H X01PREUsIGNvbmZpZy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZSk7Cj4gKwo+ICsJaWYgKGNvbmZp Zy0+Y29ubmVjdG9yX2RwbXNfY2hhbmdlZCkKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5l Y3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNUT1JfRFBNUywgY29uZmlnLT5jb25uZWN0 b3JfZHBtcyk7Cj4gKwkvKgo+ICsJICoJVE9ETzogQWRkIGFsbCBvdGhlciBjb25uZWN0b3IgbGV2 ZWwgcHJvcGVydGllcyBoZXJlCj4gKwkgKi8KPiArCj4gK30KPiArCj4gKy8qCj4gKyAqIENvbW1p dCBhbGwgdGhlIGNoYW5nZXMgb2YgYWxsIHRoZSBwbGFuZXMsY3J0Y3MsIGNvbm5lY3RvcnMKPiAr ICogYXRvbWljYWxseSB1c2luZyBkcm1Nb2RlQXRvbWljQ29tbWl0KCkKPiArICovCj4gK3N0YXRp YyBpbnQgaWd0X2F0b21pY19jb21taXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSkKPiArewo+ICsK PiArCWludCByZXQgPSAwOwo+ICsJaW50IGkgPSAwOwo+ICsJZHJtTW9kZUF0b21pY1JlcSAqcmVx Owo+ICsJaWYgKGRpc3BsYXktPmlzX2F0b21pYyAhPSB0cnVlKQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsJcmVxID0gZHJtTW9kZUF0b21pY0FsbG9jKCk7Cj4gKwlkcm1Nb2RlQXRvbWljU2V0Q3Vy c29yKHJlcSwgMCk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsg aSsrKSB7Cj4gKwkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsK PiArCQlpZ3RfcGlwZV90ICpwaXBlOwo+ICsKPiArCQlpZiAoIW91dHB1dC0+dmFsaWQpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQkvKgo+ICsJCSAqIEFkZCBDUlRDIFByb3BlcnRpZXMgdG8gdGhl IHByb3BlcnR5IHNldAo+ICsJCSAqLwo+ICsJCWlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1p dChvdXRwdXQsIHJlcSk7Cj4gKwo+ICsJCS8qCj4gKwkJICogQWRkIENvbm5lY3RvciBQcm9wZXJ0 aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQKPiArCQkgKi8KPiArCQlpZ3RfYXRvbWljX3ByZXBhcmVf Y29ubmVjdG9yX2NvbW1pdChvdXRwdXQsIHJlcSk7Cj4gKwo+ICsKPiArCQlwaXBlID0gaWd0X291 dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBw aXBlLT5uX3BsYW5lczsgaSsrKSB7Cj4gKwkJCWlndF9wbGFuZV90ICpwbGFuZSA9ICZwaXBlLT5w bGFuZXNbaV07Cj4gKwkJCWlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQocGxhbmUsIG91 dHB1dCwgcmVxKTsKPiArCQl9Cj4gKwo+ICsJfQo+ICsKPiArCXJldCA9IGRybU1vZGVBdG9taWND b21taXQoZGlzcGxheS0+ZHJtX2ZkLCByZXEsIDAsIE5VTEwpOwo+ICsJZHJtTW9kZUF0b21pY0Zy ZWUocmVxKTsKPiArCXJldHVybiByZXQ7Cj4gKwo+ICt9Cj4gICAvKgo+ICAgICogQ29tbWl0IGFs bCBwbGFuZSBjaGFuZ2VzIGFjcm9zcyBhbGwgb3V0cHV0cyBvZiB0aGUgZGlzcGxheS4KPiAgICAq Cj4gQEAgLTE3MjQsNiArMjAzNSwxNCBAQCBzdGF0aWMgaW50IGRvX2Rpc3BsYXlfY29tbWl0KGln dF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gICAKPiAgIAlpZ3RfZGlzcGxheV9yZWZyZXNoKGRpc3Bs YXkpOwo+ICAgCj4gKwlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7Cj4gKwo+ICsJCXJldCA9IGln dF9hdG9taWNfY29tbWl0KGRpc3BsYXkpOwo+ICsJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25f ZXJyb3IpOwo+ICsJCXJldHVybiAwOwo+ICsKPiArCX0KPiArCj4gICAJZm9yIChpID0gMDsgaSA8 IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7Cj4gICAJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0g JmRpc3BsYXktPm91dHB1dHNbaV07Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBi L2xpYi9pZ3Rfa21zLmgKPiBpbmRleCA1NzQ0ZWQwLi5kNmUyZjEyIDEwMDY0NAo+IC0tLSBhL2xp Yi9pZ3Rfa21zLmgKPiArKysgYi9saWIvaWd0X2ttcy5oCj4gQEAgLTEwNiwxMSArMTA2LDI4IEBA IGludCBrbXN0ZXN0X2dldF9waXBlX2Zyb21fY3J0Y19pZChpbnQgZmQsIGludCBjcnRjX2lkKTsK PiAgIHZvaWQga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSh2b2lkKTsKPiAgIHZvaWQga21z dGVzdF9yZXN0b3JlX3Z0X21vZGUodm9pZCk7Cj4gICAKPiArZW51bSBpZ3RfYXRvbWljX2NydGNf cHJvcGVydGllcyB7Cj4gKyAgICAgICBJR1RfQ1JUQ19CQUNLR1JPVU5EID0gMCwKPiArICAgICAg IElHVF9OVU1fQ1JUQ19QUk9QUwo+ICt9Owo+ICsKPiArZW51bSBpZ3RfYXRvbWljX2Nvbm5lY3Rv cl9wcm9wZXJ0aWVzIHsKPiArICAgICAgIElHVF9DT05ORUNUT1JfU0NBTElOR19NT0RFID0gMCwK PiArICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKPiArICAgICAgIElHVF9OVU1fQ09OTkVDVE9S X1BST1BTCj4gK307Cj4gKwo+ICAgc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7Cj4g ICAJZHJtTW9kZUNydGMgKmNydGM7Cj4gICAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwo+ ICAgCWRybU1vZGVFbmNvZGVyICplbmNvZGVyOwo+ICAgCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0 X21vZGU7Cj4gKwl1aW50NjRfdCBjb25uZWN0b3Jfc2NhbGluZ19tb2RlOwo+ICsJYm9vbCBjb25u ZWN0b3Jfc2NhbGluZ19tb2RlX2NoYW5nZWQ7Cj4gKwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsK PiArCWJvb2wgY29ubmVjdG9yX2RwbXNfY2hhbmdlZDsKPiArCXVpbnQzMl90IGF0b21pY19wcm9w c19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9QU107Cj4gKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY29u bmVjdG9yW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXTsKPiAgIAlpbnQgY3J0Y19pZHg7Cj4gICAJ aW50IHBpcGU7Cj4gICB9Owo+IEBAIC0xNjMsOSArMTgwLDI4IEBAIHVpbnQzMl90IGttc3Rlc3Rf ZmluZF9jcnRjX2Zvcl9jb25uZWN0b3IoaW50IGZkLCBkcm1Nb2RlUmVzICpyZXMsCj4gICBlbnVt IGlndF9jb21taXRfc3R5bGUgewo+ICAgCUNPTU1JVF9MRUdBQ1kgPSAwLAo+ICAgCUNPTU1JVF9V TklWRVJTQUwsCj4gLQkvKiBXZSdsbCBhZGQgYXRvbWljIGhlcmUgZXZlbnR1YWxseS4gKi8KPiAr CUNPTU1JVF9BVE9NSUMsCj4gICB9Owo+ICAgCj4gK2VudW0gaWd0X2F0b21pY19wbGFuZV9wcm9w ZXJ0aWVzIHsKPiArICAgICAgIElHVF9QTEFORV9TUkNfWCA9IDAsCj4gKyAgICAgICBJR1RfUExB TkVfU1JDX1ksCj4gKyAgICAgICBJR1RfUExBTkVfU1JDX1csCj4gKyAgICAgICBJR1RfUExBTkVf U1JDX0gsCj4gKwo+ICsgICAgICAgSUdUX1BMQU5FX0NSVENfWCwKPiArICAgICAgIElHVF9QTEFO RV9DUlRDX1ksCj4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19XLAo+ICsgICAgICAgSUdUX1BMQU5F X0NSVENfSCwKPiArCj4gKyAgICAgICBJR1RfUExBTkVfRkJfSUQsCj4gKyAgICAgICBJR1RfUExB TkVfQ1JUQ19JRCwKPiArICAgICAgIElHVF9QTEFORV9UWVBFLAo+ICsgICAgICAgSUdUX1BMQU5F X1JPVEFUSU9OLAo+ICsgICAgICAgSUdUX05VTV9QTEFORV9QUk9QUwo+ICt9Owo+ICsKPiArCj4g ICB0eXBlZGVmIHN0cnVjdCBpZ3RfZGlzcGxheSBpZ3RfZGlzcGxheV90Owo+ICAgdHlwZWRlZiBz dHJ1Y3QgaWd0X3BpcGUgaWd0X3BpcGVfdDsKPiAgIHR5cGVkZWYgdWludDMyX3QgaWd0X2ZpeGVk X3Q7CQkJLyogMTYuMTYgZml4ZWQgcG9pbnQgKi8KPiBAQCAtMjA3LDYgKzI0Myw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKPiAgIAkvKiBwYW5uaW5nIG9mZnNldCB3aXRoaW4gdGhlIGZiICovCj4gICAJ dW5zaWduZWQgaW50IHBhbl94LCBwYW5feTsKPiAgIAlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsK PiArCXVpbnQzMl90IGF0b21pY19wcm9wc19wbGFuZVtJR1RfTlVNX1BMQU5FX1BST1BTXTsKPiAg IH0gaWd0X3BsYW5lX3Q7Cj4gICAKPiAgIHN0cnVjdCBpZ3RfcGlwZSB7Cj4gQEAgLTI0Miw2ICsy NzksNyBAQCBzdHJ1Y3QgaWd0X2Rpc3BsYXkgewo+ICAgCWlndF9vdXRwdXRfdCAqb3V0cHV0czsK PiAgIAlpZ3RfcGlwZV90IHBpcGVzW0k5MTVfTUFYX1BJUEVTXTsKPiAgIAlib29sIGhhc191bml2 ZXJzYWxfcGxhbmVzOwo+ICsJYm9vbCBpc19hdG9taWM7Cj4gICB9Owo+ICAgCj4gICB2b2lkIGln dF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCk7Cj4gQEAg LTI4OCw2ICszMjYsMzggQEAgdm9pZCBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGludCBkcm1fZmQsIGVu dW0gcGlwZSBwaXBlKTsKPiAgIAo+ICAgI2RlZmluZSBJR1RfRklYRUQoaSxmKQkoKGkpIDw8IDE2 IHwgKGYpKQo+ICAgCj4gKy8qKgo+ICsgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcToK PiArICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPiArICogQHBsYW5lOiBB IHBvaW50ZXIgaWd0X3BsYW5lX3QKPiArICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX3BsYW5l X3Byb3BlcnRpZXMKPiArICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCj4gKyAqLwo+ICsjZGVm aW5lIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZhbHVl KSBcCj4gKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBs YW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLFwKPiArCQkJCQkJICBwbGFuZS0+YXRvbWljX3Byb3Bz X3BsYW5lW3Byb3BdLCB2YWx1ZSkpCj4gKwo+ICsvKioKPiArICogaWd0X2F0b21pY19wb3B1bGF0 ZV9jcnRjX3JlcToKPiArICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPiAr ICogQG91dHB1dDogQSBwb2ludGVyIGlndF9vdXRwdXRfdAo+ICsgKiBAcHJvcDogb25lIG9mIGln dF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzCj4gKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+ ICsgKi8KPiArI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0 LCBwcm9wLCB2YWx1ZSkgXAo+ICsJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJv cGVydHkocmVxLCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLFwKPiArCQkJCQkJICBvdXRw dXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1twcm9wXSwgdmFsdWUpKQo+ICsvKioKPiArICog aWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxOgo+ICsgKiBAcmVxOiBBIHBvaW50ZXIg dG8gZHJtTW9kZUF0b21pY1JlcQo+ICsgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90 Cj4gKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcwo+ICsg KiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKPiArICovCj4gKyNkZWZpbmUgaWd0X2F0b21pY19w b3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAo+ICsJaWd0 X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQtPmNvbmZp Zy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCxcCj4gKwkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRv bWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9wXSwgdmFsdWUpKQo+ICsKPiAgIHZvaWQgaWd0X2VuYWJs ZV9jb25uZWN0b3JzKHZvaWQpOwo+ICAgdm9pZCBpZ3RfcmVzZXRfY29ubmVjdG9ycyh2b2lkKTsK PiAgIAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==