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, v4. Date: Thu, 28 Sep 2017 13:01:05 +0200 Message-ID: <20170928110105.12466-1-maarten.lankhorst@linux.intel.com> References: <20170928102840.1978-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 359AE6E8FC for ; Thu, 28 Sep 2017 11:01:10 +0000 (UTC) In-Reply-To: <20170928102840.1978-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 LSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KQ2hhbmdlcyBzaW5jZSB2MjoKLSBNb3Zl IGlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkIHVwIHNsaWdodGx5LgpDaGFuZ2VzIHNpbmNlIHYz OgotIEZpeCB3cm9uZyBvcmRlcmluZyBvZiBzZXRfcG9zaXRpb24gaW4ga21zX3BsYW5lX2xvd3Jl cyBjYXVzaW5nIGEgdGVzdCBmYWlsdXJlLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ttcy5j ICAgICAgICAgICAgICAgICAgICB8IDI5MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAgICAgIHwgIDU5ICsrKystLS0t CiB0ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyB8ICAxMiArLQogdGVzdHMva21zX3Bs YW5lX2xvd3Jlcy5jICAgICAgICAgfCAgIDIgKy0KIHRlc3RzL2ttc19yb3RhdGlvbl9jcmMuYyAg ICAgICAgIHwgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspLCAyMTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMK aW5kZXggMDdkMjA3NGMyYjFhLi42ZTAwNTJlYmU3YTcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21z LmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMTkyLDExICsxOTIsMTEgQEAgY29uc3QgY2hhciAq aWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXSA9IHsKIAog LyoKICAqIFJldHJpZXZlIGFsbCB0aGUgcHJvcGVyaWVzIHNwZWNpZmllZCBpbiBwcm9wc19uYW1l IGFuZCBzdG9yZSB0aGVtIGludG8KLSAqIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmUuCisgKiBw bGFuZS0+cHJvcHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1pZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJv cHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BsYW5lX3QgKnBsYW5lLAotCQkJaW50IG51 bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCitpZ3RfZmlsbF9wbGFuZV9wcm9wcyhp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCSAgICAgaW50IG51 bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCiB7CiAJZHJtTW9kZU9iamVjdFByb3Bl cnRpZXNQdHIgcHJvcHM7CiAJaW50IGksIGosIGZkOwpAQCAtMjE0LDcgKzIxNCw3IEBAIGlndF9h dG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVf dCAqcGxhbmUsCiAJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIHByb3BfbmFtZXNbal0pICE9IDAp CiAJCQkJY29udGludWU7CiAKLQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbal0gPSBwcm9w cy0+cHJvcHNbaV07CisJCQlwbGFuZS0+cHJvcHNbal0gPSBwcm9wcy0+cHJvcHNbaV07CiAJCQli cmVhazsKIAkJfQogCkBAIC0xNjU5LDcgKzE2NTksNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAlkcm1Nb2RlUmVzICpyZXNvdXJj ZXM7CiAJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJjZXM7CiAJaW50IGk7Ci0JaW50IGlz X2F0b21pYyA9IDA7CiAKIAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3Qp KTsKIApAQCAtMTY3OSw3ICsxNjc4LDkgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJaWd0X2Fzc2VydF9mKGRpc3BsYXktPnBpcGVz LCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgJWQgcGlwZXNcbiIsIGRpc3BsYXktPm5f cGlwZXMpOwogCiAJZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfVU5JVkVS U0FMX1BMQU5FUywgMSk7Ci0JaXNfYXRvbWljID0gZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJN X0NMSUVOVF9DQVBfQVRPTUlDLCAxKTsKKwlpZiAoZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJN X0NMSUVOVF9DQVBfQVRPTUlDLCAxKSA9PSAwKQorCQlkaXNwbGF5LT5pc19hdG9taWMgPSAxOwor CiAJcGxhbmVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFBsYW5lUmVzb3VyY2VzKGRpc3BsYXktPmRy bV9mZCk7CiAJaWd0X2Fzc2VydChwbGFuZV9yZXNvdXJjZXMpOwogCkBAIC0xNzc2LDE5ICsxNzc3 LDE5IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQg ZHJtX2ZkKQogCQkJcGxhbmUtPnR5cGUgPSB0eXBlOwogCQkJcGxhbmUtPnBpcGUgPSBwaXBlOwog CQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsKLQkJCXBsYW5lLT5mZW5jZV9mZCA9IC0x OworCQkJcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdID0gfjBVTEw7CiAKLQkJ CWlmIChpc19hdG9taWMgPT0gMCkgewotCQkJCWRpc3BsYXktPmlzX2F0b21pYyA9IDE7Ci0JCQkJ aWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1RfTlVNX1BMQU5F X1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Ci0JCQl9CisJCQlpZ3RfZmlsbF9wbGFuZV9w cm9wcyhkaXNwbGF5LCBwbGFuZSwgSUdUX05VTV9QTEFORV9QUk9QUywgaWd0X3BsYW5lX3Byb3Bf bmFtZXMpOwogCiAJCQlnZXRfcGxhbmVfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBkcm1fcGxh bmUtPnBsYW5lX2lkLAogCQkJCQkgICAicm90YXRpb24iLAotCQkJCQkgICAmcGxhbmUtPnJvdGF0 aW9uX3Byb3BlcnR5LAotCQkJCQkgICAmcHJvcF92YWx1ZSwKKwkJCQkJICAgJnBsYW5lLT5wcm9w c1tJR1RfUExBTkVfUk9UQVRJT05dLAorCQkJCQkgICAmcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVf Uk9UQVRJT05dLAogCQkJCQkgICBOVUxMKTsKLQkJCXBsYW5lLT5yb3RhdGlvbiA9IChpZ3Rfcm90 YXRpb25fdClwcm9wX3ZhbHVlOworCisJCQkvKiBDbGVhciBhbnkgcmVzaWR1YWwgZnJhbWVidWZm ZXIgb24gZmlyc3QgY29tbWl0LiAqLworCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxh bmUsIElHVF9QTEFORV9GQl9JRCk7CisJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwbGFu ZSwgSUdUX1BMQU5FX0NSVENfSUQpOwogCQl9CiAKIAkJLyoKQEAgLTE4MDUsOSArMTgwNiw2IEBA IHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2Zk KQogCiAJCXBpcGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7CiAKLQkJZm9yX2VhY2hfcGxhbmVfb25f cGlwZShkaXNwbGF5LCBpLCBwbGFuZSkKLQkJCXBsYW5lLT5mYl9jaGFuZ2VkID0gdHJ1ZTsKLQog CQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwogCX0KIApAQCAtMjA3MCwxOCArMjA2OCw3IEBA IGJvb2wgaWd0X3BpcGVfZ2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBpcGUsIGNvbnN0IGNoYXIg Km5hbWUsCiAKIHN0YXRpYyB1aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKGlndF9wbGFuZV90 ICpwbGFuZSkKIHsKLQlpZiAocGxhbmUtPmZiKQotCQlyZXR1cm4gcGxhbmUtPmZiLT5mYl9pZDsK LQllbHNlCi0JCXJldHVybiAwOwotfQotCi1zdGF0aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9m Yl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkKLXsKLQlpZiAocGxhbmUtPmZiKQotCQly ZXR1cm4gcGxhbmUtPmZiLT5nZW1faGFuZGxlOwotCWVsc2UKLQkJcmV0dXJuIDA7CisJcmV0dXJu IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0ZCX0lEXTsKIH0KIAogI2RlZmluZSBDSEVDS19SRVRV Uk4ociwgZmFpbCkgewlcCkBAIC0yMDkwLDkgKzIwNzcsNiBAQCBzdGF0aWMgdWludDMyX3QgaWd0 X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90ICpwbGFuZSkKIAlpZ3RfYXNzZXJ0 X2VxKHIsIDApOwlcCiB9CiAKLQotCi0KIC8qCiAgKiBBZGQgcG9zaXRpb24gYW5kIGZiIGNoYW5n ZXMgb2YgYSBwbGFuZSB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAogICovCkBAIC0yMTAxLDYz ICsyMDg1LDMxIEBAIGlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3Qg KnBsYW5lLCBpZ3RfcGlwZV90ICpwaXBlLAogCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKIHsKIAlp Z3RfZGlzcGxheV90ICpkaXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsKLQl1aW50MzJfdCBmYl9pZCwg Y3J0Y19pZDsKKwlpbnQgaTsKIAogCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7CiAKLQkv KiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCi0JaWd0X2Fz c2VydChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8Ci0JCQkhcGxhbmUtPnJv dGF0aW9uX2NoYW5nZWQpOwotCi0JZmJfaWQgPSBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKTsK LQljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKLQogCUxPRyhkaXNwbGF5LAogCSAgICAicG9wdWxh dGluZyBwbGFuZSBkYXRhOiAlcy4lZCwgZmIgJXVcbiIsCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1l KHBpcGUtPnBpcGUpLAogCSAgICBwbGFuZS0+aW5kZXgsCi0JICAgIGZiX2lkKTsKLQotCWlmIChw bGFuZS0+ZmVuY2VfZmQgPj0gMCkgewotCQl1aW50NjRfdCBmZW5jZV9mZCA9IChpbnQ2NF90KSBw bGFuZS0+ZmVuY2VfZmQ7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsIElHVF9QTEFORV9JTl9GRU5DRV9GRCwgZmVuY2VfZmQpOwotCX0KKwkgICAgaWd0X3BsYW5l X2dldF9mYl9pZChwbGFuZSkpOwogCi0JaWYgKHBsYW5lLT5mYl9jaGFuZ2VkKSB7Ci0JCWlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0lELCBm Yl9pZCA/IGNydGNfaWQgOiAwKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Ci0JfQotCi0JaWYgKHBsYW5lLT5wb3Np dGlvbl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpIHsKLQkJdWludDMyX3Qgc3JjX3gg PSBJR1RfRklYRUQocGxhbmUtPnNyY194LCAwKTsgLyogc3JjX3ggKi8KLQkJdWludDMyX3Qgc3Jj X3kgPSBJR1RfRklYRUQocGxhbmUtPnNyY195LCAwKTsgLyogc3JjX3kgKi8KLQkJdWludDMyX3Qg c3JjX3cgPSBJR1RfRklYRUQocGxhbmUtPnNyY193LCAwKTsgLyogc3JjX3cgKi8KLQkJdWludDMy X3Qgc3JjX2ggPSBJR1RfRklYRUQocGxhbmUtPnNyY19oLCAwKTsgLyogc3JjX2ggKi8KLQkJaW50 MzJfdCBjcnRjX3ggPSBwbGFuZS0+Y3J0Y194OwotCQlpbnQzMl90IGNydGNfeSA9IHBsYW5lLT5j cnRjX3k7Ci0JCXVpbnQzMl90IGNydGNfdyA9IHBsYW5lLT5jcnRjX3c7Ci0JCXVpbnQzMl90IGNy dGNfaCA9IHBsYW5lLT5jcnRjX2g7CisJZm9yIChpID0gMDsgaSA8IElHVF9OVU1fUExBTkVfUFJP UFM7IGkrKykgeworCQlpZiAoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsIGkpKQor CQkJY29udGludWU7CiAKLQkJTE9HKGRpc3BsYXksCi0JCSJzcmMgPSAoJWQsICVkKSAldSB4ICV1 ICIKLQkJImRzdCA9ICglZCwgJWQpICV1IHggJXVcbiIsCi0JCXNyY194ID4+IDE2LCBzcmNfeSA+ PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAotCQljcnRjX3gsIGNydGNfeSwgY3J0Y193 LCBjcnRjX2gpOworCQkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0 dXJlICovCisJCWlndF9hc3NlcnQocGxhbmUtPnByb3BzW2ldKTsKIAotCQlpZ3RfYXRvbWljX3Bv cHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1gsIHNyY194KTsKLQkJ aWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19Z LCBzcmNfeSk7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElH VF9QTEFORV9TUkNfVywgc3JjX3cpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShy ZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsIHNyY19oKTsKKwkJaWd0X2RlYnVnKCJwbGFuZSAl cy4lZDogU2V0dGluZyBwcm9wZXJ0eSBcIiVzXCIgdG8gMHglIlBSSXg2NCIvJSJQUklpNjQiXG4i LAorCQkJa21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgaWd0X3Bs YW5lX3Byb3BfbmFtZXNbaV0sCisJCQlwbGFuZS0+dmFsdWVzW2ldLCBwbGFuZS0+dmFsdWVzW2ld KTsKIAotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExB TkVfQ1JUQ19YLCBjcnRjX3gpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEs IHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCBjcnRjX3kpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19XLCBjcnRjX3cpOwotCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCBj cnRjX2gpOworCQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEs IHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLAorCQkJCQkJICBwbGFuZS0+cHJvcHNbaV0sCisJ CQkJCQkgIHBsYW5lLT52YWx1ZXNbaV0pKTsKIAl9Ci0KLQlpZiAocGxhbmUtPnJvdGF0aW9uX2No YW5nZWQpCi0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCi0JCQlJ R1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7CiB9CiAKIApAQCAtMjE4MywxNyAr MjEzNSwyMCBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpw bGFuZSwKIAlpbnQzMl90IGNydGNfeTsKIAl1aW50MzJfdCBjcnRjX3c7CiAJdWludDMyX3QgY3J0 Y19oOworCWJvb2wgc2V0cGxhbmUgPQorCQlpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBsYW5l LCBJR1RfUExBTkVfRkJfSUQpIHx8CisJCXBsYW5lLT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JE X0NIQU5HRURfTUFTSzsKIAogCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7CiAKIAkvKiBp dCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCiAJaWd0X2Fzc2Vy dChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8Ci0JCSAgICFwbGFuZS0+cm90 YXRpb25fY2hhbmdlZCk7CisJCSAgICFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJ R1RfUExBTkVfUk9UQVRJT04pKTsKIAogCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFu ZSk7CiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CiAKLQlpZiAoKHBsYW5lLT5mYl9jaGFuZ2Vk IHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpICYmIGZiX2lkID09IDApIHsKKwlpZiAoc2V0cGxhbmUg JiYgZmJfaWQgPT0gMCkgewogCQlMT0coZGlzcGxheSwKIAkJICAgICJTZXRQbGFuZSBwaXBlICVz LCBwbGFuZSAlZCwgZGlzYWJsaW5nXG4iLAogCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+ cGlwZSksCkBAIC0yMjEyLDE2ICsyMTY3LDE1IEBAIHN0YXRpYyBpbnQgaWd0X2RybV9wbGFuZV9j b21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAogCQkJCSAgICAgIElHVF9GSVhFRCgwLDApIC8qIHNy Y19oICovKTsKIAogCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9yKTsKLQl9IGVsc2Ug aWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8Ci0JCXBs YW5lLT5zaXplX2NoYW5nZWQpIHsKLQkJc3JjX3ggPSBJR1RfRklYRUQocGxhbmUtPnNyY194LDAp OyAvKiBzcmNfeCAqLwotCQlzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3ksMCk7IC8qIHNy Y195ICovCi0JCXNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfdywwKTsgLyogc3JjX3cgKi8K LQkJc3JjX2ggPSBJR1RfRklYRUQocGxhbmUtPnNyY19oLDApOyAvKiBzcmNfaCAqLwotCQljcnRj X3ggPSBwbGFuZS0+Y3J0Y194OwotCQljcnRjX3kgPSBwbGFuZS0+Y3J0Y195OwotCQljcnRjX3cg PSBwbGFuZS0+Y3J0Y193OwotCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOworCX0gZWxzZSBpZiAo c2V0cGxhbmUpIHsKKwkJc3JjX3ggPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9TUkNfWF07CisJ CXNyY195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldOworCQlzcmNfdyA9IHBsYW5l LT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19XXTsKKwkJc3JjX2ggPSBwbGFuZS0+dmFsdWVzW0lHVF9Q TEFORV9TUkNfSF07CisJCWNydGNfeCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWF07 CisJCWNydGNfeSA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV07CisJCWNydGNfdyA9 IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfV107CisJCWNydGNfaCA9IHBsYW5lLT52YWx1 ZXNbSUdUX1BMQU5FX0NSVENfSF07CiAKIAkJTE9HKGRpc3BsYXksCiAJCSAgICAiU2V0UGxhbmUg JXMuJWQsIGZiICV1LCBzcmMgPSAoJWQsICVkKSAiCkBAIC0yMjQ1LDkgKzIxOTksMTAgQEAgc3Rh dGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCUNIRUNL X1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwogCX0KIAotCWlmIChwbGFuZS0+cm90YXRpb25f Y2hhbmdlZCkgewotCQlyZXQgPSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5KHBsYW5lLCBwbGFuZS0+ cm90YXRpb25fcHJvcGVydHksCi0JCQkJICAgICAgIHBsYW5lLT5yb3RhdGlvbik7CisJaWYgKGln dF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9ST1RBVElPTikpIHsKKwkJ cmV0ID0gaWd0X3BsYW5lX3NldF9wcm9wZXJ0eShwbGFuZSwKKwkJCQkJICAgICBwbGFuZS0+cHJv cHNbSUdUX1BMQU5FX1JPVEFUSU9OXSwKKwkJCQkJICAgICBwbGFuZS0+dmFsdWVzW0lHVF9QTEFO RV9ST1RBVElPTl0pOwogCiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwogCX0K QEAgLTIyNjksMzUgKzIyMjQsMzAgQEAgc3RhdGljIGludCBpZ3RfY3Vyc29yX2NvbW1pdF9sZWdh Y3koaWd0X3BsYW5lX3QgKmN1cnNvciwKIAl1aW50MzJfdCBjcnRjX2lkID0gcGlwZS0+Y3J0Y19p ZDsKIAlpbnQgcmV0OwogCi0JaWYgKGN1cnNvci0+ZmJfY2hhbmdlZCkgewotCQl1aW50MzJfdCBn ZW1faGFuZGxlID0gaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGN1cnNvcik7Ci0KLQkJaWYg KGdlbV9oYW5kbGUpIHsKKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChjdXJzb3IsIElH VF9QTEFORV9GQl9JRCkpIHsKKwkJaWYgKGN1cnNvci0+Z2VtX2hhbmRsZSkKIAkJCUxPRyhkaXNw bGF5LAogCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZmIgJXUgJWR4JWRcbiIsCiAJCQkgICAg a21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCi0JCQkgICAgZ2VtX2hhbmRsZSwKLQkJCSAg ICBjdXJzb3ItPmNydGNfdywgY3Vyc29yLT5jcnRjX2gpOwotCi0JCQlyZXQgPSBkcm1Nb2RlU2V0 Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwgY3J0Y19pZCwKLQkJCQkJICAgICAgIGdlbV9oYW5kbGUs Ci0JCQkJCSAgICAgICBjdXJzb3ItPmNydGNfdywKLQkJCQkJICAgICAgIGN1cnNvci0+Y3J0Y19o KTsKLQkJfSBlbHNlIHsKKwkJCSAgICBjdXJzb3ItPmdlbV9oYW5kbGUsCisJCQkgICAgKHVuc2ln bmVkKWN1cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddLAorCQkJICAgICh1bnNpZ25lZClj dXJzb3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19IXSk7CisJCWVsc2UKIAkJCUxPRyhkaXNwbGF5 LAogCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZGlzYWJsaW5nXG4iLAogCQkJICAgIGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpKTsKIAotCQkJcmV0ID0gZHJtTW9kZVNldEN1cnNvcihk aXNwbGF5LT5kcm1fZmQsIGNydGNfaWQsCi0JCQkJCSAgICAgICAwLCAwLCAwKTsKLQkJfQotCisJ CXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ZHJtX2ZkLCBjcnRjX2lkLAorCQkJCSAg ICAgICBjdXJzb3ItPmdlbV9oYW5kbGUsCisJCQkJICAgICAgIGN1cnNvci0+dmFsdWVzW0lHVF9Q TEFORV9DUlRDX1ddLAorCQkJCSAgICAgICBjdXJzb3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19I XSk7CiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwogCX0KIAotCWlmIChjdXJz b3ItPnBvc2l0aW9uX2NoYW5nZWQpIHsKLQkJaW50IHggPSBjdXJzb3ItPmNydGNfeDsKLQkJaW50 IHkgPSBjdXJzb3ItPmNydGNfeTsKKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChjdXJz b3IsIElHVF9QTEFORV9DUlRDX1gpIHx8CisJICAgIGlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQo Y3Vyc29yLCBJR1RfUExBTkVfQ1JUQ19ZKSkgeworCQlpbnQgeCA9IGN1cnNvci0+dmFsdWVzW0lH VF9QTEFORV9DUlRDX1hdOworCQlpbnQgeSA9IGN1cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRD X1ldOwogCiAJCUxPRyhkaXNwbGF5LAogCQkgICAgIk1vdmVDdXJzb3IgcGlwZSAlcywgKCVkLCAl ZClcbiIsCkBAIC0yMzI2LDEzICsyMjc2LDE0IEBAIHN0YXRpYyBpbnQgaWd0X3ByaW1hcnlfcGxh bmVfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAlpbnQgcmV0OwogCiAJLyog UHJpbWFyeSBwbGFuZXMgY2FuJ3QgYmUgd2luZG93ZWQgd2hlbiB1c2luZyBhIGxlZ2FjeSBjb21t aXQgKi8KLQlpZ3RfYXNzZXJ0KChwcmltYXJ5LT5jcnRjX3ggPT0gMCAmJiBwcmltYXJ5LT5jcnRj X3kgPT0gMCkpOworCWlndF9hc3NlcnQoKHByaW1hcnktPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19Y XSA9PSAwICYmIHByaW1hcnktPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19ZXSA9PSAwKSk7CiAKIAkv KiBub3Igcm90YXRlZCAqLwotCWlndF9hc3NlcnQoIXByaW1hcnktPnJvdGF0aW9uX2NoYW5nZWQp OworCWlndF9hc3NlcnQoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocHJpbWFyeSwgSUdUX1BM QU5FX1JPVEFUSU9OKSk7CiAKLQlpZiAoIXByaW1hcnktPmZiX2NoYW5nZWQgJiYgIXByaW1hcnkt PnBvc2l0aW9uX2NoYW5nZWQgJiYKLQkgICAgIXByaW1hcnktPnNpemVfY2hhbmdlZCAmJiAhcHJp bWFyeS0+cGlwZS0+bW9kZV9jaGFuZ2VkKQorCWlmICghaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdl ZChwcmltYXJ5LCBJR1RfUExBTkVfRkJfSUQpICYmCisJICAgICEocHJpbWFyeS0+Y2hhbmdlZCAm IElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0spICYmCisJICAgICFwcmltYXJ5LT5waXBlLT5t b2RlX2NoYW5nZWQpCiAJCXJldHVybiAwOwogCiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CkBA IC0yMzQzLDE5ICsyMjk0LDIyIEBAIHN0YXRpYyBpbnQgaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0 X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAkJbW9kZSA9IE5VTEw7CiAKIAlpZiAoZmJf aWQpIHsKKwkJdWludDMyX3Qgc3JjX3ggPSBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19Y XSA+PiAxNjsKKwkJdWludDMyX3Qgc3JjX3kgPSBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX1NS Q19ZXSA+PiAxNjsKKwogCQlMT0coZGlzcGxheSwKIAkJICAgICIlczogU2V0Q3J0YyBwaXBlICVz LCBmYiAldSwgc3JjICglZCwgJWQpLCAiCiAJCSAgICAibW9kZSAlZHglZFxuIiwKIAkJICAgIGln dF9vdXRwdXRfbmFtZShvdXRwdXQpLAogCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlw ZSksCiAJCSAgICBmYl9pZCwKLQkJICAgIHByaW1hcnktPnNyY194LCBwcmltYXJ5LT5zcmNfeSwK KwkJICAgIHNyY194LCBzcmNfeSwKIAkJICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxh eSk7CiAKIAkJcmV0ID0gZHJtTW9kZVNldENydGMoZGlzcGxheS0+ZHJtX2ZkLAogCQkJCSAgICAg Y3J0Y19pZCwKIAkJCQkgICAgIGZiX2lkLAotCQkJCSAgICAgcHJpbWFyeS0+c3JjX3gsIHByaW1h cnktPnNyY195LAorCQkJCSAgICAgc3JjX3gsIHNyY195LAogCQkJCSAgICAgJm91dHB1dC0+aWQs CiAJCQkJICAgICAxLAogCQkJCSAgICAgbW9kZSk7CkBAIC0yNjA4LDE4ICsyNTYyLDI3IEBAIGRp c3BsYXlfY29tbWl0X2NoYW5nZWQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBpZ3RfY29t bWl0X3N0eWxlIHMpCiAJCX0KIAogCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBp cGUsIHBsYW5lKSB7Ci0JCQlwbGFuZS0+ZmJfY2hhbmdlZCA9IGZhbHNlOwotCQkJcGxhbmUtPnBv c2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKLQkJCXBsYW5lLT5zaXplX2NoYW5nZWQgPSBmYWxzZTsK KwkJCWlmIChzID09IENPTU1JVF9BVE9NSUMpIHsKKwkJCQlpbnQgZmQ7CisJCQkJcGxhbmUtPmNo YW5nZWQgPSAwOwogCi0JCQlpZiAocyAhPSBDT01NSVRfTEVHQUNZIHx8Ci0JCQkgICAgIShwbGFu ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZIHx8Ci0JCQkgICAgICBwbGFuZS0+dHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpKQotCQkJCXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2Vk ID0gZmFsc2U7CisJCQkJZmQgPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9JTl9GRU5DRV9GRF07 CisJCQkJaWYgKGZkICE9IC0xKQorCQkJCQljbG9zZShmZCk7CiAKLQkJCWlmIChzID09IENPTU1J VF9BVE9NSUMpCiAJCQkJLyogcmVzZXQgZmVuY2VfZmQgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5n IHNldCBmb3IgdGhlIG5leHQgY29tbWl0ICovCi0JCQkJaWd0X3BsYW5lX3NldF9mZW5jZV9mZChw bGFuZSwgLTEpOworCQkJCXBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXSA9IC0x OworCQkJfSBlbHNlIHsKKwkJCQlwbGFuZS0+Y2hhbmdlZCAmPSB+SUdUX1BMQU5FX0NPT1JEX0NI QU5HRURfTUFTSzsKKworCQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsIElH VF9QTEFORV9DUlRDX0lEKTsKKwkJCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5l LCBJR1RfUExBTkVfRkJfSUQpOworCisJCQkJaWYgKHMgIT0gQ09NTUlUX0xFR0FDWSB8fAorCQkJ CSAgICAhKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgfHwKKwkJCQkgICAg ICBwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpKQorCQkJCQlpZ3RfcGxhbmVf Y2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04pOworCQkJfQogCQl9 CiAJfQogCkBAIC0yOTEzLDMwICsyODc2LDMxIEBAIHZvaWQgaWd0X3BsYW5lX3NldF9mYihpZ3Rf cGxhbmVfdCAqcGxhbmUsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6 IHBsYW5lX3NldF9mYiglZClcbiIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAg ICBwbGFuZS0+aW5kZXgsIGZiID8gZmItPmZiX2lkIDogMCk7CiAKLQlwbGFuZS0+ZmIgPSBmYjsK KwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9DUlRDX0lELCBmYiA/ IHBpcGUtPmNydGNfaWQgOiAwKTsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElH VF9QTEFORV9GQl9JRCwgZmIgPyBmYi0+ZmJfaWQgOiAwKTsKKworCWlmIChwbGFuZS0+dHlwZSA9 PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgJiYgZmIpCisJCXBsYW5lLT5nZW1faGFuZGxlID0gZmIt PmdlbV9oYW5kbGU7CisJZWxzZQorCQlwbGFuZS0+Z2VtX2hhbmRsZSA9IDA7CisKIAkvKiBoYWNr IHRvIGtlZXAgdGVzdHMgd29ya2luZyB0aGF0IGRvbid0IGNhbGwgaWd0X3BsYW5lX3NldF9zaXpl KCkgKi8KIAlpZiAoZmIpIHsKIAkJLyogc2V0IGRlZmF1bHQgcGxhbmUgc2l6ZSBhcyBmYiBzaXpl ICovCi0JCXBsYW5lLT5jcnRjX3cgPSBmYi0+d2lkdGg7Ci0JCXBsYW5lLT5jcnRjX2ggPSBmYi0+ aGVpZ2h0OworCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsKKwkJaWd0X3Bs YW5lX3NldF9zaXplKHBsYW5lLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwogCiAJCS8qIHNldCBk ZWZhdWx0IHNyYyBwb3Mvc2l6ZSBhcyBmYiBzaXplICovCi0JCXBsYW5lLT5zcmNfeCA9IDA7Ci0J CXBsYW5lLT5zcmNfeSA9IDA7Ci0JCXBsYW5lLT5zcmNfdyA9IGZiLT53aWR0aDsKLQkJcGxhbmUt PnNyY19oID0gZmItPmhlaWdodDsKKwkJaWd0X2ZiX3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIDAs IDApOworCQlpZ3RfZmJfc2V0X3NpemUoZmIsIHBsYW5lLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQp OwogCX0gZWxzZSB7Ci0JCXBsYW5lLT5zcmNfeCA9IDA7Ci0JCXBsYW5lLT5zcmNfeSA9IDA7Ci0J CXBsYW5lLT5zcmNfdyA9IDA7Ci0JCXBsYW5lLT5zcmNfaCA9IDA7CisJCWlndF9wbGFuZV9zZXRf cG9zaXRpb24ocGxhbmUsIDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIDAsIDAp OwogCi0JCXBsYW5lLT5jcnRjX3cgPSAwOwotCQlwbGFuZS0+Y3J0Y19oID0gMDsKKwkJLyogc2V0 IGRlZmF1bHQgc3JjIHBvcy9zaXplIGFzIGZiIHNpemUgKi8KKwkJaWd0X2ZiX3NldF9wb3NpdGlv bihmYiwgcGxhbmUsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoZmIsIHBsYW5lLCAwLCAwKTsK IAl9Ci0KLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Ci0JcGxhbmUtPnNpemVfY2hhbmdlZCA9 IHRydWU7CiB9CiAKIC8qKgpAQCAtMjk0OSwxMiArMjkxMywxOSBAQCB2b2lkIGlndF9wbGFuZV9z ZXRfZmIoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYikKICAqLwogdm9pZCBp Z3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKGlndF9wbGFuZV90ICpwbGFuZSwgaW50IGZlbmNlX2ZkKQog ewotCWNsb3NlKHBsYW5lLT5mZW5jZV9mZCk7CisJaW50NjRfdCBmZDsKIAotCWlmIChmY250bChm ZW5jZV9mZCwgRl9HRVRGRCkgIT0gLTEpCi0JCXBsYW5lLT5mZW5jZV9mZCA9IGR1cChmZW5jZV9m ZCk7Ci0JZWxzZQotCQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKKwlmZCA9IHBsYW5lLT52YWx1ZXNb SUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXTsKKwlpZiAoZmQgIT0gLTEpCisJCWNsb3NlKGZkKTsKKwor CWlmIChmZW5jZV9mZCAhPSAtMSkgeworCQlmZCA9IGR1cChmZW5jZV9mZCk7CisJCWlndF9mYWls X29uKGZkID09IC0xKTsKKwl9IGVsc2UKKwkJZmQgPSAtMTsKKworCWlndF9wbGFuZV9zZXRfcHJv cF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0lOX0ZFTkNFX0ZELCBmZCk7CiB9CiAKIHZvaWQgaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB4LCBpbnQgeSkKQEAg LTI5NjUsMTAgKzI5MzYsOCBAQCB2b2lkIGlndF9wbGFuZV9zZXRfcG9zaXRpb24oaWd0X3BsYW5l X3QgKnBsYW5lLCBpbnQgeCwgaW50IHkpCiAJTE9HKGRpc3BsYXksICIlcy4lZDogcGxhbmVfc2V0 X3Bvc2l0aW9uKCVkLCVkKVxuIiwKIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSks IHBsYW5lLT5pbmRleCwgeCwgeSk7CiAKLQlwbGFuZS0+Y3J0Y194ID0geDsKLQlwbGFuZS0+Y3J0 Y195ID0geTsKLQotCXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGxhbmVf c2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIHgpOworCWlndF9wbGFuZV9z ZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgeSk7CiB9CiAKIC8qKgpAQCAt Mjk4OSwxMCArMjk1OCw4IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9zaXplKGlndF9wbGFuZV90ICpw bGFuZSwgaW50IHcsIGludCBoKQogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IHBsYW5lX3NldF9zaXpl ICglZHglZClcbiIsCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+ aW5kZXgsIHcsIGgpOwogCi0JcGxhbmUtPmNydGNfdyA9IHc7Ci0JcGxhbmUtPmNydGNfaCA9IGg7 Ci0KLQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFs dWUocGxhbmUsIElHVF9QTEFORV9DUlRDX1csIHcpOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1 ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfSCwgaCk7CiB9CiAKIC8qKgpAQCAtMzAxNCwxMCArMjk4 MSw4IEBAIHZvaWQgaWd0X2ZiX3NldF9wb3NpdGlvbihzdHJ1Y3QgaWd0X2ZiICpmYiwgaWd0X3Bs YW5lX3QgKnBsYW5lLAogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9wb3NpdGlvbiglZCwl ZClcbiIsCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+aW5kZXgs IHgsIHkpOwogCi0JcGxhbmUtPnNyY194ID0geDsKLQlwbGFuZS0+c3JjX3kgPSB5OwotCi0JcGxh bmUtPmZiX2NoYW5nZWQgPSB0cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwg SUdUX1BMQU5FX1NSQ19YLCBJR1RfRklYRUQoeCwgMCkpOworCWlndF9wbGFuZV9zZXRfcHJvcF92 YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoeSwgMCkpOwogfQogCiAvKioK QEAgLTMwNDAsMTAgKzMwMDUsOCBAQCB2b2lkIGlndF9mYl9zZXRfc2l6ZShzdHJ1Y3QgaWd0X2Zi ICpmYiwgaWd0X3BsYW5lX3QgKnBsYW5lLAogCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9z aXplKCVkeCVkKVxuIiwKIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5l LT5pbmRleCwgdywgaCk7CiAKLQlwbGFuZS0+c3JjX3cgPSB3OwotCXBsYW5lLT5zcmNfaCA9IGg7 Ci0KLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7CisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVl KHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIElHVF9GSVhFRCh3LCAwKSk7CisJaWd0X3BsYW5lX3Nl dF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsIElHVF9GSVhFRChoLCAwKSk7CiB9 CiAKIHN0YXRpYyBjb25zdCBjaGFyICpyb3RhdGlvbl9uYW1lKGlndF9yb3RhdGlvbl90IHJvdGF0 aW9uKQpAQCAtMzA3MSw5ICszMDM0LDcgQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKGln dF9wbGFuZV90ICpwbGFuZSwgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24pCiAJICAgIGttc3Rlc3Rf cGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwbGFuZS0+aW5kZXgsIHJvdGF0aW9uX25hbWUo cm90YXRpb24pKTsKIAotCXBsYW5lLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwotCi0JcGxhbmUtPnJv dGF0aW9uX2NoYW5nZWQgPSB0cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwg SUdUX1BMQU5FX1JPVEFUSU9OLCByb3RhdGlvbik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbGli L2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggMWVmMTBlN2Q1MjVjLi5mODdmOGJlMzE0 MjEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMjUy LDYgKzI1Miw5IEBAIGVudW0gaWd0X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzIHsKICAgICAgICBJ R1RfUExBTkVfQ1JUQ19XLAogICAgICAgIElHVF9QTEFORV9DUlRDX0gsCiAKKy8qIEFwcGVuZCBu ZXcgcHJvcGVydGllcyBhZnRlciBJR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9NQVNLICovCisjZGVm aW5lIElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0sgMHhmZgorCiAgICAgICAgSUdUX1BMQU5F X0ZCX0lELAogICAgICAgIElHVF9QTEFORV9DUlRDX0lELAogICAgICAgIElHVF9QTEFORV9JTl9G RU5DRV9GRCwKQEAgLTI4NiwzNyArMjg5LDE5IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQgaW5k ZXg7CiAJLyogY2FwYWJpbGl0aWVzICovCiAJaW50IHR5cGU7Ci0JLyogc3RhdGUgdHJhY2tpbmcg Ki8KLQl1bnNpZ25lZCBpbnQgZmJfY2hhbmdlZCAgICAgICA6IDE7Ci0JdW5zaWduZWQgaW50IHBv c2l0aW9uX2NoYW5nZWQgOiAxOwotCXVuc2lnbmVkIGludCByb3RhdGlvbl9jaGFuZ2VkIDogMTsK LQl1bnNpZ25lZCBpbnQgc2l6ZV9jaGFuZ2VkICAgICA6IDE7CisKIAkvKgogCSAqIGRybV9wbGFu ZSBjYW4gYmUgTlVMTCBmb3IgcHJpbWFyeSBhbmQgY3Vyc29yIHBsYW5lcyAod2hlbiBub3QKIAkg KiB1c2luZyB0aGUgYXRvbWljIG1vZGVzZXQgQVBJKQogCSAqLwogCWRybU1vZGVQbGFuZSAqZHJt X3BsYW5lOwotCXN0cnVjdCBpZ3RfZmIgKmZiOwotCi0JdWludDMyX3Qgcm90YXRpb25fcHJvcGVy dHk7Ci0KLQkvKiBwb3NpdGlvbiB3aXRoaW4gcGlwZV9zcmNfdyB4IHBpcGVfc3JjX2ggKi8KLQlp bnQgY3J0Y194LCBjcnRjX3k7Ci0JLyogc2l6ZSB3aXRoaW4gcGlwZV9zcmNfdyB4IHBpcGVfc3Jj X2ggKi8KLQlpbnQgY3J0Y193LCBjcnRjX2g7CiAKLQkvKiBwb3NpdGlvbiB3aXRoaW4gdGhlIGZy YW1lYnVmZmVyICovCi0JdWludDMyX3Qgc3JjX3g7Ci0JdWludDMyX3Qgc3JjX3k7Ci0JLyogc2l6 ZSB3aXRoaW4gdGhlIGZyYW1lYnVmZmVyKi8KLQl1aW50MzJfdCBzcmNfdzsKLQl1aW50MzJfdCBz cmNfaDsKKwkvKiBnZW0gaGFuZGxlIGZvciBmYiAqLworCXVpbnQzMl90IGdlbV9oYW5kbGU7CiAK LQlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbjsKLQotCS8qIGluIGZlbmNlIGZkICovCi0JaW50IGZl bmNlX2ZkOwotCXVpbnQzMl90IGF0b21pY19wcm9wc19wbGFuZVtJR1RfTlVNX1BMQU5FX1BST1BT XTsKKwl1aW50NjRfdCBjaGFuZ2VkOworCXVpbnQzMl90IHByb3BzW0lHVF9OVU1fUExBTkVfUFJP UFNdOworCXVpbnQ2NF90IHZhbHVlc1tJR1RfTlVNX1BMQU5FX1BST1BTXTsKIH0gaWd0X3BsYW5l X3Q7CiAKIHN0cnVjdCBpZ3RfcGlwZSB7CkBAIC00MDcsNyArMzkyLDcgQEAgYm9vbCBpZ3RfcGlw ZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwgY29uc3QgY2hhciAqbmFtZSwKIAogc3Rh dGljIGlubGluZSBib29sIGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlvbihpZ3RfcGxhbmVfdCAq cGxhbmUpCiB7Ci0JcmV0dXJuIHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSAhPSAwOworCXJldHVy biBwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1JPVEFUSU9OXSAhPSAwOwogfQogdm9pZCBpZ3RfcGlw ZV9yZXF1ZXN0X291dF9mZW5jZShpZ3RfcGlwZV90ICpwaXBlKTsKIHZvaWQgaWd0X3BpcGVfc2V0 X2RlZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBpcGUsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCk7 CkBAIC01MjcsMTYgKzUxMiwyMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X291dHB1dF9pc19j b25uZWN0ZWQoaWd0X291dHB1dF90ICpvdXRwdXQpCiAKICNkZWZpbmUgSUdUX0ZJWEVEKGksZikJ KChpKSA8PCAxNiB8IChmKSkKIAotLyoqCi0gKiBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cToKLSAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCi0gKiBAcGxhbmU6IEEg cG9pbnRlciBpZ3RfcGxhbmVfdAotICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX3BsYW5lX3By b3BlcnRpZXMKLSAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAotICovCi0jZGVmaW5lIGlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZhbHVlKSBcCi0JaWd0 X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwbGFuZS0+ZHJtX3Bs YW5lLT5wbGFuZV9pZCxcCi0JCQkJCQkgIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbcHJvcF0s IHZhbHVlKSkKKyNkZWZpbmUgaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgcHJvcCkg XAorCSghISgocGxhbmUpLT5jaGFuZ2VkICYgKDEgPDwgKHByb3ApKSkpCisKKyNkZWZpbmUgaWd0 X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApIFwKKwkocGxhbmUpLT5jaGFuZ2Vk IHw9IDEgPDwgKHByb3ApCisKKyNkZWZpbmUgaWd0X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZChw bGFuZSwgcHJvcCkgXAorCShwbGFuZSktPmNoYW5nZWQgJj0gfigxIDw8IChwcm9wKSkKKworI2Rl ZmluZSBpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIHByb3AsIHZhbHVlKSBcCisJZG8g eyBcCisJCXBsYW5lLT52YWx1ZXNbcHJvcF0gPSB2YWx1ZTsgXAorCQlpZ3RfcGxhbmVfc2V0X3By b3BfY2hhbmdlZChwbGFuZSwgcHJvcCk7IFwKKwl9IHdoaWxlICgwKQogCiAvKioKICAqIGlndF9h dG9taWNfcG9wdWxhdGVfY3J0Y19yZXE6CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYXRvbWljX2lu dGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jCmluZGV4IDJk MTlmZTk2NzgwOS4uNTU3MDg1NDM5MGVhIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfYXRvbWljX2lu dGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYwpAQCAt MTYxLDEyICsxNjEsMTIgQEAgc3RhdGljIHZvaWQgcnVuX3BsYW5lX3Rlc3QoaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdAogCQkJCQkvKiBjb25uZWN0 b3I6IDEgcHJvcCAqLwogCQkJCQlvdXRwdXQtPnByb3BzW0lHVF9DT05ORUNUT1JfQ1JUQ19JRF0s CiAJCQkJCS8qIHBsYW5lOiByZW1haW5kZXIgcHJvcHMgKi8KLQkJCQkJcGxhbmUtPmF0b21pY19w cm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19JRF0sCi0JCQkJCXBsYW5lLT5hdG9taWNfcHJvcHNf cGxhbmVbSUdUX1BMQU5FX0ZCX0lEXSwKLQkJCQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtJ R1RfUExBTkVfU1JDX1ddLAotCQkJCQlwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFO RV9TUkNfSF0sCi0JCQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX0NSVENf V10sCi0JCQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX0NSVENfSF0KKwkJ CQkJcGxhbmUtPnByb3BzW0lHVF9QTEFORV9DUlRDX0lEXSwKKwkJCQkJcGxhbmUtPnByb3BzW0lH VF9QTEFORV9GQl9JRF0sCisJCQkJCXBsYW5lLT5wcm9wc1tJR1RfUExBTkVfU1JDX1ddLAorCQkJ CQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1NSQ19IXSwKKwkJCQkJcGxhbmUtPnByb3BzW0lHVF9Q TEFORV9DUlRDX1ddLAorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX0NSVENfSF0KIAkJCQl9 OwogCQkJCXVpbnQ2NF90IHByb3BfdmFsc1tdID0gewogCQkJCQkvKiBjcnRjICovCmRpZmYgLS1n aXQgYS90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMgYi90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMK aW5kZXggYjE2YzhjZDQzM2IyLi42MTNmNjg4OTk2MDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19w bGFuZV9sb3dyZXMuYworKysgYi90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMKQEAgLTIyNyw4ICsy MjcsOCBAQCB0ZXN0X3NldHVwKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIHVpbnQ2NF90 IG1vZGlmaWVyLCBpbnQgZmxhZ3MsCiAJCQkJICAgIDEuMCwgMS4wLCAwLjAsCiAJCQkJICAgICZk YXRhLT5mYltpXSk7CiAKLQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkYXRhLT5wbGFuZVtpXSwg eCwgeSk7CiAJCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbaV0sICZkYXRhLT5mYltpXSk7 CisJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZGF0YS0+cGxhbmVbaV0sIHgsIHkpOwogCX0KIAog CXJldHVybiBtb2RlOwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jIGIvdGVz dHMva21zX3JvdGF0aW9uX2NyYy5jCmluZGV4IDRkMmVmMWMxODRmMC4uNDkzMmEwZDQ0NDEwIDEw MDY0NAotLS0gYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKKysrIGIvdGVzdHMva21zX3JvdGF0 aW9uX2NyYy5jCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMo ZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCiAJaWd0 X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmJfbW9kZXNldCk7CiAKIAlpZiAoY29tbWl0 IDwgQ09NTUlUX0FUT01JQykgewotCQlwcmltYXJ5LT5yb3RhdGlvbl9jaGFuZ2VkID0gZmFsc2U7 CisJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocHJpbWFyeSwgSUdUX1BMQU5FX1JPVEFU SU9OKTsKIAkJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwogCiAJCWlmIChwbGFuZS0+dHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQotCQkJcHJpbWFyeS0+cm90YXRpb25fY2hhbmdl ZCA9IHRydWU7CisJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwcmltYXJ5LCBJR1RfUExB TkVfUk9UQVRJT04pOwogCX0KIAogCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOwotLSAK Mi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK