From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 67D69892BB for ; Mon, 15 Apr 2019 08:58:05 +0000 (UTC) From: Maarten Lankhorst Date: Mon, 15 Apr 2019 10:58:02 +0200 Message-Id: <20190415085802.30562-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] HAX tests/kms_frontbuffer_tracking: Hack in chamelium frame dump support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: SW5pdGlhbGl6ZSB0aGUgY2hhbWVsaXVtIHdoZW4gc3RhcnRpbmcgdGhlIHRlc3RzLCBhbmQga2Vl cCB0aGUgcmVmZXJlbmNlIEZCJ3MuCldoZW4gd2UgZ2V0IGEgQ1JDIG1pc21hdGNoLCB3ZSBkdW1w IGFsbCB0aGUgZnJhbWVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBzaW5jZQp3ZSBzdGFydGVk IGNhcHR1cmluZywgYW5kIGluY2x1ZGUgdGhlIHJlZmVyZW5jZSBmcmFtZSBhcyB3ZWxsLgoKQWxz byB1bmhpZGUgdGhlIG5vcCBtZXRob2RzIGJ5IGRlZmF1bHQgZm9yIHRlc3RpbmcuCgpTaWduZWQt b2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgotLS0KIGxpYi9pZ3RfY2hhbWVsaXVtLmMgICAgICAgICAgICAgIHwgICAyICstCiBsaWIv aWd0X2NoYW1lbGl1bS5oICAgICAgICAgICAgICB8ICAgMSArCiB0ZXN0cy9rbXNfZnJvbnRidWZm ZXJfdHJhY2tpbmcuYyB8IDI2NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwppbmRleCA5YmJh NGIxZmQxYzguLmFhMTQxZmRhZjlmOCAxMDA2NDQKLS0tIGEvbGliL2lndF9jaGFtZWxpdW0uYwor KysgYi9saWIvaWd0X2NoYW1lbGl1bS5jCkBAIC05NDAsNyArOTQwLDcgQEAgc3RhdGljIHBpeG1h bl9pbWFnZV90ICpjb252ZXJ0X2ZyYW1lX2Zvcm1hdChwaXhtYW5faW1hZ2VfdCAqc3JjLAogCXJl dHVybiBjb252ZXJ0ZWQ7CiB9CiAKLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QgKmNvbnZlcnRfZnJh bWVfZHVtcF9hcmdiMzIoY29uc3Qgc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1wKQor Y2Fpcm9fc3VyZmFjZV90ICpjb252ZXJ0X2ZyYW1lX2R1bXBfYXJnYjMyKGNvbnN0IHN0cnVjdCBj aGFtZWxpdW1fZnJhbWVfZHVtcCAqZHVtcCkKIHsKIAljYWlyb19zdXJmYWNlX3QgKmR1bXBfc3Vy ZmFjZTsKIAlwaXhtYW5faW1hZ2VfdCAqaW1hZ2VfYmdyOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9j aGFtZWxpdW0uaCBiL2xpYi9pZ3RfY2hhbWVsaXVtLmgKaW5kZXggMjMzZWFkODU1NmYxLi43MjY2 MTg2MjIxNGQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmgKKysrIGIvbGliL2lndF9j aGFtZWxpdW0uaApAQCAtMTMxLDUgKzEzMSw2IEBAIHZvaWQgY2hhbWVsaXVtX2Fzc2VydF9mcmFt ZV9tYXRjaF9vcl9kdW1wKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKIHZvaWQgY2hhbWVs aXVtX2Nyb3BfYW5hbG9nX2ZyYW1lKHN0cnVjdCBjaGFtZWxpdW1fZnJhbWVfZHVtcCAqZHVtcCwg aW50IHdpZHRoLAogCQkJCSBpbnQgaGVpZ2h0KTsKIHZvaWQgY2hhbWVsaXVtX2Rlc3Ryb3lfZnJh bWVfZHVtcChzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1bXAgKmR1bXApOworY2Fpcm9fc3VyZmFj ZV90ICpjb252ZXJ0X2ZyYW1lX2R1bXBfYXJnYjMyKGNvbnN0IHN0cnVjdCBjaGFtZWxpdW1fZnJh bWVfZHVtcCAqZHVtcCk7CiAKICNlbmRpZiAvKiBJR1RfQ0hBTUVMSVVNX0ggKi8KZGlmZiAtLWdp dCBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jIGIvdGVzdHMva21zX2Zyb250YnVm ZmVyX3RyYWNraW5nLmMKaW5kZXggNjM3MjQ1ODVkNDMyLi4yZGI5NDRlMWZjMGEgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCisrKyBiL3Rlc3RzL2ttc19mcm9u dGJ1ZmZlcl90cmFja2luZy5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiaWd0LmgiCiAj aW5jbHVkZSAiaWd0X3N5c2ZzLmgiCiAjaW5jbHVkZSAiaWd0X3Bzci5oIgorI2luY2x1ZGUgImln dF9jaGFtZWxpdW0uaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3Rh dC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0xNTgsNiArMTU5LDggQEAgc3RydWN0IHsKIAlp Z3RfZGlzcGxheV90IGRpc3BsYXk7CiAKIAlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJc3Ry dWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtOworCXN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqY2hhbV9w b3J0OwogfSBkcm07CiAKIHN0cnVjdCB7CkBAIC0xODcsOSArMTkwLDEyIEBAIHN0cnVjdCB7CiAK IGlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKIGlndF9jcmNfdCAqd2FudGVkX2NyYzsKK3N0cnVj dCBpZ3RfZmIgKndhbnRlZF9mYjsKKwogc3RydWN0IHsKIAlib29sIGluaXRpYWxpemVkOwogCWln dF9jcmNfdCBjcmM7CisJc3RydWN0IGlndF9mYiBmcmFtZTsKIH0gYmx1ZV9jcmNzW0ZPUk1BVF9D T1VOVF07CiAKIC8qIFRoZSBnb2FsIG9mIHRoaXMgc3RydWN0dXJlIGlzIHRvIGVhc2lseSBhbGxv dyB1cyB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgd2UKQEAgLTIxMSw2ICsyMTcsNyBAQCBzdHJ1 Y3QgZHJhd19wYXR0ZXJuX2luZm8gewogCiAJYm9vbCBpbml0aWFsaXplZFtGT1JNQVRfQ09VTlRd OwogCWlndF9jcmNfdCAqY3Jjc1tGT1JNQVRfQ09VTlRdOworCXN0cnVjdCBpZ3RfZmIgKmZyYW1l c1tGT1JNQVRfQ09VTlRdOwogfTsKIAogLyogRHJhdyBiaWcgcmVjdGFuZ2xlcyBvbiB0aGUgc2Ny ZWVuLiAqLwpAQCAtMzcyLDYgKzM3OSw0NyBAQCBzdGF0aWMgdm9pZCBpbml0X21vZGVfcGFyYW1z KHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyAqcGFyYW1zLAogCXBhcmFtcy0+c3ByaXRlLmggPSA2NDsK IH0KIAorc3RhdGljIGRybU1vZGVDb25uZWN0aW9uCityZXByb2JlX2Nvbm5lY3RvcihzdHJ1Y3Qg Y2hhbWVsaXVtX3BvcnQgKnBvcnQpCit7CisJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwor CWRybU1vZGVDb25uZWN0aW9uIHN0YXR1czsKKworCWlndF9kZWJ1ZygiUmVwcm9iaW5nICVzLi4u XG4iLCBjaGFtZWxpdW1fcG9ydF9nZXRfbmFtZShwb3J0KSk7CisJY29ubmVjdG9yID0gY2hhbWVs aXVtX3BvcnRfZ2V0X2Nvbm5lY3Rvcihkcm0uY2hhbWVsaXVtLCBwb3J0LCB0cnVlKTsKKwlpZ3Rf YXNzZXJ0KGNvbm5lY3Rvcik7CisJc3RhdHVzID0gY29ubmVjdG9yLT5jb25uZWN0aW9uOworCisJ ZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitz dGF0aWMgdm9pZAord2FpdF9mb3JfY29ubmVjdG9yKHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9y dCwKKwkJICAgZHJtTW9kZUNvbm5lY3Rpb24gc3RhdHVzKQoreworCWJvb2wgZmluaXNoZWQgPSBm YWxzZTsKKworCWlndF9kZWJ1ZygiV2FpdGluZyBmb3IgJXMgdG8gJXNjb25uZWN0Li4uXG4iLAor CQkgIGNoYW1lbGl1bV9wb3J0X2dldF9uYW1lKHBvcnQpLAorCQkgIHN0YXR1cyA9PSBEUk1fTU9E RV9ESVNDT05ORUNURUQgPyAiZGlzIiA6ICIiKTsKKworCS8qCisJICogUmVseSBvbiBzaW1wbGUg cmVwcm9iaW5nIHNvIHdlIGRvbid0IGZhaWwgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJlCisJICog dGhhdCBocGQgZXZlbnRzIHdvcmsgaW4gdGhlIGV2ZW50IHRoYXQgaHBkIGRvZXNuJ3Qgd29yayBv biB0aGUgc3lzdGVtCisJICovCisJaWd0X3VudGlsX3RpbWVvdXQoMjApIHsKKwkJaWYgKHJlcHJv YmVfY29ubmVjdG9yKHBvcnQpID09IHN0YXR1cykgeworCQkJZmluaXNoZWQgPSB0cnVlOworCQkJ cmV0dXJuOworCQl9CisKKwkJdXNsZWVwKDUwMDAwKTsKKwl9CisKKwlpZ3RfYXNzZXJ0KGZpbmlz aGVkKTsKK30KKwogc3RhdGljIGJvb2wgZmluZF9jb25uZWN0b3IoYm9vbCBlZHBfb25seSwgYm9v bCBwaXBlX2EsCiAJCQkgICBpZ3Rfb3V0cHV0X3QgKmZvcmJpZGRlbl9vdXRwdXQsCiAJCQkgICBl bnVtIHBpcGUgZm9yYmlkZGVuX3BpcGUsCkBAIC0zODEsNiArNDI5LDYwIEBAIHN0YXRpYyBib29s IGZpbmRfY29ubmVjdG9yKGJvb2wgZWRwX29ubHksIGJvb2wgcGlwZV9hLAogCWlndF9vdXRwdXRf dCAqb3V0cHV0OwogCWVudW0gcGlwZSBwaXBlOwogCisJaWYgKGRybS5jaGFtZWxpdW0pIHsKKwkJ aW50IGNvdW50LCBpLCBqOworCQlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKipwb3J0cywgKnBvcnQ7 CisKKwkJcG9ydHMgPSBjaGFtZWxpdW1fZ2V0X3BvcnRzKGRybS5jaGFtZWxpdW0sICZjb3VudCk7 CisKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJCWRybU1vZGVDb25uZWN0b3Ig KmNvbm4gPQorCQkJCWNoYW1lbGl1bV9wb3J0X2dldF9jb25uZWN0b3IoZHJtLmNoYW1lbGl1bSwK KwkJCQkJCQkgICAgIHBvcnRzW2ldLCBmYWxzZSk7CisKKwkJCW91dHB1dCA9IGlndF9vdXRwdXRf ZnJvbV9jb25uZWN0b3IoJmRybS5kaXNwbGF5LCBjb25uKSwKKwkJCWRybU1vZGVGcmVlQ29ubmVj dG9yKGNvbm4pOworCisJCQlpZiAoMCAmJiBlZHBfb25seSAmJiBvdXRwdXQtPmNvbmZpZy5jb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9CisJCQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCisJ CQkJY29udGludWU7CisKKwkJCWlmIChvdXRwdXQgPT0gZm9yYmlkZGVuX291dHB1dCkKKwkJCQlj b250aW51ZTsKKworCQkJcG9ydCA9IHBvcnRzW2ldOworCQkJcGlwZSA9IFBJUEVfTk9ORTsKKwkJ CWlmIChwaXBlX2EgJiYgKG91dHB1dC0+Y29uZmlnLnZhbGlkX2NydGNfaWR4X21hc2sgJiAxKSkK KwkJCQlwaXBlID0gUElQRV9BOworCQkJZWxzZSBpZiAoIXBpcGVfYSkKKwkJCQlmb3IgKGogPSAw OyBqIDwgSUdUX01BWF9QSVBFUzsgaisrKQorCQkJCQlpZiAoaiAhPSBmb3JiaWRkZW5fcGlwZSAm JgorCQkJCQkgICAgKG91dHB1dC0+Y29uZmlnLnZhbGlkX2NydGNfaWR4X21hc2sgJiAoaiA8PCAx KSkpIHsKKwkJCQkJCXBpcGUgPSBqOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKworCQkJaWYgKHBp cGUgIT0gUElQRV9OT05FKSB7CisJCQkJaW50IGVkaWRfaWQgPSBjaGFtZWxpdW1fbmV3X2VkaWQo ZHJtLmNoYW1lbGl1bSwKKwkJCQkJCQkJIGlndF9rbXNfZ2V0X2Jhc2VfZWRpZCgpKTsKKworCQkJ CWNoYW1lbGl1bV9wb3J0X3NldF9lZGlkKGRybS5jaGFtZWxpdW0sIHBvcnQsIGVkaWRfaWQpOwor CQkJCWNoYW1lbGl1bV9wbHVnKGRybS5jaGFtZWxpdW0sIHBvcnQpOworCQkJCXdhaXRfZm9yX2Nv bm5lY3Rvcihwb3J0LCBEUk1fTU9ERV9DT05ORUNURUQpOworCisJCQkJLyogZm9yY2UgcmVwcm9i ZSAqLworCQkJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOworCisJCQkJ aWYgKCFmb3JiaWRkZW5fb3V0cHV0KQorCQkJCQlkcm0uY2hhbV9wb3J0ID0gcG9ydDsKKworCQkJ CSpyZXRfb3V0cHV0ID0gb3V0cHV0OworCQkJCSpyZXRfcGlwZSA9IHBpcGU7CisJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCX0KKwl9CisKIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0 KCZkcm0uZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7CiAJCWRybU1vZGVDb25uZWN0b3JQdHIgYyA9 IG91dHB1dC0+Y29uZmlnLmNvbm5lY3RvcjsKIApAQCAtMTE4NiwyMCArMTI4OCwxOCBAQCBzdGF0 aWMgdm9pZCBjb2xsZWN0X2NyYyhpZ3RfY3JjX3QgKmNyYykKIAogc3RhdGljIHZvaWQgaW5pdF9i bHVlX2NyYyhlbnVtIHBpeGVsX2Zvcm1hdCBmb3JtYXQpCiB7Ci0Jc3RydWN0IGlndF9mYiBibHVl OwotCiAJaWYgKGJsdWVfY3Jjc1tmb3JtYXRdLmluaXRpYWxpemVkKQogCQlyZXR1cm47CiAKIAlj cmVhdGVfZmIoZm9ybWF0LCBwcmltX21vZGVfcGFyYW1zLm1vZGUtPmhkaXNwbGF5LAogCQkgIHBy aW1fbW9kZV9wYXJhbXMubW9kZS0+dmRpc3BsYXksIG9wdC50aWxpbmcsIFBMQU5FX1BSSSwKLQkJ ICAmYmx1ZSk7CisJCSAgJmJsdWVfY3Jjc1tmb3JtYXRdLmZyYW1lKTsKIAotCWZpbGxfZmIoJmJs dWUsIENPTE9SX1BSSU1fQkcpOworCWZpbGxfZmIoJmJsdWVfY3Jjc1tmb3JtYXRdLmZyYW1lLCBD T0xPUl9QUklNX0JHKTsKIAogCWlndF9vdXRwdXRfc2V0X3BpcGUocHJpbV9tb2RlX3BhcmFtcy5v dXRwdXQsIHByaW1fbW9kZV9wYXJhbXMucGlwZSk7CiAJaWd0X291dHB1dF9vdmVycmlkZV9tb2Rl KHByaW1fbW9kZV9wYXJhbXMub3V0cHV0LCBwcmltX21vZGVfcGFyYW1zLm1vZGUpOwotCWlndF9w bGFuZV9zZXRfZmIocHJpbV9tb2RlX3BhcmFtcy5wcmltYXJ5LnBsYW5lLCAmYmx1ZSk7CisJaWd0 X3BsYW5lX3NldF9mYihwcmltX21vZGVfcGFyYW1zLnByaW1hcnkucGxhbmUsICZibHVlX2NyY3Nb Zm9ybWF0XS5mcmFtZSk7CiAJaWd0X2Rpc3BsYXlfY29tbWl0KCZkcm0uZGlzcGxheSk7CiAKIAlp ZiAoIXBpcGVfY3JjKSB7CkBAIC0xMjEzLDggKzEzMTMsOCBAQCBzdGF0aWMgdm9pZCBpbml0X2Js dWVfY3JjKGVudW0gcGl4ZWxfZm9ybWF0IGZvcm1hdCkKIAlwcmludF9jcmMoIkJsdWUgQ1JDOiAg IiwgJmJsdWVfY3Jjc1tmb3JtYXRdLmNyYyk7CiAKIAlpZ3RfZGlzcGxheV9yZXNldCgmZHJtLmRp c3BsYXkpOwotCi0JaWd0X3JlbW92ZV9mYihkcm0uZmQsICZibHVlKTsKKwlpZiAoIWRybS5jaGFt X3BvcnQpCisJCWlndF9yZW1vdmVfZmIoZHJtLmZkLCAmYmx1ZV9jcmNzW2Zvcm1hdF0uZnJhbWUp OwogCiAJYmx1ZV9jcmNzW2Zvcm1hdF0uaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpAQCAtMTIyMywz NyArMTMyMywzOCBAQCBzdGF0aWMgdm9pZCBpbml0X2NyY3MoZW51bSBwaXhlbF9mb3JtYXQgZm9y bWF0LAogCQkgICAgICBzdHJ1Y3QgZHJhd19wYXR0ZXJuX2luZm8gKnBhdHRlcm4pCiB7CiAJaW50 IHIsIHJfOwotCXN0cnVjdCBpZ3RfZmIgdG1wX2Zic1twYXR0ZXJuLT5uX3JlY3RzXTsKIAogCWlm IChwYXR0ZXJuLT5pbml0aWFsaXplZFtmb3JtYXRdKQogCQlyZXR1cm47CiAKIAlwYXR0ZXJuLT5j cmNzW2Zvcm1hdF0gPSBjYWxsb2MocGF0dGVybi0+bl9yZWN0cywKIAkJCQkgICAgICAgc2l6ZW9m KCoocGF0dGVybi0+Y3Jjc1tmb3JtYXRdKSkpOworCXBhdHRlcm4tPmZyYW1lc1tmb3JtYXRdID0g Y2FsbG9jKHBhdHRlcm4tPm5fcmVjdHMsCisJCQkJICAgICAgIHNpemVvZigqKHBhdHRlcm4tPmZy YW1lc1tmb3JtYXRdKSkpOwogCiAJZm9yIChyID0gMDsgciA8IHBhdHRlcm4tPm5fcmVjdHM7IHIr KykKIAkJY3JlYXRlX2ZiKGZvcm1hdCwgcHJpbV9tb2RlX3BhcmFtcy5tb2RlLT5oZGlzcGxheSwK IAkJCSAgcHJpbV9tb2RlX3BhcmFtcy5tb2RlLT52ZGlzcGxheSwgb3B0LnRpbGluZywKLQkJCSAg UExBTkVfUFJJLCAmdG1wX2Zic1tyXSk7CisJCQkgIFBMQU5FX1BSSSwgJnBhdHRlcm4tPmZyYW1l c1tmb3JtYXRdW3JdKTsKIAogCWZvciAociA9IDA7IHIgPCBwYXR0ZXJuLT5uX3JlY3RzOyByKysp Ci0JCWZpbGxfZmIoJnRtcF9mYnNbcl0sIENPTE9SX1BSSU1fQkcpOworCQlmaWxsX2ZiKCZwYXR0 ZXJuLT5mcmFtZXNbZm9ybWF0XVtyXSwgQ09MT1JfUFJJTV9CRyk7CiAKIAlpZiAocGF0dGVybi0+ ZnJhbWVzX3N0YWNrKSB7CiAJCWZvciAociA9IDA7IHIgPCBwYXR0ZXJuLT5uX3JlY3RzOyByKysp CiAJCQlmb3IgKHJfID0gMDsgcl8gPD0gcjsgcl8rKykKLQkJCQlkcmF3X3JlY3RfaWd0X2ZiKHBh dHRlcm4sICZ0bXBfZmJzW3JdLAorCQkJCWRyYXdfcmVjdF9pZ3RfZmIocGF0dGVybiwgJnBhdHRl cm4tPmZyYW1lc1tmb3JtYXRdW3JdLAogCQkJCQkJIElHVF9EUkFXX1BXUklURSwgcl8pOwogCX0g ZWxzZSB7CiAJCWZvciAociA9IDA7IHIgPCBwYXR0ZXJuLT5uX3JlY3RzOyByKyspCi0JCQlkcmF3 X3JlY3RfaWd0X2ZiKHBhdHRlcm4sICZ0bXBfZmJzW3JdLCBJR1RfRFJBV19QV1JJVEUsCisJCQlk cmF3X3JlY3RfaWd0X2ZiKHBhdHRlcm4sICZwYXR0ZXJuLT5mcmFtZXNbZm9ybWF0XVtyXSwgSUdU X0RSQVdfUFdSSVRFLAogCQkJCQkgcik7CiAJfQogCiAJaWd0X291dHB1dF9zZXRfcGlwZShwcmlt X21vZGVfcGFyYW1zLm91dHB1dCwgcHJpbV9tb2RlX3BhcmFtcy5waXBlKTsKIAlpZ3Rfb3V0cHV0 X292ZXJyaWRlX21vZGUocHJpbV9tb2RlX3BhcmFtcy5vdXRwdXQsIHByaW1fbW9kZV9wYXJhbXMu bW9kZSk7CiAJZm9yIChyID0gMDsgciA8IHBhdHRlcm4tPm5fcmVjdHM7IHIrKykgewotCQlpZ3Rf cGxhbmVfc2V0X2ZiKHByaW1fbW9kZV9wYXJhbXMucHJpbWFyeS5wbGFuZSwgJnRtcF9mYnNbcl0p OworCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1fbW9kZV9wYXJhbXMucHJpbWFyeS5wbGFuZSwgJnBh dHRlcm4tPmZyYW1lc1tmb3JtYXRdW3JdKTsKIAkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkcm0uZGlz cGxheSk7CiAKIAkJY29sbGVjdF9jcmMoJnBhdHRlcm4tPmNyY3NbZm9ybWF0XVtyXSk7CkBAIC0x MjY3LDcgKzEzNjgsOCBAQCBzdGF0aWMgdm9pZCBpbml0X2NyY3MoZW51bSBwaXhlbF9mb3JtYXQg Zm9ybWF0LAogCWlndF9kaXNwbGF5X3Jlc2V0KCZkcm0uZGlzcGxheSk7CiAKIAlmb3IgKHIgPSAw OyByIDwgcGF0dGVybi0+bl9yZWN0czsgcisrKQotCQlpZ3RfcmVtb3ZlX2ZiKGRybS5mZCwgJnRt cF9mYnNbcl0pOworCQlpZiAoIWRybS5jaGFtX3BvcnQpCisJCQlpZ3RfcmVtb3ZlX2ZiKGRybS5m ZCwgJnBhdHRlcm4tPmZyYW1lc1tmb3JtYXRdW3JdKTsKIAogCXBhdHRlcm4tPmluaXRpYWxpemVk W2Zvcm1hdF0gPSB0cnVlOwogfQpAQCAtMTI5Miw2ICsxMzk0LDExIEBAIHN0YXRpYyB2b2lkIHRl YXJkb3duX2RybSh2b2lkKQogCWNsb3NlKGRybS5mZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldHVw X2NoYW1lbGl1bSh2b2lkKQoreworCWRybS5jaGFtZWxpdW0gPSBjaGFtZWxpdW1faW5pdChkcm0u ZmQpOworfQorCiBzdGF0aWMgdm9pZCBzZXR1cF9tb2Rlc2V0KHZvaWQpCiB7CiAJaWd0X3JlcXVp cmUoaW5pdF9tb2Rlc2V0X2NhY2hlZF9wYXJhbXMoKSk7CkBAIC0xNDQ5LDYgKzE1NTYsNyBAQCBz dGF0aWMgdm9pZCBzZXR1cF9kcnJzKHZvaWQpCiBzdGF0aWMgdm9pZCBzZXR1cF9lbnZpcm9ubWVu dCh2b2lkKQogewogCXNldHVwX2RybSgpOworCXNldHVwX2NoYW1lbGl1bSgpOwogCXNldHVwX21v ZGVzZXQoKTsKIAogCXNldHVwX2ZiYygpOwpAQCAtMTU2Miw2ICsxNjcwLDU2IEBAIHN0YXRpYyBp bnQgYWRqdXN0X2Fzc2VydGlvbl9mbGFncyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBpbnQg ZmxhZ3MpCiAJcmV0dXJuIGZsYWdzOwogfQogCisKK3N0YXRpYyB2b2lkIGR1bXBfZnJhbWUoaW50 IGlkeCwgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1bXAgKmZyYW1l ID0gY2hhbWVsaXVtX3JlYWRfY2FwdHVyZWRfZnJhbWUoZHJtLmNoYW1lbGl1bSwgaWR4KTsKKwlj YWlyb19zdXJmYWNlX3QgKnN1cmY7CisJaWd0X2Fzc2VydChmcmFtZSk7CisKKwlzdXJmID0gY29u dmVydF9mcmFtZV9kdW1wX2FyZ2IzMihmcmFtZSk7CisJaWd0X2Fzc2VydF9lcShjYWlyb19zdXJm YWNlX3dyaXRlX3RvX3BuZyhzdXJmLCBuYW1lKSwgQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOworCWNh aXJvX3N1cmZhY2VfZGVzdHJveShzdXJmKTsKKwljaGFtZWxpdW1fZGVzdHJveV9mcmFtZV9kdW1w KGZyYW1lKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tfY3JjX2VxdWFsKGlndF9jcmNfdCAqcmVm LCBpZ3RfY3JjX3QgKmNyYywgc3RydWN0IGlndF9mYiAqZmIpCit7CisJaW50IGNvdW50LCBpID0g MCwgbGltOworCWNhaXJvX3N1cmZhY2VfdCAqc3VyZjsKKwlpZ3RfY3JjX3QgKmNyY3M7CisJY2hh ciBuYW1lWzI1Nl07CisKKwlpZiAoIWRybS5jaGFtZWxpdW0pCisJCXJldHVybiBpZ3RfYXNzZXJ0 X2NyY19lcXVhbChyZWYsIGNyYyk7CisKKwlpZiAoaWd0X2NoZWNrX2NyY19lcXVhbChyZWYsIGNy YykpCisJCXJldHVybjsKKworCWlndF93YWl0X2Zvcl92YmxhbmsoZHJtLmZkLCBwcmltX21vZGVf cGFyYW1zLnBpcGUpOworCWlndF93YWl0X2Zvcl92YmxhbmsoZHJtLmZkLCBwcmltX21vZGVfcGFy YW1zLnBpcGUpOworCWNoYW1lbGl1bV9zdG9wX2NhcHR1cmUoZHJtLmNoYW1lbGl1bSwgMCk7CisJ Y3JjcyA9IGNoYW1lbGl1bV9yZWFkX2NhcHR1cmVkX2NyY3MoZHJtLmNoYW1lbGl1bSwgJmNvdW50 KTsKKworCWxpbSA9IGNoYW1lbGl1bV9nZXRfZnJhbWVfbGltaXQoZHJtLmNoYW1lbGl1bSwgZHJt LmNoYW1fcG9ydCwgMCwgMCk7CisJaWd0X2luZm8oIlJlYWQgJWkgb2YgJWkgZnJhbWVzXG4iLCBj b3VudCwgbGltKTsKKworCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgInAldS1yZWZlcmVu Y2UucG5nIiwgZ2V0cGlkKCkpOworCisJc3VyZiA9IGlndF9nZXRfY2Fpcm9fc3VyZmFjZShkcm0u ZmQsIGZiKTsKKwlpZ3RfYXNzZXJ0X2VxKGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nKHN1cmYs IG5hbWUpLCBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CisJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1 cmYpOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJc25wcmludGYobmFtZSwg c2l6ZW9mKG5hbWUpLCAicCV1LWZyYW1lLSUwMmkucG5nIiwgZ2V0cGlkKCksIGkpOworCQlkdW1w X2ZyYW1lKGksIG5hbWUpOworCX0KKworCWZyZWUoY3Jjcyk7CisKKwlpZ3RfYXNzZXJ0KDApOwor fQorCiBzdGF0aWMgdm9pZCBkb19jcmNfYXNzZXJ0aW9ucyhpbnQgZmxhZ3MpCiB7CiAJaWd0X2Ny Y190IGNyYzsKQEAgLTE1NzMsNyArMTczMSw3IEBAIHN0YXRpYyB2b2lkIGRvX2NyY19hc3NlcnRp b25zKGludCBmbGFncykKIAlwcmludF9jcmMoIkNhbGN1bGF0ZWQgQ1JDOiIsICZjcmMpOwogCiAJ aWd0X2Fzc2VydCh3YW50ZWRfY3JjKTsKLQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCB3YW50 ZWRfY3JjKTsKKwljaGVja19jcmNfZXF1YWwod2FudGVkX2NyYywgJmNyYywgd2FudGVkX2ZiKTsK IH0KIAogc3RhdGljIHZvaWQgZG9fc3RhdHVzX2Fzc2VydGlvbnMoaW50IGZsYWdzKQpAQCAtMTY2 OCwxMCArMTgyNiwyMCBAQCBzdGF0aWMgdm9pZCBfX2RvX2Fzc2VydGlvbnMoY29uc3Qgc3RydWN0 IHRlc3RfbW9kZSAqdCwgaW50IGZsYWdzLAogCiBzdGF0aWMgdm9pZCBlbmFibGVfcHJpbV9zY3Jl ZW5fYW5kX3dhaXQoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKIHsKKwlpZiAoZHJtLmNoYW1f cG9ydCkKKwkJY2hhbWVsaXVtX3N0YXJ0X2NhcHR1cmUoZHJtLmNoYW1lbGl1bSwgZHJtLmNoYW1f cG9ydCwgMCwgMCwgMCwgMCk7CisKIAlmaWxsX2ZiX3JlZ2lvbigmcHJpbV9tb2RlX3BhcmFtcy5w cmltYXJ5LCBDT0xPUl9QUklNX0JHKTsKIAlzZXRfbW9kZV9mb3JfcGFyYW1zKCZwcmltX21vZGVf cGFyYW1zKTsKIAorCWlmICghcGlwZV9jcmMpIHsKKwkJcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNf bmV3KGRybS5mZCwgcHJpbV9tb2RlX3BhcmFtcy5waXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0Vf QVVUTyk7CisJCWlndF9hc3NlcnQocGlwZV9jcmMpOworCQlpZ3RfcGlwZV9jcmNfc3RhcnQocGlw ZV9jcmMpOworCX0KKwogCXdhbnRlZF9jcmMgPSAmYmx1ZV9jcmNzW3QtPmZvcm1hdF0uY3JjOwor CXdhbnRlZF9mYiA9ICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5mcmFtZTsKIAlmYmNfdXBkYXRlX2xh c3RfYWN0aW9uKCk7CiAKIAlkb19hc3NlcnRpb25zKEFTU0VSVF9OT19BQ1RJT05fQ0hBTkdFKTsK QEAgLTE2NzksNiArMTg0Nyw5IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9wcmltX3NjcmVlbl9hbmRf d2FpdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCiBzdGF0aWMgdm9pZCBlbmFibGVfYm90 aF9zY3JlZW5zX2FuZF93YWl0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCiB7CisJaWYgKGRy bS5jaGFtX3BvcnQpCisJCWNoYW1lbGl1bV9zdGFydF9jYXB0dXJlKGRybS5jaGFtZWxpdW0sIGRy bS5jaGFtX3BvcnQsIDAsIDAsIDAsIDApOworCiAJZmlsbF9mYl9yZWdpb24oJnByaW1fbW9kZV9w YXJhbXMucHJpbWFyeSwgQ09MT1JfUFJJTV9CRyk7CiAJZmlsbF9mYl9yZWdpb24oJnNjbmRfbW9k ZV9wYXJhbXMucHJpbWFyeSwgQ09MT1JfU0NORF9CRyk7CiAKQEAgLTE2ODcsMTMgKzE4NTgsOCBA QCBzdGF0aWMgdm9pZCBlbmFibGVfYm90aF9zY3JlZW5zX2FuZF93YWl0KGNvbnN0IHN0cnVjdCB0 ZXN0X21vZGUgKnQpCiAKIAlpZ3RfZGlzcGxheV9jb21taXQyKCZkcm0uZGlzcGxheSwgZHJtLmRp c3BsYXkuaXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwogCi0JaWYg KCFwaXBlX2NyYykgewotCQlwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZHJtLmZkLCBwcmlt X21vZGVfcGFyYW1zLnBpcGUsIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKLQkJaWd0X2Fz c2VydChwaXBlX2NyYyk7Ci0JCWlndF9waXBlX2NyY19zdGFydChwaXBlX2NyYyk7Ci0JfQotCiAJ d2FudGVkX2NyYyA9ICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5jcmM7CisJd2FudGVkX2ZiID0gJmJs dWVfY3Jjc1t0LT5mb3JtYXRdLmZyYW1lOwogCWZiY191cGRhdGVfbGFzdF9hY3Rpb24oKTsKIAog CWRvX2Fzc2VydGlvbnMoQVNTRVJUX05PX0FDVElPTl9DSEFOR0UpOwpAQCAtMTkwNiwxMCArMjA3 MiwxMiBAQCBzdGF0aWMgdm9pZCBydGVfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0 KQogCX0KIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlX3dhbnRlZF9jcmMoY29uc3Qgc3RydWN0IHRl c3RfbW9kZSAqdCwgaWd0X2NyY190ICpjcmMpCitzdGF0aWMgdm9pZCB1cGRhdGVfd2FudGVkX2Ny Yyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBpZ3RfY3JjX3QgKmNyYywgc3RydWN0IGlndF9m YiAqZmIpCiB7Ci0JaWYgKHQtPnNjcmVlbiA9PSBTQ1JFRU5fUFJJTSkKKwlpZiAodC0+c2NyZWVu ID09IFNDUkVFTl9QUklNKSB7CiAJCXdhbnRlZF9jcmMgPSBjcmM7CisJCXdhbnRlZF9mYiA9IGZi OworCX0KIH0KIAogc3RhdGljIGJvb2wgb3BfZGlzYWJsZXNfcHNyKGNvbnN0IHN0cnVjdCB0ZXN0 X21vZGUgKnQsCkBAIC0xOTk3LDcgKzIxNjUsOCBAQCBzdGF0aWMgdm9pZCBkcmF3X3N1YnRlc3Qo Y29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKIAlmb3IgKHIgPSAwOyByIDwgcGF0dGVybi0+bl9y ZWN0czsgcisrKSB7CiAJCWlndF9pbmZvKCJEcmF3aW5nIHJlY3QgJWRcbiIsIHIpOwogCQlkcmF3 X3JlY3QocGF0dGVybiwgdGFyZ2V0LCB0LT5tZXRob2QsIHIpOwotCQl1cGRhdGVfd2FudGVkX2Ny Yyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdKTsKKwkJdXBkYXRlX3dhbnRlZF9jcmMo dCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVtyXSwKKwkJCQkmcGF0dGVybi0+ZnJhbWVzW3Qt PmZvcm1hdF1bcl0pOwogCQlkb19hc3NlcnRpb25zKGFzc2VydGlvbnMpOwogCX0KIH0KQEAgLTIw NjUsNyArMjIzNCw4IEBAIHN0YXRpYyB2b2lkIG11bHRpZHJhd19zdWJ0ZXN0KGNvbnN0IHN0cnVj dCB0ZXN0X21vZGUgKnQpCiAJCQkJCXdjX3VzZWQgPSB0cnVlOwogCiAJCQkJdXBkYXRlX3dhbnRl ZF9jcmModCwKLQkJCQkJCSAgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVtyXSk7CisJCQkJCQkg ICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0sCisJCQkJCQkgICZwYXR0ZXJuLT5mcmFtZXNb dC0+Zm9ybWF0XVtyXSk7CiAKIAkJCQlhc3NlcnRpb25zID0gdXNlZF9tZXRob2QgIT0gSUdUX0RS QVdfTU1BUF9HVFQgPwogCQkJCQkgICAgIEFTU0VSVF9MQVNUX0FDVElPTl9DSEFOR0VEIDoKQEAg LTIwNzksNyArMjI0OSw4IEBAIHN0YXRpYyB2b2lkIG11bHRpZHJhd19zdWJ0ZXN0KGNvbnN0IHN0 cnVjdCB0ZXN0X21vZGUgKnQpCiAKIAkJCWZpbGxfZmJfcmVnaW9uKHRhcmdldCwgQ09MT1JfUFJJ TV9CRyk7CiAKLQkJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5j cmMpOworCQkJdXBkYXRlX3dhbnRlZF9jcmModCwgJmJsdWVfY3Jjc1t0LT5mb3JtYXRdLmNyYywK KwkJCQkJICAmYmx1ZV9jcmNzW3QtPmZvcm1hdF0uZnJhbWUpOwogCQkJZG9fYXNzZXJ0aW9ucyhB U1NFUlRfTk9fQUNUSU9OX0NIQU5HRSk7CiAJCX0KIAl9CkBAIC0yMTM2LDYgKzIzMDcsNyBAQCBz dGF0aWMgdm9pZCBiYWRmb3JtYXRfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQog CXNldF9tb2RlX2Zvcl9wYXJhbXMoJnByaW1fbW9kZV9wYXJhbXMpOwogCiAJd2FudGVkX2NyYyA9 ICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5jcmM7CisJd2FudGVkX2ZiID0gJmJsdWVfY3Jjc1t0LT5m b3JtYXRdLmZyYW1lOwogCiAJaWYgKCFmYmNfdmFsaWQpCiAJCWFzc2VydGlvbnMgfD0gQVNTRVJU X0ZCQ19ESVNBQkxFRDsKQEAgLTIxOTgsNyArMjM3MCw4IEBAIHN0YXRpYyB2b2lkIHNsb3dfZHJh d19zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCiAJCWRyYXdfcmVjdChwYXR0ZXJu LCB0YXJnZXQsIHQtPm1ldGhvZCwgcik7CiAJCXNsZWVwKDIpOwogCi0JCXVwZGF0ZV93YW50ZWRf Y3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0pOworCQl1cGRhdGVfd2FudGVkX2Ny Yyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdLAorCQkJCSAgJnBhdHRlcm4tPmZyYW1l c1t0LT5mb3JtYXRdW3JdKTsKIAogCQlpZiAodC0+ZmVhdHVyZSAmIEZFQVRVUkVfRFJSUykKIAkJ CWRvX2Fzc2VydGlvbnMoQVNTRVJUX0RSUlNfTE9XKTsKQEAgLTIzMjIsNyArMjQ5NSw4IEBAIHN0 YXRpYyB2b2lkIGZsaXBfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCQlpZiAo ciAhPSAwKQogCQkJZHJhd19yZWN0KHBhdHRlcm4sICZwYXJhbXMtPnByaW1hcnksIHQtPm1ldGhv ZCwgciAtIDEpOwogCQlkcmF3X3JlY3QocGF0dGVybiwgJnBhcmFtcy0+cHJpbWFyeSwgdC0+bWV0 aG9kLCByKTsKLQkJdXBkYXRlX3dhbnRlZF9jcmModCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0 XVtyXSk7CisJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1b cl0sCisJCQkJICAmcGF0dGVybi0+ZnJhbWVzW3QtPmZvcm1hdF1bcl0pOwogCiAJCXBhZ2VfZmxp cF9mb3JfcGFyYW1zKHBhcmFtcywgdC0+ZmxpcCk7CiAKQEAgLTIzNzIsNyArMjU0Niw4IEBAIHN0 YXRpYyB2b2lkIGZsaXB0cmFja19zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQsIGVu dW0gZmxpcF90eXBlIHR5cGUpCiAJCWRvX2Fzc2VydGlvbnMoMCk7CiAKIAkJZHJhd19yZWN0KHBh dHRlcm4sICZwYXJhbXMtPnByaW1hcnksIHQtPm1ldGhvZCwgcik7Ci0JCXVwZGF0ZV93YW50ZWRf Y3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0pOworCQl1cGRhdGVfd2FudGVkX2Ny Yyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdLAorCQkJCSAgJnBhdHRlcm4tPmZyYW1l c1t0LT5mb3JtYXRdW3JdKTsKIAogCQlkb19hc3NlcnRpb25zKEFTU0VSVF9QU1JfRElTQUJMRUQp OwogCX0KQEAgLTI0MDcsNyArMjU4Miw4IEBAIHN0YXRpYyB2b2lkIG1vdmVfc3VidGVzdChjb25z dCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCiAJLyogSnVzdCBwYWludCB0aGUgcmlnaHQgY29sb3Ig c2luY2Ugd2Ugc3RhcnQgYXQgMHgwLiAqLwogCWRyYXdfcmVjdChwYXR0ZXJuLCByZWcsIHQtPm1l dGhvZCwgMCk7Ci0JdXBkYXRlX3dhbnRlZF9jcmModCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0 XVswXSk7CisJdXBkYXRlX3dhbnRlZF9jcmModCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVsw XSwKKwkJCSAgJnBhdHRlcm4tPmZyYW1lc1t0LT5mb3JtYXRdWzBdKTsKIAogCWRvX2Fzc2VydGlv bnMoYXNzZXJ0aW9ucyk7CiAKQEAgLTI0MjAsNyArMjU5Niw4IEBAIHN0YXRpYyB2b2lkIG1vdmVf c3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCQlpZ3RfZmJfc2V0X3NpemUocmVn LT5mYiwgcmVnLT5wbGFuZSwgcmVjdC53LCByZWN0LmgpOwogCQlpZ3RfZGlzcGxheV9jb21taXQy KCZkcm0uZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CiAKLQkJdXBkYXRlX3dhbnRlZF9jcmMo dCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVtyXSk7CisJCXVwZGF0ZV93YW50ZWRfY3JjKHQs ICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0sCisJCQkJICAmcGF0dGVybi0+ZnJhbWVzW3Qt PmZvcm1hdF1bcl0pOwogCiAJCWRvX2Fzc2VydGlvbnMoYXNzZXJ0aW9ucyk7CiAKQEAgLTI0NTgs NyArMjYzNSw4IEBAIHN0YXRpYyB2b2lkIG9ub2ZmX3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3Rf bW9kZSAqdCkKIAogCS8qIEp1c3QgcGFpbnQgdGhlIHJpZ2h0IGNvbG9yIHNpbmNlIHdlIHN0YXJ0 IGF0IDB4MC4gKi8KIAlkcmF3X3JlY3QocGF0dGVybiwgcGlja190YXJnZXQodCwgcGFyYW1zKSwg dC0+bWV0aG9kLCAwKTsKLQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5m b3JtYXRdWzBdKTsKKwl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3Jt YXRdWzBdLAorCQkJICAmcGF0dGVybi0+ZnJhbWVzW3QtPmZvcm1hdF1bMF0pOwogCWRvX2Fzc2Vy dGlvbnMoYXNzZXJ0aW9ucyk7CiAKIAlmb3IgKHIgPSAwOyByIDwgNDsgcisrKSB7CkBAIC0yNDY4 LDcgKzI2NDYsOCBAQCBzdGF0aWMgdm9pZCBvbm9mZl9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0 X21vZGUgKnQpCiAJCQlpZ3RfcGxhbmVfc2V0X2ZiKHJlZy0+cGxhbmUsIE5VTEwpOwogCQkJaWd0 X2Rpc3BsYXlfY29tbWl0KCZkcm0uZGlzcGxheSk7CiAKLQkJCXVwZGF0ZV93YW50ZWRfY3JjKHQs ICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5jcmMpOworCQkJdXBkYXRlX3dhbnRlZF9jcmModCwgJmJs dWVfY3Jjc1t0LT5mb3JtYXRdLmNyYywKKwkJCQkJICAmYmx1ZV9jcmNzW3QtPmZvcm1hdF0uZnJh bWUpOwogCiAJCX0gZWxzZSB7CiAJCQlpZ3RfcGxhbmVfc2V0X2ZiKHJlZy0+cGxhbmUsIHJlZy0+ ZmIpOwpAQCAtMjQ3Niw3ICsyNjU1LDggQEAgc3RhdGljIHZvaWQgb25vZmZfc3VidGVzdChjb25z dCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCQkJaWd0X2ZiX3NldF9zaXplKHJlZy0+ZmIsIHJlZy0+ cGxhbmUsIHJlZy0+dywgcmVnLT5oKTsKIAkJCWlndF9kaXNwbGF5X2NvbW1pdCgmZHJtLmRpc3Bs YXkpOwogCi0JCQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRd WzBdKTsKKwkJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1b MF0sCisJCQkJCSAgJnBhdHRlcm4tPmZyYW1lc1t0LT5mb3JtYXRdWzBdKTsKIAkJfQogCiAJCWRv X2Fzc2VydGlvbnMoYXNzZXJ0aW9ucyk7CkBAIC0yNTI1LDcgKzI3MDUsOCBAQCBzdGF0aWMgdm9p ZCBmdWxsc2NyZWVuX3BsYW5lX3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKIAog CWlndF9wbGFuZV9zZXRfZmIocGFyYW1zLT5zcHJpdGUucGxhbmUsICZmdWxsc2NyZWVuX2ZiKTsK IAlpZ3RfZGlzcGxheV9jb21taXQoJmRybS5kaXNwbGF5KTsKLQl1cGRhdGVfd2FudGVkX2NyYyh0 LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdWzBdKTsKKwl1cGRhdGVfd2FudGVkX2NyYyh0LCAm cGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdWzBdLAorCQkJICAmcGF0dGVybi0+ZnJhbWVzW3QtPmZv cm1hdF1bMF0pOwogCiAJc3dpdGNoICh0LT5zY3JlZW4pIHsKIAljYXNlIFNDUkVFTl9QUklNOgpA QCAtMjU0Nyw3ICsyNzI4LDggQEAgc3RhdGljIHZvaWQgZnVsbHNjcmVlbl9wbGFuZV9zdWJ0ZXN0 KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCiAKIAlpZiAodC0+c2NyZWVuID09IFNDUkVFTl9Q UklNKQogCQlhc3NlcnRpb25zID0gQVNTRVJUX0xBU1RfQUNUSU9OX0NIQU5HRUQ7Ci0JdXBkYXRl X3dhbnRlZF9jcmModCwgJmJsdWVfY3Jjc1t0LT5mb3JtYXRdLmNyYyk7CisJdXBkYXRlX3dhbnRl ZF9jcmModCwgJmJsdWVfY3Jjc1t0LT5mb3JtYXRdLmNyYywKKwkJCSAgJmJsdWVfY3Jjc1t0LT5m b3JtYXRdLmZyYW1lKTsKIAlkb19hc3NlcnRpb25zKGFzc2VydGlvbnMpOwogCiAJaWd0X3JlbW92 ZV9mYihkcm0uZmQsICZmdWxsc2NyZWVuX2ZiKTsKQEAgLTI3OTcsNyArMjk3OSw4IEBAIHN0YXRp YyB2b2lkIGZhcmZyb21mZW5jZV9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCiAK IAlmb3IgKHIgPSAwOyByIDwgcGF0dGVybi0+bl9yZWN0czsgcisrKSB7CiAJCWRyYXdfcmVjdChw YXR0ZXJuLCB0YXJnZXQsIHQtPm1ldGhvZCwgcik7Ci0JCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZw YXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0pOworCQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0 dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdLAorCQkJCSAgJnBhdHRlcm4tPmZyYW1lc1t0LT5mb3Jt YXRdW3JdKTsKIAogCQkvKiBHVFQgZHJhd3MgZGlzYWJsZSBQU1IuICovCiAJCWRvX2Fzc2VydGlv bnMoYXNzZXJ0aW9ucyB8IEFTU0VSVF9QU1JfRElTQUJMRUQpOwpAQCAtMzA0OCw3ICszMjMxLDgg QEAgc3RhdGljIHZvaWQgYmFzaWNfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQog CQkJcGFyYW1zLT5wcmltYXJ5LmZiID0gKHBhcmFtcy0+cHJpbWFyeS5mYiA9PSBmYjEpID8gJmZi MiA6IGZiMTsKIAogCQkJZmlsbF9mYl9yZWdpb24oJnBhcmFtcy0+cHJpbWFyeSwgQ09MT1JfUFJJ TV9CRyk7Ci0JCQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmYmx1ZV9jcmNzW3QtPmZvcm1hdF0uY3Jj KTsKKwkJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZibHVlX2NyY3NbdC0+Zm9ybWF0XS5jcmMsCisJ CQkJCSAgJmJsdWVfY3Jjc1t0LT5mb3JtYXRdLmZyYW1lKTsKIAogCQkJcGFnZV9mbGlwX2Zvcl9w YXJhbXMocGFyYW1zLCB0LT5mbGlwKTsKIAkJCWRvX2Fzc2VydGlvbnMoYXNzZXJ0aW9ucyk7CkBA IC0zMDU3LDcgKzMyNDEsOCBAQCBzdGF0aWMgdm9pZCBiYXNpY19zdWJ0ZXN0KGNvbnN0IHN0cnVj dCB0ZXN0X21vZGUgKnQpCiAJCX0KIAogCQlkcmF3X3JlY3QocGF0dGVybiwgJnBhcmFtcy0+cHJp bWFyeSwgbWV0aG9kLCByKTsKLQkJdXBkYXRlX3dhbnRlZF9jcmModCwgJnBhdHRlcm4tPmNyY3Nb dC0+Zm9ybWF0XVtyXSk7CisJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5jcmNzW3Qt PmZvcm1hdF1bcl0sCisJCQkJICAmcGF0dGVybi0+ZnJhbWVzW3QtPmZvcm1hdF1bcl0pOwogCQlk b19hc3NlcnRpb25zKGFzc2VydGlvbnMpOwogCX0KIApAQCAtMzI2MCw4ICszNDQ1LDYgQEAgc3Rh dGljIGNvbnN0IGNoYXIgKmZsaXBfc3RyKGVudW0gZmxpcF90eXBlIGZsaXApCiAJCWlmICghb3B0 LnNob3dfaGlkZGVuICYmIHQucGlwZXMgPT0gUElQRV9EVUFMICYmCQkgICBcCiAJCSAgICB0LnNj cmVlbiA9PSBTQ1JFRU5fT0ZGU0NSRUVOKQkJCSAgIFwKIAkJCWNvbnRpbnVlOwkJCQkJICAgXAot CQlpZiAoIW9wdC5zaG93X2hpZGRlbiAmJiB0LmZlYXR1cmUgPT0gRkVBVFVSRV9OT05FKQkgICBc Ci0JCQljb250aW51ZTsJCQkJCSAgIFwKIAkJaWYgKCFvcHQuc2hvd19oaWRkZW4gJiYgdC5mYnMg PT0gRkJTX1NIQVJFRCAmJgkJICAgXAogCQkgICAgKHQucGxhbmUgPT0gUExBTkVfQ1VSIHx8IHQu cGxhbmUgPT0gUExBTkVfU1BSKSkJICAgXAogCQkJY29udGludWU7Ci0tIAoyLjIwLjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGlu ZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==