From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2F7ED89F4A for ; Fri, 16 Aug 2019 09:34:36 +0000 (UTC) From: Petri Latvala Date: Fri, 16 Aug 2019 12:34:17 +0300 Message-Id: <20190816093426.10644-2-petri.latvala@intel.com> In-Reply-To: <20190816093426.10644-1-petri.latvala@intel.com> References: <20190816093426.10644-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 01/10] lib: Introduce dynamic subtests 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: Petri Latvala List-ID: RHluYW1pYyBzdWJ0ZXN0cywgb3Igc3VidGVzdHMgb2Ygc3VidGVzdHMsIGFyZSBpbmRpdmlkdWFs IHBpZWNlcyBvZgp0ZXN0cyB0aGF0IGFyZSBub3Qgc3RhdGljYWxseSBhdmFpbGFibGUgYWxsIHRo ZSB0aW1lLgoKQSBnb29kIGV4YW1wbGUgb2YgYSBuZWVkIGZvciBhIGR5bmFtaWMgc3VidGVzdCBp cyBpOTE1IGVuZ2luZSBsaXN0aW5nOgpBIG5vcm1hbCBzdWJ0ZXN0IGZvciBlYWNoIGVuZ2luZSBj bGFzcyAoImJzZCIpLCBhbmQgYSBkeW5hbWljIHN1YnRlc3QKZm9yIGVhY2ggaW5zdGFuY2UgKCJi c2QwIiwgImJzZDIiLCBldGMpLiBPciBhIG5vcm1hbCBzdWJ0ZXN0IGZvciBhbgpvcGVyYXRpb24g d2l0aCBhIGR5bmFtaWMgc3VidGVzdCBmb3IgZXZlcnkgZW5naW5lIHRoZXJlIGlzLgoKQW5vdGhl ciBleGFtcGxlIGlzIGEgZHluYW1pYyBzdWJ0ZXN0IGZvciBwaXBlczogSW5zdGVhZCBvZiB1c2lu Zwpmb3JlYWNoX3BpcGVfc3RhdGljLCBtYWtlIG9uZSBzdWJ0ZXN0IGFuZCB1c2UgZm9yZWFjaF9w aXBlIHdpdGgKZHluYW1pYyBzdWJ0ZXN0cyBmb3IgZWFjaCBwaXBlLgoKdjI6IFJlYmFzZSBhbmQg YWRhcHQgdG8gaWd0X2Rlc2NyaWJlIGNoYW5nZXMKClNpZ25lZC1vZmYtYnk6IFBldHJpIExhdHZh bGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfY29yZS5jIHwgMTE5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGxpYi9pZ3Rf Y29yZS5oIHwgIDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxl cyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0X2NvcmUuYwppbmRleCAxY2JiMDlmOS4uOGI3NTRi OWYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29yZS5jCisrKyBiL2xpYi9pZ3RfY29yZS5jCkBAIC0y NjMsOSArMjYzLDEyIEBAIGJvb2wgaWd0X3NraXBfY3JjX2NvbXBhcmU7CiBzdGF0aWMgYm9vbCBs aXN0X3N1YnRlc3RzID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBkZXNjcmliZV9zdWJ0ZXN0cyA9IGZh bHNlOwogc3RhdGljIGNoYXIgKnJ1bl9zaW5nbGVfc3VidGVzdCA9IE5VTEw7CitzdGF0aWMgY2hh ciAqcnVuX3NpbmdsZV9keW5hbWljX3N1YnRlc3QgPSBOVUxMOwogc3RhdGljIGJvb2wgcnVuX3Np bmdsZV9zdWJ0ZXN0X2ZvdW5kID0gZmFsc2U7CiBzdGF0aWMgY29uc3QgY2hhciAqaW5fc3VidGVz dCA9IE5VTEw7CitzdGF0aWMgY29uc3QgY2hhciAqaW5fZHluYW1pY19zdWJ0ZXN0ID0gTlVMTDsK IHN0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgc3VidGVzdF90aW1lOworc3RhdGljIHN0cnVjdCB0aW1l c3BlYyBkeW5hbWljX3N1YnRlc3RfdGltZTsKIHN0YXRpYyBjbG9ja2lkX3QgaWd0X2Nsb2NrID0g KGNsb2NraWRfdCktMTsKIHN0YXRpYyBib29sIGluX2ZpeHR1cmUgPSBmYWxzZTsKIHN0YXRpYyBi b29sIHRlc3Rfd2l0aF9zdWJ0ZXN0cyA9IGZhbHNlOwpAQCAtMzAwLDYgKzMwMyw3IEBAIGVudW0g ewogCU9QVF9MSVNUX1NVQlRFU1RTID0gNTAwLAogCU9QVF9ERVNDUklCRV9TVUJURVNUUywKIAlP UFRfUlVOX1NVQlRFU1QsCisJT1BUX1JVTl9EWU5BTUlDX1NVQlRFU1QsCiAJT1BUX0RFU0NSSVBU SU9OLAogCU9QVF9ERUJVRywKIAlPUFRfSU5URVJBQ1RJVkVfREVCVUcsCkBAIC0zMjMsNiArMzI3 LDggQEAgY2hhciAqaWd0X2ZyYW1lX2R1bXBfcGF0aDsKIAogc3RhdGljIGJvb2wgc3RkZXJyX25l ZWRzX3NlbnRpbmVsID0gZmFsc2U7CiAKK3N0YXRpYyBpbnQgX2lndF9keW5hbWljX3Rlc3RzX2V4 ZWN1dGVkID0gLTE7CisKIGNvbnN0IGNoYXIgKmlndF90ZXN0X25hbWUodm9pZCkKIHsKIAlyZXR1 cm4gY29tbWFuZF9zdHI7CkBAIC0zNTQsNyArMzYwLDkgQEAgc3RhdGljIHZvaWQgX2lndF9sb2df YnVmZmVyX2R1bXAodm9pZCkKIHsKIAl1aW50OF90IGk7CiAKLQlpZiAoaW5fc3VidGVzdCkKKwlp ZiAoaW5fZHluYW1pY19zdWJ0ZXN0KQorCQlmcHJpbnRmKHN0ZGVyciwgIkR5bmFtaWMgc3VidGVz dCAlcyBmYWlsZWQuXG4iLCBpbl9keW5hbWljX3N1YnRlc3QpOworCWVsc2UgaWYgKGluX3N1YnRl c3QpCiAJCWZwcmludGYoc3RkZXJyLCAiU3VidGVzdCAlcyBmYWlsZWQuXG4iLCBpbl9zdWJ0ZXN0 KTsKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVGVzdCAlcyBmYWlsZWQuXG4iLCBjb21tYW5k X3N0cik7CkBAIC02MTksNiArNjI3LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2UoY29uc3Qg Y2hhciAqaGVscF9zdHIsIGJvb2wgb3V0cHV0X29uX3N0ZGVycikKIAlmcHJpbnRmKGYsICJVc2Fn ZTogJXMgW09QVElPTlNdXG4iLCBjb21tYW5kX3N0cik7CiAJZnByaW50ZihmLCAiICAtLWxpc3Qt c3VidGVzdHNcbiIKIAkJICAgIiAgLS1ydW4tc3VidGVzdCA8cGF0dGVybj5cbiIKKwkJICAgIiAg LS1keW5hbWljLXN1YnRlc3QgPHBhdHRlcm4+XG4iCiAJCSAgICIgIC0tZGVidWdbPWxvZy1kb21h aW5dXG4iCiAJCSAgICIgIC0taW50ZXJhY3RpdmUtZGVidWdbPWRvbWFpbl1cbiIKIAkJICAgIiAg LS1za2lwLWNyYy1jb21wYXJlXG4iCkBAIC03MzksNiArNzQ4LDcgQEAgc3RhdGljIGludCBjb21t b25faW5pdChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2LAogCQl7Imxpc3Qtc3VidGVzdHMiLCAgICAg bm9fYXJndW1lbnQsICAgICAgIE5VTEwsIE9QVF9MSVNUX1NVQlRFU1RTfSwKIAkJeyJkZXNjcmli ZSIsICAgICAgICAgIG9wdGlvbmFsX2FyZ3VtZW50LCBOVUxMLCBPUFRfREVTQ1JJQkVfU1VCVEVT VFN9LAogCQl7InJ1bi1zdWJ0ZXN0IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9Q VF9SVU5fU1VCVEVTVH0sCisJCXsiZHluYW1pYy1zdWJ0ZXN0IiwgICByZXF1aXJlZF9hcmd1bWVu dCwgTlVMTCwgT1BUX1JVTl9EWU5BTUlDX1NVQlRFU1R9LAogCQl7ImhlbHAtZGVzY3JpcHRpb24i LCAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsIE9QVF9ERVNDUklQVElPTn0sCiAJCXsiZGVidWci LCAgICAgICAgICAgICBvcHRpb25hbF9hcmd1bWVudCwgTlVMTCwgT1BUX0RFQlVHfSwKIAkJeyJp bnRlcmFjdGl2ZS1kZWJ1ZyIsIG9wdGlvbmFsX2FyZ3VtZW50LCBOVUxMLCBPUFRfSU5URVJBQ1RJ VkVfREVCVUd9LApAQCAtODU4LDYgKzg2OCwxMSBAQCBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGlu dCAqYXJnYywgY2hhciAqKmFyZ3YsCiAJCQlpZiAoIWxpc3Rfc3VidGVzdHMpCiAJCQkJcnVuX3Np bmdsZV9zdWJ0ZXN0ID0gc3RyZHVwKG9wdGFyZyk7CiAJCQlicmVhazsKKwkJY2FzZSBPUFRfUlVO X0RZTkFNSUNfU1VCVEVTVDoKKwkJCWFzc2VydChvcHRhcmcpOworCQkJaWYgKCFsaXN0X3N1YnRl c3RzKQorCQkJCXJ1bl9zaW5nbGVfZHluYW1pY19zdWJ0ZXN0ID0gc3RyZHVwKG9wdGFyZyk7CisJ CQlicmVhazsKIAkJY2FzZSBPUFRfREVTQ1JJUFRJT046CiAJCQlwcmludF90ZXN0X2Rlc2NyaXB0 aW9uKCk7CiAJCQlyZXQgPSAtMTsKQEAgLTExMDcsNiArMTEyMiw0MSBAQCBib29sIF9faWd0X3J1 bl9zdWJ0ZXN0KGNvbnN0IGNoYXIgKnN1YnRlc3RfbmFtZSwgY29uc3QgY2hhciAqZmlsZSwgY29u c3QgaW50IGxpbgogCXJldHVybiAoaW5fc3VidGVzdCA9IHN1YnRlc3RfbmFtZSk7CiB9CiAKK2Jv b2wgX19pZ3RfcnVuX2R5bmFtaWNfc3VidGVzdChjb25zdCBjaGFyICpkeW5hbWljX3N1YnRlc3Rf bmFtZSkKK3sKKwlpbnQgaTsKKworCWFzc2VydChpbl9zdWJ0ZXN0KTsKKwlhc3NlcnQoX2lndF9k eW5hbWljX3Rlc3RzX2V4ZWN1dGVkID49IDApOworCisJLyogY2hlY2sgdGhlIGR5bmFtaWNfc3Vi dGVzdCBuYW1lIG9ubHkgY29udGFpbnMgYS16LCBBLVosIDAtOSwgJy0nIGFuZCAnXycgKi8KKwlm b3IgKGkgPSAwOyBkeW5hbWljX3N1YnRlc3RfbmFtZVtpXSAhPSAnXDAnOyBpKyspCisJCWlmIChk eW5hbWljX3N1YnRlc3RfbmFtZVtpXSAhPSAnXycgJiYgZHluYW1pY19zdWJ0ZXN0X25hbWVbaV0g IT0gJy0nCisJCSAgICAmJiAhaXNhbG51bShkeW5hbWljX3N1YnRlc3RfbmFtZVtpXSkpIHsKKwkJ CWlndF9jcml0aWNhbCgiSW52YWxpZCBkeW5hbWljIHN1YnRlc3QgbmFtZSBcIiVzXCIuXG4iLAor CQkJCSAgICAgZHluYW1pY19zdWJ0ZXN0X25hbWUpOworCQkJaWd0X2V4aXQoKTsKKwkJfQorCisJ aWYgKHJ1bl9zaW5nbGVfZHluYW1pY19zdWJ0ZXN0ICYmCisJICAgIHV3aWxkbWF0KGR5bmFtaWNf c3VidGVzdF9uYW1lLCBydW5fc2luZ2xlX2R5bmFtaWNfc3VidGVzdCkgPT0gMCkKKwkJcmV0dXJu IGZhbHNlOworCisJaWd0X2ttc2coS01TR19JTkZPICIlczogc3RhcnRpbmcgZHluYW1pYyBzdWJ0 ZXN0ICVzXG4iLAorCQkgY29tbWFuZF9zdHIsIGR5bmFtaWNfc3VidGVzdF9uYW1lKTsKKwlpZ3Rf aW5mbygiU3RhcnRpbmcgZHluYW1pYyBzdWJ0ZXN0OiAlc1xuIiwgZHluYW1pY19zdWJ0ZXN0X25h bWUpOworCWZmbHVzaChzdGRvdXQpOworCWlmIChzdGRlcnJfbmVlZHNfc2VudGluZWwpCisJCWZw cmludGYoc3RkZXJyLCAiU3RhcnRpbmcgZHluYW1pYyBzdWJ0ZXN0OiAlc1xuIiwgZHluYW1pY19z dWJ0ZXN0X25hbWUpOworCisJX2lndF9sb2dfYnVmZmVyX3Jlc2V0KCk7CisKKwlfaWd0X2R5bmFt aWNfdGVzdHNfZXhlY3V0ZWQrKzsKKworCWlndF9nZXR0aW1lKCZkeW5hbWljX3N1YnRlc3RfdGlt ZSk7CisJcmV0dXJuIChpbl9keW5hbWljX3N1YnRlc3QgPSBkeW5hbWljX3N1YnRlc3RfbmFtZSk7 Cit9CisKIC8qKgogICogaWd0X3N1YnRlc3RfbmFtZToKICAqCkBAIC0xMTYxLDI2ICsxMjExLDUw IEBAIHZvaWQgX19pZ3Rfc3VidGVzdF9ncm91cF9yZXN0b3JlKGludCBzYXZlLCBpbnQgZGVzYykK IHN0YXRpYyBib29sIHNraXBwZWRfb25lID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzdWNjZWVkZWRf b25lID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBmYWlsZWRfb25lID0gZmFsc2U7CitzdGF0aWMgYm9v bCBkeW5hbWljX2ZhaWxlZF9vbmUgPSBmYWxzZTsKKworYm9vbCBfX2lndF9lbnRlcl9keW5hbWlj X2NvbnRhaW5lcih2b2lkKQoreworCV9pZ3RfZHluYW1pY190ZXN0c19leGVjdXRlZCA9IDA7CisJ ZHluYW1pY19mYWlsZWRfb25lID0gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KIAogc3RhdGlj IHZvaWQgZXhpdF9zdWJ0ZXN0KGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4p KTsKIHN0YXRpYyB2b2lkIGV4aXRfc3VidGVzdChjb25zdCBjaGFyICpyZXN1bHQpCiB7CiAJc3Ry dWN0IHRpbWVzcGVjIG5vdzsKKwljb25zdCBjaGFyICpzdWJ0ZXN0X3RleHQgPSBpbl9keW5hbWlj X3N1YnRlc3QgPyAiRHluYW1pYyBzdWJ0ZXN0IiA6ICJTdWJ0ZXN0IjsKKwljb25zdCBjaGFyICoq c3VidGVzdF9uYW1lID0gaW5fZHluYW1pY19zdWJ0ZXN0ID8gJmluX2R5bmFtaWNfc3VidGVzdCA6 ICZpbl9zdWJ0ZXN0OworCXN0cnVjdCB0aW1lc3BlYyAqdGhlbnRpbWUgPSBpbl9keW5hbWljX3N1 YnRlc3QgPyAmZHluYW1pY19zdWJ0ZXN0X3RpbWUgOiAmc3VidGVzdF90aW1lOworCWptcF9idWYg KmptcHRhcmdldCA9IGluX2R5bmFtaWNfc3VidGVzdCA/ICZpZ3RfZHluYW1pY19zdWJ0ZXN0X2pt cGJ1ZiA6ICZpZ3Rfc3VidGVzdF9qbXBidWY7CiAKIAlpZ3RfZ2V0dGltZSgmbm93KTsKLQlpZ3Rf aW5mbygiJXNTdWJ0ZXN0ICVzOiAlcyAoJS4zZnMpJXNcbiIsCisKKwlpZ3RfaW5mbygiJXMlcyAl czogJXMgKCUuM2ZzKSVzXG4iLAogCQkgKCFfX2lndF9wbGFpbl9vdXRwdXQpID8gIlx4MWJbMW0i IDogIiIsCi0JCSBpbl9zdWJ0ZXN0LCByZXN1bHQsIGlndF90aW1lX2VsYXBzZWQoJnN1YnRlc3Rf dGltZSwgJm5vdyksCisJCSBzdWJ0ZXN0X3RleHQsICpzdWJ0ZXN0X25hbWUsIHJlc3VsdCwKKwkJ IGlndF90aW1lX2VsYXBzZWQodGhlbnRpbWUsICZub3cpLAogCQkgKCFfX2lndF9wbGFpbl9vdXRw dXQpID8gIlx4MWJbMG0iIDogIiIpOwogCWZmbHVzaChzdGRvdXQpOwogCWlmIChzdGRlcnJfbmVl ZHNfc2VudGluZWwpCi0JCWZwcmludGYoc3RkZXJyLCAiU3VidGVzdCAlczogJXMgKCUuM2ZzKVxu IiwKLQkJCWluX3N1YnRlc3QsIHJlc3VsdCwgaWd0X3RpbWVfZWxhcHNlZCgmc3VidGVzdF90aW1l LCAmbm93KSk7CisJCWZwcmludGYoc3RkZXJyLCAiJXMgJXM6ICVzICglLjNmcylcbiIsCisJCQlz dWJ0ZXN0X3RleHQsICpzdWJ0ZXN0X25hbWUsCisJCQlyZXN1bHQsIGlndF90aW1lX2VsYXBzZWQo dGhlbnRpbWUsICZub3cpKTsKIAogCWlndF90ZXJtaW5hdGVfc3BpbnMoKTsKIAotCWluX3N1YnRl c3QgPSBOVUxMOwotCXNpZ2xvbmdqbXAoaWd0X3N1YnRlc3Rfam1wYnVmLCAxKTsKKwlpZiAoIWlu X2R5bmFtaWNfc3VidGVzdCkKKwkJX2lndF9keW5hbWljX3Rlc3RzX2V4ZWN1dGVkID0gLTE7CisK KwkvKiBEb24ndCBrZWVwIHRoZSBhYm92ZSB0ZXh0IGluIHRoZSBsb2csIHRoZSBjb250YWluZXIg d291bGQgcHJpbnQgaXQgYWdhaW4gb3RoZXJ3aXNlICovCisJaWYgKGluX2R5bmFtaWNfc3VidGVz dCkKKwkJX2lndF9sb2dfYnVmZmVyX3Jlc2V0KCk7CisKKwkqc3VidGVzdF9uYW1lID0gTlVMTDsK KworCXNpZ2xvbmdqbXAoKmptcHRhcmdldCwgMSk7CiB9CiAKIC8qKgpAQCAtMTIxMSw2ICsxMjg1 LDcgQEAgdm9pZCBpZ3Rfc2tpcChjb25zdCBjaGFyICpmLCAuLi4pCiAJfQogCiAJaWYgKGluX3N1 YnRlc3QpIHsKKwkJLyogRG9pbmcgdGhlIHNhbWUgZXZlbiBpZiBpbnNpZGUgYSBkeW5hbWljIHN1 YnRlc3QgKi8KIAkJZXhpdF9zdWJ0ZXN0KCJTS0lQIik7CiAJfSBlbHNlIGlmICh0ZXN0X3dpdGhf c3VidGVzdHMpIHsKIAkJc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRoID0gU0tJUDsKQEAgLTEyNjcs NyArMTM0MiwyMiBAQCB2b2lkIF9faWd0X3NraXBfY2hlY2soY29uc3QgY2hhciAqZmlsZSwgY29u c3QgaW50IGxpbmUsCiAgKi8KIHZvaWQgaWd0X3N1Y2Nlc3Modm9pZCkKIHsKLQlzdWNjZWVkZWRf b25lID0gdHJ1ZTsKKwlpZiAoaW5fc3VidGVzdCAmJiAhaW5fZHluYW1pY19zdWJ0ZXN0ICYmIF9p Z3RfZHluYW1pY190ZXN0c19leGVjdXRlZCA+PSAwKSB7CisJCS8qCisJCSAqIFdlJ3JlIGV4aXRp bmcgYSBkeW5hbWljIGNvbnRhaW5lciwgeWllbGQgYSByZXN1bHQKKwkJICogYWNjb3JkaW5nIHRv IHRoZSBkeW5hbWljIHRlc3RzIHRoYXQgZ290CisJCSAqIGV4ZWN1dGVkLgorCQkgKi8KKwkJaWYg KGR5bmFtaWNfZmFpbGVkX29uZSkKKwkJCWlndF9mYWlsKElHVF9FWElUX0ZBSUxVUkUpOworCisJ CWlmIChfaWd0X2R5bmFtaWNfdGVzdHNfZXhlY3V0ZWQgPT0gMCkKKwkJCWlndF9za2lwKCJObyBk eW5hbWljIHRlc3RzIGV4ZWN1dGVkLlxuIik7CisJfQorCisJaWYgKCFpbl9keW5hbWljX3N1YnRl c3QpCisJCXN1Y2NlZWRlZF9vbmUgPSB0cnVlOworCiAJaWYgKGluX3N1YnRlc3QpCiAJCWV4aXRf c3VidGVzdCgiU1VDQ0VTUyIpOwogfQpAQCAtMTI5OCwxMCArMTM4OCwxNyBAQCB2b2lkIGlndF9m YWlsKGludCBleGl0Y29kZSkKIAlpZiAoaW5fYXRleGl0X2hhbmRsZXIpCiAJCV9leGl0KElHVF9F WElUX0ZBSUxVUkUpOwogCi0JaWYgKCFmYWlsZWRfb25lKQotCQlpZ3RfZXhpdGNvZGUgPSBleGl0 Y29kZTsKKwlpZiAoaW5fZHluYW1pY19zdWJ0ZXN0KSB7CisJCWR5bmFtaWNfZmFpbGVkX29uZSA9 IHRydWU7CisJfSBlbHNlIHsKKwkJLyogRHluYW1pYyBzdWJ0ZXN0IGNvbnRhaW5lcnMgbXVzdCBu b3QgZmFpbCBleHBsaWNpdGx5ICovCisJCWFzc2VydChfaWd0X2R5bmFtaWNfdGVzdHNfZXhlY3V0 ZWQgPCAwIHx8IGR5bmFtaWNfZmFpbGVkX29uZSk7CisKKwkJaWYgKCFmYWlsZWRfb25lKQorCQkJ aWd0X2V4aXRjb2RlID0gZXhpdGNvZGU7CiAKLQlmYWlsZWRfb25lID0gdHJ1ZTsKKwkJZmFpbGVk X29uZSA9IHRydWU7CisJfQogCiAJLyogU2lsZW50IGV4aXQsIHBhcmVudCB3aWxsIGRvIHRoZSB5 ZWxsaW5nLiAqLwogCWlmICh0ZXN0X2NoaWxkKQpkaWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmgg Yi9saWIvaWd0X2NvcmUuaAppbmRleCAxNzdkMjQzMS4uMjEyODljOGUgMTAwNjQ0Ci0tLSBhL2xp Yi9pZ3RfY29yZS5oCisrKyBiL2xpYi9pZ3RfY29yZS5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgdm9p ZCBfX2lndF9maXh0dXJlX2VuZCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwogCiAv KiBzdWJ0ZXN0IGluZnJhc3RydWN0dXJlICovCiBqbXBfYnVmIGlndF9zdWJ0ZXN0X2ptcGJ1ZjsK K2ptcF9idWYgaWd0X2R5bmFtaWNfc3VidGVzdF9qbXBidWY7CiB0eXBlZGVmIGludCAoKmlndF9v cHRfaGFuZGxlcl90KShpbnQgb3B0LCBpbnQgb3B0X2luZGV4LCB2b2lkICpkYXRhKTsKICNkZWZp bmUgSUdUX09QVF9IQU5ETEVSX1NVQ0NFU1MgMAogI2RlZmluZSBJR1RfT1BUX0hBTkRMRVJfRVJS T1IgLTIKQEAgLTE3NSw2ICsxNzYsOCBAQCBpbnQgaWd0X3N1YnRlc3RfaW5pdF9wYXJzZV9vcHRz KGludCAqYXJnYywgY2hhciAqKmFyZ3YsCiAJaWd0X3N1YnRlc3RfaW5pdF9wYXJzZV9vcHRzKCZh cmdjLCBhcmd2LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAogYm9vbCBfX2lndF9y dW5fc3VidGVzdChjb25zdCBjaGFyICpzdWJ0ZXN0X25hbWUsIGNvbnN0IGNoYXIgKmZpbGUsIGNv bnN0IGludCBsaW5lKTsKK2Jvb2wgX19pZ3RfZW50ZXJfZHluYW1pY19jb250YWluZXIodm9pZCk7 Citib29sIF9faWd0X3J1bl9keW5hbWljX3N1YnRlc3QoY29uc3QgY2hhciAqZHluYW1pY19zdWJ0 ZXN0X25hbWUpOwogI2RlZmluZSBfX2lndF90b2tlbmNhdDIoeCwgeSkgeCAjIyB5CiAKIC8qKgpA QCAtMjI0LDYgKzIyNyw5MiBAQCBib29sIF9faWd0X3J1bl9zdWJ0ZXN0KGNvbnN0IGNoYXIgKnN1 YnRlc3RfbmFtZSwgY29uc3QgY2hhciAqZmlsZSwgY29uc3QgaW50IGxpbgogI2RlZmluZSBpZ3Rf c3VidGVzdF9mKGYuLi4pIFwKIAlfX2lndF9zdWJ0ZXN0X2YoaWd0X3Rva2VuY2F0KF9fdG1wY2hh ciwgX19MSU5FX18pLCBmKQogCisvKioKKyAqIGlndF9keW5hbWljX3N1YnRlc3RfY29udGFpbmVy OgorICogQG5hbWU6IG5hbWUgb2YgdGhlIHN1YnRlc3QKKyAqCisgKiBUaGlzIGlzIGEgbWFnaWMg Y29udHJvbCBmbG93IGJsb2NrIHdoaWNoIGRlbm90ZXMgYSBzdWJ0ZXN0IGNvZGUKKyAqIGJsb2Nr IHRoYXQgY29udGFpbnMgZHluYW1pYyBzdWJ0ZXN0cy4gVGhlIF9mIHZhcmlhbnQgYWNjZXB0cyBh CisgKiBwcmludGYgZm9ybWF0IHN0cmluZywgd2hpY2ggaXMgdXNlZnVsIGZvciBjb25zdHJ1Y3Rp bmcKKyAqIGNvbWJpbmF0b3JpYWwgdGVzdHMuCisgKgorICogV2l0aGluIGEgZHluYW1pYyBzdWJ0 ZXN0IGNvbnRhaW5lciwgZXhwbGljaXQgZmFpbHVyZQorICogKGUuZy4gaWd0X2Fzc2VydCkgaXMg bm90IGFsbG93ZWQsIG9ubHkgZHluYW1pYyBzdWJ0ZXN0cyB0aGVtc2VsdmVzCisgKiB3aWxsIHBy b2R1Y2UgdGVzdCByZXN1bHRzLiBpZ3Rfc2tpcCgpL2lndF9yZXF1aXJlKCkgaXMgYWxsb3dlZC4K KyAqCisgKiBUaGlzIGlzIGEgc2ltcGxlciB2ZXJzaW9uIG9mIGlndF9keW5hbWljX3N1YnRlc3Rf Y29udGFpbmVyX2YoKQorICovCisjZGVmaW5lIGlndF9keW5hbWljX3N1YnRlc3RfY29udGFpbmVy KG5hbWUpIGZvciAoOyBfX2lndF9ydW5fc3VidGVzdCgobmFtZSksIF9fRklMRV9fLCBfX0xJTkVf XykgJiYgXAorCQkJCQkJCSBfX2lndF9lbnRlcl9keW5hbWljX2NvbnRhaW5lcigpICYmIFwKKwkJ CQkJCQkgKHNpZ3NldGptcChpZ3Rfc3VidGVzdF9qbXBidWYsIDEpID09IDApOyBcCisJCQkJCQkg aWd0X3N1Y2Nlc3MoKSkKKyNkZWZpbmUgX19pZ3RfZHluYW1pY19zdWJ0ZXN0X2NvbnRhaW5lcl9m KHRtcCwgZm9ybWF0Li4uKSBcCisJZm9yIChjaGFyIHRtcCBbMjU2XTsgXAorCSAgICAgc25wcmlu dGYoIHRtcCAsIHNpemVvZiggdG1wICksIFwKKwkJICAgICAgZm9ybWF0KSwgXAorCSAgICAgICBf X2lndF9ydW5fc3VidGVzdCh0bXAsIF9fRklMRV9fLCBfX0xJTkVfXyApICYmIFwKKwkgICAgIF9f aWd0X2VudGVyX2R5bmFtaWNfY29udGFpbmVyKCkgJiYgXAorCSAgICAgKHNpZ3NldGptcChpZ3Rf c3VidGVzdF9qbXBidWYsIDEpID09IDApOyBcCisJICAgICBpZ3Rfc3VjY2VzcygpKQorCisvKioK KyAqIGlndF9keW5hbWljX3N1YnRlc3RfY29udGFpbmVyX2Y6CisgKiBALi4uOiBmb3JtYXQgc3Ry aW5nIGFuZCBvcHRpb25hbCBhcmd1bWVudHMKKyAqCisgKiBUaGlzIGlzIGEgbWFnaWMgY29udHJv bCBmbG93IGJsb2NrIHdoaWNoIGRlbm90ZXMgYSBzdWJ0ZXN0IGNvZGUKKyAqIGJsb2NrIHRoYXQg Y29udGFpbnMgZHluYW1pYyBzdWJ0ZXN0cy4gVGhlIF9mIHZhcmlhbnQgYWNjZXB0cyBhCisgKiBw cmludGYgZm9ybWF0IHN0cmluZywgd2hpY2ggaXMgdXNlZnVsIGZvciBjb25zdHJ1Y3RpbmcKKyAq IGNvbWJpbmF0b3JpYWwgdGVzdHMuCisgKgorICogV2l0aGluIGEgZHluYW1pYyBzdWJ0ZXN0IGNv bnRhaW5lciwgZXhwbGljaXQgZmFpbHVyZQorICogKGUuZy4gaWd0X2Fzc2VydCkgaXMgbm90IGFs bG93ZWQsIG9ubHkgZHluYW1pYyBzdWJ0ZXN0cyB0aGVtc2VsdmVzCisgKiB3aWxsIHByb2R1Y2Ug dGVzdCByZXN1bHRzLiBpZ3Rfc2tpcCgpL2lndF9yZXF1aXJlKCkgaXMgYWxsb3dlZC4KKyAqCisg KiBMaWtlIGlndF9keW5hbWljX3N1YnRlc3RfY29udGFpbmVyKCksIGJ1dCBhbHNvIGFjY2VwdHMg YSBwcmludGYKKyAqIGZvcm1hdCBzdHJpbmcgaW5zdGVhZCBvZiBhIHN0YXRpYyBzdHJpbmcuCisg Ki8KKyNkZWZpbmUgaWd0X2R5bmFtaWNfc3VidGVzdF9jb250YWluZXJfZihmLi4uKSBcCisJX19p Z3RfZHluYW1pY19zdWJ0ZXN0X2NvbnRhaW5lcl9mKGlndF90b2tlbmNhdChfX3RtcGNoYXIsIF9f TElORV9fKSwgZikKKworLyoqCisgKiBpZ3RfZHluYW1pY19zdWJ0ZXN0OgorICogQG5hbWU6IG5h bWUgb2YgdGhlIGR5bmFtaWMgc3VidGVzdAorICoKKyAqIFRoaXMgaXMgYSBtYWdpYyBjb250cm9s IGZsb3cgYmxvY2sgd2hpY2ggZGVub3RlcyBhIGR5bmFtaWMKKyAqIHN1YnRlc3Qtb2YtYS1zdWJ0 ZXN0IGNvZGUgYmxvY2suIFdpdGhpbiB0aGF0IGNvZGUgYmxvY2sKKyAqIGlndF9za2lwfHN1Y2Nl c3Mgd2lsbCBvbmx5IGJhaWwgb3V0IG9mIHRoZSBkeW5hbWljIHN1YnRlc3QuIFRoZSBfZgorICog dmFyaWFudCBhY2NlcHRzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcsIHdoaWNoIGlzIHVzZWZ1bCBm b3IKKyAqIGNvbnN0cnVjdGluZyBjb21iaW5hdG9yaWFsIHRlc3RzLgorICoKKyAqIFRoaXMgaXMg YSBzaW1wbGVyIHZlcnNpb24gb2YgaWd0X2R5bmFtaWNfc3VidGVzdF9mKCkKKyAqLworI2RlZmlu ZSBpZ3RfZHluYW1pY19zdWJ0ZXN0KG5hbWUpIGZvciAoOyBfX2lndF9ydW5fZHluYW1pY19zdWJ0 ZXN0KChuYW1lKSkgJiYgXAorCQkJCQkgIChzaWdzZXRqbXAoaWd0X2R5bmFtaWNfc3VidGVzdF9q bXBidWYsIDEpID09IDApOyBcCisJCQkJICBpZ3Rfc3VjY2VzcygpKQorI2RlZmluZSBfX2lndF9k eW5hbWljX3N1YnRlc3RfZih0bXAsIGZvcm1hdC4uLikgXAorCWZvciAoY2hhciB0bXAgWzI1Nl07 IFwKKwkgICAgIHNucHJpbnRmKCB0bXAgLCBzaXplb2YoIHRtcCApLCBcCisJCSAgICAgIGZvcm1h dCksIFwKKwkgICAgIF9faWd0X3J1bl9keW5hbWljX3N1YnRlc3QoIHRtcCApICYmIFwKKwkgICAg IChzaWdzZXRqbXAoaWd0X2R5bmFtaWNfc3VidGVzdF9qbXBidWYsIDEpID09IDApOyBcCisJICAg ICBpZ3Rfc3VjY2VzcygpKQorCisvKioKKyAqIGlndF9keW5hbWljX3N1YnRlc3RfZjoKKyAqIEAu Li46IGZvcm1hdCBzdHJpbmcgYW5kIG9wdGlvbmFsIGFyZ3VtZW50cworICoKKyAqIFRoaXMgaXMg YSBtYWdpYyBjb250cm9sIGZsb3cgYmxvY2sgd2hpY2ggZGVub3RlcyBhIGR5bmFtaWMKKyAqIHN1 YnRlc3Qtb2YtYS1zdWJ0ZXN0IGNvZGUgYmxvY2suIFdpdGhpbiB0aGF0IGNvZGUgYmxvY2sKKyAq IGlndF9za2lwfHN1Y2Nlc3Mgd2lsbCBvbmx5IGJhaWwgb3V0IG9mIHRoZSBkeW5hbWljIHN1YnRl c3QuIFRoZSBfZgorICogdmFyaWFudCBhY2NlcHRzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcsIHdo aWNoIGlzIHVzZWZ1bCBmb3IKKyAqIGNvbnN0cnVjdGluZyBjb21iaW5hdG9yaWFsIHRlc3RzLgor ICoKKyAqIExpa2UgaWd0X2R5bmFtaWNfc3VidGVzdCgpLCBidXQgYWxzbyBhY2NlcHRzIGEgcHJp bnRmIGZvcm1hdCBzdHJpbmcKKyAqIGluc3RlYWQgb2YgYSBzdGF0aWMgc3RyaW5nLgorICovCisj ZGVmaW5lIGlndF9keW5hbWljX3N1YnRlc3RfZihmLi4uKSBcCisJX19pZ3RfZHluYW1pY19zdWJ0 ZXN0X2YoaWd0X3Rva2VuY2F0KF9fdG1wY2hhciwgX19MSU5FX18pLCBmKQorCiBjb25zdCBjaGFy ICppZ3Rfc3VidGVzdF9uYW1lKHZvaWQpOwogYm9vbCBpZ3Rfb25seV9saXN0X3N1YnRlc3RzKHZv aWQpOwogCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dg==