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: Fri, 29 Jan 2016 14:17:11 +0530 Message-ID: <1454057231-6859-1-git-send-email-mayuresh.s.gharpure@intel.com> References: <20160127130141.GA10933@mcvlad-wk.rb.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 573986E114 for ; Fri, 29 Jan 2016 00:46:50 -0800 (PST) In-Reply-To: <20160127130141.GA10933@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 Q28tQXV0aG9yIDogTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRAaW50ZWwuY29tPgoKU28gZmFy IHdlIGhhdmUgaGFkIG9ubHkgdHdvIGNvbW1pdCBzdHlsZXMsIENPTU1JVF9MRUdBQ1kKYW5kIENP TU1JVF9VTklWRVJTQUwuIFRoaXMgcGF0Y2ggYWRkcyBhbm90aGVyIGNvbW1pdCBzdHlsZQpDT01N SVRfQVRPTUlDIHdoaWNoIG1ha2VzIHVzZSBvZiBkcm1Nb2RlQXRvbWljQ29tbWl0KCkKClNpZ25l ZC1vZmYtYnk6IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJwdXJlQGludGVsLmNv bT4KLS0tCiBsaWIvaWd0X2ttcy5jIHwgMzE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGxpYi9pZ3Rfa21zLmggfCAgNzEgKysrKysr KysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzODYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA5MGM4 ZGE3Li43Mzg4M2QzIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21z 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 IC05NTIsNiArMTA2Niw4IEBAIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfcmVmcmVzaChpZ3Rfb3V0 cHV0X3QgKm91dHB1dCkKIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlw ZSkpOwogCiAJZGlzcGxheS0+cGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlw ZTsKKwlpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENf UFJPUFMsIGlndF9jcnRjX3Byb3BfbmFtZXMsCisJCUlHVF9OVU1fQ09OTkVDVE9SX1BST1BTLCBp Z3RfY29ubmVjdG9yX3Byb3BfbmFtZXMpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTAyMCw2ICsx MTM2LDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlu dCBkcm1fZmQpCiB7CiAJZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwogCWRybU1vZGVQbGFuZVJlcyAq cGxhbmVfcmVzb3VyY2VzOworCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwogCWlu dCBpOwogCiAJbWVtc2V0KGRpc3BsYXksIDAsIHNpemVvZihpZ3RfZGlzcGxheV90KSk7CkBAIC0x MDk0LDYgKzEyMTEsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgaW50IGRybV9mZCkKIAogCQkJcGxhbmUtPnBpcGUgPSBwaXBlOwogCQkJcGxhbmUtPmRy bV9wbGFuZSA9IGRybV9wbGFuZTsKKwkJCWlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhkaXNw bGF5LCBwbGFuZSwgSUdUX05VTV9QTEFORV9QUk9QUywgaWd0X3BsYW5lX3Byb3BfbmFtZXMpOwog CiAJCQlnZXRfcGxhbmVfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBkcm1fcGxhbmUtPnBsYW5l X2lkLAogCQkJCQkgICAicm90YXRpb24iLApAQCAtMTM0OSw2ICsxNDY3LDExMSBAQCBzdGF0aWMg dWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkK IAlpZ3RfYXNzZXJ0KHIgPT0gMCk7CVwKIH0KIAorCisKKworLyoKKyAqIEFkZCBwb3NpdGlvbiBh bmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMgcHJvcGVydHkgc2V0CisgKi8K K3N0YXRpYyBpbnQKK2lndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3Qg KnBsYW5lLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKKwlkcm1Nb2RlQXRvbWljUmVxICpyZXEpCit7 CisKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5OworCXVpbnQzMl90 IGZiX2lkLCBjcnRjX2lkOworCWludCByZXQ7CisJdWludDMyX3Qgc3JjX3g7CisJdWludDMyX3Qg c3JjX3k7CisJdWludDMyX3Qgc3JjX3c7CisJdWludDMyX3Qgc3JjX2g7CisJaW50MzJfdCBjcnRj X3g7CisJaW50MzJfdCBjcnRjX3k7CisJdWludDMyX3QgY3J0Y193OworCXVpbnQzMl90IGNydGNf aDsKKworCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7CisKKwkvKiBpdCdzIGFuIGVycm9y IHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCisJaWd0X2Fzc2VydChpZ3RfcGxhbmVf c3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8CisJCQkhcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQp OworCisJZmJfaWQgPSBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKTsKKwljcnRjX2lkID0gb3V0 cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKKworCWlmICgocGxhbmUtPmZiX2NoYW5nZWQgfHwg cGxhbmUtPnNpemVfY2hhbmdlZCkgJiYgZmJfaWQgPT0gMCkgeworCisJCUxPRyhkaXNwbGF5LAor CQkgICAgIiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6IHBpcGUgJXMsIHBsYW5lICVkLCBkaXNh YmxpbmdcbiIsCisJCSAgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCisJCSAgICAga21zdGVz dF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCisJCSAgICAgcGxhbmUtPmluZGV4KTsK KworCQkvKiBwb3B1bGF0ZSBwbGFuZSByZXEgKi8KKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIDApOworCisJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwgSUdUX0ZJWEVE KDAsIDApKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdU X1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoMCwgMCkpOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3Bs YW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIElHVF9GSVhFRCgwLCAwKSk7CisJ CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNf SCwgSUdUX0ZJWEVEKDAsIDApKTsKKworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShy ZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19YLCAwKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgMCk7CisJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1csIDApOworCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19I LCAwKTsKKworCX0gZWxzZSBpZiAocGxhbmUtPmZiX2NoYW5nZWQgfHwgcGxhbmUtPnBvc2l0aW9u X2NoYW5nZWQgfHwKKwkJCXBsYW5lLT5zaXplX2NoYW5nZWQpIHsKKworCQlzcmNfeCA9IElHVF9G SVhFRChwbGFuZS0+ZmItPnNyY194LCAwKTsgLyogc3JjX3ggKi8KKwkJc3JjX3kgPSBJR1RfRklY RUQocGxhbmUtPmZiLT5zcmNfeSwgMCk7IC8qIHNyY195ICovCisJCXNyY193ID0gSUdUX0ZJWEVE KHBsYW5lLT5mYi0+c3JjX3csIDApOyAvKiBzcmNfdyAqLworCQlzcmNfaCA9IElHVF9GSVhFRChw bGFuZS0+ZmItPnNyY19oLCAwKTsgLyogc3JjX2ggKi8KKwkJY3J0Y194ID0gcGxhbmUtPmNydGNf eDsKKwkJY3J0Y195ID0gcGxhbmUtPmNydGNfeTsKKwkJY3J0Y193ID0gcGxhbmUtPmNydGNfdzsK KwkJY3J0Y19oID0gcGxhbmUtPmNydGNfaDsKKworCQlMT0coZGlzcGxheSwKKwkJICAgICIlczog cG9wdWxhdGluZyBwbGFuZSBkYXRhOiAlcy4lZCwgZmIgJXUsIHNyYyA9ICglZCwgJWQpICIKKwkJ ICAgICIldXgldSBkc3QgPSAoJXUsICV1KSAldXgldVxuIiwKKwkJICAgIGlndF9vdXRwdXRfbmFt ZShvdXRwdXQpLAorCQkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSks CisJCSAgICBwbGFuZS0+aW5kZXgsCisJCSAgICBmYl9pZCwKKwkJICAgIHNyY194ID4+IDE2LCBz cmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAorCQkgICAgY3J0Y194LCBjcnRj X3ksIGNydGNfdywgY3J0Y19oKTsKKworCisJCS8qIHBvcHVsYXRlIHBsYW5lIHJlcSAqLworCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19J RCwgY3J0Y19pZCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVf cmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwgc3JjX3gpOworCQlpZ3RfYXRvbWljX3Bv cHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKKwkJ aWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19X LCBzcmNfdyk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElH VF9QTEFORV9TUkNfSCwgc3JjX2gpOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIGNydGNfeCk7CisJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7CisJ CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRD X1csIGNydGNfdyk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9DUlRDX0gsIGNydGNfaCk7CisKKwkJaWYgKHBsYW5lLT5yb3RhdGlvbl9jaGFu Z2VkKQorCQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwKKwkJCQlJ R1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7CisKKwl9CisKKwlwbGFuZS0+ZmJf Y2hhbmdlZCA9IGZhbHNlOworCXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gZmFsc2U7CisJcGxh bmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKKworCiAvKgogICog Q29tbWl0IHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIHRvIGEgRFJNIHBsYW5lIHZpYSB0aGUgU2V0 UGxhbmUgaW9jdGw7IGlmIHRoZQogICogRFJNIGNhbGwgdG8gcHJvZ3JhbSB0aGUgcGxhbmUgZmFp bHMsIHdlJ2xsIGVpdGhlciBmYWlsIGltbWVkaWF0ZWx5IChmb3IKQEAgLTE2MDEsNyArMTgyNCw3 IEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCXJl dHVybiBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBvdXRwdXQsCiAJCQkJ CQkgICAgICAgZmFpbF9vbl9lcnJvcik7CiAJfSBlbHNlIHsKLQkJcmV0dXJuIGlndF9kcm1fcGxh bmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOworCQkJcmV0dXJuIGlndF9k cm1fcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwogCX0KIH0KIApA QCAtMTY1NSw2ICsxODc4LDkwIEBAIHN0YXRpYyBpbnQgaWd0X291dHB1dF9jb21taXQoaWd0X291 dHB1dF90ICpvdXRwdXQsCiAJcmV0dXJuIDA7CiB9CiAKKworLyoKKyAqIEFkZCBjcnRjIHByb3Bl cnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLworc3RhdGljIHZvaWQg aWd0X2F0b21pY19wcmVwYXJlX2NydGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1N b2RlQXRvbWljUmVxICpyZXEpCit7CisKKwlpZ3RfcGlwZV90ICpwaXBlX29iaiA9IGlndF9vdXRw dXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOworCisJaWYgKHBpcGVfb2JqLT5iYWNrZ3JvdW5k X2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBvdXRwdXQsIElH VF9DUlRDX0JBQ0tHUk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKKworCS8qCisJICoJVE9E TzogQWRkIGFsbCBjcnRjIGxldmVsIHByb3BlcnRpZXMgaGVyZQorCSAqLworCit9CisKKy8qCisg KiBBZGQgY29ubmVjdG9yIHByb3BlcnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBz ZXQKKyAqLworc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2Nvbm5lY3Rvcl9jb21taXQo aWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCXN0cnVj dCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgKmNvbmZpZyA9ICZvdXRwdXQtPmNvbmZpZzsKKwor CWlmIChjb25maWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZCkKKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX1NDQUxJ TkdfTU9ERSwgY29uZmlnLT5jb25uZWN0b3Jfc2NhbGluZ19tb2RlKTsKKworCWlmIChjb25maWct PmNvbm5lY3Rvcl9kcG1zX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9y X3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9EUE1TLCBjb25maWctPmNvbm5lY3Rvcl9k cG1zKTsKKwkvKgorCSAqCVRPRE86IEFkZCBhbGwgb3RoZXIgY29ubmVjdG9yIGxldmVsIHByb3Bl cnRpZXMgaGVyZQorCSAqLworCit9CisKKy8qCisgKiBDb21taXQgYWxsIHRoZSBjaGFuZ2VzIG9m IGFsbCB0aGUgcGxhbmVzLGNydGNzLCBjb25uZWN0b3JzCisgKiBhdG9taWNhbGx5IHVzaW5nIGRy bU1vZGVBdG9taWNDb21taXQoKQorICovCitzdGF0aWMgaW50IGlndF9hdG9taWNfY29tbWl0KGln dF9kaXNwbGF5X3QgKmRpc3BsYXkpCit7CisKKwlpbnQgcmV0ID0gMDsKKwlkcm1Nb2RlQXRvbWlj UmVxICpyZXE7CisJZG9fb3JfZGllKGRybVNldENsaWVudENhcChkaXNwbGF5LT5kcm1fZmQsIERS TV9DTElFTlRfQ0FQX0FUT01JQywgMSkpOworCWludCBpID0gMDsKKworCXJlcSA9IGRybU1vZGVB dG9taWNBbGxvYygpOworCWRybU1vZGVBdG9taWNTZXRDdXJzb3IocmVxLCAwKTsKKworCWZvciAo aSA9IDA7IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7IGkrKykgeworCQlpZ3Rfb3V0cHV0X3QgKm91 dHB1dCA9ICZkaXNwbGF5LT5vdXRwdXRzW2ldOworCQlpZ3RfcGlwZV90ICpwaXBlOworCisJCWlm ICghb3V0cHV0LT52YWxpZCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEFkZCBDUlRDIFBy b3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21pY19wcmVwYXJl X2NydGNfY29tbWl0KG91dHB1dCwgcmVxKTsKKworCQkvKgorCQkgKiBBZGQgQ29ubmVjdG9yIFBy b3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21pY19wcmVwYXJl X2Nvbm5lY3Rvcl9jb21taXQob3V0cHV0LCByZXEpOworCisKKwkJcGlwZSA9IGlndF9vdXRwdXRf Z2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOworCisJCWZvciAoaSA9IDA7IGkgPCBwaXBlLT5uX3Bs YW5lczsgaSsrKSB7CisJCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxhbmVzW2ldOwor CQkJaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCByZXEpOwor CQl9CisKKwl9CisKKwlyZXQgPSBkcm1Nb2RlQXRvbWljQ29tbWl0KGRpc3BsYXktPmRybV9mZCwg cmVxLCAwLCBOVUxMKTsKKwlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOworCXJldHVybiByZXQ7CisK K30KIC8qCiAgKiBDb21taXQgYWxsIHBsYW5lIGNoYW5nZXMgYWNyb3NzIGFsbCBvdXRwdXRzIG9m IHRoZSBkaXNwbGF5LgogICoKQEAgLTE2NzQsNiArMTk4MSwxNCBAQCBzdGF0aWMgaW50IGRvX2Rp c3BsYXlfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCiAKIAlpZ3RfZGlzcGxheV9yZWZy ZXNoKGRpc3BsYXkpOwogCisJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykgeworCisJCXJldCA9IGln dF9hdG9taWNfY29tbWl0KGRpc3BsYXkpOworCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vy cm9yKTsKKwkJcmV0dXJuIDA7CisKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9v dXRwdXRzOyBpKyspIHsKIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0 c1tpXTsKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXgg M2Y3YWRkNS4uNzY4YTVlMyAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0 X2ttcy5oCkBAIC0xMDYsMTEgKzEwNiwyOCBAQCBpbnQga21zdGVzdF9nZXRfcGlwZV9mcm9tX2Ny dGNfaWQoaW50IGZkLCBpbnQgY3J0Y19pZCk7CiB2b2lkIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNz X21vZGUodm9pZCk7CiB2b2lkIGttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKHZvaWQpOwogCitlbnVt IGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfQ1JUQ19CQUNLR1JPVU5E ID0gMCwKKyAgICAgICBJR1RfTlVNX0NSVENfUFJPUFMKK307CisKK2VudW0gaWd0X2F0b21pY19j b25uZWN0b3JfcHJvcGVydGllcyB7CisgICAgICAgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUg PSAwLAorICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKKyAgICAgICBJR1RfTlVNX0NPTk5FQ1RP Ul9QUk9QUworfTsKKwogc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7CiAJZHJtTW9k ZUNydGMgKmNydGM7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwogCWRybU1vZGVFbmNv ZGVyICplbmNvZGVyOwogCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0X21vZGU7CisJdWludDY0X3Qg Y29ubmVjdG9yX3NjYWxpbmdfbW9kZTsKKwlib29sIGNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hh bmdlZDsKKwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKKwlib29sIGNvbm5lY3Rvcl9kcG1zX2No YW5nZWQ7CisJdWludDMyX3QgYXRvbWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsK Kwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BT XTsKIAlpbnQgY3J0Y19pZHg7CiAJaW50IHBpcGU7CiB9OwpAQCAtMTU5LDkgKzE3NiwyOCBAQCB2 b2lkIGttc3Rlc3RfdW5zZXRfYWxsX2NydGNzKGludCBkcm1fZmQsIGRybU1vZGVSZXNQdHIgcmVz b3VyY2VzKTsKIGVudW0gaWd0X2NvbW1pdF9zdHlsZSB7CiAJQ09NTUlUX0xFR0FDWSA9IDAsCiAJ Q09NTUlUX1VOSVZFUlNBTCwKLQkvKiBXZSdsbCBhZGQgYXRvbWljIGhlcmUgZXZlbnR1YWxseS4g Ki8KKwlDT01NSVRfQVRPTUlDLAogfTsKIAorZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRp ZXMgeworICAgICAgIElHVF9QTEFORV9TUkNfWCA9IDAsCisgICAgICAgSUdUX1BMQU5FX1NSQ19Z LAorICAgICAgIElHVF9QTEFORV9TUkNfVywKKyAgICAgICBJR1RfUExBTkVfU1JDX0gsCisKKyAg ICAgICBJR1RfUExBTkVfQ1JUQ19YLAorICAgICAgIElHVF9QTEFORV9DUlRDX1ksCisgICAgICAg SUdUX1BMQU5FX0NSVENfVywKKyAgICAgICBJR1RfUExBTkVfQ1JUQ19ILAorCisgICAgICAgSUdU X1BMQU5FX0ZCX0lELAorICAgICAgIElHVF9QTEFORV9DUlRDX0lELAorICAgICAgIElHVF9QTEFO RV9UWVBFLAorICAgICAgIElHVF9QTEFORV9ST1RBVElPTiwKKyAgICAgICBJR1RfTlVNX1BMQU5F X1BST1BTCit9OworCisKIHR5cGVkZWYgc3RydWN0IGlndF9kaXNwbGF5IGlndF9kaXNwbGF5X3Q7 CiB0eXBlZGVmIHN0cnVjdCBpZ3RfcGlwZSBpZ3RfcGlwZV90OwogdHlwZWRlZiB1aW50MzJfdCBp Z3RfZml4ZWRfdDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwpAQCAtMjAzLDYgKzIzOSw3IEBA IHR5cGVkZWYgc3RydWN0IHsKIAkvKiBwYW5uaW5nIG9mZnNldCB3aXRoaW4gdGhlIGZiICovCiAJ dW5zaWduZWQgaW50IHBhbl94LCBwYW5feTsKIAlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsKKwl1 aW50MzJfdCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFORV9QUk9QU107CiB9IGlndF9w bGFuZV90OwogCiBzdHJ1Y3QgaWd0X3BpcGUgewpAQCAtMjg0LDYgKzMyMSwzOCBAQCB2b2lkIGln dF93YWl0X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwogCiAjZGVmaW5l IElHVF9GSVhFRChpLGYpCSgoaSkgPDwgMTYgfCAoZikpCiAKKy8qKgorICogaWd0X2F0b21pY19w b3B1bGF0ZV9wbGFuZV9yZXE6CisgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1Jl cQorICogQHBsYW5lOiBBIHBvaW50ZXIgaWd0X3BsYW5lX3QKKyAqIEBwcm9wOiBvbmUgb2YgaWd0 X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAq LworI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBwcm9w LCB2YWx1ZSkgXAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJl cSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsXAorCQkJCQkJICBwbGFuZS0+YXRvbWljX3By b3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCisKKy8qKgorICogaWd0X2F0b21pY19wb3B1bGF0ZV9j cnRjX3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCisgKiBAb3V0 cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNf Y3J0Y19wcm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAqLworI2RlZmlu ZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkg XAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgb3V0cHV0 LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCxcCisJCQkJCQkgIG91dHB1dC0+Y29uZmlnLmF0b21pY19w cm9wc19jcnRjW3Byb3BdLCB2YWx1ZSkpCisvKioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfY29u bmVjdG9yX3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCisgKiBA b3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9t aWNfY29ubmVjdG9yX3Byb3BlcnRpZXMKKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAorICov CisjZGVmaW5lIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwg cHJvcCwgdmFsdWUpIFwKKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0 eShyZXEsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLFwKKwkJCQkJCSAg b3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9wXSwgdmFsdWUpKQorCiB2 b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3Rv cnModm9pZCk7CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=