From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pratik Vishwakarma Subject: [PATCH i-g-t v6] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2() Date: Fri, 19 Feb 2016 15:38:23 +0530 Message-ID: <1455876503-16398-1-git-send-email-pratik.vishwakarma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id E36196EEA2 for ; Fri, 19 Feb 2016 10:02:23 +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 RnJvbTogTWF5dXJlc2ggR2hhcnB1cmUgPG1heXVyZXNoLnMuZ2hhcnB1cmVAaW50ZWwuY29tPgoK Q28tQXV0aG9yIDogTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRAaW50ZWwuY29tPgpDby1BdXRo b3IgOiBQcmF0aWsgVmlzaHdha2FybWEgPHByYXRpay52aXNod2FrYXJtYUBpbnRlbC5jb20+CgpT byBmYXIgd2UgaGF2ZSBoYWQgb25seSB0d28gY29tbWl0IHN0eWxlcywgQ09NTUlUX0xFR0FDWQph bmQgQ09NTUlUX1VOSVZFUlNBTC4gVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgY29tbWl0IHN0eWxl CkNPTU1JVF9BVE9NSUMgd2hpY2ggbWFrZXMgdXNlIG9mIGRybU1vZGVBdG9taWNDb21taXQoKQoK djI6IChNYXJpdXMpCglpKVNldCBDUlRDX0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5l CglpaSlNb2RpZmllZCB0aGUgbG9nIG1lc3NhZ2UgaW4gaWd0X2F0b21pY19wcmVwYXJlX3BsYW5l X2NvbW1pdAoJaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcxOTQ1LwoK djM6IChNYXJpdXMpU2V0IEZCX0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5lCglodHRw czovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzIxNzkvCgp2NDogKE1hYXJ0ZW4p IENvcnJlY3RlZCB0aGUgdHlwbyBpbiBjb21taXQgbWVzc2FnZQoJaHR0cHM6Ly9wYXRjaHdvcmsu ZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcyNTk4LwoKdjU6IEFkZGVkIGNoZWNrIGZvciBEUk1fQ0xJ RU5UX0NBUF9BVE9NSUMgaW4gaWd0X2Rpc3BsYXlfaW5pdAogICAgKE1hcml1cykKCWkpUmVtb3Zl ZCB1bnVzZWQgcHJvcHMgZnJvbSBpZ3RfZGlzcGxheV9pbml0CglpaSlSZW1vdmVkIHVudXNlZCBy ZXQuIENoYW5nZWQgZnVuY3Rpb24gdG8gdm9pZAoJaWlpKURlY2xhcmUgdGhlIHZhcmlhYmxlIGJl Zm9yZSBjaGVja2luZyBpZiB3ZSBoYXZlCglEUk1fQ0xJRU5UX0NBUF9BVE9NSUMuCglodHRwczov L3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzM1MDUvCgp2NjogKEphbmkpIENvcnJl Y3RlZCB0eXBvIGluIGNvbW1pdCBtZXNzYWdlCgpTaWduZWQtb2ZmLWJ5OiBNYXl1cmVzaCBHaGFy cHVyZSA8bWF5dXJlc2gucy5naGFycHVyZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFByYXRp ayBWaXNod2FrYXJtYSA8cHJhdGlrLnZpc2h3YWthcm1hQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0 X2ttcy5jIHwgMzE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KIGxpYi9pZ3Rfa21zLmggfCAgNzEgKysrKysrKysrKysrLQogMiBmaWxl cyBjaGFuZ2VkLCAzODYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA5MGM4ZGE3Li44ZTIwMWU4IDEw MDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21zLmMKQEAgLTE0NSw2ICsx NDUsMTIwIEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlndF9rbXNfZ2V0X2Jhc2VfZWRpZCh2b2lk KQogICoKICAqIFJldHVybnM6IGFuIGFsdGVybmF0ZSBlZGlkIGJsb2NrCiAgKi8KK3N0YXRpYyBj b25zdCBjaGFyICppZ3RfcGxhbmVfcHJvcF9uYW1lc1tJR1RfTlVNX1BMQU5FX1BST1BTXSA9IHsK KwkiU1JDX1giLAorCSJTUkNfWSIsCisJIlNSQ19XIiwKKwkiU1JDX0giLAorCSJDUlRDX1giLAor CSJDUlRDX1kiLAorCSJDUlRDX1ciLAorCSJDUlRDX0giLAorCSJGQl9JRCIsCisJIkNSVENfSUQi LAorCSJ0eXBlIiwKKwkicm90YXRpb24iCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqaWd0X2Ny dGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNdID0geworCSJiYWNrZ3JvdW5kX2NvbG9y IgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1Rf TlVNX0NPTk5FQ1RPUl9QUk9QU10gPSB7CisJInNjYWxpbmcgbW9kZSIsCisJIkRQTVMiCit9Owor CisvKgorICogUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25h bWUgYW5kIHN0b3JlIHRoZW0gaW50bworICogcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZS4KKyAq Lworc3RhdGljIHZvaWQKK2lndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCQlpbnQgbnVtX3Byb3BzLCBjb25zdCBj aGFyICoqcHJvcF9uYW1lcykKK3sKKwlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsK KwlpbnQgaSwgaiwgZmQ7CisKKwlmZCA9IGRpc3BsYXktPmRybV9mZDsKKworCXByb3BzID0gZHJt TW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLCBE Uk1fTU9ERV9PQkpFQ1RfUExBTkUpOworCWlndF9hc3NlcnQocHJvcHMpOworCisJZm9yIChpID0g MDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7CisJCWRybU1vZGVQcm9wZXJ0eVB0ciBw cm9wID0KKwkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3BzW2ldKTsKKworCQlm b3IgKGogPSAwOyBqIDwgbnVtX3Byb3BzOyBqKyspIHsKKwkJCWlmIChzdHJjbXAocHJvcC0+bmFt ZSwgcHJvcF9uYW1lc1tqXSkgIT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJcGxhbmUtPmF0b21p Y19wcm9wc19wbGFuZVtqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCWJyZWFrOworCQl9CisKKwkJ ZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwl9CisKKwlkcm1Nb2RlRnJlZU9iamVjdFByb3Bl cnRpZXMocHJvcHMpOworfQorCisvKgorICogUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJpZXMgc3Bl Y2lmaWVkIGluIHByb3BzX25hbWUgYW5kIHN0b3JlIHRoZW0gaW50bworICogY29uZmlnLT5hdG9t aWNfcHJvcHNfY3J0YyBhbmQgY29uZmlnLT5hdG9taWNfcHJvcHNfY29ubmVjdG9yLgorICovCitz dGF0aWMgdm9pZAoraWd0X2F0b21pY19maWxsX3Byb3BzKGlndF9kaXNwbGF5X3QgKmRpc3BsYXks IGlndF9vdXRwdXRfdCAqb3V0cHV0LAorCQkJaW50IG51bV9jcnRjX3Byb3BzLCBjb25zdCBjaGFy ICoqY3J0Y19wcm9wX25hbWVzLAorCQkJaW50IG51bV9jb25uZWN0b3JfcHJvcHMsIGNvbnN0IGNo YXIgKipjb25uX3Byb3BfbmFtZXMpCit7CisJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJv cHM7CisJaW50IGksIGosIGZkOworCisJZmQgPSBkaXNwbGF5LT5kcm1fZmQ7CisKKwlwcm9wcyA9 IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRj X2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ1JUQyk7CisJaWd0X2Fzc2VydChwcm9wcyk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsKKwkJZHJtTW9kZVByb3BlcnR5 UHRyIHByb3AgPQorCQkJZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOwor CisJCWZvciAoaiA9IDA7IGogPCBudW1fY3J0Y19wcm9wczsgaisrKSB7CisJCQlpZiAoc3RyY21w KHByb3AtPm5hbWUsIGNydGNfcHJvcF9uYW1lc1tqXSkgIT0gMCkKKwkJCQljb250aW51ZTsKKwor CQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2NydGNbal0gPSBwcm9wcy0+cHJvcHNbaV07 CisJCQlicmVhazsKKwkJfQorCisJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7CisJfQorCisJ ZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKKwlwcm9wcyA9IE5VTEw7CisJcHJv cHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgb3V0cHV0LT5jb25maWcuY29ubmVj dG9yLT5jb25uZWN0b3JfaWQsIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1IpOworCWlndF9hc3Nl cnQocHJvcHMpOworCisJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7 CisJCWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0KKwkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwg cHJvcHMtPnByb3BzW2ldKTsKKworCQlmb3IgKGogPSAwOyBqIDwgbnVtX2Nvbm5lY3Rvcl9wcm9w czsgaisrKSB7CisJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIGNvbm5fcHJvcF9uYW1lc1tqXSkg IT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nv bm5lY3RvcltqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCWJyZWFrOworCQl9CisKKwkJZHJtTW9k ZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwl9CisKKwlkcm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMo cHJvcHMpOworCit9CisKIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlndF9rbXNfZ2V0X2FsdF9lZGlk KHZvaWQpCiB7CiAJdXBkYXRlX2VkaWRfY3N1bShhbHRfZWRpZCk7CkBAIC05NTIsNiArMTA2Niw4 IEBAIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfcmVmcmVzaChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkK IAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwogCiAJZGlzcGxh eS0+cGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlwZTsKKwlpZ3RfYXRvbWlj X2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENfUFJPUFMsIGlndF9jcnRj X3Byb3BfbmFtZXMsCisJCUlHVF9OVU1fQ09OTkVDVE9SX1BST1BTLCBpZ3RfY29ubmVjdG9yX3By b3BfbmFtZXMpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTAzOCw2ICsxMTU0LDcgQEAgdm9pZCBp Z3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJZGlz cGxheS0+bl9waXBlcyA9IHJlc291cmNlcy0+Y291bnRfY3J0Y3M7CiAKIAlkcm1TZXRDbGllbnRD YXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9VTklWRVJTQUxfUExBTkVTLCAxKTsKKwlkcm1TZXRD bGllbnRDYXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsIDEpOwogCXBsYW5lX3Jlc291 cmNlcyA9IGRybU1vZGVHZXRQbGFuZVJlc291cmNlcyhkaXNwbGF5LT5kcm1fZmQpOwogCWlndF9h c3NlcnQocGxhbmVfcmVzb3VyY2VzKTsKIApAQCAtMTA5NCw2ICsxMjExLDcgQEAgdm9pZCBpZ3Rf ZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAKIAkJCXBs YW5lLT5waXBlID0gcGlwZTsKIAkJCXBsYW5lLT5kcm1fcGxhbmUgPSBkcm1fcGxhbmU7CisJCQlp Z3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoZGlzcGxheSwgcGxhbmUsIElHVF9OVU1fUExBTkVf UFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVzKTsKIAogCQkJZ2V0X3BsYW5lX3Byb3BlcnR5KGRp c3BsYXktPmRybV9mZCwgZHJtX3BsYW5lLT5wbGFuZV9pZCwKIAkJCQkJICAgInJvdGF0aW9uIiwK QEAgLTEzNDksNiArMTQ2NywxMTEgQEAgc3RhdGljIHVpbnQzMl90IGlndF9wbGFuZV9nZXRfZmJf Z2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCiAJaWd0X2Fzc2VydChyID09IDApOwlcCiB9 CiAKKworCisKKy8qCisgKiBBZGQgcG9zaXRpb24gYW5kIGZiIGNoYW5nZXMgb2YgYSBwbGFuZSB0 byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAorICovCitzdGF0aWMgdm9pZAoraWd0X2F0b21pY19w cmVwYXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9vdXRwdXRfdCAqb3V0 cHV0LAorCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKK3sKKworCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSBvdXRwdXQtPmRpc3BsYXk7CisJdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7CisJdWludDMy X3Qgc3JjX3g7CisJdWludDMyX3Qgc3JjX3k7CisJdWludDMyX3Qgc3JjX3c7CisJdWludDMyX3Qg c3JjX2g7CisJaW50MzJfdCBjcnRjX3g7CisJaW50MzJfdCBjcnRjX3k7CisJdWludDMyX3QgY3J0 Y193OworCXVpbnQzMl90IGNydGNfaDsKKworCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7 CisKKwkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCisJ aWd0X2Fzc2VydChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8CisJCQkhcGxh bmUtPnJvdGF0aW9uX2NoYW5nZWQpOworCisJZmJfaWQgPSBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBs YW5lKTsKKwljcnRjX2lkID0gb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKKworCWlmICgo cGxhbmUtPmZiX2NoYW5nZWQgfHwgcGxhbmUtPnNpemVfY2hhbmdlZCkgJiYgZmJfaWQgPT0gMCkg eworCisJCUxPRyhkaXNwbGF5LAorCQkgICAgIiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6IHBp cGUgJXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCisJCSAgICAgaWd0X291dHB1dF9uYW1lKG91 dHB1dCksCisJCSAgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCisJ CSAgICAgcGxhbmUtPmluZGV4KTsKKworCQkvKiBwb3B1bGF0ZSBwbGFuZSByZXEgKi8KKwkJaWd0 X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQs IDApOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfRkJfSUQsIDApOworCisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9TUkNfWCwgSUdUX0ZJWEVEKDAsIDApKTsKKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoMCwg MCkpOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfU1JDX1csIElHVF9GSVhFRCgwLCAwKSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVf cmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfSCwgSUdUX0ZJWEVEKDAsIDApKTsKKworCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19Y LCAwKTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX0NSVENfWSwgMCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9DUlRDX1csIDApOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCAwKTsKKworCX0gZWxzZSBpZiAocGxhbmUt PmZiX2NoYW5nZWQgfHwgcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwKKwkJCXBsYW5lLT5zaXpl X2NoYW5nZWQpIHsKKworCQlzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY194LCAwKTsg Lyogc3JjX3ggKi8KKwkJc3JjX3kgPSBJR1RfRklYRUQocGxhbmUtPmZiLT5zcmNfeSwgMCk7IC8q IHNyY195ICovCisJCXNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3csIDApOyAvKiBz cmNfdyAqLworCQlzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY19oLCAwKTsgLyogc3Jj X2ggKi8KKwkJY3J0Y194ID0gcGxhbmUtPmNydGNfeDsKKwkJY3J0Y195ID0gcGxhbmUtPmNydGNf eTsKKwkJY3J0Y193ID0gcGxhbmUtPmNydGNfdzsKKwkJY3J0Y19oID0gcGxhbmUtPmNydGNfaDsK KworCQlMT0coZGlzcGxheSwKKwkJICAgICIlczogcG9wdWxhdGluZyBwbGFuZSBkYXRhOiAlcy4l ZCwgZmIgJXUsIHNyYyA9ICglZCwgJWQpICIKKwkJICAgICIldXgldSBkc3QgPSAoJXUsICV1KSAl dXgldVxuIiwKKwkJICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAorCQkgICAga21zdGVzdF9w aXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCisJCSAgICBwbGFuZS0+aW5kZXgsCisJCSAg ICBmYl9pZCwKKwkJICAgIHNyY194ID4+IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNy Y19oID4+IDE2LAorCQkgICAgY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oKTsKKworCisJ CS8qIHBvcHVsYXRlIHBsYW5lIHJlcSAqLworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCwgY3J0Y19pZCk7CisJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOwor CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9T UkNfWCwgc3JjX3gpOworCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9y ZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19XLCBzcmNfdyk7CisJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfSCwgc3JjX2gpOworCisJ CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRD X1gsIGNydGNfeCk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7CisJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVf cmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1csIGNydGNfdyk7CisJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIGNydGNfaCk7 CisKKwkJaWYgKHBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKQorCQkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwKKwkJCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5y b3RhdGlvbik7CisKKwl9CisKKwlwbGFuZS0+ZmJfY2hhbmdlZCA9IGZhbHNlOworCXBsYW5lLT5w b3NpdGlvbl9jaGFuZ2VkID0gZmFsc2U7CisJcGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOwor CisJcmV0dXJuOworfQorCisKKwogLyoKICAqIENvbW1pdCBwb3NpdGlvbiBhbmQgZmIgY2hhbmdl cyB0byBhIERSTSBwbGFuZSB2aWEgdGhlIFNldFBsYW5lIGlvY3RsOyBpZiB0aGUKICAqIERSTSBj YWxsIHRvIHByb2dyYW0gdGhlIHBsYW5lIGZhaWxzLCB3ZSdsbCBlaXRoZXIgZmFpbCBpbW1lZGlh dGVseSAoZm9yCkBAIC0xNjAxLDcgKzE4MjQsNyBAQCBzdGF0aWMgaW50IGlndF9wbGFuZV9jb21t aXQoaWd0X3BsYW5lX3QgKnBsYW5lLAogCQlyZXR1cm4gaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0 X2xlZ2FjeShwbGFuZSwgb3V0cHV0LAogCQkJCQkJICAgICAgIGZhaWxfb25fZXJyb3IpOwogCX0g ZWxzZSB7Ci0JCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0LCBmYWls X29uX2Vycm9yKTsKKwkJCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0 LCBmYWlsX29uX2Vycm9yKTsKIAl9CiB9CiAKQEAgLTE2NTUsNiArMTg3OCw5MCBAQCBzdGF0aWMg aW50IGlndF9vdXRwdXRfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LAogCXJldHVybiAwOwog fQogCisKKy8qCisgKiBBZGQgY3J0YyBwcm9wZXJ0eSBjaGFuZ2VzIHRvIHRoZSBhdG9taWMgcHJv cGVydHkgc2V0CisgKi8KK3N0YXRpYyB2b2lkIGlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1p dChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQoreworCisJaWd0 X3BpcGVfdCAqcGlwZV9vYmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsK KworCWlmIChwaXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQorCQlpZ3RfYXRvbWljX3BvcHVs YXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBwaXBlX29iai0+ YmFja2dyb3VuZCk7CisKKwkvKgorCSAqCVRPRE86IEFkZCBhbGwgY3J0YyBsZXZlbCBwcm9wZXJ0 aWVzIGhlcmUKKwkgKi8KKworfQorCisvKgorICogQWRkIGNvbm5lY3RvciBwcm9wZXJ0eSBjaGFu Z2VzIHRvIHRoZSBhdG9taWMgcHJvcGVydHkgc2V0CisgKi8KK3N0YXRpYyB2b2lkIGlndF9hdG9t aWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2Rl QXRvbWljUmVxICpyZXEpCit7CisKKwlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmlnICpj b25maWcgPSAmb3V0cHV0LT5jb25maWc7CisKKwlpZiAoY29uZmlnLT5jb25uZWN0b3Jfc2NhbGlu Z19tb2RlX2NoYW5nZWQpCisJCWlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEs IG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUsIGNvbmZpZy0+Y29ubmVjdG9yX3Nj YWxpbmdfbW9kZSk7CisKKwlpZiAoY29uZmlnLT5jb25uZWN0b3JfZHBtc19jaGFuZ2VkKQorCQlp Z3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNU T1JfRFBNUywgY29uZmlnLT5jb25uZWN0b3JfZHBtcyk7CisJLyoKKwkgKglUT0RPOiBBZGQgYWxs IG90aGVyIGNvbm5lY3RvciBsZXZlbCBwcm9wZXJ0aWVzIGhlcmUKKwkgKi8KKworfQorCisvKgor ICogQ29tbWl0IGFsbCB0aGUgY2hhbmdlcyBvZiBhbGwgdGhlIHBsYW5lcyxjcnRjcywgY29ubmVj dG9ycworICogYXRvbWljYWxseSB1c2luZyBkcm1Nb2RlQXRvbWljQ29tbWl0KCkKKyAqLworc3Rh dGljIGludCBpZ3RfYXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQoreworCisJ aW50IHJldCA9IDA7CisJaW50IGkgPSAwOworCWRybU1vZGVBdG9taWNSZXEgKnJlcTsKKwlkb19v cl9kaWUoZHJtU2V0Q2xpZW50Q2FwKGRpc3BsYXktPmRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRP TUlDLCAxKSk7CisKKwlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKKwlkcm1Nb2RlQXRvbWlj U2V0Q3Vyc29yKHJlcSwgMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRz OyBpKyspIHsKKwkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsK KwkJaWd0X3BpcGVfdCAqcGlwZTsKKworCQlpZiAoIW91dHB1dC0+dmFsaWQpCisJCQljb250aW51 ZTsKKworCQkvKgorCQkgKiBBZGQgQ1JUQyBQcm9wZXJ0aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQK KwkJICovCisJCWlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChvdXRwdXQsIHJlcSk7CisK KwkJLyoKKwkJICogQWRkIENvbm5lY3RvciBQcm9wZXJ0aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQK KwkJICovCisJCWlndF9hdG9taWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KG91dHB1dCwgcmVx KTsKKworCisJCXBpcGUgPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKKwor CQlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkrKykgeworCQkJaWd0X3BsYW5lX3Qg KnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsKKwkJCWlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9j b21taXQocGxhbmUsIG91dHB1dCwgcmVxKTsKKwkJfQorCisJfQorCisJcmV0ID0gZHJtTW9kZUF0 b21pY0NvbW1pdChkaXNwbGF5LT5kcm1fZmQsIHJlcSwgMCwgTlVMTCk7CisJZHJtTW9kZUF0b21p Y0ZyZWUocmVxKTsKKwlyZXR1cm4gcmV0OworCit9CiAvKgogICogQ29tbWl0IGFsbCBwbGFuZSBj aGFuZ2VzIGFjcm9zcyBhbGwgb3V0cHV0cyBvZiB0aGUgZGlzcGxheS4KICAqCkBAIC0xNjc0LDYg KzE5ODEsMTQgQEAgc3RhdGljIGludCBkb19kaXNwbGF5X2NvbW1pdChpZ3RfZGlzcGxheV90ICpk aXNwbGF5LAogCiAJaWd0X2Rpc3BsYXlfcmVmcmVzaChkaXNwbGF5KTsKIAorCWlmIChzID09IENP TU1JVF9BVE9NSUMpIHsKKworCQlyZXQgPSBpZ3RfYXRvbWljX2NvbW1pdChkaXNwbGF5KTsKKwkJ Q0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJvcik7CisJCXJldHVybiAwOworCisJfQorCiAJ Zm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7CiAJCWlndF9vdXRwdXRf dCAqb3V0cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf a21zLmggYi9saWIvaWd0X2ttcy5oCmluZGV4IDNmN2FkZDUuLjc2OGE1ZTMgMTAwNjQ0Ci0tLSBh L2xpYi9pZ3Rfa21zLmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMTA2LDExICsxMDYsMjggQEAg aW50IGttc3Rlc3RfZ2V0X3BpcGVfZnJvbV9jcnRjX2lkKGludCBmZCwgaW50IGNydGNfaWQpOwog dm9pZCBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKHZvaWQpOwogdm9pZCBrbXN0ZXN0X3Jl c3RvcmVfdnRfbW9kZSh2b2lkKTsKIAorZW51bSBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcyB7 CisgICAgICAgSUdUX0NSVENfQkFDS0dST1VORCA9IDAsCisgICAgICAgSUdUX05VTV9DUlRDX1BS T1BTCit9OworCitlbnVtIGlndF9hdG9taWNfY29ubmVjdG9yX3Byb3BlcnRpZXMgeworICAgICAg IElHVF9DT05ORUNUT1JfU0NBTElOR19NT0RFID0gMCwKKyAgICAgICBJR1RfQ09OTkVDVE9SX0RQ TVMsCisgICAgICAgSUdUX05VTV9DT05ORUNUT1JfUFJPUFMKK307CisKIHN0cnVjdCBrbXN0ZXN0 X2Nvbm5lY3Rvcl9jb25maWcgewogCWRybU1vZGVDcnRjICpjcnRjOwogCWRybU1vZGVDb25uZWN0 b3IgKmNvbm5lY3RvcjsKIAlkcm1Nb2RlRW5jb2RlciAqZW5jb2RlcjsKIAlkcm1Nb2RlTW9kZUlu Zm8gZGVmYXVsdF9tb2RlOworCXVpbnQ2NF90IGNvbm5lY3Rvcl9zY2FsaW5nX21vZGU7CisJYm9v bCBjb25uZWN0b3Jfc2NhbGluZ19tb2RlX2NoYW5nZWQ7CisJdWludDY0X3QgY29ubmVjdG9yX2Rw bXM7CisJYm9vbCBjb25uZWN0b3JfZHBtc19jaGFuZ2VkOworCXVpbnQzMl90IGF0b21pY19wcm9w c19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9QU107CisJdWludDMyX3QgYXRvbWljX3Byb3BzX2Nvbm5l Y3RvcltJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU107CiAJaW50IGNydGNfaWR4OwogCWludCBwaXBl OwogfTsKQEAgLTE1OSw5ICsxNzYsMjggQEAgdm9pZCBrbXN0ZXN0X3Vuc2V0X2FsbF9jcnRjcyhp bnQgZHJtX2ZkLCBkcm1Nb2RlUmVzUHRyIHJlc291cmNlcyk7CiBlbnVtIGlndF9jb21taXRfc3R5 bGUgewogCUNPTU1JVF9MRUdBQ1kgPSAwLAogCUNPTU1JVF9VTklWRVJTQUwsCi0JLyogV2UnbGwg YWRkIGF0b21pYyBoZXJlIGV2ZW50dWFsbHkuICovCisJQ09NTUlUX0FUT01JQywKIH07CiAKK2Vu dW0gaWd0X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzIHsKKyAgICAgICBJR1RfUExBTkVfU1JDX1gg PSAwLAorICAgICAgIElHVF9QTEFORV9TUkNfWSwKKyAgICAgICBJR1RfUExBTkVfU1JDX1csCisg ICAgICAgSUdUX1BMQU5FX1NSQ19ILAorCisgICAgICAgSUdUX1BMQU5FX0NSVENfWCwKKyAgICAg ICBJR1RfUExBTkVfQ1JUQ19ZLAorICAgICAgIElHVF9QTEFORV9DUlRDX1csCisgICAgICAgSUdU X1BMQU5FX0NSVENfSCwKKworICAgICAgIElHVF9QTEFORV9GQl9JRCwKKyAgICAgICBJR1RfUExB TkVfQ1JUQ19JRCwKKyAgICAgICBJR1RfUExBTkVfVFlQRSwKKyAgICAgICBJR1RfUExBTkVfUk9U QVRJT04sCisgICAgICAgSUdUX05VTV9QTEFORV9QUk9QUworfTsKKworCiB0eXBlZGVmIHN0cnVj dCBpZ3RfZGlzcGxheSBpZ3RfZGlzcGxheV90OwogdHlwZWRlZiBzdHJ1Y3QgaWd0X3BpcGUgaWd0 X3BpcGVfdDsKIHR5cGVkZWYgdWludDMyX3QgaWd0X2ZpeGVkX3Q7CQkJLyogMTYuMTYgZml4ZWQg cG9pbnQgKi8KQEAgLTIwMyw2ICsyMzksNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJLyogcGFubmlu ZyBvZmZzZXQgd2l0aGluIHRoZSBmYiAqLwogCXVuc2lnbmVkIGludCBwYW5feCwgcGFuX3k7CiAJ aWd0X3JvdGF0aW9uX3Qgcm90YXRpb247CisJdWludDMyX3QgYXRvbWljX3Byb3BzX3BsYW5lW0lH VF9OVU1fUExBTkVfUFJPUFNdOwogfSBpZ3RfcGxhbmVfdDsKIAogc3RydWN0IGlndF9waXBlIHsK QEAgLTI4NCw2ICszMjEsMzggQEAgdm9pZCBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGludCBkcm1fZmQs IGVudW0gcGlwZSBwaXBlKTsKIAogI2RlZmluZSBJR1RfRklYRUQoaSxmKQkoKGkpIDw8IDE2IHwg KGYpKQogCisvKioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxOgorICogQHJlcTog QSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKKyAqIEBwbGFuZTogQSBwb2ludGVyIGlndF9w bGFuZV90CisgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcworICog QHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCisgKi8KKyNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgcHJvcCwgdmFsdWUpIFwKKwlpZ3RfYXNzZXJ0X2x0KDAs IGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lk LFwKKwkJCQkJCSAgcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtwcm9wXSwgdmFsdWUpKQorCisv KioKKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXE6CisgKiBAcmVxOiBBIHBvaW50ZXIg dG8gZHJtTW9kZUF0b21pY1JlcQorICogQG91dHB1dDogQSBwb2ludGVyIGlndF9vdXRwdXRfdAor ICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcworICogQHZhbHVlOiB0 aGUgdmFsdWUgdG8gYWRkCisgKi8KKyNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3Jl cShyZXEsIG91dHB1dCwgcHJvcCwgdmFsdWUpIFwKKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVB dG9taWNBZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsXAorCQkJ CQkJICBvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1twcm9wXSwgdmFsdWUpKQorLyoq CisgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXE6CisgKiBAcmVxOiBBIHBvaW50 ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQorICogQG91dHB1dDogQSBwb2ludGVyIGlndF9vdXRwdXRf dAorICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2Nvbm5lY3Rvcl9wcm9wZXJ0aWVzCisgKiBA dmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKKyAqLworI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRl X2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIHByb3AsIHZhbHVlKSBcCisJaWd0X2Fzc2VydF9s dCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQtPmNvbmZpZy5jb25uZWN0 b3ItPmNvbm5lY3Rvcl9pZCxcCisJCQkJCQkgIG91dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19j b25uZWN0b3JbcHJvcF0sIHZhbHVlKSkKKwogdm9pZCBpZ3RfZW5hYmxlX2Nvbm5lY3RvcnModm9p ZCk7CiB2b2lkIGlndF9yZXNldF9jb25uZWN0b3JzKHZvaWQpOwogCi0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==