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, 4 Feb 2016 17:23:01 +0530 Message-ID: <1454586781-20583-1-git-send-email-mayuresh.s.gharpure@intel.com> References: <56B0D0E6.4060409@linux.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 58A206E13D for ; Thu, 4 Feb 2016 03:52:25 -0800 (PST) In-Reply-To: <56B0D0E6.4060409@linux.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 SVRfQVRPTUlDIHdoaWNoIG1ha2VzIHVzZSBvZiBkcm1Nb2RlQXRvbWljQ29tbWl0KCkKCnYyIDog KE1hcml1cykKCWkpU2V0IENSVENfSUQgdG8gemVybyB3aGlsZSBkaXNhYmxpbmcgcGxhbmUKCWlp KU1vZGlmaWVkIHRoZSBsb2cgbWVzc2FnZSBpbiBpZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29t bWl0CglodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzE5NDUvCgp2MyA6 IChNYXJpdXMpU2V0IEZCX0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5lCglodHRwczov L3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzIxNzkvCgp2NDogKE1hYXJ0ZW4pIENv cnJlY3RlZCB0aGUgdHlwbyBpbiBjb21taXQgbWVzc2FnZQoKU2lnbmVkLW9mZi1ieTogTWF5dXJl c2ggR2hhcnB1cmUgPG1heXVyZXNoLnMuZ2hhcnB1cmVAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3Rf a21zLmMgfCAzMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQogbGliL2lndF9rbXMuaCB8ICA3MSArKysrKysrKysrKystCiAyIGZpbGVz IGNoYW5nZWQsIDM4NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmluZGV4IDkwYzhkYTcuLjZjMDcyMjMgMTAw NjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMTQ1LDYgKzE0 NSwxMjAgQEAgY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9lZGlkKHZvaWQp CiAgKgogICogUmV0dXJuczogYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2sKICAqLworc3RhdGljIGNv bnN0IGNoYXIgKmlndF9wbGFuZV9wcm9wX25hbWVzW0lHVF9OVU1fUExBTkVfUFJPUFNdID0gewor CSJTUkNfWCIsCisJIlNSQ19ZIiwKKwkiU1JDX1ciLAorCSJTUkNfSCIsCisJIkNSVENfWCIsCisJ IkNSVENfWSIsCisJIkNSVENfVyIsCisJIkNSVENfSCIsCisJIkZCX0lEIiwKKwkiQ1JUQ19JRCIs CisJInR5cGUiLAorCSJyb3RhdGlvbiIKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICppZ3RfY3J0 Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7CisJImJhY2tncm91bmRfY29sb3Ii Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9O VU1fQ09OTkVDVE9SX1BST1BTXSA9IHsKKwkic2NhbGluZyBtb2RlIiwKKwkiRFBNUyIKK307CisK Ky8qCisgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFt ZSBhbmQgc3RvcmUgdGhlbSBpbnRvCisgKiBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgorICov CitzdGF0aWMgdm9pZAoraWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKKwkJCWludCBudW1fcHJvcHMsIGNvbnN0IGNo YXIgKipwcm9wX25hbWVzKQoreworCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwor CWludCBpLCBqLCBmZDsKKworCWZkID0gZGlzcGxheS0+ZHJtX2ZkOworCisJcHJvcHMgPSBkcm1N b2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsIERS TV9NT0RFX09CSkVDVF9QTEFORSk7CisJaWd0X2Fzc2VydChwcm9wcyk7CisKKwlmb3IgKGkgPSAw OyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsKKwkJZHJtTW9kZVByb3BlcnR5UHRyIHBy b3AgPQorCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOworCisJCWZv ciAoaiA9IDA7IGogPCBudW1fcHJvcHM7IGorKykgeworCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1l LCBwcm9wX25hbWVzW2pdKSAhPSAwKQorCQkJCWNvbnRpbnVlOworCisJCQlwbGFuZS0+YXRvbWlj X3Byb3BzX3BsYW5lW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJYnJlYWs7CisJCX0KKworCQlk cm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOworCX0KKworCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVy dGllcyhwcm9wcyk7Cit9CisKKy8qCisgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcmllcyBzcGVj aWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRvCisgKiBjb25maWctPmF0b21p Y19wcm9wc19jcnRjIGFuZCBjb25maWctPmF0b21pY19wcm9wc19jb25uZWN0b3IuCisgKi8KK3N0 YXRpYyB2b2lkCitpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg aWd0X291dHB1dF90ICpvdXRwdXQsCisJCQlpbnQgbnVtX2NydGNfcHJvcHMsIGNvbnN0IGNoYXIg KipjcnRjX3Byb3BfbmFtZXMsCisJCQlpbnQgbnVtX2Nvbm5lY3Rvcl9wcm9wcywgY29uc3QgY2hh ciAqKmNvbm5fcHJvcF9uYW1lcykKK3sKKwlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9w czsKKwlpbnQgaSwgaiwgZmQ7CisKKwlmZCA9IGRpc3BsYXktPmRybV9mZDsKKworCXByb3BzID0g ZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNf aWQsIERSTV9NT0RFX09CSkVDVF9DUlRDKTsKKwlpZ3RfYXNzZXJ0KHByb3BzKTsKKworCWZvciAo aSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgeworCQlkcm1Nb2RlUHJvcGVydHlQ dHIgcHJvcCA9CisJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9wc1tpXSk7CisK KwkJZm9yIChqID0gMDsgaiA8IG51bV9jcnRjX3Byb3BzOyBqKyspIHsKKwkJCWlmIChzdHJjbXAo cHJvcC0+bmFtZSwgY3J0Y19wcm9wX25hbWVzW2pdKSAhPSAwKQorCQkJCWNvbnRpbnVlOworCisJ CQlvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1tqXSA9IHByb3BzLT5wcm9wc1tpXTsK KwkJCWJyZWFrOworCQl9CisKKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwl9CisKKwlk cm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMocHJvcHMpOworCXByb3BzID0gTlVMTDsKKwlwcm9w cyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNvbmZpZy5jb25uZWN0 b3ItPmNvbm5lY3Rvcl9pZCwgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUik7CisJaWd0X2Fzc2Vy dChwcm9wcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsK KwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQorCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBw cm9wcy0+cHJvcHNbaV0pOworCisJCWZvciAoaiA9IDA7IGogPCBudW1fY29ubmVjdG9yX3Byb3Bz OyBqKyspIHsKKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwgY29ubl9wcm9wX25hbWVzW2pdKSAh PSAwKQorCQkJCWNvbnRpbnVlOworCisJCQlvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29u bmVjdG9yW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJYnJlYWs7CisJCX0KKworCQlkcm1Nb2Rl RnJlZVByb3BlcnR5KHByb3ApOworCX0KKworCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVydGllcyhw cm9wcyk7CisKK30KKwogY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYWx0X2VkaWQo dm9pZCkKIHsKIAl1cGRhdGVfZWRpZF9jc3VtKGFsdF9lZGlkKTsKQEAgLTk1Miw2ICsxMDY2LDgg QEAgc3RhdGljIHZvaWQgaWd0X291dHB1dF9yZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0KQog CSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSk7CiAKIAlkaXNwbGF5 LT5waXBlc19pbl91c2UgfD0gMSA8PCBvdXRwdXQtPmNvbmZpZy5waXBlOworCWlndF9hdG9taWNf ZmlsbF9wcm9wcyhkaXNwbGF5LCBvdXRwdXQsIElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNf cHJvcF9uYW1lcywKKwkJSUdUX05VTV9DT05ORUNUT1JfUFJPUFMsIGlndF9jb25uZWN0b3JfcHJv cF9uYW1lcyk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC0xMDIwLDYgKzExMzYsNyBAQCB2b2lkIGln dF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIHsKIAlk cm1Nb2RlUmVzICpyZXNvdXJjZXM7CiAJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJjZXM7 CisJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7CiAJaW50IGk7CiAKIAltZW1zZXQo ZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKQEAgLTEwOTQsNiArMTIxMSw3IEBA IHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2Zk KQogCiAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7CiAJCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtX3Bs YW5lOworCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1Rf TlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7CiAKIAkJCWdldF9wbGFuZV9w cm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIGRybV9wbGFuZS0+cGxhbmVfaWQsCiAJCQkJCSAgICJy b3RhdGlvbiIsCkBAIC0xMzQ5LDYgKzE0NjcsMTEyIEBAIHN0YXRpYyB1aW50MzJfdCBpZ3RfcGxh bmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQogCWlndF9hc3NlcnQociA9 PSAwKTsJXAogfQogCisKKworCisvKgorICogQWRkIHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIG9m IGEgcGxhbmUgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKKyAqLworc3RhdGljIGludAoraWd0 X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9vdXRw dXRfdCAqb3V0cHV0LAorCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCWlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7CisJdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7 CisJaW50IHJldDsKKwl1aW50MzJfdCBzcmNfeDsKKwl1aW50MzJfdCBzcmNfeTsKKwl1aW50MzJf dCBzcmNfdzsKKwl1aW50MzJfdCBzcmNfaDsKKwlpbnQzMl90IGNydGNfeDsKKwlpbnQzMl90IGNy dGNfeTsKKwl1aW50MzJfdCBjcnRjX3c7CisJdWludDMyX3QgY3J0Y19oOworCisJaWd0X2Fzc2Vy dChwbGFuZS0+ZHJtX3BsYW5lKTsKKworCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3Vw cG9ydGVkIGZlYXR1cmUgKi8KKwlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlv bihwbGFuZSkgfHwKKwkJCSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7CisKKwlmYl9pZCA9IGln dF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOworCWNydGNfaWQgPSBvdXRwdXQtPmNvbmZpZy5jcnRj LT5jcnRjX2lkOworCisJaWYgKChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBwbGFuZS0+c2l6ZV9jaGFu Z2VkKSAmJiBmYl9pZCA9PSAwKSB7CisKKwkJTE9HKGRpc3BsYXksCisJCSAgICAiJXM6IHBvcHVs YXRpbmcgcGxhbmUgZGF0YTogcGlwZSAlcywgcGxhbmUgJWQsIGRpc2FibGluZ1xuIiwKKwkJICAg ICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKKwkJICAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRw dXQtPmNvbmZpZy5waXBlKSwKKwkJICAgICBwbGFuZS0+aW5kZXgpOworCisJCS8qIHBvcHVsYXRl IHBsYW5lIHJlcSAqLworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBJR1RfUExBTkVfQ1JUQ19JRCwgMCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9GQl9JRCwgMCk7CisKKwkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBJR1RfRklYRUQoMCwgMCkp OworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVf U1JDX1ksIElHVF9GSVhFRCgwLCAwKSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgSUdUX0ZJWEVEKDAsIDApKTsKKwkJaWd0X2F0 b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBJR1Rf RklYRUQoMCwgMCkpOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9DUlRDX1gsIDApOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCAwKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgMCk7CisJCWlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIDApOwor CisJfSBlbHNlIGlmIChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBwbGFuZS0+cG9zaXRpb25fY2hhbmdl ZCB8fAorCQkJcGxhbmUtPnNpemVfY2hhbmdlZCkgeworCisJCXNyY194ID0gSUdUX0ZJWEVEKHBs YW5lLT5mYi0+c3JjX3gsIDApOyAvKiBzcmNfeCAqLworCQlzcmNfeSA9IElHVF9GSVhFRChwbGFu ZS0+ZmItPnNyY195LCAwKTsgLyogc3JjX3kgKi8KKwkJc3JjX3cgPSBJR1RfRklYRUQocGxhbmUt PmZiLT5zcmNfdywgMCk7IC8qIHNyY193ICovCisJCXNyY19oID0gSUdUX0ZJWEVEKHBsYW5lLT5m Yi0+c3JjX2gsIDApOyAvKiBzcmNfaCAqLworCQljcnRjX3ggPSBwbGFuZS0+Y3J0Y194OworCQlj cnRjX3kgPSBwbGFuZS0+Y3J0Y195OworCQljcnRjX3cgPSBwbGFuZS0+Y3J0Y193OworCQljcnRj X2ggPSBwbGFuZS0+Y3J0Y19oOworCisJCUxPRyhkaXNwbGF5LAorCQkgICAgIiVzOiBwb3B1bGF0 aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgorCQkgICAgIiV1 eCV1IGRzdCA9ICgldSwgJXUpICV1eCV1XG4iLAorCQkgICAgaWd0X291dHB1dF9uYW1lKG91dHB1 dCksCisJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwKKwkJICAg IHBsYW5lLT5pbmRleCwKKwkJICAgIGZiX2lkLAorCQkgICAgc3JjX3ggPj4gMTYsIHNyY195ID4+ IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4gMTYsCisJCSAgICBjcnRjX3gsIGNydGNfeSwgY3J0 Y193LCBjcnRjX2gpOworCisKKwkJLyogcG9wdWxhdGUgcGxhbmUgcmVxICovCisJCWlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0lELCBjcnRj X2lkKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX0ZCX0lELCBmYl9pZCk7CisKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBzcmNfeCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWSwgc3JjX3kpOworCQlpZ3RfYXRv bWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIHNyY193 KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5F X1NSQ19ILCBzcmNfaCk7CisKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBw bGFuZSwgSUdUX1BMQU5FX0NSVENfWCwgY3J0Y194KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKKwkJaWd0X2F0 b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgY3J0 Y193KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX0NSVENfSCwgY3J0Y19oKTsKKworCQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCisJ CQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAorCQkJCUlHVF9QTEFO RV9ST1RBVElPTiwgcGxhbmUtPnJvdGF0aW9uKTsKKworCX0KKworCXBsYW5lLT5mYl9jaGFuZ2Vk ID0gZmFsc2U7CisJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKKwlwbGFuZS0+c2l6 ZV9jaGFuZ2VkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKworCisKIC8qCiAgKiBDb21taXQg cG9zaXRpb24gYW5kIGZiIGNoYW5nZXMgdG8gYSBEUk0gcGxhbmUgdmlhIHRoZSBTZXRQbGFuZSBp b2N0bDsgaWYgdGhlCiAgKiBEUk0gY2FsbCB0byBwcm9ncmFtIHRoZSBwbGFuZSBmYWlscywgd2Un bGwgZWl0aGVyIGZhaWwgaW1tZWRpYXRlbHkgKGZvcgpAQCAtMTYwMSw3ICsxODI1LDcgQEAgc3Rh dGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKIAkJcmV0dXJuIGln dF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdhY3kocGxhbmUsIG91dHB1dCwKIAkJCQkJCSAgICAg ICBmYWlsX29uX2Vycm9yKTsKIAl9IGVsc2UgewotCQlyZXR1cm4gaWd0X2RybV9wbGFuZV9jb21t aXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7CisJCQlyZXR1cm4gaWd0X2RybV9wbGFu ZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7CiAJfQogfQogCkBAIC0xNjU1 LDYgKzE4NzksOTAgQEAgc3RhdGljIGludCBpZ3Rfb3V0cHV0X2NvbW1pdChpZ3Rfb3V0cHV0X3Qg Km91dHB1dCwKIAlyZXR1cm4gMDsKIH0KIAorCisvKgorICogQWRkIGNydGMgcHJvcGVydHkgY2hh bmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAorICovCitzdGF0aWMgdm9pZCBpZ3RfYXRv bWljX3ByZXBhcmVfY3J0Y19jb21taXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVBdG9t aWNSZXEgKnJlcSkKK3sKKworCWlndF9waXBlX3QgKnBpcGVfb2JqID0gaWd0X291dHB1dF9nZXRf ZHJpdmluZ19waXBlKG91dHB1dCk7CisKKwlpZiAocGlwZV9vYmotPmJhY2tncm91bmRfY2hhbmdl ZCkKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwgSUdUX0NSVENf QkFDS0dST1VORCwgcGlwZV9vYmotPmJhY2tncm91bmQpOworCisJLyoKKwkgKglUT0RPOiBBZGQg YWxsIGNydGMgbGV2ZWwgcHJvcGVydGllcyBoZXJlCisJICovCisKK30KKworLyoKKyAqIEFkZCBj b25uZWN0b3IgcHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAorICov CitzdGF0aWMgdm9pZCBpZ3RfYXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQoreworCisJc3RydWN0IGttc3Rl c3RfY29ubmVjdG9yX2NvbmZpZyAqY29uZmlnID0gJm91dHB1dC0+Y29uZmlnOworCisJaWYgKGNv bmZpZy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkKQorCQlpZ3RfYXRvbWljX3BvcHVs YXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNUT1JfU0NBTElOR19NT0RF LCBjb25maWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGUpOworCisJaWYgKGNvbmZpZy0+Y29ubmVj dG9yX2RwbXNfY2hhbmdlZCkKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJl cSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX0RQTVMsIGNvbmZpZy0+Y29ubmVjdG9yX2RwbXMpOwor CS8qCisJICoJVE9ETzogQWRkIGFsbCBvdGhlciBjb25uZWN0b3IgbGV2ZWwgcHJvcGVydGllcyBo ZXJlCisJICovCisKK30KKworLyoKKyAqIENvbW1pdCBhbGwgdGhlIGNoYW5nZXMgb2YgYWxsIHRo ZSBwbGFuZXMsY3J0Y3MsIGNvbm5lY3RvcnMKKyAqIGF0b21pY2FsbHkgdXNpbmcgZHJtTW9kZUF0 b21pY0NvbW1pdCgpCisgKi8KK3N0YXRpYyBpbnQgaWd0X2F0b21pY19jb21taXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSkKK3sKKworCWludCByZXQgPSAwOworCWRybU1vZGVBdG9taWNSZXEgKnJl cTsKKwlkb19vcl9kaWUoZHJtU2V0Q2xpZW50Q2FwKGRpc3BsYXktPmRybV9mZCwgRFJNX0NMSUVO VF9DQVBfQVRPTUlDLCAxKSk7CisJaW50IGkgPSAwOworCisJcmVxID0gZHJtTW9kZUF0b21pY0Fs bG9jKCk7CisJZHJtTW9kZUF0b21pY1NldEN1cnNvcihyZXEsIDApOworCisJZm9yIChpID0gMDsg aSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7CisJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0g JmRpc3BsYXktPm91dHB1dHNbaV07CisJCWlndF9waXBlX3QgKnBpcGU7CisKKwkJaWYgKCFvdXRw dXQtPnZhbGlkKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogQWRkIENSVEMgUHJvcGVydGll cyB0byB0aGUgcHJvcGVydHkgc2V0CisJCSAqLworCQlpZ3RfYXRvbWljX3ByZXBhcmVfY3J0Y19j b21taXQob3V0cHV0LCByZXEpOworCisJCS8qCisJCSAqIEFkZCBDb25uZWN0b3IgUHJvcGVydGll cyB0byB0aGUgcHJvcGVydHkgc2V0CisJCSAqLworCQlpZ3RfYXRvbWljX3ByZXBhcmVfY29ubmVj dG9yX2NvbW1pdChvdXRwdXQsIHJlcSk7CisKKworCQlwaXBlID0gaWd0X291dHB1dF9nZXRfZHJp dmluZ19waXBlKG91dHB1dCk7CisKKwkJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBp KyspIHsKKwkJCWlndF9wbGFuZV90ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07CisJCQlpZ3Rf YXRvbWljX3ByZXBhcmVfcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIHJlcSk7CisJCX0KKwor CX0KKworCXJldCA9IGRybU1vZGVBdG9taWNDb21taXQoZGlzcGxheS0+ZHJtX2ZkLCByZXEsIDAs IE5VTEwpOworCWRybU1vZGVBdG9taWNGcmVlKHJlcSk7CisJcmV0dXJuIHJldDsKKworfQogLyoK ICAqIENvbW1pdCBhbGwgcGxhbmUgY2hhbmdlcyBhY3Jvc3MgYWxsIG91dHB1dHMgb2YgdGhlIGRp c3BsYXkuCiAgKgpAQCAtMTY3NCw2ICsxOTgyLDE0IEBAIHN0YXRpYyBpbnQgZG9fZGlzcGxheV9j b21taXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKIAogCWlndF9kaXNwbGF5X3JlZnJlc2goZGlz cGxheSk7CiAKKwlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7CisKKwkJcmV0ID0gaWd0X2F0b21p Y19jb21taXQoZGlzcGxheSk7CisJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwor CQlyZXR1cm4gMDsKKworCX0KKwogCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7 IGkrKykgewogCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9ICZkaXNwbGF5LT5vdXRwdXRzW2ldOwog CmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAppbmRleCAzZjdhZGQ1 Li43NjhhNWUzIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5oCisrKyBiL2xpYi9pZ3Rfa21zLmgK QEAgLTEwNiwxMSArMTA2LDI4IEBAIGludCBrbXN0ZXN0X2dldF9waXBlX2Zyb21fY3J0Y19pZChp bnQgZmQsIGludCBjcnRjX2lkKTsKIHZvaWQga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSh2 b2lkKTsKIHZvaWQga21zdGVzdF9yZXN0b3JlX3Z0X21vZGUodm9pZCk7CiAKK2VudW0gaWd0X2F0 b21pY19jcnRjX3Byb3BlcnRpZXMgeworICAgICAgIElHVF9DUlRDX0JBQ0tHUk9VTkQgPSAwLAor ICAgICAgIElHVF9OVU1fQ1JUQ19QUk9QUworfTsKKworZW51bSBpZ3RfYXRvbWljX2Nvbm5lY3Rv cl9wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfQ09OTkVDVE9SX1NDQUxJTkdfTU9ERSA9IDAsCisg ICAgICAgSUdUX0NPTk5FQ1RPUl9EUE1TLAorICAgICAgIElHVF9OVU1fQ09OTkVDVE9SX1BST1BT Cit9OworCiBzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmlnIHsKIAlkcm1Nb2RlQ3J0YyAq Y3J0YzsKIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CiAJZHJtTW9kZUVuY29kZXIgKmVu Y29kZXI7CiAJZHJtTW9kZU1vZGVJbmZvIGRlZmF1bHRfbW9kZTsKKwl1aW50NjRfdCBjb25uZWN0 b3Jfc2NhbGluZ19tb2RlOworCWJvb2wgY29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkOwor CXVpbnQ2NF90IGNvbm5lY3Rvcl9kcG1zOworCWJvb2wgY29ubmVjdG9yX2RwbXNfY2hhbmdlZDsK Kwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY3J0Y1tJR1RfTlVNX0NSVENfUFJPUFNdOworCXVpbnQz Ml90IGF0b21pY19wcm9wc19jb25uZWN0b3JbSUdUX05VTV9DT05ORUNUT1JfUFJPUFNdOwogCWlu dCBjcnRjX2lkeDsKIAlpbnQgcGlwZTsKIH07CkBAIC0xNTksOSArMTc2LDI4IEBAIHZvaWQga21z dGVzdF91bnNldF9hbGxfY3J0Y3MoaW50IGRybV9mZCwgZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMp OwogZW51bSBpZ3RfY29tbWl0X3N0eWxlIHsKIAlDT01NSVRfTEVHQUNZID0gMCwKIAlDT01NSVRf VU5JVkVSU0FMLAotCS8qIFdlJ2xsIGFkZCBhdG9taWMgaGVyZSBldmVudHVhbGx5LiAqLworCUNP TU1JVF9BVE9NSUMsCiB9OwogCitlbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyB7Cisg ICAgICAgSUdUX1BMQU5FX1NSQ19YID0gMCwKKyAgICAgICBJR1RfUExBTkVfU1JDX1ksCisgICAg ICAgSUdUX1BMQU5FX1NSQ19XLAorICAgICAgIElHVF9QTEFORV9TUkNfSCwKKworICAgICAgIElH VF9QTEFORV9DUlRDX1gsCisgICAgICAgSUdUX1BMQU5FX0NSVENfWSwKKyAgICAgICBJR1RfUExB TkVfQ1JUQ19XLAorICAgICAgIElHVF9QTEFORV9DUlRDX0gsCisKKyAgICAgICBJR1RfUExBTkVf RkJfSUQsCisgICAgICAgSUdUX1BMQU5FX0NSVENfSUQsCisgICAgICAgSUdUX1BMQU5FX1RZUEUs CisgICAgICAgSUdUX1BMQU5FX1JPVEFUSU9OLAorICAgICAgIElHVF9OVU1fUExBTkVfUFJPUFMK K307CisKKwogdHlwZWRlZiBzdHJ1Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlfdDsKIHR5cGVk ZWYgc3RydWN0IGlndF9waXBlIGlndF9waXBlX3Q7CiB0eXBlZGVmIHVpbnQzMl90IGlndF9maXhl ZF90OwkJCS8qIDE2LjE2IGZpeGVkIHBvaW50ICovCkBAIC0yMDMsNiArMjM5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgewogCS8qIHBhbm5pbmcgb2Zmc2V0IHdpdGhpbiB0aGUgZmIgKi8KIAl1bnNpZ25l ZCBpbnQgcGFuX3gsIHBhbl95OwogCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOworCXVpbnQzMl90 IGF0b21pY19wcm9wc19wbGFuZVtJR1RfTlVNX1BMQU5FX1BST1BTXTsKIH0gaWd0X3BsYW5lX3Q7 CiAKIHN0cnVjdCBpZ3RfcGlwZSB7CkBAIC0yODQsNiArMzIxLDM4IEBAIHZvaWQgaWd0X3dhaXRf Zm9yX3ZibGFuayhpbnQgZHJtX2ZkLCBlbnVtIHBpcGUgcGlwZSk7CiAKICNkZWZpbmUgSUdUX0ZJ WEVEKGksZikJKChpKSA8PCAxNiB8IChmKSkKIAorLyoqCisgKiBpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcToKKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCisgKiBA cGxhbmU6IEEgcG9pbnRlciBpZ3RfcGxhbmVfdAorICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWlj X3BsYW5lX3Byb3BlcnRpZXMKKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAorICovCisjZGVm aW5lIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZhbHVl KSBcCisJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwbGFu ZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCxcCisJCQkJCQkgIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxh bmVbcHJvcF0sIHZhbHVlKSkKKworLyoqCisgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVx OgorICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKKyAqIEBvdXRwdXQ6IEEg cG9pbnRlciBpZ3Rfb3V0cHV0X3QKKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19jcnRjX3By b3BlcnRpZXMKKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAorICovCisjZGVmaW5lIGlndF9h dG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBvdXRwdXQsIHByb3AsIHZhbHVlKSBcCisJaWd0 X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQtPmNvbmZp Zy5jcnRjLT5jcnRjX2lkLFwKKwkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Ny dGNbcHJvcF0sIHZhbHVlKSkKKy8qKgorICogaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3Jf cmVxOgorICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKKyAqIEBvdXRwdXQ6 IEEgcG9pbnRlciBpZ3Rfb3V0cHV0X3QKKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19jb25u ZWN0b3JfcHJvcGVydGllcworICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCisgKi8KKyNkZWZp bmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2 YWx1ZSkgXAorCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwg b3V0cHV0LT5jb25maWcuY29ubmVjdG9yLT5jb25uZWN0b3JfaWQsXAorCQkJCQkJICBvdXRwdXQt PmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW3Byb3BdLCB2YWx1ZSkpCisKIHZvaWQgaWd0 X2VuYWJsZV9jb25uZWN0b3JzKHZvaWQpOwogdm9pZCBpZ3RfcmVzZXRfY29ubmVjdG9ycyh2b2lk KTsKIAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==