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: Mon, 1 Feb 2016 11:20:12 +0530 Message-ID: <1454305812-28884-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E2276E280 for ; Sun, 31 Jan 2016 21:50:00 -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 bT4KLS0tCiBsaWIvaWd0X2ttcy5jIHwgMzE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGxpYi9pZ3Rfa21zLmggfCAgNzEgKysrKysr KysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzODcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA5MGM4 ZGE3Li42YzA3MjIzIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21z 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 X2lkLAogCQkJCQkgICAicm90YXRpb24iLApAQCAtMTM0OSw2ICsxNDY3LDExMiBAQCBzdGF0aWMg dWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkK IAlpZ3RfYXNzZXJ0KHIgPT0gMCk7CVwKIH0KIAorCisKKworLyoKKyAqIEFkZCBwb3NpdGlvbiBh bmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMgcHJvcGVydHkgc2V0CisgKi8K K3N0YXRpYyBpbnQKK2lndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3Qg KnBsYW5lLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKKwlkcm1Nb2RlQXRvbWljUmVxICpyZXEpCit7 CisKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5OworCXVpbnQzMl90 IGZiX2lkLCBjcnRjX2lkOworCWludCByZXQ7CisJdWludDMyX3Qgc3JjX3g7CisJdWludDMyX3Qg c3JjX3k7CisJdWludDMyX3Qgc3JjX3c7CisJdWludDMyX3Qgc3JjX2g7CisJaW50MzJfdCBjcnRj X3g7CisJaW50MzJfdCBjcnRjX3k7CisJdWludDMyX3QgY3J0Y193OworCXVpbnQzMl90IGNydGNf aDsKKworCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7CisKKwkvKiBpdCdzIGFuIGVycm9y IHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCisJaWd0X2Fzc2VydChpZ3RfcGxhbmVf c3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8CisJCQkhcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQp OworCisJZmJfaWQgPSBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKTsKKwljcnRjX2lkID0gb3V0 cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKKworCWlmICgocGxhbmUtPmZiX2NoYW5nZWQgfHwg cGxhbmUtPnNpemVfY2hhbmdlZCkgJiYgZmJfaWQgPT0gMCkgeworCisJCUxPRyhkaXNwbGF5LAor CQkgICAgIiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6IHBpcGUgJXMsIHBsYW5lICVkLCBkaXNh YmxpbmdcbiIsCisJCSAgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCisJCSAgICAga21zdGVz dF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCisJCSAgICAgcGxhbmUtPmluZGV4KTsK KworCQkvKiBwb3B1bGF0ZSBwbGFuZSByZXEgKi8KKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIDApOworCQlpZ3RfYXRvbWljX3Bv cHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfRkJfSUQsIDApOworCisJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwg SUdUX0ZJWEVEKDAsIDApKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBw bGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoMCwgMCkpOworCQlpZ3RfYXRvbWljX3Bv cHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIElHVF9GSVhFRCgw LCAwKSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9TUkNfSCwgSUdUX0ZJWEVEKDAsIDApKTsKKworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3Bs YW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19YLCAwKTsKKwkJaWd0X2F0b21pY19w b3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgMCk7CisJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1cs IDApOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfQ1JUQ19ILCAwKTsKKworCX0gZWxzZSBpZiAocGxhbmUtPmZiX2NoYW5nZWQgfHwgcGxhbmUt PnBvc2l0aW9uX2NoYW5nZWQgfHwKKwkJCXBsYW5lLT5zaXplX2NoYW5nZWQpIHsKKworCQlzcmNf eCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY194LCAwKTsgLyogc3JjX3ggKi8KKwkJc3JjX3kg PSBJR1RfRklYRUQocGxhbmUtPmZiLT5zcmNfeSwgMCk7IC8qIHNyY195ICovCisJCXNyY193ID0g SUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3csIDApOyAvKiBzcmNfdyAqLworCQlzcmNfaCA9IElH VF9GSVhFRChwbGFuZS0+ZmItPnNyY19oLCAwKTsgLyogc3JjX2ggKi8KKwkJY3J0Y194ID0gcGxh bmUtPmNydGNfeDsKKwkJY3J0Y195ID0gcGxhbmUtPmNydGNfeTsKKwkJY3J0Y193ID0gcGxhbmUt PmNydGNfdzsKKwkJY3J0Y19oID0gcGxhbmUtPmNydGNfaDsKKworCQlMT0coZGlzcGxheSwKKwkJ ICAgICIlczogcG9wdWxhdGluZyBwbGFuZSBkYXRhOiAlcy4lZCwgZmIgJXUsIHNyYyA9ICglZCwg JWQpICIKKwkJICAgICIldXgldSBkc3QgPSAoJXUsICV1KSAldXgldVxuIiwKKwkJICAgIGlndF9v dXRwdXRfbmFtZShvdXRwdXQpLAorCQkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25m aWcucGlwZSksCisJCSAgICBwbGFuZS0+aW5kZXgsCisJCSAgICBmYl9pZCwKKwkJICAgIHNyY194 ID4+IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAorCQkgICAgY3J0 Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oKTsKKworCisJCS8qIHBvcHVsYXRlIHBsYW5lIHJl cSAqLworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfQ1JUQ19JRCwgY3J0Y19pZCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsIElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOworCisJCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwgc3JjX3gpOworCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksIHNy Y195KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX1NSQ19XLCBzcmNfdyk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwg cGxhbmUsIElHVF9QTEFORV9TUkNfSCwgc3JjX2gpOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIGNydGNfeCk7CisJCWlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1ksIGNy dGNfeSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9DUlRDX1csIGNydGNfdyk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIGNydGNfaCk7CisKKwkJaWYgKHBsYW5lLT5yb3Rh dGlvbl9jaGFuZ2VkKQorCQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFu ZSwKKwkJCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7CisKKwl9CisKKwlw bGFuZS0+ZmJfY2hhbmdlZCA9IGZhbHNlOworCXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gZmFs c2U7CisJcGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKKwor CiAvKgogICogQ29tbWl0IHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIHRvIGEgRFJNIHBsYW5lIHZp YSB0aGUgU2V0UGxhbmUgaW9jdGw7IGlmIHRoZQogICogRFJNIGNhbGwgdG8gcHJvZ3JhbSB0aGUg cGxhbmUgZmFpbHMsIHdlJ2xsIGVpdGhlciBmYWlsIGltbWVkaWF0ZWx5IChmb3IKQEAgLTE2MDEs NyArMTgyNSw3IEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxh bmUsCiAJCXJldHVybiBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBvdXRw dXQsCiAJCQkJCQkgICAgICAgZmFpbF9vbl9lcnJvcik7CiAJfSBlbHNlIHsKLQkJcmV0dXJuIGln dF9kcm1fcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOworCQkJcmV0 dXJuIGlndF9kcm1fcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwog CX0KIH0KIApAQCAtMTY1NSw2ICsxODc5LDkwIEBAIHN0YXRpYyBpbnQgaWd0X291dHB1dF9jb21t aXQoaWd0X291dHB1dF90ICpvdXRwdXQsCiAJcmV0dXJuIDA7CiB9CiAKKworLyoKKyAqIEFkZCBj cnRjIHByb3BlcnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLworc3Rh dGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2NydGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCit7CisKKwlpZ3RfcGlwZV90ICpwaXBlX29iaiA9 IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOworCisJaWYgKHBpcGVfb2JqLT5i YWNrZ3JvdW5kX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBv dXRwdXQsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKKworCS8q CisJICoJVE9ETzogQWRkIGFsbCBjcnRjIGxldmVsIHByb3BlcnRpZXMgaGVyZQorCSAqLworCit9 CisKKy8qCisgKiBBZGQgY29ubmVjdG9yIHByb3BlcnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBw cm9wZXJ0eSBzZXQKKyAqLworc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2Nvbm5lY3Rv cl9jb21taXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sK KworCXN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgKmNvbmZpZyA9ICZvdXRwdXQtPmNv bmZpZzsKKworCWlmIChjb25maWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZCkKKwkJ aWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09OTkVD VE9SX1NDQUxJTkdfTU9ERSwgY29uZmlnLT5jb25uZWN0b3Jfc2NhbGluZ19tb2RlKTsKKworCWlm IChjb25maWctPmNvbm5lY3Rvcl9kcG1zX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVf Y29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9EUE1TLCBjb25maWctPmNv bm5lY3Rvcl9kcG1zKTsKKwkvKgorCSAqCVRPRE86IEFkZCBhbGwgb3RoZXIgY29ubmVjdG9yIGxl dmVsIHByb3BlcnRpZXMgaGVyZQorCSAqLworCit9CisKKy8qCisgKiBDb21taXQgYWxsIHRoZSBj aGFuZ2VzIG9mIGFsbCB0aGUgcGxhbmVzLGNydGNzLCBjb25uZWN0b3JzCisgKiBhdG9taWNhbGx5 IHVzaW5nIGRybU1vZGVBdG9taWNDb21taXQoKQorICovCitzdGF0aWMgaW50IGlndF9hdG9taWNf Y29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXkpCit7CisKKwlpbnQgcmV0ID0gMDsKKwlkcm1N b2RlQXRvbWljUmVxICpyZXE7CisJZG9fb3JfZGllKGRybVNldENsaWVudENhcChkaXNwbGF5LT5k cm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01JQywgMSkpOworCWludCBpID0gMDsKKworCXJlcSA9 IGRybU1vZGVBdG9taWNBbGxvYygpOworCWRybU1vZGVBdG9taWNTZXRDdXJzb3IocmVxLCAwKTsK KworCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7IGkrKykgeworCQlpZ3Rfb3V0 cHV0X3QgKm91dHB1dCA9ICZkaXNwbGF5LT5vdXRwdXRzW2ldOworCQlpZ3RfcGlwZV90ICpwaXBl OworCisJCWlmICghb3V0cHV0LT52YWxpZCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEFk ZCBDUlRDIFByb3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21p Y19wcmVwYXJlX2NydGNfY29tbWl0KG91dHB1dCwgcmVxKTsKKworCQkvKgorCQkgKiBBZGQgQ29u bmVjdG9yIFByb3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21p Y19wcmVwYXJlX2Nvbm5lY3Rvcl9jb21taXQob3V0cHV0LCByZXEpOworCisKKwkJcGlwZSA9IGln dF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOworCisJCWZvciAoaSA9IDA7IGkgPCBw aXBlLT5uX3BsYW5lczsgaSsrKSB7CisJCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxh bmVzW2ldOworCQkJaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0 LCByZXEpOworCQl9CisKKwl9CisKKwlyZXQgPSBkcm1Nb2RlQXRvbWljQ29tbWl0KGRpc3BsYXkt PmRybV9mZCwgcmVxLCAwLCBOVUxMKTsKKwlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOworCXJldHVy biByZXQ7CisKK30KIC8qCiAgKiBDb21taXQgYWxsIHBsYW5lIGNoYW5nZXMgYWNyb3NzIGFsbCBv dXRwdXRzIG9mIHRoZSBkaXNwbGF5LgogICoKQEAgLTE2NzQsNiArMTk4MiwxNCBAQCBzdGF0aWMg aW50IGRvX2Rpc3BsYXlfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCiAKIAlpZ3RfZGlz cGxheV9yZWZyZXNoKGRpc3BsYXkpOwogCisJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykgeworCisJ CXJldCA9IGlndF9hdG9taWNfY29tbWl0KGRpc3BsYXkpOworCQlDSEVDS19SRVRVUk4ocmV0LCBm YWlsX29uX2Vycm9yKTsKKwkJcmV0dXJuIDA7CisKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgZGlz cGxheS0+bl9vdXRwdXRzOyBpKyspIHsKIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxh eS0+b3V0cHV0c1tpXTsKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21z LmgKaW5kZXggM2Y3YWRkNS4uNzY4YTVlMyAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysg Yi9saWIvaWd0X2ttcy5oCkBAIC0xMDYsMTEgKzEwNiwyOCBAQCBpbnQga21zdGVzdF9nZXRfcGlw ZV9mcm9tX2NydGNfaWQoaW50IGZkLCBpbnQgY3J0Y19pZCk7CiB2b2lkIGttc3Rlc3Rfc2V0X3Z0 X2dyYXBoaWNzX21vZGUodm9pZCk7CiB2b2lkIGttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKHZvaWQp OwogCitlbnVtIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfQ1JUQ19C QUNLR1JPVU5EID0gMCwKKyAgICAgICBJR1RfTlVNX0NSVENfUFJPUFMKK307CisKK2VudW0gaWd0 X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcyB7CisgICAgICAgSUdUX0NPTk5FQ1RPUl9TQ0FM SU5HX01PREUgPSAwLAorICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKKyAgICAgICBJR1RfTlVN X0NPTk5FQ1RPUl9QUk9QUworfTsKKwogc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7 CiAJZHJtTW9kZUNydGMgKmNydGM7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwogCWRy bU1vZGVFbmNvZGVyICplbmNvZGVyOwogCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0X21vZGU7CisJ dWludDY0X3QgY29ubmVjdG9yX3NjYWxpbmdfbW9kZTsKKwlib29sIGNvbm5lY3Rvcl9zY2FsaW5n X21vZGVfY2hhbmdlZDsKKwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKKwlib29sIGNvbm5lY3Rv cl9kcG1zX2NoYW5nZWQ7CisJdWludDMyX3QgYXRvbWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRD X1BST1BTXTsKKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9OVU1fQ09OTkVD VE9SX1BST1BTXTsKIAlpbnQgY3J0Y19pZHg7CiAJaW50IHBpcGU7CiB9OwpAQCAtMTU5LDkgKzE3 NiwyOCBAQCB2b2lkIGttc3Rlc3RfdW5zZXRfYWxsX2NydGNzKGludCBkcm1fZmQsIGRybU1vZGVS ZXNQdHIgcmVzb3VyY2VzKTsKIGVudW0gaWd0X2NvbW1pdF9zdHlsZSB7CiAJQ09NTUlUX0xFR0FD WSA9IDAsCiAJQ09NTUlUX1VOSVZFUlNBTCwKLQkvKiBXZSdsbCBhZGQgYXRvbWljIGhlcmUgZXZl bnR1YWxseS4gKi8KKwlDT01NSVRfQVRPTUlDLAogfTsKIAorZW51bSBpZ3RfYXRvbWljX3BsYW5l X3Byb3BlcnRpZXMgeworICAgICAgIElHVF9QTEFORV9TUkNfWCA9IDAsCisgICAgICAgSUdUX1BM QU5FX1NSQ19ZLAorICAgICAgIElHVF9QTEFORV9TUkNfVywKKyAgICAgICBJR1RfUExBTkVfU1JD X0gsCisKKyAgICAgICBJR1RfUExBTkVfQ1JUQ19YLAorICAgICAgIElHVF9QTEFORV9DUlRDX1ks CisgICAgICAgSUdUX1BMQU5FX0NSVENfVywKKyAgICAgICBJR1RfUExBTkVfQ1JUQ19ILAorCisg ICAgICAgSUdUX1BMQU5FX0ZCX0lELAorICAgICAgIElHVF9QTEFORV9DUlRDX0lELAorICAgICAg IElHVF9QTEFORV9UWVBFLAorICAgICAgIElHVF9QTEFORV9ST1RBVElPTiwKKyAgICAgICBJR1Rf TlVNX1BMQU5FX1BST1BTCit9OworCisKIHR5cGVkZWYgc3RydWN0IGlndF9kaXNwbGF5IGlndF9k aXNwbGF5X3Q7CiB0eXBlZGVmIHN0cnVjdCBpZ3RfcGlwZSBpZ3RfcGlwZV90OwogdHlwZWRlZiB1 aW50MzJfdCBpZ3RfZml4ZWRfdDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwpAQCAtMjAzLDYg KzIzOSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIAkvKiBwYW5uaW5nIG9mZnNldCB3aXRoaW4gdGhl IGZiICovCiAJdW5zaWduZWQgaW50IHBhbl94LCBwYW5feTsKIAlpZ3Rfcm90YXRpb25fdCByb3Rh dGlvbjsKKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFORV9QUk9QU107 CiB9IGlndF9wbGFuZV90OwogCiBzdHJ1Y3QgaWd0X3BpcGUgewpAQCAtMjg0LDYgKzMyMSwzOCBA QCB2b2lkIGlndF93YWl0X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwog CiAjZGVmaW5lIElHVF9GSVhFRChpLGYpCSgoaSkgPDwgMTYgfCAoZikpCiAKKy8qKgorICogaWd0 X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXE6CisgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9k ZUF0b21pY1JlcQorICogQHBsYW5lOiBBIHBvaW50ZXIgaWd0X3BsYW5lX3QKKyAqIEBwcm9wOiBv bmUgb2YgaWd0X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0 byBhZGQKKyAqLworI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBs YW5lLCBwcm9wLCB2YWx1ZSkgXAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFBy b3BlcnR5KHJlcSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsXAorCQkJCQkJICBwbGFuZS0+ YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCisKKy8qKgorICogaWd0X2F0b21pY19w b3B1bGF0ZV9jcnRjX3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVx CisgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9mIGln dF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAq LworI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9w LCB2YWx1ZSkgXAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJl cSwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCxcCisJCQkJCQkgIG91dHB1dC0+Y29uZmln LmF0b21pY19wcm9wc19jcnRjW3Byb3BdLCB2YWx1ZSkpCisvKioKKyAqIGlndF9hdG9taWNfcG9w dWxhdGVfY29ubmVjdG9yX3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWlj UmVxCisgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90CisgKiBAcHJvcDogb25lIG9m IGlndF9hdG9taWNfY29ubmVjdG9yX3Byb3BlcnRpZXMKKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRv IGFkZAorICovCisjZGVmaW5lIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEs IG91dHB1dCwgcHJvcCwgdmFsdWUpIFwKKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNB ZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLFwK KwkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9wXSwgdmFs dWUpKQorCiB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKIHZvaWQgaWd0X3Jlc2V0 X2Nvbm5lY3RvcnModm9pZCk7CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=