From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E82396E48D for ; Wed, 23 Jan 2019 01:09:58 +0000 (UTC) From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Tue, 22 Jan 2019 17:09:50 -0800 Message-Id: <20190123010950.25867-2-jose.souza@intel.com> In-Reply-To: <20190123010950.25867-1-jose.souza@intel.com> References: <20190123010950.25867-1-jose.souza@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 2/2] test: Add PSR2 selective update tests 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 Cc: Dhinakaran Pandiyan , Rodrigo Vivi List-ID: VGhpcyB0ZXN0cyBjaGVja3MgaWYgaGFyZHdhcmUgaXMgYWJsZSB0byBkbyBzZWxlY3RpdmUgdXBk YXRlIHdoZW4Kc2NyZWVuIGNoYW5nZXMuClBTUjIgZG9uJ3QgdHJpZ2dlciBpbnRlcnJ1cHRpb25z IGFuZCB0aGUgJ1BTUjIgU1Ugc3RhdHVzJyByZWdpc3RlcgppcyBub3Qga2VwdCBsb2FkZWQgYWxs IHRoZSB0aW1lcywgc28gaXQgaXMgbmVjZXNzYXJ5IGtlZXAgcG9sbGluZwpQU1Igc3RhdHVzIGRl YnVnZnMgdW50aWwgdGhvc2UgdmFsdWVzIGFyZSBsb2FkZWQuCgpBbHNvIGZyb20gREVFUF9TTEVF UCBzdGF0ZSBIVyB3aWxsIG5vdCBkbyBhIHNlbGV0aXZlIHVwZGF0ZSwgYXMKbW9zdCBvZiB0aGUg bWVtb3J5L2NvbnRleHQgaXMgbG9zdCBpbiBkZWVwIHNsZWVwIHN0YXRlIGhhcmR3YXJlIHdpbGwK bmVlZCB0byBleGl0IFBTUiBtb2RlIHRoZW4gd2FpdCBhIGNvbmZpZ3VyZWQgbnVtYmVyIG9mIGZy YW1lcyB0bwphY3RpdmF0ZSBQU1IgYWdhaW4gdG8gdGhlbiBzdGFydCBkb2luZyBzZWxldGl2ZSB1 cGRhdGVzLCB0aGF0IGlzIHdoeQpqdXN0IG9uZSBzY3JlZW4gY2hhbmdlIGlzIG5vdCBlbm91Z2gg dG8gcGFzcyB0aGlzIHRlc3RzLgoKV2hlbiBhIHNlbGVjdGl2ZSB1cGRhdGUgaGFwcGVucyBhbmQg dGhlIHZhbHVlcyBhcmUgbG9hZGVkIGFuZCByZWFkCmZyb20gZGVidWdmcyBpdCBpcyBjb21wYXJl ZCB3aXRoIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiBzZWxldGl2ZQp1cGRhdGUgYmxvY2tzLCBpZiBt YXRjaGVzIHRoZSBwb2xsaW5nIGlzIHN0b3BwZWQgYW5kIHRoZSB0ZXN0IHBhc3NlZApvdGhlcndp c2UgaXQgd2lsbCB3YWl0IHVudGlsIGl0IHJlYWNocyBhIG1heGltdW0gbnVtYmVyIG8gc2NyZWVu CmNoYW5nZXMgdG8gZmFpbCB0aGUgdGVzdC4KCnYyOiBVc2luZyBuZXcgU1UgYmxvY2tzIGRlYnVn ZnMgb3V0cHV0Cgp2MzoKLSByZW1vdmVkIHRoZSB0aW1lcmZkIHRvIGZhaWwgdGhlIHRlc3QsIG5v dyBmYWlsaW5nIGJhc2VkIGluIGEKbWF4aW11bSBudW1iZXIgb2Ygc2NyZWVuIGNoYW5nZXMKLSBy ZW1vdmluZyB0aHJlYWQgdG8gcmVhZCBkZWJ1Z2ZzLCByZWFkIGZyb20gbWFpbiB0aHJlYWQgaXMg ZW5vdWdoCi0gaW1wcm92ZWQgY29tbWl0IG1lc3NhZ2UKCkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJp Z28udml2aUBpbnRlbC5jb20+CkNjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBh bmRpeWFuQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8 am9zZS5zb3V6YUBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9wc3IuYyAgICAgICAgICB8ICAyOSAr KysrCiBsaWIvaWd0X3Bzci5oICAgICAgICAgIHwgICAxICsKIHRlc3RzL01ha2VmaWxlLnNvdXJj ZXMgfCAgIDEgKwogdGVzdHMva21zX3BzcjJfc3UuYyAgICB8IDMwMiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSAr CiA1IGZpbGVzIGNoYW5nZWQsIDMzNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGVzdHMva21zX3BzcjJfc3UuYwoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcHNyLmMgYi9saWIvaWd0 X3Bzci5jCmluZGV4IGQ3MjZmYWQ1Li44YzBmMDVlOCAxMDA2NDQKLS0tIGEvbGliL2lndF9wc3Iu YworKysgYi9saWIvaWd0X3Bzci5jCkBAIC0xNzgsMyArMTc4LDMyIEBAIGJvb2wgcHNyX3Npbmtf c3VwcG9ydChpbnQgZGVidWdmc19mZCwgZW51bSBwc3JfbW9kZSBtb2RlKQogCQkgKi8KIAkJcmV0 dXJuIHN0cnN0cihidWYsICJTaW5rIHN1cHBvcnQ6IHllcyBbMHgwM10iKTsKIH0KKworI2RlZmlu ZSBQU1IyX1NVX0JMT0NLX1NUUl9MT09LVVAgIlBTUjIgU1UgYmxvY2tzOlxuMFx0IgorCitzdGF0 aWMgYm9vbAorcHNyMl9yZWFkX2xhc3RfbnVtX3N1X2Jsb2Nrc192YWwoaW50IGRlYnVnZnNfZmQs IHVpbnQxNl90ICpudW1fc3VfYmxvY2tzKQoreworCWNoYXIgYnVmW1BTUl9TVEFUVVNfTUFYX0xF Tl07CisJY2hhciAqc3RyOworCWludCByZXQ7CisKKwlyZXQgPSBpZ3RfZGVidWdmc19zaW1wbGVf cmVhZChkZWJ1Z2ZzX2ZkLCAiaTkxNV9lZHBfcHNyX3N0YXR1cyIsIGJ1ZiwKKwkJCQkgICAgICBz aXplb2YoYnVmKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBmYWxzZTsKKworCXN0ciA9IHN0 cnN0cihidWYsIFBTUjJfU1VfQkxPQ0tfU1RSX0xPT0tVUCk7CisJaWYgKCFzdHIpCisJCXJldHVy biBmYWxzZTsKKworCXN0ciA9ICZzdHJbc3RybGVuKFBTUjJfU1VfQkxPQ0tfU1RSX0xPT0tVUCld OworCSpudW1fc3VfYmxvY2tzID0gKHVpbnQxNl90KXN0cnRvbChzdHIsIE5VTEwsIDEwKTsKKwor CXJldHVybiB0cnVlOworfQorCitib29sIHBzcjJfd2FpdF9zdShpbnQgZGVidWdmc19mZCwgdWlu dDE2X3QgKm51bV9zdV9ibG9ja3MpCit7CisJcmV0dXJuIGlndF93YWl0KHBzcjJfcmVhZF9sYXN0 X251bV9zdV9ibG9ja3NfdmFsKGRlYnVnZnNfZmQsIG51bV9zdV9ibG9ja3MpLCA0MCwgMSk7Cit9 CmRpZmYgLS1naXQgYS9saWIvaWd0X3Bzci5oIGIvbGliL2lndF9wc3IuaAppbmRleCA3ZTcwMTdi Zi4uNDk1OTljZjggMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcHNyLmgKKysrIGIvbGliL2lndF9wc3Iu aApAQCAtNDAsNSArNDAsNiBAQCBib29sIHBzcl93YWl0X3VwZGF0ZShpbnQgZGVidWdmc19mZCwg ZW51bSBwc3JfbW9kZSBtb2RlKTsKIGJvb2wgcHNyX2VuYWJsZShpbnQgZGVidWdmc19mZCwgZW51 bSBwc3JfbW9kZSk7CiBib29sIHBzcl9kaXNhYmxlKGludCBkZWJ1Z2ZzX2ZkKTsKIGJvb2wgcHNy X3Npbmtfc3VwcG9ydChpbnQgZGVidWdmc19mZCwgZW51bSBwc3JfbW9kZSk7Citib29sIHBzcjJf d2FpdF9zdShpbnQgZGVidWdmc19mZCwgdWludDE2X3QgKm51bV9zdV9ibG9ja3MpOwogCiAjZW5k aWYKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCmluZGV4IDUxOWVhYzc5Li45MTc0YWVjYyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZp bGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC04MCw2ICs4MCw3IEBA IFRFU1RTX3Byb2dzID0gXAogCWttc19wbGFuZV9zY2FsaW5nIFwKIAlrbXNfcHJvcGVydGllcyBc CiAJa21zX3BzciBcCisJa21zX3BzcjJfc3UgXAogCWttc19wd3JpdGVfY3JjIFwKIAlrbXNfcm1m YiBcCiAJa21zX3JvdGF0aW9uX2NyYyBcCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcHNyMl9zdS5j IGIvdGVzdHMva21zX3BzcjJfc3UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uZjZlODVhMmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfcHNyMl9zdS5jCkBAIC0w LDAgKzEsMzAyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisK KyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKKyNpbmNsdWRlICJpZ3Rf cHNyLmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8 c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8c3lzL3RpbWVyZmQuaD4KKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKKworSUdUX1RF U1RfREVTQ1JJUFRJT04oIlRlc3QgUFNSMiBzZWxlY3RpdmUgdXBkYXRlIik7CisKKyNkZWZpbmUg U1FVQVJFX1NJWkUgMTAwCisvKiBlYWNoIHNlbGVjdGl2ZSB1cGRhdGUgYmxvY2sgaXMgNCBsaW5l cyB0YWxsICovCisjZGVmaW5lIEVYUEVDVEVEX05VTV9TVV9CTE9DS1MgKChTUVVBUkVfU0laRSAv IDQpICsgKFNRVUFSRV9TSVpFICUgNCA/IDEgOiAwKSkKKworLyoKKyAqIE1pbmltdW0gaXMgMTUg YXMgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gYWN0aXZlIFBTUjIgY291bGQgYmUgY29uZmlndXJl ZAorICogdG8gMTUgZnJhbWVzIHBsdXMgYSBmZXcgbW9yZSBpbiBjYXNlIHdlIG1pc3MgYSBzZWxl Y3RpdmUgdXBkYXRlIGJldHdlZW4KKyAqIGRlYnVnZnMgcmVhZHMuCisgKi8KKyNkZWZpbmUgTUFY X1NDUkVFTl9DSEFOR0VTIDIwCisKK2VudW0gb3BlcmF0aW9ucyB7CisJUEFHRV9GTElQLAorCUZS T05UQlVGRkVSLAorCUxBU1QKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpvcF9zdHIoZW51bSBv cGVyYXRpb25zIG9wKQoreworCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbmFtZVtdID0gewor CQlbUEFHRV9GTElQXSA9ICJwYWdlX2ZsaXAiLAorCQlbRlJPTlRCVUZGRVJdID0gImZyb250YnVm ZmVyIgorCX07CisKKwlyZXR1cm4gbmFtZVtvcF07Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKwlp bnQgZHJtX2ZkOworCWludCBkZWJ1Z2ZzX2ZkOworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlk cm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOworCWlndF9v dXRwdXRfdCAqb3V0cHV0OworCXN0cnVjdCBpZ3RfZmIgZmJbMl07CisJc3RydWN0IHBvbGxmZCBw b2xsZmRzWzFdOworCWVudW0gb3BlcmF0aW9ucyBvcDsKKwlpbnQgY2hhbmdlX3NjcmVlbl90aW1l cmZkOworCXVpbnQzMl90IHNjcmVlbl9jaGFuZ2VzOworCWJvb2wgc3VjY2VzczsKKworfSBkYXRh X3Q7CisKK3N0YXRpYyB2b2lkIHNldHVwX291dHB1dChkYXRhX3QgKmRhdGEpCit7CisJaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0 OworCWVudW0gcGlwZSBwaXBlOworCisJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChk aXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKKwkJZHJtTW9kZUNvbm5lY3RvclB0ciBjID0gb3V0cHV0 LT5jb25maWcuY29ubmVjdG9yOworCisJCWlmIChjLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9E RV9DT05ORUNUT1JfZURQKQorCQkJY29udGludWU7CisKKwkJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIHBpcGUpOworCQlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7CisJCWRhdGEtPm1vZGUgPSBp Z3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisKKwkJcmV0dXJuOworCX0KK30KKworc3RhdGlj IHZvaWQgZGlzcGxheV9pbml0KGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5kcm1fZmQpOworCXNldHVwX291dHB1dChkYXRhKTsKK30K Kworc3RhdGljIHZvaWQgZGlzcGxheV9maW5pKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxh eV9maW5pKCZkYXRhLT5kaXNwbGF5KTsKK30KKworc3RhdGljIHZvaWQgcHJlcGFyZShkYXRhX3Qg KmRhdGEpCit7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisKKwkvKiBhbGwgZ3JlZW4gZnJhbWUg Ki8KKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwKKwkJCSAgICBkYXRhLT5tb2Rl LT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRpc3BsYXksCisJCQkgICAgRFJNX0ZPUk1BVF9YUkdC ODg4OCwKKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAgIDAuMCwgMS4w LCAwLjAsCisJCQkgICAgJmRhdGEtPmZiWzBdKTsKKworCWlmIChkYXRhLT5vcCA9PSBQQUdFX0ZM SVApIHsKKwkJY2Fpcm9fdCAqY3I7CisKKwkJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1f ZmQsCisJCQkJICAgIGRhdGEtPm1vZGUtPmhkaXNwbGF5LCBkYXRhLT5tb2RlLT52ZGlzcGxheSwK KwkJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSwKKwkJCQkgICAgMC4wLCAxLjAsIDAuMCwKKwkJCQkgICAgJmRhdGEtPmZiWzFdKTsK KworCQljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzFdKTsK KwkJLyogcGFpbnQgYSB3aGl0ZSBzcXVhcmUgKi8KKwkJaWd0X3BhaW50X2NvbG9yX2FscGhhKGNy LCAwLCAwLCBTUVVBUkVfU0laRSwgU1FVQVJFX1NJWkUsCisJCQkJICAgICAgMS4wLCAxLjAsIDEu MCwgMS4wKTsKKwkJaWd0X3B1dF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAgJmRhdGEtPmZiWzFd LCBjcik7CisJfQorCisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+ b3V0cHV0LAorCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCBOVUxMKTsKKworCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxh eSk7CisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmJbMF0pOworCWlndF9kaXNw bGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7CisKKwlpZ3RfYXNzZXJ0KHBzcl93YWl0X2VudHJ5 KGRhdGEtPmRlYnVnZnNfZmQsIFBTUl9NT0RFXzIpKTsKKworCWRhdGEtPnN1Y2Nlc3MgPSBmYWxz ZTsKKwlkYXRhLT5zY3JlZW5fY2hhbmdlcyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9z Y3JlZW5fYW5kX3Rlc3QoZGF0YV90ICpkYXRhKQoreworCXVpbnQxNl90IHN1X2Jsb2NrczsKKwor CWRhdGEtPnNjcmVlbl9jaGFuZ2VzKys7CisKKwlzd2l0Y2ggKGRhdGEtPm9wKSB7CisJY2FzZSBQ QUdFX0ZMSVA6IHsKKwkJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisKKwkJcHJpbWFyeSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LAorCQkJCQkJICAgIERSTV9QTEFORV9U WVBFX1BSSU1BUlkpOworCisJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZiW2Rh dGEtPnNjcmVlbl9jaGFuZ2VzICYgMV0pOworCQlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRp c3BsYXkpOworCQlicmVhazsKKwl9CisJY2FzZSBGUk9OVEJVRkZFUjogeworCQlkcm1Nb2RlQ2xp cCBjbGlwOworCQljYWlyb190ICpjcjsKKwkJaW50IHI7CisKKwkJY2xpcC54MSA9IGNsaXAueTEg PSAwOworCQljbGlwLngyID0gY2xpcC55MiA9IFNRVUFSRV9TSVpFOworCisJCWNyID0gaWd0X2dl dF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMF0pOworCisJCWlmIChkYXRhLT5z Y3JlZW5fY2hhbmdlcyAmIDEpIHsKKwkJCS8qIGdvIGJhY2sgdG8gYWxsIGdyZWVuIGZyYW1lIHdp dGggd2l0aCBzcXVhcmUgKi8KKwkJCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgMCwgMCwgU1FV QVJFX1NJWkUsCisJCQkJCSAgICAgIFNRVUFSRV9TSVpFLCAxLjAsIDEuMCwgMS4wLCAxLjApOwor CQl9IGVsc2UgeworCQkJLyogZ28gYmFjayB0byBhbGwgZ3JlZW4gZnJhbWUgKi8KKwkJCWlndF9w YWludF9jb2xvcl9hbHBoYShjciwgMCwgMCwgU1FVQVJFX1NJWkUsCisJCQkJCSAgICAgIFNRVUFS RV9TSVpFLCAwLCAxLjAsIDAsIDEuMCk7CisJCX0KKworCQlyID0gZHJtTW9kZURpcnR5RkIoZGF0 YS0+ZHJtX2ZkLCBkYXRhLT5mYlswXS5mYl9pZCwgJmNsaXAsIDEpOworCQlpZ3RfYXNzZXJ0KHIg PT0gMCB8fCByID09IC1FTk9TWVMpOworCQlicmVhazsKKwl9CisJZGVmYXVsdDoKKwkJaWd0X2Fz c2VydF9mKGRhdGEtPm9wLCAiT3BlcmF0aW9uIG5vdCBoYW5kbGVkXG4iKTsKKwl9CisKKwlpZiAo cHNyMl93YWl0X3N1KGRhdGEtPmRlYnVnZnNfZmQsICZzdV9ibG9ja3MpKQorCQlkYXRhLT5zdWNj ZXNzID0gc3VfYmxvY2tzID09IEVYUEVDVEVEX05VTV9TVV9CTE9DS1M7Cit9CisKK3N0YXRpYyB2 b2lkIHJ1bihkYXRhX3QgKmRhdGEpCit7CisJd2hpbGUgKGRhdGEtPnNjcmVlbl9jaGFuZ2VzIDwg TUFYX1NDUkVFTl9DSEFOR0VTICYmICFkYXRhLT5zdWNjZXNzKSB7CisJCXVpbnQ2NF90IGV4cDsK KwkJaW50IHI7CisKKwkJciA9IHBvbGwoZGF0YS0+cG9sbGZkcywKKwkJCSBzaXplb2YoZGF0YS0+ cG9sbGZkcykgLyBzaXplb2YoZGF0YS0+cG9sbGZkc1swXSksIC0xKTsKKwkJaWYgKHIgPCAwKQor CQkJYnJlYWs7CisKKwkJaWYgKGRhdGEtPnBvbGxmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikgewor CQkJciA9IHJlYWQoZGF0YS0+cG9sbGZkc1swXS5mZCwgJmV4cCwgc2l6ZW9mKGV4cCkpOworCisJ CQlpZiAociAhPSBzaXplb2YodWludDY0X3QpKSB7CisJCQkJaWd0X3dhcm4oInJlYWQgYSBub3Qg ZXhwZWN0ZWQgbnVtYmVyIG9mIGJ5dGVzIGZyb20gY2hhbmdlX3NjcmVlbl90aW1lcmZkOiAlaVxu Iiwgcik7CisJCQl9IGVsc2UgaWYgKGV4cCkKKwkJCQl1cGRhdGVfc2NyZWVuX2FuZF90ZXN0KGRh dGEpOworCQl9CisJfQorCisJaWd0X2RlYnVnKCJTY3JlZW4gY2hhbmdlczogJXVcbiIsIGRhdGEt PnNjcmVlbl9jaGFuZ2VzKTsKKwlpZ3RfYXNzZXJ0KGRhdGEtPnN1Y2Nlc3MpOworfQorCitzdGF0 aWMgdm9pZCBjbGVhbnVwKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsK KworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGRhdGEtPm91dHB1dCwKKwkJ CQkJICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlndF9wbGFuZV9zZXRfZmIocHJpbWFy eSwgTlVMTCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsKKworCWlndF9y ZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMF0pOworCWlmIChkYXRhLT5vcCA9PSBQ QUdFX0ZMSVApCisJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMV0pOwor fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWRhdGFfdCBkYXRhID0g e307CisKKwlpZ3Rfc3VidGVzdF9pbml0X3BhcnNlX29wdHMoJmFyZ2MsIGFyZ3YsICIiLCBOVUxM LAorCQkJCSAgICBOVUxMLCBOVUxMLCBOVUxMKTsKKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7 CisKKwlpZ3RfZml4dHVyZSB7CisJCXN0cnVjdCBpdGltZXJzcGVjIGludGVydmFsOworCQlpbnQg cjsKKworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVM KTsKKwkJZGF0YS5kZWJ1Z2ZzX2ZkID0gaWd0X2RlYnVnZnNfZGlyKGRhdGEuZHJtX2ZkKTsKKwkJ a21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9yZXF1aXJlX2YocHNyX3Np bmtfc3VwcG9ydChkYXRhLmRlYnVnZnNfZmQsIFBTUl9NT0RFXzIpLAorCQkJICAgICAgIlNpbmsg ZG9lcyBub3Qgc3VwcG9ydCBQU1IyXG4iKTsKKworCQlkYXRhLmJ1Zm1nciA9IGRybV9pbnRlbF9i dWZtZ3JfZ2VtX2luaXQoZGF0YS5kcm1fZmQsIDQwOTYpOworCQlpZ3RfYXNzZXJ0KGRhdGEuYnVm bWdyKTsKKwkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRhdGEuYnVmbWdyKTsK KworCQlkaXNwbGF5X2luaXQoJmRhdGEpOworCisJCWlndF9yZXF1aXJlKHBzcl9lbmFibGUoZGF0 YS5kZWJ1Z2ZzX2ZkLCBQU1JfTU9ERV8yKSk7CisJCWlndF9yZXF1aXJlKHBzcl93YWl0X2VudHJ5 KGRhdGEuZGVidWdmc19mZCwgUFNSX01PREVfMikpOworCisJCWRhdGEuY2hhbmdlX3NjcmVlbl90 aW1lcmZkID0gdGltZXJmZF9jcmVhdGUoQ0xPQ0tfTU9OT1RPTklDLAorCQkJCQkJCSAgICBURkRf Tk9OQkxPQ0spOworCQlpZ3RfcmVxdWlyZShkYXRhLmNoYW5nZV9zY3JlZW5fdGltZXJmZCAhPSAt MSk7CisJCS8qIENoYW5naW5nIHNjcmVlbiBhdCAzMGh6IHRvIHN1cHBvcnQgMzBoeiBwYW5lbHMg Ki8KKwkJaW50ZXJ2YWwuaXRfdmFsdWUudHZfbnNlYyA9IE5TRUNfUEVSX1NFQyAvIDMwOworCQlp bnRlcnZhbC5pdF92YWx1ZS50dl9zZWMgPSAwOworCQlpbnRlcnZhbC5pdF9pbnRlcnZhbC50dl9u c2VjID0gaW50ZXJ2YWwuaXRfdmFsdWUudHZfbnNlYzsKKwkJaW50ZXJ2YWwuaXRfaW50ZXJ2YWwu dHZfc2VjID0gaW50ZXJ2YWwuaXRfdmFsdWUudHZfc2VjOworCQlyID0gdGltZXJmZF9zZXR0aW1l KGRhdGEuY2hhbmdlX3NjcmVlbl90aW1lcmZkLCAwLCAmaW50ZXJ2YWwsIE5VTEwpOworCQlpZ3Rf cmVxdWlyZV9mKHIgIT0gLTEsICJFcnJvciBzZXR0aW5nIHRpbWVyZmRcbiIpOworCisJCWRhdGEu cG9sbGZkc1swXS5mZCA9IGRhdGEuY2hhbmdlX3NjcmVlbl90aW1lcmZkOworCQlkYXRhLnBvbGxm ZHNbMF0uZXZlbnRzID0gUE9MTElOOworCQlkYXRhLnBvbGxmZHNbMF0ucmV2ZW50cyA9IDA7CisJ fQorCisJZm9yIChkYXRhLm9wID0gUEFHRV9GTElQOyBkYXRhLm9wIDwgTEFTVDsgZGF0YS5vcCsr KSB7CisJCWlndF9zdWJ0ZXN0X2YoIiVzIiwgb3Bfc3RyKGRhdGEub3ApKSB7CisJCQlwcmVwYXJl KCZkYXRhKTsKKwkJCXJ1bigmZGF0YSk7CisJCQljbGVhbnVwKCZkYXRhKTsKKwkJfQorCX0KKwor CWlndF9maXh0dXJlIHsKKwkJY2xvc2UoZGF0YS5kZWJ1Z2ZzX2ZkKTsKKwkJZHJtX2ludGVsX2J1 Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdyKTsKKwkJZGlzcGxheV9maW5pKCZkYXRhKTsKKwl9CisK KwlpZ3RfZXhpdCgpOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9t ZXNvbi5idWlsZAppbmRleCBlMTRhYjJiNC4uNjgyY2E5MzkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21l c29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC01MCw2ICs1MCw3IEBAIHRlc3Rf cHJvZ3MgPSBbCiAJJ2ttc19wbGFuZV9zY2FsaW5nJywKIAkna21zX3Byb3BlcnRpZXMnLAogCSdr bXNfcHNyJywKKwkna21zX3BzcjJfc3UnLAogCSdrbXNfcHdyaXRlX2NyYycsCiAJJ2ttc19ybWZi JywKIAkna21zX3JvdGF0aW9uX2NyYycsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldgo=