From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 184F06E9F9 for ; Mon, 11 Nov 2019 22:16:56 +0000 (UTC) From: Umesh Nerlige Ramappa Date: Mon, 11 Nov 2019 14:16:54 -0800 Message-Id: <20191111221655.33172-2-umesh.nerlige.ramappa@intel.com> In-Reply-To: <20191111221655.33172-1-umesh.nerlige.ramappa@intel.com> References: <20191111221655.33172-1-umesh.nerlige.ramappa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/3] test/perf: Add test for TGL OAR unit 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: Lionel G Landwerlin , Chris Wilson , igt-dev@lists.freedesktop.org List-ID: QWRkIGEgdGVzdCB0aGF0IG1lYXN1cmVzIHdvcmsgdXNpbmcgTUktUlBDIGZvciB0aGUgc3BlY2lm aWMgY29udGV4dAp3aXRob3V0IHVzaW5nIHJlcG9ydHMgZnJvbSB0aGUgT0EgYnVmZmVyLgoKVGln ZXJsYWtlIGludHJvZHVjZXMgYW4gT0EgdW5pdCB0aGF0IG1lYXN1cmVzIHdvcmsgc3BlY2lmaWMg dG8gcmVuZGVyCndvcmtsb2Fkcy4gVGhpcyBtZWFucyB3ZSBkbyBub3QgaGF2ZSB0byByZWx5IG9u IHJlcG9ydHMgZnJvbSB0aGUgT0EKYnVmZmVyIHRvIG5vcm1hbGl6ZSB0aGUgcmVwb3J0cyBvYnRh aW5lZCBmcm9tIE1JIFJFUE9SVCBQRVJGIENPVU5UCmFueW1vcmUuCgpTaWduZWQtb2ZmLWJ5OiBV bWVzaCBOZXJsaWdlIFJhbWFwcGEgPHVtZXNoLm5lcmxpZ2UucmFtYXBwYUBpbnRlbC5jb20+Ci0t LQogdGVzdHMvcGVyZi5jIHwgMzUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM1MyBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEvdGVzdHMvcGVyZi5jIGIvdGVzdHMvcGVyZi5jCmluZGV4IDJiNmJlMTM0Li5iNDM5 ZTViZCAxMDA2NDQKLS0tIGEvdGVzdHMvcGVyZi5jCisrKyBiL3Rlc3RzL3BlcmYuYwpAQCAtMjEw LDYgKzIxMCwxOSBAQCBzdGF0aWMgdWludDMyX3QgKCpyZWFkX3JlcG9ydF90aWNrcykodWludDMy X3QgKnJlcG9ydCwKIHN0YXRpYyB2b2lkICgqc2FuaXR5X2NoZWNrX3JlcG9ydHMpKHVpbnQzMl90 ICpvYV9yZXBvcnQwLCB1aW50MzJfdCAqb2FfcmVwb3J0MSwKIAkJCQkgICAgZW51bSBkcm1faTkx NV9vYV9mb3JtYXQgZm9ybWF0KTsKIAorc3RhdGljIHZvaWQKK2R1bXBfcmVwb3J0KGNvbnN0IHVp bnQzMl90ICpyZXBvcnQsIHVpbnQzMl90IHNpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpIHsKKwl1 aW50MzJfdCBpOworCWlndF9kZWJ1ZygiJXNcbiIsIG1lc3NhZ2UpOworCWZvciAoaSA9IDA7IGkg PCBzaXplOyBpICs9IDQpIHsKKwkJaWd0X2RlYnVnKCIlMDh4ICUwOHggJTA4eCAlMDh4XG4iLAor CQkJCXJlcG9ydFtpXSwKKwkJCQlyZXBvcnRbaSArIDFdLAorCQkJCXJlcG9ydFtpICsgMl0sCisJ CQkJcmVwb3J0W2kgKyAzXSk7CisJfQorfQorCiBzdGF0aWMgc3RydWN0IG9hX2Zvcm1hdAogZ2V0 X29hX2Zvcm1hdChlbnVtIGRybV9pOTE1X29hX2Zvcm1hdCBmb3JtYXQpCiB7CkBAIC04NzQsNiAr ODg3LDcgQEAgaW5pdF9zeXNfaW5mbyh2b2lkKQogCWlndF9hc3NlcnRfbmVxKGRldmlkLCAwKTsK IAogCXRpbWVzdGFtcF9mcmVxdWVuY3kgPSBnZXRfY3NfdGltZXN0YW1wX2ZyZXF1ZW5jeSgpOwor CWlndF9kZWJ1ZygidGltZXN0YW1wX2ZyZXF1ZW5jeSA9ICVsdVxuIiwgdGltZXN0YW1wX2ZyZXF1 ZW5jeSk7CiAJaWd0X2Fzc2VydF9uZXEodGltZXN0YW1wX2ZyZXF1ZW5jeSwgMCk7CiAKIAlpZiAo SVNfSEFTV0VMTChkZXZpZCkpIHsKQEAgLTEyODksNiArMTMwMyw3IEBAIHJlYWRfMl9vYV9yZXBv cnRzKGludCBmb3JtYXRfaWQsCiAJCQlpZ3RfYXNzZXJ0X2VxKGhlYWRlci0+c2l6ZSwgc2FtcGxl X3NpemUpOwogCiAJCQlyZXBvcnQgPSAoY29uc3Qgdm9pZCAqKShoZWFkZXIgKyAxKTsKKwkJCWR1 bXBfcmVwb3J0KHJlcG9ydCwgNjQsICJvYS1mb3JtYXRzIik7CiAKIAkJCWlndF9kZWJ1ZygicmVh ZCByZXBvcnQ6IHJlYXNvbiA9ICV4LCB0aW1lc3RhbXAgPSAleCwgZXhwb25lbnQgbWFzaz0leFxu IiwKIAkJCQkgIHJlcG9ydFswXSwgcmVwb3J0WzFdLCBleHBvbmVudF9tYXNrKTsKQEAgLTI4NTYs NiArMjg3MSw3IEBAIHRlc3RfbWlfcnBjKHZvaWQpCiAJaWd0X2Fzc2VydF9lcShyZXQsIDApOwog CiAJcmVwb3J0MzIgPSBiby0+dmlydHVhbDsKKwlkdW1wX3JlcG9ydChyZXBvcnQzMiwgNjQsICJt aS1ycGMiKTsKIAlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDMyWzBdLCAweGRlYWRiZWVmKTsgLyogcmVw b3J0IElEICovCiAJaWd0X2Fzc2VydF9uZXEocmVwb3J0MzJbMV0sIDApOyAvKiB0aW1lc3RhbXAg Ki8KIApAQCAtMzMzNSwxMSArMzM1MSwxMyBAQCBnZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJf dGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKIAkJCXByZXYgPSByZXBvcnQwXzMyOwogCQkJ Y3R4X2lkID0gcHJldlsyXTsKIAkJCWlndF9kZWJ1ZygiTUlfUlBDKHN0YXJ0KSBDVFggSUQ6ICV1 XG4iLCBjdHhfaWQpOworCQkJZHVtcF9yZXBvcnQocmVwb3J0MF8zMiwgNjQsICJyZXBvcnQwXzMy Iik7CiAKIAkJCXJlcG9ydDFfMzIgPSByZXBvcnQwXzMyICsgNjQ7IC8qIDY0IHVpbnQzMl90ID0g MjU2Ynl0ZXMgb2Zmc2V0ICovCiAJCQlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDFfMzJbMF0sIDB4YmVl ZmJlZWYpOyAvKiByZXBvcnQgSUQgKi8KIAkJCWlndF9hc3NlcnRfbmVxKHJlcG9ydDFfMzJbMV0s IDApOyAvKiB0aW1lc3RhbXAgKi8KIAkJCWN0eDFfaWQgPSByZXBvcnQxXzMyWzJdOworCQkJZHVt cF9yZXBvcnQocmVwb3J0MV8zMiwgNjQsICJyZXBvcnQxXzMyIik7CiAKIAkJCW1lbXNldChhY2N1 bXVsYXRvci5kZWx0YXMsIDAsIHNpemVvZihhY2N1bXVsYXRvci5kZWx0YXMpKTsKIAkJCWFjY3Vt dWxhdGVfcmVwb3J0cygmYWNjdW11bGF0b3IsIHJlcG9ydDBfMzIsIHJlcG9ydDFfMzIpOwpAQCAt MzQzNCw2ICszNDUyLDcgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0 ZXNfYV9jb3VudGVyKHZvaWQpCiAJCQkJaWd0X2Fzc2VydF9lcShoZWFkZXItPnNpemUsIHNhbXBs ZV9zaXplKTsKIAogCQkJCXJlcG9ydCA9ICh2b2lkICopKGhlYWRlciArIDEpOworCQkJCWR1bXBf cmVwb3J0KHJlcG9ydCwgNjQsICJPQSByZXBvcnQiKTsKIAogCQkJCS8qIERvbid0IGV4cGVjdCB6 ZXJvIGZvciB0aW1lc3RhbXBzICovCiAJCQkJaWd0X2Fzc2VydF9uZXEocmVwb3J0WzFdLCAwKTsK QEAgLTM1ODEsNiArMzYwMCwzMzUgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3Rhcmdl dF93cml0ZXNfYV9jb3VudGVyKHZvaWQpCiAJfSB3aGlsZSAoV0VYSVRTVEFUVVMoY2hpbGRfcmV0 KSA9PSBFQUdBSU4pOwogfQogCitzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcihz dHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtICpwYXJhbSkKK3sKKwl1aW50NjRfdCAqY3R4 X2lkX3B0cjsKKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJZHJtX2ludGVsX2NvbnRleHQg KmNvbnRleHQwLCAqY29udGV4dDE7CisJc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsK KwlzdHJ1Y3QgaWd0X2J1ZiBzcmNbM10sIGRzdFszXTsKKwlkcm1faW50ZWxfYm8gKmJvOworCXVp bnQzMl90ICpyZXBvcnQwXzMyLCAqcmVwb3J0MV8zMiwgKnJlcG9ydDJfMzIsICpyZXBvcnQzXzMy OworCXVpbnQ2NF90IHRpbWVzdGFtcDBfNjQsIHRpbWVzdGFtcDFfNjQ7CisJdWludDMyX3QgZGVs dGFfdHM2NCwgZGVsdGFfb2EzMjsKKwl1aW50NjRfdCBkZWx0YV90czY0X25zLCBkZWx0YV9vYTMy X25zOworCXVpbnQzMl90IGRlbHRhX2RlbHRhOworCWludCB3aWR0aCA9IDgwMDsKKwlpbnQgaGVp Z2h0ID0gNjAwOworI2RlZmluZSBJTlZBTElEX0NUWF9JRCAweGZmZmZmZmZmCisJdWludDMyX3Qg Y3R4MF9pZCA9IElOVkFMSURfQ1RYX0lEOworCXVpbnQzMl90IGN0eDFfaWQgPSBJTlZBTElEX0NU WF9JRDsKKwlpbnQgcmV0OworCXN0cnVjdCBhY2N1bXVsYXRvciBhY2N1bXVsYXRvciA9IHsKKwkJ LmZvcm1hdCA9IHRlc3Rfb2FfZm9ybWF0CisJfTsKKworCWJ1Zm1nciA9IGRybV9pbnRlbF9idWZt Z3JfZ2VtX2luaXQoZHJtX2ZkLCA0MDk2KTsKKwlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVf cmV1c2UoYnVmbWdyKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShzcmMpOyBp KyspIHsKKwkJc2NyYXRjaF9idWZfaW5pdChidWZtZ3IsICZzcmNbaV0sIHdpZHRoLCBoZWlnaHQs IDB4ZmYwMDAwZmYpOworCQlzY3JhdGNoX2J1Zl9pbml0KGJ1Zm1nciwgJmRzdFtpXSwgd2lkdGgs IGhlaWdodCwgMHgwMGZmMDBmZik7CisJfQorCisJYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9h bGxvYyhidWZtZ3IsIGRldmlkKTsKKworCWNvbnRleHQwID0gZHJtX2ludGVsX2dlbV9jb250ZXh0 X2NyZWF0ZShidWZtZ3IpOworCWlndF9hc3NlcnQoY29udGV4dDApOworCisJY29udGV4dDEgPSBk cm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGJ1Zm1ncik7CisJaWd0X2Fzc2VydChjb250ZXh0 MSk7CisKKwlpZ3RfZGVidWcoInN1Ym1pdHRpbmcgd2FybSB1cCByZW5kZXJfY29weVxuIik7CisK KwkvKiBTdWJtaXQgc29tZSBlYXJseSwgdW5tZWFzdXJlZCwgd29yayB0byB0aGUgY29udGV4dCB3 ZSB3YW50CisJICogdG8gbWVhc3VyZSB0byB0cnkgYW5kIGNhdGNoIGlzc3VlcyB3aXRoIGk5MTUt cGVyZgorCSAqIGluaXRpYWxpemluZyB0aGUgSFcgY29udGV4dCBJRCBmb3IgZmlsdGVyaW5nLgor CSAqCisJICogV2UgZG8gdGhpcyBiZWNhdXNlIGk5MTUtcGVyZiBzaW5nbGUgY29udGV4dCBmaWx0 ZXJpbmcgaGFkCisJICogcHJldmlvdXNseSBvbmx5IHJlbGllZCBvbiBhIGhvb2sgaW50byBjb250 ZXh0IHBpbm5pbmcgdG8KKwkgKiBpbml0aWFsaXplIHRoZSBIVyBjb250ZXh0IElELCBpbnN0ZWFk IG9mIGFsc28gdHJ5aW5nIHRvCisJICogZGV0ZXJtaW5lIHRoZSBIVyBJRCB3aGlsZSBvcGVuaW5n IHRoZSBzdHJlYW0sIGluIGNhc2UgaXQKKwkgKiBoYXMgYWxyZWFkeSBiZWVuIHBpbm5lZC4KKwkg KgorCSAqIFRoaXMgd2Fzbid0IG5vdGljZWQgYnkgdGhlIHByZXZpb3VzIHVuaXQgdGVzdCBiZWNh dXNlIHdlCisJICogd2VyZSBvcGVuaW5nIHRoZSBzdHJlYW0gd2hpbGUgdGhlIGNvbnRleHQgaGFk bid0IGJlZW4KKwkgKiB0b3VjaGVkIG9yIHBpbm5lZCB5ZXQgYW5kIHNvIGl0IHdvcmtlZCBvdXQg Y29ycmVjdGx5IHRvIHdhaXQKKwkgKiBmb3IgdGhlIHBpbm5pbmcgaG9vay4KKwkgKgorCSAqIE5v dyBhIGJ1Z2d5IHZlcnNpb24gb2YgaTkxNS1wZXJmIHdpbGwgZmFpbCB0byBtZWFzdXJlCisJICog YW55dGhpbmcgZm9yIGNvbnRleHQwIG9uY2UgdGhpcyBpbml0aWFsIHJlbmRlcl9jb3B5KCkgZW5k cworCSAqIHVwIHBpbm5pbmcgdGhlIGNvbnRleHQgc2luY2UgdGhlcmUgd29uJ3QgZXZlciBiZSBh IHBpbm5pbmcKKwkgKiBob29rIGNhbGxiYWNrLgorCSAqLworCXJlbmRlcl9jb3B5KGJhdGNoLCBj b250ZXh0MCwKKwkJICAgICZzcmNbMF0sIDAsIDAsIHdpZHRoLCBoZWlnaHQsCisJCSAgICAmZHN0 WzBdLCAwLCAwKTsKKworCS8qIEluaXRpYWxpemUgdGhlIGNvbnRleHQgcGFyYW1ldGVyIHRvIHRo ZSBwZXJmIG9wZW4gaW9jdGwgaGVyZSAqLworCXJldCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9n ZXRfaWQoY29udGV4dDAsICZjdHgwX2lkKTsKKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJaWd0 X2Fzc2VydF9uZXEoY3R4MF9pZCwgMHhmZmZmZmZmZik7CisJY3R4X2lkX3B0ciA9ICh1aW50NjRf dCAqKSBmcm9tX3VzZXJfcG9pbnRlcihwYXJhbS0+cHJvcGVydGllc19wdHIpOworCWN0eF9pZF9w dHJbMV0gPSBjdHgwX2lkOworCisJaWd0X2RlYnVnKCJvcGVuaW5nIGk5MTUtcGVyZiBzdHJlYW1c biIpOworCXN0cmVhbV9mZCA9IF9fcGVyZl9vcGVuKGRybV9mZCwgcGFyYW0sIGZhbHNlKTsKKwor CWJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgIm1pX3JwYyBkZXN0IGJvIiwgNDA5Niwg NjQpOworCisJLyogU2V0IHdyaXRlIGRvbWFpbiB0byBjcHUgYnJpZWZseSB0byBmaWxsIHRoZSBi dWZmZXIgd2l0aCA4MHMgKi8KKwlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGJvLCB0cnVlKTsKKwlp Z3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJbWVtc2V0KGJvLT52aXJ0dWFsLCAweDgwLCAyMDQ4KTsK KwltZW1zZXQoYm8tPnZpcnR1YWwgKyAyMDQ4LCAwLCAyMDQ4KTsKKwlkcm1faW50ZWxfYm9fdW5t YXAoYm8pOworCisJLyogU3VibWl0IGFuIG1pLXJwYyB0byBjb250ZXh0MCBiZWZvcmUgbWVhc3Vy YWJsZSB3b3JrICovCisjZGVmaW5lIEJPX1RJTUVTVEFNUF9PRkZTRVQwIDEwMjQKKyNkZWZpbmUg Qk9fUkVQT1JUX09GRlNFVDAgMAorI2RlZmluZSBCT19SRVBPUlRfSUQwIDB4ZGVhZGJlZWYKKwll bWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAorCQkJCSAgICAgYm8sCisJCQkJICAg ICBCT19USU1FU1RBTVBfT0ZGU0VUMCwKKwkJCQkgICAgIEJPX1JFUE9SVF9PRkZTRVQwLAorCQkJ CSAgICAgQk9fUkVQT1JUX0lEMCk7CisJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250 ZXh0KGJhdGNoLCBjb250ZXh0MCk7CisKKwkvKiBUaGlzIGlzIHRoZSB3b3JrL2NvbnRleHQgdGhh dCBpcyBtZWFzdXJlZCBmb3IgY291bnRlciBpbmNyZW1lbnRzICovCisJcmVuZGVyX2NvcHkoYmF0 Y2gsIGNvbnRleHQwLAorCQkgICAgJnNyY1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKKwkJICAg ICZkc3RbMF0sIDAsIDApOworCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChi YXRjaCwgY29udGV4dDApOworCisJLyogU3VibWl0IGFuIG1pLXJwYyB0byBjb250ZXh0MSBiZWZv cmUgd29yaworCSAqCisJICogT24gZ2VuMTIsIHRoaXMgbWVhc3VyZW1lbnQgc2hvdWxkIGp1c3Qg eWllbGQgY291bnRlcnMgdGhhdCBhcmUKKwkgKiBhbGwgemVyb2VzLCBzaW5jZSB0aGUgY291bnRl cnMgd2lsbCBvbmx5IGluY3JlbWVudCBmb3IgdGhlCisJICogY29udGV4dCBwYXNzZWQgdG8gcGVy ZiBvcGVuIGlvY3RsCisJICovCisjZGVmaW5lIEJPX1RJTUVTVEFNUF9PRkZTRVQyIDEwNDAKKyNk ZWZpbmUgQk9fUkVQT1JUX09GRlNFVDIgNTEyCisjZGVmaW5lIEJPX1JFUE9SVF9JRDIgMHgwMGMw ZmZlZQorCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoYmF0Y2gsCisJCQkJICAgICBibywK KwkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZTRVQyLAorCQkJCSAgICAgQk9fUkVQT1JUX09GRlNF VDIsCisJCQkJICAgICBCT19SRVBPUlRfSUQyKTsKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93 aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQxKTsKKworCS8qIFN1Ym1pdCB0d28gY29waWVzIG9u IHRoZSBvdGhlciBjb250ZXh0IHRvIGF2b2lkIGEgZmFsc2UKKwkgKiBwb3NpdGl2ZSBpbiBjYXNl IHRoZSBkcml2ZXIgc29tZWhvdyBlbmRlZCB1cCBmaWx0ZXJpbmcgZm9yCisJICogY29udGV4dDEK KwkgKi8KKwlyZW5kZXJfY29weShiYXRjaCwgY29udGV4dDEsCisJCSAgICAmc3JjWzFdLCAwLCAw LCB3aWR0aCwgaGVpZ2h0LAorCQkgICAgJmRzdFsxXSwgMCwgMCk7CisJcmV0ID0gZHJtX2ludGVs X2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MSwgJmN0eDFfaWQpOworCWlndF9hc3NlcnRfZXEo cmV0LCAwKTsKKwlpZ3RfYXNzZXJ0X25lcShjdHgxX2lkLCAweGZmZmZmZmZmKTsKKworCXJlbmRl cl9jb3B5KGJhdGNoLCBjb250ZXh0MSwKKwkJICAgICZzcmNbMl0sIDAsIDAsIHdpZHRoLCBoZWln aHQsCisJCSAgICAmZHN0WzJdLCAwLCAwKTsKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRo X2NvbnRleHQoYmF0Y2gsIGNvbnRleHQxKTsKKworCS8qIFN1Ym1pdCBhbiBtaS1ycGMgdG8gY29u dGV4dDEgYWZ0ZXIgYWxsIHdvcmsgKi8KKyNkZWZpbmUgQk9fVElNRVNUQU1QX09GRlNFVDMgMTA0 OAorI2RlZmluZSBCT19SRVBPUlRfT0ZGU0VUMyA3NjgKKyNkZWZpbmUgQk9fUkVQT1JUX0lEMyAw eDAxYzBmZmVlCisJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKKwkJCQkgICAg IGJvLAorCQkJCSAgICAgQk9fVElNRVNUQU1QX09GRlNFVDMsCisJCQkJICAgICBCT19SRVBPUlRf T0ZGU0VUMywKKwkJCQkgICAgIEJPX1JFUE9SVF9JRDMpOworCWludGVsX2JhdGNoYnVmZmVyX2Zs dXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDEpOworCisJLyogU3VibWl0IGFuIG1pLXJw YyB0byBjb250ZXh0MCBhZnRlciBhbGwgbWVhc3VyYWJsZSB3b3JrICovCisjZGVmaW5lIEJPX1RJ TUVTVEFNUF9PRkZTRVQxIDEwMzIKKyNkZWZpbmUgQk9fUkVQT1JUX09GRlNFVDEgMjU2CisjZGVm aW5lIEJPX1JFUE9SVF9JRDEgMHhiZWVmYmVlZgorCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9y cGMoYmF0Y2gsCisJCQkJICAgICBibywKKwkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZTRVQxLAor CQkJCSAgICAgQk9fUkVQT1JUX09GRlNFVDEsCisJCQkJICAgICBCT19SRVBPUlRfSUQxKTsKKwlp bnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQwKTsKKwor CS8qIFNldCB3cml0ZSBkb21haW4gdG8gbm9uZSAqLworCXJldCA9IGRybV9pbnRlbF9ib19tYXAo Ym8sIGZhbHNlKTsKKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisKKwkvKiBTYW5pdHkgY2hlY2sg cmVwb3J0cworCSAqIHJlcG9ydFhfMzJbMF06IHJlcG9ydCBpZCBwYXNzZWQgd2l0aCBtaS1ycGMK KwkgKiByZXBvcnRYXzMyWzFdOiB0aW1lc3RhbXAKKwkgKiByZXBvcnRYXzMyWzJdOiBjb250ZXh0 IGlkCisJICoKKwkgKiByZXBvcnQwXzMyOiBzdGFydCBvZiBtZWFzdXJhYmxlIHdvcmsKKwkgKiBy ZXBvcnQxXzMyOiBlbmQgb2YgbWVhc3VyYWJsZSB3b3JrCisJICogcmVwb3J0Ml8zMjogc3RhcnQg b2Ygb3RoZXIgd29yaworCSAqIHJlcG9ydDNfMzI6IGVuZCBvZiBvdGhlciB3b3JrCisJICovCisJ cmVwb3J0MF8zMiA9IGJvLT52aXJ0dWFsOworCWlndF9hc3NlcnRfZXEocmVwb3J0MF8zMlswXSwg MHhkZWFkYmVlZik7CisJaWd0X2Fzc2VydF9uZXEocmVwb3J0MF8zMlsxXSwgMCk7CisJY3R4MF9p ZCA9IHJlcG9ydDBfMzJbMl07CisJaWd0X2RlYnVnKCJNSV9SUEMoc3RhcnQpIENUWCBJRDogJXVc biIsIGN0eDBfaWQpOworCWR1bXBfcmVwb3J0KHJlcG9ydDBfMzIsIDY0LCAicmVwb3J0MF8zMiIp OworCisJcmVwb3J0MV8zMiA9IHJlcG9ydDBfMzIgKyA2NDsKKwlpZ3RfYXNzZXJ0X2VxKHJlcG9y dDFfMzJbMF0sIDB4YmVlZmJlZWYpOworCWlndF9hc3NlcnRfbmVxKHJlcG9ydDFfMzJbMV0sIDAp OworCWN0eDFfaWQgPSByZXBvcnQxXzMyWzJdOworCWR1bXBfcmVwb3J0KHJlcG9ydDFfMzIsIDY0 LCAicmVwb3J0MV8zMiIpOworCisJLyogVmVyaWZ5IHRoYXQgY291bnRlcnMgaW4gY29udGV4dDEg YXJlIGFsbCB6ZXJvZXMgKi8KKwlyZXBvcnQyXzMyID0gcmVwb3J0MF8zMiArIDEyODsKKwlpZ3Rf YXNzZXJ0X2VxKHJlcG9ydDJfMzJbMF0sIDB4MDBjMGZmZWUpOworCWlndF9hc3NlcnRfbmVxKHJl cG9ydDJfMzJbMV0sIDApOworCWR1bXBfcmVwb3J0KHJlcG9ydDJfMzIsIDY0LCAicmVwb3J0Ml8z MiIpOworCWlndF9hc3NlcnRfZXEoMCwgbWVtY21wKCZyZXBvcnQyXzMyWzRdLAorCQkJCWJvLT52 aXJ0dWFsICsgMjA0OCwKKwkJCQkyNDApKTsKKworCXJlcG9ydDNfMzIgPSByZXBvcnQwXzMyICsg MTkyOworCWlndF9hc3NlcnRfZXEocmVwb3J0M18zMlswXSwgMHgwMWMwZmZlZSk7CisJaWd0X2Fz c2VydF9uZXEocmVwb3J0M18zMlsxXSwgMCk7CisJZHVtcF9yZXBvcnQocmVwb3J0M18zMiwgNjQs ICJyZXBvcnQzXzMyIik7CisJaWd0X2Fzc2VydF9lcSgwLCBtZW1jbXAoJnJlcG9ydDNfMzJbNF0s CisJCQkJYm8tPnZpcnR1YWwgKyAyMDQ4LAorCQkJCTI0MCkpOworCisJLyogQWNjdW11bGF0ZSBk ZWx0YXMgZm9yIGNvdW50ZXJzIC0gQTAsIEEyMSBhbmQgQTI2ICovCisJbWVtc2V0KGFjY3VtdWxh dG9yLmRlbHRhcywgMCwgc2l6ZW9mKGFjY3VtdWxhdG9yLmRlbHRhcykpOworCWFjY3VtdWxhdGVf cmVwb3J0cygmYWNjdW11bGF0b3IsIHJlcG9ydDBfMzIsIHJlcG9ydDFfMzIpOworCWlndF9kZWJ1 ZygidG90YWw6IEEwID0gJSJQUkl1NjQiLCBBMjEgPSAlIlBSSXU2NCIsIEEyNiA9ICUiUFJJdTY0 IlxuIiwKKwkJCWFjY3VtdWxhdG9yLmRlbHRhc1syICsgMF0sCisJCQlhY2N1bXVsYXRvci5kZWx0 YXNbMiArIDIxXSwKKwkJCWFjY3VtdWxhdG9yLmRlbHRhc1syICsgMjZdKTsKKworCWlndF9kZWJ1 Zygib2FfdGltZXN0YW1wMzIgMCA9ICV1XG4iLCByZXBvcnQwXzMyWzFdKTsKKwlpZ3RfZGVidWco Im9hX3RpbWVzdGFtcDMyIDEgPSAldVxuIiwgcmVwb3J0MV8zMlsxXSk7CisJaWd0X2RlYnVnKCJj dHhfaWQgMCA9ICV1XG4iLCByZXBvcnQwXzMyWzJdKTsKKwlpZ3RfZGVidWcoImN0eF9pZCAxID0g JXVcbiIsIHJlcG9ydDFfMzJbMl0pOworCisJLyogVGhlIGRlbHRhIGFzIGNhbGN1bGF0ZWQgdmlh IHRoZSBQSVBFX0NPTlRST0wgdGltZXN0YW1wIG9yCisJICogdGhlIE9BIHJlcG9ydCB0aW1lc3Rh bXBzIHNob3VsZCBiZSBhbG1vc3QgaWRlbnRpY2FsIGJ1dAorCSAqIGFsbG93IGEgNTAwIG5hbm9z ZWNvbmRzIG1hcmdpbi4KKwkgKi8KKwl0aW1lc3RhbXAwXzY0ID0gKih1aW50NjRfdCAqKSgoKHVp bnQ4X3QgKiliby0+dmlydHVhbCkgKyBCT19USU1FU1RBTVBfT0ZGU0VUMCk7CisJdGltZXN0YW1w MV82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90ICopYm8tPnZpcnR1YWwpICsgQk9fVElNRVNU QU1QX09GRlNFVDEpOworCisJaWd0X2RlYnVnKCJ0c190aW1lc3RhbXA2NCAwID0gJSJQUkl1NjQi XG4iLCB0aW1lc3RhbXAwXzY0KTsKKwlpZ3RfZGVidWcoInRzX3RpbWVzdGFtcDY0IDEgPSAlIlBS SXU2NCJcbiIsIHRpbWVzdGFtcDFfNjQpOworCisJZGVsdGFfdHM2NCA9IHRpbWVzdGFtcDFfNjQg LSB0aW1lc3RhbXAwXzY0OworCWRlbHRhX29hMzIgPSByZXBvcnQxXzMyWzFdIC0gcmVwb3J0MF8z MlsxXTsKKworCS8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGNhbiBwYXNzIHRoZSBkZWx0YSB0byB0 aW1lYmFzZV9zY2FsZSAqLworCWlndF9hc3NlcnQoZGVsdGFfdHM2NCA8IFVJTlQzMl9NQVgpOwor CWRlbHRhX29hMzJfbnMgPSB0aW1lYmFzZV9zY2FsZShkZWx0YV9vYTMyKTsKKwlkZWx0YV90czY0 X25zID0gdGltZWJhc2Vfc2NhbGUoZGVsdGFfdHM2NCk7CisKKwlpZ3RfZGVidWcoIm9hMzIgZGVs dGEgPSAldSwgPSAldW5zXG4iLAorCQkJZGVsdGFfb2EzMiwgKHVuc2lnbmVkKWRlbHRhX29hMzJf bnMpOworCWlndF9kZWJ1ZygidHM2NCBkZWx0YSA9ICV1LCA9ICV1bnNcbiIsCisJCQlkZWx0YV90 czY0LCAodW5zaWduZWQpZGVsdGFfdHM2NF9ucyk7CisKKwlkZWx0YV9kZWx0YSA9IGRlbHRhX3Rz NjRfbnMgPiBkZWx0YV9vYTMyX25zID8KKwkJICAgICAgKGRlbHRhX3RzNjRfbnMgLSBkZWx0YV9v YTMyX25zKSA6CisJCSAgICAgIChkZWx0YV9vYTMyX25zIC0gZGVsdGFfdHM2NF9ucyk7CisJaWYg KGRlbHRhX2RlbHRhID4gNTAwKSB7CisJCWlndF9kZWJ1ZygiZGVsdGFfZGVsdGEgZXhjZWVkcyBt YXJnaW4sIHNraXBwaW5nLi5cbiIpOworCQlleGl0KEVBR0FJTik7CisJfQorCisJaWd0X2RlYnVn KCJuIHNhbXBsZXMgd3JpdHRlbiA9ICUiUFJJdTY0Ii8lIlBSSXU2NCIgKCVpeCVpKVxuIiwKKwkJ ICBhY2N1bXVsYXRvci5kZWx0YXNbMiArIDIxXSwKKwkJICBhY2N1bXVsYXRvci5kZWx0YXNbMiAr IDI2XSwKKwkJICB3aWR0aCwgaGVpZ2h0KTsKKwlhY2N1bXVsYXRvcl9wcmludCgmYWNjdW11bGF0 b3IsICJmaWx0ZXJlZCIpOworCisJLyogVmVyaWZ5IHRoYXQgdGhlIHdvcmsgYWN0dWFsbHkgaGFw cGVuZWQgYnkgY29tcGFyaW5nIHRoZSBzcmMKKwkgKiBhbmQgZHN0IGJ1ZmZlcnMKKwkgKi8KKwly ZXQgPSBkcm1faW50ZWxfYm9fbWFwKHNyY1swXS5ibywgZmFsc2UpOworCWlndF9hc3NlcnRfZXEo cmV0LCAwKTsKKwlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGRzdFswXS5ibywgZmFsc2UpOworCWln dF9hc3NlcnRfZXEocmV0LCAwKTsKKworCXJldCA9IG1lbWNtcChzcmNbMF0uYm8tPnZpcnR1YWws IGRzdFswXS5iby0+dmlydHVhbCwgNCAqIHdpZHRoICogaGVpZ2h0KTsKKwlpZiAocmV0ICE9IDAp IHsKKwkJYWNjdW11bGF0b3JfcHJpbnQoJmFjY3VtdWxhdG9yLCAidG90YWwiKTsKKwkJZXhpdChF QUdBSU4pOworCX0KKworCWRybV9pbnRlbF9ib191bm1hcChzcmNbMF0uYm8pOworCWRybV9pbnRl bF9ib191bm1hcChkc3RbMF0uYm8pOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIHRlc3QgcGFzc2Vk LiBUaGUgdGVzdCBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIDJ4MgorCSAqIHNhbXBsZXMgd3JpdHRl biB0byB0aGUgcmVuZGVyIHRhcmdldCB1c2luZyB0aGUgY291bnRlciBBMjYuIEZvcgorCSAqIE9B UiwgdGhpcyBjb3VudGVyIHdpbGwgb25seSBoYXZlIGluY3JlbWVudHMgcmVsZXZhbnQgdG8gdGhp cyBzcGVjaWZpYworCSAqIGNvbnRleHQuIFRoZSB2YWx1ZSBlcXVhbHMgdGhlIHdpZHRoICogaGVp Z2h0IG9mIHRoZSByZW5kZXJlZCB3b3JrLgorCSAqLworCWlndF9hc3NlcnRfZXEoYWNjdW11bGF0 b3IuZGVsdGFzWzIgKyAyNl0sIHdpZHRoICogaGVpZ2h0KTsKKworCS8qIENsZWFuIHVwICovCisJ Zm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykgeworCQlkcm1faW50ZWxf Ym9fdW5yZWZlcmVuY2Uoc3JjW2ldLmJvKTsKKwkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGRz dFtpXS5ibyk7CisJfQorCisJZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKKwlkcm1faW50ZWxfYm9f dW5yZWZlcmVuY2UoYm8pOworCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOworCWRybV9p bnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQwKTsKKwlkcm1faW50ZWxfZ2VtX2NvbnRl eHRfZGVzdHJveShjb250ZXh0MSk7CisJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7 CisJX19wZXJmX2Nsb3NlKHN0cmVhbV9mZCk7Cit9CisKK3N0YXRpYyB2b2lkCitnZW4xMl90ZXN0 X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0ZXNfYV9jb3VudGVyKHZvaWQpCit7CisJdWlu dDY0X3QgcHJvcGVydGllc1tdID0geworCQkvKiBIYXZlIGEgcmFuZG9tIHZhbHVlIGhlcmUgZm9y IHRoZSBjb250ZXh0IGlkLCBidXQgaW5pdGlhbGl6ZQorCQkgKiBpdCBvbmNlIHlvdSBmaWd1cmUg b3V0IHRoZSBjb250ZXh0IElEIGZvciB0aGUgd29yayB0byBiZQorCQkgKiBtZWFzdXJlZAorCQkg Ki8KKwkJRFJNX0k5MTVfUEVSRl9QUk9QX0NUWF9IQU5ETEUsIFVJTlQ2NF9NQVgsCisKKwkJLyog T0EgdW5pdCBjb25maWd1cmF0aW9uOgorCQkgKiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX09B IGlzIG5vIGxvbmdlciByZXF1aXJlZCBmb3IgR2VuMTIKKwkJICogYmVjYXVzZSB0aGUgT0FSIHVu aXQgaW5jcmVtZW50cyBjb3VudGVycyBvbmx5IGZvciB0aGUKKwkJICogcmVsZXZhbnQgY29udGV4 dC4gTm8gb3RoZXIgcGFyYW1ldGVycyBhcmUgbmVlZGVkIHNpbmNlIHdlIGRvCisJCSAqIG5vdCBy ZWx5IG9uIHRoZSBPQSBidWZmZXIgYW55bW9yZSB0byBub3JtYWxpemUgdGhlIGNvdW50ZXIKKwkJ ICogdmFsdWVzLgorCQkgKi8KKwkJRFJNX0k5MTVfUEVSRl9QUk9QX09BX01FVFJJQ1NfU0VULCB0 ZXN0X21ldHJpY19zZXRfaWQsCisJCURSTV9JOTE1X1BFUkZfUFJPUF9PQV9GT1JNQVQsIHRlc3Rf b2FfZm9ybWF0LAorCX07CisJc3RydWN0IGRybV9pOTE1X3BlcmZfb3Blbl9wYXJhbSBwYXJhbSA9 IHsKKwkJLmZsYWdzID0gSTkxNV9QRVJGX0ZMQUdfRkRfQ0xPRVhFQywKKwkJLm51bV9wcm9wZXJ0 aWVzID0gQVJSQVlfU0laRShwcm9wZXJ0aWVzKSAvIDIsCisJCS5wcm9wZXJ0aWVzX3B0ciA9IHRv X3VzZXJfcG9pbnRlcihwcm9wZXJ0aWVzKSwKKwl9OworCWludCBjaGlsZF9yZXQ7CisJc3RydWN0 IGlndF9oZWxwZXJfcHJvY2VzcyBjaGlsZCA9IHt9OworCisJLyogRW5zdXJlIHBlcmZfc3RyZWFt X3BhcmFub2lkIGlzIHNldCB0byAxIGJ5IGRlZmF1bHQgKi8KKwl3cml0ZV91NjRfZmlsZSgiL3By b2Mvc3lzL2Rldi9pOTE1L3BlcmZfc3RyZWFtX3BhcmFub2lkIiwgMSk7CisKKwlkbyB7CisJCWln dF9mb3JrX2hlbHBlcigmY2hpbGQpIHsKKwkJCWdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKCZwYXJh bSk7CisJCX0KKwkJY2hpbGRfcmV0ID0gaWd0X3dhaXRfaGVscGVyKCZjaGlsZCk7CisJCWlndF9h c3NlcnQoV0VYSVRTVEFUVVMoY2hpbGRfcmV0KSA9PSBFQUdBSU4gfHwKKwkJCSAgIFdFWElUU1RB VFVTKGNoaWxkX3JldCkgPT0gMCk7CisJfSB3aGlsZSAoV0VYSVRTVEFUVVMoY2hpbGRfcmV0KSA9 PSBFQUdBSU4pOworfQorCiBzdGF0aWMgdW5zaWduZWQgbG9uZyByYzZfcmVzaWRlbmN5X21zKHZv aWQpCiB7CiAJcmV0dXJuIHN5c2ZzX3JlYWQoInBvd2VyL3JjNl9yZXNpZGVuY3lfbXMiKTsKQEAg LTQyMDYsNiArNDU1NCwxMSBAQCBpZ3RfbWFpbgogCQlnZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5k ZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIoKTsKIAl9CiAKKwlpZ3Rfc3VidGVzdCgiZ2VuMTIt dW5wcml2aWxlZ2VkLXNpbmdsZS1jdHgtY291bnRlcnMiKSB7CisJCWlndF9yZXF1aXJlKGludGVs X2dlbihkZXZpZCkgPj0gMTIpOworCQlnZW4xMl90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3Rhcmdl dF93cml0ZXNfYV9jb3VudGVyKCk7CisJfQorCiAJaWd0X3N1YnRlc3QoInJjNi1kaXNhYmxlIikK IAkJdGVzdF9yYzZfZGlzYWJsZSgpOwogCi0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldg==