From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t 03/12] lib/igt_kms: Rework pipe properties to be more atomic, v7. Date: Wed, 11 Oct 2017 12:11:10 +0200 Message-ID: <20171011101119.32130-4-maarten.lankhorst@linux.intel.com> References: <20171011101119.32130-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 6AD626E627 for ; Wed, 11 Oct 2017 10:11:26 +0000 (UTC) In-Reply-To: <20171011101119.32130-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 bHkgYXR0ZW1wdCB0byBjb21taXQgY2hhbmdlcyBwcm9wZXJ0aWVzLgpDaGFuZ2VzIHNpbmNlIHY2 OgotIENsZWFyIE9VVF9GRU5DRV9QVFIgb24gc3VjY2VzZnVsIGNvbW1pdC4KClNpZ25lZC1vZmYt Ynk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Ci0tLQogbGliL2lndF9rbXMuYyAgICAgICAgICAgICAgICAgICAgIHwgMjMxICsrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvaWd0X2ttcy5oICAgICAgICAgICAgICAg ICAgICAgfCAgNzcgKysrKystLS0tLS0tLQogdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxl LmMgIHwgICA4ICstCiB0ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYyAgICAgfCAgIDIgKy0K IHRlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYyB8ICAgMiArLQogNSBmaWxlcyBjaGFu Z2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xp Yi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmluZGV4IGU3N2FlNWQ2OTZkYS4uMDJkZTM5Yjhm YzdmIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21zLmMKQEAgLTI1 OSw4ICsyNTksOCBAQCBpZ3RfYXRvbWljX2ZpbGxfY29ubmVjdG9yX3Byb3BzKGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksIGlndF9vdXRwdXRfdCAqb3V0cHV0LAogfQogCiBzdGF0aWMgdm9pZAotaWd0 X2F0b21pY19maWxsX3BpcGVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BpcGVf dCAqcGlwZSwKLQkJCWludCBudW1fY3J0Y19wcm9wcywgY29uc3QgY2hhciAqKmNydGNfcHJvcF9u YW1lcykKK2lndF9maWxsX3BpcGVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3Bp cGVfdCAqcGlwZSwKKwkJICAgIGludCBudW1fY3J0Y19wcm9wcywgY29uc3QgY2hhciAqKmNydGNf cHJvcF9uYW1lcykKIHsKIAlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsKIAlpbnQg aSwgaiwgZmQ7CkBAIC0yNzgsNyArMjc4LDcgQEAgaWd0X2F0b21pY19maWxsX3BpcGVfcHJvcHMo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BpcGVfdCAqcGlwZSwKIAkJCWlmIChzdHJjbXAo cHJvcC0+bmFtZSwgY3J0Y19wcm9wX25hbWVzW2pdKSAhPSAwKQogCQkJCWNvbnRpbnVlOwogCi0J CQlwaXBlLT5hdG9taWNfcHJvcHNfY3J0Y1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCXBpcGUt PnByb3BzW2pdID0gcHJvcHMtPnByb3BzW2ldOwogCQkJYnJlYWs7CiAJCX0KIApAQCAtMTYyMCwx MyArMTYyMCw2IEBAIGdldF9jcnRjX3Byb3BlcnR5KGludCBkcm1fZmQsIHVpbnQzMl90IGNydGNf aWQsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJICAgIG5hbWUsIHByb3BfaWQsIHZhbHVlLCBwcm9w KTsKIH0KIAotc3RhdGljIHZvaWQKLWlndF9jcnRjX3NldF9wcm9wZXJ0eShpZ3RfcGlwZV90ICpw aXBlLCB1aW50MzJfdCBwcm9wX2lkLCB1aW50NjRfdCB2YWx1ZSkKLXsKLQlkcm1Nb2RlT2JqZWN0 U2V0UHJvcGVydHkocGlwZS0+ZGlzcGxheS0+ZHJtX2ZkLAotCQlwaXBlLT5jcnRjX2lkLCBEUk1f TU9ERV9PQkpFQ1RfQ1JUQywgcHJvcF9pZCwgdmFsdWUpOwotfQotCiAvKgogICogV2FsayBhIHBs YW5lJ3MgcHJvcGVydHkgbGlzdCB0byBkZXRlcm1pbmUgaXRzIHR5cGUuICBJZiB3ZSBkb24ndAog ICogZmluZCBhIHR5cGUgcHJvcGVydHksIHRoZW4gdGhlIGtlcm5lbCBkb2Vzbid0IHN1cHBvcnQg dW5pdmVyc2FsCkBAIC0xNjkwLDcgKzE2ODMsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJaW50IHAgPSAxOwogCQlpbnQgaiwg dHlwZTsKIAkJdWludDhfdCBsYXN0X3BsYW5lID0gMCwgbl9wbGFuZXMgPSAwOwotCQl1aW50NjRf dCBwcm9wX3ZhbHVlOwogCiAJCXBpcGUtPmNydGNfaWQgPSByZXNvdXJjZXMtPmNydGNzW2ldOwog CQlwaXBlLT5kaXNwbGF5ID0gZGlzcGxheTsKQEAgLTE3MDAsMjkgKzE2OTIsMTYgQEAgdm9pZCBp Z3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJCXBp cGUtPnBsYW5lcyA9IE5VTEw7CiAJCXBpcGUtPm91dF9mZW5jZV9mZCA9IC0xOwogCisJCWlndF9m aWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05VTV9DUlRDX1BST1BTLCBpZ3RfY3J0 Y19wcm9wX25hbWVzKTsKKworCQkvKiBGb3JjZSBtb2Rlc2V0IGRpc2FibGUgb24gZmlyc3QgY29t bWl0ICovCisJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9DUlRDX01P REVfSUQpOworCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBlLCBJR1RfQ1JUQ19B Q1RJVkUpOworCiAJCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlwZS0+Y3J0 Y19pZCwKLQkJCQkgICAgImJhY2tncm91bmRfY29sb3IiLAotCQkJCSAgICAmcGlwZS0+YmFja2dy b3VuZF9wcm9wZXJ0eSwKLQkJCQkgICAgJnByb3BfdmFsdWUsCisJCQkJICAgICJiYWNrZ3JvdW5k X2NvbG9yIiwgTlVMTCwKKwkJCQkgICAgJnBpcGUtPnZhbHVlc1tJR1RfQ1JUQ19CQUNLR1JPVU5E XSwKIAkJCQkgICAgTlVMTCk7Ci0JCXBpcGUtPmJhY2tncm91bmQgPSAodWludDMyX3QpcHJvcF92 YWx1ZTsKLQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lk LAotCQkJCSAgIkRFR0FNTUFfTFVUIiwKLQkJCQkgICZwaXBlLT5kZWdhbW1hX3Byb3BlcnR5LAot CQkJCSAgTlVMTCwKLQkJCQkgIE5VTEwpOwotCQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5k cm1fZmQsIHBpcGUtPmNydGNfaWQsCi0JCQkJICAiQ1RNIiwKLQkJCQkgICZwaXBlLT5jdG1fcHJv cGVydHksCi0JCQkJICBOVUxMLAotCQkJCSAgTlVMTCk7Ci0JCWdldF9jcnRjX3Byb3BlcnR5KGRp c3BsYXktPmRybV9mZCwgcGlwZS0+Y3J0Y19pZCwKLQkJCQkgICJHQU1NQV9MVVQiLAotCQkJCSAg JnBpcGUtPmdhbW1hX3Byb3BlcnR5LAotCQkJCSAgTlVMTCwKLQkJCQkgIE5VTEwpOwotCi0JCWln dF9hdG9taWNfZmlsbF9waXBlX3Byb3BzKGRpc3BsYXksIHBpcGUsIElHVF9OVU1fQ1JUQ19QUk9Q UywgaWd0X2NydGNfcHJvcF9uYW1lcyk7CiAKIAkJLyogY291bnQgbnVtYmVyIG9mIHZhbGlkIHBs YW5lcyAqLwogCQlmb3IgKGogPSAwOyBqIDwgcGxhbmVfcmVzb3VyY2VzLT5jb3VudF9wbGFuZXM7 IGorKykgewpAQCAtMTgxMyw4ICsxNzkyLDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJCQlpZ3RfYXNzZXJ0X2VxKHAsIG5fcGxh bmVzKTsKIAogCQlwaXBlLT5uX3BsYW5lcyA9IG5fcGxhbmVzOwotCi0JCXBpcGUtPm1vZGVfY2hh bmdlZCA9IHRydWU7CiAJfQogCiAJLyoKQEAgLTIyOTEsNyArMjI2OCw3IEBAIHN0YXRpYyBpbnQg aWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAog CWlmICghaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwcmltYXJ5LCBJR1RfUExBTkVfRkJfSUQp ICYmCiAJICAgICEocHJpbWFyeS0+Y2hhbmdlZCAmIElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01B U0spICYmCi0JICAgICFwcmltYXJ5LT5waXBlLT5tb2RlX2NoYW5nZWQpCisJICAgICFpZ3RfcGlw ZV9vYmpfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnktPnBpcGUsIElHVF9DUlRDX01PREVfSUQpKQog CQlyZXR1cm4gMDsKIAogCWNydGNfaWQgPSBwaXBlLT5jcnRjX2lkOwpAQCAtMjM2MCw2ICsyMzM3 LDE2IEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJ fQogfQogCitzdGF0aWMgYm9vbCBpc19hdG9taWNfcHJvcChlbnVtIGlndF9hdG9taWNfY3J0Y19w cm9wZXJ0aWVzIHByb3ApCit7CisgICAgICAgaWYgKHByb3AgPT0gSUdUX0NSVENfTU9ERV9JRCB8 fAorCSAgIHByb3AgPT0gSUdUX0NSVENfQUNUSVZFIHx8CisJICAgcHJvcCA9PSBJR1RfQ1JUQ19P VVRfRkVOQ0VfUFRSKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKwogLyoK ICAqIENvbW1pdCBhbGwgcGxhbmUgY2hhbmdlcyB0byBhbiBvdXRwdXQuICBOb3RlIHRoYXQgaWYg QHMgaXMgQ09NTUlUX0xFR0FDWSwKICAqIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgcHJpbWFyeSBw bGFuZSB3aWxsIGFsc28gZW5hYmxlL2Rpc2FibGUgdGhlIENSVEMuCkBAIC0yMzc3LDE5ICsyMzY0 LDE3IEBAIHN0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsCiAJaW50 IGk7CiAJaW50IHJldDsKIAotCWlmIChwaXBlLT5iYWNrZ3JvdW5kX2NoYW5nZWQpIHsKLQkJaWd0 X2NydGNfc2V0X3Byb3BlcnR5KHBpcGUsIHBpcGUtPmJhY2tncm91bmRfcHJvcGVydHksCi0JCQlw aXBlLT5iYWNrZ3JvdW5kKTsKLQl9CisJZm9yIChpID0gMDsgaSA8IElHVF9OVU1fQ1JUQ19QUk9Q UzsgaSsrKQorCQlpZiAoaWd0X3BpcGVfb2JqX2lzX3Byb3BfY2hhbmdlZChwaXBlLCBpKSAmJgor CQkgICAgIWlzX2F0b21pY19wcm9wKGkpKSB7CisJCQlpZ3RfYXNzZXJ0KHBpcGUtPnByb3BzW2ld KTsKIAotCWlmIChwaXBlLT5jb2xvcl9tZ210X2NoYW5nZWQpIHsKLQkJaWd0X2NydGNfc2V0X3By b3BlcnR5KHBpcGUsIHBpcGUtPmRlZ2FtbWFfcHJvcGVydHksCi0JCQkJICAgICAgcGlwZS0+ZGVn YW1tYV9ibG9iKTsKLQkJaWd0X2NydGNfc2V0X3Byb3BlcnR5KHBpcGUsIHBpcGUtPmN0bV9wcm9w ZXJ0eSwKLQkJCQkgICAgICBwaXBlLT5jdG1fYmxvYik7Ci0JCWlndF9jcnRjX3NldF9wcm9wZXJ0 eShwaXBlLCBwaXBlLT5nYW1tYV9wcm9wZXJ0eSwKLQkJCQkgICAgICBwaXBlLT5nYW1tYV9ibG9i KTsKLQl9CisJCQlyZXQgPSBkcm1Nb2RlT2JqZWN0U2V0UHJvcGVydHkocGlwZS0+ZGlzcGxheS0+ ZHJtX2ZkLAorCQkJCXBpcGUtPmNydGNfaWQsIERSTV9NT0RFX09CSkVDVF9DUlRDLAorCQkJCXBp cGUtPnByb3BzW2ldLCBwaXBlLT52YWx1ZXNbaV0pOworCisJCQlDSEVDS19SRVRVUk4ocmV0LCBm YWlsX29uX2Vycm9yKTsKKwkJfQogCiAJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBp KyspIHsKIAkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsKQEAgLTI0MDIs OSArMjM4NywxMCBAQCBzdGF0aWMgaW50IGlndF9waXBlX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBl LAogfQogCiBzdGF0aWMgdm9pZAotaWd0X3BpcGVfcmVwbGFjZV9ibG9iKGlndF9waXBlX3QgKnBp cGUsIHVpbnQ2NF90ICpibG9iLCB2b2lkICpwdHIsIHNpemVfdCBsZW5ndGgpCitpZ3RfcGlwZV9y ZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwgZW51bSBpZ3RfYXRvbWljX2NydGNfcHJvcGVy dGllcyBwcm9wLCB2b2lkICpwdHIsIHNpemVfdCBsZW5ndGgpCiB7CiAJaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9IHBpcGUtPmRpc3BsYXk7CisJdWludDY0X3QgKmJsb2IgPSAmcGlwZS0+dmFsdWVz W3Byb3BdOwogCXVpbnQzMl90IGJsb2JfaWQgPSAwOwogCiAJaWYgKCpibG9iICE9IDApCkBAIC0y NDE2LDYgKzI0MDIsNyBAQCBpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwg dWludDY0X3QgKmJsb2IsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aAogCQkJCQkJICAgICBwdHIs IGxlbmd0aCwgJmJsb2JfaWQpID09IDApOwogCiAJKmJsb2IgPSBibG9iX2lkOworCWlndF9waXBl X29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGUsIHByb3ApOwogfQogCiAvKgpAQCAtMjQyMyw1MSAr MjQxMCwyMyBAQCBpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwgdWludDY0 X3QgKmJsb2IsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aAogICovCiBzdGF0aWMgdm9pZCBpZ3Rf YXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQoaWd0X3BpcGVfdCAqcGlwZV9vYmosIGRybU1vZGVB dG9taWNSZXEgKnJlcSkKIHsKLQlpZiAocGlwZV9vYmotPmJhY2tncm91bmRfY2hhbmdlZCkKLQkJ aWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19CQUNL R1JPVU5ELCBwaXBlX29iai0+YmFja2dyb3VuZCk7Ci0KLQlpZiAocGlwZV9vYmotPmNvbG9yX21n bXRfY2hhbmdlZCkgewotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9v YmosIElHVF9DUlRDX0RFR0FNTUFfTFVULCBwaXBlX29iai0+ZGVnYW1tYV9ibG9iKTsKLQkJaWd0 X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLCBJR1RfQ1JUQ19DVE0sIHBp cGVfb2JqLT5jdG1fYmxvYik7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBw aXBlX29iaiwgSUdUX0NSVENfR0FNTUFfTFVULCBwaXBlX29iai0+Z2FtbWFfYmxvYik7Ci0JfQot Ci0JaWYgKHBpcGVfb2JqLT5tb2RlX2NoYW5nZWQpIHsKLQkJaWd0X291dHB1dF90ICpvdXRwdXQg PSBpZ3RfcGlwZV9nZXRfb3V0cHV0KHBpcGVfb2JqKTsKLQotCQlpZiAoIW91dHB1dCkgewotCQkJ aWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGVfb2JqLCAmcGlwZV9vYmotPm1vZGVfYmxvYiwgTlVM TCwgMCk7Ci0KLQkJCUxPRyhwaXBlX29iai0+ZGlzcGxheSwgIiVzOiBTZXR0aW5nIE5VTEwgbW9k ZVxuIiwKLQkJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlX29iai0+cGlwZSkpOwotCQl9IGVs c2UgewotCQkJZHJtTW9kZU1vZGVJbmZvICptb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRw dXQpOworCWludCBpOwogCi0JCQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosICZwaXBl X29iai0+bW9kZV9ibG9iLCBtb2RlLCBzaXplb2YoKm1vZGUpKTsKKwlmb3IgKGkgPSAwOyBpIDwg SUdUX05VTV9DUlRDX1BST1BTOyBpKyspIHsKKwkJaWYgKCFpZ3RfcGlwZV9vYmpfaXNfcHJvcF9j aGFuZ2VkKHBpcGVfb2JqLCBpKSkKKwkJCWNvbnRpbnVlOwogCi0JCQlMT0cocGlwZV9vYmotPmRp c3BsYXksICIlczogU2V0dGluZyBtb2RlICVzIGZyb20gJXNcbiIsCi0JCQkgICAga21zdGVzdF9w aXBlX25hbWUocGlwZV9vYmotPnBpcGUpLAotCQkJICAgIG1vZGUtPm5hbWUsIGlndF9vdXRwdXRf bmFtZShvdXRwdXQpKTsKLQkJfQorCQlpZ3RfZGVidWcoIlBpcGUgJXM6IFNldHRpbmcgcHJvcGVy dHkgXCIlc1wiIHRvIDB4JSJQUkl4NjQiLyUiUFJJaTY0IlxuIiwKKwkJCWttc3Rlc3RfcGlwZV9u YW1lKHBpcGVfb2JqLT5waXBlKSwgaWd0X2NydGNfcHJvcF9uYW1lc1tpXSwKKwkJCXBpcGVfb2Jq LT52YWx1ZXNbaV0sIHBpcGVfb2JqLT52YWx1ZXNbaV0pOwogCi0JCWlndF9hdG9taWNfcG9wdWxh dGVfY3J0Y19yZXEocmVxLCBwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9JRCwgcGlwZV9vYmotPm1v ZGVfYmxvYik7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXEocmVxLCBwaXBlX29iaiwg SUdUX0NSVENfQUNUSVZFLCAhIW91dHB1dCk7CisJCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0 b21pY0FkZFByb3BlcnR5KHJlcSwgcGlwZV9vYmotPmNydGNfaWQsIHBpcGVfb2JqLT5wcm9wc1tp XSwgcGlwZV9vYmotPnZhbHVlc1tpXSkpOwogCX0KIAogCWlmIChwaXBlX29iai0+b3V0X2ZlbmNl X2ZkICE9IC0xKSB7CiAJCWNsb3NlKHBpcGVfb2JqLT5vdXRfZmVuY2VfZmQpOwogCQlwaXBlX29i ai0+b3V0X2ZlbmNlX2ZkID0gLTE7CiAJfQotCi0JaWYgKHBpcGVfb2JqLT5vdXRfZmVuY2VfcmVx dWVzdGVkKQotCXsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2Jq LCBJR1RfQ1JUQ19PVVRfRkVOQ0VfUFRSLAotCQkgICAgKHVpbnQ2NF90KSh1aW50cHRyX3QpICZw aXBlX29iai0+b3V0X2ZlbmNlX2ZkKTsKLQl9Ci0KLQkvKgotCSAqCVRPRE86IEFkZCBhbGwgY3J0 YyBsZXZlbCBwcm9wZXJ0aWVzIGhlcmUKLQkgKi8KIH0KIAogLyoKQEAgLTI1NTgsMTUgKzI1MTcs MjIgQEAgZGlzcGxheV9jb21taXRfY2hhbmdlZChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVt IGlndF9jb21taXRfc3R5bGUgcykKIAkJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGlzcGxheS0+ cGlwZXNbcGlwZV07CiAJCWlndF9wbGFuZV90ICpwbGFuZTsKIAotCQlwaXBlX29iai0+Y29sb3Jf bWdtdF9jaGFuZ2VkID0gZmFsc2U7Ci0JCXBpcGVfb2JqLT5iYWNrZ3JvdW5kX2NoYW5nZWQgPSBm YWxzZTsKKwkJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykgeworCQkJaWYgKGlndF9waXBlX29ial9p c19wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRDX09VVF9GRU5DRV9QVFIpKQorCQkJCWln dF9hc3NlcnQocGlwZV9vYmotPm91dF9mZW5jZV9mZCA+PSAwKTsKIAotCQlpZiAocyAhPSBDT01N SVRfVU5JVkVSU0FMKQotCQkJcGlwZV9vYmotPm1vZGVfY2hhbmdlZCA9IGZhbHNlOwotCi0JCWlm IChzID09IENPTU1JVF9BVE9NSUMgJiYgcGlwZV9vYmotPm91dF9mZW5jZV9yZXF1ZXN0ZWQpIHsK LQkJCXBpcGVfb2JqLT5vdXRfZmVuY2VfcmVxdWVzdGVkID0gZmFsc2U7Ci0JCQlpZ3RfYXNzZXJ0 KHBpcGVfb2JqLT5vdXRfZmVuY2VfZmQgPj0gMCk7CisJCQlwaXBlX29iai0+dmFsdWVzW0lHVF9D UlRDX09VVF9GRU5DRV9QVFJdID0gMDsKKwkJCXBpcGVfb2JqLT5jaGFuZ2VkID0gMDsKKwkJfSBl bHNlIHsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9D UlRDX0JBQ0tHUk9VTkQpOworCQkJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZChwaXBl X29iaiwgSUdUX0NSVENfQ1RNKTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9wcm9wX2NoYW5nZWQo cGlwZV9vYmosIElHVF9DUlRDX0RFR0FNTUFfTFVUKTsKKwkJCWlndF9waXBlX29ial9jbGVhcl9w cm9wX2NoYW5nZWQocGlwZV9vYmosIElHVF9DUlRDX0dBTU1BX0xVVCk7CisKKwkJCWlmIChzICE9 IENPTU1JVF9VTklWRVJTQUwpIHsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJvcF9jaGFuZ2Vk KHBpcGVfb2JqLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwkJCQlpZ3RfcGlwZV9vYmpfY2xlYXJfcHJv cF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19BQ1RJVkUpOworCQkJfQogCQl9CiAKIAkJZm9y X2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewpAQCAtMjgyMCwzMyAr Mjc4Niw4MyBAQCB2b2lkIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlKQogCiAJb3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9k ZSA9ICEhbW9kZTsKIAotCWlmIChwaXBlKQotCQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwor CWlmIChwaXBlKSB7CisJCWlmIChvdXRwdXQtPmRpc3BsYXktPmlzX2F0b21pYykKKwkJCWlndF9w aXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBpZ3Rfb3V0cHV0X2dldF9t b2RlKG91dHB1dCksIHNpemVvZigqbW9kZSkpOworCQllbHNlCisJCQlpZ3RfcGlwZV9vYmpfc2V0 X3Byb3BfY2hhbmdlZChwaXBlLCBJR1RfQ1JUQ19NT0RFX0lEKTsKKwl9CiB9CiAKIHZvaWQgaWd0 X291dHB1dF9zZXRfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUpCiB7 CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKLQlpZ3RfcGlwZV90 ICpvbGRfcGlwZTsKKwlpZ3RfcGlwZV90ICpvbGRfcGlwZSA9IE5VTEwsICpwaXBlX29iaiA9IE5V TEw7OwogCiAJaWd0X2Fzc2VydChvdXRwdXQtPm5hbWUpOwogCi0JaWYgKG91dHB1dC0+cGVuZGlu Z19waXBlICE9IFBJUEVfTk9ORSkgeworCWlmIChvdXRwdXQtPnBlbmRpbmdfcGlwZSAhPSBQSVBF X05PTkUpCiAJCW9sZF9waXBlID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7 CiAKLQkJb2xkX3BpcGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JfQorCWlmIChwaXBlICE9IFBJ UEVfTk9ORSkKKwkJcGlwZV9vYmogPSAmZGlzcGxheS0+cGlwZXNbcGlwZV07CiAKIAlMT0coZGlz cGxheSwgIiVzOiBzZXRfcGlwZSglcylcbiIsIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAogCSAg ICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7CiAJb3V0cHV0LT5wZW5kaW5nX3BpcGUgPSBwaXBl OwogCi0JaWYgKHBpcGUgIT0gUElQRV9OT05FKQotCQlkaXNwbGF5LT5waXBlc1twaXBlXS5tb2Rl X2NoYW5nZWQgPSB0cnVlOworCWlmIChvbGRfcGlwZSkgeworCQlpZ3Rfb3V0cHV0X3QgKm9sZF9v dXRwdXQ7CisKKwkJb2xkX291dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQob2xkX3BpcGUpOwor CQlpZiAoIW9sZF9vdXRwdXQpIHsKKwkJCWlmIChkaXNwbGF5LT5pc19hdG9taWMpCisJCQkJaWd0 X3BpcGVfcmVwbGFjZV9ibG9iKG9sZF9waXBlLCBJR1RfQ1JUQ19NT0RFX0lELCBOVUxMLCAwKTsK KwkJCWVsc2UKKwkJCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChvbGRfcGlwZSwgSUdU X0NSVENfTU9ERV9JRCk7CisKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShvbGRfcGlw ZSwgSUdUX0NSVENfQUNUSVZFLCAwKTsKKwkJfQorCX0KIAogCWlndF9vdXRwdXRfc2V0X3Byb3Bf dmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9SX0NSVENfSUQsIHBpcGUgPT0gUElQRV9OT05FID8g MCA6IGRpc3BsYXktPnBpcGVzW3BpcGVdLmNydGNfaWQpOwogCiAJaWd0X291dHB1dF9yZWZyZXNo KG91dHB1dCk7CisKKwlpZiAocGlwZV9vYmopIHsKKwkJaWYgKGRpc3BsYXktPmlzX2F0b21pYykK KwkJCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlX29iaiwgSUdUX0NSVENfTU9ERV9JRCwgaWd0 X291dHB1dF9nZXRfbW9kZShvdXRwdXQpLCBzaXplb2YoZHJtTW9kZU1vZGVJbmZvKSk7CisJCWVs c2UKKwkJCWlndF9waXBlX29ial9zZXRfcHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBJR1RfQ1JUQ19N T0RFX0lEKTsKKworCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZV9vYmosIElHVF9D UlRDX0FDVElWRSwgMSk7CisJfQorfQorCisvKgorICogaWd0X3BpcGVfcmVmcmVzaDoKKyAqIEBk aXNwbGF5OiBhIHBvaW50ZXIgdG8gYW4gI2lndF9kaXNwbGF5X3Qgc3RydWN0dXJlCisgKiBAcGlw ZTogUGlwZSB0byByZWZyZXNoCisgKiBAZm9yY2U6IFNob3VsZCBiZSBzZXQgdG8gdHJ1ZSBpZiBt b2RlX2Jsb2IgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQKKyAqIHRvIGJlIHZhbGlkLCBmb3IgZXhh bXBsZSBhZnRlciBkb2luZyBhbiBhdG9taWMgY29tbWl0IGR1cmluZyBmb3JrIG9yIGNsb3Npbmcg ZGlzcGxheSBmZC4KKyAqCisgKiBSZXF1ZXN0cyB0aGUgcGlwZSB0byBiZSBwYXJ0IG9mIHRoZSBz dGF0ZSBvbiBuZXh0IHVwZGF0ZS4KKyAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gc3RhdGUgbWF5IGhh dmUgYmVlbiBvdXQgb2Ygc3luYyBhZnRlcgorICogYSBmb3JrLCBvciB3ZSBqdXN0IHdhbnQgdG8g YmUgc3VyZSB0aGUgcGlwZSBpcyBpbmNsdWRlZAorICogaW4gdGhlIG5leHQgY29tbWl0LgorICov Cit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBl IHBpcGUsIGJvb2wgZm9yY2UpCit7CisJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGlzcGxheS0+ cGlwZXNbcGlwZV07CisKKwlpZiAoZm9yY2UgJiYgZGlzcGxheS0+aXNfYXRvbWljKSB7CisJCWln dF9vdXRwdXRfdCAqb3V0cHV0ID0gaWd0X3BpcGVfZ2V0X291dHB1dChwaXBlX29iaik7CisKKwkJ cGlwZV9vYmotPnZhbHVlc1tJR1RfQ1JUQ19NT0RFX0lEXSA9IDA7CisJCWlmIChvdXRwdXQpCisJ CQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX01PREVfSUQsIGlndF9v dXRwdXRfZ2V0X21vZGUob3V0cHV0KSwgc2l6ZW9mKGRybU1vZGVNb2RlSW5mbykpOworCX0gZWxz ZQorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hhbmdlZChwaXBlX29iaiwgSUdUX0NSVENfTU9E RV9JRCk7CiB9CiAKIHZvaWQgaWd0X291dHB1dF9zZXRfc2NhbGluZ19tb2RlKGlndF9vdXRwdXRf dCAqb3V0cHV0LCB1aW50NjRfdCBzY2FsaW5nX21vZGUpCkBAIC0zMDUyLDI4ICszMDY4LDI1IEBA IHZvaWQgaWd0X3BsYW5lX3NldF9yb3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9yb3Rh dGlvbl90IHJvdGF0aW9uKQogICovCiB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGln dF9waXBlX3QgKnBpcGUpCiB7Ci0JcGlwZS0+b3V0X2ZlbmNlX3JlcXVlc3RlZCA9IHRydWU7CisJ aWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX09VVF9GRU5DRV9QVFIs IChwdHJkaWZmX3QpJnBpcGUtPm91dF9mZW5jZV9mZCk7CiB9CiAKIHZvaWQKIGlndF9waXBlX3Nl dF9kZWdhbW1hX2x1dChpZ3RfcGlwZV90ICpwaXBlLCB2b2lkICpwdHIsIHNpemVfdCBsZW5ndGgp CiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZwaXBlLT5kZWdhbW1hX2Jsb2IsIHB0 ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2NoYW5nZWQgPSAxOworCWlndF9waXBlX3Jl cGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgcHRyLCBsZW5ndGgpOwogfQog CiB2b2lkCiBpZ3RfcGlwZV9zZXRfY3RtX21hdHJpeChpZ3RfcGlwZV90ICpwaXBlLCB2b2lkICpw dHIsIHNpemVfdCBsZW5ndGgpCiB7Ci0JaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsICZwaXBl LT5jdG1fYmxvYiwgcHRyLCBsZW5ndGgpOwotCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IDE7 CisJaWd0X3BpcGVfcmVwbGFjZV9ibG9iKHBpcGUsIElHVF9DUlRDX0NUTSwgcHRyLCBsZW5ndGgp OwogfQogCiB2b2lkCiBpZ3RfcGlwZV9zZXRfZ2FtbWFfbHV0KGlndF9waXBlX3QgKnBpcGUsIHZv aWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKIHsKLQlpZ3RfcGlwZV9yZXBsYWNlX2Jsb2IocGlwZSwg JnBpcGUtPmdhbW1hX2Jsb2IsIHB0ciwgbGVuZ3RoKTsKLQlwaXBlLT5jb2xvcl9tZ210X2NoYW5n ZWQgPSAxOworCWlndF9waXBlX3JlcGxhY2VfYmxvYihwaXBlLCBJR1RfQ1JUQ19HQU1NQV9MVVQs IHB0ciwgbGVuZ3RoKTsKIH0KIAogLyoqCkBAIC0zMDk0LDkgKzMxMDcsNyBAQCB2b2lkIGlndF9j cnRjX3NldF9iYWNrZ3JvdW5kKGlndF9waXBlX3QgKnBpcGUsIHVpbnQ2NF90IGJhY2tncm91bmQp CiAJICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAogCSAgICBwaXBlLT5waXBlLCBi YWNrZ3JvdW5kKTsKIAotCXBpcGUtPmJhY2tncm91bmQgPSBiYWNrZ3JvdW5kOwotCi0JcGlwZS0+ YmFja2dyb3VuZF9jaGFuZ2VkID0gdHJ1ZTsKKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUo cGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgYmFja2dyb3VuZCk7CiB9CiAKIHZvaWQgaWd0X3dh aXRfZm9yX3ZibGFua19jb3VudChpbnQgZHJtX2ZkLCBlbnVtIHBpcGUgcGlwZSwgaW50IGNvdW50 KQpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggZjg3Zjhi ZTMxNDIxLi5iNTMxMjdmZmVmNWYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGli L2lndF9rbXMuaApAQCAtMzEzLDI3ICszMTMsMTMgQEAgc3RydWN0IGlndF9waXBlIHsKIAlpbnQg cGxhbmVfcHJpbWFyeTsKIAlpZ3RfcGxhbmVfdCAqcGxhbmVzOwogCi0JdWludDMyX3QgYXRvbWlj X3Byb3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsKLQotCXVpbnQ2NF90IGJhY2tncm91bmQ7 IC8qIEJhY2tncm91bmQgY29sb3IgTVNCIEJHUiAxNmJwYyBMU0IgKi8KLQl1aW50MzJfdCBiYWNr Z3JvdW5kX2NoYW5nZWQgOiAxOwotCXVpbnQzMl90IGJhY2tncm91bmRfcHJvcGVydHk7Ci0KLQl1 aW50NjRfdCBkZWdhbW1hX2Jsb2I7Ci0JdWludDMyX3QgZGVnYW1tYV9wcm9wZXJ0eTsKLQl1aW50 NjRfdCBjdG1fYmxvYjsKLQl1aW50MzJfdCBjdG1fcHJvcGVydHk7Ci0JdWludDY0X3QgZ2FtbWFf YmxvYjsKLQl1aW50MzJfdCBnYW1tYV9wcm9wZXJ0eTsKLQl1aW50MzJfdCBjb2xvcl9tZ210X2No YW5nZWQgOiAxOworCXVpbnQ2NF90IGNoYW5nZWQ7CisJdWludDMyX3QgcHJvcHNbSUdUX05VTV9D UlRDX1BST1BTXTsKKwl1aW50NjRfdCB2YWx1ZXNbSUdUX05VTV9DUlRDX1BST1BTXTsKIAogCXVp bnQzMl90IGNydGNfaWQ7CiAKLQl1aW50NjRfdCBtb2RlX2Jsb2I7Ci0JYm9vbCBtb2RlX2NoYW5n ZWQ7Ci0KIAlpbnQzMl90IG91dF9mZW5jZV9mZDsKLQlib29sIG91dF9mZW5jZV9yZXF1ZXN0ZWQ7 CiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC01MjcsMTcgKzUxMyw2IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBpZ3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKIAkJ aWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApOyBcCiAJfSB3aGlsZSAoMCkK IAotLyoqCi0gKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgotICogQHJlcTogQSBwb2lu dGVyIHRvIGRybU1vZGVBdG9taWNSZXEKLSAqIEBwaXBlOiBBIHBvaW50ZXIgaWd0X3BpcGVfdAot ICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcwotICogQHZhbHVlOiB0 aGUgdmFsdWUgdG8gYWRkCi0gKi8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3Jl cShyZXEsIHBpcGUsIHByb3AsIHZhbHVlKSBcCi0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRv bWljQWRkUHJvcGVydHkocmVxLCBwaXBlLT5jcnRjX2lkLFwKLQkJCQkJCSAgcGlwZS0+YXRvbWlj X3Byb3BzX2NydGNbcHJvcF0sIHZhbHVlKSkKLQogI2RlZmluZSBpZ3Rfb3V0cHV0X2lzX3Byb3Bf Y2hhbmdlZChvdXRwdXQsIHByb3ApIFwKIAkoISEoKG91dHB1dCktPmNoYW5nZWQgJiAoMSA8PCAo cHJvcCkpKSkKICNkZWZpbmUgaWd0X291dHB1dF9zZXRfcHJvcF9jaGFuZ2VkKG91dHB1dCwgcHJv cCkgXApAQCAtNTUyLDI2ICs1MjcsMzQgQEAgc3RhdGljIGlubGluZSBib29sIGlndF9vdXRwdXRf aXNfY29ubmVjdGVkKGlndF9vdXRwdXRfdCAqb3V0cHV0KQogCQlpZ3Rfb3V0cHV0X3NldF9wcm9w X2NoYW5nZWQob3V0cHV0LCBwcm9wKTsgXAogCX0gd2hpbGUgKDApCiAKLS8qCi0gKiBpZ3RfcGlw ZV9yZWZyZXNoOgotICogQGRpc3BsYXk6IGEgcG9pbnRlciB0byBhbiAjaWd0X2Rpc3BsYXlfdCBz dHJ1Y3R1cmUKLSAqIEBwaXBlOiBQaXBlIHRvIHJlZnJlc2gKLSAqIEBmb3JjZTogU2hvdWxkIGJl IHNldCB0byB0cnVlIGlmIG1vZGVfYmxvYiBpcyBubyBsb25nZXIgY29uc2lkZXJlZAotICogdG8g YmUgdmFsaWQsIGZvciBleGFtcGxlIGFmdGVyIGRvaW5nIGFuIGF0b21pYyBjb21taXQgZHVyaW5n IGZvcmsgb3IgY2xvc2luZyBkaXNwbGF5IGZkLgotICoKLSAqIFJlcXVlc3RzIHRoZSBwaXBlIHRv IGJlIHBhcnQgb2YgdGhlIHN0YXRlIG9uIG5leHQgdXBkYXRlLgotICogVGhpcyBpcyB1c2VmdWwg d2hlbiBzdGF0ZSBtYXkgaGF2ZSBiZWVuIG91dCBvZiBzeW5jIGFmdGVyCi0gKiBhIGZvcmssIG9y IHdlIGp1c3Qgd2FudCB0byBiZSBzdXJlIHRoZSBwaXBlIGlzIGluY2x1ZGVkCi0gKiBpbiB0aGUg bmV4dCBjb21taXQuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotaWd0X3BpcGVfcmVmcmVzaChp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBmb3JjZSkKLXsKLQlp ZiAoZm9yY2UpCi0JCWRpc3BsYXktPnBpcGVzW3BpcGVdLm1vZGVfYmxvYiA9IDA7CisjZGVmaW5l IGlndF9waXBlX29ial9pc19wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkoISEoKHBp cGVfb2JqKS0+Y2hhbmdlZCAmICgxIDw8IChwcm9wKSkpKQogCi0JZGlzcGxheS0+cGlwZXNbcGlw ZV0ubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKLX0KKyNkZWZpbmUgaWd0X3BpcGVfaXNfcHJvcF9jaGFu Z2VkKGRpc3BsYXksIHBpcGUsIHByb3ApIFwKKwlpZ3RfcGlwZV9vYmpfaXNfcHJvcF9jaGFuZ2Vk KCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVfb2Jq X3NldF9wcm9wX2NoYW5nZWQocGlwZV9vYmosIHByb3ApIFwKKwkocGlwZV9vYmopLT5jaGFuZ2Vk IHw9IDEgPDwgKHByb3ApCisKKyNkZWZpbmUgaWd0X3BpcGVfc2V0X3Byb3BfY2hhbmdlZChkaXNw bGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX3NldF9wcm9wX2NoYW5nZWQoJihkaXNw bGF5KS0+cGlwZXNbKHBpcGUpXSwgcHJvcCkKKworI2RlZmluZSBpZ3RfcGlwZV9vYmpfY2xlYXJf cHJvcF9jaGFuZ2VkKHBpcGVfb2JqLCBwcm9wKSBcCisJKHBpcGVfb2JqKS0+Y2hhbmdlZCAmPSB+ KDEgPDwgKHByb3ApKQorCisjZGVmaW5lIGlndF9waXBlX2NsZWFyX3Byb3BfY2hhbmdlZChkaXNw bGF5LCBwaXBlLCBwcm9wKSBcCisJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hhbmdlZCgmKGRp c3BsYXkpLT5waXBlc1socGlwZSldLCBwcm9wKQorCisjZGVmaW5lIGlndF9waXBlX29ial9zZXRf cHJvcF92YWx1ZShwaXBlX29iaiwgcHJvcCwgdmFsdWUpIFwKKwlkbyB7IFwKKwkJKHBpcGVfb2Jq KS0+dmFsdWVzW3Byb3BdID0gKHZhbHVlKTsgXAorCQlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfY2hh bmdlZChwaXBlX29iaiwgcHJvcCk7IFwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGlndF9waXBl X3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIHByb3AsIHZhbHVlKSBcCisJaWd0X3BpcGVf b2JqX3NldF9wcm9wX3ZhbHVlKCYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0sIHByb3AsIHZhbHVl KQorCit2b2lkIGlndF9waXBlX3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBw aXBlIHBpcGUsIGJvb2wgZm9yY2UpOwogCiB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lk KTsKIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3RvcnModm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9r bXNfYXRvbWljX2ludGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJs ZS5jCmluZGV4IDRhMmE1Nzc0MTJjYy4uNjRhMDA1NTk3YTIxIDEwMDY0NAotLS0gYS90ZXN0cy9r bXNfYXRvbWljX2ludGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVw dGlibGUuYwpAQCAtMTU4LDggKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGln dF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAkJCQl1 aW50MzJfdCBjb3VudF9wcm9wc1szXSA9IHsgMiwgMSwgNiB9OwogCQkJCXVpbnQzMl90IHByb3Bz W10gPSB7CiAJCQkJCS8qIGNydGM6IDIgcHJvcHMgKi8KLQkJCQkJcGxhbmUtPnBpcGUtPmF0b21p Y19wcm9wc19jcnRjW0lHVF9DUlRDX01PREVfSURdLAotCQkJCQlwbGFuZS0+cGlwZS0+YXRvbWlj X3Byb3BzX2NydGNbSUdUX0NSVENfQUNUSVZFXSwKKwkJCQkJcGxhbmUtPnBpcGUtPnByb3BzW0lH VF9DUlRDX01PREVfSURdLAorCQkJCQlwbGFuZS0+cGlwZS0+cHJvcHNbSUdUX0NSVENfQUNUSVZF XSwKIAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KIAkJCQkJb3V0cHV0LT5wcm9wc1tJR1Rf Q09OTkVDVE9SX0NSVENfSURdLAogCQkJCQkvKiBwbGFuZTogcmVtYWluZGVyIHByb3BzICovCkBA IC0yNTUsNiArMjU1LDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKIAogCWlndF93YWl0Y2hp bGRyZW4oKTsKIAorCS8qIFRoZSBtb2RlIGlzIHVuc2V0IGJ5IHRoZSBmb3JrZWQgaGVscGVyLCBm b3JjZSBhIHJlZnJlc2ggaGVyZSAqLworCWlmICh0ZXN0X3R5cGUgPT0gdGVzdF9sZWdhY3lfbW9k ZXNldCB8fCB0ZXN0X3R5cGUgPT0gdGVzdF9hdG9taWNfbW9kZXNldCkKKwkJaWd0X3BpcGVfcmVm cmVzaChkaXNwbGF5LCBwaXBlLCB0cnVlKTsKKwogCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5V TEwpOwogCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7CiAJaWd0X291dHB1dF9zZXRf cGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYXRvbWljX3Ry YW5zaXRpb24uYyBiL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jCmluZGV4IDJhZTc1ZjJk NjYzMC4uN2RkYjY1Y2VhMTgzIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRp b24uYworKysgYi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYwpAQCAtNjMzLDcgKzYzMyw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBzZXRfY29tYmluYXRpb25zKGlndF9kaXNwbGF5X3QgKmRpc3Bs YXksIHVuc2lnbmVkIG1hc2ssIHN0cnVjdCBpCiAJCWRybU1vZGVNb2RlSW5mbyAqbW9kZSA9IE5V TEw7CiAKIAkJaWYgKCEobWFzayAmICgxIDw8IHBpcGUpKSkgewotCQkJaWYgKGRpc3BsYXktPnBp cGVzW3BpcGVdLm1vZGVfYmxvYikgeworCQkJaWYgKGlndF9waXBlX2lzX3Byb3BfY2hhbmdlZChk aXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19BQ1RJVkUpKSB7CiAJCQkJZXZlbnRfbWFzayB8PSAxIDw8 IHBpcGU7CiAJCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7CiAJCQl9CmRpZmYgLS1n aXQgYS90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMgYi90ZXN0cy9rbXNfY3J0Y19i YWNrZ3JvdW5kX2NvbG9yLmMKaW5kZXggZTEyZTE2MzQ0OWY4Li42NTlhMzBiOTAyMTkgMTAwNjQ0 Ci0tLSBhL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYworKysgYi90ZXN0cy9rbXNf Y3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0 ZXN0X2NydGNfYmFja2dyb3VuZChkYXRhX3QgKmRhdGEpCiAJCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwaXBlKTsKIAogCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0 cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJaWd0X3JlcXVpcmUocGxhbmUtPnBpcGUt PmJhY2tncm91bmRfcHJvcGVydHkpOworCQlpZ3RfcmVxdWlyZShwbGFuZS0+cGlwZS0+cHJvcHNb SUdUX0NSVENfQkFDS0dST1VORF0pOwogCiAJCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQsIHBp cGUsIHBsYW5lLCAxLCBQVVJQTEUsIEJMQUNLNjQpOwogCi0tIAoyLjE0LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=