From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v2 5/8] lib/igt_kms: Rework plane properties to be more atomic, v2. Date: Wed, 27 Sep 2017 20:16:32 +0200 Message-ID: <20170927181635.21170-6-maarten.lankhorst@linux.intel.com> References: <20170927181635.21170-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id A8E7A6E7B8 for ; Wed, 27 Sep 2017 18:16:48 +0000 (UTC) In-Reply-To: <20170927181635.21170-1-maarten.lankhorst@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 SW4gdGhlIGZ1dHVyZSBJIHdhbnQgdG8gYWxsb3cgdGVzdHMgdG8gY29tbWl0IG1vcmUgcHJvcGVy dGllcywKYnV0IGZvciB0aGlzIHRvIHdvcmsgSSBoYXZlIHRvIGZpeCBhbGwgcHJvcGVydGllcyB0 byB3b3JrIGJldHRlcgp3aXRoIGF0b21pYyBjb21taXQuIEluc3RlYWQgb2Ygc3BlY2lhbCBjYXNp bmcgZWFjaApwcm9wZXJ0eSBtYWtlIGEgYml0bWFzayBmb3IgYWxsIHByb3BlcnR5IGNoYW5nZWQg ZmxhZ3MsIGFuZCB0cnkgdG8KY29tbWl0IGFsbCBwcm9wZXJ0aWVzLgoKQ2hhbmdlcyBzaW5jZSB2 MToKLSBSZW1vdmUgc3BlY2lhbCBkdW1waW5nIG9mIHNyYyBhbmQgY3J0YyBjb29yZGluYXRlcy4K LSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2ln dF9rbXMuYyAgICAgICAgICAgICAgICAgICAgfCAyOTIgKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBsaWIvaWd0X2ttcy5oICAgICAgICAgICAgICAgICAgICB8ICA1OSAr KysrLS0tLQogdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMgfCAgMTIgKy0KIHRlc3Rz L2ttc19yb3RhdGlvbl9jcmMuYyAgICAgICAgIHwgICA0ICstCiA0IGZpbGVzIGNoYW5nZWQsIDE1 OSBpbnNlcnRpb25zKCspLCAyMDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9r bXMuYyBiL2xpYi9pZ3Rfa21zLmMKaW5kZXggMDdkMjA3NGMyYjFhLi4zMTgxZWU2MDUxOTUgMTAw NjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMTkyLDExICsx OTIsMTEgQEAgY29uc3QgY2hhciAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1fQ09O TkVDVE9SX1BST1BTXSA9IHsKIAogLyoKICAqIFJldHJpZXZlIGFsbCB0aGUgcHJvcGVyaWVzIHNw ZWNpZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtIGludG8KLSAqIHBsYW5lLT5hdG9t aWNfcHJvcHNfcGxhbmUuCisgKiBwbGFuZS0+cHJvcHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1pZ3Rf YXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BsYW5l X3QgKnBsYW5lLAotCQkJaW50IG51bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCitp Z3RfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAq cGxhbmUsCisJCSAgICAgaW50IG51bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCiB7 CiAJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7CiAJaW50IGksIGosIGZkOwpAQCAt MjE0LDcgKzIxNCw3IEBAIGlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUs IHByb3BfbmFtZXNbal0pICE9IDApCiAJCQkJY29udGludWU7CiAKLQkJCXBsYW5lLT5hdG9taWNf cHJvcHNfcGxhbmVbal0gPSBwcm9wcy0+cHJvcHNbaV07CisJCQlwbGFuZS0+cHJvcHNbal0gPSBw cm9wcy0+cHJvcHNbaV07CiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjU5LDcgKzE2NTksNiBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK IAlkcm1Nb2RlUmVzICpyZXNvdXJjZXM7CiAJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJj ZXM7CiAJaW50IGk7Ci0JaW50IGlzX2F0b21pYyA9IDA7CiAKIAltZW1zZXQoZGlzcGxheSwgMCwg c2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKIApAQCAtMTY3OSw3ICsxNjc4LDkgQEAgdm9pZCBpZ3Rf ZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJaWd0X2Fz c2VydF9mKGRpc3BsYXktPnBpcGVzLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgJWQg cGlwZXNcbiIsIGRpc3BsYXktPm5fcGlwZXMpOwogCiAJZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwg RFJNX0NMSUVOVF9DQVBfVU5JVkVSU0FMX1BMQU5FUywgMSk7Ci0JaXNfYXRvbWljID0gZHJtU2V0 Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLCAxKTsKKwlpZiAoZHJtU2V0 Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLCAxKSA9PSAwKQorCQlkaXNw bGF5LT5pc19hdG9taWMgPSAxOworCiAJcGxhbmVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFBsYW5l UmVzb3VyY2VzKGRpc3BsYXktPmRybV9mZCk7CiAJaWd0X2Fzc2VydChwbGFuZV9yZXNvdXJjZXMp OwogCkBAIC0xNzc2LDE5ICsxNzc3LDE1IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlz cGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQkJcGxhbmUtPnR5cGUgPSB0eXBlOwogCQkJ cGxhbmUtPnBpcGUgPSBwaXBlOwogCQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsKLQkJ CXBsYW5lLT5mZW5jZV9mZCA9IC0xOworCQkJcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVO Q0VfRkRdID0gfjBVTEw7CiAKLQkJCWlmIChpc19hdG9taWMgPT0gMCkgewotCQkJCWRpc3BsYXkt PmlzX2F0b21pYyA9IDE7Ci0JCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXks IHBsYW5lLCBJR1RfTlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Ci0JCQl9 CisJCQlpZ3RfZmlsbF9wbGFuZV9wcm9wcyhkaXNwbGF5LCBwbGFuZSwgSUdUX05VTV9QTEFORV9Q Uk9QUywgaWd0X3BsYW5lX3Byb3BfbmFtZXMpOwogCiAJCQlnZXRfcGxhbmVfcHJvcGVydHkoZGlz cGxheS0+ZHJtX2ZkLCBkcm1fcGxhbmUtPnBsYW5lX2lkLAogCQkJCQkgICAicm90YXRpb24iLAot CQkJCQkgICAmcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5LAotCQkJCQkgICAmcHJvcF92YWx1ZSwK KwkJCQkJICAgJnBsYW5lLT5wcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAorCQkJCQkgICAmcGxh bmUtPnZhbHVlc1tJR1RfUExBTkVfUk9UQVRJT05dLAogCQkJCQkgICBOVUxMKTsKLQkJCXBsYW5l LT5yb3RhdGlvbiA9IChpZ3Rfcm90YXRpb25fdClwcm9wX3ZhbHVlOwogCQl9CiAKIAkJLyoKQEAg LTE4MDUsOCArMTgwMiwxMCBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgaW50IGRybV9mZCkKIAogCQlwaXBlLT5uX3BsYW5lcyA9IG5fcGxhbmVzOwogCi0J CWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgaSwgcGxhbmUpCi0JCQlwbGFuZS0+ZmJf Y2hhbmdlZCA9IHRydWU7CisJCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgaSwgcGxh bmUpIHsKKwkJCWlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfRkJf SUQpOworCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9DUlRD X0lEKTsKKwkJfQogCiAJCXBpcGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7CiAJfQpAQCAtMjA3MCwx OCArMjA2OSw3IEBAIGJvb2wgaWd0X3BpcGVfZ2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBpcGUs IGNvbnN0IGNoYXIgKm5hbWUsCiAKIHN0YXRpYyB1aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2lk KGlndF9wbGFuZV90ICpwbGFuZSkKIHsKLQlpZiAocGxhbmUtPmZiKQotCQlyZXR1cm4gcGxhbmUt PmZiLT5mYl9pZDsKLQllbHNlCi0JCXJldHVybiAwOwotfQotCi1zdGF0aWMgdWludDMyX3QgaWd0 X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkKLXsKLQlpZiAocGxh bmUtPmZiKQotCQlyZXR1cm4gcGxhbmUtPmZiLT5nZW1faGFuZGxlOwotCWVsc2UKLQkJcmV0dXJu IDA7CisJcmV0dXJuIHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0ZCX0lEXTsKIH0KIAogI2RlZmlu ZSBDSEVDS19SRVRVUk4ociwgZmFpbCkgewlcCkBAIC0yMDkwLDkgKzIwNzgsNiBAQCBzdGF0aWMg dWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkK IAlpZ3RfYXNzZXJ0X2VxKHIsIDApOwlcCiB9CiAKLQotCi0KIC8qCiAgKiBBZGQgcG9zaXRpb24g YW5kIGZiIGNoYW5nZXMgb2YgYSBwbGFuZSB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAogICov CkBAIC0yMTAxLDYzICsyMDg2LDMxIEBAIGlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQo aWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3RfcGlwZV90ICpwaXBlLAogCWRybU1vZGVBdG9taWNSZXEg KnJlcSkKIHsKIAlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsKLQl1aW50 MzJfdCBmYl9pZCwgY3J0Y19pZDsKKwlpbnQgaTsKIAogCWlndF9hc3NlcnQocGxhbmUtPmRybV9w bGFuZSk7CiAKLQkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJl ICovCi0JaWd0X2Fzc2VydChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8Ci0J CQkhcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpOwotCi0JZmJfaWQgPSBpZ3RfcGxhbmVfZ2V0X2Zi X2lkKHBsYW5lKTsKLQljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKLQogCUxPRyhkaXNwbGF5LAog CSAgICAicG9wdWxhdGluZyBwbGFuZSBkYXRhOiAlcy4lZCwgZmIgJXVcbiIsCiAJICAgIGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwbGFuZS0+aW5kZXgsCi0JICAgIGZiX2lk KTsKKwkgICAgaWd0X3BsYW5lX2dldF9mYl9pZChwbGFuZSkpOwogCi0JaWYgKHBsYW5lLT5mZW5j ZV9mZCA+PSAwKSB7Ci0JCXVpbnQ2NF90IGZlbmNlX2ZkID0gKGludDY0X3QpIHBsYW5lLT5mZW5j ZV9mZDsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX0lOX0ZFTkNFX0ZELCBmZW5jZV9mZCk7Ci0JfQotCi0JaWYgKHBsYW5lLT5mYl9jaGFuZ2Vk KSB7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFO RV9DUlRDX0lELCBmYl9pZCA/IGNydGNfaWQgOiAwKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Ci0JfQotCi0JaWYg KHBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpIHsKLQkJdWlu dDMyX3Qgc3JjX3ggPSBJR1RfRklYRUQocGxhbmUtPnNyY194LCAwKTsgLyogc3JjX3ggKi8KLQkJ dWludDMyX3Qgc3JjX3kgPSBJR1RfRklYRUQocGxhbmUtPnNyY195LCAwKTsgLyogc3JjX3kgKi8K LQkJdWludDMyX3Qgc3JjX3cgPSBJR1RfRklYRUQocGxhbmUtPnNyY193LCAwKTsgLyogc3JjX3cg Ki8KLQkJdWludDMyX3Qgc3JjX2ggPSBJR1RfRklYRUQocGxhbmUtPnNyY19oLCAwKTsgLyogc3Jj X2ggKi8KLQkJaW50MzJfdCBjcnRjX3ggPSBwbGFuZS0+Y3J0Y194OwotCQlpbnQzMl90IGNydGNf eSA9IHBsYW5lLT5jcnRjX3k7Ci0JCXVpbnQzMl90IGNydGNfdyA9IHBsYW5lLT5jcnRjX3c7Ci0J CXVpbnQzMl90IGNydGNfaCA9IHBsYW5lLT5jcnRjX2g7CisJZm9yIChpID0gMDsgaSA8IElHVF9O VU1fUExBTkVfUFJPUFM7IGkrKykgeworCQlpZiAoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQo cGxhbmUsIGkpKQorCQkJY29udGludWU7CiAKLQkJTE9HKGRpc3BsYXksCi0JCSJzcmMgPSAoJWQs ICVkKSAldSB4ICV1ICIKLQkJImRzdCA9ICglZCwgJWQpICV1IHggJXVcbiIsCi0JCXNyY194ID4+ IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAotCQljcnRjX3gsIGNy dGNfeSwgY3J0Y193LCBjcnRjX2gpOworCQkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1 cHBvcnRlZCBmZWF0dXJlICovCisJCWlndF9hc3NlcnQocGxhbmUtPnByb3BzW2ldKTsKIAotCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1gs IHNyY194KTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdU X1BMQU5FX1NSQ19ZLCBzcmNfeSk7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgc3JjX3cpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsIHNyY19oKTsKKwkJaWd0X2Rl YnVnKCJwbGFuZSAlcy4lZDogU2V0dGluZyBwcm9wZXJ0eSBcIiVzXCIgdG8gMHglIlBSSXg2NCIv JSJQUklpNjQiXG4iLAorCQkJa21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5p bmRleCwgaWd0X3BsYW5lX3Byb3BfbmFtZXNbaV0sCisJCQlwbGFuZS0+dmFsdWVzW2ldLCBwbGFu ZS0+dmFsdWVzW2ldKTsKIAotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBs YW5lLCBJR1RfUExBTkVfQ1JUQ19YLCBjcnRjX3gpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3Bs YW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCBjcnRjX3kpOwotCQlpZ3RfYXRv bWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19XLCBjcnRj X3cpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfQ1JUQ19ILCBjcnRjX2gpOworCQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQ cm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLAorCQkJCQkJICBwbGFuZS0+ cHJvcHNbaV0sCisJCQkJCQkgIHBsYW5lLT52YWx1ZXNbaV0pKTsKIAl9Ci0KLQlpZiAocGxhbmUt PnJvdGF0aW9uX2NoYW5nZWQpCi0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwg cGxhbmUsCi0JCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7CiB9CiAKIApA QCAtMjE4MywxNyArMjEzNiwyMCBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGln dF9wbGFuZV90ICpwbGFuZSwKIAlpbnQzMl90IGNydGNfeTsKIAl1aW50MzJfdCBjcnRjX3c7CiAJ dWludDMyX3QgY3J0Y19oOworCWJvb2wgc2V0cGxhbmUgPQorCQlpZ3RfcGxhbmVfaXNfcHJvcF9j aGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfRkJfSUQpIHx8CisJCXBsYW5lLT5jaGFuZ2VkICYgSUdU X1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSzsKIAogCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFu ZSk7CiAKIAkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICov CiAJaWd0X2Fzc2VydChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8Ci0JCSAg ICFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7CisJCSAgICFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFu Z2VkKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04pKTsKIAogCWZiX2lkID0gaWd0X3BsYW5lX2dl dF9mYl9pZChwbGFuZSk7CiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CiAKLQlpZiAoKHBsYW5l LT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpICYmIGZiX2lkID09IDApIHsKKwlp ZiAoc2V0cGxhbmUgJiYgZmJfaWQgPT0gMCkgewogCQlMT0coZGlzcGxheSwKIAkJICAgICJTZXRQ bGFuZSBwaXBlICVzLCBwbGFuZSAlZCwgZGlzYWJsaW5nXG4iLAogCQkgICAga21zdGVzdF9waXBl X25hbWUocGlwZS0+cGlwZSksCkBAIC0yMjEyLDE2ICsyMTY4LDE1IEBAIHN0YXRpYyBpbnQgaWd0 X2RybV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAogCQkJCSAgICAgIElHVF9GSVhF RCgwLDApIC8qIHNyY19oICovKTsKIAogCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9y KTsKLQl9IGVsc2UgaWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5wb3NpdGlvbl9jaGFu Z2VkIHx8Ci0JCXBsYW5lLT5zaXplX2NoYW5nZWQpIHsKLQkJc3JjX3ggPSBJR1RfRklYRUQocGxh bmUtPnNyY194LDApOyAvKiBzcmNfeCAqLwotCQlzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+c3Jj X3ksMCk7IC8qIHNyY195ICovCi0JCXNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfdywwKTsg Lyogc3JjX3cgKi8KLQkJc3JjX2ggPSBJR1RfRklYRUQocGxhbmUtPnNyY19oLDApOyAvKiBzcmNf aCAqLwotCQljcnRjX3ggPSBwbGFuZS0+Y3J0Y194OwotCQljcnRjX3kgPSBwbGFuZS0+Y3J0Y195 OwotCQljcnRjX3cgPSBwbGFuZS0+Y3J0Y193OwotCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwor CX0gZWxzZSBpZiAoc2V0cGxhbmUpIHsKKwkJc3JjX3ggPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFO RV9TUkNfWF07CisJCXNyY195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldOworCQlz cmNfdyA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19XXTsKKwkJc3JjX2ggPSBwbGFuZS0+ dmFsdWVzW0lHVF9QTEFORV9TUkNfSF07CisJCWNydGNfeCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BM QU5FX0NSVENfWF07CisJCWNydGNfeSA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV07 CisJCWNydGNfdyA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfV107CisJCWNydGNfaCA9 IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfSF07CiAKIAkJTE9HKGRpc3BsYXksCiAJCSAg ICAiU2V0UGxhbmUgJXMuJWQsIGZiICV1LCBzcmMgPSAoJWQsICVkKSAiCkBAIC0yMjQ1LDkgKzIy MDAsMTAgQEAgc3RhdGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxh bmUsCiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwogCX0KIAotCWlmIChwbGFu ZS0+cm90YXRpb25fY2hhbmdlZCkgewotCQlyZXQgPSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5KHBs YW5lLCBwbGFuZS0+cm90YXRpb25fcHJvcGVydHksCi0JCQkJICAgICAgIHBsYW5lLT5yb3RhdGlv bik7CisJaWYgKGlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9ST1RB VElPTikpIHsKKwkJcmV0ID0gaWd0X3BsYW5lX3NldF9wcm9wZXJ0eShwbGFuZSwKKwkJCQkJICAg ICBwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1JPVEFUSU9OXSwKKwkJCQkJICAgICBwbGFuZS0+dmFs dWVzW0lHVF9QTEFORV9ST1RBVElPTl0pOwogCiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25f ZXJyb3IpOwogCX0KQEAgLTIyNjksMzUgKzIyMjUsMzAgQEAgc3RhdGljIGludCBpZ3RfY3Vyc29y X2NvbW1pdF9sZWdhY3koaWd0X3BsYW5lX3QgKmN1cnNvciwKIAl1aW50MzJfdCBjcnRjX2lkID0g cGlwZS0+Y3J0Y19pZDsKIAlpbnQgcmV0OwogCi0JaWYgKGN1cnNvci0+ZmJfY2hhbmdlZCkgewot CQl1aW50MzJfdCBnZW1faGFuZGxlID0gaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGN1cnNv cik7Ci0KLQkJaWYgKGdlbV9oYW5kbGUpIHsKKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdl ZChjdXJzb3IsIElHVF9QTEFORV9GQl9JRCkpIHsKKwkJaWYgKGN1cnNvci0+Z2VtX2hhbmRsZSkK IAkJCUxPRyhkaXNwbGF5LAogCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZmIgJXUgJWR4JWRc biIsCiAJCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCi0JCQkgICAgZ2VtX2hh bmRsZSwKLQkJCSAgICBjdXJzb3ItPmNydGNfdywgY3Vyc29yLT5jcnRjX2gpOwotCi0JCQlyZXQg PSBkcm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwgY3J0Y19pZCwKLQkJCQkJICAgICAg IGdlbV9oYW5kbGUsCi0JCQkJCSAgICAgICBjdXJzb3ItPmNydGNfdywKLQkJCQkJICAgICAgIGN1 cnNvci0+Y3J0Y19oKTsKLQkJfSBlbHNlIHsKKwkJCSAgICBjdXJzb3ItPmdlbV9oYW5kbGUsCisJ CQkgICAgKHVuc2lnbmVkKWN1cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddLAorCQkJICAg ICh1bnNpZ25lZCljdXJzb3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19IXSk7CisJCWVsc2UKIAkJ CUxPRyhkaXNwbGF5LAogCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZGlzYWJsaW5nXG4iLAog CQkJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpKTsKIAotCQkJcmV0ID0gZHJtTW9k ZVNldEN1cnNvcihkaXNwbGF5LT5kcm1fZmQsIGNydGNfaWQsCi0JCQkJCSAgICAgICAwLCAwLCAw KTsKLQkJfQotCisJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ZHJtX2ZkLCBjcnRj X2lkLAorCQkJCSAgICAgICBjdXJzb3ItPmdlbV9oYW5kbGUsCisJCQkJICAgICAgIGN1cnNvci0+ dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddLAorCQkJCSAgICAgICBjdXJzb3ItPnZhbHVlc1tJR1Rf UExBTkVfQ1JUQ19IXSk7CiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwogCX0K IAotCWlmIChjdXJzb3ItPnBvc2l0aW9uX2NoYW5nZWQpIHsKLQkJaW50IHggPSBjdXJzb3ItPmNy dGNfeDsKLQkJaW50IHkgPSBjdXJzb3ItPmNydGNfeTsKKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3Bf Y2hhbmdlZChjdXJzb3IsIElHVF9QTEFORV9DUlRDX1gpIHx8CisJICAgIGlndF9wbGFuZV9pc19w cm9wX2NoYW5nZWQoY3Vyc29yLCBJR1RfUExBTkVfQ1JUQ19ZKSkgeworCQlpbnQgeCA9IGN1cnNv ci0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1hdOworCQlpbnQgeSA9IGN1cnNvci0+dmFsdWVzW0lH VF9QTEFORV9DUlRDX1ldOwogCiAJCUxPRyhkaXNwbGF5LAogCQkgICAgIk1vdmVDdXJzb3IgcGlw ZSAlcywgKCVkLCAlZClcbiIsCkBAIC0yMzI2LDEzICsyMjc3LDE0IEBAIHN0YXRpYyBpbnQgaWd0 X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAlpbnQg cmV0OwogCiAJLyogUHJpbWFyeSBwbGFuZXMgY2FuJ3QgYmUgd2luZG93ZWQgd2hlbiB1c2luZyBh IGxlZ2FjeSBjb21taXQgKi8KLQlpZ3RfYXNzZXJ0KChwcmltYXJ5LT5jcnRjX3ggPT0gMCAmJiBw cmltYXJ5LT5jcnRjX3kgPT0gMCkpOworCWlndF9hc3NlcnQoKHByaW1hcnktPnZhbHVlc1tJR1Rf UExBTkVfQ1JUQ19YXSA9PSAwICYmIHByaW1hcnktPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19ZXSA9 PSAwKSk7CiAKIAkvKiBub3Igcm90YXRlZCAqLwotCWlndF9hc3NlcnQoIXByaW1hcnktPnJvdGF0 aW9uX2NoYW5nZWQpOworCWlndF9hc3NlcnQoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocHJp bWFyeSwgSUdUX1BMQU5FX1JPVEFUSU9OKSk7CiAKLQlpZiAoIXByaW1hcnktPmZiX2NoYW5nZWQg JiYgIXByaW1hcnktPnBvc2l0aW9uX2NoYW5nZWQgJiYKLQkgICAgIXByaW1hcnktPnNpemVfY2hh bmdlZCAmJiAhcHJpbWFyeS0+cGlwZS0+bW9kZV9jaGFuZ2VkKQorCWlmICghaWd0X3BsYW5lX2lz X3Byb3BfY2hhbmdlZChwcmltYXJ5LCBJR1RfUExBTkVfRkJfSUQpICYmCisJICAgICEocHJpbWFy eS0+Y2hhbmdlZCAmIElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0spICYmCisJICAgICFwcmlt YXJ5LT5waXBlLT5tb2RlX2NoYW5nZWQpCiAJCXJldHVybiAwOwogCiAJY3J0Y19pZCA9IHBpcGUt PmNydGNfaWQ7CkBAIC0yMzQzLDE5ICsyMjk1LDIyIEBAIHN0YXRpYyBpbnQgaWd0X3ByaW1hcnlf cGxhbmVfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAkJbW9kZSA9IE5VTEw7 CiAKIAlpZiAoZmJfaWQpIHsKKwkJdWludDMyX3Qgc3JjX3ggPSBwcmltYXJ5LT52YWx1ZXNbSUdU X1BMQU5FX1NSQ19YXSA+PiAxNjsKKwkJdWludDMyX3Qgc3JjX3kgPSBwcmltYXJ5LT52YWx1ZXNb SUdUX1BMQU5FX1NSQ19ZXSA+PiAxNjsKKwogCQlMT0coZGlzcGxheSwKIAkJICAgICIlczogU2V0 Q3J0YyBwaXBlICVzLCBmYiAldSwgc3JjICglZCwgJWQpLCAiCiAJCSAgICAibW9kZSAlZHglZFxu IiwKIAkJICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAogCQkgICAga21zdGVzdF9waXBlX25h bWUocGlwZS0+cGlwZSksCiAJCSAgICBmYl9pZCwKLQkJICAgIHByaW1hcnktPnNyY194LCBwcmlt YXJ5LT5zcmNfeSwKKwkJICAgIHNyY194LCBzcmNfeSwKIAkJICAgIG1vZGUtPmhkaXNwbGF5LCBt b2RlLT52ZGlzcGxheSk7CiAKIAkJcmV0ID0gZHJtTW9kZVNldENydGMoZGlzcGxheS0+ZHJtX2Zk LAogCQkJCSAgICAgY3J0Y19pZCwKIAkJCQkgICAgIGZiX2lkLAotCQkJCSAgICAgcHJpbWFyeS0+ c3JjX3gsIHByaW1hcnktPnNyY195LAorCQkJCSAgICAgc3JjX3gsIHNyY195LAogCQkJCSAgICAg Jm91dHB1dC0+aWQsCiAJCQkJICAgICAxLAogCQkJCSAgICAgbW9kZSk7CkBAIC0yNjA4LDE4ICsy NTYzLDI3IEBAIGRpc3BsYXlfY29tbWl0X2NoYW5nZWQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg ZW51bSBpZ3RfY29tbWl0X3N0eWxlIHMpCiAJCX0KIAogCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBl KGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Ci0JCQlwbGFuZS0+ZmJfY2hhbmdlZCA9IGZhbHNlOwot CQkJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKLQkJCXBsYW5lLT5zaXplX2NoYW5n ZWQgPSBmYWxzZTsKKwkJCWlmIChzID09IENPTU1JVF9BVE9NSUMpIHsKKwkJCQlpbnQgZmQ7CisJ CQkJcGxhbmUtPmNoYW5nZWQgPSAwOwogCi0JCQlpZiAocyAhPSBDT01NSVRfTEVHQUNZIHx8Ci0J CQkgICAgIShwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZIHx8Ci0JCQkgICAg ICBwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpKQotCQkJCXBsYW5lLT5yb3Rh dGlvbl9jaGFuZ2VkID0gZmFsc2U7CisJCQkJZmQgPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9J Tl9GRU5DRV9GRF07CisJCQkJaWYgKGZkICE9IC0xKQorCQkJCQljbG9zZShmZCk7CiAKLQkJCWlm IChzID09IENPTU1JVF9BVE9NSUMpCiAJCQkJLyogcmVzZXQgZmVuY2VfZmQgdG8gcHJldmVudCBp dCBmcm9tIGJlaW5nIHNldCBmb3IgdGhlIG5leHQgY29tbWl0ICovCi0JCQkJaWd0X3BsYW5lX3Nl dF9mZW5jZV9mZChwbGFuZSwgLTEpOworCQkJCXBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0lOX0ZF TkNFX0ZEXSA9IC0xOworCQkJfSBlbHNlIHsKKwkJCQlwbGFuZS0+Y2hhbmdlZCAmPSB+SUdUX1BM QU5FX0NPT1JEX0NIQU5HRURfTUFTSzsKKworCQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5n ZWQocGxhbmUsIElHVF9QTEFORV9DUlRDX0lEKTsKKwkJCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9j aGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfRkJfSUQpOworCisJCQkJaWYgKHMgIT0gQ09NTUlUX0xF R0FDWSB8fAorCQkJCSAgICAhKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkg fHwKKwkJCQkgICAgICBwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpKQorCQkJ CQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04p OworCQkJfQogCQl9CiAJfQogCkBAIC0yOTEzLDMwICsyODc3LDMxIEBAIHZvaWQgaWd0X3BsYW5l X3NldF9mYihpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCUxPRyhkaXNw bGF5LCAiJXMuJWQ6IHBsYW5lX3NldF9mYiglZClcbiIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUt PnBpcGUpLAogCSAgICBwbGFuZS0+aW5kZXgsIGZiID8gZmItPmZiX2lkIDogMCk7CiAKLQlwbGFu ZS0+ZmIgPSBmYjsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9D UlRDX0lELCBmYiA/IHBpcGUtPmNydGNfaWQgOiAwKTsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFs dWUocGxhbmUsIElHVF9QTEFORV9GQl9JRCwgZmIgPyBmYi0+ZmJfaWQgOiAwKTsKKworCWlmIChw bGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgJiYgZmIpCisJCXBsYW5lLT5nZW1f aGFuZGxlID0gZmItPmdlbV9oYW5kbGU7CisJZWxzZQorCQlwbGFuZS0+Z2VtX2hhbmRsZSA9IDA7 CisKIAkvKiBoYWNrIHRvIGtlZXAgdGVzdHMgd29ya2luZyB0aGF0IGRvbid0IGNhbGwgaWd0X3Bs YW5lX3NldF9zaXplKCkgKi8KIAlpZiAoZmIpIHsKIAkJLyogc2V0IGRlZmF1bHQgcGxhbmUgc2l6 ZSBhcyBmYiBzaXplICovCi0JCXBsYW5lLT5jcnRjX3cgPSBmYi0+d2lkdGg7Ci0JCXBsYW5lLT5j cnRjX2ggPSBmYi0+aGVpZ2h0OworCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAw KTsKKwkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwog CiAJCS8qIHNldCBkZWZhdWx0IHNyYyBwb3Mvc2l6ZSBhcyBmYiBzaXplICovCi0JCXBsYW5lLT5z cmNfeCA9IDA7Ci0JCXBsYW5lLT5zcmNfeSA9IDA7Ci0JCXBsYW5lLT5zcmNfdyA9IGZiLT53aWR0 aDsKLQkJcGxhbmUtPnNyY19oID0gZmItPmhlaWdodDsKKwkJaWd0X2ZiX3NldF9wb3NpdGlvbihm YiwgcGxhbmUsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoZmIsIHBsYW5lLCBmYi0+d2lkdGgs IGZiLT5oZWlnaHQpOwogCX0gZWxzZSB7Ci0JCXBsYW5lLT5zcmNfeCA9IDA7Ci0JCXBsYW5lLT5z cmNfeSA9IDA7Ci0JCXBsYW5lLT5zcmNfdyA9IDA7Ci0JCXBsYW5lLT5zcmNfaCA9IDA7CisJCWln dF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUo cGxhbmUsIDAsIDApOwogCi0JCXBsYW5lLT5jcnRjX3cgPSAwOwotCQlwbGFuZS0+Y3J0Y19oID0g MDsKKwkJLyogc2V0IGRlZmF1bHQgc3JjIHBvcy9zaXplIGFzIGZiIHNpemUgKi8KKwkJaWd0X2Zi X3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoZmIsIHBs YW5lLCAwLCAwKTsKIAl9Ci0KLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Ci0JcGxhbmUtPnNp emVfY2hhbmdlZCA9IHRydWU7CiB9CiAKIC8qKgpAQCAtMjk0OSwxMiArMjkxNCwxOSBAQCB2b2lk IGlndF9wbGFuZV9zZXRfZmIoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYikK ICAqLwogdm9pZCBpZ3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKGlndF9wbGFuZV90ICpwbGFuZSwgaW50 IGZlbmNlX2ZkKQogewotCWNsb3NlKHBsYW5lLT5mZW5jZV9mZCk7CisJaW50NjRfdCBmZDsKIAot CWlmIChmY250bChmZW5jZV9mZCwgRl9HRVRGRCkgIT0gLTEpCi0JCXBsYW5lLT5mZW5jZV9mZCA9 IGR1cChmZW5jZV9mZCk7Ci0JZWxzZQotCQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKKwlmZCA9IHBs YW5lLT52YWx1ZXNbSUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXTsKKwlpZiAoZmQgIT0gLTEpCisJCWNs b3NlKGZkKTsKKworCWlmIChmZW5jZV9mZCAhPSAtMSkgeworCQlmZCA9IGR1cChmZW5jZV9mZCk7 CisJCWlndF9mYWlsX29uKGZkID09IC0xKTsKKwl9IGVsc2UKKwkJZmQgPSAtMTsKKworCWlndF9w bGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0lOX0ZFTkNFX0ZELCBmZCk7CiB9 CiAKIHZvaWQgaWd0X3BsYW5lX3NldF9wb3NpdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB4 LCBpbnQgeSkKQEAgLTI5NjUsMTAgKzI5MzcsOCBAQCB2b2lkIGlndF9wbGFuZV9zZXRfcG9zaXRp b24oaWd0X3BsYW5lX3QgKnBsYW5lLCBpbnQgeCwgaW50IHkpCiAJTE9HKGRpc3BsYXksICIlcy4l ZDogcGxhbmVfc2V0X3Bvc2l0aW9uKCVkLCVkKVxuIiwKIAkgICAga21zdGVzdF9waXBlX25hbWUo cGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgeCwgeSk7CiAKLQlwbGFuZS0+Y3J0Y194ID0geDsK LQlwbGFuZS0+Y3J0Y195ID0geTsKLQotCXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gdHJ1ZTsK KwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIHgpOwor CWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgeSk7CiB9 CiAKIC8qKgpAQCAtMjk4OSwxMCArMjk1OSw4IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9zaXplKGln dF9wbGFuZV90ICpwbGFuZSwgaW50IHcsIGludCBoKQogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IHBs YW5lX3NldF9zaXplICglZHglZClcbiIsCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBp cGUpLCBwbGFuZS0+aW5kZXgsIHcsIGgpOwogCi0JcGxhbmUtPmNydGNfdyA9IHc7Ci0JcGxhbmUt PmNydGNfaCA9IGg7Ci0KLQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGxhbmVf c2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9DUlRDX1csIHcpOworCWlndF9wbGFuZV9z ZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfSCwgaCk7CiB9CiAKIC8qKgpAQCAt MzAxNCwxMCArMjk4Miw4IEBAIHZvaWQgaWd0X2ZiX3NldF9wb3NpdGlvbihzdHJ1Y3QgaWd0X2Zi ICpmYiwgaWd0X3BsYW5lX3QgKnBsYW5lLAogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9w b3NpdGlvbiglZCwlZClcbiIsCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBw bGFuZS0+aW5kZXgsIHgsIHkpOwogCi0JcGxhbmUtPnNyY194ID0geDsKLQlwbGFuZS0+c3JjX3kg PSB5OwotCi0JcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92 YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBJR1RfRklYRUQoeCwgMCkpOworCWlndF9wbGFu ZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoeSwgMCkp OwogfQogCiAvKioKQEAgLTMwNDAsMTAgKzMwMDYsOCBAQCB2b2lkIGlndF9mYl9zZXRfc2l6ZShz dHJ1Y3QgaWd0X2ZiICpmYiwgaWd0X3BsYW5lX3QgKnBsYW5lLAogCUxPRyhkaXNwbGF5LCAiJXMu JWQ6IGZiX3NldF9zaXplKCVkeCVkKVxuIiwKIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+ cGlwZSksIHBsYW5lLT5pbmRleCwgdywgaCk7CiAKLQlwbGFuZS0+c3JjX3cgPSB3OwotCXBsYW5l LT5zcmNfaCA9IGg7Ci0KLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7CisJaWd0X3BsYW5lX3Nl dF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIElHVF9GSVhFRCh3LCAwKSk7CisJ aWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsIElHVF9GSVhF RChoLCAwKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpyb3RhdGlvbl9uYW1lKGlndF9yb3Rh dGlvbl90IHJvdGF0aW9uKQpAQCAtMzA3MSw5ICszMDM1LDcgQEAgdm9pZCBpZ3RfcGxhbmVfc2V0 X3JvdGF0aW9uKGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24pCiAJ ICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwbGFuZS0+aW5kZXgsIHJv dGF0aW9uX25hbWUocm90YXRpb24pKTsKIAotCXBsYW5lLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwot Ci0JcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQgPSB0cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92 YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1JPVEFUSU9OLCByb3RhdGlvbik7CiB9CiAKIC8qKgpkaWZm IC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggMWVmMTBlN2Q1MjVj Li5mODdmOGJlMzE0MjEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGliL2lndF9r bXMuaApAQCAtMjUyLDYgKzI1Miw5IEBAIGVudW0gaWd0X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVz IHsKICAgICAgICBJR1RfUExBTkVfQ1JUQ19XLAogICAgICAgIElHVF9QTEFORV9DUlRDX0gsCiAK Ky8qIEFwcGVuZCBuZXcgcHJvcGVydGllcyBhZnRlciBJR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9N QVNLICovCisjZGVmaW5lIElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0sgMHhmZgorCiAgICAg ICAgSUdUX1BMQU5FX0ZCX0lELAogICAgICAgIElHVF9QTEFORV9DUlRDX0lELAogICAgICAgIElH VF9QTEFORV9JTl9GRU5DRV9GRCwKQEAgLTI4NiwzNyArMjg5LDE5IEBAIHR5cGVkZWYgc3RydWN0 IHsKIAlpbnQgaW5kZXg7CiAJLyogY2FwYWJpbGl0aWVzICovCiAJaW50IHR5cGU7Ci0JLyogc3Rh dGUgdHJhY2tpbmcgKi8KLQl1bnNpZ25lZCBpbnQgZmJfY2hhbmdlZCAgICAgICA6IDE7Ci0JdW5z aWduZWQgaW50IHBvc2l0aW9uX2NoYW5nZWQgOiAxOwotCXVuc2lnbmVkIGludCByb3RhdGlvbl9j aGFuZ2VkIDogMTsKLQl1bnNpZ25lZCBpbnQgc2l6ZV9jaGFuZ2VkICAgICA6IDE7CisKIAkvKgog CSAqIGRybV9wbGFuZSBjYW4gYmUgTlVMTCBmb3IgcHJpbWFyeSBhbmQgY3Vyc29yIHBsYW5lcyAo d2hlbiBub3QKIAkgKiB1c2luZyB0aGUgYXRvbWljIG1vZGVzZXQgQVBJKQogCSAqLwogCWRybU1v ZGVQbGFuZSAqZHJtX3BsYW5lOwotCXN0cnVjdCBpZ3RfZmIgKmZiOwotCi0JdWludDMyX3Qgcm90 YXRpb25fcHJvcGVydHk7Ci0KLQkvKiBwb3NpdGlvbiB3aXRoaW4gcGlwZV9zcmNfdyB4IHBpcGVf c3JjX2ggKi8KLQlpbnQgY3J0Y194LCBjcnRjX3k7Ci0JLyogc2l6ZSB3aXRoaW4gcGlwZV9zcmNf dyB4IHBpcGVfc3JjX2ggKi8KLQlpbnQgY3J0Y193LCBjcnRjX2g7CiAKLQkvKiBwb3NpdGlvbiB3 aXRoaW4gdGhlIGZyYW1lYnVmZmVyICovCi0JdWludDMyX3Qgc3JjX3g7Ci0JdWludDMyX3Qgc3Jj X3k7Ci0JLyogc2l6ZSB3aXRoaW4gdGhlIGZyYW1lYnVmZmVyKi8KLQl1aW50MzJfdCBzcmNfdzsK LQl1aW50MzJfdCBzcmNfaDsKKwkvKiBnZW0gaGFuZGxlIGZvciBmYiAqLworCXVpbnQzMl90IGdl bV9oYW5kbGU7CiAKLQlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsKLQotCS8qIGluIGZlbmNlIGZk ICovCi0JaW50IGZlbmNlX2ZkOwotCXVpbnQzMl90IGF0b21pY19wcm9wc19wbGFuZVtJR1RfTlVN X1BMQU5FX1BST1BTXTsKKwl1aW50NjRfdCBjaGFuZ2VkOworCXVpbnQzMl90IHByb3BzW0lHVF9O VU1fUExBTkVfUFJPUFNdOworCXVpbnQ2NF90IHZhbHVlc1tJR1RfTlVNX1BMQU5FX1BST1BTXTsK IH0gaWd0X3BsYW5lX3Q7CiAKIHN0cnVjdCBpZ3RfcGlwZSB7CkBAIC00MDcsNyArMzkyLDcgQEAg Ym9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwgY29uc3QgY2hhciAq bmFtZSwKIAogc3RhdGljIGlubGluZSBib29sIGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlvbihp Z3RfcGxhbmVfdCAqcGxhbmUpCiB7Ci0JcmV0dXJuIHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSAh PSAwOworCXJldHVybiBwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1JPVEFUSU9OXSAhPSAwOwogfQog dm9pZCBpZ3RfcGlwZV9yZXF1ZXN0X291dF9mZW5jZShpZ3RfcGlwZV90ICpwaXBlKTsKIHZvaWQg aWd0X3BpcGVfc2V0X2RlZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBpcGUsIHZvaWQgKnB0ciwgc2l6 ZV90IGxlbmd0aCk7CkBAIC01MjcsMTYgKzUxMiwyMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaWd0 X291dHB1dF9pc19jb25uZWN0ZWQoaWd0X291dHB1dF90ICpvdXRwdXQpCiAKICNkZWZpbmUgSUdU X0ZJWEVEKGksZikJKChpKSA8PCAxNiB8IChmKSkKIAotLyoqCi0gKiBpZ3RfYXRvbWljX3BvcHVs YXRlX3BsYW5lX3JlcToKLSAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCi0g KiBAcGxhbmU6IEEgcG9pbnRlciBpZ3RfcGxhbmVfdAotICogQHByb3A6IG9uZSBvZiBpZ3RfYXRv bWljX3BsYW5lX3Byb3BlcnRpZXMKLSAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAotICovCi0j ZGVmaW5lIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZh bHVlKSBcCi0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBw bGFuZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCxcCi0JCQkJCQkgIHBsYW5lLT5hdG9taWNfcHJvcHNf cGxhbmVbcHJvcF0sIHZhbHVlKSkKKyNkZWZpbmUgaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChw bGFuZSwgcHJvcCkgXAorCSghISgocGxhbmUpLT5jaGFuZ2VkICYgKDEgPDwgKHByb3ApKSkpCisK KyNkZWZpbmUgaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApIFwKKwkocGxh bmUpLT5jaGFuZ2VkIHw9IDEgPDwgKHByb3ApCisKKyNkZWZpbmUgaWd0X3BsYW5lX2NsZWFyX3By b3BfY2hhbmdlZChwbGFuZSwgcHJvcCkgXAorCShwbGFuZSktPmNoYW5nZWQgJj0gfigxIDw8IChw cm9wKSkKKworI2RlZmluZSBpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIHByb3AsIHZh bHVlKSBcCisJZG8geyBcCisJCXBsYW5lLT52YWx1ZXNbcHJvcF0gPSB2YWx1ZTsgXAorCQlpZ3Rf cGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwbGFuZSwgcHJvcCk7IFwKKwl9IHdoaWxlICgwKQogCiAv KioKICAqIGlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXE6CmRpZmYgLS1naXQgYS90ZXN0cy9r bXNfYXRvbWljX2ludGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJs ZS5jCmluZGV4IDJkMTlmZTk2NzgwOS4uNTU3MDg1NDM5MGVhIDEwMDY0NAotLS0gYS90ZXN0cy9r bXNfYXRvbWljX2ludGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVw dGlibGUuYwpAQCAtMTYxLDEyICsxNjEsMTIgQEAgc3RhdGljIHZvaWQgcnVuX3BsYW5lX3Rlc3Qo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdAogCQkJ CQkvKiBjb25uZWN0b3I6IDEgcHJvcCAqLwogCQkJCQlvdXRwdXQtPnByb3BzW0lHVF9DT05ORUNU T1JfQ1JUQ19JRF0sCiAJCQkJCS8qIHBsYW5lOiByZW1haW5kZXIgcHJvcHMgKi8KLQkJCQkJcGxh bmUtPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19JRF0sCi0JCQkJCXBsYW5lLT5h dG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX0ZCX0lEXSwKLQkJCQkJcGxhbmUtPmF0b21pY19w cm9wc19wbGFuZVtJR1RfUExBTkVfU1JDX1ddLAotCQkJCQlwbGFuZS0+YXRvbWljX3Byb3BzX3Bs YW5lW0lHVF9QTEFORV9TUkNfSF0sCi0JCQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbSUdU X1BMQU5FX0NSVENfV10sCi0JCQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5F X0NSVENfSF0KKwkJCQkJcGxhbmUtPnByb3BzW0lHVF9QTEFORV9DUlRDX0lEXSwKKwkJCQkJcGxh bmUtPnByb3BzW0lHVF9QTEFORV9GQl9JRF0sCisJCQkJCXBsYW5lLT5wcm9wc1tJR1RfUExBTkVf U1JDX1ddLAorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1NSQ19IXSwKKwkJCQkJcGxhbmUt PnByb3BzW0lHVF9QTEFORV9DUlRDX1ddLAorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX0NS VENfSF0KIAkJCQl9OwogCQkJCXVpbnQ2NF90IHByb3BfdmFsc1tdID0gewogCQkJCQkvKiBjcnRj ICovCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMgYi90ZXN0cy9rbXNfcm90 YXRpb25fY3JjLmMKaW5kZXggNGQyZWYxYzE4NGYwLi40OTMyYTBkNDQ0MTAgMTAwNjQ0Ci0tLSBh L3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYworKysgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMK QEAgLTEyMiwxMSArMTIyLDExIEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRh dGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwKIAlpZ3RfcGxhbmVfc2V0 X2ZiKHByaW1hcnksICZkYXRhLT5mYl9tb2Rlc2V0KTsKIAogCWlmIChjb21taXQgPCBDT01NSVRf QVRPTUlDKSB7Ci0JCXByaW1hcnktPnJvdGF0aW9uX2NoYW5nZWQgPSBmYWxzZTsKKwkJaWd0X3Bs YW5lX2NsZWFyX3Byb3BfY2hhbmdlZChwcmltYXJ5LCBJR1RfUExBTkVfUk9UQVRJT04pOwogCQlp Z3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7CiAKIAkJaWYgKHBsYW5lLT50eXBlID09IERSTV9Q TEFORV9UWVBFX1BSSU1BUlkpCi0JCQlwcmltYXJ5LT5yb3RhdGlvbl9jaGFuZ2VkID0gdHJ1ZTsK KwkJCWlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9ST1RBVElP Tik7CiAJfQogCiAJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Ci0tIAoyLjE0LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=