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, v6. Date: Wed, 4 Oct 2017 15:55:20 +0200 Message-ID: <20171004135520.25467-1-maarten.lankhorst@linux.intel.com> References: <20171003074529.15477-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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 790516E6D1 for ; Wed, 4 Oct 2017 13:55:26 +0000 (UTC) In-Reply-To: <20171003074529.15477-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 ZXJydXB0aWJsZS4KQ2hhbmdlcyBzaW5jZSB2NDoKLSBQZXJmb3JtIGVycm9yIGhhbmRsaW5nIHdo ZW4gc2V0dGluZyBjdXN0b20gY3J0YyBwcm9wZXJ0aWVzLgpDaGFuZ2VzIHNpbmNlIHY1OgotIE9u bHkgYXR0ZW1wdCB0byBjb21taXQgY2hhbmdlcyBwcm9wZXJ0aWVzLgoKU2lnbmVkLW9mZi1ieTog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0t CiBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICAgICAgfCAyMzAgKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAgICAg ICB8ICA3NyArKysrKy0tLS0tLS0tCiB0ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyAg fCAgIDggKy0KIHRlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jICAgICB8ICAgMiArLQogdGVz dHMva21zX2NydGNfYmFja2dyb3VuZF9jb2xvci5jIHwgICAyICstCiA1IGZpbGVzIGNoYW5nZWQs IDE1OCBpbnNlcnRpb25zKCspLCAxNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ln dF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMKaW5kZXggNDRkMmQ5NDUyOTg5Li5mNmY1M2I4YTlhMjgg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMjU5LDgg KzI1OSw4IEBAIGlndF9hdG9taWNfZmlsbF9jb25uZWN0b3JfcHJvcHMoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQsCiB9CiAKIHN0YXRpYyB2b2lkCi1pZ3RfYXRv bWljX2ZpbGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90ICpw aXBlLAotCQkJaW50IG51bV9jcnRjX3Byb3BzLCBjb25zdCBjaGFyICoqY3J0Y19wcm9wX25hbWVz KQoraWd0X2ZpbGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90 ICpwaXBlLAorCQkgICAgaW50IG51bV9jcnRjX3Byb3BzLCBjb25zdCBjaGFyICoqY3J0Y19wcm9w X25hbWVzKQogewogCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwogCWludCBpLCBq LCBmZDsKQEAgLTI3OCw3ICsyNzgsNyBAQCBpZ3RfYXRvbWljX2ZpbGxfcGlwZV9wcm9wcyhpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGlwZV90ICpwaXBlLAogCQkJaWYgKHN0cmNtcChwcm9w LT5uYW1lLCBjcnRjX3Byb3BfbmFtZXNbal0pICE9IDApCiAJCQkJY29udGludWU7CiAKLQkJCXBp cGUtPmF0b21pY19wcm9wc19jcnRjW2pdID0gcHJvcHMtPnByb3BzW2ldOworCQkJcGlwZS0+cHJv cHNbal0gPSBwcm9wcy0+cHJvcHNbaV07CiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjIwLDEzICsx NjIwLDYgQEAgZ2V0X2NydGNfcHJvcGVydHkoaW50IGRybV9mZCwgdWludDMyX3QgY3J0Y19pZCwg Y29uc3QgY2hhciAqbmFtZSwKIAkJCQkgICAgbmFtZSwgcHJvcF9pZCwgdmFsdWUsIHByb3ApOwog fQogCi1zdGF0aWMgdm9pZAotaWd0X2NydGNfc2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBpcGUs IHVpbnQzMl90IHByb3BfaWQsIHVpbnQ2NF90IHZhbHVlKQotewotCWRybU1vZGVPYmplY3RTZXRQ cm9wZXJ0eShwaXBlLT5kaXNwbGF5LT5kcm1fZmQsCi0JCXBpcGUtPmNydGNfaWQsIERSTV9NT0RF X09CSkVDVF9DUlRDLCBwcm9wX2lkLCB2YWx1ZSk7Ci19Ci0KIC8qCiAgKiBXYWxrIGEgcGxhbmUn cyBwcm9wZXJ0eSBsaXN0IHRvIGRldGVybWluZSBpdHMgdHlwZS4gIElmIHdlIGRvbid0CiAgKiBm aW5kIGEgdHlwZSBwcm9wZXJ0eSwgdGhlbiB0aGUga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCB1bml2 ZXJzYWwKQEAgLTE2OTAsNyArMTY4Myw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlz cGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQlpbnQgcCA9IDE7CiAJCWludCBqLCB0eXBl OwogCQl1aW50OF90IGxhc3RfcGxhbmUgPSAwLCBuX3BsYW5lcyA9IDA7Ci0JCXVpbnQ2NF90IHBy b3BfdmFsdWU7CiAKIAkJcGlwZS0+Y3J0Y19pZCA9IHJlc291cmNlcy0+Y3J0Y3NbaV07CiAJCXBp cGUtPmRpc3BsYXkgPSBkaXNwbGF5OwpAQCAtMTcwMCwyOSArMTY5MiwxNiBAQCB2b2lkIGlndF9k aXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJcGlwZS0+ cGxhbmVzID0gTlVMTDsKIAkJcGlwZS0+b3V0X2ZlbmNlX2ZkID0gLTE7CiAKKwkJaWd0X2ZpbGxf cGlwZV9wcm9wcyhkaXNwbGF5LCBwaXBlLCBJR1RfTlVNX0NSVENfUFJPUFMsIGlndF9jcnRjX3By b3BfbmFtZXMpOworCisJCS8qIEZvcmNlIG1vZGVzZXQgZGlzYWJsZSBvbiBmaXJzdCBjb21taXQg Ki8KKwkJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZSwgSUdUX0NSVENfTU9ERV9J RCk7CisJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9DUlRDX0FDVElW RSk7CisKIAkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lk LAotCQkJCSAgICAiYmFja2dyb3VuZF9jb2xvciIsCi0JCQkJICAgICZwaXBlLT5iYWNrZ3JvdW5k X3Byb3BlcnR5LAotCQkJCSAgICAmcHJvcF92YWx1ZSwKKwkJCQkgICAgImJhY2tncm91bmRfY29s b3IiLCBOVUxMLAorCQkJCSAgICAmcGlwZS0+dmFsdWVzW0lHVF9DUlRDX0JBQ0tHUk9VTkRdLAog CQkJCSAgICBOVUxMKTsKLQkJcGlwZS0+YmFja2dyb3VuZCA9ICh1aW50MzJfdClwcm9wX3ZhbHVl OwotCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHBpcGUtPmNydGNfaWQsCi0J CQkJICAiREVHQU1NQV9MVVQiLAotCQkJCSAgJnBpcGUtPmRlZ2FtbWFfcHJvcGVydHksCi0JCQkJ ICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0JCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9m ZCwgcGlwZS0+Y3J0Y19pZCwKLQkJCQkgICJDVE0iLAotCQkJCSAgJnBpcGUtPmN0bV9wcm9wZXJ0 eSwKLQkJCQkgIE5VTEwsCi0JCQkJICBOVUxMKTsKLQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxh eS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lkLAotCQkJCSAgIkdBTU1BX0xVVCIsCi0JCQkJICAmcGlw ZS0+Z2FtbWFfcHJvcGVydHksCi0JCQkJICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0KLQkJaWd0X2F0 b21pY19maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05VTV9DUlRDX1BST1BTLCBp Z3RfY3J0Y19wcm9wX25hbWVzKTsKIAogCQkvKiBjb3VudCBudW1iZXIgb2YgdmFsaWQgcGxhbmVz ICovCiAJCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisr KSB7CkBAIC0xODEzLDggKzE3OTIsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJCWlndF9hc3NlcnRfZXEocCwgbl9wbGFuZXMp OwogCiAJCXBpcGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7Ci0KLQkJcGlwZS0+bW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKIAl9CiAKIAkvKgpAQCAtMjI5MSw3ICsyMjY4LDcgQEAgc3RhdGljIGludCBpZ3Rf cHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpwcmltYXJ5LAogCiAJaWYg KCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9GQl9JRCkgJiYK IAkgICAgIShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSykg JiYKLQkgICAgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKKwkgICAgIWlndF9waXBlX29i al9pc19wcm9wX2NoYW5nZWQocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfTU9ERV9JRCkpCiAJCXJl dHVybiAwOwogCiAJY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7CkBAIC0yMzYwLDYgKzIzMzcsMTYg QEAgc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKIAl9CiB9 CiAKK3N0YXRpYyBib29sIGlzX2F0b21pY19wcm9wKGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3Bl cnRpZXMgcHJvcCkKK3sKKyAgICAgICBpZiAocHJvcCA9PSBJR1RfQ1JUQ19NT0RFX0lEIHx8CisJ ICAgcHJvcCA9PSBJR1RfQ1JUQ19BQ1RJVkUgfHwKKwkgICBwcm9wID09IElHVF9DUlRDX09VVF9G RU5DRV9QVFIpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICog Q29tbWl0IGFsbCBwbGFuZSBjaGFuZ2VzIHRvIGFuIG91dHB1dC4gIE5vdGUgdGhhdCBpZiBAcyBp cyBDT01NSVRfTEVHQUNZLAogICogZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBwcmltYXJ5IHBsYW5l IHdpbGwgYWxzbyBlbmFibGUvZGlzYWJsZSB0aGUgQ1JUQy4KQEAgLTIzNzcsMTkgKzIzNjQsMTcg QEAgc3RhdGljIGludCBpZ3RfcGlwZV9jb21taXQoaWd0X3BpcGVfdCAqcGlwZSwKIAlpbnQgaTsK IAlpbnQgcmV0OwogCi0JaWYgKHBpcGUtPmJhY2tncm91bmRfY2hhbmdlZCkgewotCQlpZ3RfY3J0 Y19zZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+YmFja2dyb3VuZF9wcm9wZXJ0eSwKLQkJCXBpcGUt PmJhY2tncm91bmQpOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgSUdUX05VTV9DUlRDX1BST1BTOyBp KyspCisJCWlmIChpZ3RfcGlwZV9vYmpfaXNfcHJvcF9jaGFuZ2VkKHBpcGUsIGkpICYmCisJCSAg ICAhaXNfYXRvbWljX3Byb3AoaSkpIHsKKwkJCWlndF9hc3NlcnQocGlwZS0+cHJvcHNbaV0pOwog Ci0JaWYgKHBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgewotCQlpZ3RfY3J0Y19zZXRfcHJvcGVy dHkocGlwZSwgcGlwZS0+ZGVnYW1tYV9wcm9wZXJ0eSwKLQkJCQkgICAgICBwaXBlLT5kZWdhbW1h X2Jsb2IpOwotCQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+Y3RtX3Byb3BlcnR5 LAotCQkJCSAgICAgIHBpcGUtPmN0bV9ibG9iKTsKLQkJaWd0X2NydGNfc2V0X3Byb3BlcnR5KHBp cGUsIHBpcGUtPmdhbW1hX3Byb3BlcnR5LAotCQkJCSAgICAgIHBpcGUtPmdhbW1hX2Jsb2IpOwot CX0KKwkJCXJldCA9IGRybU1vZGVPYmplY3RTZXRQcm9wZXJ0eShwaXBlLT5kaXNwbGF5LT5kcm1f ZmQsCisJCQkJcGlwZS0+Y3J0Y19pZCwgRFJNX01PREVfT0JKRUNUX0NSVEMsCisJCQkJcGlwZS0+ cHJvcHNbaV0sIHBpcGUtPnZhbHVlc1tpXSk7CisKKwkJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxf b25fZXJyb3IpOworCQl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkrKykg ewogCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxhbmVzW2ldOwpAQCAtMjQwMiw5ICsy Mzg3LDEwIEBAIHN0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsCiB9 CiAKIHN0YXRpYyB2b2lkCi1pZ3RfcGlwZV9yZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwg dWludDY0X3QgKmJsb2IsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKK2lndF9waXBlX3JlcGxh Y2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCBlbnVtIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVz IHByb3AsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKIHsKIAlpZ3RfZGlzcGxheV90ICpkaXNw bGF5ID0gcGlwZS0+ZGlzcGxheTsKKwl1aW50NjRfdCAqYmxvYiA9ICZwaXBlLT52YWx1ZXNbcHJv cF07CiAJdWludDMyX3QgYmxvYl9pZCA9IDA7CiAKIAlpZiAoKmJsb2IgIT0gMCkKQEAgLTI0MTYs NiArMjQwMiw3IEBAIGlndF9waXBlX3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1aW50 NjRfdCAqYmxvYiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuZ3RoCiAJCQkJCQkgICAgIHB0ciwgbGVu Z3RoLCAmYmxvYl9pZCkgPT0gMCk7CiAKIAkqYmxvYiA9IGJsb2JfaWQ7CisJaWd0X3BpcGVfb2Jq X3NldF9wcm9wX2NoYW5nZWQocGlwZSwgcHJvcCk7CiB9CiAKIC8qCkBAIC0yNDIzLDUxICsyNDEw LDIzIEBAIGlndF9waXBlX3JlcGxhY2VfYmxvYihpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRfdCAq YmxvYiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuZ3RoCiAgKi8KIHN0YXRpYyB2b2lkIGlndF9hdG9t aWNfcHJlcGFyZV9jcnRjX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBlX29iaiwgZHJtTW9kZUF0b21p Y1JlcSAqcmVxKQogewotCWlmIChwaXBlX29iai0+YmFja2dyb3VuZF9jaGFuZ2VkKQotCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0JBQ0tHUk9V TkQsIHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKLQotCWlmIChwaXBlX29iai0+Y29sb3JfbWdtdF9j aGFuZ2VkKSB7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBwaXBlX29iaiwg SUdUX0NSVENfREVHQU1NQV9MVVQsIHBpcGVfb2JqLT5kZWdhbW1hX2Jsb2IpOwotCQlpZ3RfYXRv bWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElHVF9DUlRDX0NUTSwgcGlwZV9v YmotPmN0bV9ibG9iKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVf b2JqLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIHBpcGVfb2JqLT5nYW1tYV9ibG9iKTsKLQl9Ci0KLQlp ZiAocGlwZV9vYmotPm1vZGVfY2hhbmdlZCkgewotCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGln dF9waXBlX2dldF9vdXRwdXQocGlwZV9vYmopOwotCi0JCWlmICghb3V0cHV0KSB7Ci0JCQlpZ3Rf cGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosICZwaXBlX29iai0+bW9kZV9ibG9iLCBOVUxMLCAw KTsKLQotCQkJTE9HKHBpcGVfb2JqLT5kaXNwbGF5LCAiJXM6IFNldHRpbmcgTlVMTCBtb2RlXG4i LAotCQkJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGVfb2JqLT5waXBlKSk7Ci0JCX0gZWxzZSB7 Ci0JCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7 CisJaW50IGk7CiAKLQkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgJnBpcGVfb2Jq LT5tb2RlX2Jsb2IsIG1vZGUsIHNpemVvZigqbW9kZSkpOworCWZvciAoaSA9IDA7IGkgPCBJR1Rf TlVNX0NSVENfUFJPUFM7IGkrKykgeworCQlpZiAoIWlndF9waXBlX29ial9pc19wcm9wX2NoYW5n ZWQocGlwZV9vYmosIGkpKQorCQkJY29udGludWU7CiAKLQkJCUxPRyhwaXBlX29iai0+ZGlzcGxh eSwgIiVzOiBTZXR0aW5nIG1vZGUgJXMgZnJvbSAlc1xuIiwKLQkJCSAgICBrbXN0ZXN0X3BpcGVf bmFtZShwaXBlX29iai0+cGlwZSksCi0JCQkgICAgbW9kZS0+bmFtZSwgaWd0X291dHB1dF9uYW1l KG91dHB1dCkpOwotCQl9CisJCWlndF9kZWJ1ZygiUGlwZSAlczogU2V0dGluZyBwcm9wZXJ0eSBc IiVzXCIgdG8gMHglIlBSSXg2NCIvJSJQUklpNjQiXG4iLAorCQkJa21zdGVzdF9waXBlX25hbWUo cGlwZV9vYmotPnBpcGUpLCBpZ3RfY3J0Y19wcm9wX25hbWVzW2ldLAorCQkJcGlwZV9vYmotPnZh bHVlc1tpXSwgcGlwZV9vYmotPnZhbHVlc1tpXSk7CiAKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9j cnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lELCBwaXBlX29iai0+bW9kZV9i bG9iKTsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1Rf Q1JUQ19BQ1RJVkUsICEhb3V0cHV0KTsKKwkJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWlj QWRkUHJvcGVydHkocmVxLCBwaXBlX29iai0+Y3J0Y19pZCwgcGlwZV9vYmotPnByb3BzW2ldLCBw aXBlX29iai0+dmFsdWVzW2ldKSk7CiAJfQogCiAJaWYgKHBpcGVfb2JqLT5vdXRfZmVuY2VfZmQg IT0gLTEpIHsKIAkJY2xvc2UocGlwZV9vYmotPm91dF9mZW5jZV9mZCk7CiAJCXBpcGVfb2JqLT5v dXRfZmVuY2VfZmQgPSAtMTsKIAl9Ci0KLQlpZiAocGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0 ZWQpCi0JewotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosIElH VF9DUlRDX09VVF9GRU5DRV9QVFIsCi0JCSAgICAodWludDY0X3QpKHVpbnRwdHJfdCkgJnBpcGVf b2JqLT5vdXRfZmVuY2VfZmQpOwotCX0KLQotCS8qCi0JICoJVE9ETzogQWRkIGFsbCBjcnRjIGxl dmVsIHByb3BlcnRpZXMgaGVyZQotCSAqLwogfQogCiAvKgpAQCAtMjU1OCwxNSArMjUxNywyMSBA QCBkaXNwbGF5X2NvbW1pdF9jaGFuZ2VkKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gaWd0 X2NvbW1pdF9zdHlsZSBzKQogCQlpZ3RfcGlwZV90ICpwaXBlX29iaiA9ICZkaXNwbGF5LT5waXBl c1twaXBlXTsKIAkJaWd0X3BsYW5lX3QgKnBsYW5lOwogCi0JCXBpcGVfb2JqLT5jb2xvcl9tZ210 X2NoYW5nZWQgPSBmYWxzZTsKLQkJcGlwZV9vYmotPmJhY2tncm91bmRfY2hhbmdlZCA9IGZhbHNl OworCQlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7CisJCQlpZiAoaWd0X3BpcGVfb2JqX2lzX3By b3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENfT1VUX0ZFTkNFX1BUUikpCisJCQkJaWd0X2Fz c2VydChwaXBlX29iai0+b3V0X2ZlbmNlX2ZkID49IDApOwogCi0JCWlmIChzICE9IENPTU1JVF9V TklWRVJTQUwpCi0JCQlwaXBlX29iai0+bW9kZV9jaGFuZ2VkID0gZmFsc2U7Ci0KLQkJaWYgKHMg PT0gQ09NTUlUX0FUT01JQyAmJiBwaXBlX29iai0+b3V0X2ZlbmNlX3JlcXVlc3RlZCkgewotCQkJ cGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0ZWQgPSBmYWxzZTsKLQkJCWlndF9hc3NlcnQocGlw ZV9vYmotPm91dF9mZW5jZV9mZCA+PSAwKTsKKwkJCXBpcGVfb2JqLT5jaGFuZ2VkID0gMDsKKwkJ fSBlbHNlIHsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElH VF9DUlRDX0JBQ0tHUk9VTkQpOworCQkJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZChw aXBlX29iaiwgSUdUX0NSVENfQ1RNKTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5n ZWQocGlwZV9vYmosIElHVF9DUlRDX0RFR0FNTUFfTFVUKTsKKwkJCWlndF9waXBlX29ial9jbGVh cl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRDX0dBTU1BX0xVVCk7CisKKwkJCWlmIChz ICE9IENPTU1JVF9VTklWRVJTQUwpIHsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9jaGFu Z2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJf cHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19BQ1RJVkUpOworCQkJfQogCQl9CiAKIAkJ Zm9yX2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewpAQCAtMjgyMCwz MyArMjc4NSw4MyBAQCB2b2lkIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShpZ3Rfb3V0cHV0X3Qg Km91dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlKQogCiAJb3V0cHV0LT51c2Vfb3ZlcnJpZGVf bW9kZSA9ICEhbW9kZTsKIAotCWlmIChwaXBlKQotCQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVl OworCWlmIChwaXBlKSB7CisJCWlmIChvdXRwdXQtPmRpc3BsYXktPmlzX2F0b21pYykKKwkJCWln dF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBpZ3Rfb3V0cHV0X2dl dF9tb2RlKG91dHB1dCksIHNpemVvZigqbW9kZSkpOworCQllbHNlCisJCQlpZ3RfcGlwZV9vYmpf c2V0X3Byb3BfY2hhbmdlZChwaXBlLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwl9CiB9CiAKIHZvaWQg aWd0X291dHB1dF9zZXRfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUp CiB7CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKLQlpZ3RfcGlw ZV90ICpvbGRfcGlwZTsKKwlpZ3RfcGlwZV90ICpvbGRfcGlwZSA9IE5VTEwsICpwaXBlX29iaiA9 IE5VTEw7OwogCiAJaWd0X2Fzc2VydChvdXRwdXQtPm5hbWUpOwogCi0JaWYgKG91dHB1dC0+cGVu ZGluZ19waXBlICE9IFBJUEVfTk9ORSkgeworCWlmIChvdXRwdXQtPnBlbmRpbmdfcGlwZSAhPSBQ SVBFX05PTkUpCiAJCW9sZF9waXBlID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1 dCk7CiAKLQkJb2xkX3BpcGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JfQorCWlmIChwaXBlICE9 IFBJUEVfTk9ORSkKKwkJcGlwZV9vYmogPSAmZGlzcGxheS0+cGlwZXNbcGlwZV07CiAKIAlMT0co ZGlzcGxheSwgIiVzOiBzZXRfcGlwZSglcylcbiIsIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAog CSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7CiAJb3V0cHV0LT5wZW5kaW5nX3BpcGUgPSBw aXBlOwogCi0JaWYgKHBpcGUgIT0gUElQRV9OT05FKQotCQlkaXNwbGF5LT5waXBlc1twaXBlXS5t b2RlX2NoYW5nZWQgPSB0cnVlOworCWlmIChvbGRfcGlwZSkgeworCQlpZ3Rfb3V0cHV0X3QgKm9s ZF9vdXRwdXQ7CisKKwkJb2xkX291dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQob2xkX3BpcGUp OworCQlpZiAoIW9sZF9vdXRwdXQpIHsKKwkJCWlmIChkaXNwbGF5LT5pc19hdG9taWMpCisJCQkJ aWd0X3BpcGVfcmVwbGFjZV9ibG9iKG9sZF9waXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBOVUxMLCAw KTsKKwkJCWVsc2UKKwkJCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChvbGRfcGlwZSwg SUdUX0NSVENfTU9ERV9JRCk7CisKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShvbGRf cGlwZSwgSUdUX0NSVENfQUNUSVZFLCAwKTsKKwkJfQorCX0KIAogCWlndF9vdXRwdXRfc2V0X3By b3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9SX0NSVENfSUQsIHBpcGUgPT0gUElQRV9OT05F ID8gMCA6IGRpc3BsYXktPnBpcGVzW3BpcGVdLmNydGNfaWQpOwogCiAJaWd0X291dHB1dF9yZWZy ZXNoKG91dHB1dCk7CisKKwlpZiAocGlwZV9vYmopIHsKKwkJaWYgKGRpc3BsYXktPmlzX2F0b21p YykKKwkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9JRCwg aWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpLCBzaXplb2YoZHJtTW9kZU1vZGVJbmZvKSk7CisJ CWVsc2UKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JU Q19NT0RFX0lEKTsKKworCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZV9vYmosIElH VF9DUlRDX0FDVElWRSwgMSk7CisJfQorfQorCisvKgorICogaWd0X3BpcGVfcmVmcmVzaDoKKyAq IEBkaXNwbGF5OiBhIHBvaW50ZXIgdG8gYW4gI2lndF9kaXNwbGF5X3Qgc3RydWN0dXJlCisgKiBA cGlwZTogUGlwZSB0byByZWZyZXNoCisgKiBAZm9yY2U6IFNob3VsZCBiZSBzZXQgdG8gdHJ1ZSBp ZiBtb2RlX2Jsb2IgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQKKyAqIHRvIGJlIHZhbGlkLCBmb3Ig ZXhhbXBsZSBhZnRlciBkb2luZyBhbiBhdG9taWMgY29tbWl0IGR1cmluZyBmb3JrIG9yIGNsb3Np bmcgZGlzcGxheSBmZC4KKyAqCisgKiBSZXF1ZXN0cyB0aGUgcGlwZSB0byBiZSBwYXJ0IG9mIHRo ZSBzdGF0ZSBvbiBuZXh0IHVwZGF0ZS4KKyAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gc3RhdGUgbWF5 IGhhdmUgYmVlbiBvdXQgb2Ygc3luYyBhZnRlcgorICogYSBmb3JrLCBvciB3ZSBqdXN0IHdhbnQg dG8gYmUgc3VyZSB0aGUgcGlwZSBpcyBpbmNsdWRlZAorICogaW4gdGhlIG5leHQgY29tbWl0Lgor ICovCit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBw aXBlIHBpcGUsIGJvb2wgZm9yY2UpCit7CisJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGlzcGxh eS0+cGlwZXNbcGlwZV07CisKKwlpZiAoZm9yY2UgJiYgZGlzcGxheS0+aXNfYXRvbWljKSB7CisJ CWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gaWd0X3BpcGVfZ2V0X291dHB1dChwaXBlX29iaik7CisK KwkJcGlwZV9vYmotPnZhbHVlc1tJR1RfQ1JUQ19NT0RFX0lEXSA9IDA7CisJCWlmIChvdXRwdXQp CisJCQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX01PREVfSUQsIGln dF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KSwgc2l6ZW9mKGRybU1vZGVNb2RlSW5mbykpOworCX0g ZWxzZQorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENf TU9ERV9JRCk7CiB9CiAKIHZvaWQgaWd0X291dHB1dF9zZXRfc2NhbGluZ19tb2RlKGlndF9vdXRw dXRfdCAqb3V0cHV0LCB1aW50NjRfdCBzY2FsaW5nX21vZGUpCkBAIC0zMDUyLDI4ICszMDY3LDI1 IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9yb3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9y b3RhdGlvbl90IHJvdGF0aW9uKQogICovCiB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNl KGlndF9waXBlX3QgKnBpcGUpCiB7Ci0JcGlwZS0+b3V0X2ZlbmNlX3JlcXVlc3RlZCA9IHRydWU7 CisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX09VVF9GRU5DRV9Q VFIsIChwdHJkaWZmX3QpJnBpcGUtPm91dF9mZW5jZV9mZCk7CiB9CiAKIHZvaWQKIGlndF9waXBl X3NldF9kZWdhbW1hX2x1dChpZ3RfcGlwZV90ICpwaXBlLCB2b2lkICpwdHIsIHNpemVfdCBsZW5n dGgpCiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZwaXBlLT5kZWdhbW1hX2Jsb2Is IHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2NoYW5nZWQgPSAxOworCWlndF9waXBl X3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgcHRyLCBsZW5ndGgpOwog fQogCiB2b2lkCiBpZ3RfcGlwZV9zZXRfY3RtX21hdHJpeChpZ3RfcGlwZV90ICpwaXBlLCB2b2lk ICpwdHIsIHNpemVfdCBsZW5ndGgpCiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZw aXBlLT5jdG1fYmxvYiwgcHRyLCBsZW5ndGgpOwotCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9 IDE7CisJaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsIElHVF9DUlRDX0NUTSwgcHRyLCBsZW5n dGgpOwogfQogCiB2b2lkCiBpZ3RfcGlwZV9zZXRfZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBpcGUs IHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKIHsKLQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlw ZSwgJnBpcGUtPmdhbW1hX2Jsb2IsIHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2No YW5nZWQgPSAxOworCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19HQU1NQV9M VVQsIHB0ciwgbGVuZ3RoKTsKIH0KIAogLyoqCkBAIC0zMDk0LDkgKzMxMDYsNyBAQCB2b2lkIGln dF9jcnRjX3NldF9iYWNrZ3JvdW5kKGlndF9waXBlX3QgKnBpcGUsIHVpbnQ2NF90IGJhY2tncm91 bmQpCiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwaXBlLT5waXBl LCBiYWNrZ3JvdW5kKTsKIAotCXBpcGUtPmJhY2tncm91bmQgPSBiYWNrZ3JvdW5kOwotCi0JcGlw ZS0+YmFja2dyb3VuZF9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFs dWUocGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgYmFja2dyb3VuZCk7CiB9CiAKIHZvaWQgaWd0 X3dhaXRfZm9yX3ZibGFua19jb3VudChpbnQgZHJtX2ZkLCBlbnVtIHBpcGUgcGlwZSwgaW50IGNv dW50KQpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggZjg3 ZjhiZTMxNDIxLi5iNTMxMjdmZmVmNWYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIv bGliL2lndF9rbXMuaApAQCAtMzEzLDI3ICszMTMsMTMgQEAgc3RydWN0IGlndF9waXBlIHsKIAlp bnQgcGxhbmVfcHJpbWFyeTsKIAlpZ3RfcGxhbmVfdCAqcGxhbmVzOwogCi0JdWludDMyX3QgYXRv bWljX3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsKLQotCXVpbnQ2NF90IGJhY2tncm91 bmQ7IC8qIEJhY2tncm91bmQgY29sb3IgTVNCIEJHUiAxNmJwYyBMU0IgKi8KLQl1aW50MzJfdCBi YWNrZ3JvdW5kX2NoYW5nZWQgOiAxOwotCXVpbnQzMl90IGJhY2tncm91bmRfcHJvcGVydHk7Ci0K LQl1aW50NjRfdCBkZWdhbW1hX2Jsb2I7Ci0JdWludDMyX3QgZGVnYW1tYV9wcm9wZXJ0eTsKLQl1 aW50NjRfdCBjdG1fYmxvYjsKLQl1aW50MzJfdCBjdG1fcHJvcGVydHk7Ci0JdWludDY0X3QgZ2Ft bWFfYmxvYjsKLQl1aW50MzJfdCBnYW1tYV9wcm9wZXJ0eTsKLQl1aW50MzJfdCBjb2xvcl9tZ210 X2NoYW5nZWQgOiAxOworCXVpbnQ2NF90IGNoYW5nZWQ7CisJdWludDMyX3QgcHJvcHNbSUdUX05V TV9DUlRDX1BST1BTXTsKKwl1aW50NjRfdCB2YWx1ZXNbSUdUX05VTV9DUlRDX1BST1BTXTsKIAog CXVpbnQzMl90IGNydGNfaWQ7CiAKLQl1aW50NjRfdCBtb2RlX2Jsb2I7Ci0JYm9vbCBtb2RlX2No YW5nZWQ7Ci0KIAlpbnQzMl90IG91dF9mZW5jZV9mZDsKLQlib29sIG91dF9mZW5jZV9yZXF1ZXN0 ZWQ7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC01MjcsMTcgKzUxMyw2IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBpZ3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkK IAkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApOyBcCiAJfSB3aGlsZSAo MCkKIAotLyoqCi0gKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgotICogQHJlcTogQSBw b2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKLSAqIEBwaXBlOiBBIHBvaW50ZXIgaWd0X3BpcGVf dAotICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcwotICogQHZhbHVl OiB0aGUgdmFsdWUgdG8gYWRkCi0gKi8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRj X3JlcShyZXEsIHBpcGUsIHByb3AsIHZhbHVlKSBcCi0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2Rl QXRvbWljQWRkUHJvcGVydHkocmVxLCBwaXBlLT5jcnRjX2lkLFwKLQkJCQkJCSAgcGlwZS0+YXRv bWljX3Byb3BzX2NydGNbcHJvcF0sIHZhbHVlKSkKLQogI2RlZmluZSBpZ3Rfb3V0cHV0X2lzX3By b3BfY2hhbmdlZChvdXRwdXQsIHByb3ApIFwKIAkoISEoKG91dHB1dCktPmNoYW5nZWQgJiAoMSA8 PCAocHJvcCkpKSkKICNkZWZpbmUgaWd0X291dHB1dF9zZXRfcHJvcF9jaGFuZ2VkKG91dHB1dCwg cHJvcCkgXApAQCAtNTUyLDI2ICs1MjcsMzQgQEAgc3RhdGljIGlubGluZSBib29sIGlndF9vdXRw dXRfaXNfY29ubmVjdGVkKGlndF9vdXRwdXRfdCAqb3V0cHV0KQogCQlpZ3Rfb3V0cHV0X3NldF9w cm9wX2NoYW5nZWQob3V0cHV0LCBwcm9wKTsgXAogCX0gd2hpbGUgKDApCiAKLS8qCi0gKiBpZ3Rf cGlwZV9yZWZyZXNoOgotICogQGRpc3BsYXk6IGEgcG9pbnRlciB0byBhbiAjaWd0X2Rpc3BsYXlf dCBzdHJ1Y3R1cmUKLSAqIEBwaXBlOiBQaXBlIHRvIHJlZnJlc2gKLSAqIEBmb3JjZTogU2hvdWxk IGJlIHNldCB0byB0cnVlIGlmIG1vZGVfYmxvYiBpcyBubyBsb25nZXIgY29uc2lkZXJlZAotICog dG8gYmUgdmFsaWQsIGZvciBleGFtcGxlIGFmdGVyIGRvaW5nIGFuIGF0b21pYyBjb21taXQgZHVy aW5nIGZvcmsgb3IgY2xvc2luZyBkaXNwbGF5IGZkLgotICoKLSAqIFJlcXVlc3RzIHRoZSBwaXBl IHRvIGJlIHBhcnQgb2YgdGhlIHN0YXRlIG9uIG5leHQgdXBkYXRlLgotICogVGhpcyBpcyB1c2Vm dWwgd2hlbiBzdGF0ZSBtYXkgaGF2ZSBiZWVuIG91dCBvZiBzeW5jIGFmdGVyCi0gKiBhIGZvcmss IG9yIHdlIGp1c3Qgd2FudCB0byBiZSBzdXJlIHRoZSBwaXBlIGlzIGluY2x1ZGVkCi0gKiBpbiB0 aGUgbmV4dCBjb21taXQuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotaWd0X3BpcGVfcmVmcmVz aChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBmb3JjZSkKLXsK LQlpZiAoZm9yY2UpCi0JCWRpc3BsYXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYiA9IDA7CisjZGVm aW5lIGlndF9waXBlX29ial9pc19wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkoISEo KHBpcGVfb2JqKS0+Y2hhbmdlZCAmICgxIDw8IChwcm9wKSkpKQogCi0JZGlzcGxheS0+cGlwZXNb cGlwZV0ubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKLX0KKyNkZWZpbmUgaWd0X3BpcGVfaXNfcHJvcF9j aGFuZ2VkKGRpc3BsYXksIHBpcGUsIHByb3ApIFwKKwlpZ3RfcGlwZV9vYmpfaXNfcHJvcF9jaGFu Z2VkKCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVf b2JqX3NldF9wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkocGlwZV9vYmopLT5jaGFu Z2VkIHw9IDEgPDwgKHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVfc2V0X3Byb3BfY2hhbmdlZChk aXNwbGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQoJihk aXNwbGF5KS0+cGlwZXNbKHBpcGUpXSwgcHJvcCkKKworI2RlZmluZSBpZ3RfcGlwZV9vYmpfY2xl YXJfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBwcm9wKSBcCisJKHBpcGVfb2JqKS0+Y2hhbmdlZCAm PSB+KDEgPDwgKHByb3ApKQorCisjZGVmaW5lIGlndF9waXBlX2NsZWFyX3Byb3BfY2hhbmdlZChk aXNwbGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZCgm KGRpc3BsYXkpLT5waXBlc1socGlwZSldLCBwcm9wKQorCisjZGVmaW5lIGlndF9waXBlX29ial9z ZXRfcHJvcF92YWx1ZShwaXBlX29iaiwgcHJvcCwgdmFsdWUpIFwKKwlkbyB7IFwKKwkJKHBpcGVf b2JqKS0+dmFsdWVzW3Byb3BdID0gKHZhbHVlKTsgXAorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3Bf Y2hhbmdlZChwaXBlX29iaiwgcHJvcCk7IFwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGlndF9w aXBlX3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIHByb3AsIHZhbHVlKSBcCisJaWd0X3Bp cGVfb2JqX3NldF9wcm9wX3ZhbHVlKCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3AsIHZh bHVlKQorCit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51 bSBwaXBlIHBpcGUsIGJvb2wgZm9yY2UpOwogCiB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2 b2lkKTsKIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3RvcnModm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0 aWJsZS5jCmluZGV4IDRhMmE1Nzc0MTJjYy4uNjRhMDA1NTk3YTIxIDEwMDY0NAotLS0gYS90ZXN0 cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVy cnVwdGlibGUuYwpAQCAtMTU4LDggKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0 KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAkJ CQl1aW50MzJfdCBjb3VudF9wcm9wc1szXSA9IHsgMiwgMSwgNiB9OwogCQkJCXVpbnQzMl90IHBy b3BzW10gPSB7CiAJCQkJCS8qIGNydGM6IDIgcHJvcHMgKi8KLQkJCQkJcGxhbmUtPnBpcGUtPmF0 b21pY19wcm9wc19jcnRjW0lHVF9DUlRDX01PREVfSURdLAotCQkJCQlwbGFuZS0+cGlwZS0+YXRv bWljX3Byb3BzX2NydGNbSUdUX0NSVENfQUNUSVZFXSwKKwkJCQkJcGxhbmUtPnBpcGUtPnByb3Bz W0lHVF9DUlRDX01PREVfSURdLAorCQkJCQlwbGFuZS0+cGlwZS0+cHJvcHNbSUdUX0NSVENfQUNU SVZFXSwKIAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KIAkJCQkJb3V0cHV0LT5wcm9wc1tJ R1RfQ09OTkVDVE9SX0NSVENfSURdLAogCQkJCQkvKiBwbGFuZTogcmVtYWluZGVyIHByb3BzICov CkBAIC0yNTUsNiArMjU1LDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAogCWlndF93YWl0 Y2hpbGRyZW4oKTsKIAorCS8qIFRoZSBtb2RlIGlzIHVuc2V0IGJ5IHRoZSBmb3JrZWQgaGVscGVy LCBmb3JjZSBhIHJlZnJlc2ggaGVyZSAqLworCWlmICh0ZXN0X3R5cGUgPT0gdGVzdF9sZWdhY3lf bW9kZXNldCB8fCB0ZXN0X3R5cGUgPT0gdGVzdF9hdG9taWNfbW9kZXNldCkKKwkJaWd0X3BpcGVf cmVmcmVzaChkaXNwbGF5LCBwaXBlLCB0cnVlKTsKKwogCWlndF9wbGFuZV9zZXRfZmIocGxhbmUs IE5VTEwpOwogCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7CiAJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYXRvbWlj X3RyYW5zaXRpb24uYyBiL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jCmluZGV4IDJhZTc1 ZjJkNjYzMC4uN2RkYjY1Y2VhMTgzIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfYXRvbWljX3RyYW5z aXRpb24uYworKysgYi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYwpAQCAtNjMzLDcgKzYz Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBzZXRfY29tYmluYXRpb25zKGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIHVuc2lnbmVkIG1hc2ssIHN0cnVjdCBpCiAJCWRybU1vZGVNb2RlSW5mbyAqbW9kZSA9 IE5VTEw7CiAKIAkJaWYgKCEobWFzayAmICgxIDw8IHBpcGUpKSkgewotCQkJaWYgKGRpc3BsYXkt PnBpcGVzW3BpcGVdLm1vZGVfYmxvYikgeworCQkJaWYgKGlndF9waXBlX2lzX3Byb3BfY2hhbmdl ZChkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19BQ1RJVkUpKSB7CiAJCQkJZXZlbnRfbWFzayB8PSAx IDw8IHBpcGU7CiAJCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7CiAJCQl9CmRpZmYg LS1naXQgYS90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMgYi90ZXN0cy9rbXNfY3J0 Y19iYWNrZ3JvdW5kX2NvbG9yLmMKaW5kZXggZTEyZTE2MzQ0OWY4Li42NTlhMzBiOTAyMTkgMTAw NjQ0Ci0tLSBhL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYworKysgYi90ZXN0cy9r bXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9p ZCB0ZXN0X2NydGNfYmFja2dyb3VuZChkYXRhX3QgKmRhdGEpCiAJCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBwaXBlKTsKIAogCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUo b3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJaWd0X3JlcXVpcmUocGxhbmUtPnBp cGUtPmJhY2tncm91bmRfcHJvcGVydHkpOworCQlpZ3RfcmVxdWlyZShwbGFuZS0+cGlwZS0+cHJv cHNbSUdUX0NSVENfQkFDS0dST1VORF0pOwogCiAJCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQs IHBpcGUsIHBsYW5lLCAxLCBQVVJQTEUsIEJMQUNLNjQpOwogCi0tIAoyLjE0LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=