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, v5. Date: Tue, 3 Oct 2017 09:45:29 +0200 Message-ID: <20171003074529.15477-1-maarten.lankhorst@linux.intel.com> References: <20170929095937.15702-7-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 3E8846E3E3 for ; Tue, 3 Oct 2017 07:45:36 +0000 (UTC) In-Reply-To: <20170929095937.15702-7-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 ZXJydXB0aWJsZS4KQ2hhbmdlcyBzaW5jZSB2NDoKLSBQZXJmb3JtIGVycm9yIGhhbmRsaW5nIHdo ZW4gc2V0dGluZyBjdXN0b20gY3J0YyBwcm9wZXJ0aWVzLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIv aWd0X2ttcy5jICAgICAgICAgICAgICAgICAgICAgfCAyMjkgKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0KIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAgICAgICB8ICA3 NyArKysrKy0tLS0tLS0tCiB0ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyAgfCAgIDgg Ky0KIHRlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jICAgICB8ICAgMiArLQogdGVzdHMva21z X2NydGNfYmFja2dyb3VuZF9jb2xvci5jIHwgICAyICstCiA1IGZpbGVzIGNoYW5nZWQsIDE1NyBp bnNlcnRpb25zKCspLCAxNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMu YyBiL2xpYi9pZ3Rfa21zLmMKaW5kZXggNmUwMDUyZWJlN2E3Li5mYzYwM2FmOGRiNjcgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMjU5LDggKzI1OSw4 IEBAIGlndF9hdG9taWNfZmlsbF9jb25uZWN0b3JfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxh eSwgaWd0X291dHB1dF90ICpvdXRwdXQsCiB9CiAKIHN0YXRpYyB2b2lkCi1pZ3RfYXRvbWljX2Zp bGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90ICpwaXBlLAot CQkJaW50IG51bV9jcnRjX3Byb3BzLCBjb25zdCBjaGFyICoqY3J0Y19wcm9wX25hbWVzKQoraWd0 X2ZpbGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90ICpwaXBl LAorCQkgICAgaW50IG51bV9jcnRjX3Byb3BzLCBjb25zdCBjaGFyICoqY3J0Y19wcm9wX25hbWVz KQogewogCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwogCWludCBpLCBqLCBmZDsK QEAgLTI3OCw3ICsyNzgsNyBAQCBpZ3RfYXRvbWljX2ZpbGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxh eV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90ICpwaXBlLAogCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1l LCBjcnRjX3Byb3BfbmFtZXNbal0pICE9IDApCiAJCQkJY29udGludWU7CiAKLQkJCXBpcGUtPmF0 b21pY19wcm9wc19jcnRjW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJcGlwZS0+cHJvcHNbal0g PSBwcm9wcy0+cHJvcHNbaV07CiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjIwLDEzICsxNjIwLDYg QEAgZ2V0X2NydGNfcHJvcGVydHkoaW50IGRybV9mZCwgdWludDMyX3QgY3J0Y19pZCwgY29uc3Qg Y2hhciAqbmFtZSwKIAkJCQkgICAgbmFtZSwgcHJvcF9pZCwgdmFsdWUsIHByb3ApOwogfQogCi1z dGF0aWMgdm9pZAotaWd0X2NydGNfc2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBpcGUsIHVpbnQz Ml90IHByb3BfaWQsIHVpbnQ2NF90IHZhbHVlKQotewotCWRybU1vZGVPYmplY3RTZXRQcm9wZXJ0 eShwaXBlLT5kaXNwbGF5LT5kcm1fZmQsCi0JCXBpcGUtPmNydGNfaWQsIERSTV9NT0RFX09CSkVD VF9DUlRDLCBwcm9wX2lkLCB2YWx1ZSk7Ci19Ci0KIC8qCiAgKiBXYWxrIGEgcGxhbmUncyBwcm9w ZXJ0eSBsaXN0IHRvIGRldGVybWluZSBpdHMgdHlwZS4gIElmIHdlIGRvbid0CiAgKiBmaW5kIGEg dHlwZSBwcm9wZXJ0eSwgdGhlbiB0aGUga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCB1bml2ZXJzYWwK QEAgLTE2OTAsNyArMTY4Myw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQlpbnQgcCA9IDE7CiAJCWludCBqLCB0eXBlOwogCQl1 aW50OF90IGxhc3RfcGxhbmUgPSAwLCBuX3BsYW5lcyA9IDA7Ci0JCXVpbnQ2NF90IHByb3BfdmFs dWU7CiAKIAkJcGlwZS0+Y3J0Y19pZCA9IHJlc291cmNlcy0+Y3J0Y3NbaV07CiAJCXBpcGUtPmRp c3BsYXkgPSBkaXNwbGF5OwpAQCAtMTcwMCwyOSArMTY5MiwxNiBAQCB2b2lkIGlndF9kaXNwbGF5 X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJcGlwZS0+cGxhbmVz ID0gTlVMTDsKIAkJcGlwZS0+b3V0X2ZlbmNlX2ZkID0gLTE7CiAKKwkJaWd0X2ZpbGxfcGlwZV9w cm9wcyhkaXNwbGF5LCBwaXBlLCBJR1RfTlVNX0NSVENfUFJPUFMsIGlndF9jcnRjX3Byb3BfbmFt ZXMpOworCisJCS8qIEZvcmNlIG1vZGVzZXQgZGlzYWJsZSBvbiBmaXJzdCBjb21taXQgKi8KKwkJ aWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZSwgSUdUX0NSVENfTU9ERV9JRCk7CisJ CWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9DUlRDX0FDVElWRSk7CisK IAkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lkLAotCQkJ CSAgICAiYmFja2dyb3VuZF9jb2xvciIsCi0JCQkJICAgICZwaXBlLT5iYWNrZ3JvdW5kX3Byb3Bl cnR5LAotCQkJCSAgICAmcHJvcF92YWx1ZSwKKwkJCQkgICAgImJhY2tncm91bmRfY29sb3IiLCBO VUxMLAorCQkJCSAgICAmcGlwZS0+dmFsdWVzW0lHVF9DUlRDX0JBQ0tHUk9VTkRdLAogCQkJCSAg ICBOVUxMKTsKLQkJcGlwZS0+YmFja2dyb3VuZCA9ICh1aW50MzJfdClwcm9wX3ZhbHVlOwotCQln ZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHBpcGUtPmNydGNfaWQsCi0JCQkJICAi REVHQU1NQV9MVVQiLAotCQkJCSAgJnBpcGUtPmRlZ2FtbWFfcHJvcGVydHksCi0JCQkJICBOVUxM LAotCQkJCSAgTlVMTCk7Ci0JCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlw ZS0+Y3J0Y19pZCwKLQkJCQkgICJDVE0iLAotCQkJCSAgJnBpcGUtPmN0bV9wcm9wZXJ0eSwKLQkJ CQkgIE5VTEwsCi0JCQkJICBOVUxMKTsKLQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJt X2ZkLCBwaXBlLT5jcnRjX2lkLAotCQkJCSAgIkdBTU1BX0xVVCIsCi0JCQkJICAmcGlwZS0+Z2Ft bWFfcHJvcGVydHksCi0JCQkJICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0KLQkJaWd0X2F0b21pY19m aWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05VTV9DUlRDX1BST1BTLCBpZ3RfY3J0 Y19wcm9wX25hbWVzKTsKIAogCQkvKiBjb3VudCBudW1iZXIgb2YgdmFsaWQgcGxhbmVzICovCiAJ CWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisrKSB7CkBA IC0xODA1LDggKzE3ODQsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgaW50IGRybV9mZCkKIAkJCWlndF9hc3NlcnRfZXEocCwgbl9wbGFuZXMpOwogCiAJ CXBpcGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7Ci0KLQkJcGlwZS0+bW9kZV9jaGFuZ2VkID0gdHJ1 ZTsKIAl9CiAKIAkvKgpAQCAtMjI4Myw3ICsyMjYwLDcgQEAgc3RhdGljIGludCBpZ3RfcHJpbWFy eV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpwcmltYXJ5LAogCiAJaWYgKCFpZ3Rf cGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9GQl9JRCkgJiYKIAkgICAg IShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSykgJiYKLQkg ICAgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKKwkgICAgIWlndF9waXBlX29ial9pc19w cm9wX2NoYW5nZWQocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfTU9ERV9JRCkpCiAJCXJldHVybiAw OwogCiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CkBAIC0yMzUyLDYgKzIzMjksMTYgQEAgc3Rh dGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKIAl9CiB9CiAKK3N0 YXRpYyBib29sIGlzX2F0b21pY19wcm9wKGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMg cHJvcCkKK3sKKyAgICAgICBpZiAocHJvcCA9PSBJR1RfQ1JUQ19NT0RFX0lEIHx8CisJICAgcHJv cCA9PSBJR1RfQ1JUQ19BQ1RJVkUgfHwKKwkgICBwcm9wID09IElHVF9DUlRDX09VVF9GRU5DRV9Q VFIpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogQ29tbWl0 IGFsbCBwbGFuZSBjaGFuZ2VzIHRvIGFuIG91dHB1dC4gIE5vdGUgdGhhdCBpZiBAcyBpcyBDT01N SVRfTEVHQUNZLAogICogZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBwcmltYXJ5IHBsYW5lIHdpbGwg YWxzbyBlbmFibGUvZGlzYWJsZSB0aGUgQ1JUQy4KQEAgLTIzNjksMTkgKzIzNTYsMTYgQEAgc3Rh dGljIGludCBpZ3RfcGlwZV9jb21taXQoaWd0X3BpcGVfdCAqcGlwZSwKIAlpbnQgaTsKIAlpbnQg cmV0OwogCi0JaWYgKHBpcGUtPmJhY2tncm91bmRfY2hhbmdlZCkgewotCQlpZ3RfY3J0Y19zZXRf cHJvcGVydHkocGlwZSwgcGlwZS0+YmFja2dyb3VuZF9wcm9wZXJ0eSwKLQkJCXBpcGUtPmJhY2tn cm91bmQpOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgSUdUX05VTV9DUlRDX1BST1BTOyBpKyspCisJ CWlmICghaXNfYXRvbWljX3Byb3AoaSkpIHsKKwkJCWlndF9hc3NlcnQocGlwZS0+cHJvcHNbaV0p OwogCi0JaWYgKHBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgewotCQlpZ3RfY3J0Y19zZXRfcHJv cGVydHkocGlwZSwgcGlwZS0+ZGVnYW1tYV9wcm9wZXJ0eSwKLQkJCQkgICAgICBwaXBlLT5kZWdh bW1hX2Jsb2IpOwotCQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+Y3RtX3Byb3Bl cnR5LAotCQkJCSAgICAgIHBpcGUtPmN0bV9ibG9iKTsKLQkJaWd0X2NydGNfc2V0X3Byb3BlcnR5 KHBpcGUsIHBpcGUtPmdhbW1hX3Byb3BlcnR5LAotCQkJCSAgICAgIHBpcGUtPmdhbW1hX2Jsb2Ip OwotCX0KKwkJCXJldCA9IGRybU1vZGVPYmplY3RTZXRQcm9wZXJ0eShwaXBlLT5kaXNwbGF5LT5k cm1fZmQsCisJCQkJcGlwZS0+Y3J0Y19pZCwgRFJNX01PREVfT0JKRUNUX0NSVEMsCisJCQkJcGlw ZS0+cHJvcHNbaV0sIHBpcGUtPnZhbHVlc1tpXSk7CisKKwkJCUNIRUNLX1JFVFVSTihyZXQsIGZh aWxfb25fZXJyb3IpOworCQl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkr KykgewogCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxhbmVzW2ldOwpAQCAtMjM5NCw5 ICsyMzc4LDEwIEBAIHN0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUs CiB9CiAKIHN0YXRpYyB2b2lkCi1pZ3RfcGlwZV9yZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlw ZSwgdWludDY0X3QgKmJsb2IsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKK2lndF9waXBlX3Jl cGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCBlbnVtIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0 aWVzIHByb3AsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKIHsKIAlpZ3RfZGlzcGxheV90ICpk aXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsKKwl1aW50NjRfdCAqYmxvYiA9ICZwaXBlLT52YWx1ZXNb cHJvcF07CiAJdWludDMyX3QgYmxvYl9pZCA9IDA7CiAKIAlpZiAoKmJsb2IgIT0gMCkKQEAgLTI0 MDgsNiArMjM5Myw3IEBAIGlndF9waXBlX3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1 aW50NjRfdCAqYmxvYiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuZ3RoCiAJCQkJCQkgICAgIHB0ciwg bGVuZ3RoLCAmYmxvYl9pZCkgPT0gMCk7CiAKIAkqYmxvYiA9IGJsb2JfaWQ7CisJaWd0X3BpcGVf b2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZSwgcHJvcCk7CiB9CiAKIC8qCkBAIC0yNDE1LDUxICsy NDAxLDIzIEBAIGlndF9waXBlX3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRf dCAqYmxvYiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuZ3RoCiAgKi8KIHN0YXRpYyB2b2lkIGlndF9h dG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBlX29iaiwgZHJtTW9kZUF0 b21pY1JlcSAqcmVxKQogewotCWlmIChwaXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQotCQlp Z3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0JBQ0tH Uk9VTkQsIHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKLQotCWlmIChwaXBlX29iai0+Y29sb3JfbWdt dF9jaGFuZ2VkKSB7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBwaXBlX29i aiwgSUdUX0NSVENfREVHQU1NQV9MVVQsIHBpcGVfb2JqLT5kZWdhbW1hX2Jsb2IpOwotCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0NUTSwgcGlw ZV9vYmotPmN0bV9ibG9iKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBp cGVfb2JqLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIHBpcGVfb2JqLT5nYW1tYV9ibG9iKTsKLQl9Ci0K LQlpZiAocGlwZV9vYmotPm1vZGVfY2hhbmdlZCkgewotCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9 IGlndF9waXBlX2dldF9vdXRwdXQocGlwZV9vYmopOwotCi0JCWlmICghb3V0cHV0KSB7Ci0JCQlp Z3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosICZwaXBlX29iai0+bW9kZV9ibG9iLCBOVUxM LCAwKTsKLQotCQkJTE9HKHBpcGVfb2JqLT5kaXNwbGF5LCAiJXM6IFNldHRpbmcgTlVMTCBtb2Rl XG4iLAotCQkJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGVfb2JqLT5waXBlKSk7Ci0JCX0gZWxz ZSB7Ci0JCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1 dCk7CisJaW50IGk7CiAKLQkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgJnBpcGVf b2JqLT5tb2RlX2Jsb2IsIG1vZGUsIHNpemVvZigqbW9kZSkpOworCWZvciAoaSA9IDA7IGkgPCBJ R1RfTlVNX0NSVENfUFJPUFM7IGkrKykgeworCQlpZiAoIWlndF9waXBlX29ial9pc19wcm9wX2No YW5nZWQocGlwZV9vYmosIGkpKQorCQkJY29udGludWU7CiAKLQkJCUxPRyhwaXBlX29iai0+ZGlz cGxheSwgIiVzOiBTZXR0aW5nIG1vZGUgJXMgZnJvbSAlc1xuIiwKLQkJCSAgICBrbXN0ZXN0X3Bp cGVfbmFtZShwaXBlX29iai0+cGlwZSksCi0JCQkgICAgbW9kZS0+bmFtZSwgaWd0X291dHB1dF9u YW1lKG91dHB1dCkpOwotCQl9CisJCWlndF9kZWJ1ZygiUGlwZSAlczogU2V0dGluZyBwcm9wZXJ0 eSBcIiVzXCIgdG8gMHglIlBSSXg2NCIvJSJQUklpNjQiXG4iLAorCQkJa21zdGVzdF9waXBlX25h bWUocGlwZV9vYmotPnBpcGUpLCBpZ3RfY3J0Y19wcm9wX25hbWVzW2ldLAorCQkJcGlwZV9vYmot PnZhbHVlc1tpXSwgcGlwZV9vYmotPnZhbHVlc1tpXSk7CiAKLQkJaWd0X2F0b21pY19wb3B1bGF0 ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lELCBwaXBlX29iai0+bW9k ZV9ibG9iKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJ R1RfQ1JUQ19BQ1RJVkUsICEhb3V0cHV0KTsKKwkJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRv bWljQWRkUHJvcGVydHkocmVxLCBwaXBlX29iai0+Y3J0Y19pZCwgcGlwZV9vYmotPnByb3BzW2ld LCBwaXBlX29iai0+dmFsdWVzW2ldKSk7CiAJfQogCiAJaWYgKHBpcGVfb2JqLT5vdXRfZmVuY2Vf ZmQgIT0gLTEpIHsKIAkJY2xvc2UocGlwZV9vYmotPm91dF9mZW5jZV9mZCk7CiAJCXBpcGVfb2Jq LT5vdXRfZmVuY2VfZmQgPSAtMTsKIAl9Ci0KLQlpZiAocGlwZV9vYmotPm91dF9mZW5jZV9yZXF1 ZXN0ZWQpCi0JewotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmos IElHVF9DUlRDX09VVF9GRU5DRV9QVFIsCi0JCSAgICAodWludDY0X3QpKHVpbnRwdHJfdCkgJnBp cGVfb2JqLT5vdXRfZmVuY2VfZmQpOwotCX0KLQotCS8qCi0JICoJVE9ETzogQWRkIGFsbCBjcnRj IGxldmVsIHByb3BlcnRpZXMgaGVyZQotCSAqLwogfQogCiAvKgpAQCAtMjU1MCwxNSArMjUwOCwy MSBAQCBkaXNwbGF5X2NvbW1pdF9jaGFuZ2VkKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0g aWd0X2NvbW1pdF9zdHlsZSBzKQogCQlpZ3RfcGlwZV90ICpwaXBlX29iaiA9ICZkaXNwbGF5LT5w aXBlc1twaXBlXTsKIAkJaWd0X3BsYW5lX3QgKnBsYW5lOwogCi0JCXBpcGVfb2JqLT5jb2xvcl9t Z210X2NoYW5nZWQgPSBmYWxzZTsKLQkJcGlwZV9vYmotPmJhY2tncm91bmRfY2hhbmdlZCA9IGZh bHNlOworCQlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7CisJCQlpZiAoaWd0X3BpcGVfb2JqX2lz X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENfT1VUX0ZFTkNFX1BUUikpCisJCQkJaWd0 X2Fzc2VydChwaXBlX29iai0+b3V0X2ZlbmNlX2ZkID49IDApOwogCi0JCWlmIChzICE9IENPTU1J VF9VTklWRVJTQUwpCi0JCQlwaXBlX29iai0+bW9kZV9jaGFuZ2VkID0gZmFsc2U7Ci0KLQkJaWYg KHMgPT0gQ09NTUlUX0FUT01JQyAmJiBwaXBlX29iai0+b3V0X2ZlbmNlX3JlcXVlc3RlZCkgewot CQkJcGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0ZWQgPSBmYWxzZTsKLQkJCWlndF9hc3NlcnQo cGlwZV9vYmotPm91dF9mZW5jZV9mZCA+PSAwKTsKKwkJCXBpcGVfb2JqLT5jaGFuZ2VkID0gMDsK KwkJfSBlbHNlIHsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmos IElHVF9DUlRDX0JBQ0tHUk9VTkQpOworCQkJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdl ZChwaXBlX29iaiwgSUdUX0NSVENfQ1RNKTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2No YW5nZWQocGlwZV9vYmosIElHVF9DUlRDX0RFR0FNTUFfTFVUKTsKKwkJCWlndF9waXBlX29ial9j bGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRDX0dBTU1BX0xVVCk7CisKKwkJCWlm IChzICE9IENPTU1JVF9VTklWRVJTQUwpIHsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9j aGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xl YXJfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19BQ1RJVkUpOworCQkJfQogCQl9CiAK IAkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewpAQCAtMjgx MiwzMyArMjc3Niw4MyBAQCB2b2lkIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShpZ3Rfb3V0cHV0 X3QgKm91dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlKQogCiAJb3V0cHV0LT51c2Vfb3ZlcnJp ZGVfbW9kZSA9ICEhbW9kZTsKIAotCWlmIChwaXBlKQotCQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0 cnVlOworCWlmIChwaXBlKSB7CisJCWlmIChvdXRwdXQtPmRpc3BsYXktPmlzX2F0b21pYykKKwkJ CWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBpZ3Rfb3V0cHV0 X2dldF9tb2RlKG91dHB1dCksIHNpemVvZigqbW9kZSkpOworCQllbHNlCisJCQlpZ3RfcGlwZV9v Ympfc2V0X3Byb3BfY2hhbmdlZChwaXBlLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwl9CiB9CiAKIHZv aWQgaWd0X291dHB1dF9zZXRfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBp cGUpCiB7CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKLQlpZ3Rf cGlwZV90ICpvbGRfcGlwZTsKKwlpZ3RfcGlwZV90ICpvbGRfcGlwZSA9IE5VTEwsICpwaXBlX29i aiA9IE5VTEw7OwogCiAJaWd0X2Fzc2VydChvdXRwdXQtPm5hbWUpOwogCi0JaWYgKG91dHB1dC0+ cGVuZGluZ19waXBlICE9IFBJUEVfTk9ORSkgeworCWlmIChvdXRwdXQtPnBlbmRpbmdfcGlwZSAh PSBQSVBFX05PTkUpCiAJCW9sZF9waXBlID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91 dHB1dCk7CiAKLQkJb2xkX3BpcGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JfQorCWlmIChwaXBl ICE9IFBJUEVfTk9ORSkKKwkJcGlwZV9vYmogPSAmZGlzcGxheS0+cGlwZXNbcGlwZV07CiAKIAlM T0coZGlzcGxheSwgIiVzOiBzZXRfcGlwZSglcylcbiIsIGlndF9vdXRwdXRfbmFtZShvdXRwdXQp LAogCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7CiAJb3V0cHV0LT5wZW5kaW5nX3BpcGUg PSBwaXBlOwogCi0JaWYgKHBpcGUgIT0gUElQRV9OT05FKQotCQlkaXNwbGF5LT5waXBlc1twaXBl XS5tb2RlX2NoYW5nZWQgPSB0cnVlOworCWlmIChvbGRfcGlwZSkgeworCQlpZ3Rfb3V0cHV0X3Qg Km9sZF9vdXRwdXQ7CisKKwkJb2xkX291dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQob2xkX3Bp cGUpOworCQlpZiAoIW9sZF9vdXRwdXQpIHsKKwkJCWlmIChkaXNwbGF5LT5pc19hdG9taWMpCisJ CQkJaWd0X3BpcGVfcmVwbGFjZV9ibG9iKG9sZF9waXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBOVUxM LCAwKTsKKwkJCWVsc2UKKwkJCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChvbGRfcGlw ZSwgSUdUX0NSVENfTU9ERV9JRCk7CisKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShv bGRfcGlwZSwgSUdUX0NSVENfQUNUSVZFLCAwKTsKKwkJfQorCX0KIAogCWlndF9vdXRwdXRfc2V0 X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9SX0NSVENfSUQsIHBpcGUgPT0gUElQRV9O T05FID8gMCA6IGRpc3BsYXktPnBpcGVzW3BpcGVdLmNydGNfaWQpOwogCiAJaWd0X291dHB1dF9y ZWZyZXNoKG91dHB1dCk7CisKKwlpZiAocGlwZV9vYmopIHsKKwkJaWYgKGRpc3BsYXktPmlzX2F0 b21pYykKKwkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9J RCwgaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpLCBzaXplb2YoZHJtTW9kZU1vZGVJbmZvKSk7 CisJCWVsc2UKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1Rf Q1JUQ19NT0RFX0lEKTsKKworCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZV9vYmos IElHVF9DUlRDX0FDVElWRSwgMSk7CisJfQorfQorCisvKgorICogaWd0X3BpcGVfcmVmcmVzaDoK KyAqIEBkaXNwbGF5OiBhIHBvaW50ZXIgdG8gYW4gI2lndF9kaXNwbGF5X3Qgc3RydWN0dXJlCisg KiBAcGlwZTogUGlwZSB0byByZWZyZXNoCisgKiBAZm9yY2U6IFNob3VsZCBiZSBzZXQgdG8gdHJ1 ZSBpZiBtb2RlX2Jsb2IgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQKKyAqIHRvIGJlIHZhbGlkLCBm b3IgZXhhbXBsZSBhZnRlciBkb2luZyBhbiBhdG9taWMgY29tbWl0IGR1cmluZyBmb3JrIG9yIGNs b3NpbmcgZGlzcGxheSBmZC4KKyAqCisgKiBSZXF1ZXN0cyB0aGUgcGlwZSB0byBiZSBwYXJ0IG9m IHRoZSBzdGF0ZSBvbiBuZXh0IHVwZGF0ZS4KKyAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gc3RhdGUg bWF5IGhhdmUgYmVlbiBvdXQgb2Ygc3luYyBhZnRlcgorICogYSBmb3JrLCBvciB3ZSBqdXN0IHdh bnQgdG8gYmUgc3VyZSB0aGUgcGlwZSBpcyBpbmNsdWRlZAorICogaW4gdGhlIG5leHQgY29tbWl0 LgorICovCit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51 bSBwaXBlIHBpcGUsIGJvb2wgZm9yY2UpCit7CisJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGlz cGxheS0+cGlwZXNbcGlwZV07CisKKwlpZiAoZm9yY2UgJiYgZGlzcGxheS0+aXNfYXRvbWljKSB7 CisJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gaWd0X3BpcGVfZ2V0X291dHB1dChwaXBlX29iaik7 CisKKwkJcGlwZV9vYmotPnZhbHVlc1tJR1RfQ1JUQ19NT0RFX0lEXSA9IDA7CisJCWlmIChvdXRw dXQpCisJCQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX01PREVfSUQs IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KSwgc2l6ZW9mKGRybU1vZGVNb2RlSW5mbykpOwor CX0gZWxzZQorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NS VENfTU9ERV9JRCk7CiB9CiAKIHZvaWQgaWd0X291dHB1dF9zZXRfc2NhbGluZ19tb2RlKGlndF9v dXRwdXRfdCAqb3V0cHV0LCB1aW50NjRfdCBzY2FsaW5nX21vZGUpCkBAIC0zMDQ2LDI4ICszMDYw LDI1IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9yb3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGln dF9yb3RhdGlvbl90IHJvdGF0aW9uKQogICovCiB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2Zl bmNlKGlndF9waXBlX3QgKnBpcGUpCiB7Ci0JcGlwZS0+b3V0X2ZlbmNlX3JlcXVlc3RlZCA9IHRy dWU7CisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX09VVF9GRU5D RV9QVFIsIChwdHJkaWZmX3QpJnBpcGUtPm91dF9mZW5jZV9mZCk7CiB9CiAKIHZvaWQKIGlndF9w aXBlX3NldF9kZWdhbW1hX2x1dChpZ3RfcGlwZV90ICpwaXBlLCB2b2lkICpwdHIsIHNpemVfdCBs ZW5ndGgpCiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZwaXBlLT5kZWdhbW1hX2Js b2IsIHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2NoYW5nZWQgPSAxOworCWlndF9w aXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgcHRyLCBsZW5ndGgp OwogfQogCiB2b2lkCiBpZ3RfcGlwZV9zZXRfY3RtX21hdHJpeChpZ3RfcGlwZV90ICpwaXBlLCB2 b2lkICpwdHIsIHNpemVfdCBsZW5ndGgpCiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUs ICZwaXBlLT5jdG1fYmxvYiwgcHRyLCBsZW5ndGgpOwotCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdl ZCA9IDE7CisJaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsIElHVF9DUlRDX0NUTSwgcHRyLCBs ZW5ndGgpOwogfQogCiB2b2lkCiBpZ3RfcGlwZV9zZXRfZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBp cGUsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKIHsKLQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2Io cGlwZSwgJnBpcGUtPmdhbW1hX2Jsb2IsIHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210 X2NoYW5nZWQgPSAxOworCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19HQU1N QV9MVVQsIHB0ciwgbGVuZ3RoKTsKIH0KIAogLyoqCkBAIC0zMDg4LDkgKzMwOTksNyBAQCB2b2lk IGlndF9jcnRjX3NldF9iYWNrZ3JvdW5kKGlndF9waXBlX3QgKnBpcGUsIHVpbnQ2NF90IGJhY2tn cm91bmQpCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwaXBlLT5w aXBlLCBiYWNrZ3JvdW5kKTsKIAotCXBpcGUtPmJhY2tncm91bmQgPSBiYWNrZ3JvdW5kOwotCi0J cGlwZS0+YmFja2dyb3VuZF9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3Bf dmFsdWUocGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgYmFja2dyb3VuZCk7CiB9CiAKIHZvaWQg aWd0X3dhaXRfZm9yX3ZibGFua19jb3VudChpbnQgZHJtX2ZkLCBlbnVtIHBpcGUgcGlwZSwgaW50 IGNvdW50KQpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXgg Zjg3ZjhiZTMxNDIxLi5iNTMxMjdmZmVmNWYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysr IGIvbGliL2lndF9rbXMuaApAQCAtMzEzLDI3ICszMTMsMTMgQEAgc3RydWN0IGlndF9waXBlIHsK IAlpbnQgcGxhbmVfcHJpbWFyeTsKIAlpZ3RfcGxhbmVfdCAqcGxhbmVzOwogCi0JdWludDMyX3Qg YXRvbWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsKLQotCXVpbnQ2NF90IGJhY2tn cm91bmQ7IC8qIEJhY2tncm91bmQgY29sb3IgTVNCIEJHUiAxNmJwYyBMU0IgKi8KLQl1aW50MzJf dCBiYWNrZ3JvdW5kX2NoYW5nZWQgOiAxOwotCXVpbnQzMl90IGJhY2tncm91bmRfcHJvcGVydHk7 Ci0KLQl1aW50NjRfdCBkZWdhbW1hX2Jsb2I7Ci0JdWludDMyX3QgZGVnYW1tYV9wcm9wZXJ0eTsK LQl1aW50NjRfdCBjdG1fYmxvYjsKLQl1aW50MzJfdCBjdG1fcHJvcGVydHk7Ci0JdWludDY0X3Qg Z2FtbWFfYmxvYjsKLQl1aW50MzJfdCBnYW1tYV9wcm9wZXJ0eTsKLQl1aW50MzJfdCBjb2xvcl9t Z210X2NoYW5nZWQgOiAxOworCXVpbnQ2NF90IGNoYW5nZWQ7CisJdWludDMyX3QgcHJvcHNbSUdU X05VTV9DUlRDX1BST1BTXTsKKwl1aW50NjRfdCB2YWx1ZXNbSUdUX05VTV9DUlRDX1BST1BTXTsK IAogCXVpbnQzMl90IGNydGNfaWQ7CiAKLQl1aW50NjRfdCBtb2RlX2Jsb2I7Ci0JYm9vbCBtb2Rl X2NoYW5nZWQ7Ci0KIAlpbnQzMl90IG91dF9mZW5jZV9mZDsKLQlib29sIG91dF9mZW5jZV9yZXF1 ZXN0ZWQ7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC01MjcsMTcgKzUxMyw2IEBAIHN0YXRp YyBpbmxpbmUgYm9vbCBpZ3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1 dCkKIAkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApOyBcCiAJfSB3aGls ZSAoMCkKIAotLyoqCi0gKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgotICogQHJlcTog QSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKLSAqIEBwaXBlOiBBIHBvaW50ZXIgaWd0X3Bp cGVfdAotICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcwotICogQHZh bHVlOiB0aGUgdmFsdWUgdG8gYWRkCi0gKi8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9j cnRjX3JlcShyZXEsIHBpcGUsIHByb3AsIHZhbHVlKSBcCi0JaWd0X2Fzc2VydF9sdCgwLCBkcm1N b2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwaXBlLT5jcnRjX2lkLFwKLQkJCQkJCSAgcGlwZS0+ YXRvbWljX3Byb3BzX2NydGNbcHJvcF0sIHZhbHVlKSkKLQogI2RlZmluZSBpZ3Rfb3V0cHV0X2lz X3Byb3BfY2hhbmdlZChvdXRwdXQsIHByb3ApIFwKIAkoISEoKG91dHB1dCktPmNoYW5nZWQgJiAo MSA8PCAocHJvcCkpKSkKICNkZWZpbmUgaWd0X291dHB1dF9zZXRfcHJvcF9jaGFuZ2VkKG91dHB1 dCwgcHJvcCkgXApAQCAtNTUyLDI2ICs1MjcsMzQgQEAgc3RhdGljIGlubGluZSBib29sIGlndF9v dXRwdXRfaXNfY29ubmVjdGVkKGlndF9vdXRwdXRfdCAqb3V0cHV0KQogCQlpZ3Rfb3V0cHV0X3Nl dF9wcm9wX2NoYW5nZWQob3V0cHV0LCBwcm9wKTsgXAogCX0gd2hpbGUgKDApCiAKLS8qCi0gKiBp Z3RfcGlwZV9yZWZyZXNoOgotICogQGRpc3BsYXk6IGEgcG9pbnRlciB0byBhbiAjaWd0X2Rpc3Bs YXlfdCBzdHJ1Y3R1cmUKLSAqIEBwaXBlOiBQaXBlIHRvIHJlZnJlc2gKLSAqIEBmb3JjZTogU2hv dWxkIGJlIHNldCB0byB0cnVlIGlmIG1vZGVfYmxvYiBpcyBubyBsb25nZXIgY29uc2lkZXJlZAot ICogdG8gYmUgdmFsaWQsIGZvciBleGFtcGxlIGFmdGVyIGRvaW5nIGFuIGF0b21pYyBjb21taXQg ZHVyaW5nIGZvcmsgb3IgY2xvc2luZyBkaXNwbGF5IGZkLgotICoKLSAqIFJlcXVlc3RzIHRoZSBw aXBlIHRvIGJlIHBhcnQgb2YgdGhlIHN0YXRlIG9uIG5leHQgdXBkYXRlLgotICogVGhpcyBpcyB1 c2VmdWwgd2hlbiBzdGF0ZSBtYXkgaGF2ZSBiZWVuIG91dCBvZiBzeW5jIGFmdGVyCi0gKiBhIGZv cmssIG9yIHdlIGp1c3Qgd2FudCB0byBiZSBzdXJlIHRoZSBwaXBlIGlzIGluY2x1ZGVkCi0gKiBp biB0aGUgbmV4dCBjb21taXQuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotaWd0X3BpcGVfcmVm cmVzaChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBmb3JjZSkK LXsKLQlpZiAoZm9yY2UpCi0JCWRpc3BsYXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYiA9IDA7Cisj ZGVmaW5lIGlndF9waXBlX29ial9pc19wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwko ISEoKHBpcGVfb2JqKS0+Y2hhbmdlZCAmICgxIDw8IChwcm9wKSkpKQogCi0JZGlzcGxheS0+cGlw ZXNbcGlwZV0ubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKLX0KKyNkZWZpbmUgaWd0X3BpcGVfaXNfcHJv cF9jaGFuZ2VkKGRpc3BsYXksIHBpcGUsIHByb3ApIFwKKwlpZ3RfcGlwZV9vYmpfaXNfcHJvcF9j aGFuZ2VkKCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3ApCisKKyNkZWZpbmUgaWd0X3Bp cGVfb2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkocGlwZV9vYmopLT5j aGFuZ2VkIHw9IDEgPDwgKHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVfc2V0X3Byb3BfY2hhbmdl ZChkaXNwbGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQo JihkaXNwbGF5KS0+cGlwZXNbKHBpcGUpXSwgcHJvcCkKKworI2RlZmluZSBpZ3RfcGlwZV9vYmpf Y2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBwcm9wKSBcCisJKHBpcGVfb2JqKS0+Y2hhbmdl ZCAmPSB+KDEgPDwgKHByb3ApKQorCisjZGVmaW5lIGlndF9waXBlX2NsZWFyX3Byb3BfY2hhbmdl ZChkaXNwbGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdl ZCgmKGRpc3BsYXkpLT5waXBlc1socGlwZSldLCBwcm9wKQorCisjZGVmaW5lIGlndF9waXBlX29i al9zZXRfcHJvcF92YWx1ZShwaXBlX29iaiwgcHJvcCwgdmFsdWUpIFwKKwlkbyB7IFwKKwkJKHBp cGVfb2JqKS0+dmFsdWVzW3Byb3BdID0gKHZhbHVlKTsgXAorCQlpZ3RfcGlwZV9vYmpfc2V0X3By b3BfY2hhbmdlZChwaXBlX29iaiwgcHJvcCk7IFwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGln dF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIHByb3AsIHZhbHVlKSBcCisJaWd0 X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3As IHZhbHVlKQorCit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg ZW51bSBwaXBlIHBpcGUsIGJvb2wgZm9yY2UpOwogCiB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9y cyh2b2lkKTsKIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3RvcnModm9pZCk7CmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJy dXB0aWJsZS5jCmluZGV4IDU1NzA4NTQzOTBlYS4uMDI3MGM4Zjg3MGJmIDEwMDY0NAotLS0gYS90 ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2lu dGVycnVwdGlibGUuYwpAQCAtMTU2LDggKzE1Niw4IEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90 ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QK IAkJCQl1aW50MzJfdCBjb3VudF9wcm9wc1szXSA9IHsgMiwgMSwgNiB9OwogCQkJCXVpbnQzMl90 IHByb3BzW10gPSB7CiAJCQkJCS8qIGNydGM6IDIgcHJvcHMgKi8KLQkJCQkJcGxhbmUtPnBpcGUt PmF0b21pY19wcm9wc19jcnRjW0lHVF9DUlRDX01PREVfSURdLAotCQkJCQlwbGFuZS0+cGlwZS0+ YXRvbWljX3Byb3BzX2NydGNbSUdUX0NSVENfQUNUSVZFXSwKKwkJCQkJcGxhbmUtPnBpcGUtPnBy b3BzW0lHVF9DUlRDX01PREVfSURdLAorCQkJCQlwbGFuZS0+cGlwZS0+cHJvcHNbSUdUX0NSVENf QUNUSVZFXSwKIAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KIAkJCQkJb3V0cHV0LT5wcm9w c1tJR1RfQ09OTkVDVE9SX0NSVENfSURdLAogCQkJCQkvKiBwbGFuZTogcmVtYWluZGVyIHByb3Bz ICovCkBAIC0yNTMsNiArMjUzLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAogCWlndF93 YWl0Y2hpbGRyZW4oKTsKIAorCS8qIFRoZSBtb2RlIGlzIHVuc2V0IGJ5IHRoZSBmb3JrZWQgaGVs cGVyLCBmb3JjZSBhIHJlZnJlc2ggaGVyZSAqLworCWlmICh0ZXN0X3R5cGUgPT0gdGVzdF9sZWdh Y3lfbW9kZXNldCB8fCB0ZXN0X3R5cGUgPT0gdGVzdF9hdG9taWNfbW9kZXNldCkKKwkJaWd0X3Bp cGVfcmVmcmVzaChkaXNwbGF5LCBwaXBlLCB0cnVlKTsKKwogCWlndF9wbGFuZV9zZXRfZmIocGxh bmUsIE5VTEwpOwogCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7CiAJaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYXRv bWljX3RyYW5zaXRpb24uYyBiL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jCmluZGV4IDJh ZTc1ZjJkNjYzMC4uN2RkYjY1Y2VhMTgzIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfYXRvbWljX3Ry YW5zaXRpb24uYworKysgYi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYwpAQCAtNjMzLDcg KzYzMyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBzZXRfY29tYmluYXRpb25zKGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksIHVuc2lnbmVkIG1hc2ssIHN0cnVjdCBpCiAJCWRybU1vZGVNb2RlSW5mbyAqbW9k ZSA9IE5VTEw7CiAKIAkJaWYgKCEobWFzayAmICgxIDw8IHBpcGUpKSkgewotCQkJaWYgKGRpc3Bs YXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYikgeworCQkJaWYgKGlndF9waXBlX2lzX3Byb3BfY2hh bmdlZChkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19BQ1RJVkUpKSB7CiAJCQkJZXZlbnRfbWFzayB8 PSAxIDw8IHBpcGU7CiAJCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7CiAJCQl9CmRp ZmYgLS1naXQgYS90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMgYi90ZXN0cy9rbXNf Y3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKaW5kZXggZTEyZTE2MzQ0OWY4Li42NTlhMzBiOTAyMTkg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYworKysgYi90ZXN0 cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMg dm9pZCB0ZXN0X2NydGNfYmFja2dyb3VuZChkYXRhX3QgKmRhdGEpCiAJCWlndF9vdXRwdXRfc2V0 X3BpcGUob3V0cHV0LCBwaXBlKTsKIAogCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5 cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJaWd0X3JlcXVpcmUocGxhbmUt PnBpcGUtPmJhY2tncm91bmRfcHJvcGVydHkpOworCQlpZ3RfcmVxdWlyZShwbGFuZS0+cGlwZS0+ cHJvcHNbSUdUX0NSVENfQkFDS0dST1VORF0pOwogCiAJCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRw dXQsIHBpcGUsIHBsYW5lLCAxLCBQVVJQTEUsIEJMQUNLNjQpOwogCi0tIAoyLjE0LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=