From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t] lib/igt_kms: Rework pipe properties to be more atomic, v4. Date: Fri, 29 Sep 2017 08:50:15 +0200 Message-ID: <20170929065015.4510-1-maarten.lankhorst@linux.intel.com> References: <20170928102859.2098-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 64D096EA3B for ; Fri, 29 Sep 2017 06:50:23 +0000 (UTC) In-Reply-To: <20170928102859.2098-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 ZmxhZ3MsIGFuZCB0cnkgdG8KY29tbWl0IGFsbCBwcm9wZXJ0aWVzLgoKVGhpcyBoYXMgYmVlbiB0 aGUgbW9zdCBpbnZvbHZlZCBvbmUsIHNpbmNlIGxlZ2FjeSBwaXBlIGNvbW1pdCBzdGlsbApoYW5k bGVzIGEgbG90IG9mIHRoZSBwcm9wZXJ0aWVzIGRpZmZlcmVudGx5IGZyb20gdGhlIHJlc3QuCgpD aGFuZ2VzIHNpbmNlIHYxOgotIER1bXAgYWxsIGNoYW5nZWQgcHJvcGVydGllcyBvbiBjb21taXQu Ci0gRml4IGJ1ZyBpbiBpZ3RfcGlwZV9yZWZyZXNoKCkuCkNoYW5nZXMgc2luY2UgdjI6Ci0gU2V0 IHBpcGUgQUNUSVZFIHByb3BlcnR5IGNoYW5nZWQgZmxhZyBvbiBpbml0LgpDaGFuZ2VzIHNpbmNl IHYzOgotIEFkZCBhIG1pc3NpbmcgaWd0X3BpcGVfcmVmcmVzaCgpIHRvIGttc19hdG9taWNfaW50 ZXJydXB0aWJsZS4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2lndF9rbXMuYyAgICAgICAgICAgICAg ICAgICAgIHwgMjE3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIv aWd0X2ttcy5oICAgICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrLS0tLS0tLS0KIHRlc3Rz L2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jICB8ICAgOCArLQogdGVzdHMva21zX2F0b21pY190 cmFuc2l0aW9uLmMgICAgIHwgICAyICstCiB0ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9y LmMgfCAgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDE1NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRl eCA2ZTAwNTJlYmU3YTcuLmE4MWQ3OTk4NDMzYSAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYwor KysgYi9saWIvaWd0X2ttcy5jCkBAIC0yNTksOCArMjU5LDggQEAgaWd0X2F0b21pY19maWxsX2Nv bm5lY3Rvcl9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwKIH0KIAogc3RhdGljIHZvaWQKLWlndF9hdG9taWNfZmlsbF9waXBlX3Byb3BzKGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGlndF9waXBlX3QgKnBpcGUsCi0JCQlpbnQgbnVtX2NydGNfcHJvcHMs IGNvbnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMpCitpZ3RfZmlsbF9waXBlX3Byb3BzKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGlndF9waXBlX3QgKnBpcGUsCisJCSAgICBpbnQgbnVtX2NydGNf cHJvcHMsIGNvbnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMpCiB7CiAJZHJtTW9kZU9iamVjdFBy b3BlcnRpZXNQdHIgcHJvcHM7CiAJaW50IGksIGosIGZkOwpAQCAtMjc4LDcgKzI3OCw3IEBAIGln dF9hdG9taWNfZmlsbF9waXBlX3Byb3BzKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlndF9waXBl X3QgKnBpcGUsCiAJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIGNydGNfcHJvcF9uYW1lc1tqXSkg IT0gMCkKIAkJCQljb250aW51ZTsKIAotCQkJcGlwZS0+YXRvbWljX3Byb3BzX2NydGNbal0gPSBw cm9wcy0+cHJvcHNbaV07CisJCQlwaXBlLT5wcm9wc1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKIAkJ CWJyZWFrOwogCQl9CiAKQEAgLTE2OTAsNyArMTY5MCw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5p dChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQlpbnQgcCA9IDE7CiAJCWlu dCBqLCB0eXBlOwogCQl1aW50OF90IGxhc3RfcGxhbmUgPSAwLCBuX3BsYW5lcyA9IDA7Ci0JCXVp bnQ2NF90IHByb3BfdmFsdWU7CiAKIAkJcGlwZS0+Y3J0Y19pZCA9IHJlc291cmNlcy0+Y3J0Y3Nb aV07CiAJCXBpcGUtPmRpc3BsYXkgPSBkaXNwbGF5OwpAQCAtMTcwMCwyOSArMTY5OSwxNiBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK IAkJcGlwZS0+cGxhbmVzID0gTlVMTDsKIAkJcGlwZS0+b3V0X2ZlbmNlX2ZkID0gLTE7CiAKKwkJ aWd0X2ZpbGxfcGlwZV9wcm9wcyhkaXNwbGF5LCBwaXBlLCBJR1RfTlVNX0NSVENfUFJPUFMsIGln dF9jcnRjX3Byb3BfbmFtZXMpOworCisJCS8qIEZvcmNlIG1vZGVzZXQgZGlzYWJsZSBvbiBmaXJz dCBjb21taXQgKi8KKwkJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZSwgSUdUX0NS VENfTU9ERV9JRCk7CisJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9D UlRDX0FDVElWRSk7CisKIAkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBl LT5jcnRjX2lkLAotCQkJCSAgICAiYmFja2dyb3VuZF9jb2xvciIsCi0JCQkJICAgICZwaXBlLT5i YWNrZ3JvdW5kX3Byb3BlcnR5LAotCQkJCSAgICAmcHJvcF92YWx1ZSwKKwkJCQkgICAgImJhY2tn cm91bmRfY29sb3IiLCBOVUxMLAorCQkJCSAgICAmcGlwZS0+dmFsdWVzW0lHVF9DUlRDX0JBQ0tH Uk9VTkRdLAogCQkJCSAgICBOVUxMKTsKLQkJcGlwZS0+YmFja2dyb3VuZCA9ICh1aW50MzJfdClw cm9wX3ZhbHVlOwotCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHBpcGUtPmNy dGNfaWQsCi0JCQkJICAiREVHQU1NQV9MVVQiLAotCQkJCSAgJnBpcGUtPmRlZ2FtbWFfcHJvcGVy dHksCi0JCQkJICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0JCWdldF9jcnRjX3Byb3BlcnR5KGRpc3Bs YXktPmRybV9mZCwgcGlwZS0+Y3J0Y19pZCwKLQkJCQkgICJDVE0iLAotCQkJCSAgJnBpcGUtPmN0 bV9wcm9wZXJ0eSwKLQkJCQkgIE5VTEwsCi0JCQkJICBOVUxMKTsKLQkJZ2V0X2NydGNfcHJvcGVy dHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lkLAotCQkJCSAgIkdBTU1BX0xVVCIsCi0J CQkJICAmcGlwZS0+Z2FtbWFfcHJvcGVydHksCi0JCQkJICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0K LQkJaWd0X2F0b21pY19maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05VTV9DUlRD X1BST1BTLCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsKIAogCQkvKiBjb3VudCBudW1iZXIgb2YgdmFs aWQgcGxhbmVzICovCiAJCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3Bs YW5lczsgaisrKSB7CkBAIC0xODA1LDggKzE3OTEsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJCWlndF9hc3NlcnRfZXEocCwg bl9wbGFuZXMpOwogCiAJCXBpcGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7Ci0KLQkJcGlwZS0+bW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKIAl9CiAKIAkvKgpAQCAtMjI4Myw3ICsyMjY3LDcgQEAgc3RhdGlj IGludCBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpwcmltYXJ5 LAogCiAJaWYgKCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9G Ql9JRCkgJiYKIAkgICAgIShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5H RURfTUFTSykgJiYKLQkgICAgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKKwkgICAgIWln dF9waXBlX29ial9pc19wcm9wX2NoYW5nZWQocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfTU9ERV9J RCkpCiAJCXJldHVybiAwOwogCiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CkBAIC0yMzUyLDYg KzIzMzYsMTYgQEAgc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFu ZSwKIAl9CiB9CiAKK3N0YXRpYyBib29sIGlzX2F0b21pY19wcm9wKGVudW0gaWd0X2F0b21pY19j cnRjX3Byb3BlcnRpZXMgcHJvcCkKK3sKKyAgICAgICBpZiAocHJvcCA9PSBJR1RfQ1JUQ19NT0RF X0lEIHx8CisJICAgcHJvcCA9PSBJR1RfQ1JUQ19BQ1RJVkUgfHwKKwkgICBwcm9wID09IElHVF9D UlRDX09VVF9GRU5DRV9QVFIpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQor CiAvKgogICogQ29tbWl0IGFsbCBwbGFuZSBjaGFuZ2VzIHRvIGFuIG91dHB1dC4gIE5vdGUgdGhh dCBpZiBAcyBpcyBDT01NSVRfTEVHQUNZLAogICogZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBwcmlt YXJ5IHBsYW5lIHdpbGwgYWxzbyBlbmFibGUvZGlzYWJsZSB0aGUgQ1JUQy4KQEAgLTIzNjksMTkg KzIzNjMsOSBAQCBzdGF0aWMgaW50IGlndF9waXBlX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBlLAog CWludCBpOwogCWludCByZXQ7CiAKLQlpZiAocGlwZS0+YmFja2dyb3VuZF9jaGFuZ2VkKSB7Ci0J CWlndF9jcnRjX3NldF9wcm9wZXJ0eShwaXBlLCBwaXBlLT5iYWNrZ3JvdW5kX3Byb3BlcnR5LAot CQkJcGlwZS0+YmFja2dyb3VuZCk7Ci0JfQotCi0JaWYgKHBpcGUtPmNvbG9yX21nbXRfY2hhbmdl ZCkgewotCQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+ZGVnYW1tYV9wcm9wZXJ0 eSwKLQkJCQkgICAgICBwaXBlLT5kZWdhbW1hX2Jsb2IpOwotCQlpZ3RfY3J0Y19zZXRfcHJvcGVy dHkocGlwZSwgcGlwZS0+Y3RtX3Byb3BlcnR5LAotCQkJCSAgICAgIHBpcGUtPmN0bV9ibG9iKTsK LQkJaWd0X2NydGNfc2V0X3Byb3BlcnR5KHBpcGUsIHBpcGUtPmdhbW1hX3Byb3BlcnR5LAotCQkJ CSAgICAgIHBpcGUtPmdhbW1hX2Jsb2IpOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgSUdUX05VTV9D UlRDX1BST1BTOyBpKyspCisJCWlmICghaXNfYXRvbWljX3Byb3AoaSkpCisJCQlpZ3RfY3J0Y19z ZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+cHJvcHNbaV0sIHBpcGUtPnZhbHVlc1tpXSk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkrKykgewogCQlpZ3RfcGxhbmVfdCAqcGxh bmUgPSAmcGlwZS0+cGxhbmVzW2ldOwpAQCAtMjM5NCw5ICsyMzc4LDEwIEBAIHN0YXRpYyBpbnQg aWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsCiB9CiAKIHN0YXRpYyB2b2lkCi1pZ3Rf cGlwZV9yZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwgdWludDY0X3QgKmJsb2IsIHZvaWQg KnB0ciwgc2l6ZV90IGxlbmd0aCkKK2lndF9waXBlX3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpw aXBlLCBlbnVtIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHByb3AsIHZvaWQgKnB0ciwgc2l6 ZV90IGxlbmd0aCkKIHsKIAlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsK Kwl1aW50NjRfdCAqYmxvYiA9ICZwaXBlLT52YWx1ZXNbcHJvcF07CiAJdWludDMyX3QgYmxvYl9p ZCA9IDA7CiAKIAlpZiAoKmJsb2IgIT0gMCkKQEAgLTI0MDgsNiArMjM5Myw3IEBAIGlndF9waXBl X3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRfdCAqYmxvYiwgdm9pZCAqcHRy LCBzaXplX3QgbGVuZ3RoCiAJCQkJCQkgICAgIHB0ciwgbGVuZ3RoLCAmYmxvYl9pZCkgPT0gMCk7 CiAKIAkqYmxvYiA9IGJsb2JfaWQ7CisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQocGlw ZSwgcHJvcCk7CiB9CiAKIC8qCkBAIC0yNDE1LDUxICsyNDAxLDIzIEBAIGlndF9waXBlX3JlcGxh Y2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRfdCAqYmxvYiwgdm9pZCAqcHRyLCBzaXpl X3QgbGVuZ3RoCiAgKi8KIHN0YXRpYyB2b2lkIGlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1p dChpZ3RfcGlwZV90ICpwaXBlX29iaiwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQogewotCWlmIChw aXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNf cmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0JBQ0tHUk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3Jv dW5kKTsKLQotCWlmIChwaXBlX29iai0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Ci0JCWlndF9hdG9t aWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBwaXBlX29iaiwgSUdUX0NSVENfREVHQU1NQV9MVVQs IHBpcGVfb2JqLT5kZWdhbW1hX2Jsb2IpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVx KHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0NUTSwgcGlwZV9vYmotPmN0bV9ibG9iKTsKLQkJaWd0 X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19HQU1NQV9M VVQsIHBpcGVfb2JqLT5nYW1tYV9ibG9iKTsKLQl9Ci0KLQlpZiAocGlwZV9vYmotPm1vZGVfY2hh bmdlZCkgewotCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQocGlw ZV9vYmopOwotCi0JCWlmICghb3V0cHV0KSB7Ci0JCQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlw ZV9vYmosICZwaXBlX29iai0+bW9kZV9ibG9iLCBOVUxMLCAwKTsKLQotCQkJTE9HKHBpcGVfb2Jq LT5kaXNwbGF5LCAiJXM6IFNldHRpbmcgTlVMTCBtb2RlXG4iLAotCQkJICAgIGttc3Rlc3RfcGlw ZV9uYW1lKHBpcGVfb2JqLT5waXBlKSk7Ci0JCX0gZWxzZSB7Ci0JCQlkcm1Nb2RlTW9kZUluZm8g Km1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisJaW50IGk7CiAKLQkJCWlndF9w aXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgJnBpcGVfb2JqLT5tb2RlX2Jsb2IsIG1vZGUsIHNp emVvZigqbW9kZSkpOworCWZvciAoaSA9IDA7IGkgPCBJR1RfTlVNX0NSVENfUFJPUFM7IGkrKykg eworCQlpZiAoIWlndF9waXBlX29ial9pc19wcm9wX2NoYW5nZWQocGlwZV9vYmosIGkpKQorCQkJ Y29udGludWU7CiAKLQkJCUxPRyhwaXBlX29iai0+ZGlzcGxheSwgIiVzOiBTZXR0aW5nIG1vZGUg JXMgZnJvbSAlc1xuIiwKLQkJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlX29iai0+cGlwZSks Ci0JCQkgICAgbW9kZS0+bmFtZSwgaWd0X291dHB1dF9uYW1lKG91dHB1dCkpOwotCQl9CisJCWln dF9kZWJ1ZygiUGlwZSAlczogU2V0dGluZyBwcm9wZXJ0eSBcIiVzXCIgdG8gMHglIlBSSXg2NCIv JSJQUklpNjQiXG4iLAorCQkJa21zdGVzdF9waXBlX25hbWUocGlwZV9vYmotPnBpcGUpLCBpZ3Rf Y3J0Y19wcm9wX25hbWVzW2ldLAorCQkJcGlwZV9vYmotPnZhbHVlc1tpXSwgcGlwZV9vYmotPnZh bHVlc1tpXSk7CiAKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2Jq LCBJR1RfQ1JUQ19NT0RFX0lELCBwaXBlX29iai0+bW9kZV9ibG9iKTsKLQkJaWd0X2F0b21pY19w b3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19BQ1RJVkUsICEhb3V0cHV0 KTsKKwkJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwaXBl X29iai0+Y3J0Y19pZCwgcGlwZV9vYmotPnByb3BzW2ldLCBwaXBlX29iai0+dmFsdWVzW2ldKSk7 CiAJfQogCiAJaWYgKHBpcGVfb2JqLT5vdXRfZmVuY2VfZmQgIT0gLTEpIHsKIAkJY2xvc2UocGlw ZV9vYmotPm91dF9mZW5jZV9mZCk7CiAJCXBpcGVfb2JqLT5vdXRfZmVuY2VfZmQgPSAtMTsKIAl9 Ci0KLQlpZiAocGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0ZWQpCi0JewotCQlpZ3RfYXRvbWlj X3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX09VVF9GRU5DRV9QVFIs Ci0JCSAgICAodWludDY0X3QpKHVpbnRwdHJfdCkgJnBpcGVfb2JqLT5vdXRfZmVuY2VfZmQpOwot CX0KLQotCS8qCi0JICoJVE9ETzogQWRkIGFsbCBjcnRjIGxldmVsIHByb3BlcnRpZXMgaGVyZQot CSAqLwogfQogCiAvKgpAQCAtMjU1MCwxNSArMjUwOCwyMSBAQCBkaXNwbGF5X2NvbW1pdF9jaGFu Z2VkKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzKQogCQlp Z3RfcGlwZV90ICpwaXBlX29iaiA9ICZkaXNwbGF5LT5waXBlc1twaXBlXTsKIAkJaWd0X3BsYW5l X3QgKnBsYW5lOwogCi0JCXBpcGVfb2JqLT5jb2xvcl9tZ210X2NoYW5nZWQgPSBmYWxzZTsKLQkJ cGlwZV9vYmotPmJhY2tncm91bmRfY2hhbmdlZCA9IGZhbHNlOworCQlpZiAocyA9PSBDT01NSVRf QVRPTUlDKSB7CisJCQlpZiAoaWd0X3BpcGVfb2JqX2lzX3Byb3BfY2hhbmdlZChwaXBlX29iaiwg SUdUX0NSVENfT1VUX0ZFTkNFX1BUUikpCisJCQkJaWd0X2Fzc2VydChwaXBlX29iai0+b3V0X2Zl bmNlX2ZkID49IDApOwogCi0JCWlmIChzICE9IENPTU1JVF9VTklWRVJTQUwpCi0JCQlwaXBlX29i ai0+bW9kZV9jaGFuZ2VkID0gZmFsc2U7Ci0KLQkJaWYgKHMgPT0gQ09NTUlUX0FUT01JQyAmJiBw aXBlX29iai0+b3V0X2ZlbmNlX3JlcXVlc3RlZCkgewotCQkJcGlwZV9vYmotPm91dF9mZW5jZV9y ZXF1ZXN0ZWQgPSBmYWxzZTsKLQkJCWlndF9hc3NlcnQocGlwZV9vYmotPm91dF9mZW5jZV9mZCA+ PSAwKTsKKwkJCXBpcGVfb2JqLT5jaGFuZ2VkID0gMDsKKwkJfSBlbHNlIHsKKwkJCWlndF9waXBl X29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRDX0JBQ0tHUk9VTkQpOwor CQkJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENfQ1RN KTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRD X0RFR0FNTUFfTFVUKTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9v YmosIElHVF9DUlRDX0dBTU1BX0xVVCk7CisKKwkJCWlmIChzICE9IENPTU1JVF9VTklWRVJTQUwp IHsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JU Q19NT0RFX0lEKTsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGVfb2Jq LCBJR1RfQ1JUQ19BQ1RJVkUpOworCQkJfQogCQl9CiAKIAkJZm9yX2VhY2hfcGxhbmVfb25fcGlw ZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewpAQCAtMjgxMiwzMyArMjc3Niw4MyBAQCB2b2lkIGln dF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZU1vZGVJ bmZvICptb2RlKQogCiAJb3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9kZSA9ICEhbW9kZTsKIAotCWlm IChwaXBlKQotCQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCWlmIChwaXBlKSB7CisJCWlm IChvdXRwdXQtPmRpc3BsYXktPmlzX2F0b21pYykKKwkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihw aXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCksIHNpemVv ZigqbW9kZSkpOworCQllbHNlCisJCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBl LCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwl9CiB9CiAKIHZvaWQgaWd0X291dHB1dF9zZXRfcGlwZShp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUpCiB7CiAJaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKLQlpZ3RfcGlwZV90ICpvbGRfcGlwZTsKKwlpZ3Rf cGlwZV90ICpvbGRfcGlwZSA9IE5VTEwsICpwaXBlX29iaiA9IE5VTEw7OwogCiAJaWd0X2Fzc2Vy dChvdXRwdXQtPm5hbWUpOwogCi0JaWYgKG91dHB1dC0+cGVuZGluZ19waXBlICE9IFBJUEVfTk9O RSkgeworCWlmIChvdXRwdXQtPnBlbmRpbmdfcGlwZSAhPSBQSVBFX05PTkUpCiAJCW9sZF9waXBl ID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7CiAKLQkJb2xkX3BpcGUtPm1v ZGVfY2hhbmdlZCA9IHRydWU7Ci0JfQorCWlmIChwaXBlICE9IFBJUEVfTk9ORSkKKwkJcGlwZV9v YmogPSAmZGlzcGxheS0+cGlwZXNbcGlwZV07CiAKIAlMT0coZGlzcGxheSwgIiVzOiBzZXRfcGlw ZSglcylcbiIsIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAogCSAgICBrbXN0ZXN0X3BpcGVfbmFt ZShwaXBlKSk7CiAJb3V0cHV0LT5wZW5kaW5nX3BpcGUgPSBwaXBlOwogCi0JaWYgKHBpcGUgIT0g UElQRV9OT05FKQotCQlkaXNwbGF5LT5waXBlc1twaXBlXS5tb2RlX2NoYW5nZWQgPSB0cnVlOwor CWlmIChvbGRfcGlwZSkgeworCQlpZ3Rfb3V0cHV0X3QgKm9sZF9vdXRwdXQ7CisKKwkJb2xkX291 dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQob2xkX3BpcGUpOworCQlpZiAoIW9sZF9vdXRwdXQp IHsKKwkJCWlmIChkaXNwbGF5LT5pc19hdG9taWMpCisJCQkJaWd0X3BpcGVfcmVwbGFjZV9ibG9i KG9sZF9waXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBOVUxMLCAwKTsKKwkJCWVsc2UKKwkJCQlpZ3Rf cGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChvbGRfcGlwZSwgSUdUX0NSVENfTU9ERV9JRCk7CisK KwkJCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShvbGRfcGlwZSwgSUdUX0NSVENfQUNUSVZF LCAwKTsKKwkJfQorCX0KIAogCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1Rf Q09OTkVDVE9SX0NSVENfSUQsIHBpcGUgPT0gUElQRV9OT05FID8gMCA6IGRpc3BsYXktPnBpcGVz W3BpcGVdLmNydGNfaWQpOwogCiAJaWd0X291dHB1dF9yZWZyZXNoKG91dHB1dCk7CisKKwlpZiAo cGlwZV9vYmopIHsKKwkJaWYgKGRpc3BsYXktPmlzX2F0b21pYykKKwkJCWlndF9waXBlX3JlcGxh Y2VfYmxvYihwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9JRCwgaWd0X291dHB1dF9nZXRfbW9kZShv dXRwdXQpLCBzaXplb2YoZHJtTW9kZU1vZGVJbmZvKSk7CisJCWVsc2UKKwkJCWlndF9waXBlX29i al9zZXRfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKworCQlpZ3Rf cGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZV9vYmosIElHVF9DUlRDX0FDVElWRSwgMSk7CisJ fQorfQorCisvKgorICogaWd0X3BpcGVfcmVmcmVzaDoKKyAqIEBkaXNwbGF5OiBhIHBvaW50ZXIg dG8gYW4gI2lndF9kaXNwbGF5X3Qgc3RydWN0dXJlCisgKiBAcGlwZTogUGlwZSB0byByZWZyZXNo CisgKiBAZm9yY2U6IFNob3VsZCBiZSBzZXQgdG8gdHJ1ZSBpZiBtb2RlX2Jsb2IgaXMgbm8gbG9u Z2VyIGNvbnNpZGVyZWQKKyAqIHRvIGJlIHZhbGlkLCBmb3IgZXhhbXBsZSBhZnRlciBkb2luZyBh biBhdG9taWMgY29tbWl0IGR1cmluZyBmb3JrIG9yIGNsb3NpbmcgZGlzcGxheSBmZC4KKyAqCisg KiBSZXF1ZXN0cyB0aGUgcGlwZSB0byBiZSBwYXJ0IG9mIHRoZSBzdGF0ZSBvbiBuZXh0IHVwZGF0 ZS4KKyAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gc3RhdGUgbWF5IGhhdmUgYmVlbiBvdXQgb2Ygc3lu YyBhZnRlcgorICogYSBmb3JrLCBvciB3ZSBqdXN0IHdhbnQgdG8gYmUgc3VyZSB0aGUgcGlwZSBp cyBpbmNsdWRlZAorICogaW4gdGhlIG5leHQgY29tbWl0LgorICovCit2b2lkIGlndF9waXBlX3Jl ZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIGJvb2wgZm9yY2Up Cit7CisJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGlzcGxheS0+cGlwZXNbcGlwZV07CisKKwlp ZiAoZm9yY2UgJiYgZGlzcGxheS0+aXNfYXRvbWljKSB7CisJCWlndF9vdXRwdXRfdCAqb3V0cHV0 ID0gaWd0X3BpcGVfZ2V0X291dHB1dChwaXBlX29iaik7CisKKwkJcGlwZV9vYmotPnZhbHVlc1tJ R1RfQ1JUQ19NT0RFX0lEXSA9IDA7CisJCWlmIChvdXRwdXQpCisJCQlpZ3RfcGlwZV9yZXBsYWNl X2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX01PREVfSUQsIGlndF9vdXRwdXRfZ2V0X21vZGUob3V0 cHV0KSwgc2l6ZW9mKGRybU1vZGVNb2RlSW5mbykpOworCX0gZWxzZQorCQlpZ3RfcGlwZV9vYmpf c2V0X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9JRCk7CiB9CiAKIHZvaWQg aWd0X291dHB1dF9zZXRfc2NhbGluZ19tb2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50NjRf dCBzY2FsaW5nX21vZGUpCkBAIC0zMDQ2LDI4ICszMDYwLDI1IEBAIHZvaWQgaWd0X3BsYW5lX3Nl dF9yb3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9yb3RhdGlvbl90IHJvdGF0aW9uKQog ICovCiB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGlndF9waXBlX3QgKnBpcGUpCiB7 Ci0JcGlwZS0+b3V0X2ZlbmNlX3JlcXVlc3RlZCA9IHRydWU7CisJaWd0X3BpcGVfb2JqX3NldF9w cm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX09VVF9GRU5DRV9QVFIsIChwdHJkaWZmX3QpJnBpcGUt Pm91dF9mZW5jZV9mZCk7CiB9CiAKIHZvaWQKIGlndF9waXBlX3NldF9kZWdhbW1hX2x1dChpZ3Rf cGlwZV90ICpwaXBlLCB2b2lkICpwdHIsIHNpemVfdCBsZW5ndGgpCiB7Ci0JaWd0X3BpcGVfcmVw bGFjZV9ibG9iKHBpcGUsICZwaXBlLT5kZWdhbW1hX2Jsb2IsIHB0ciwgbGVuZ3RoKTsKLQlwaXBl LT5jb2xvcl9tZ210X2NoYW5nZWQgPSAxOworCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJ R1RfQ1JUQ19ERUdBTU1BX0xVVCwgcHRyLCBsZW5ndGgpOwogfQogCiB2b2lkCiBpZ3RfcGlwZV9z ZXRfY3RtX21hdHJpeChpZ3RfcGlwZV90ICpwaXBlLCB2b2lkICpwdHIsIHNpemVfdCBsZW5ndGgp CiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZwaXBlLT5jdG1fYmxvYiwgcHRyLCBs ZW5ndGgpOwotCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IDE7CisJaWd0X3BpcGVfcmVwbGFj ZV9ibG9iKHBpcGUsIElHVF9DUlRDX0NUTSwgcHRyLCBsZW5ndGgpOwogfQogCiB2b2lkCiBpZ3Rf cGlwZV9zZXRfZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBpcGUsIHZvaWQgKnB0ciwgc2l6ZV90IGxl bmd0aCkKIHsKLQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZSwgJnBpcGUtPmdhbW1hX2Jsb2Is IHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2NoYW5nZWQgPSAxOworCWlndF9waXBl X3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIHB0ciwgbGVuZ3RoKTsKIH0K IAogLyoqCkBAIC0zMDg4LDkgKzMwOTksNyBAQCB2b2lkIGlndF9jcnRjX3NldF9iYWNrZ3JvdW5k KGlndF9waXBlX3QgKnBpcGUsIHVpbnQ2NF90IGJhY2tncm91bmQpCiAJICAgIGttc3Rlc3RfcGlw ZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwaXBlLT5waXBlLCBiYWNrZ3JvdW5kKTsKIAotCXBp cGUtPmJhY2tncm91bmQgPSBiYWNrZ3JvdW5kOwotCi0JcGlwZS0+YmFja2dyb3VuZF9jaGFuZ2Vk ID0gdHJ1ZTsKKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZSwgSUdUX0NSVENfQkFD S0dST1VORCwgYmFja2dyb3VuZCk7CiB9CiAKIHZvaWQgaWd0X3dhaXRfZm9yX3ZibGFua19jb3Vu dChpbnQgZHJtX2ZkLCBlbnVtIHBpcGUgcGlwZSwgaW50IGNvdW50KQpkaWZmIC0tZ2l0IGEvbGli L2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggZjg3ZjhiZTMxNDIxLi5iNTMxMjdmZmVm NWYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMzEz LDI3ICszMTMsMTMgQEAgc3RydWN0IGlndF9waXBlIHsKIAlpbnQgcGxhbmVfcHJpbWFyeTsKIAlp Z3RfcGxhbmVfdCAqcGxhbmVzOwogCi0JdWludDMyX3QgYXRvbWljX3Byb3BzX2NydGNbSUdUX05V TV9DUlRDX1BST1BTXTsKLQotCXVpbnQ2NF90IGJhY2tncm91bmQ7IC8qIEJhY2tncm91bmQgY29s b3IgTVNCIEJHUiAxNmJwYyBMU0IgKi8KLQl1aW50MzJfdCBiYWNrZ3JvdW5kX2NoYW5nZWQgOiAx OwotCXVpbnQzMl90IGJhY2tncm91bmRfcHJvcGVydHk7Ci0KLQl1aW50NjRfdCBkZWdhbW1hX2Js b2I7Ci0JdWludDMyX3QgZGVnYW1tYV9wcm9wZXJ0eTsKLQl1aW50NjRfdCBjdG1fYmxvYjsKLQl1 aW50MzJfdCBjdG1fcHJvcGVydHk7Ci0JdWludDY0X3QgZ2FtbWFfYmxvYjsKLQl1aW50MzJfdCBn YW1tYV9wcm9wZXJ0eTsKLQl1aW50MzJfdCBjb2xvcl9tZ210X2NoYW5nZWQgOiAxOworCXVpbnQ2 NF90IGNoYW5nZWQ7CisJdWludDMyX3QgcHJvcHNbSUdUX05VTV9DUlRDX1BST1BTXTsKKwl1aW50 NjRfdCB2YWx1ZXNbSUdUX05VTV9DUlRDX1BST1BTXTsKIAogCXVpbnQzMl90IGNydGNfaWQ7CiAK LQl1aW50NjRfdCBtb2RlX2Jsb2I7Ci0JYm9vbCBtb2RlX2NoYW5nZWQ7Ci0KIAlpbnQzMl90IG91 dF9mZW5jZV9mZDsKLQlib29sIG91dF9mZW5jZV9yZXF1ZXN0ZWQ7CiB9OwogCiB0eXBlZGVmIHN0 cnVjdCB7CkBAIC01MjcsMTcgKzUxMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpZ3Rfb3V0cHV0 X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKIAkJaWd0X3BsYW5lX3NldF9wcm9w X2NoYW5nZWQocGxhbmUsIHByb3ApOyBcCiAJfSB3aGlsZSAoMCkKIAotLyoqCi0gKiBpZ3RfYXRv bWljX3BvcHVsYXRlX2NydGNfcmVxOgotICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9t aWNSZXEKLSAqIEBwaXBlOiBBIHBvaW50ZXIgaWd0X3BpcGVfdAotICogQHByb3A6IG9uZSBvZiBp Z3RfYXRvbWljX2NydGNfcHJvcGVydGllcwotICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCi0g Ki8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGUsIHByb3As IHZhbHVlKSBcCi0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVx LCBwaXBlLT5jcnRjX2lkLFwKLQkJCQkJCSAgcGlwZS0+YXRvbWljX3Byb3BzX2NydGNbcHJvcF0s IHZhbHVlKSkKLQogI2RlZmluZSBpZ3Rfb3V0cHV0X2lzX3Byb3BfY2hhbmdlZChvdXRwdXQsIHBy b3ApIFwKIAkoISEoKG91dHB1dCktPmNoYW5nZWQgJiAoMSA8PCAocHJvcCkpKSkKICNkZWZpbmUg aWd0X291dHB1dF9zZXRfcHJvcF9jaGFuZ2VkKG91dHB1dCwgcHJvcCkgXApAQCAtNTUyLDI2ICs1 MjcsMzQgQEAgc3RhdGljIGlubGluZSBib29sIGlndF9vdXRwdXRfaXNfY29ubmVjdGVkKGlndF9v dXRwdXRfdCAqb3V0cHV0KQogCQlpZ3Rfb3V0cHV0X3NldF9wcm9wX2NoYW5nZWQob3V0cHV0LCBw cm9wKTsgXAogCX0gd2hpbGUgKDApCiAKLS8qCi0gKiBpZ3RfcGlwZV9yZWZyZXNoOgotICogQGRp c3BsYXk6IGEgcG9pbnRlciB0byBhbiAjaWd0X2Rpc3BsYXlfdCBzdHJ1Y3R1cmUKLSAqIEBwaXBl OiBQaXBlIHRvIHJlZnJlc2gKLSAqIEBmb3JjZTogU2hvdWxkIGJlIHNldCB0byB0cnVlIGlmIG1v ZGVfYmxvYiBpcyBubyBsb25nZXIgY29uc2lkZXJlZAotICogdG8gYmUgdmFsaWQsIGZvciBleGFt cGxlIGFmdGVyIGRvaW5nIGFuIGF0b21pYyBjb21taXQgZHVyaW5nIGZvcmsgb3IgY2xvc2luZyBk aXNwbGF5IGZkLgotICoKLSAqIFJlcXVlc3RzIHRoZSBwaXBlIHRvIGJlIHBhcnQgb2YgdGhlIHN0 YXRlIG9uIG5leHQgdXBkYXRlLgotICogVGhpcyBpcyB1c2VmdWwgd2hlbiBzdGF0ZSBtYXkgaGF2 ZSBiZWVuIG91dCBvZiBzeW5jIGFmdGVyCi0gKiBhIGZvcmssIG9yIHdlIGp1c3Qgd2FudCB0byBi ZSBzdXJlIHRoZSBwaXBlIGlzIGluY2x1ZGVkCi0gKiBpbiB0aGUgbmV4dCBjb21taXQuCi0gKi8K LXN0YXRpYyBpbmxpbmUgdm9pZAotaWd0X3BpcGVfcmVmcmVzaChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBmb3JjZSkKLXsKLQlpZiAoZm9yY2UpCi0JCWRpc3Bs YXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYiA9IDA7CisjZGVmaW5lIGlndF9waXBlX29ial9pc19w cm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkoISEoKHBpcGVfb2JqKS0+Y2hhbmdlZCAm ICgxIDw8IChwcm9wKSkpKQogCi0JZGlzcGxheS0+cGlwZXNbcGlwZV0ubW9kZV9jaGFuZ2VkID0g dHJ1ZTsKLX0KKyNkZWZpbmUgaWd0X3BpcGVfaXNfcHJvcF9jaGFuZ2VkKGRpc3BsYXksIHBpcGUs IHByb3ApIFwKKwlpZ3RfcGlwZV9vYmpfaXNfcHJvcF9jaGFuZ2VkKCYoZGlzcGxheSktPnBpcGVz WyhwaXBlKV0sIHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQo cGlwZV9vYmosIHByb3ApIFwKKwkocGlwZV9vYmopLT5jaGFuZ2VkIHw9IDEgPDwgKHByb3ApCisK KyNkZWZpbmUgaWd0X3BpcGVfc2V0X3Byb3BfY2hhbmdlZChkaXNwbGF5LCBwaXBlLCBwcm9wKSBc CisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQoJihkaXNwbGF5KS0+cGlwZXNbKHBpcGUp XSwgcHJvcCkKKworI2RlZmluZSBpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGVf b2JqLCBwcm9wKSBcCisJKHBpcGVfb2JqKS0+Y2hhbmdlZCAmPSB+KDEgPDwgKHByb3ApKQorCisj ZGVmaW5lIGlndF9waXBlX2NsZWFyX3Byb3BfY2hhbmdlZChkaXNwbGF5LCBwaXBlLCBwcm9wKSBc CisJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZCgmKGRpc3BsYXkpLT5waXBlc1socGlw ZSldLCBwcm9wKQorCisjZGVmaW5lIGlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShwaXBlX29i aiwgcHJvcCwgdmFsdWUpIFwKKwlkbyB7IFwKKwkJKHBpcGVfb2JqKS0+dmFsdWVzW3Byb3BdID0g KHZhbHVlKTsgXAorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgcHJv cCk7IFwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRp c3BsYXksIHBpcGUsIHByb3AsIHZhbHVlKSBcCisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVl KCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3AsIHZhbHVlKQorCit2b2lkIGlndF9waXBl X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUsIGJvb2wgZm9y Y2UpOwogCiB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKIHZvaWQgaWd0X3Jlc2V0 X2Nvbm5lY3RvcnModm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVw dGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jCmluZGV4IDU1NzA4NTQz OTBlYS4uMTA1OGRjY2U3MWI1IDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVw dGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYwpAQCAtMTU2LDgg KzE1Niw4IEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3Bs YXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAkJCQl1aW50MzJfdCBjb3VudF9wcm9w c1szXSA9IHsgMiwgMSwgNiB9OwogCQkJCXVpbnQzMl90IHByb3BzW10gPSB7CiAJCQkJCS8qIGNy dGM6IDIgcHJvcHMgKi8KLQkJCQkJcGxhbmUtPnBpcGUtPmF0b21pY19wcm9wc19jcnRjW0lHVF9D UlRDX01PREVfSURdLAotCQkJCQlwbGFuZS0+cGlwZS0+YXRvbWljX3Byb3BzX2NydGNbSUdUX0NS VENfQUNUSVZFXSwKKwkJCQkJcGxhbmUtPnBpcGUtPnByb3BzW0lHVF9DUlRDX01PREVfSURdLAor CQkJCQlwbGFuZS0+cGlwZS0+cHJvcHNbSUdUX0NSVENfQUNUSVZFXSwKIAkJCQkJLyogY29ubmVj dG9yOiAxIHByb3AgKi8KIAkJCQkJb3V0cHV0LT5wcm9wc1tJR1RfQ09OTkVDVE9SX0NSVENfSURd LAogCQkJCQkvKiBwbGFuZTogcmVtYWluZGVyIHByb3BzICovCkBAIC0yNTMsNiArMjUzLDEwIEBA IHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0g cGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAogCWlndF93YWl0Y2hpbGRyZW4oKTsKIAorCS8qIFRo ZSBtb2RlIGlzIHVuc2V0IGJ5IHRoZSBmb3JrZWQgaGVscGVyLCBmb3JjZSBhIHJlZnJlc2ggaGVy ZSAqLworCWlmICh0ZXN0ID09IHRlc3RfbGVnYWN5X21vZGVzZXQgfHwgdGVzdF9hdG9taWNfbW9k ZXNldCkKKwkJaWd0X3BpcGVfcmVmcmVzaChkaXNwbGF5LCBwaXBlLCB0cnVlKTsKKwogCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOwogCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVM TCk7CiAJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7CmRpZmYgLS1naXQg YS90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYyBiL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNp dGlvbi5jCmluZGV4IDJhZTc1ZjJkNjYzMC4uN2RkYjY1Y2VhMTgzIDEwMDY0NAotLS0gYS90ZXN0 cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYworKysgYi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRp b24uYwpAQCAtNjMzLDcgKzYzMyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBzZXRfY29tYmluYXRpb25z KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIHVuc2lnbmVkIG1hc2ssIHN0cnVjdCBpCiAJCWRybU1v ZGVNb2RlSW5mbyAqbW9kZSA9IE5VTEw7CiAKIAkJaWYgKCEobWFzayAmICgxIDw8IHBpcGUpKSkg ewotCQkJaWYgKGRpc3BsYXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYikgeworCQkJaWYgKGlndF9w aXBlX2lzX3Byb3BfY2hhbmdlZChkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19BQ1RJVkUpKSB7CiAJ CQkJZXZlbnRfbWFzayB8PSAxIDw8IHBpcGU7CiAJCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwg TlVMTCk7CiAJCQl9CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9y LmMgYi90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKaW5kZXggZTEyZTE2MzQ0OWY4 Li42NTlhMzBiOTAyMTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29s b3IuYworKysgYi90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKQEAgLTEzNyw3ICsx MzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NydGNfYmFja2dyb3VuZChkYXRhX3QgKmRhdGEpCiAJ CWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKIAogCQlwbGFuZSA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJaWd0 X3JlcXVpcmUocGxhbmUtPnBpcGUtPmJhY2tncm91bmRfcHJvcGVydHkpOworCQlpZ3RfcmVxdWly ZShwbGFuZS0+cGlwZS0+cHJvcHNbSUdUX0NSVENfQkFDS0dST1VORF0pOwogCiAJCXByZXBhcmVf Y3J0YyhkYXRhLCBvdXRwdXQsIHBpcGUsIHBsYW5lLCAxLCBQVVJQTEUsIEJMQUNLNjQpOwogCi0t IAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=