From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH i-g-t 2/7] lib/igt_kms: refactor atomic properties load/commit Date: Wed, 23 Mar 2016 13:57:25 +0000 Message-ID: <56F2A0C5.1050403@intel.com> References: <1458733090-25768-1-git-send-email-lionel.g.landwerlin@intel.com> <1458733090-25768-3-git-send-email-lionel.g.landwerlin@intel.com> <20160323121350.GA31168@mcvlad-wk.rb.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 287D26E86E for ; Wed, 23 Mar 2016 13:57:27 +0000 (UTC) In-Reply-To: <20160323121350.GA31168@mcvlad-wk.rb.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 List-Id: intel-gfx@lists.freedesktop.org T24gMjMvMDMvMTYgMTI6MTMsIE1hcml1cyBWbGFkIHdyb3RlOgo+IE9uIFdlZCwgTWFyIDIzLCAy MDE2IGF0IDExOjM4OjA1QU0gKzAwMDAsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+PiBBbGwg cHJvcGVydGllcyBjYW4gYmUgbGlzdGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSdyZSBkZWFs aW5nIHdpdGgKPj4gYW4gYXRvbWljIGVuYWJsZWQgZHJpdmVyLCBzbyBsb2FkIGFsbCBvZiB0aGUg cHJvcGVydGllcyBpZHMgcmVnYXJkbGVzcwo+PiBhdCBpbml0IHRpbWUuCj4+Cj4+IEFsc28sIHdl IGNhbiBoYXZlIG9ubHkgb25lIGZ1bmN0aW9uIGxvYWRpbmcgdGhlIHByb3BlcnR5IGlkcyBhbmQg cmV1c2UKPj4gdGhhdCBmb3IgZGlmZmVyZW50IERSTSBvYmplY3RzLgo+Pgo+PiBTaWduZWQtb2Zm LWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4+ IC0tLQo+PiAgIGxpYi9pZ3Rfa21zLmMgfCAxODUgKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgIGxpYi9pZ3Rfa21zLmggfCAgMjEg KysrLS0tLQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMK Pj4gaW5kZXggNWVmODljZi4uMzMyMTczOCAxMDA2NDQKPj4gLS0tIGEvbGliL2lndF9rbXMuYwo+ PiArKysgYi9saWIvaWd0X2ttcy5jCj4+IEBAIC0xNzMsODUgKzE3MywzMSBAQCBzdGF0aWMgY29u c3QgY2hhciAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BT XSA9IHsKPj4gICB9Owo+PiAgIAo+PiAgIC8qCj4+IC0gKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3Bl cmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRvCj4+IC0gKiBw bGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgo+PiArICogUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJp ZXMgc3BlY2lmaWVkIGluIHByb3BzX25hbWUgZnJvbSBvYmplY3RfaWQKPiB0eXBvLgoKVGhhbmtz LgoKPj4gKyAqIGFuZCBzdG9yZSB0aGVtIGludG8gcHJvcF9pZHMuCj4+ICAgICovCj4+ICAgc3Rh dGljIHZvaWQKPj4gLWlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpk aXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4+IC0JCQlpbnQgbnVtX3Byb3BzLCBjb25zdCBj aGFyICoqcHJvcF9uYW1lcykKPj4gK2lndF9hdG9taWNfZmlsbF9wcm9wcyhpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LAo+PiArCQkgICAgICB1aW50MzJfdCBvYmplY3RfaWQsIHVpbnQzMl90IG9iamVj dF90eXBlLAo+PiArCQkgICAgICB1aW50MzJfdCAqcHJvcF9pZHMsIGNvbnN0IGNoYXIgKipwcm9w X25hbWVzLAo+PiArCQkgICAgICBpbnQgbnVtX3Byb3BzKQo+PiAgIHsKPj4gICAJZHJtTW9kZU9i amVjdFByb3BlcnRpZXNQdHIgcHJvcHM7Cj4+IC0JaW50IGksIGosIGZkOwo+PiAtCj4+IC0JZmQg PSBkaXNwbGF5LT5kcm1fZmQ7Cj4+ICsJaW50IGksIGo7Cj4+ICAgCj4+IC0JcHJvcHMgPSBkcm1N b2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsIERS TV9NT0RFX09CSkVDVF9QTEFORSk7Cj4+ICsJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVy dGllcyhkaXNwbGF5LT5kcm1fZmQsCj4+ICsJCQkJCSAgIG9iamVjdF9pZCwgb2JqZWN0X3R5cGUp Owo+PiAgIAlpZ3RfYXNzZXJ0KHByb3BzKTsKPj4gICAKPj4gICAJZm9yIChpID0gMDsgaSA8IHBy b3BzLT5jb3VudF9wcm9wczsgaSsrKSB7Cj4+ICAgCQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9 Cj4+IC0JCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9wc1tpXSk7Cj4+ICsJCQlk cm1Nb2RlR2V0UHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwcm9wcy0+cHJvcHNbaV0pOwo+PiAg IAo+PiAgIAkJZm9yIChqID0gMDsgaiA8IG51bV9wcm9wczsgaisrKSB7Cj4+ICAgCQkJaWYgKHN0 cmNtcChwcm9wLT5uYW1lLCBwcm9wX25hbWVzW2pdKSAhPSAwKQo+PiAgIAkJCQljb250aW51ZTsK Pj4gICAKPj4gLQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbal0gPSBwcm9wcy0+cHJvcHNb aV07Cj4+IC0JCQlicmVhazsKPj4gLQkJfQo+PiAtCj4+IC0JCWRybU1vZGVGcmVlUHJvcGVydHko cHJvcCk7Cj4+IC0JfQo+PiAtCj4+IC0JZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3Bz KTsKPj4gLX0KPj4gLQo+PiAtLyoKPj4gLSAqIFJldHJpZXZlIGFsbCB0aGUgcHJvcGVyaWVzIHNw ZWNpZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtIGludG8KPj4gLSAqIGNvbmZpZy0+ YXRvbWljX3Byb3BzX2NydGMgYW5kIGNvbmZpZy0+YXRvbWljX3Byb3BzX2Nvbm5lY3Rvci4KPj4g LSAqLwo+PiAtc3RhdGljIHZvaWQKPj4gLWlndF9hdG9taWNfZmlsbF9wcm9wcyhpZ3RfZGlzcGxh eV90ICpkaXNwbGF5LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPj4gLQkJCWludCBudW1fY3J0Y19w cm9wcywgY29uc3QgY2hhciAqKmNydGNfcHJvcF9uYW1lcywKPj4gLQkJCWludCBudW1fY29ubmVj dG9yX3Byb3BzLCBjb25zdCBjaGFyICoqY29ubl9wcm9wX25hbWVzKQo+PiAtewo+PiAtCWRybU1v ZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwo+PiAtCWludCBpLCBqLCBmZDsKPj4gLQo+PiAt CWZkID0gZGlzcGxheS0+ZHJtX2ZkOwo+PiAtCj4+IC0JcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0 UHJvcGVydGllcyhmZCwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCwgRFJNX01PREVfT0JK RUNUX0NSVEMpOwo+PiAtCWlndF9hc3NlcnQocHJvcHMpOwo+PiAtCj4+IC0JZm9yIChpID0gMDsg aSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7Cj4+IC0JCWRybU1vZGVQcm9wZXJ0eVB0ciBw cm9wID0KPj4gLQkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3BzW2ldKTsKPj4g LQo+PiAtCQlmb3IgKGogPSAwOyBqIDwgbnVtX2NydGNfcHJvcHM7IGorKykgewo+PiAtCQkJaWYg KHN0cmNtcChwcm9wLT5uYW1lLCBjcnRjX3Byb3BfbmFtZXNbal0pICE9IDApCj4+IC0JCQkJY29u dGludWU7Cj4+IC0KPj4gLQkJCW91dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW2pdID0g cHJvcHMtPnByb3BzW2ldOwo+PiAtCQkJYnJlYWs7Cj4+IC0JCX0KPj4gLQo+PiAtCQlkcm1Nb2Rl RnJlZVByb3BlcnR5KHByb3ApOwo+PiAtCX0KPj4gLQo+PiAtCWRybU1vZGVGcmVlT2JqZWN0UHJv cGVydGllcyhwcm9wcyk7Cj4+IC0JcHJvcHMgPSBOVUxMOwo+PiAtCXByb3BzID0gZHJtTW9kZU9i amVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9y X2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SKTsKPj4gLQlpZ3RfYXNzZXJ0KHByb3BzKTsK Pj4gLQo+PiAtCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgewo+PiAt CQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4+IC0JCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQs IHByb3BzLT5wcm9wc1tpXSk7Cj4+IC0KPj4gLQkJZm9yIChqID0gMDsgaiA8IG51bV9jb25uZWN0 b3JfcHJvcHM7IGorKykgewo+PiAtCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCBjb25uX3Byb3Bf bmFtZXNbal0pICE9IDApCj4+IC0JCQkJY29udGludWU7Cj4+IC0KPj4gLQkJCW91dHB1dC0+Y29u ZmlnLmF0b21pY19wcm9wc19jb25uZWN0b3Jbal0gPSBwcm9wcy0+cHJvcHNbaV07Cj4+ICsJCQlw cm9wX2lkc1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKPj4gICAJCQlicmVhazsKPj4gICAJCX0KPj4g ICAKPj4gQEAgLTI1OSw3ICsyMDUsNiBAQCBpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4+ICAgCX0KPj4gICAKPj4gICAJ ZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKPj4gLQo+PiAgIH0KPj4gICAKPj4g ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBpZ3Rfa21zX2dldF9hbHRfZWRpZCh2b2lkKQo+PiBAQCAt MTExOCw4ICsxMDYzLDkgQEAgc3RhdGljIHZvaWQgaWd0X291dHB1dF9yZWZyZXNoKGlndF9vdXRw dXRfdCAqb3V0cHV0KQo+PiAgIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcu cGlwZSkpOwo+PiAgIAo+PiAgIAlkaXNwbGF5LT5waXBlc19pbl91c2UgfD0gMSA8PCBvdXRwdXQt PmNvbmZpZy5waXBlOwo+PiAtCWlndF9hdG9taWNfZmlsbF9wcm9wcyhkaXNwbGF5LCBvdXRwdXQs IElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNfcHJvcF9uYW1lcywKPj4gLQkJSUdUX05VTV9D T05ORUNUT1JfUFJPUFMsIGlndF9jb25uZWN0b3JfcHJvcF9uYW1lcyk7Cj4+ICsJaWd0X2F0b21p Y19maWxsX3Byb3BzKGRpc3BsYXksIG91dHB1dC0+aWQsIERSTV9NT0RFX09CSkVDVF9DT05ORUNU T1IsCj4+ICsJCQkgICAgICBvdXRwdXQtPnByb3BlcnRpZXMsIGlndF9jb25uZWN0b3JfcHJvcF9u YW1lcywKPj4gKwkJCSAgICAgIElHVF9OVU1fQ09OTkVDVE9SX1BST1BTKTsKPiBEb2VzIGl0IG1h a2Ugc2Vuc2UgdG8gY2FsbCBpdCBpZiAhZGlzcGxheS0+YXRvbWljPwoKSSBjYW4ndCB0aGluayBv ZiBhIHJlYXNvbiBub3QgdG8gZnVsbCB0aGUgcHJvcGVydGllcyBhcnJheSBhbGwgdGhlIHRpbWUu Ckl0IG1ha2VzIHRoZSBpbml0aWFsaXphdGlvbiBzaW1wbGVyIGFuZCB3ZSB1c2UgdGhlc2UgcmF0 aGVyIHRoYW4gaGF2aW5nIApyb3RhdGlvbl9wcm9wZXJ0eS9iYWNrZ3JvdW5kX3Byb3BlcnR5L2Rl Z2FtbWFfbHV0X3Byb3BlcnR5L2V0Yy4uLgoKPgo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgYm9v bAo+PiBAQCAtMTE4OSw3ICsxMTM1LDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCj4+ICAgCWRybU1vZGVSZXMgKnJlc291cmNlczsK Pj4gICAJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJjZXM7Cj4+ICAgCWludCBpOwo+PiAt CWludCBpc19hdG9taWMgPSAwOwo+PiAgIAo+PiAgIAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9m KGlndF9kaXNwbGF5X3QpKTsKPj4gICAKPj4gQEAgLTEyMDcsNyArMTE1Miw3IEBAIHZvaWQgaWd0 X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQo+PiAgIAlk aXNwbGF5LT5uX3BpcGVzID0gcmVzb3VyY2VzLT5jb3VudF9jcnRjczsKPj4gICAKPj4gICAJZHJt U2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfVU5JVkVSU0FMX1BMQU5FUywgMSk7 Cj4+IC0JaXNfYXRvbWljID0gZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBf QVRPTUlDLCAxKTsKPj4gKwlkaXNwbGF5LT5pc19hdG9taWMgPSBkcm1TZXRDbGllbnRDYXAoZHJt X2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsIDEpID09IDA7Cj4+ICAgCXBsYW5lX3Jlc291cmNl cyA9IGRybU1vZGVHZXRQbGFuZVJlc291cmNlcyhkaXNwbGF5LT5kcm1fZmQpOwo+PiAgIAlpZ3Rf YXNzZXJ0KHBsYW5lX3Jlc291cmNlcyk7Cj4+ICAgCj4+IEBAIC0xMjY1LDEwICsxMjEwLDEyIEBA IHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2Zk KQo+PiAgIAo+PiAgIAkJCXBsYW5lLT5waXBlID0gcGlwZTsKPj4gICAJCQlwbGFuZS0+ZHJtX3Bs YW5lID0gZHJtX3BsYW5lOwo+PiAtCQkJaWYgKGlzX2F0b21pYyA9PSAwKSB7Cj4+IC0JCQkJZGlz cGxheS0+aXNfYXRvbWljID0gMTsKPj4gLQkJCQlpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMo ZGlzcGxheSwgcGxhbmUsIElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVz KTsKPj4gLQkJCX0KPj4gKwkJCWlndF9hdG9taWNfZmlsbF9wcm9wcyhkaXNwbGF5LAo+PiArCQkJ CQkgICAgICBwbGFuZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCwKPj4gKwkJCQkJICAgICAgRFJNX01P REVfT0JKRUNUX1BMQU5FLAo+PiArCQkJCQkgICAgICBwbGFuZS0+cHJvcGVydGllcywKPj4gKwkJ CQkJICAgICAgaWd0X3BsYW5lX3Byb3BfbmFtZXMsCj4+ICsJCQkJCSAgICAgIElHVF9OVU1fUExB TkVfUFJPUFMpOwo+PiAgIAo+PiAgIAkJCWdldF9wbGFuZV9wcm9wZXJ0eShkaXNwbGF5LT5kcm1f ZmQsIGRybV9wbGFuZS0+cGxhbmVfaWQsCj4+ICAgCQkJCQkgICAicm90YXRpb24iLAo+PiBAQCAt MTMxNiw2ICsxMjYzLDM2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpk aXNwbGF5LCBpbnQgZHJtX2ZkKQo+PiAgIAkJLyogcGxhbmVzID0gMSBwcmltYXJ5LCAocC0xKSBz cHJpdGVzLCAxIGN1cnNvciAqLwo+PiAgIAkJcGlwZS0+bl9wbGFuZXMgPSBwICsgMTsKPj4gICAK Pj4gKwkJaWd0X2F0b21pY19maWxsX3Byb3BzKGRpc3BsYXksIHBpcGUtPmNydGNfaWQsIERSTV9N T0RFX09CSkVDVF9DUlRDLAo+PiArCQkJCSAgICAgIHBpcGUtPnByb3BlcnRpZXMsIGlndF9jcnRj X3Byb3BfbmFtZXMsCj4+ICsJCQkJICAgICAgSUdUX05VTV9DUlRDX1BST1BTKTsKPj4gKwkJaWYg KHBpcGUtPmNydGNfaWQpIHsKPj4gKwkJCXVpbnQ2NF90IHByb3BfdmFsdWU7Cj4+ICsKPj4gKwkJ CWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlwZS0+Y3J0Y19pZCwKPj4gKwkJ CQkJICAiYmFja2dyb3VuZF9jb2xvciIsCj4+ICsJCQkJCSAgJnBpcGUtPmJhY2tncm91bmRfcHJv cGVydHksCj4+ICsJCQkJCSAgJnByb3BfdmFsdWUsCj4+ICsJCQkJCSAgTlVMTCk7Cj4+ICsJCQlw aXBlLT5iYWNrZ3JvdW5kID0gKHVpbnQzMl90KXByb3BfdmFsdWU7Cj4+ICsJCQlnZXRfY3J0Y19w cm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHBpcGUtPmNydGNfaWQsCj4+ICsJCQkJCSAgIkRFR0FN TUFfTFVUIiwKPj4gKwkJCQkJICAmcGlwZS0+ZGVnYW1tYV9wcm9wZXJ0eSwKPj4gKwkJCQkJICBO VUxMLAo+PiArCQkJCQkgIE5VTEwpOwo+PiArCQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ ZHJtX2ZkLCBwaXBlLT5jcnRjX2lkLAo+PiArCQkJCQkgICJDVE0iLAo+PiArCQkJCQkgICZwaXBl LT5jdG1fcHJvcGVydHksCj4+ICsJCQkJCSAgTlVMTCwKPj4gKwkJCQkJICBOVUxMKTsKPj4gKwkJ CWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlwZS0+Y3J0Y19pZCwKPj4gKwkJ CQkJICAiR0FNTUFfTFVUIiwKPj4gKwkJCQkJICAmcGlwZS0+Z2FtbWFfcHJvcGVydHksCj4+ICsJ CQkJCSAgTlVMTCwKPj4gKwkJCQkJICBOVUxMKTsKPj4gKwkJfQo+PiArCj4+ICsKPj4gICAJCS8q IG1ha2Ugc3VyZSB3ZSBkb24ndCBvdmVyZmxvdyB0aGUgcGxhbmUgYXJyYXkgKi8KPj4gICAJCWln dF9hc3NlcnQocGlwZS0+bl9wbGFuZXMgPD0gSUdUX01BWF9QTEFORVMpOwo+PiAgIAl9Cj4+IEBA IC0xMzMwLDcgKzEzMDcsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgaW50IGRybV9mZCkKPj4gICAJaWd0X2Fzc2VydChkaXNwbGF5LT5vdXRwdXRzKTsK Pj4gICAKPj4gICAJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7Cj4+ IC0JCWludCBqOwo+PiAgIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0 c1tpXTsKPj4gICAKPj4gICAJCS8qCj4+IEBAIC0xMzQyLDM1ICsxMzE4LDYgQEAgdm9pZCBpZ3Rf ZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCj4+ICAgCQlv dXRwdXQtPmRpc3BsYXkgPSBkaXNwbGF5Owo+PiAgIAo+PiAgIAkJaWd0X291dHB1dF9yZWZyZXNo KG91dHB1dCk7Cj4+IC0KPj4gLQkJZm9yIChqID0gMDsgaiA8IGRpc3BsYXktPm5fcGlwZXM7IGor Kykgewo+PiAtCQkJdWludDY0X3QgcHJvcF92YWx1ZTsKPj4gLQkJCWlndF9waXBlX3QgKnBpcGUg PSAmZGlzcGxheS0+cGlwZXNbal07Cj4+IC0KPj4gLQkJCWlmIChvdXRwdXQtPmNvbmZpZy5jcnRj KSB7Cj4+IC0JCQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNv bmZpZy5jcnRjLT5jcnRjX2lkLAo+PiAtCQkJCQkJICAgImJhY2tncm91bmRfY29sb3IiLAo+PiAt CQkJCQkJICAgJnBpcGUtPmJhY2tncm91bmRfcHJvcGVydHksCj4+IC0JCQkJCQkgICAmcHJvcF92 YWx1ZSwKPj4gLQkJCQkJCSAgIE5VTEwpOwo+PiAtCQkJCXBpcGUtPmJhY2tncm91bmQgPSAodWlu dDMyX3QpcHJvcF92YWx1ZTsKPj4gLQkJCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1f ZmQsIG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsCj4+IC0JCQkJCQkgICJERUdBTU1BX0xV VCIsCj4+IC0JCQkJCQkgICZwaXBlLT5kZWdhbW1hX3Byb3BlcnR5LAo+PiAtCQkJCQkJICBOVUxM LAo+PiAtCQkJCQkJICBOVUxMKTsKPj4gLQkJCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5k cm1fZmQsIG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsCj4+IC0JCQkJCQkgICJDVE0iLAo+ PiAtCQkJCQkJICAmcGlwZS0+Y3RtX3Byb3BlcnR5LAo+PiAtCQkJCQkJICBOVUxMLAo+PiAtCQkJ CQkJICBOVUxMKTsKPj4gLQkJCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIG91 dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsCj4+IC0JCQkJCQkgICJHQU1NQV9MVVQiLAo+PiAt CQkJCQkJICAmcGlwZS0+Z2FtbWFfcHJvcGVydHksCj4+IC0JCQkJCQkgIE5VTEwsCj4+IC0JCQkJ CQkgIE5VTEwpOwo+PiAtCQkJfQo+PiAtCQl9Cj4+ICAgCX0KPj4gICAKPj4gICAJZHJtTW9kZUZy ZWVQbGFuZVJlc291cmNlcyhwbGFuZV9yZXNvdXJjZXMpOwo+PiBAQCAtMTk0NSwyMiArMTg5Miwx OSBAQCBzdGF0aWMgaW50IGlndF9vdXRwdXRfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ PiAgIC8qCj4+ICAgICogQWRkIGNydGMgcHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHBy b3BlcnR5IHNldAo+PiAgICAqLwo+PiAtc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2Ny dGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4+ ICtzdGF0aWMgdm9pZCBpZ3RfYXRvbWljX3ByZXBhcmVfcGlwZV9jb21taXQoaWd0X3BpcGVfdCAq cGlwZSwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQo+PiAgIHsKPj4gKwlpZiAocGlwZS0+YmFja2dy b3VuZF9jaGFuZ2VkKQo+PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BpcGVfcmVxKHJlcSwgcGlw ZSwgSUdUX0NSVENfQkFDS0dST1VORCwgcGlwZS0+YmFja2dyb3VuZCk7Cj4+ICAgCj4+IC0JaWd0 X3BpcGVfdCAqcGlwZV9vYmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsK Pj4gLQo+PiAtCWlmIChwaXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQo+PiAtCQlpZ3RfYXRv bWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBw aXBlX29iai0+YmFja2dyb3VuZCk7Cj4+IC0KPj4gLQlpZiAocGlwZV9vYmotPmNvbG9yX21nbXRf Y2hhbmdlZCkgewo+PiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0 LCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgcGlwZV9vYmotPmRlZ2FtbWFfYmxvYik7Cj4+IC0JCWln dF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBvdXRwdXQsIElHVF9DUlRDX0NUTSwgcGlw ZV9vYmotPmN0bV9ibG9iKTsKPj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEs IG91dHB1dCwgSUdUX0NSVENfR0FNTUFfTFVULCBwaXBlX29iai0+Z2FtbWFfYmxvYik7Cj4+ICsJ aWYgKHBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgewo+PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BpcGVfcmVxKHJlcSwgcGlwZSwgSUdUX0NSVENfREVHQU1NQV9MVVQsIHBpcGUtPmRlZ2FtbWFf YmxvYik7Cj4+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGlwZV9yZXEocmVxLCBwaXBlLCBJR1Rf Q1JUQ19DVE0sIHBpcGUtPmN0bV9ibG9iKTsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9waXBl X3JlcShyZXEsIHBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCwgcGlwZS0+Z2FtbWFfYmxvYik7Cj4+ ICAgCX0KPj4gICAKPj4gLQlwaXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkID0gZmFsc2U7Cj4+ IC0JcGlwZV9vYmotPmNvbG9yX21nbXRfY2hhbmdlZCA9IGZhbHNlOwo+PiArCXBpcGUtPmJhY2tn cm91bmRfY2hhbmdlZCA9IGZhbHNlOwo+PiArCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IGZh bHNlOwo+PiAgIH0KPj4gICAKPj4gICAvKgo+PiBAQCAtMjAwMSwxMCArMTk0NSwxNCBAQCBzdGF0 aWMgaW50IGlndF9hdG9taWNfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXkpCj4+ICAgCQlp Z3RfcGxhbmVfdCAqcGxhbmU7Cj4+ICAgCQllbnVtIHBpcGUgcGlwZTsKPj4gICAKPj4gKwkJcGlw ZV9vYmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKPj4gKwo+PiArCQlw aXBlID0gcGlwZV9vYmotPnBpcGU7Cj4+ICsKPj4gICAJCS8qCj4+ICAgCQkgKiBBZGQgQ1JUQyBQ cm9wZXJ0aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQKPj4gICAJCSAqLwo+PiAtCQlpZ3RfYXRvbWlj X3ByZXBhcmVfY3J0Y19jb21taXQob3V0cHV0LCByZXEpOwo+PiArCQlpZ3RfYXRvbWljX3ByZXBh cmVfcGlwZV9jb21taXQocGlwZV9vYmosIHJlcSk7Cj4+ICAgCj4+ICAgCQkvKgo+PiAgIAkJICog QWRkIENvbm5lY3RvciBQcm9wZXJ0aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQKPj4gQEAgLTIwMTIs OSArMTk2MCw2IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19jb21taXQoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSkKPj4gICAJCWlndF9hdG9taWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KG91dHB1 dCwgcmVxKTsKPj4gICAKPj4gICAKPj4gLQkJcGlwZV9vYmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2 aW5nX3BpcGUob3V0cHV0KTsKPj4gLQo+PiAtCQlwaXBlID0gcGlwZV9vYmotPnBpcGU7Cj4+ICAg Cj4+ICAgCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Cj4+ ICAgCQkJaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCByZXEp Owo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKPj4gaW5kZXgg OGFlMTE5Mi4uOWYwNGY3MiAxMDA2NDQKPj4gLS0tIGEvbGliL2lndF9rbXMuaAo+PiArKysgYi9s aWIvaWd0X2ttcy5oCj4+IEBAIC0xMjksOCArMTI5LDYgQEAgc3RydWN0IGttc3Rlc3RfY29ubmVj dG9yX2NvbmZpZyB7Cj4+ICAgCWJvb2wgY29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkOwo+ PiAgIAl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKPj4gICAJYm9vbCBjb25uZWN0b3JfZHBtc19j aGFuZ2VkOwo+PiAtCXVpbnQzMl90IGF0b21pY19wcm9wc19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9Q U107Cj4+IC0JdWludDMyX3QgYXRvbWljX3Byb3BzX2Nvbm5lY3RvcltJR1RfTlVNX0NPTk5FQ1RP Ul9QUk9QU107Cj4+ICAgCWludCBjcnRjX2lkeDsKPj4gICAJaW50IHBpcGU7Cj4+ICAgfTsKPj4g QEAgLTI0Niw3ICsyNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4+ICAgCS8qIHBhbm5pbmcgb2Zm c2V0IHdpdGhpbiB0aGUgZmIgKi8KPj4gICAJdW5zaWduZWQgaW50IHBhbl94LCBwYW5feTsKPj4g ICAJaWd0X3JvdGF0aW9uX3Qgcm90YXRpb247Cj4+IC0JdWludDMyX3QgYXRvbWljX3Byb3BzX3Bs YW5lW0lHVF9OVU1fUExBTkVfUFJPUFNdOwo+PiArCXVpbnQzMl90IHByb3BlcnRpZXNbSUdUX05V TV9QTEFORV9QUk9QU107Cj4+ICAgfSBpZ3RfcGxhbmVfdDsKPj4gICAKPj4gICBzdHJ1Y3QgaWd0 X3BpcGUgewo+PiBAQCAtMjY5LDYgKzI2Nyw4IEBAIHN0cnVjdCBpZ3RfcGlwZSB7Cj4+ICAgCXVp bnQzMl90IGNvbG9yX21nbXRfY2hhbmdlZCA6IDE7Cj4+ICAgCj4+ICAgCXVpbnQzMl90IGNydGNf aWQ7Cj4+ICsKPj4gKwl1aW50MzJfdCBwcm9wZXJ0aWVzW0lHVF9OVU1fQ1JUQ19QUk9QU107Cj4+ ICAgfTsKPiBTbyB0aGUgbWFjcm8gcmVtYWluIGFzIENSVENzPwoKQWggc29ycnksIEkgc2hvdWxk IGxlYXZlIGlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEgdW50b3VjaGVkIGluIHRoaXMgCmNv bW1pdCBhbmQgbW92ZSByZW5hbWUgaW4gdGhlIG90aGVyIG9uZS4KRm9sbG93aW5nIERhbmllbCdz IGNvbW1lbnQsIGl0IG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGNoYW5nZWQgYXQgYWxsLgoKPgo+PiAg IAo+PiAgIHR5cGVkZWYgc3RydWN0IHsKPj4gQEAgLTI4MSw2ICsyODEsNyBAQCB0eXBlZGVmIHN0 cnVjdCB7Cj4+ICAgCXVuc2lnbmVkIGxvbmcgcGVuZGluZ19jcnRjX2lkeF9tYXNrOwo+PiAgIAli b29sIHVzZV9vdmVycmlkZV9tb2RlOwo+PiAgIAlkcm1Nb2RlTW9kZUluZm8gb3ZlcnJpZGVfbW9k ZTsKPj4gKwl1aW50MzJfdCBwcm9wZXJ0aWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXTsKPj4g ICB9IGlndF9vdXRwdXRfdDsKPj4gICAKPj4gICBzdHJ1Y3QgaWd0X2Rpc3BsYXkgewo+PiBAQCAt MzU1LDE4ICszNTYsMTggQEAgdm9pZCBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGludCBkcm1fZmQsIGVu dW0gcGlwZSBwaXBlKTsKPj4gICAgKi8KPj4gICAjZGVmaW5lIGlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZhbHVlKSBcCj4+ICAgCWlndF9hc3NlcnRfbHQo MCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVf aWQsXAo+PiAtCQkJCQkJICBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkp Cj4+ICsJCQkJCQkgIHBsYW5lLT5wcm9wZXJ0aWVzW3Byb3BdLCB2YWx1ZSkpCj4+ICAgCj4+ICAg LyoqCj4+IC0gKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgo+PiArICogaWd0X2F0b21p Y19wb3B1bGF0ZV9waXBlX3JlcToKPj4gICAgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0 b21pY1JlcQo+PiAtICogQG91dHB1dDogQSBwb2ludGVyIGlndF9vdXRwdXRfdAo+PiArICogQHBp cGU6IEEgcG9pbnRlciBpZ3RfcGlwZV90Cj4+ICAgICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWlj X2NydGNfcHJvcGVydGllcwo+PiAgICAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+PiAgICAq Lwo+PiAtI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBw cm9wLCB2YWx1ZSkgXAo+PiAtCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3Bl cnR5KHJlcSwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCxcCj4+IC0JCQkJCQkgIG91dHB1 dC0+Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW3Byb3BdLCB2YWx1ZSkpCj4+ICsjZGVmaW5lIGln dF9hdG9taWNfcG9wdWxhdGVfcGlwZV9yZXEocmVxLCBwaXBlLCBwcm9wLCB2YWx1ZSkgXAo+PiAr CWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgcGlwZS0+Y3J0 Y19pZCxcCj4+ICsJCQkJCQkgIHBpcGUtPnByb3BlcnRpZXNbcHJvcF0sIHZhbHVlKSkKPj4gICAv KioKPj4gICAgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXE6Cj4+ICAgICogQHJl cTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPj4gQEAgLTM3Niw3ICszNzcsNyBAQCB2 b2lkIGlndF93YWl0X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwo+PiAg ICAqLwo+PiAgICNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwg b3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAo+PiAgIAlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9t aWNBZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lk LFwKPj4gLQkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9w XSwgdmFsdWUpKQo+PiArCQkJCQkJICBvdXRwdXQtPnByb3BlcnRpZXNbcHJvcF0sIHZhbHVlKSkK Pj4gICAKPj4gICB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKPj4gICB2b2lkIGln dF9yZXNldF9jb25uZWN0b3JzKHZvaWQpOwo+PiAtLSAKPj4gMi44LjAucmMzCj4+Cj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==