From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mayuresh Gharpure Subject: [PATCH] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2() Date: Thu, 10 Mar 2016 22:50:32 +0530 Message-ID: <1457630432-18402-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 1DE6A6E10F for ; Thu, 10 Mar 2016 17:20:26 +0000 (UTC) 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 Q28tQXV0aG9yIDogTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRAaW50ZWwuY29tPgpDby1BdXRo b3IgOiBQcmF0aWsgVmlzaHdha2FybWEgPHByYXRpay52aXNod2FrYXJtYUBpbnRlbC5jb20+CgpT byBmYXIgd2UgaGF2ZSBoYWQgb25seSB0d28gY29tbWl0IHN0eWxlcywgQ09NTUlUX0xFR0FDWQph bmQgQ09NTUlUX1VOSVZFUlNBTC4gVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgY29tbWl0IHN0eWxl CkNPTU1JVF9BVE9NSUMgd2hpY2ggbWFrZXMgdXNlIG9mIGRybU1vZGVBdG9taWNDb21taXQoKQoK djI6IChNYXJpdXMpCglpKVNldCBDUlRDX0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5l CglpaSlNb2RpZmllZCB0aGUgbG9nIG1lc3NhZ2UgaW4gaWd0X2F0b21pY19wcmVwYXJlX3BsYW5l X2NvbW1pdAoJaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcxOTQ1LwoK djM6IChNYXJpdXMpU2V0IEZCX0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5lCglodHRw czovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzIxNzkvCgp2NDogKE1hYXJ0ZW4p IENvcnJlY3RlZCB0aGUgdHlwbyBpbiBjb21taXQgbWVzc2FnZQoJaHR0cHM6Ly9wYXRjaHdvcmsu ZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcyNTk4LwoKdjU6IEFkZGVkIGNoZWNrIGZvciBEUk1fQ0xJ RU5UX0NBUF9BVE9NSUMgaW4gaWd0X2Rpc3BsYXlfaW5pdAogICAgKE1hcml1cykKCWkpUmVtb3Zl ZCB1bnVzZWQgcHJvcHMgZnJvbSBpZ3RfZGlzcGxheV9pbml0CglpaSlSZW1vdmVkIHVudXNlZCBy ZXQuIENoYW5nZWQgZnVuY3Rpb24gdG8gdm9pZAoJaWlpKURlY2xhcmUgdGhlIHZhcmlhYmxlIGJl Zm9yZSBjaGVja2luZyBpZiB3ZSBoYXZlCglEUk1fQ0xJRU5UX0NBUF9BVE9NSUMuCglodHRwczov L3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzM1MDUvCgp2NjogKEphbmkpIENvcnJl Y3RlZCB0eXBvIGluIGNvbW1pdCBtZXNzYWdlCgp2NzogQWRkZWQgaXNfYXRvbWljIGNoZWNrIGZv ciBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMgaW4KCWlndF9kaXNwbGF5X2luaXQgYW5kIGlndF9hdG9t aWNfY29tbWl0Cgp2ODogKE1hdHRoZXcgQXVsZCkgUmVwbGFjZWQgZm9yIGxvb3BzIGJ5IGZvcl9l YWNoX2Nvbm5lY3RlZF9vdXRwdXQgYW5kCglmb3JfZWFjaF9wbGFuZV9vbl9waXBlCiAgICAoTGlv bmVsKSBQb3B1bGF0ZSBwcm9wZXJ0aWVzIG9ubHkgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkCiAg ICAJUmVtb3ZlIHRoZSByZXNldHRpbmcgb2YgdmFsdWVzIGluIGRpc2FibGUgY2FzZQoJTm90ZSA6 IEkndmUgdXNlZCBNYWFydGVuJ3MgZGlmZiBwYXRjaAoKdjk6IChMaW9uZWwpIEFkZGVkIHJlc2V0 dGluZyBvZiByb3RhdGlvbiBwcm9wZXJ0eQoKU2lnbmVkLW9mZi1ieTogTWF5dXJlc2ggR2hhcnB1 cmUgPG1heXVyZXNoLnMuZ2hhcnB1cmVAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBQcmF0aWsg VmlzaHdha2FybWEgPHByYXRpay52aXNod2FrYXJtYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJwdXJlQGludGVsLmNvbT4KLS0tCiBs aWIvaWd0X2ttcy5jIHwgMjkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIGxpYi9pZ3Rfa21zLmggfCAgNzIgKysrKysrKysrKysrKyst CiAyIGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmluZGV4IDlmMThhZWYuLmRh N2FkM2EgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAt MTQ1LDYgKzE0NSwxMjAgQEAgY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9l ZGlkKHZvaWQpCiAgKgogICogUmV0dXJuczogYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2sKICAqLwor c3RhdGljIGNvbnN0IGNoYXIgKmlndF9wbGFuZV9wcm9wX25hbWVzW0lHVF9OVU1fUExBTkVfUFJP UFNdID0geworCSJTUkNfWCIsCisJIlNSQ19ZIiwKKwkiU1JDX1ciLAorCSJTUkNfSCIsCisJIkNS VENfWCIsCisJIkNSVENfWSIsCisJIkNSVENfVyIsCisJIkNSVENfSCIsCisJIkZCX0lEIiwKKwki Q1JUQ19JRCIsCisJInR5cGUiLAorCSJyb3RhdGlvbiIKK307CisKK3N0YXRpYyBjb25zdCBjaGFy ICppZ3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7CisJImJhY2tncm91 bmRfY29sb3IiCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25h bWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXSA9IHsKKwkic2NhbGluZyBtb2RlIiwKKwkiRFBN UyIKK307CisKKy8qCisgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcmllcyBzcGVjaWZpZWQgaW4g cHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRvCisgKiBwbGFuZS0+YXRvbWljX3Byb3BzX3Bs YW5lLgorICovCitzdGF0aWMgdm9pZAoraWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKKwkJCWludCBudW1fcHJvcHMs IGNvbnN0IGNoYXIgKipwcm9wX25hbWVzKQoreworCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRy IHByb3BzOworCWludCBpLCBqLCBmZDsKKworCWZkID0gZGlzcGxheS0+ZHJtX2ZkOworCisJcHJv cHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgcGxhbmUtPmRybV9wbGFuZS0+cGxh bmVfaWQsIERSTV9NT0RFX09CSkVDVF9QTEFORSk7CisJaWd0X2Fzc2VydChwcm9wcyk7CisKKwlm b3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsKKwkJZHJtTW9kZVByb3Bl cnR5UHRyIHByb3AgPQorCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0p OworCisJCWZvciAoaiA9IDA7IGogPCBudW1fcHJvcHM7IGorKykgeworCQkJaWYgKHN0cmNtcChw cm9wLT5uYW1lLCBwcm9wX25hbWVzW2pdKSAhPSAwKQorCQkJCWNvbnRpbnVlOworCisJCQlwbGFu ZS0+YXRvbWljX3Byb3BzX3BsYW5lW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJYnJlYWs7CisJ CX0KKworCQlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOworCX0KKworCWRybU1vZGVGcmVlT2Jq ZWN0UHJvcGVydGllcyhwcm9wcyk7Cit9CisKKy8qCisgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3Bl cmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRvCisgKiBjb25m aWctPmF0b21pY19wcm9wc19jcnRjIGFuZCBjb25maWctPmF0b21pY19wcm9wc19jb25uZWN0b3Iu CisgKi8KK3N0YXRpYyB2b2lkCitpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQsCisJCQlpbnQgbnVtX2NydGNfcHJvcHMsIGNv bnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMsCisJCQlpbnQgbnVtX2Nvbm5lY3Rvcl9wcm9wcywg Y29uc3QgY2hhciAqKmNvbm5fcHJvcF9uYW1lcykKK3sKKwlkcm1Nb2RlT2JqZWN0UHJvcGVydGll c1B0ciBwcm9wczsKKwlpbnQgaSwgaiwgZmQ7CisKKwlmZCA9IGRpc3BsYXktPmRybV9mZDsKKwor CXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmlnLmNy dGMtPmNydGNfaWQsIERSTV9NT0RFX09CSkVDVF9DUlRDKTsKKwlpZ3RfYXNzZXJ0KHByb3BzKTsK KworCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgeworCQlkcm1Nb2Rl UHJvcGVydHlQdHIgcHJvcCA9CisJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9w c1tpXSk7CisKKwkJZm9yIChqID0gMDsgaiA8IG51bV9jcnRjX3Byb3BzOyBqKyspIHsKKwkJCWlm IChzdHJjbXAocHJvcC0+bmFtZSwgY3J0Y19wcm9wX25hbWVzW2pdKSAhPSAwKQorCQkJCWNvbnRp bnVlOworCisJCQlvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1tqXSA9IHByb3BzLT5w cm9wc1tpXTsKKwkJCWJyZWFrOworCQl9CisKKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsK Kwl9CisKKwlkcm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMocHJvcHMpOworCXByb3BzID0gTlVM TDsKKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNvbmZp Zy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCwgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUik7CisJ aWd0X2Fzc2VydChwcm9wcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3Bz OyBpKyspIHsKKwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQorCQkJZHJtTW9kZUdldFByb3Bl cnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOworCisJCWZvciAoaiA9IDA7IGogPCBudW1fY29ubmVj dG9yX3Byb3BzOyBqKyspIHsKKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwgY29ubl9wcm9wX25h bWVzW2pdKSAhPSAwKQorCQkJCWNvbnRpbnVlOworCisJCQlvdXRwdXQtPmNvbmZpZy5hdG9taWNf cHJvcHNfY29ubmVjdG9yW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJYnJlYWs7CisJCX0KKwor CQlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOworCX0KKworCWRybU1vZGVGcmVlT2JqZWN0UHJv cGVydGllcyhwcm9wcyk7CisKK30KKwogY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRf YWx0X2VkaWQodm9pZCkKIHsKIAl1cGRhdGVfZWRpZF9jc3VtKGFsdF9lZGlkKTsKQEAgLTEwMDAs NiArMTExNCw4IEBAIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfcmVmcmVzaChpZ3Rfb3V0cHV0X3Qg Km91dHB1dCkKIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwog CiAJZGlzcGxheS0+cGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlwZTsKKwlp Z3RfYXRvbWljX2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENfUFJPUFMs IGlndF9jcnRjX3Byb3BfbmFtZXMsCisJCUlHVF9OVU1fQ09OTkVDVE9SX1BST1BTLCBpZ3RfY29u bmVjdG9yX3Byb3BfbmFtZXMpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTA2OSw2ICsxMTg1LDcg QEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1f ZmQpCiAJZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwogCWRybU1vZGVQbGFuZVJlcyAqcGxhbmVfcmVz b3VyY2VzOwogCWludCBpOworCWludCBpc19hdG9taWMgPSAwOwogCiAJbWVtc2V0KGRpc3BsYXks IDAsIHNpemVvZihpZ3RfZGlzcGxheV90KSk7CiAKQEAgLTEwODYsNiArMTIwMyw3IEBAIHZvaWQg aWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCWRp c3BsYXktPm5fcGlwZXMgPSByZXNvdXJjZXMtPmNvdW50X2NydGNzOwogCiAJZHJtU2V0Q2xpZW50 Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfVU5JVkVSU0FMX1BMQU5FUywgMSk7CisJaXNfYXRv bWljID0gZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLCAxKTsK IAlwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJt X2ZkKTsKIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jlc291cmNlcyk7CiAKQEAgLTExNDIsNiArMTI2MCwx MCBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRy bV9mZCkKIAogCQkJcGxhbmUtPnBpcGUgPSBwaXBlOwogCQkJcGxhbmUtPmRybV9wbGFuZSA9IGRy bV9wbGFuZTsKKwkJCWlmIChpc19hdG9taWMgPT0gMCkgeworCQkJCWRpc3BsYXktPmlzX2F0b21p YyA9IDE7CisJCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJ R1RfTlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7CisJCQl9CiAKIAkJCWdl dF9wbGFuZV9wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIGRybV9wbGFuZS0+cGxhbmVfaWQsCiAJ CQkJCSAgICJyb3RhdGlvbiIsCkBAIC0xMzk3LDYgKzE1MTksODAgQEAgc3RhdGljIHVpbnQzMl90 IGlndF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCiAJaWd0X2Fz c2VydChyID09IDApOwlcCiB9CiAKKworCisKKy8qCisgKiBBZGQgcG9zaXRpb24gYW5kIGZiIGNo YW5nZXMgb2YgYSBwbGFuZSB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAorICovCitzdGF0aWMg dm9pZAoraWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUs IGlndF9vdXRwdXRfdCAqb3V0cHV0LAorCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCWln dF9kaXNwbGF5X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7CisJdWludDMyX3QgZmJfaWQs IGNydGNfaWQ7CisKKwlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOworCisJLyogaXQncyBh biBlcnJvciB0byB0cnkgYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSAqLworCWlndF9hc3NlcnQoaWd0 X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8fAorCQkJIXBsYW5lLT5yb3RhdGlvbl9j aGFuZ2VkKTsKKworCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFuZSk7CisJY3J0Y19p ZCA9IG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7CisKKwlMT0coZGlzcGxheSwKKwkgICAg IiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldVxuIiwKKwkgICAgaWd0X291 dHB1dF9uYW1lKG91dHB1dCksCisJICAgIGttc3Rlc3RfcGlwZV9uYW1lKG91dHB1dC0+Y29uZmln LnBpcGUpLAorCSAgICBwbGFuZS0+aW5kZXgsCisJICAgIGZiX2lkKTsKKworCWlmIChwbGFuZS0+ ZmJfY2hhbmdlZCkgeworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBJR1RfUExBTkVfQ1JUQ19JRCwgZmJfaWQgPyBjcnRjX2lkIDogMCk7CisJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOwor CX0KKworCWlmIChwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCB8fCBwbGFuZS0+c2l6ZV9jaGFuZ2Vk KSB7CisJCXVpbnQzMl90IHNyY194ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3gsIDApOyAv KiBzcmNfeCAqLworCQl1aW50MzJfdCBzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY195 LCAwKTsgLyogc3JjX3kgKi8KKwkJdWludDMyX3Qgc3JjX3cgPSBJR1RfRklYRUQocGxhbmUtPmZi LT5zcmNfdywgMCk7IC8qIHNyY193ICovCisJCXVpbnQzMl90IHNyY19oID0gSUdUX0ZJWEVEKHBs YW5lLT5mYi0+c3JjX2gsIDApOyAvKiBzcmNfaCAqLworCQlpbnQzMl90IGNydGNfeCA9IHBsYW5l LT5jcnRjX3g7CisJCWludDMyX3QgY3J0Y195ID0gcGxhbmUtPmNydGNfeTsKKwkJdWludDMyX3Qg Y3J0Y193ID0gcGxhbmUtPmNydGNfdzsKKwkJdWludDMyX3QgY3J0Y19oID0gcGxhbmUtPmNydGNf aDsKKworCQlMT0coZGlzcGxheSwKKwkJInNyYyA9ICglZCwgJWQpICV1IHggJXUgIgorCQkiZHN0 ID0gKCVkLCAlZCkgJXUgeCAldVxuIiwKKwkJc3JjX3ggPj4gMTYsIHNyY195ID4+IDE2LCBzcmNf dyA+PiAxNiwgc3JjX2ggPj4gMTYsCisJCWNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7 CisKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5F X1NSQ19YLCBzcmNfeCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9TUkNfWSwgc3JjX3kpOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5l X3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIHNyY193KTsKKwkJaWd0X2F0b21pY19w b3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBzcmNfaCk7CisK KwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NS VENfWCwgY3J0Y194KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFu ZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgY3J0Y193KTsKKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfSCwgY3J0Y19o KTsKKwl9CisKKwlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCisJCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5l LT5yb3RhdGlvbik7CisKKwlwbGFuZS0+ZmJfY2hhbmdlZCA9IGZhbHNlOworCXBsYW5lLT5wb3Np dGlvbl9jaGFuZ2VkID0gZmFsc2U7CisJcGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOworCXBs YW5lLT5yb3RhdGlvbl9jaGFuZ2VkID0gZmFsc2U7Cit9CisKKworCiAvKgogICogQ29tbWl0IHBv c2l0aW9uIGFuZCBmYiBjaGFuZ2VzIHRvIGEgRFJNIHBsYW5lIHZpYSB0aGUgU2V0UGxhbmUgaW9j dGw7IGlmIHRoZQogICogRFJNIGNhbGwgdG8gcHJvZ3JhbSB0aGUgcGxhbmUgZmFpbHMsIHdlJ2xs IGVpdGhlciBmYWlsIGltbWVkaWF0ZWx5IChmb3IKQEAgLTE2NDksNyArMTg0NSw3IEBAIHN0YXRp YyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCXJldHVybiBpZ3Rf cHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBvdXRwdXQsCiAJCQkJCQkgICAgICAg ZmFpbF9vbl9lcnJvcik7CiAJfSBlbHNlIHsKLQkJcmV0dXJuIGlndF9kcm1fcGxhbmVfY29tbWl0 KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOworCQkJcmV0dXJuIGlndF9kcm1fcGxhbmVf Y29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwogCX0KIH0KIApAQCAtMTcwMyw2 ICsxODk5LDkwIEBAIHN0YXRpYyBpbnQgaWd0X291dHB1dF9jb21taXQoaWd0X291dHB1dF90ICpv dXRwdXQsCiAJcmV0dXJuIDA7CiB9CiAKKworLyoKKyAqIEFkZCBjcnRjIHByb3BlcnR5IGNoYW5n ZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLworc3RhdGljIHZvaWQgaWd0X2F0b21p Y19wcmVwYXJlX2NydGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2RlQXRvbWlj UmVxICpyZXEpCit7CisKKwlpZ3RfcGlwZV90ICpwaXBlX29iaiA9IGlndF9vdXRwdXRfZ2V0X2Ry aXZpbmdfcGlwZShvdXRwdXQpOworCisJaWYgKHBpcGVfb2JqLT5iYWNrZ3JvdW5kX2NoYW5nZWQp CisJCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBvdXRwdXQsIElHVF9DUlRDX0JB Q0tHUk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKKworCS8qCisJICoJVE9ETzogQWRkIGFs bCBjcnRjIGxldmVsIHByb3BlcnRpZXMgaGVyZQorCSAqLworCit9CisKKy8qCisgKiBBZGQgY29u bmVjdG9yIHByb3BlcnR5IGNoYW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLwor c3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2Nvbm5lY3Rvcl9jb21taXQoaWd0X291dHB1 dF90ICpvdXRwdXQsIGRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCXN0cnVjdCBrbXN0ZXN0 X2Nvbm5lY3Rvcl9jb25maWcgKmNvbmZpZyA9ICZvdXRwdXQtPmNvbmZpZzsKKworCWlmIChjb25m aWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZCkKKwkJaWd0X2F0b21pY19wb3B1bGF0 ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX1NDQUxJTkdfTU9ERSwg Y29uZmlnLT5jb25uZWN0b3Jfc2NhbGluZ19tb2RlKTsKKworCWlmIChjb25maWctPmNvbm5lY3Rv cl9kcG1zX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEs IG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9EUE1TLCBjb25maWctPmNvbm5lY3Rvcl9kcG1zKTsKKwkv KgorCSAqCVRPRE86IEFkZCBhbGwgb3RoZXIgY29ubmVjdG9yIGxldmVsIHByb3BlcnRpZXMgaGVy ZQorCSAqLworCit9CisKKy8qCisgKiBDb21taXQgYWxsIHRoZSBjaGFuZ2VzIG9mIGFsbCB0aGUg cGxhbmVzLGNydGNzLCBjb25uZWN0b3JzCisgKiBhdG9taWNhbGx5IHVzaW5nIGRybU1vZGVBdG9t aWNDb21taXQoKQorICovCitzdGF0aWMgaW50IGlndF9hdG9taWNfY29tbWl0KGlndF9kaXNwbGF5 X3QgKmRpc3BsYXkpCit7CisKKwlpbnQgcmV0ID0gMDsKKwlpbnQgaSA9IDA7CisJZHJtTW9kZUF0 b21pY1JlcSAqcmVxOworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlmIChkaXNwbGF5LT5pc19h dG9taWMgIT0gMSkKKwkJcmV0dXJuIC0xOworCXJlcSA9IGRybU1vZGVBdG9taWNBbGxvYygpOwor CWRybU1vZGVBdG9taWNTZXRDdXJzb3IocmVxLCAwKTsKKworCWZvcl9lYWNoX2Nvbm5lY3RlZF9v dXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7CisJCWlndF9waXBlX3QgKnBpcGVfb2JqOworCQlpZ3Rf cGxhbmVfdCAqcGxhbmU7CisJCWVudW0gcGlwZSBwaXBlOworCisJCS8qCisJCSAqIEFkZCBDUlRD IFByb3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21pY19wcmVw YXJlX2NydGNfY29tbWl0KG91dHB1dCwgcmVxKTsKKworCQkvKgorCQkgKiBBZGQgQ29ubmVjdG9y IFByb3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAorCQkgKi8KKwkJaWd0X2F0b21pY19wcmVw YXJlX2Nvbm5lY3Rvcl9jb21taXQob3V0cHV0LCByZXEpOworCisKKwkJcGlwZV9vYmogPSBpZ3Rf b3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKKworCQlwaXBlID0gcGlwZV9vYmotPnBp cGU7CisKKwkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewor CQkJaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCByZXEpOwor CQl9CisKKwl9CisKKwlyZXQgPSBkcm1Nb2RlQXRvbWljQ29tbWl0KGRpc3BsYXktPmRybV9mZCwg cmVxLCAwLCBOVUxMKTsKKwlkcm1Nb2RlQXRvbWljRnJlZShyZXEpOworCXJldHVybiByZXQ7CisK K30KIC8qCiAgKiBDb21taXQgYWxsIHBsYW5lIGNoYW5nZXMgYWNyb3NzIGFsbCBvdXRwdXRzIG9m IHRoZSBkaXNwbGF5LgogICoKQEAgLTE3MjIsNiArMjAwMiwxNCBAQCBzdGF0aWMgaW50IGRvX2Rp c3BsYXlfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCiAKIAlpZ3RfZGlzcGxheV9yZWZy ZXNoKGRpc3BsYXkpOwogCisJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykgeworCisJCXJldCA9IGln dF9hdG9taWNfY29tbWl0KGRpc3BsYXkpOworCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vy cm9yKTsKKwkJcmV0dXJuIDA7CisKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9v dXRwdXRzOyBpKyspIHsKIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0 c1tpXTsKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXgg NTc0NGVkMC4uZDZlMmYxMiAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0 X2ttcy5oCkBAIC0xMDYsMTEgKzEwNiwyOCBAQCBpbnQga21zdGVzdF9nZXRfcGlwZV9mcm9tX2Ny dGNfaWQoaW50IGZkLCBpbnQgY3J0Y19pZCk7CiB2b2lkIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNz X21vZGUodm9pZCk7CiB2b2lkIGttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKHZvaWQpOwogCitlbnVt IGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfQ1JUQ19CQUNLR1JPVU5E ID0gMCwKKyAgICAgICBJR1RfTlVNX0NSVENfUFJPUFMKK307CisKK2VudW0gaWd0X2F0b21pY19j b25uZWN0b3JfcHJvcGVydGllcyB7CisgICAgICAgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUg PSAwLAorICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKKyAgICAgICBJR1RfTlVNX0NPTk5FQ1RP Ul9QUk9QUworfTsKKwogc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7CiAJZHJtTW9k ZUNydGMgKmNydGM7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwogCWRybU1vZGVFbmNv ZGVyICplbmNvZGVyOwogCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0X21vZGU7CisJdWludDY0X3Qg Y29ubmVjdG9yX3NjYWxpbmdfbW9kZTsKKwlib29sIGNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hh bmdlZDsKKwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKKwlib29sIGNvbm5lY3Rvcl9kcG1zX2No YW5nZWQ7CisJdWludDMyX3QgYXRvbWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsK Kwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BT XTsKIAlpbnQgY3J0Y19pZHg7CiAJaW50IHBpcGU7CiB9OwpAQCAtMTYzLDkgKzE4MCwyOCBAQCB1 aW50MzJfdCBrbXN0ZXN0X2ZpbmRfY3J0Y19mb3JfY29ubmVjdG9yKGludCBmZCwgZHJtTW9kZVJl cyAqcmVzLAogZW51bSBpZ3RfY29tbWl0X3N0eWxlIHsKIAlDT01NSVRfTEVHQUNZID0gMCwKIAlD T01NSVRfVU5JVkVSU0FMLAotCS8qIFdlJ2xsIGFkZCBhdG9taWMgaGVyZSBldmVudHVhbGx5LiAq LworCUNPTU1JVF9BVE9NSUMsCiB9OwogCitlbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGll cyB7CisgICAgICAgSUdUX1BMQU5FX1NSQ19YID0gMCwKKyAgICAgICBJR1RfUExBTkVfU1JDX1ks CisgICAgICAgSUdUX1BMQU5FX1NSQ19XLAorICAgICAgIElHVF9QTEFORV9TUkNfSCwKKworICAg ICAgIElHVF9QTEFORV9DUlRDX1gsCisgICAgICAgSUdUX1BMQU5FX0NSVENfWSwKKyAgICAgICBJ R1RfUExBTkVfQ1JUQ19XLAorICAgICAgIElHVF9QTEFORV9DUlRDX0gsCisKKyAgICAgICBJR1Rf UExBTkVfRkJfSUQsCisgICAgICAgSUdUX1BMQU5FX0NSVENfSUQsCisgICAgICAgSUdUX1BMQU5F X1RZUEUsCisgICAgICAgSUdUX1BMQU5FX1JPVEFUSU9OLAorICAgICAgIElHVF9OVU1fUExBTkVf UFJPUFMKK307CisKKwogdHlwZWRlZiBzdHJ1Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlfdDsK IHR5cGVkZWYgc3RydWN0IGlndF9waXBlIGlndF9waXBlX3Q7CiB0eXBlZGVmIHVpbnQzMl90IGln dF9maXhlZF90OwkJCS8qIDE2LjE2IGZpeGVkIHBvaW50ICovCkBAIC0yMDcsNiArMjQzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgewogCS8qIHBhbm5pbmcgb2Zmc2V0IHdpdGhpbiB0aGUgZmIgKi8KIAl1 bnNpZ25lZCBpbnQgcGFuX3gsIHBhbl95OwogCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOworCXVp bnQzMl90IGF0b21pY19wcm9wc19wbGFuZVtJR1RfTlVNX1BMQU5FX1BST1BTXTsKIH0gaWd0X3Bs YW5lX3Q7CiAKIHN0cnVjdCBpZ3RfcGlwZSB7CkBAIC0yNDIsNiArMjc5LDcgQEAgc3RydWN0IGln dF9kaXNwbGF5IHsKIAlpZ3Rfb3V0cHV0X3QgKm91dHB1dHM7CiAJaWd0X3BpcGVfdCBwaXBlc1tJ OTE1X01BWF9QSVBFU107CiAJYm9vbCBoYXNfdW5pdmVyc2FsX3BsYW5lczsKKwlib29sIGlzX2F0 b21pYzsKIH07CiAKIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5 LCBpbnQgZHJtX2ZkKTsKQEAgLTI4OCw2ICszMjYsMzggQEAgdm9pZCBpZ3Rfd2FpdF9mb3JfdmJs YW5rKGludCBkcm1fZmQsIGVudW0gcGlwZSBwaXBlKTsKIAogI2RlZmluZSBJR1RfRklYRUQoaSxm KQkoKGkpIDw8IDE2IHwgKGYpKQogCisvKioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVf cmVxOgorICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKKyAqIEBwbGFuZTog QSBwb2ludGVyIGlndF9wbGFuZV90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfcGxhbmVf cHJvcGVydGllcworICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCisgKi8KKyNkZWZpbmUgaWd0 X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgcHJvcCwgdmFsdWUpIFwKKwlp Z3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1f cGxhbmUtPnBsYW5lX2lkLFwKKwkJCQkJCSAgcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtwcm9w XSwgdmFsdWUpKQorCisvKioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXE6CisgKiBA cmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQorICogQG91dHB1dDogQSBwb2ludGVy IGlndF9vdXRwdXRfdAorICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGll cworICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCisgKi8KKyNkZWZpbmUgaWd0X2F0b21pY19w b3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwgcHJvcCwgdmFsdWUpIFwKKwlpZ3RfYXNzZXJ0 X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNydGMt PmNydGNfaWQsXAorCQkJCQkJICBvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1twcm9w XSwgdmFsdWUpKQorLyoqCisgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXE6Cisg KiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQorICogQG91dHB1dDogQSBwb2lu dGVyIGlndF9vdXRwdXRfdAorICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2Nvbm5lY3Rvcl9w cm9wZXJ0aWVzCisgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAqLworI2RlZmluZSBpZ3Rf YXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIHByb3AsIHZhbHVlKSBc CisJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQt PmNvbmZpZy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCxcCisJCQkJCQkgIG91dHB1dC0+Y29uZmln LmF0b21pY19wcm9wc19jb25uZWN0b3JbcHJvcF0sIHZhbHVlKSkKKwogdm9pZCBpZ3RfZW5hYmxl X2Nvbm5lY3RvcnModm9pZCk7CiB2b2lkIGlndF9yZXNldF9jb25uZWN0b3JzKHZvaWQpOwogCi0t IAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==