From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mayuresh Gharpure Subject: [PATCH] lib/igt_kms: Add COMIT_ATOMIC to igt_display_commit2() Date: Wed, 27 Jan 2016 17:50:52 +0530 Message-ID: <1453897252-26739-1-git-send-email-mayuresh.s.gharpure@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 276126E665 for ; Wed, 27 Jan 2016 04:20:37 -0800 (PST) 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 Q28tQXV0aG9yIDogTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRAaW50ZWwuY29tPgoKU28gZmFy IHdlIGhhdmUgaGFkIG9ubHkgdHdvIGNvbW1pdCBzdHlsZXMsIENPTU1JVF9MRUdBQ1kKYW5kIENP TU1JVF9VTklWRVJTQUwuIFRoaXMgcGF0Y2ggYWRkcyBhbm90aGVyIGNvbW1pdCBzdHlsZQpDT01N SVRfQVRPTUlDIHdoaWNoIG1ha2VzIHVzZSBvZiBkcm1Nb2RlQXRvbWljQ29tbWl0KCkKClNpZ25l ZC1vZmYtYnk6IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJwdXJlQGludGVsLmNv bT4KLS0tCiBsaWIvaWd0X2ttcy5jIHwgMzE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGxpYi9pZ3Rfa21zLmggfCAgNzEgKysrKysr KysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzODYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA0OTcx MThhLi42M2RkYTcxIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21z LmMKQEAgLTE0NSw2ICsxNDUsMTIwIEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlndF9rbXNfZ2V0 X2Jhc2VfZWRpZCh2b2lkKQogICoKICAqIFJldHVybnM6IGFuIGFsdGVybmF0ZSBlZGlkIGJsb2Nr CiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICppZ3RfcGxhbmVfcHJvcF9uYW1lc1tJR1RfTlVNX1BM QU5FX1BST1BTXSA9IHsKKwkiU1JDX1giLAorCSJTUkNfWSIsCisJIlNSQ19XIiwKKwkiU1JDX0gi LAorCSJDUlRDX1giLAorCSJDUlRDX1kiLAorCSJDUlRDX1ciLAorCSJDUlRDX0giLAorCSJGQl9J RCIsCisJIkNSVENfSUQiLAorCSJ0eXBlIiwKKwkicm90YXRpb24iCit9OworCitzdGF0aWMgY29u c3QgY2hhciAqaWd0X2NydGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNdID0geworCSJi YWNrZ3JvdW5kX2NvbG9yIgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmlndF9jb25uZWN0b3Jf cHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU10gPSB7CisJInNjYWxpbmcgbW9kZSIs CisJIkRQTVMiCit9OworCisvKgorICogUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJpZXMgc3BlY2lm aWVkIGluIHByb3BzX25hbWUgYW5kIHN0b3JlIHRoZW0gaW50bworICogcGxhbmUtPmF0b21pY19w cm9wc19wbGFuZS4KKyAqLworc3RhdGljIHZvaWQKK2lndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9w cyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCQlpbnQgbnVt X3Byb3BzLCBjb25zdCBjaGFyICoqcHJvcF9uYW1lcykKK3sKKwlkcm1Nb2RlT2JqZWN0UHJvcGVy dGllc1B0ciBwcm9wczsKKwlpbnQgaSwgaiwgZmQ7CisKKwlmZCA9IGRpc3BsYXktPmRybV9mZDsK KworCXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIHBsYW5lLT5kcm1fcGxh bmUtPnBsYW5lX2lkLCBEUk1fTU9ERV9PQkpFQ1RfUExBTkUpOworCWlndF9hc3NlcnQocHJvcHMp OworCisJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7CisJCWRybU1v ZGVQcm9wZXJ0eVB0ciBwcm9wID0KKwkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnBy b3BzW2ldKTsKKworCQlmb3IgKGogPSAwOyBqIDwgbnVtX3Byb3BzOyBqKyspIHsKKwkJCWlmIChz dHJjbXAocHJvcC0+bmFtZSwgcHJvcF9uYW1lc1tqXSkgIT0gMCkKKwkJCQljb250aW51ZTsKKwor CQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCWJy ZWFrOworCQl9CisKKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwl9CisKKwlkcm1Nb2Rl RnJlZU9iamVjdFByb3BlcnRpZXMocHJvcHMpOworfQorCisvKgorICogUmV0cmlldmUgYWxsIHRo ZSBwcm9wZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25hbWUgYW5kIHN0b3JlIHRoZW0gaW50bwor ICogY29uZmlnLT5hdG9taWNfcHJvcHNfY3J0YyBhbmQgY29uZmlnLT5hdG9taWNfcHJvcHNfY29u bmVjdG9yLgorICovCitzdGF0aWMgdm9pZAoraWd0X2F0b21pY19maWxsX3Byb3BzKGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGlndF9vdXRwdXRfdCAqb3V0cHV0LAorCQkJaW50IG51bV9jcnRjX3By b3BzLCBjb25zdCBjaGFyICoqY3J0Y19wcm9wX25hbWVzLAorCQkJaW50IG51bV9jb25uZWN0b3Jf cHJvcHMsIGNvbnN0IGNoYXIgKipjb25uX3Byb3BfbmFtZXMpCit7CisJZHJtTW9kZU9iamVjdFBy b3BlcnRpZXNQdHIgcHJvcHM7CisJaW50IGksIGosIGZkOworCisJZmQgPSBkaXNwbGF5LT5kcm1f ZmQ7CisKKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNv bmZpZy5jcnRjLT5jcnRjX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ1JUQyk7CisJaWd0X2Fzc2VydChw cm9wcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsKKwkJ ZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQorCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9w cy0+cHJvcHNbaV0pOworCisJCWZvciAoaiA9IDA7IGogPCBudW1fY3J0Y19wcm9wczsgaisrKSB7 CisJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIGNydGNfcHJvcF9uYW1lc1tqXSkgIT0gMCkKKwkJ CQljb250aW51ZTsKKworCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2NydGNbal0gPSBw cm9wcy0+cHJvcHNbaV07CisJCQlicmVhazsKKwkJfQorCisJCWRybU1vZGVGcmVlUHJvcGVydHko cHJvcCk7CisJfQorCisJZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKKwlwcm9w cyA9IE5VTEw7CisJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgb3V0cHV0 LT5jb25maWcuY29ubmVjdG9yLT5jb25uZWN0b3JfaWQsIERSTV9NT0RFX09CSkVDVF9DT05ORUNU T1IpOworCWlndF9hc3NlcnQocHJvcHMpOworCisJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3Vu dF9wcm9wczsgaSsrKSB7CisJCWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0KKwkJCWRybU1vZGVH ZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3BzW2ldKTsKKworCQlmb3IgKGogPSAwOyBqIDwgbnVt X2Nvbm5lY3Rvcl9wcm9wczsgaisrKSB7CisJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIGNvbm5f cHJvcF9uYW1lc1tqXSkgIT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJb3V0cHV0LT5jb25maWcu YXRvbWljX3Byb3BzX2Nvbm5lY3RvcltqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCWJyZWFrOwor CQl9CisKKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwl9CisKKwlkcm1Nb2RlRnJlZU9i amVjdFByb3BlcnRpZXMocHJvcHMpOworCit9CisKIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlndF9r bXNfZ2V0X2FsdF9lZGlkKHZvaWQpCiB7CiAJdXBkYXRlX2VkaWRfY3N1bShhbHRfZWRpZCk7CkBA IC05MDksNiArMTAyMyw4IEBAIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfcmVmcmVzaChpZ3Rfb3V0 cHV0X3QgKm91dHB1dCkKIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlw ZSkpOwogCiAJZGlzcGxheS0+cGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlw ZTsKKwlpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENf UFJPUFMsIGlndF9jcnRjX3Byb3BfbmFtZXMsCisJCUlHVF9OVU1fQ09OTkVDVE9SX1BST1BTLCBp Z3RfY29ubmVjdG9yX3Byb3BfbmFtZXMpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtOTc3LDYgKzEw OTMsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50 IGRybV9mZCkKIHsKIAlkcm1Nb2RlUmVzICpyZXNvdXJjZXM7CiAJZHJtTW9kZVBsYW5lUmVzICpw bGFuZV9yZXNvdXJjZXM7CisJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7CiAJaW50 IGk7CiAKIAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKQEAgLTEw NTEsNiArMTE2OCw3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LCBpbnQgZHJtX2ZkKQogCiAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7CiAJCQlwbGFuZS0+ZHJt X3BsYW5lID0gZHJtX3BsYW5lOworCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3Bs YXksIHBsYW5lLCBJR1RfTlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7CiAK IAkJCWdldF9wbGFuZV9wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIGRybV9wbGFuZS0+cGxhbmVf aWQsCiAJCQkJCSAgICJyb3RhdGlvbiIsCkBAIC0xMzA2LDYgKzE0MjQsMTExIEBAIHN0YXRpYyB1 aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQog CWlndF9hc3NlcnQociA9PSAwKTsJXAogfQogCisKKworCisvKgorICogQWRkIHBvc2l0aW9uIGFu ZCBmYiBjaGFuZ2VzIG9mIGEgcGxhbmUgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLwor c3RhdGljIGludAoraWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAq cGxhbmUsIGlndF9vdXRwdXRfdCAqb3V0cHV0LAorCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sK KworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7CisJdWludDMyX3Qg ZmJfaWQsIGNydGNfaWQ7CisJaW50IHJldDsKKwl1aW50MzJfdCBzcmNfeDsKKwl1aW50MzJfdCBz cmNfeTsKKwl1aW50MzJfdCBzcmNfdzsKKwl1aW50MzJfdCBzcmNfaDsKKwlpbnQzMl90IGNydGNf eDsKKwlpbnQzMl90IGNydGNfeTsKKwl1aW50MzJfdCBjcnRjX3c7CisJdWludDMyX3QgY3J0Y19o OworCisJaWd0X2Fzc2VydChwbGFuZS0+ZHJtX3BsYW5lKTsKKworCS8qIGl0J3MgYW4gZXJyb3Ig dG8gdHJ5IGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUgKi8KKwlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9z dXBwb3J0c19yb3RhdGlvbihwbGFuZSkgfHwKKwkJCSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7 CisKKwlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOworCWNydGNfaWQgPSBvdXRw dXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkOworCisJaWYgKChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBw bGFuZS0+c2l6ZV9jaGFuZ2VkKSAmJiBmYl9pZCA9PSAwKSB7CisKKwkJTE9HKGRpc3BsYXksCisJ CSAgICAiJXM6IGRybU1vZGVBdG9taWNDb21taXQgcGlwZSAlcywgcGxhbmUgJWQsIGRpc2FibGlu Z1xuIiwKKwkJICAgICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKKwkJICAgICBrbXN0ZXN0X3Bp cGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwKKwkJICAgICBwbGFuZS0+aW5kZXgpOworCisJ CS8qIHBvcHVsYXRlIHBsYW5lIHJlcSAqLworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCwgY3J0Y19pZCk7CisKKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBJR1RfRklY RUQoMCwgMCkpOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJ R1RfUExBTkVfU1JDX1ksIElHVF9GSVhFRCgwLCAwKSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgSUdUX0ZJWEVEKDAsIDApKTsK KwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NS Q19ILCBJR1RfRklYRUQoMCwgMCkpOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIDApOworCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCAwKTsKKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgMCk7CisJ CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRD X0gsIDApOworCisJfSBlbHNlIGlmIChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBwbGFuZS0+cG9zaXRp b25fY2hhbmdlZCB8fAorCQkJcGxhbmUtPnNpemVfY2hhbmdlZCkgeworCisJCXNyY194ID0gSUdU X0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3gsIDApOyAvKiBzcmNfeCAqLworCQlzcmNfeSA9IElHVF9G SVhFRChwbGFuZS0+ZmItPnNyY195LCAwKTsgLyogc3JjX3kgKi8KKwkJc3JjX3cgPSBJR1RfRklY RUQocGxhbmUtPmZiLT5zcmNfdywgMCk7IC8qIHNyY193ICovCisJCXNyY19oID0gSUdUX0ZJWEVE KHBsYW5lLT5mYi0+c3JjX2gsIDApOyAvKiBzcmNfaCAqLworCQljcnRjX3ggPSBwbGFuZS0+Y3J0 Y194OworCQljcnRjX3kgPSBwbGFuZS0+Y3J0Y195OworCQljcnRjX3cgPSBwbGFuZS0+Y3J0Y193 OworCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOworCisJCUxPRyhkaXNwbGF5LAorCQkgICAgIiVz OiBkcm1Nb2RlQXRvbWljQ29tbWl0ICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgorCQkg ICAgIiV1eCV1IGRzdCA9ICgldSwgJXUpICV1eCV1XG4iLAorCQkgICAgaWd0X291dHB1dF9uYW1l KG91dHB1dCksCisJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwK KwkJICAgIHBsYW5lLT5pbmRleCwKKwkJICAgIGZiX2lkLAorCQkgICAgc3JjX3ggPj4gMTYsIHNy Y195ID4+IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4gMTYsCisJCSAgICBjcnRjX3gsIGNydGNf eSwgY3J0Y193LCBjcnRjX2gpOworCisKKwkJLyogcG9wdWxhdGUgcGxhbmUgcmVxICovCisJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0lE LCBjcnRjX2lkKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwg SUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7CisKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9y ZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBzcmNfeCk7CisJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWSwgc3JjX3kpOworCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1cs IHNyY193KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdU X1BMQU5FX1NSQ19ILCBzcmNfaCk7CisKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEo cmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWCwgY3J0Y194KTsKKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKKwkJ aWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENf VywgY3J0Y193KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwg SUdUX1BMQU5FX0NSVENfSCwgY3J0Y19oKTsKKworCQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5n ZWQpCisJCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAorCQkJCUlH VF9QTEFORV9ST1RBVElPTiwgcGxhbmUtPnJvdGF0aW9uKTsKKworCX0KKworCXBsYW5lLT5mYl9j aGFuZ2VkID0gZmFsc2U7CisJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKKwlwbGFu ZS0+c2l6ZV9jaGFuZ2VkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKworCisKIC8qCiAgKiBD b21taXQgcG9zaXRpb24gYW5kIGZiIGNoYW5nZXMgdG8gYSBEUk0gcGxhbmUgdmlhIHRoZSBTZXRQ bGFuZSBpb2N0bDsgaWYgdGhlCiAgKiBEUk0gY2FsbCB0byBwcm9ncmFtIHRoZSBwbGFuZSBmYWls cywgd2UnbGwgZWl0aGVyIGZhaWwgaW1tZWRpYXRlbHkgKGZvcgpAQCAtMTU1OCw3ICsxNzgxLDcg QEAgc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKIAkJcmV0 dXJuIGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdhY3kocGxhbmUsIG91dHB1dCwKIAkJCQkJ CSAgICAgICBmYWlsX29uX2Vycm9yKTsKIAl9IGVsc2UgewotCQlyZXR1cm4gaWd0X2RybV9wbGFu ZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7CisJCQlyZXR1cm4gaWd0X2Ry bV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7CiAJfQogfQogCkBA IC0xNjEyLDYgKzE4MzUsOTAgQEAgc3RhdGljIGludCBpZ3Rfb3V0cHV0X2NvbW1pdChpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwKIAlyZXR1cm4gMDsKIH0KIAorCisvKgorICogQWRkIGNydGMgcHJvcGVy dHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAorICovCitzdGF0aWMgdm9pZCBp Z3RfYXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1v ZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCWlndF9waXBlX3QgKnBpcGVfb2JqID0gaWd0X291dHB1 dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7CisKKwlpZiAocGlwZV9vYmotPmJhY2tncm91bmRf Y2hhbmdlZCkKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwgSUdU X0NSVENfQkFDS0dST1VORCwgcGlwZV9vYmotPmJhY2tncm91bmQpOworCisJLyoKKwkgKglUT0RP OiBBZGQgYWxsIGNydGMgbGV2ZWwgcHJvcGVydGllcyBoZXJlCisJICovCisKK30KKworLyoKKyAq IEFkZCBjb25uZWN0b3IgcHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNl dAorICovCitzdGF0aWMgdm9pZCBpZ3RfYXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQoreworCisJc3RydWN0 IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyAqY29uZmlnID0gJm91dHB1dC0+Y29uZmlnOworCisJ aWYgKGNvbmZpZy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkKQorCQlpZ3RfYXRvbWlj X3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNUT1JfU0NBTElO R19NT0RFLCBjb25maWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGUpOworCisJaWYgKGNvbmZpZy0+ Y29ubmVjdG9yX2RwbXNfY2hhbmdlZCkKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3Jf cmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX0RQTVMsIGNvbmZpZy0+Y29ubmVjdG9yX2Rw bXMpOworCS8qCisJICoJVE9ETzogQWRkIGFsbCBvdGhlciBjb25uZWN0b3IgbGV2ZWwgcHJvcGVy dGllcyBoZXJlCisJICovCisKK30KKworLyoKKyAqIENvbW1pdCBhbGwgdGhlIGNoYW5nZXMgb2Yg YWxsIHRoZSBwbGFuZXMsY3J0Y3MsIGNvbm5lY3RvcnMKKyAqIGF0b21pY2FsbHkgdXNpbmcgZHJt TW9kZUF0b21pY0NvbW1pdCgpCisgKi8KK3N0YXRpYyBpbnQgaWd0X2F0b21pY19jb21taXQoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSkKK3sKKworCWludCByZXQgPSAwOworCWRybU1vZGVBdG9taWNS ZXEgKnJlcTsKKwlkb19vcl9kaWUoZHJtU2V0Q2xpZW50Q2FwKGRpc3BsYXktPmRybV9mZCwgRFJN X0NMSUVOVF9DQVBfQVRPTUlDLCAxKSk7CisJaW50IGkgPSAwOworCisJcmVxID0gZHJtTW9kZUF0 b21pY0FsbG9jKCk7CisJZHJtTW9kZUF0b21pY1NldEN1cnNvcihyZXEsIDApOworCisJZm9yIChp ID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7CisJCWlndF9vdXRwdXRfdCAqb3V0 cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07CisJCWlndF9waXBlX3QgKnBpcGU7CisKKwkJaWYg KCFvdXRwdXQtPnZhbGlkKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogQWRkIENSVEMgUHJv cGVydGllcyB0byB0aGUgcHJvcGVydHkgc2V0CisJCSAqLworCQlpZ3RfYXRvbWljX3ByZXBhcmVf Y3J0Y19jb21taXQob3V0cHV0LCByZXEpOworCisJCS8qCisJCSAqIEFkZCBDb25uZWN0b3IgUHJv cGVydGllcyB0byB0aGUgcHJvcGVydHkgc2V0CisJCSAqLworCQlpZ3RfYXRvbWljX3ByZXBhcmVf Y3J0Y19jb21taXQob3V0cHV0LCByZXEpOworCisKKwkJcGlwZSA9IGlndF9vdXRwdXRfZ2V0X2Ry aXZpbmdfcGlwZShvdXRwdXQpOworCisJCWZvciAoaSA9IDA7IGkgPCBwaXBlLT5uX3BsYW5lczsg aSsrKSB7CisJCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxhbmVzW2ldOworCQkJaWd0 X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCByZXEpOworCQl9CisK Kwl9CisKKwlyZXQgPSBkcm1Nb2RlQXRvbWljQ29tbWl0KGRpc3BsYXktPmRybV9mZCwgcmVxLCAw LCBOVUxMKTsKKwlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOworCXJldHVybiByZXQ7CisKK30KIC8q CiAgKiBDb21taXQgYWxsIHBsYW5lIGNoYW5nZXMgYWNyb3NzIGFsbCBvdXRwdXRzIG9mIHRoZSBk aXNwbGF5LgogICoKQEAgLTE2MzEsNiArMTkzOCwxNCBAQCBzdGF0aWMgaW50IGRvX2Rpc3BsYXlf Y29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCiAKIAlpZ3RfZGlzcGxheV9yZWZyZXNoKGRp c3BsYXkpOwogCisJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykgeworCisJCXJldCA9IGlndF9hdG9t aWNfY29tbWl0KGRpc3BsYXkpOworCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9yKTsK KwkJcmV0dXJuIDA7CisKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRz OyBpKyspIHsKIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsK IApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggOTRmMzE1 Zi4uYjlmYjNiZiAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0X2ttcy5o CkBAIC0xMDYsMTEgKzEwNiwyOCBAQCBpbnQga21zdGVzdF9nZXRfcGlwZV9mcm9tX2NydGNfaWQo aW50IGZkLCBpbnQgY3J0Y19pZCk7CiB2b2lkIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUo dm9pZCk7CiB2b2lkIGttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKHZvaWQpOwogCitlbnVtIGlndF9h dG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfQ1JUQ19CQUNLR1JPVU5EID0gMCwK KyAgICAgICBJR1RfTlVNX0NSVENfUFJPUFMKK307CisKK2VudW0gaWd0X2F0b21pY19jb25uZWN0 b3JfcHJvcGVydGllcyB7CisgICAgICAgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUgPSAwLAor ICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKKyAgICAgICBJR1RfTlVNX0NPTk5FQ1RPUl9QUk9Q UworfTsKKwogc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7CiAJZHJtTW9kZUNydGMg KmNydGM7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwogCWRybU1vZGVFbmNvZGVyICpl bmNvZGVyOwogCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0X21vZGU7CisJdWludDY0X3QgY29ubmVj dG9yX3NjYWxpbmdfbW9kZTsKKwlib29sIGNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZDsK Kwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKKwlib29sIGNvbm5lY3Rvcl9kcG1zX2NoYW5nZWQ7 CisJdWludDMyX3QgYXRvbWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsKKwl1aW50 MzJfdCBhdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXTsKIAlp bnQgY3J0Y19pZHg7CiAJaW50IHBpcGU7CiB9OwpAQCAtMTU2LDkgKzE3MywyOCBAQCB2b2lkIGtt c3Rlc3RfdW5zZXRfYWxsX2NydGNzKGludCBkcm1fZmQsIGRybU1vZGVSZXNQdHIgcmVzb3VyY2Vz KTsKIGVudW0gaWd0X2NvbW1pdF9zdHlsZSB7CiAJQ09NTUlUX0xFR0FDWSA9IDAsCiAJQ09NTUlU X1VOSVZFUlNBTCwKLQkvKiBXZSdsbCBhZGQgYXRvbWljIGhlcmUgZXZlbnR1YWxseS4gKi8KKwlD T01NSVRfQVRPTUlDLAogfTsKIAorZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMgewor ICAgICAgIElHVF9QTEFORV9TUkNfWCA9IDAsCisgICAgICAgSUdUX1BMQU5FX1NSQ19ZLAorICAg ICAgIElHVF9QTEFORV9TUkNfVywKKyAgICAgICBJR1RfUExBTkVfU1JDX0gsCisKKyAgICAgICBJ R1RfUExBTkVfQ1JUQ19YLAorICAgICAgIElHVF9QTEFORV9DUlRDX1ksCisgICAgICAgSUdUX1BM QU5FX0NSVENfVywKKyAgICAgICBJR1RfUExBTkVfQ1JUQ19ILAorCisgICAgICAgSUdUX1BMQU5F X0ZCX0lELAorICAgICAgIElHVF9QTEFORV9DUlRDX0lELAorICAgICAgIElHVF9QTEFORV9UWVBF LAorICAgICAgIElHVF9QTEFORV9ST1RBVElPTiwKKyAgICAgICBJR1RfTlVNX1BMQU5FX1BST1BT Cit9OworCisKIHR5cGVkZWYgc3RydWN0IGlndF9kaXNwbGF5IGlndF9kaXNwbGF5X3Q7CiB0eXBl ZGVmIHN0cnVjdCBpZ3RfcGlwZSBpZ3RfcGlwZV90OwogdHlwZWRlZiB1aW50MzJfdCBpZ3RfZml4 ZWRfdDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwpAQCAtMjAwLDYgKzIzNiw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKIAkvKiBwYW5uaW5nIG9mZnNldCB3aXRoaW4gdGhlIGZiICovCiAJdW5zaWdu ZWQgaW50IHBhbl94LCBwYW5feTsKIAlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsKKwl1aW50MzJf dCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFORV9QUk9QU107CiB9IGlndF9wbGFuZV90 OwogCiBzdHJ1Y3QgaWd0X3BpcGUgewpAQCAtMjgxLDYgKzMxOCwzOCBAQCB2b2lkIGlndF93YWl0 X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwogCiAjZGVmaW5lIElHVF9G SVhFRChpLGYpCSgoaSkgPDwgMTYgfCAoZikpCiAKKy8qKgorICogaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXE6CisgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQorICog QHBsYW5lOiBBIHBvaW50ZXIgaWd0X3BsYW5lX3QKKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21p Y19wbGFuZV9wcm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAqLworI2Rl ZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBwcm9wLCB2YWx1 ZSkgXAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgcGxh bmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsXAorCQkJCQkJICBwbGFuZS0+YXRvbWljX3Byb3BzX3Bs YW5lW3Byb3BdLCB2YWx1ZSkpCisKKy8qKgorICogaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3Jl cToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCisgKiBAb3V0cHV0OiBB IHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfY3J0Y19w cm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAqLworI2RlZmluZSBpZ3Rf YXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAorCWln dF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgb3V0cHV0LT5jb25m aWcuY3J0Yy0+Y3J0Y19pZCxcCisJCQkJCQkgIG91dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19j cnRjW3Byb3BdLCB2YWx1ZSkpCisvKioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9y X3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCisgKiBAb3V0cHV0 OiBBIHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfY29u bmVjdG9yX3Byb3BlcnRpZXMKKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAorICovCisjZGVm aW5lIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwgcHJvcCwg dmFsdWUpIFwKKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEs IG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLFwKKwkJCQkJCSAgb3V0cHV0 LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9wXSwgdmFsdWUpKQorCiB2b2lkIGln dF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3RvcnModm9p ZCk7CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=