From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C9726E96A for ; Tue, 8 Dec 2020 17:19:50 +0000 (UTC) From: Pankaj Bharadiya Date: Tue, 8 Dec 2020 22:31:09 +0530 Message-Id: <20201208170109.23073-4-pankaj.laxminarayan.bharadiya@intel.com> In-Reply-To: <20201208170109.23073-1-pankaj.laxminarayan.bharadiya@intel.com> References: <20201208170109.23073-1-pankaj.laxminarayan.bharadiya@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 3/3] tests: Add new PSR2 selective fetch test 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: gwan-gyeong.mun@intel.com, igt-dev@lists.freedesktop.org, jose.souza@intel.com List-ID: U2VsZWN0aXZlIGZldGNoIHJlZHVjZXMgZGlzcGxheSBlbmdpbmUgdXNlIG9mIG1lbW9yeSBiYW5k d2lkdGgKYnkgb25seSBmZXRjaGluZyAocmVhZGluZyBmcm9tIG1lbW9yeSkgdGhlIHVwZGF0ZWQg cmVnaW9ucyBvZiB0aGUgZnJhbWUKYnVmZmVyIGFuZCBzZW5kaW5nIHRob3NlIHVwZGF0ZWQgcmVn aW9ucyB0byBhIHBhbmVsIHdpdGggYSBQU1IyIGNhcGFiaWxpdHkuCgpUaGUgRkJfREFNQUdFX0NM SVBTIHBsYW5lIHByb3BlcnR5IHByb3ZpZGVzIHVzZXItc3BhY2UgYSB3YXkgaW5mb3JtCmtlcm5l bCBhYm91dCB0aGUgdXBkYXRlZCByZWdpb25zLgoKQWRkIG5ldyB0ZXN0IHRvIHZlcmlmeSBzZWxl Y3RpdmUgZmV0Y2ggYnkgdXNpbmcgRkJfREFNQUdFX0NMSVBTIHByb3BlcnR5CnRvIHNlbmQgIHVw ZGF0ZWQgcmVnaW9ucy4KCmNoYW5nZXMgc2luY2UgdjE6CiogYWxsb2MgZW5vdWdoIGNsaXBzIGZv ciBhbGwgdGVzdHMgaW4gc3RhY2sgYW5kIHJldXNlIChKb3NlKQoqIHNldCBkYW1hZ2UgY2xpcCBh bG9uZyB3aXRoIGRyYXcsIHJlZmFjdG9yIGNvZGUsIHJlbmFtZQogIHZhcmlhYmxlcywgZXRjIChK b3NlKQoKU2lnbmVkLW9mZi1ieTogUGFua2FqIEJoYXJhZGl5YSA8cGFua2FqLmxheG1pbmFyYXlh bi5iaGFyYWRpeWFAaW50ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEg KwogdGVzdHMva21zX3BzcjJfc2YuYyAgICB8IDY0OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiAzIGZpbGVz IGNoYW5nZWQsIDY1MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21z X3BzcjJfc2YuYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCmluZGV4IDE1ZmI1NjA0OC4uZTdlMzk5MTY1IDEwMDY0NAotLS0gYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTgw LDYgKzgwLDcgQEAgVEVTVFNfcHJvZ3MgPSBcCiAJa21zX3Byb3BlcnRpZXMgXAogCWttc19wc3Ig XAogCWttc19wc3IyX3N1IFwKKwlrbXNfcHNyMl9zZiBcCiAJa21zX3B3cml0ZV9jcmMgXAogCWtt c19ybWZiIFwKIAlrbXNfcm90YXRpb25fY3JjIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wc3Iy X3NmLmMgYi90ZXN0cy9rbXNfcHNyMl9zZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uMjk2ZWQ4NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMva21zX3BzcjJfc2Yu YwpAQCAtMCwwICsxLDY0OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCisjaW5jbHVk ZSAiaWd0X3Bzci5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgor I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiaW50ZWxf YnVmbWdyLmgiCisKK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0cyB0byB2YXJpZnkgUFNSMiBz ZWxlY3RpdmUgZmV0Y2ggYnkgc2VuZGluZyBtdWx0aXBsZSIKKwkJICAgICAiIGRhbWFnZWQgYXJl YXMiKTsKKworI2RlZmluZSBTUVVBUkVfU0laRSAxMDAKKworI2RlZmluZSBDVVJfU0laRSA2NAor I2RlZmluZSBNQVhfREFNQUdFX0FSRUFTIDUKKworZW51bSBvcGVyYXRpb25zIHsKKwlQTEFORV9V UERBVEUsCisJUExBTkVfTU9WRSwKKwlPVkVSTEFZX1BSSU1fVVBEQVRFCit9OworCitlbnVtIHBs YW5lX21vdmVfcG9zdGlvbiB7CisJUE9TX1RPUF9MRUZULAorCVBPU19UT1BfUklHSFQsCisJUE9T X0JPVFRPTV9MRUZULAorCVBPU19CT1RUT01fUklHSFQKK307CisKK3R5cGVkZWYgc3RydWN0IHsK KwlpbnQgZHJtX2ZkOworCWludCBkZWJ1Z2ZzX2ZkOworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsK Kwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOworCWln dF9vdXRwdXRfdCAqb3V0cHV0OworCXN0cnVjdCBpZ3RfZmIgZmJfcHJpbWFyeSwgZmJfb3Zlcmxh eSwgZmJfY3Vyc29yOworCXN0cnVjdCBpZ3RfZmIgZmJfdGVzdDsKKwlpbnQgZGFtYWdlX2FyZWFf Y291bnQ7CisJc3RydWN0IGRybV9tb2RlX3JlY3QgcGxhbmVfdXBkYXRlX2NsaXBbTUFYX0RBTUFH RV9BUkVBU107CisJc3RydWN0IGRybV9tb2RlX3JlY3QgcGxhbmVfbW92ZV9jbGlwOworCXN0cnVj dCBkcm1fbW9kZV9yZWN0IGN1cnNvcl9jbGlwOworCWVudW0gb3BlcmF0aW9ucyBvcDsKKwllbnVt IHBsYW5lX21vdmVfcG9zdGlvbiBwb3M7CisJaW50IHRlc3RfcGxhbmVfaWQ7CisJaWd0X3BsYW5l X3QgKnRlc3RfcGxhbmU7CisJY2Fpcm9fdCAqY3I7Cit9IGRhdGFfdDsKKworc3RhdGljIGNvbnN0 IGNoYXIgKm9wX3N0cihlbnVtIG9wZXJhdGlvbnMgb3ApCit7CisJc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCBuYW1lW10gPSB7CisJCVtQTEFORV9VUERBVEVdID0gInBsYW5lLXVwZGF0ZSIsCisJ CVtQTEFORV9NT1ZFXSA9ICJwbGFuZS1tb3ZlIiwKKwkJW09WRVJMQVlfUFJJTV9VUERBVEVdID0g Im92ZXJsYXktcHJpbWFyeS11cGRhdGUiLAorCX07CisKKwlyZXR1cm4gbmFtZVtvcF07Cit9CisK K3N0YXRpYyB2b2lkIHNldHVwX291dHB1dChkYXRhX3QgKmRhdGEpCit7CisJaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWVu dW0gcGlwZSBwaXBlOworCisJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5 LCBwaXBlLCBvdXRwdXQpIHsKKwkJZHJtTW9kZUNvbm5lY3RvclB0ciBjID0gb3V0cHV0LT5jb25m aWcuY29ubmVjdG9yOworCisJCWlmIChjLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05O RUNUT1JfZURQKQorCQkJY29udGludWU7CisKKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IHBpcGUpOworCQlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7CisJCWRhdGEtPm1vZGUgPSBpZ3Rfb3V0 cHV0X2dldF9tb2RlKG91dHB1dCk7CisKKwkJcmV0dXJuOworCX0KK30KKworc3RhdGljIHZvaWQg ZGlzcGxheV9pbml0KGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRh LT5kaXNwbGF5LCBkYXRhLT5kcm1fZmQpOworCXNldHVwX291dHB1dChkYXRhKTsKK30KKworc3Rh dGljIHZvaWQgZGlzcGxheV9maW5pKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxheV9maW5p KCZkYXRhLT5kaXNwbGF5KTsKK30KKworc3RhdGljIHZvaWQgZHJhd19yZWN0KGRhdGFfdCAqZGF0 YSwgaWd0X2ZiX3QgKmZiLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKKwkJCWRvdWJsZSBy LCBkb3VibGUgZywgZG91YmxlIGIsIGRvdWJsZSBhKQoreworCWNhaXJvX3QgKmNyOworCisJY3Ig PSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIGZiKTsKKwlpZ3RfcGFpbnRfY29sb3Jf YWxwaGEoY3IsIHgsIHksIHcsIGgsIHIsIGcsIGIsIGEpOworCWlndF9wdXRfY2Fpcm9fY3R4KGNy KTsKK30KKworc3RhdGljIHZvaWQgc2V0X2NsaXAoc3RydWN0IGRybV9tb2RlX3JlY3QgKmNsaXAs IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLAorCQkgICAgIGludCBoZWlnaHQpCit7CisJY2xpcC0+ eDEgPSB4OworCWNsaXAtPnkxID0geTsKKwljbGlwLT54MiA9IHggKyB3aWR0aDsKKwljbGlwLT55 MiA9IHkgKyBoZWlnaHQ7Cit9CisKK3N0YXRpYyB2b2lkIHBsYW5lX3VwZGF0ZV9zZXR1cF9zcXVh cmVzKGRhdGFfdCAqZGF0YSwgaWd0X2ZiX3QgKmZiLCB1aW50MzJfdCBoLAorCQkJCSAgICAgICB1 aW50MzJfdCB2KQoreworCWludCB4LCB5OworCWludCB3aWR0aCA9IFNRVUFSRV9TSVpFOworCWlu dCBoZWlnaHQgPSBTUVVBUkVfU0laRTsKKworCXN3aXRjaCAoZGF0YS0+ZGFtYWdlX2FyZWFfY291 bnQpIHsKKwljYXNlIDU6CisJCS8qQm90dG9tIHJpZ2h0IGNvcm5lciovCisJCXggPSBoIC0gU1FV QVJFX1NJWkU7CisJCXkgPSB2IC0gU1FVQVJFX1NJWkU7CisKKwkJZHJhd19yZWN0KGRhdGEsIGZi LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAxLjAsIDEuMCwgMS4wLCAxLjApOworCQlzZXRfY2xpcCgm ZGF0YS0+cGxhbmVfdXBkYXRlX2NsaXBbNF0sIHgsIHksIHdpZHRoLCBoZWlnaHQpOworCWNhc2Ug NDoKKwkJLypCb3R0b20gbGVmdCBjb3JuZXIqLworCQl4ID0gMDsKKwkJeSA9IHYgLSBTUVVBUkVf U0laRTsKKworCQlkcmF3X3JlY3QoZGF0YSwgZmIsIHgsIHksIHdpZHRoLCBoZWlnaHQsIDEuMCwg MS4wLCAxLjAsIDEuMCk7CisJCXNldF9jbGlwKCZkYXRhLT5wbGFuZV91cGRhdGVfY2xpcFszXSwg eCwgeSwgd2lkdGgsIGhlaWdodCk7CisJY2FzZSAzOgorCQkvKlRvcCByaWdodCBjb3JuZXIqLwor CQl4ID0gaCAtIFNRVUFSRV9TSVpFOworCQl5ID0gMDsKKworCQlkcmF3X3JlY3QoZGF0YSwgZmIs IHgsIHksIHdpZHRoLCBoZWlnaHQsIDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJCXNldF9jbGlwKCZk YXRhLT5wbGFuZV91cGRhdGVfY2xpcFsyXSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJY2FzZSAy OgorCQkvKlRvcCBsZWZ0IGNvcm5lciovCisJCXggPSAwOworCQl5ID0gMDsKKworCQlkcmF3X3Jl Y3QoZGF0YSwgZmIsIHgsIHksIHdpZHRoLCBoZWlnaHQsIDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJ CXNldF9jbGlwKCZkYXRhLT5wbGFuZV91cGRhdGVfY2xpcFsxXSwgeCwgeSwgd2lkdGgsIGhlaWdo dCk7CisJY2FzZSAxOgorCQkvKkNlbnRlciovCisJCXggPSBoLzIgLSBTUVVBUkVfU0laRS8yOwor CQl5ID0gdi8yIC0gU1FVQVJFX1NJWkUvMjsKKworCQlkcmF3X3JlY3QoZGF0YSwgZmIsIHgsIHks IHdpZHRoLCBoZWlnaHQsIDEuMCwgMS4wLCAxLjAsIDEuMCk7CisJCXNldF9jbGlwKCZkYXRhLT5w bGFuZV91cGRhdGVfY2xpcFswXSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKworc3RhdGljIHZvaWQgcGxhbmVf bW92ZV9zZXR1cF9zcXVhcmUoZGF0YV90ICpkYXRhLCBpZ3RfZmJfdCAqZmIsIHVpbnQzMl90IGgs CisJCQkJICAgICAgIHVpbnQzMl90IHYpCit7CisJaW50IHggPSAwLCB5ID0gMDsKKworCXN3aXRj aCAoZGF0YS0+cG9zKSB7CisJY2FzZSBQT1NfVE9QX0xFRlQ6CisJCS8qQm90dG9tIHJpZ2h0IGNv cm5lciovCisJCXggPSBoIC0gU1FVQVJFX1NJWkU7CisJCXkgPSB2IC0gU1FVQVJFX1NJWkU7CisJ CWJyZWFrOworCWNhc2UgUE9TX1RPUF9SSUdIVDoKKwkJLypCb3R0b20gbGVmdCBjb3JuZXIqLwor CQl4ID0gMDsKKwkJeSA9IHYgLSBTUVVBUkVfU0laRTsKKwkJYnJlYWs7CisJY2FzZSBQT1NfQk9U VE9NX0xFRlQ6CisJCS8qVG9wIHJpZ2h0IGNvcm5lciovCisJCXggPSBoIC0gU1FVQVJFX1NJWkU7 CisJCXkgPSAwOworCQlicmVhazsKKwljYXNlIFBPU19CT1RUT01fUklHSFQ6CisJCS8qVG9wIGxl ZnQgY29ybmVyKi8KKwkJeCA9IDA7CisJCXkgPSAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlp Z3RfYXNzZXJ0KGZhbHNlKTsKKwl9CisKKwlkcmF3X3JlY3QoZGF0YSwgZmIsIHgsIHksCisJCSAg U1FVQVJFX1NJWkUsIFNRVUFSRV9TSVpFLCAxLjAsIDEuMCwgMS4wLCAxLjApOworCXNldF9jbGlw KCZkYXRhLT5wbGFuZV9tb3ZlX2NsaXAsIHgsIHksIFNRVUFSRV9TSVpFLCBTUVVBUkVfU0laRSk7 Cit9CisKK3N0YXRpYyB2b2lkIHByZXBhcmUoZGF0YV90ICpkYXRhKQoreworCWlndF9wbGFuZV90 ICpwcmltYXJ5LCAqc3ByaXRlID0gTlVMTCwgKmN1cnNvciA9IE5VTEw7CisKKwkvKiBhbGwgZ3Jl ZW4gZnJhbWUgKi8KKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwKKwkJCSAgICBk YXRhLT5tb2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRpc3BsYXksCisJCQkgICAgRFJNX0ZP Uk1BVF9YUkdCODg4OCwKKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAg IDAuMCwgMS4wLCAwLjAsCisJCQkgICAgJmRhdGEtPmZiX3ByaW1hcnkpOworCisJcHJpbWFyeSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LAorCQkJRFJNX1BMQU5FX1RZ UEVfUFJJTUFSWSk7CisKKwlzd2l0Y2ggKGRhdGEtPnRlc3RfcGxhbmVfaWQpIHsKKwljYXNlIERS TV9QTEFORV9UWVBFX09WRVJMQVk6CisJCXNwcml0ZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5 cGUoZGF0YS0+b3V0cHV0LAorCQkJCQkJICAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSk7CisJCS8q QWxsIGJsdWUgcGxhbmUqLworCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwKKwkJ CQkgICAgZGF0YS0+bW9kZS0+aGRpc3BsYXkvMiwKKwkJCQkgICAgZGF0YS0+bW9kZS0+dmRpc3Bs YXkvMiwKKwkJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkgICAgTE9DQUxfRFJNX0ZP Uk1BVF9NT0RfTk9ORSwKKwkJCQkgICAgMC4wLCAwLjAsIDEuMCwKKwkJCQkgICAgJmRhdGEtPmZi X292ZXJsYXkpOworCisJCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLAorCQkJCSAg ICBkYXRhLT5tb2RlLT5oZGlzcGxheS8yLAorCQkJCSAgICBkYXRhLT5tb2RlLT52ZGlzcGxheS8y LAorCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCSAgICBMT0NBTF9EUk1fRk9STUFU X01PRF9OT05FLAorCQkJCSAgICAwLjAsIDAuMCwgMS4wLAorCQkJCSAgICAmZGF0YS0+ZmJfdGVz dCk7CisKKwkJaWYgKGRhdGEtPm9wID09IFBMQU5FX01PVkUpIHsKKwkJCXBsYW5lX21vdmVfc2V0 dXBfc3F1YXJlKGRhdGEsICZkYXRhLT5mYl90ZXN0LAorCQkJCQkgICBkYXRhLT5tb2RlLT5oZGlz cGxheS8yLAorCQkJCQkgICBkYXRhLT5tb2RlLT52ZGlzcGxheS8yKTsKKworCQl9IGVsc2Ugewor CQkJcGxhbmVfdXBkYXRlX3NldHVwX3NxdWFyZXMoZGF0YSwgJmRhdGEtPmZiX3Rlc3QsCisJCQkJ CSAgIGRhdGEtPm1vZGUtPmhkaXNwbGF5LzIsCisJCQkJCSAgIGRhdGEtPm1vZGUtPnZkaXNwbGF5 LzIpOworCQl9CisKKwkJaWd0X3BsYW5lX3NldF9mYihzcHJpdGUsICZkYXRhLT5mYl9vdmVybGF5 KTsKKwkJZGF0YS0+dGVzdF9wbGFuZSA9IHNwcml0ZTsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9Q TEFORV9UWVBFX1BSSU1BUlk6CisJCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLAor CQkJICAgIGRhdGEtPm1vZGUtPmhkaXNwbGF5LCBkYXRhLT5tb2RlLT52ZGlzcGxheSwKKwkJCSAg ICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs CisJCQkgICAgMC4wLCAxLjAsIDAuMCwKKwkJCSAgICAmZGF0YS0+ZmJfdGVzdCk7CisKKwkJcGxh bmVfdXBkYXRlX3NldHVwX3NxdWFyZXMoZGF0YSwgJmRhdGEtPmZiX3Rlc3QsCisJCQkJCSAgIGRh dGEtPm1vZGUtPmhkaXNwbGF5LAorCQkJCQkgICBkYXRhLT5tb2RlLT52ZGlzcGxheSk7CisJCWRh dGEtPnRlc3RfcGxhbmUgPSBwcmltYXJ5OworCisJCWlmIChkYXRhLT5vcCA9PSBPVkVSTEFZX1BS SU1fVVBEQVRFKSB7CisJCQlzcHJpdGUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGRhdGEt Pm91dHB1dCwKKwkJCQkJCSAgIERSTV9QTEFORV9UWVBFX09WRVJMQVkpOworCisJCQlpZ3RfY3Jl YXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwKKwkJCQkJICAgIGRhdGEtPm1vZGUtPmhkaXNwbGF5 LAorCQkJCQkgICAgZGF0YS0+bW9kZS0+dmRpc3BsYXksCisJCQkJCSAgICBEUk1fRk9STUFUX1hS R0I4ODg4LAorCQkJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCQkJICAgIDAu MCwgMC4wLCAxLjAsCisJCQkJCSAgICAmZGF0YS0+ZmJfb3ZlcmxheSk7CisKKwkJCWlndF9wbGFu ZV9zZXRfZmIoc3ByaXRlLCAmZGF0YS0+ZmJfb3ZlcmxheSk7CisJCQlpZ3RfcGxhbmVfc2V0X3By b3BfdmFsdWUoc3ByaXRlLCBJR1RfUExBTkVfQUxQSEEsCisJCQkJCQkgMHg2MDYwKTsKKwkJfQor CQlicmVhazsKKworCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgorCQljdXJzb3IgPSBpZ3Rf b3V0cHV0X2dldF9wbGFuZV90eXBlKGRhdGEtPm91dHB1dCwKKwkJCQkJCSAgIERSTV9QTEFORV9U WVBFX0NVUlNPUik7CisJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oY3Vyc29yLCAwLCAwKTsKKwor CQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwgQ1VSX1NJWkUsIENVUl9TSVpFLAorCQkJICAg ICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAg ICAgICZkYXRhLT5mYl9jdXJzb3IpOworCisJCWRyYXdfcmVjdChkYXRhLCAmZGF0YS0+ZmJfY3Vy c29yLCAwLCAwLCBDVVJfU0laRSwgQ1VSX1NJWkUsCisJCQkgICAgMC4wLCAwLjAsIDEuMCwgMS4w KTsKKworCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwgQ1VSX1NJWkUsIENVUl9TSVpFLAor CQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK KwkJCSAgICAgICZkYXRhLT5mYl90ZXN0KTsKKworCQlkcmF3X3JlY3QoZGF0YSwgJmRhdGEtPmZi X3Rlc3QsIDAsIDAsIENVUl9TSVpFLCBDVVJfU0laRSwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAx LjApOworCisJCXNldF9jbGlwKCZkYXRhLT5jdXJzb3JfY2xpcCwgMCwgMCwgQ1VSX1NJWkUsIENV Ul9TSVpFKTsKKwkJaWd0X3BsYW5lX3NldF9mYihjdXJzb3IsICZkYXRhLT5mYl9jdXJzb3IpOwor CQlkYXRhLT50ZXN0X3BsYW5lID0gY3Vyc29yOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3Rf YXNzZXJ0KGZhbHNlKTsKKwl9CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5m Yl9wcmltYXJ5KTsKKworCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1J VF9BVE9NSUMpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbWFudWFsKGNvbnN0IGNoYXIgKmV4 cGVjdGVkKQoreworCWlndF9kZWJ1Z19tYW51YWxfY2hlY2soImFsbCIsIGV4cGVjdGVkKTsKK30K Kworc3RhdGljIHZvaWQgcGxhbmVfdXBkYXRlX2V4cGVjdGVkX291dHB1dChpbnQgcGxhbmVfdHlw ZSwgaW50IGJveF9jb3VudCkKK3sKKwljaGFyIGV4cGVjdGVkWzY0XSA9IHt9OworCisJc3dpdGNo IChwbGFuZV90eXBlKSB7CisJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgorCQlzcHJpbnRm KGV4cGVjdGVkLCAic2NyZWVuIEdyZWVuIHdpdGggJWQgV2hpdGUgYm94KGVzKSIsCisJCQlib3hf Y291bnQpOworCQlicmVhazsKKwljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6CisJCXNwcmlu dGYoZXhwZWN0ZWQsCisJCQkic2NyZWVuIEdyZWVuIHdpdGggQmx1ZSBib3ggYW5kICVkIFdoaXRl IGJveChlcykiLAorCQkJYm94X2NvdW50KTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fUExBTkVfVFlQ RV9DVVJTT1I6CisJCXNwcmludGYoZXhwZWN0ZWQsICJzY3JlZW4gR3JlZW4gd2l0aCAlZCBXaGl0 ZSBib3goZXMpIiwKKwkJCWJveF9jb3VudCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9h c3NlcnQoZmFsc2UpOworCX0KKworCW1hbnVhbChleHBlY3RlZCk7Cit9CisKK3N0YXRpYyB2b2lk IHBsYW5lX21vdmVfZXhwZWN0ZWRfb3V0cHV0KGVudW0gcGxhbmVfbW92ZV9wb3N0aW9uIHBvcykK K3sKKwljaGFyIGV4cGVjdGVkWzY0XSA9IHt9OworCisJc3dpdGNoIChwb3MpIHsKKwljYXNlIFBP U19UT1BfTEVGVDoKKwkJc3ByaW50ZihleHBlY3RlZCwKKwkJCSJzY3JlZW4gR3JlZW4gd2l0aCBC bHVlIGJveCBvbiB0b3AgbGVmdCBjb3JuZXIgYW5kIFdoaXRlIGJveCIpOworCQlicmVhazsKKwlj YXNlIFBPU19UT1BfUklHSFQ6CisJCXNwcmludGYoZXhwZWN0ZWQsCisJCQkic2NyZWVuIEdyZWVu IHdpdGggQmx1ZSBib3ggb24gdG9wIHJpZ2h0IGNvcm5lciBhbmQgV2hpdGUgYm94Iik7CisJCWJy ZWFrOworCWNhc2UgUE9TX0JPVFRPTV9MRUZUOgorCQlzcHJpbnRmKGV4cGVjdGVkLAorCQkJInNj cmVlbiBHcmVlbiB3aXRoIEJsdWUgYm94IG9uIGJvdHRvbSBsZWZ0IGNvcm5lciBhbmQgV2hpdGUg Ym94Iik7CisJCWJyZWFrOworCWNhc2UgUE9TX0JPVFRPTV9SSUdIVDoKKwkJc3ByaW50ZihleHBl Y3RlZCwKKwkJCSJzY3JlZW4gR3JlZW4gd2l0aCBCbHVlIGJveCBvbiBib3R0b20gcmlnaHQgY29y bmVyIGFuZCBXaGl0ZSBib3giKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2Fzc2VydChm YWxzZSk7CisJfQorCisJbWFudWFsKGV4cGVjdGVkKTsKK30KKworc3RhdGljIHZvaWQgb3Zlcmxh eV9wcmltX3VwZGF0ZV9leHBlY3RlZF9vdXRwdXQoaW50IGJveF9jb3VudCkKK3sKKwljaGFyIGV4 cGVjdGVkWzY0XSA9IHt9OworCisJc3ByaW50ZihleHBlY3RlZCwKKwkJInNjcmVlbiBHcmVlbiB3 aXRoIEJsdWUgb3ZlcmxheSwgJWQgbGlnaHQgQmx1ZSBib3goZXMpIiwKKwkJYm94X2NvdW50KTsK KworCW1hbnVhbChleHBlY3RlZCk7CisKK30KKworc3RhdGljIHZvaWQgZXhwZWN0ZWRfb3V0cHV0 KGRhdGFfdCAqZGF0YSkKK3sKKwlzd2l0Y2ggKGRhdGEtPm9wKSB7CisJY2FzZSBQTEFORV9NT1ZF OgorCQlwbGFuZV9tb3ZlX2V4cGVjdGVkX291dHB1dChkYXRhLT5wb3MpOworCQlicmVhazsKKwlj YXNlIFBMQU5FX1VQREFURToKKwkJcGxhbmVfdXBkYXRlX2V4cGVjdGVkX291dHB1dChkYXRhLT50 ZXN0X3BsYW5lX2lkLAorCQkJCQkgICAgIGRhdGEtPmRhbWFnZV9hcmVhX2NvdW50KTsKKwkJYnJl YWs7CisJY2FzZSBPVkVSTEFZX1BSSU1fVVBEQVRFOgorCQlvdmVybGF5X3ByaW1fdXBkYXRlX2V4 cGVjdGVkX291dHB1dChkYXRhLT5kYW1hZ2VfYXJlYV9jb3VudCk7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKworc3RhdGljIHZvaWQgZGFtYWdlZF9w bGFuZV9tb3ZlKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfcGxhbmVfdCAqdGVzdF9wbGFuZSA9IGRh dGEtPnRlc3RfcGxhbmU7CisJdWludDMyX3QgaCA9IGRhdGEtPm1vZGUtPmhkaXNwbGF5OworCXVp bnQzMl90IHYgPSBkYXRhLT5tb2RlLT52ZGlzcGxheTsKKworCWlndF9wbGFuZV9zZXRfZmIodGVz dF9wbGFuZSwgJmRhdGEtPmZiX3Rlc3QpOworCisJaWYgKGRhdGEtPnRlc3RfcGxhbmVfaWQgPT0g RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkgeworCQloID0gaC8yOworCQl2ID0gdi8yOworCX0KKwor CWlndF9wbGFuZV9yZXBsYWNlX3Byb3BfYmxvYih0ZXN0X3BsYW5lLCBJR1RfUExBTkVfRkJfREFN QUdFX0NMSVBTLAorCQkJCSAgICAmZGF0YS0+cGxhbmVfbW92ZV9jbGlwLAorCQkJCSAgICBzaXpl b2Yoc3RydWN0IGRybV9tb2RlX3JlY3QpKTsKKworCXN3aXRjaCAoZGF0YS0+cG9zKSB7CisJY2Fz ZSBQT1NfVE9QX0xFRlQ6CisJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZGF0YS0+dGVzdF9wbGFu ZSwgMCwgMCk7CisJCWJyZWFrOworCWNhc2UgUE9TX1RPUF9SSUdIVDoKKwkJaWd0X3BsYW5lX3Nl dF9wb3NpdGlvbihkYXRhLT50ZXN0X3BsYW5lLAorCQkJCSAgICAgICBkYXRhLT5tb2RlLT5oZGlz cGxheS8yLCAwKTsKKwkJYnJlYWs7CisJY2FzZSBQT1NfQk9UVE9NX0xFRlQ6CisJCWlndF9wbGFu ZV9zZXRfcG9zaXRpb24oZGF0YS0+dGVzdF9wbGFuZSwgMCwKKwkJCQkgICAgICAgZGF0YS0+bW9k ZS0+dmRpc3BsYXkvMik7CisJCWJyZWFrOworCWNhc2UgUE9TX0JPVFRPTV9SSUdIVDoKKwkJaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihkYXRhLT50ZXN0X3BsYW5lLAorCQkJCSAgICAgICBkYXRhLT5t b2RlLT5oZGlzcGxheS8yLAorCQkJCSAgICAgICBkYXRhLT5tb2RlLT52ZGlzcGxheS8yKTsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2Fzc2VydChmYWxzZSk7CisJfQorCisJaWd0X2Rpc3Bs YXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlpZ3RfYXNzZXJ0 KHBzcl93YWl0X2VudHJ5KGRhdGEtPmRlYnVnZnNfZmQsIFBTUl9NT0RFXzIpKTsKKworCWV4cGVj dGVkX291dHB1dChkYXRhKTsKK30KKworc3RhdGljIHZvaWQgZGFtYWdlZF9wbGFuZV91cGRhdGUo ZGF0YV90ICpkYXRhKQoreworCWlndF9wbGFuZV90ICp0ZXN0X3BsYW5lID0gZGF0YS0+dGVzdF9w bGFuZTsKKwl1aW50MzJfdCBoID0gZGF0YS0+bW9kZS0+aGRpc3BsYXk7CisJdWludDMyX3QgdiA9 IGRhdGEtPm1vZGUtPnZkaXNwbGF5OworCisJaWd0X3BsYW5lX3NldF9mYih0ZXN0X3BsYW5lLCAm ZGF0YS0+ZmJfdGVzdCk7CisKKwlpZiAoZGF0YS0+dGVzdF9wbGFuZV9pZCA9PSBEUk1fUExBTkVf VFlQRV9PVkVSTEFZKSB7CisJCWggPSBoLzI7CisJCXYgPSB2LzI7CisJfQorCisJaWYgKGRhdGEt PnRlc3RfcGxhbmVfaWQgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQorCQlpZ3RfcGxhbmVfcmVw bGFjZV9wcm9wX2Jsb2IodGVzdF9wbGFuZSwKKwkJCQkJICAgIElHVF9QTEFORV9GQl9EQU1BR0Vf Q0xJUFMsCisJCQkJCSAgICAmZGF0YS0+Y3Vyc29yX2NsaXAsCisJCQkJCSAgICBzaXplb2Yoc3Ry dWN0IGRybV9tb2RlX3JlY3QpKTsKKwllbHNlCisJCWlndF9wbGFuZV9yZXBsYWNlX3Byb3BfYmxv Yih0ZXN0X3BsYW5lLAorCQkJCQkgICAgSUdUX1BMQU5FX0ZCX0RBTUFHRV9DTElQUywKKwkJCQkJ ICAgICZkYXRhLT5wbGFuZV91cGRhdGVfY2xpcCwKKwkJCQkJICAgIHNpemVvZihzdHJ1Y3QgZHJt X21vZGVfcmVjdCkqCisJCQkJCSAgICBkYXRhLT5kYW1hZ2VfYXJlYV9jb3VudCk7CisKKwlpZ3Rf cGxhbmVfc2V0X3Bvc2l0aW9uKGRhdGEtPnRlc3RfcGxhbmUsIDAsIDApOworCWlndF9kaXNwbGF5 X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCisJaWd0X2Fzc2VydChw c3Jfd2FpdF9lbnRyeShkYXRhLT5kZWJ1Z2ZzX2ZkLCBQU1JfTU9ERV8yKSk7CisKKwlleHBlY3Rl ZF9vdXRwdXQoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bihkYXRhX3QgKmRhdGEpCit7CisJ aWd0X2Fzc2VydChwc3Jfd2FpdF9lbnRyeShkYXRhLT5kZWJ1Z2ZzX2ZkLCBQU1JfTU9ERV8yKSk7 CisKKwlzd2l0Y2ggKGRhdGEtPm9wKSB7CisJY2FzZSBQTEFORV9VUERBVEU6CisJY2FzZSBPVkVS TEFZX1BSSU1fVVBEQVRFOgorCQlkYW1hZ2VkX3BsYW5lX3VwZGF0ZShkYXRhKTsKKwkJYnJlYWs7 CisJY2FzZSBQTEFORV9NT1ZFOgorCQlkYW1hZ2VkX3BsYW5lX21vdmUoZGF0YSk7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKworc3RhdGljIHZvaWQg Y2xlYW51cChkYXRhX3QgKmRhdGEpCit7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisJaWd0X3Bs YW5lX3QgKnNwcml0ZTsKKworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGRh dGEtPm91dHB1dCwKKwkJCQkJICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCisJaWd0X3Bs YW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKKworCWlmIChkYXRhLT50ZXN0X3BsYW5lX2lkICE9 IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpIHsKKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkYXRh LT50ZXN0X3BsYW5lLCAwLCAwKTsKKwkJaWd0X3BsYW5lX3NldF9mYihkYXRhLT50ZXN0X3BsYW5l LCBOVUxMKTsKKwl9CisKKwlpZiAoZGF0YS0+b3AgPT0gT1ZFUkxBWV9QUklNX1VQREFURSkgewor CQlzcHJpdGUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGRhdGEtPm91dHB1dCwKKwkJCQlE Uk1fUExBTkVfVFlQRV9PVkVSTEFZKTsKKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihzcHJpdGUs IDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X2ZiKHNwcml0ZSwgTlVMTCk7CisJfQorCisJaWd0X2Rp c3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiX3ByaW1hcnkpOworCWlndF9yZW1vdmVfZmIo ZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfb3ZlcmxheSk7CisJaWd0X3JlbW92ZV9mYihkYXRhLT5k cm1fZmQsICZkYXRhLT5mYl9jdXJzb3IpOworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAm ZGF0YS0+ZmJfdGVzdCk7Cit9CisKK2lndF9tYWluCit7CisJZGF0YV90IGRhdGEgPSB7fTsKKwlp bnQgaTsKKworCWlndF9maXh0dXJlIHsKKwkJaW50IHI7CisKKwkJZGF0YS5kcm1fZmQgPSBkcm1f b3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CisJCWRhdGEuZGVidWdmc19mZCA9IGln dF9kZWJ1Z2ZzX2RpcihkYXRhLmRybV9mZCk7CisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21v ZGUoKTsKKworCQlpZ3RfcmVxdWlyZV9mKHBzcl9zaW5rX3N1cHBvcnQoZGF0YS5kcm1fZmQsCisJ CQkJCSAgICAgICBkYXRhLmRlYnVnZnNfZmQsIFBTUl9NT0RFXzIpLAorCQkJICAgICAgIlNpbmsg ZG9lcyBub3Qgc3VwcG9ydCBQU1IyXG4iKTsKKworCQlpZ3RfcmVxdWlyZV9mKHBzcjJfc2VsZWN0 aXZlX2ZldGNoX2NoZWNrKGRhdGEuZGVidWdmc19mZCksCisJCQkgICAgICAiUFNSMiBzZWxlY3Rp dmUgZmV0Y2ggbm90IGVuYWJsZWRcbiIpOworCisJCWRhdGEuYnVmbWdyID0gZHJtX2ludGVsX2J1 Zm1ncl9nZW1faW5pdChkYXRhLmRybV9mZCwgNDA5Nik7CisJCWlndF9hc3NlcnQoZGF0YS5idWZt Z3IpOworCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZGF0YS5idWZtZ3IpOwor CisJCWRpc3BsYXlfaW5pdCgmZGF0YSk7CisKKwkJLyogVGVzdCBpZiBQU1IyIGNhbiBiZSBlbmFi bGVkICovCisJCWlndF9yZXF1aXJlX2YocHNyX2VuYWJsZShkYXRhLmRybV9mZCwKKwkJCQkJIGRh dGEuZGVidWdmc19mZCwgUFNSX01PREVfMiksCisJCQkgICAgICAiRXJyb3IgZW5hYmxpbmcgUFNS MlxuIik7CisKKwkJZGF0YS5kYW1hZ2VfYXJlYV9jb3VudCA9IE1BWF9EQU1BR0VfQVJFQVM7CisJ CWRhdGEub3AgPSBQTEFORV9VUERBVEU7CisJCWRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFO RV9UWVBFX1BSSU1BUlk7CisJCXByZXBhcmUoJmRhdGEpOworCQlyID0gcHNyX3dhaXRfZW50cnko ZGF0YS5kZWJ1Z2ZzX2ZkLCBQU1JfTU9ERV8yKTsKKwkJY2xlYW51cCgmZGF0YSk7CisJCWlmICgh cikKKwkJCXBzcl9wcmludF9kZWJ1Z2ZzKGRhdGEuZGVidWdmc19mZCk7CisJCWlndF9yZXF1aXJl X2YociwgIlBTUjIgY2FuIG5vdCBiZSBlbmFibGVkXG4iKTsKKwl9CisKKwkvKiBWZXJpZnkgcHJp bWFyeSBwbGFuZSBzZWxlY3RpdmUgZmV0Y2ggKi8KKwlmb3IgKGkgPSAxOyBpIDw9IE1BWF9EQU1B R0VfQVJFQVM7IGkrKykgeworCQlpZ3Rfc3VidGVzdF9mKCJwcmltYXJ5LSVzLXNmLWRtZy1hcmVh LSVkIiwgb3Bfc3RyKGRhdGEub3ApLCBpKSB7CisJCQlkYXRhLmRhbWFnZV9hcmVhX2NvdW50ID0g aTsKKwkJCWRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7CisJCQlw cmVwYXJlKCZkYXRhKTsKKwkJCXJ1bigmZGF0YSk7CisJCQljbGVhbnVwKCZkYXRhKTsKKwkJfQor CX0KKworCS8qIFZlcmlmeSBvdmVybGF5IHBsYW5lIHNlbGVjdGl2ZSBmZXRjaCAqLworCWZvciAo aSA9IDE7IGkgPD0gTUFYX0RBTUFHRV9BUkVBUzsgaSsrKSB7CisJCWlndF9zdWJ0ZXN0X2YoIm92 ZXJsYXktJXMtc2YtZG1nLWFyZWEtJWQiLCBvcF9zdHIoZGF0YS5vcCksIGkpIHsKKwkJCWRhdGEu ZGFtYWdlX2FyZWFfY291bnQgPSBpOworCQkJZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5F X1RZUEVfT1ZFUkxBWTsKKwkJCXByZXBhcmUoJmRhdGEpOworCQkJcnVuKCZkYXRhKTsKKwkJCWNs ZWFudXAoJmRhdGEpOworCQl9CisJfQorCisJLyogVmVyaWZ5IG92ZXJsYXkgcGxhbmUgc2VsZWN0 aXZlIGZldGNoICovCisJaWd0X3N1YnRlc3RfZigiY3Vyc29yLSVzLXNmIiwgb3Bfc3RyKGRhdGEu b3ApKSB7CisJCWRhdGEuZGFtYWdlX2FyZWFfY291bnQgPSAxOworCQlkYXRhLnRlc3RfcGxhbmVf aWQgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1I7CisJCXByZXBhcmUoJmRhdGEpOworCQlydW4oJmRh dGEpOworCQljbGVhbnVwKCZkYXRhKTsKKwl9CisKKwkvKiBPbmx5IGZvciBvdmVybGF5IHBsYW5l ICovCisJZGF0YS5vcCA9IFBMQU5FX01PVkU7CisJLyogVmVyaWZ5IG92ZXJsYXkgcGxhbmUgbW92 ZSBzZWxlY3RpdmUgZmV0Y2ggKi8KKwlmb3IgKGkgPSBQT1NfVE9QX0xFRlQ7IGkgPD0gUE9TX0JP VFRPTV9SSUdIVCA7IGkrKykgeworCQlpZ3Rfc3VidGVzdF9mKCIlcy1zZi1kbWctYXJlYS0lZCIs IG9wX3N0cihkYXRhLm9wKSwgaSkgeworCQkJZGF0YS5wb3MgPSBpOworCQkJZGF0YS50ZXN0X3Bs YW5lX2lkID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKKwkJCXByZXBhcmUoJmRhdGEpOworCQkJ cnVuKCZkYXRhKTsKKwkJCWNsZWFudXAoJmRhdGEpOworCQl9CisJfQorCisJLyogVmVyaWZ5IHBy aW1hcnkgcGxhbmUgc2VsZWN0aXZlIGZldGNoIHdpdGggb3ZlcnBsYXkgcGxhbmUgYmxlbmRlZCAq LworCWRhdGEub3AgPSBPVkVSTEFZX1BSSU1fVVBEQVRFOworCWZvciAoaSA9IDE7IGkgPD0gTUFY X0RBTUFHRV9BUkVBUzsgaSsrKSB7CisJCWlndF9zdWJ0ZXN0X2YoIiVzLXNmLWRtZy1hcmVhLSVk Iiwgb3Bfc3RyKGRhdGEub3ApLCBpKSB7CisJCQlkYXRhLmRhbWFnZV9hcmVhX2NvdW50ID0gaTsK KwkJCWRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7CisJCQlwcmVw YXJlKCZkYXRhKTsKKwkJCXJ1bigmZGF0YSk7CisJCQljbGVhbnVwKCZkYXRhKTsKKwkJfQorCX0K KworCWlndF9maXh0dXJlIHsKKwkJY2xvc2UoZGF0YS5kZWJ1Z2ZzX2ZkKTsKKwkJZHJtX2ludGVs X2J1Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdyKTsKKwkJZGlzcGxheV9maW5pKCZkYXRhKTsKKwl9 Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmlu ZGV4IGEyZGVjZjRhYi4uNGNhYjI5NGI4IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAor KysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtNjQsNiArNjQsNyBAQCB0ZXN0X3Byb2dzID0gWwog CSdrbXNfcHJvcGVydGllcycsCiAJJ2ttc19wc3InLAogCSdrbXNfcHNyMl9zdScsCisJJ2ttc19w c3IyX3NmJywKIAkna21zX3B3cml0ZV9jcmMnLAogCSdrbXNfcm1mYicsCiAJJ2ttc19yb3RhdGlv bl9jcmMnLAotLSAKMi4yOS4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXYK