From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH i-g-t] tests/gem_mocs_settings: Fix LNCFCMOCS testing and extract the subtests Date: Wed, 28 Jun 2017 17:41:45 +0200 Message-ID: <20170628154145.9914-1-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id B9A146E026 for ; Wed, 28 Jun 2017 15:43:12 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGVzdGluZyBMTkNGQ01PQ1MgdmFsdWVzIG9uIG5vbi1yZW5kZXIgZW5naW5lcyBpcyB0cmlja3ku IFRoZSB2YWx1ZXMgaW4KdGhvc2UgcmVnaXN0ZXJzIGFyZSBsb3N0IG9uIFJDNiwgd2hpY2ggbWVh bnMgdGhhdCBpZiB1c2VycyBvZiBub24tcmVuZGVyCmVuZ2luZXMgd2FudCB0byBzZWUgdGhlIHBy b3BlciB2YWx1ZXMsIHRoZXkgbmVlZCB0byBvYnRhaW4gYSBmb3JjZXdha2UKYW5kIGV4ZWN1dGUg c29tZXRoaW5nIG9uIHJlbmRlciAocmVseWluZyBvbiBpdCB0byByZXN0b3JlIHRoZSB2YWx1ZXMp CmJlZm9yZSB1c2luZyBub24tcmVuZGVyIGVuZ2luZS4KUHJldmlvdXMgdmVyc2lvbiBvZiB0aGUg dGVzdCBkaWQgZXhhY3RseSB0aGF0IC0gd2Ugd2VyZSByZWx5aW5nIG9uIHRoZQpmYWN0IHRoYXQg d2UncmUgdGFraW5nIGZvcmNld2FrZSAoaGlkZGVuIGJ5IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0LApldmVuIHRob3VnaCB0aGUgdGVzdCBpcyBub3QgZG9pbmcgYW55IG1taW8gYWNjZXNzZXMp IGJlZm9yZSBpdGVyYXRpbmcKdGhyb3VnaCBlbmdpbmVzIChhbmQgcmVuZGVyIGlzIGJlZm9yZSBv dGhlciBlbmdpbmVzLCBzbyBqb2IgZG9uZSkuCkkgcmVhbGx5IGhvcGUgdGhhdCB0aGlzIGlzIG5v dCBhbiBBQkkgYW5kIHRob3NlIHJlZ2lzdGVycyBhcmUgbm90IHVzZWQKb24gbm9uLXJlbmRlciBp biBhbnkgd2F5LiBMZXQncyBsaW1pdCB0ZXN0aW5nIExOQ0ZDTU9DUyB0byByZW5kZXIKZW5naW5l IG9ubHkuClRoZSBvdGhlciBub24tcmVuZGVyIGlzc3VlIGlzIHRoYXQgd2hlbiB3ZSdyZSB1c2lu ZyBJOTE1X0VYRUNfQlNELCB3ZQpjYW4ndCBiZSBzdXJlIHdoaWNoIEJTRCByaW5nIHdlJ2xsIGVu ZCB1cCBleGVjdXRpbmcgb24uIExldCdzCmV4cGxpY2l0bHkgc2VsZWN0IEJTRDEgYW5kIEJTRDIg aW4gb3VyIHRlc3RzLgpXaGlsZSB3ZSdyZSBoZXJlLCBsZXQncyBhbHNvIHJlbW92ZSB0aGUgZHVw bGljYXRlZCBjb2RlIGFuZCBhZGQgc29tZQpzdHJ1Y3R1cmUgYnkgZXh0cmFjdGluZyBtb3Zpbmcg bW9yZSBjb250ZW50IGludG8gc3VidGVzdHMuCldlJ3JlIG9ubHkgZG9pbmcgdGVzdHMgdGhhdCBp bnZvbHZlICJkaXJ0eWluZyIgdGhlIHJlZ2lzdGVycyBmb3IgdGhlCnJlbmRlciBlbmdpbmUgLSBz aW5jZSBpdCdzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyB0aG9zZSByZWdpc3RlcnMgaW4gaXRzCmNv bnRleHQuCgpDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPgpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBEYXZpZCBXZWlu ZWhhbGwgPGRhdmlkLndlaW5laGFsbEBsaW51eC5pbnRlbC5jb20+CkNjOiDFgXVrYXN6IEthxYJh bWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWljaGHFgiBX aW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgotLS0KIHRlc3RzL2dlbV9tb2Nz X3NldHRpbmdzLmMgfCAzNTMgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX21vY3Nfc2V0dGluZ3MuYyBiL3Rlc3RzL2dlbV9t b2NzX3NldHRpbmdzLmMKaW5kZXggYTk2YWE2Ni4uOTc2MGMwZSAxMDA2NDQKLS0tIGEvdGVzdHMv Z2VtX21vY3Nfc2V0dGluZ3MuYworKysgYi90ZXN0cy9nZW1fbW9jc19zZXR0aW5ncy5jCkBAIC0z MiwxNCArMzIsMjggQEAKICNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKIAogI2RlZmluZSBNQVhfTlVN QkVSX01PQ1NfUkVHSVNURVJTCSg2NCkKLQogZW51bSB7CiAJTk9ORSwKIAlSRVNFVCwKKwlSQzYs CiAJU1VTUEVORCwKLQlISUJFUk5BVEUKKwlISUJFUk5BVEUsCisJTUFYX01PQ1NfVEVTVF9NT0RF UworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0ZXN0X21vZGVzW10gPSB7CisJW05P TkVdID0gInNldHRpbmdzIiwKKwlbUkVTRVRdID0gInJlc2V0IiwKKwlbUkM2XSA9ICJyYzYiLAor CVtTVVNQRU5EXSA9ICJzdXNwZW5kIiwKKwlbSElCRVJOQVRFXSA9ICJoaWJlcm5hdGUiCiB9Owog CisjZGVmaW5lIE1PQ1NfTk9OX0RFRkFVTFRfQ1RYCSgxPDwwKQorI2RlZmluZSBNT0NTX0RJUlRZ X1ZBTFVFUwkoMTw8MSkKKyNkZWZpbmUgQUxMX01PQ1NfRkxBR1MJCShNT0NTX05PTl9ERUZBVUxU X0NUWCB8IFwKKwkJCQkgTU9DU19ESVJUWV9WQUxVRVMpCisKICNkZWZpbmUgR0VOOV9MTkNGQ01P Q1MwCQkoMHhCMDIwKQkvKiBMMyBDYWNoZSBDb250cm9sIGJhc2UgKi8KICNkZWZpbmUgR0VOOV9H RlhfTU9DU18wCQkoMHhjODAwKQkvKiBHcmFwaGljcyBNT0NTIGJhc2UgcmVnaXN0ZXIqLwogI2Rl ZmluZSBHRU45X01GWDBfTU9DU18wCSgweGM5MDApCS8qIE1lZGlhIDAgTU9DUyBiYXNlIHJlZ2lz dGVyKi8KQEAgLTExNywxOSArMTMxLDE4IEBAIHN0YXRpYyBib29sIGdldF9tb2NzX3NldHRpbmdz KGludCBmZCwgc3RydWN0IG1vY3NfdGFibGUgKnRhYmxlLCBib29sIGRpcnR5KQogCXJldHVybiBy ZXN1bHQ7CiB9CiAKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRDEgKEk5MTVfRVhFQ19CU0Qg fCAoMTw8MTMpKQorI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEMiAoSTkxNV9FWEVDX0JTRCB8 ICgyPDwxMykpCisKIHN0YXRpYyB1aW50MzJfdCBnZXRfZW5naW5lX2Jhc2UodWludDMyX3QgZW5n aW5lKQogewotCS8qIE5vdGUgd2UgY2Fubm90IHRlc3QgQlNEMSBvciBCU0QyIGR1ZSB0byBsaW1p dGF0aW9ucyBvZiBjdXJyZW50IEFOSSAqLwogCXN3aXRjaCAoZW5naW5lKSB7Ci0JY2FzZSBJOTE1 X0VYRUNfQlNEOglyZXR1cm4gR0VOOV9NRlgwX01PQ1NfMDsKLS8qCi0JY2FzZSBJOTE1X0VYRUNf QlNEMToJcmV0dXJuIEdFTjlfTUZYMF9NT0NTXzA7Ci0JY2FzZSBJOTE1X0VYRUNfQlNEMjoJcmV0 dXJuIEdFTjlfTUZYMV9NT0NTXzA7Ci0qLwotCWNhc2UgSTkxNV9FWEVDX1JFTkRFUjoJcmV0dXJu IEdFTjlfR0ZYX01PQ1NfMDsKLQljYXNlIEk5MTVfRVhFQ19CTFQ6CXJldHVybiBHRU45X0JMVF9N T0NTXzA7Ci0JY2FzZSBJOTE1X0VYRUNfVkVCT1g6CXJldHVybiBHRU45X1ZFQk9YX01PQ1NfMDsK LQlkZWZhdWx0OgkJcmV0dXJuIDA7CisJY2FzZSBMT0NBTF9JOTE1X0VYRUNfQlNEMToJcmV0dXJu IEdFTjlfTUZYMF9NT0NTXzA7CisJY2FzZSBMT0NBTF9JOTE1X0VYRUNfQlNEMjoJcmV0dXJuIEdF TjlfTUZYMV9NT0NTXzA7CisJY2FzZSBJOTE1X0VYRUNfUkVOREVSOgkJcmV0dXJuIEdFTjlfR0ZY X01PQ1NfMDsKKwljYXNlIEk5MTVfRVhFQ19CTFQ6CQlyZXR1cm4gR0VOOV9CTFRfTU9DU18wOwor CWNhc2UgSTkxNV9FWEVDX1ZFQk9YOgkJcmV0dXJuIEdFTjlfVkVCT1hfTU9DU18wOworCWRlZmF1 bHQ6CQkJcmV0dXJuIDA7CiAJfQogfQogCkBAIC0yNTIsNyArMjY1LDcgQEAgc3RhdGljIHZvaWQg Y2hlY2tfY29udHJvbF9yZWdpc3RlcnMoaW50IGZkLAogCQkJCSAgICB1aW50MzJfdCBjdHhfaWQs CiAJCQkJICAgIGJvb2wgZGlydHkpCiB7Ci0JY29uc3QgdWludDMyX3QgcmVnX2Jhc2UgID0gZ2V0 X2VuZ2luZV9iYXNlKGVuZ2luZSk7CisJY29uc3QgdWludDMyX3QgcmVnX2Jhc2UgPSBnZXRfZW5n aW5lX2Jhc2UoZW5naW5lKTsKIAl1aW50MzJfdCBkc3RfaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwg NDA5Nik7CiAJdWludDMyX3QgKnJlYWRfcmVnczsKIAlzdHJ1Y3QgbW9jc190YWJsZSB0YWJsZTsK QEAgLTI5OSw2ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19sM2NjX3JlZ2lzdGVycyhpbnQg ZmQsCiAJcmVhZF9yZWdzID0gZ2VtX21tYXBfX2NwdShmZCwgZHN0X2hhbmRsZSwgMCwgNDA5Niwg UFJPVF9SRUFEKTsKIAogCWdlbV9zZXRfZG9tYWluKGZkLCBkc3RfaGFuZGxlLCBJOTE1X0dFTV9E T01BSU5fQ1BVLCAwKTsKKwogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLnNpemUgLyAy OyBpbmRleCsrKSB7CiAJCWlndF9hc3NlcnRfZXFfdTMyKHJlYWRfcmVnc1tpbmRleF0gJiAweGZm ZmYsCiAJCQkJICB0YWJsZS50YWJsZVtpbmRleCAqIDJdLmwzY2NfdmFsdWUpOwpAQCAtMzE0LDE4 MyArMzI4LDY1IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2wzY2NfcmVnaXN0ZXJzKGludCBmZCwKIAln ZW1fY2xvc2UoZmQsIGRzdF9oYW5kbGUpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X2NvbnRleHRf bW9jc192YWx1ZXMoaW50IGZkLCB1bnNpZ25lZCBlbmdpbmUpCi17Ci0JaW50IGxvY2FsX2ZkOwot CXVpbnQzMl90IGN0eF9pZCA9IDA7Ci0KLQlsb2NhbF9mZCA9IGZkOwotCWlmIChsb2NhbF9mZCA9 PSAtMSkKLQkJbG9jYWxfZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7 Ci0KLQljaGVja19jb250cm9sX3JlZ2lzdGVycyhsb2NhbF9mZCwgZW5naW5lLCBjdHhfaWQsIGZh bHNlKTsKLQljaGVja19sM2NjX3JlZ2lzdGVycyhsb2NhbF9mZCwgZW5naW5lLCBjdHhfaWQsIGZh bHNlKTsKLQotCWlmIChlbmdpbmUgPT0gSTkxNV9FWEVDX1JFTkRFUikgewotCQljdHhfaWQgPSBn ZW1fY29udGV4dF9jcmVhdGUobG9jYWxfZmQpOwotCi0JCWNoZWNrX2NvbnRyb2xfcmVnaXN0ZXJz KGxvY2FsX2ZkLCBlbmdpbmUsIGN0eF9pZCwgZmFsc2UpOwotCQljaGVja19sM2NjX3JlZ2lzdGVy cyhsb2NhbF9mZCwgZW5naW5lLCBjdHhfaWQsIGZhbHNlKTsKLQotCQlnZW1fY29udGV4dF9kZXN0 cm95KGxvY2FsX2ZkLCBjdHhfaWQpOwotCX0KLQotCWlmIChsb2NhbF9mZCAhPSBmZCkKLQkJY2xv c2UobG9jYWxfZmQpOwotfQogCi1zdGF0aWMgYm9vbCBsb2NhbF9oYXNfcmluZyhpbnQgZmQsIHVu c2lnbmVkIGVuZ2luZSkKK3N0YXRpYyB1aW50MzJfdCByYzZfcmVzaWRlbmN5KGludCBkaXIpCiB7 Ci0JYm9vbCBoYXNfcmluZzsKLQlpbnQgbG9jYWxfZmQ7Ci0KLQlpZiAoZ2V0X2VuZ2luZV9iYXNl KGVuZ2luZSkgPT0gMCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKGZkID09IC0xKQotCQlsb2Nh bF9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKLQllbHNlCi0JCWxv Y2FsX2ZkID0gZmQ7Ci0KLQloYXNfcmluZyA9IGdlbV9oYXNfcmluZyhsb2NhbF9mZCwgZW5naW5l KTsKLQlpZiAobG9jYWxfZmQgIT0gZmQpCi0JCWNsb3NlKGxvY2FsX2ZkKTsKLQotCXJldHVybiBo YXNfcmluZzsKKwlyZXR1cm4gaWd0X3N5c2ZzX2dldF91MzIoZGlyLCAicG93ZXIvcmM2X3Jlc2lk ZW5jeV9tcyIpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X21vY3NfdmFsdWVzKGludCBmZCkKK3N0 YXRpYyB2b2lkIHJjNl93YWl0KGludCBmZCkKIHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZSAqZTsKKwlpbnQgc3lzZnM7CisJdWludDMyX3QgcmVzaWRlbmN5OwogCi0JZm9y IChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5hbWU7IGUrKykgewotCQl1bnNpZ25l ZCBlbmdpbmUgPSBlLT5leGVjX2lkIHwgZS0+ZmxhZ3M7CisJc3lzZnMgPSBpZ3Rfc3lzZnNfb3Bl bihmZCwgTlVMTCk7CisJaWd0X2Fzc2VydF9sdGUoMCwgc3lzZnMpOwogCi0JCWlmICghbG9jYWxf aGFzX3JpbmcoZmQsIGVuZ2luZSkpCi0JCQljb250aW51ZTsKKwlyZXNpZGVuY3kgPSByYzZfcmVz aWRlbmN5KHN5c2ZzKTsKKwlpZ3RfcmVxdWlyZShpZ3Rfd2FpdChyYzZfcmVzaWRlbmN5KHN5c2Zz KSAhPSByZXNpZGVuY3ksIDEwMDAwLCAyKSk7CiAKLQkJaWd0X2RlYnVnKCJUZXN0aW5nICVzXG4i LCBlLT5uYW1lKTsKLQkJdGVzdF9jb250ZXh0X21vY3NfdmFsdWVzKGZkLCBlbmdpbmUpOwotCX0K KwljbG9zZShzeXNmcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGRlZmF1bHRfY29udGV4dF90ZXN0cyh1 bnNpZ25lZCBtb2RlKQorc3RhdGljIHZvaWQgY2hlY2tfbW9jc192YWx1ZXMoaW50IGZkLCB1bnNp Z25lZCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwgYm9vbCBkaXJ0eSkKIHsKLQlpbnQgZmQgPSBk cm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CisJY2hlY2tfY29udHJvbF9yZWdp c3RlcnMoZmQsIGVuZ2luZSwgY3R4X2lkLCBkaXJ0eSk7CiAKLQlpZ3RfZGVidWcoIlRlc3Rpbmcg Tm9uL0RlZmF1bHQgQ29udGV4dCBFbmdpbmVzXG4iKTsKLQl0ZXN0X21vY3NfdmFsdWVzKGZkKTsK LQotCXN3aXRjaCAobW9kZSkgewotCWNhc2UgTk9ORToJYnJlYWs7Ci0JY2FzZSBSRVNFVDoJaWd0 X2ZvcmNlX2dwdV9yZXNldChmZCk7CWJyZWFrOwotCWNhc2UgU1VTUEVORDoJaWd0X3N5c3RlbV9z dXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sCi0JCQkJCQkgICAgICBTVVNQRU5E X1RFU1RfTk9ORSk7IGJyZWFrOwotCWNhc2UgSElCRVJOQVRFOglpZ3Rfc3lzdGVtX3N1c3BlbmRf YXV0b3Jlc3VtZShTVVNQRU5EX1NUQVRFX0RJU0ssCi0JCQkJCQkgICAgICBTVVNQRU5EX1RFU1Rf Tk9ORSk7IGJyZWFrOwotCX0KLQotCXRlc3RfbW9jc192YWx1ZXMoZmQpOwotCWNsb3NlKGZkKTsK LQotCWlndF9kZWJ1ZygiVGVzdGluZyBQcmlzdGluZSBEZWZhdWx0c1xuIik7Ci0JdGVzdF9tb2Nz X3ZhbHVlcygtMSk7CisJaWYgKGVuZ2luZSA9PSBJOTE1X0VYRUNfUkVOREVSKQorCQljaGVja19s M2NjX3JlZ2lzdGVycyhmZCwgZW5naW5lLCBjdHhfaWQsIGRpcnR5KTsKIH0KIAotc3RhdGljIHZv aWQgZGVmYXVsdF9kaXJ0eV90ZXN0cyh1bnNpZ25lZCBtb2RlKQorc3RhdGljIHZvaWQgd3JpdGVf ZGlydHlfbW9jcyhpbnQgZmQsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3QgY3R4X2lkKQogewot CWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplOwotCWludCBmZCA9IGRybV9v cGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKLQotCWlndF9kZWJ1ZygiVGVzdGluZyBE aXJ0eSBEZWZhdWx0IENvbnRleHQgRW5naW5lc1xuIik7Ci0JdGVzdF9tb2NzX3ZhbHVlcyhmZCk7 Ci0KLQlmb3IgKGUgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczsgZS0+bmFtZTsgZSsrKSB7Ci0J CXVuc2lnbmVkIGVuZ2luZSA9IGUtPmV4ZWNfaWQgfCBlLT5mbGFnczsKKwl3cml0ZV9yZWdpc3Rl cnMoZmQsIGN0eF9pZCwgZ2V0X2VuZ2luZV9iYXNlKGVuZ2luZSksCisJCQl3cml0ZV92YWx1ZXMs IEFSUkFZX1NJWkUod3JpdGVfdmFsdWVzKSwKKwkJCWVuZ2luZSk7CiAKLQkJaWYgKCFsb2NhbF9o YXNfcmluZyhmZCwgZW5naW5lKSkKLQkJCWNvbnRpbnVlOwotCi0JCXdyaXRlX3JlZ2lzdGVycyhm ZCwgMCwKLQkJCQlHRU45X0dGWF9NT0NTXzAsCisJaWYgKGVuZ2luZSA9PSBJOTE1X0VYRUNfUkVO REVSKQorCQl3cml0ZV9yZWdpc3RlcnMoZmQsIGN0eF9pZCwgR0VOOV9MTkNGQ01PQ1MwLAogCQkJ CXdyaXRlX3ZhbHVlcywgQVJSQVlfU0laRSh3cml0ZV92YWx1ZXMpLAogCQkJCWVuZ2luZSk7Ci0K LQkJd3JpdGVfcmVnaXN0ZXJzKGZkLCAwLAotCQkJCUdFTjlfTE5DRkNNT0NTMCwKLQkJCQl3cml0 ZV92YWx1ZXMsIEFSUkFZX1NJWkUod3JpdGVfdmFsdWVzKSwKLQkJCQllbmdpbmUpOwotCX0KLQot CXN3aXRjaCAobW9kZSkgewotCWNhc2UgTk9ORToJYnJlYWs7Ci0JY2FzZSBSRVNFVDoJaWd0X2Zv cmNlX2dwdV9yZXNldChmZCk7CWJyZWFrOwotCWNhc2UgU1VTUEVORDoJaWd0X3N5c3RlbV9zdXNw ZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sCi0JCQkJCQkgICAgICBTVVNQRU5EX1RF U1RfTk9ORSk7IGJyZWFrOwotCWNhc2UgSElCRVJOQVRFOglpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0 b3Jlc3VtZShTVVNQRU5EX1NUQVRFX0RJU0ssCi0JCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9O RSk7IGJyZWFrOwotCX0KLQotCWNsb3NlKGZkKTsKLQotCWlndF9kZWJ1ZygiVGVzdGluZyBQcmlz dGluZSBhZnRlciBEaXJ0eSBEZWZhdWx0c1xuIik7Ci0JdGVzdF9tb2NzX3ZhbHVlcygtMSk7CiB9 CiAKLXN0YXRpYyB2b2lkIGNvbnRleHRfc2F2ZV9yZXN0b3JlX3Rlc3QodW5zaWduZWQgbW9kZSkK K3N0YXRpYyB2b2lkIHJ1bl90ZXN0KGludCBmZCwgdW5zaWduZWQgZW5naW5lLCB1bnNpZ25lZCBm bGFncywgdW5zaWduZWQgbW9kZSkKIHsKLQlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVy KERSSVZFUl9JTlRFTCk7Ci0JdWludDMyX3QgY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZk KTsKKwl1aW50MzJfdCBjdHhfaWQgPSAwOworCXVpbnQzMl90IGN0eF9jbGVhbl9pZDsKKwl1aW50 MzJfdCBjdHhfZGlydHlfaWQ7CiAKLQlpZ3RfZGVidWcoIlRlc3RpbmcgU2F2ZSBSZXN0b3JlXG4i KTsKKwkvKiBTa2lwIGlmIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIHJlZ2lzdGVycyBhcmUgZm9y IHRoaXMgZW5naW5lICovCisJaWd0X3JlcXVpcmUoZ2V0X2VuZ2luZV9iYXNlKGVuZ2luZSkpOwog Ci0JY2hlY2tfY29udHJvbF9yZWdpc3RlcnMoZmQsIEk5MTVfRVhFQ19SRU5ERVIsIGN0eF9pZCwg ZmFsc2UpOwotCWNoZWNrX2wzY2NfcmVnaXN0ZXJzKGZkLCBJOTE1X0VYRUNfUkVOREVSLCBjdHhf aWQsIGZhbHNlKTsKKwlpZiAoZmxhZ3MgJiBNT0NTX05PTl9ERUZBVUxUX0NUWCkKKwkJY3R4X2lk ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKIAotCXN3aXRjaCAobW9kZSkgewotCWNhc2UgTk9O RToJYnJlYWs7Ci0JY2FzZSBSRVNFVDoJaWd0X2ZvcmNlX2dwdV9yZXNldChmZCk7CWJyZWFrOwot CWNhc2UgU1VTUEVORDoJaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoU1VTUEVORF9TVEFU RV9NRU0sCi0JCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9ORSk7IGJyZWFrOwotCWNhc2UgSElC RVJOQVRFOglpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShTVVNQRU5EX1NUQVRFX0RJU0ss Ci0JCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9ORSk7IGJyZWFrOworCWlmIChmbGFncyAmIE1P Q1NfRElSVFlfVkFMVUVTKSB7CisJCWN0eF9kaXJ0eV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShm ZCk7CisJCXdyaXRlX2RpcnR5X21vY3MoZmQsIGVuZ2luZSwgY3R4X2RpcnR5X2lkKTsKKwkJY2hl Y2tfbW9jc192YWx1ZXMoZmQsIGVuZ2luZSwgY3R4X2RpcnR5X2lkLCB0cnVlKTsKIAl9CiAKLQlj aGVja19jb250cm9sX3JlZ2lzdGVycyhmZCwgSTkxNV9FWEVDX1JFTkRFUiwgY3R4X2lkLCBmYWxz ZSk7Ci0JY2hlY2tfbDNjY19yZWdpc3RlcnMoZmQsIEk5MTVfRVhFQ19SRU5ERVIsIGN0eF9pZCwg ZmFsc2UpOwotCi0JY2xvc2UoZmQpOwotfQotCi1zdGF0aWMgdm9pZCBjb250ZXh0X2RpcnR5X3Rl c3QodW5zaWduZWQgbW9kZSkKLXsKLQlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERS SVZFUl9JTlRFTCk7Ci0JdWludDMyX3QgY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsK LQotCWlndF9kZWJ1ZygiVGVzdGluZyBEaXJ0eSBDb250ZXh0XG4iKTsKLQl0ZXN0X21vY3NfdmFs dWVzKGZkKTsKLQotCWNoZWNrX2NvbnRyb2xfcmVnaXN0ZXJzKGZkLCBJOTE1X0VYRUNfUkVOREVS LCBjdHhfaWQsIGZhbHNlKTsKLQljaGVja19sM2NjX3JlZ2lzdGVycyhmZCwgSTkxNV9FWEVDX1JF TkRFUiwgY3R4X2lkLCBmYWxzZSk7Ci0KLQkvKiBYWFggIVJDUyBhcyB3ZWxsICovCi0KLQl3cml0 ZV9yZWdpc3RlcnMoZmQsCi0JCQljdHhfaWQsCi0JCQlHRU45X0dGWF9NT0NTXzAsCi0JCQl3cml0 ZV92YWx1ZXMsCi0JCQlBUlJBWV9TSVpFKHdyaXRlX3ZhbHVlcyksCi0JCQlJOTE1X0VYRUNfUkVO REVSKTsKLQotCXdyaXRlX3JlZ2lzdGVycyhmZCwKLQkJCWN0eF9pZCwKLQkJCUdFTjlfTE5DRkNN T0NTMCwKLQkJCXdyaXRlX3ZhbHVlcywKLQkJCUFSUkFZX1NJWkUod3JpdGVfdmFsdWVzKSwKLQkJ CUk5MTVfRVhFQ19SRU5ERVIpOwotCi0JY2hlY2tfY29udHJvbF9yZWdpc3RlcnMoZmQsIEk5MTVf RVhFQ19SRU5ERVIsIGN0eF9pZCwgdHJ1ZSk7Ci0JY2hlY2tfbDNjY19yZWdpc3RlcnMoZmQsIEk5 MTVfRVhFQ19SRU5ERVIsIGN0eF9pZCwgdHJ1ZSk7CisJY2hlY2tfbW9jc192YWx1ZXMoZmQsIGVu Z2luZSwgY3R4X2lkLCBmYWxzZSk7CiAKIAlzd2l0Y2ggKG1vZGUpIHsKIAljYXNlIE5PTkU6CWJy ZWFrOwpAQCAtNDk5LDk5ICszOTUsNjYgQEAgc3RhdGljIHZvaWQgY29udGV4dF9kaXJ0eV90ZXN0 KHVuc2lnbmVkIG1vZGUpCiAJCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9ORSk7IGJyZWFrOwog CWNhc2UgSElCRVJOQVRFOglpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShTVVNQRU5EX1NU QVRFX0RJU0ssCiAJCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9ORSk7IGJyZWFrOworCWNhc2Ug UkM2OglyYzZfd2FpdChmZCk7CQkJYnJlYWs7CiAJfQogCi0JY2hlY2tfY29udHJvbF9yZWdpc3Rl cnMoZmQsIEk5MTVfRVhFQ19SRU5ERVIsIGN0eF9pZCwgdHJ1ZSk7Ci0JY2hlY2tfbDNjY19yZWdp c3RlcnMoZmQsIEk5MTVfRVhFQ19SRU5ERVIsIGN0eF9pZCwgdHJ1ZSk7Ci0KLQljbG9zZShmZCk7 Ci0KLQkvKiBDaGVjayB0aGF0IHVubW9kaWZpZWQgY29udGV4dHMgYXJlIHByaXN0aW5lICovCi0J aWd0X2RlYnVnKCJUZXN0aW5nIFByZXN0aW5lIENvbnRleHQgKGFmdGVyIGRpcnR5KVxuIik7Ci0J dGVzdF9tb2NzX3ZhbHVlcygtMSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1bl90ZXN0cyh1bnNpZ25l ZCBtb2RlKQotewotCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2OwotCWludCBmZDsKLQotCXBj aV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwotCWlndF9yZXF1aXJlKHBjaV9kZXYpOwot Ci0JZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Ci0JaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgZmQpOwotCWNsb3NlKGZkKTsKLQotCWRlZmF1 bHRfY29udGV4dF90ZXN0cyhtb2RlKTsKLQlkZWZhdWx0X2RpcnR5X3Rlc3RzKG1vZGUpOwotCWNv bnRleHRfc2F2ZV9yZXN0b3JlX3Rlc3QobW9kZSk7Ci0JY29udGV4dF9kaXJ0eV90ZXN0KG1vZGUp OworCWNoZWNrX21vY3NfdmFsdWVzKGZkLCBlbmdpbmUsIGN0eF9pZCwgZmFsc2UpOwogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKLX0KLQotc3RhdGljIGludCByYzZfcmVzaWRlbmN5 KGludCBkaXIpCi17Ci0JcmV0dXJuIGlndF9zeXNmc19nZXRfdTMyKGRpciwgInBvd2VyL3JjNl9y ZXNpZGVuY3lfbXMiKTsKLX0KLQotc3RhdGljIHZvaWQgY29udGV4dF9yYzZfdGVzdCh2b2lkKQot ewotCWludCBmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwotCXVpbnQzMl90IGN0 eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Ci0JaW50IHJlc2lkZW5jeTsKLQlpbnQgdGlt ZW91dDsKLQlpbnQgc3lzZnM7Ci0KLQlpZ3RfZGVidWcoIlJDNiBDb250ZXh0IFRlc3RcbiIpOwot CWNoZWNrX2NvbnRyb2xfcmVnaXN0ZXJzKGZkLCBJOTE1X0VYRUNfUkVOREVSLCBjdHhfaWQsIGZh bHNlKTsKLQljaGVja19sM2NjX3JlZ2lzdGVycyhmZCwgSTkxNV9FWEVDX1JFTkRFUiwgY3R4X2lk LCBmYWxzZSk7Ci0KLQlzeXNmcyA9IGlndF9zeXNmc19vcGVuKGZkLCBOVUxMKTsKLQotCXRpbWVv dXQgPSAzMDAwIC8gMjsKLQlyZXNpZGVuY3kgPSByYzZfcmVzaWRlbmN5KHN5c2ZzKTsKLQl3aGls ZSAocmM2X3Jlc2lkZW5jeShzeXNmcykgPT0gcmVzaWRlbmN5ICYmIC0tdGltZW91dCkKLQkJdXNs ZWVwKDIwMDApOwotCWlndF9yZXF1aXJlKHRpbWVvdXQpOwotCi0JY2xvc2Uoc3lzZnMpOworCWlm IChmbGFncyAmIE1PQ1NfRElSVFlfVkFMVUVTKSB7CisJCWN0eF9jbGVhbl9pZCA9IGdlbV9jb250 ZXh0X2NyZWF0ZShmZCk7CisJCWNoZWNrX21vY3NfdmFsdWVzKGZkLCBlbmdpbmUsIGN0eF9kaXJ0 eV9pZCwgdHJ1ZSk7CisJCWNoZWNrX21vY3NfdmFsdWVzKGZkLCBlbmdpbmUsIGN0eF9jbGVhbl9p ZCwgZmFsc2UpOworCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfZGlydHlfaWQpOworCQln ZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfY2xlYW5faWQpOworCX0KIAotCWNoZWNrX2NvbnRy b2xfcmVnaXN0ZXJzKGZkLCBJOTE1X0VYRUNfUkVOREVSLCBjdHhfaWQsIGZhbHNlKTsKLQljaGVj a19sM2NjX3JlZ2lzdGVycyhmZCwgSTkxNV9FWEVDX1JFTkRFUiwgY3R4X2lkLCBmYWxzZSk7Ci0J Y2xvc2UoZmQpOworCWlmIChjdHhfaWQpCisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eF9p ZCk7CiB9CiAKLQotc3RhdGljIHZvaWQgdGVzdF9yZXF1aXJlbWVudHModm9pZCkKK2lndF9tYWlu CiB7Ci0JaW50IGZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfSU5URUwpOworCWNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplOwogCXN0cnVjdCBtb2NzX3RhYmxl IHRhYmxlOworCWludCBmZCA9IC0xOwogCi0JZ2VtX3JlcXVpcmVfbW9jc19yZWdpc3RlcnMoZmQp OwotCWlndF9yZXF1aXJlKGdldF9tb2NzX3NldHRpbmdzKGZkLCAmdGFibGUsIGZhbHNlKSk7Ci0J Y2xvc2UoZmQpOwotfQotCi1pZ3RfbWFpbgotewogCWlndF9maXh0dXJlIHsKLQkJdGVzdF9yZXF1 aXJlbWVudHMoKTsKKwkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJaWd0 X3JlcXVpcmVfZ2VtKGZkKTsKKwkJZ2VtX3JlcXVpcmVfbW9jc19yZWdpc3RlcnMoZmQpOworCQlp Z3RfcmVxdWlyZShnZXRfbW9jc19zZXR0aW5ncyhmZCwgJnRhYmxlLCBmYWxzZSkpOwogCX0KIAot CWlndF9zdWJ0ZXN0KCJtb2NzLXNldHRpbmdzIikKLQkJcnVuX3Rlc3RzKE5PTkUpOwotCi0JaWd0 X3N1YnRlc3QoIm1vY3MtcmM2IikKLQkJY29udGV4dF9yYzZfdGVzdCgpOwotCi0JaWd0X3N1YnRl c3QoIm1vY3MtcmVzZXQiKQotCQlydW5fdGVzdHMoUkVTRVQpOworCWZvciAoZSA9IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspIHsKKwkJLyogV2UgZG9uJ3Qga25vdyB3aGlj aCBlbmdpbmUgd2lsbCBiZSBhc3NpZ25lZCB0byB1cyBpZiB3ZSdyZQorCQkgKiB1c2luZyBwbGFp biBJOTE1X0VYRUNfQlNELCBJOTE1X0VYRUNfREVGQVVMVCBpcyBqdXN0CisJCSAqIGR1cGxpY2F0 aW5nIHJlbmRlcgorCQkgKi8KKwkJaWYgKGUtPmV4ZWNfaWQgPT0gSTkxNV9FWEVDX0JTRCB8fAor CQkgICAgZS0+ZXhlY19pZCA9PSBJOTE1X0VYRUNfREVGQVVMVCkKKwkJCWNvbnRpbnVlOwogCi0J aWd0X3N1YnRlc3QoIm1vY3Mtc3VzcGVuZCIpCi0JCXJ1bl90ZXN0cyhTVVNQRU5EKTsKKwkJZm9y ICh1bnNpZ25lZCBtb2RlID0gTk9ORTsgbW9kZSA8IE1BWF9NT0NTX1RFU1RfTU9ERVM7IG1vZGUr KykgeworCQkJZm9yICh1bnNpZ25lZCBmbGFncyA9IDA7IGZsYWdzIDwgQUxMX01PQ1NfRkxBR1Mg KyAxOyBmbGFncysrKSB7CisJCQkJLyogVHJ5aW5nIHRvIHRlc3Qgbm9uLXJlbmRlciBlbmdpbmVz IGZvciBkaXJ0eWluZyBNT0NTCisJCQkJICogdmFsdWVzIGZyb20gb25lIGNvbnRleHQgaGF2aW5n IGVmZmVjdCBvbiBkaWZmZXJlbnQKKwkJCQkgKiBjb250ZXh0IGlzIGJvdW5kIHRvIGZhaWwgLSBv bmx5IHJlbmRlciBlbmdpbmUgaXMKKwkJCQkgKiBkb2luZyBjb250ZXh0IHNhdmUvcmVzdG9yZSBv ZiBNT0NTIHJlZ2lzdGVycworCQkJCSAqLworCQkJCWlmIChmbGFncyAmIE1PQ1NfRElSVFlfVkFM VUVTICYmIGUtPmV4ZWNfaWQgIT0gSTkxNV9FWEVDX1JFTkRFUikKKwkJCQkJY29udGludWU7CisK KwkJCQlpZ3Rfc3VidGVzdF9mKCJtb2NzLSVzJXMlcy0lcyIsCisJCQkJCSAgICAgIHRlc3RfbW9k ZXNbbW9kZV0sCisJCQkJCSAgICAgIGZsYWdzICYgTU9DU19OT05fREVGQVVMVF9DVFggPyAiLWN0 eCI6ICIiLAorCQkJCQkgICAgICBmbGFncyAmIE1PQ1NfRElSVFlfVkFMVUVTID8gIi1kaXJ0eSIg OiAiIiwKKwkJCQkJICAgICAgZS0+bmFtZSkgeworCQkJCQlydW5fdGVzdChmZCwgZS0+ZXhlY19p ZCB8IGUtPmZsYWdzLCBmbGFncywgbW9kZSk7CisJCQkJfQorCQkJfQorCQl9CisJfQogCi0JaWd0 X3N1YnRlc3QoIm1vY3MtaGliZXJuYXRlIikKLQkJcnVuX3Rlc3RzKEhJQkVSTkFURSk7CisJaWd0 X2ZpeHR1cmUKKwkJY2xvc2UoZmQpOwogfQotLSAKMi45LjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=