From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6FD2E6E56E for ; Sat, 30 Mar 2019 01:03:44 +0000 (UTC) From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Fri, 29 Mar 2019 18:03:28 -0700 Message-Id: <20190330010328.28054-3-jose.souza@intel.com> In-Reply-To: <20190330010328.28054-1-jose.souza@intel.com> References: <20190330010328.28054-1-jose.souza@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 3/3] tests/plane_lowres: Test each plane individually 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 List-ID: SUNMIGhhcyBzb21lIG1hbnkgcGxhbmVzIHBlciBwaXBlIHRoYXQgaXQgaXMgY2F1c2luZyB0aGlz IHRlc3QgdG8Kc2tpcCBkdWUgYmFuZHdpZHRoIGxpbWl0YXRpb24gd2hlbiBjb21iaW5lZCB3aXRo IDRLIGRpc3BsYXlzLgoKVGhlIG9iamVjdGl2ZSBvZiB0aGlzIHRlc3QgaXMgdGVzdCB0aGUgdmlz aWJpbGl0eSBvZiB0aGUgcGxhbmVzIHdoZW4Kc3dpdGNoaW5nIGJldHdlZW4gaGlnaCBhbmQgbG93 IHJlc29sdXRpb24sIG1vcmUgaW5mb3JtYXRpb24gaW4gdGhlCnBhdGNoIHRoYXQgYWRkZWQgdGhp cyB0ZXN0IDEyZTM0ZDhjOTA5YSAoInRlc3RzL2ttc19wbGFuZV9sb3dyZXM6ClBsYW5lIHZpc2li aWxpdHkgYWZ0ZXIgYXRvbWljIG1vZGVzZXRzIikuClNvIGl0IHdhcyBzZXR0aW5nIGFsbCB0aGUg cGxhbmVzIHRoZSB0ZXN0ZWQgcGlwZSBpbiB0aGUgYm90dG9tIGxlZnQKb2YgdGhlIGRpc3BsYXkg dXNpbmcgdGhlIGhlaWdodCBvZiBoaWdoIHJlc29sdXRpb24sICBjaGVja2luZyB0aGUKdmlzaWJp bGl0eSBhbmQgdGhlbiBzd2l0Y2hpbmcgdG8gdGhlIGxvdyByZXNvbHV0aW9uIG1vZGUgYW5kIGNo ZWNraW5nCmFnYWluIHRoZSB2aXNpYmlsaXR5IGFuZCBub3cgaXQgaXMgZXhwZWN0ZWQgdGhhdCBh bGwgcGxhbmVzIHdvdWxkIGJlCmludmlzaWJsZS4KClNvIHRvIG92ZXJjb21lIElDTCBiYW5kd2lk dGggaXNzdWVzLCBoZXJlIGl0IGlzIHRlc3RpbmcgZWFjaCBwbGFuZQppbmRpdmlkdWFsbHkuCgpD YzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K Q2M6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEpv c8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3Rf a21zLmMgICAgICAgICAgICB8ICAyMSArLS0KIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICB8ICAg MiArLQogdGVzdHMva21zX3BsYW5lX2xvd3Jlcy5jIHwgMjc0ICsrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwg MTYyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2tt cy5jCmluZGV4IGNlOWZlMTUyLi4xZTI0MTViZiAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYwor KysgYi9saWIvaWd0X2ttcy5jCkBAIC0xNjM0LDI3ICsxNjM0LDE4IEBAIHN0YXRpYyB2b2lkIGtt c3Rlc3RfZ2V0X2NydGMoaW50IGRldmljZSwgZW51bSBwaXBlIHBpcGUsIHN0cnVjdCBrbXN0ZXN0 X2NydGMgKmNyCiAgKgogICogQXNzZXJ0cyBvbmx5IGlmIHRoZSBwbGFuZSdzIHZpc2liaWxpdHkg c3RhdGUgbWF0Y2hlcyB0aGUgc3RhdHVzIGJlaW5nIHBhc3NlZCBieSBAdmlzaWJpbGl0eQogICov Ci12b2lkIGlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShpbnQgZmQsIGVudW0gcGlwZSBwaXBlLCBi b29sIHZpc2liaWxpdHkpCit2b2lkIGlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShpbnQgZmQsIGVu dW0gcGlwZSBwaXBlLCBpbnQgcGxhbmVfaW5kZXgsIGJvb2wgdmlzaWJpbGl0eSkKIHsKIAlzdHJ1 Y3Qga21zdGVzdF9jcnRjIGNydGM7Ci0JaW50IGk7Ci0JYm9vbCB2aXNpYmxlOworCWJvb2wgdmlz aWJsZSA9IHRydWU7CiAKIAlrbXN0ZXN0X2dldF9jcnRjKGZkLCBwaXBlLCAmY3J0Yyk7CiAKLQl2 aXNpYmxlID0gdHJ1ZTsKLQlmb3IgKGkgPSAwOyBpIDwgY3J0Yy5uX3BsYW5lczsgaSsrKSB7Ci0J CWlmIChjcnRjLnBsYW5lc1tpXS50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCi0JCQlj b250aW51ZTsKKwlpZ3RfYXNzZXJ0KHBsYW5lX2luZGV4IDwgY3J0Yy5uX3BsYW5lcyk7CiAKLQkJ aWYgKGNydGMucGxhbmVzW2ldLnBvc194ID4gY3J0Yy53aWR0aCkgewotCQkJdmlzaWJsZSA9IGZh bHNlOwotCQkJYnJlYWs7Ci0JCX0gZWxzZSBpZiAoY3J0Yy5wbGFuZXNbaV0ucG9zX3kgPiBjcnRj LmhlaWdodCkgewotCQkJdmlzaWJsZSA9IGZhbHNlOwotCQkJYnJlYWs7Ci0JCX0KLQl9CisJaWYg KGNydGMucGxhbmVzW3BsYW5lX2luZGV4XS5wb3NfeCA+IGNydGMud2lkdGggfHwKKwkgICAgY3J0 Yy5wbGFuZXNbcGxhbmVfaW5kZXhdLnBvc195ID4gY3J0Yy5oZWlnaHQpCisJCXZpc2libGUgPSBm YWxzZTsKIAogCWZyZWUoY3J0Yy5wbGFuZXMpOwogCWlndF9hc3NlcnRfZXEodmlzaWJsZSwgdmlz aWJpbGl0eSk7CmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAppbmRl eCBlMzkyZTBlZi4uMzhiZGMwOGYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGli L2lndF9rbXMuaApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgKmttc3Rlc3RfZHVtYl9tYXBfYnVm ZmVyKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBzaXplLAogdm9pZCBrbXN0ZXN0 X2R1bWJfZGVzdHJveShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7CiB2b2lkIGttc3Rlc3Rfd2Fp dF9mb3JfcGFnZWZsaXAoaW50IGZkKTsKIHVuc2lnbmVkIGludCBrbXN0ZXN0X2dldF92Ymxhbmso aW50IGZkLCBpbnQgcGlwZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKLXZvaWQgaWd0X2Fzc2VydF9w bGFuZV92aXNpYmxlKGludCBmZCwgZW51bSBwaXBlIHBpcGUsIGJvb2wgdmlzaWJpbGl0eSk7Cit2 b2lkIGlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShpbnQgZmQsIGVudW0gcGlwZSBwaXBlLCBpbnQg cGxhbmVfaW5kZXgsIGJvb2wgdmlzaWJpbGl0eSk7CiAKIC8qCiAgKiBBIHNtYWxsIG1vZGVzZXQg QVBJCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMgYi90ZXN0cy9rbXNfcGxh bmVfbG93cmVzLmMKaW5kZXggNTFiYjdjZDguLjBiNzg1NzNmIDEwMDY0NAotLS0gYS90ZXN0cy9r bXNfcGxhbmVfbG93cmVzLmMKKysrIGIvdGVzdHMva21zX3BsYW5lX2xvd3Jlcy5jCkBAIC0zOSw3 ICszOSw4IEBAIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGF0b21pYyBtb2RlIHNldHRpbmcg d2l0aCBhIHBsYW5lIGJ5IHN3aXRjaGluZyBiZXR3ZWVuCiB0eXBlZGVmIHN0cnVjdCB7CiAJaW50 IGRybV9mZDsKIAlpZ3RfZGlzcGxheV90IGRpc3BsYXk7Ci0Jc3RydWN0IGlndF9mYiAqZmI7CisJ c3RydWN0IGlndF9mYiBmYl9wcmltYXJ5OworCXN0cnVjdCBpZ3RfZmIgZmJfcGxhbmU7CiB9IGRh dGFfdDsKIAogc3RhdGljIGRybU1vZGVNb2RlSW5mbwpAQCAtNjQsMjQgKzY1LDYgQEAgZ2V0X2xv d3Jlc19tb2RlKGludCBkcm1mZCwgaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVNb2RlSW5m byAqbW9kZV9kZWZhdWx0KQogCXJldHVybiBtb2RlOwogfQogCi1zdGF0aWMgdm9pZAotdGVzdF9m aW5pKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKQot ewotCWlndF9wbGFuZV90ICpwbGFuZTsKLQotCS8qIHJlc3RvcmUgb3JpZ2luYWwgbW9kZSAqLwot CWlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShvdXRwdXQsIE5VTEwpOwotCi0JZm9yX2VhY2hfcGxh bmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgcGxhbmUpCi0JCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsIE5VTEwpOwotCi0JLyogcmVzZXQgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBpcGUg Ki8KLQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwotCi0JZnJlZShkYXRh LT5mYik7Ci0JZGF0YS0+ZmIgPSBOVUxMOwotfQotCiBzdGF0aWMgdm9pZAogY2hlY2tfbW9kZShk cm1Nb2RlTW9kZUluZm8gKm1vZGUxLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUyKQogewpAQCAtOTAs MTc1ICs3MywxNjAgQEAgY2hlY2tfbW9kZShkcm1Nb2RlTW9kZUluZm8gKm1vZGUxLCBkcm1Nb2Rl TW9kZUluZm8gKm1vZGUyKQogCWlndF9hc3NlcnRfZXEobW9kZTEtPnZyZWZyZXNoLCBtb2RlMi0+ dnJlZnJlc2gpOwogfQogCi1zdGF0aWMgZHJtTW9kZU1vZGVJbmZvICoKLXRlc3Rfc2V0dXAoZGF0 YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgdWludDY0X3QgbW9kaWZpZXIsCi0JICAgaWd0X291 dHB1dF90ICpvdXRwdXQpCisvKgorICogUmV0dXJuIGZhbHNlIGlmIHRlc3Qgb24gdGhpcyBwbGFu ZSBzaG91bGQgYmUgc2tpcHBlZAorICovCitzdGF0aWMgYm9vbAorc2V0dXBfcGxhbmUoZGF0YV90 ICpkYXRhLCBpZ3RfcGxhbmVfdCAqcGxhbmUsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKKwkgICAg dWludDY0X3QgbW9kaWZpZXIpCiB7Ci0JZHJtTW9kZU1vZGVJbmZvICptb2RlOwotCWludCBzaXpl OwotCWludCBpID0gMSwgeCwgeTsKLQlpZ3RfcGxhbmVfdCAqcGxhbmU7Ci0KLQlpZ3Rfc2tpcF9v bighaWd0X2Rpc3BsYXlfaGFzX2Zvcm1hdF9tb2QoJmRhdGEtPmRpc3BsYXksCi0JCQkJCQlEUk1f Rk9STUFUX1hSR0I4ODg4LAotCQkJCQkJbW9kaWZpZXIpKTsKLQotCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBwaXBlKTsKLQotCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7 Ci0KLQlkYXRhLT5mYiA9IGNhbGxvYyhkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVz LCBzaXplb2Yoc3RydWN0IGlndF9mYikpOwotCWlndF9hc3NlcnRfZihkYXRhLT5mYiwgIkZhaWxl ZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICVkIEZCc1xuIiwKLQkgICAgICAgICAgICAgZGF0YS0+ ZGlzcGxheS5waXBlc1twaXBlXS5uX3BsYW5lcyk7Ci0KLQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRh dGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAotCQkJICAgIERSTV9G T1JNQVRfWFJHQjg4ODgsCi0JCQkgICAgbW9kaWZpZXIsCi0JCQkgICAgMC4wLCAwLjAsIDEuMCwK LQkJCSAgICAmZGF0YS0+ZmJbMF0pOwotCi0JLyogeWVsbG93IHNwcml0ZSBwbGFuZSBpbiBsb3dl ciBsZWZ0IGNvcm5lciAqLwotCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXks IHBpcGUsIHBsYW5lKSB7Ci0JCXVpbnQ2NF90IHBsYW5lX21vZGlmaWVyOwotCQl1aW50MzJfdCBw bGFuZV9mb3JtYXQ7Ci0KLQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1B UlkpIHsKLQkJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYlswXSk7Ci0JCQljb250 aW51ZTsKLQkJfQotCi0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1Ip Ci0JCQlzaXplID0gNjQ7Ci0JCWVsc2UKLQkJCXNpemUgPSBTSVpFOwotCi0JCXggPSAwOwotCQl5 ID0gbW9kZS0+dmRpc3BsYXkgLSBzaXplOwotCi0JCXBsYW5lX2Zvcm1hdCA9IHBsYW5lLT50eXBl ID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiA/Ci0JCQlEUk1fRk9STUFUX0FSR0I4ODg4IDogRFJN X0ZPUk1BVF9YUkdCODg4ODsKLQotCQlwbGFuZV9tb2RpZmllciA9IHBsYW5lLT50eXBlID09IERS TV9QTEFORV9UWVBFX0NVUlNPUiA/Ci0JCQlMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIDogbW9k aWZpZXI7CisJdWludDY0X3QgcGxhbmVfbW9kaWZpZXI7CisJdWludDMyX3QgcGxhbmVfZm9ybWF0 OworCWludCBzaXplLCB4LCB5OworCisJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBF X1BSSU1BUlkpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExB TkVfVFlQRV9DVVJTT1IpCisJCXNpemUgPSA2NDsKKwllbHNlCisJCXNpemUgPSBTSVpFOworCisJ eCA9IDA7CisJeSA9IG1vZGUtPnZkaXNwbGF5IC0gc2l6ZTsKKworCWlmIChwbGFuZS0+dHlwZSA9 PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKKwkJcGxhbmVfZm9ybWF0ID0gRFJNX0ZPUk1BVF9B UkdCODg4ODsKKwkJcGxhbmVfbW9kaWZpZXIgPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwor CX0gZWxzZSB7CisJCXBsYW5lX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7CisJCXBsYW5l X21vZGlmaWVyID0gbW9kaWZpZXI7CisJfQogCi0JCWlndF9za2lwX29uKCFpZ3RfcGxhbmVfaGFz X2Zvcm1hdF9tb2QocGxhbmUsIHBsYW5lX2Zvcm1hdCwKLQkJCQkJCSAgICAgIHBsYW5lX21vZGlm aWVyKSk7CisJaWYgKCFpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIHBsYW5lX2Zvcm1h dCwgcGxhbmVfbW9kaWZpZXIpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQkJaWd0X2NyZWF0ZV9jb2xv cl9mYihkYXRhLT5kcm1fZmQsCi0JCQkJICAgIHNpemUsIHNpemUsCi0JCQkJICAgIHBsYW5lX2Zv cm1hdCwKLQkJCQkgICAgcGxhbmVfbW9kaWZpZXIsCi0JCQkJICAgIDEuMCwgMS4wLCAwLjAsCi0J CQkJICAgICZkYXRhLT5mYltpXSk7CisJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1fZmQs IHNpemUsIHNpemUsIHBsYW5lX2Zvcm1hdCwKKwkJCSAgICBwbGFuZV9tb2RpZmllciwgMS4wLCAx LjAsIDAuMCwgJmRhdGEtPmZiX3BsYW5lKTsKKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5l LCB4LCB5KTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmJfcGxhbmUpOwogCi0J CWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIHgsIHkpOwotCQlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lLCAmZGF0YS0+ZmJbaSsrXSk7Ci0JfQorCXJldHVybiB0cnVlOworfQogCi0JcmV0dXJu IG1vZGU7CitzdGF0aWMgaWd0X3BsYW5lX3QgKgorcHJpbWFyeV9wbGFuZV9nZXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUpCit7CisJdW5zaWduZWQgcGxhbmVfcHJpbWFy eV9pZCA9IGRpc3BsYXktPnBpcGVzW3BpcGVdLnBsYW5lX3ByaW1hcnk7CisJcmV0dXJuICZkaXNw bGF5LT5waXBlc1twaXBlXS5wbGFuZXNbcGxhbmVfcHJpbWFyeV9pZF07CiB9CiAKLXN0YXRpYyB2 b2lkCi10ZXN0X3BsYW5lX3Bvc2l0aW9uX3dpdGhfb3V0cHV0KGRhdGFfdCAqZGF0YSwgZW51bSBw aXBlIHBpcGUsCitzdGF0aWMgdW5zaWduZWQKK3Rlc3RfcGxhbmVzX29uX3BpcGVfd2l0aF9vdXRw dXQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwKIAkJCQlpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwgdWludDY0X3QgbW9kaWZpZXIpCiB7Ci0JaWd0X2NyY190IGNyY19oaXJlczEsIGNyY19oaXJl czI7Ci0JaWd0X2NyY190IGNyY19sb3dyZXM7Ci0JZHJtTW9kZU1vZGVJbmZvIG1vZGVfbG93cmVz OwotCWRybU1vZGVNb2RlSW5mbyAqbW9kZTEsICptb2RlMiwgKm1vZGUzOwotCWludCByZXQ7CisJ ZHJtTW9kZU1vZGVJbmZvICptb2RlLCBtb2RlX2xvd3JlczsKIAlpZ3RfcGlwZV9jcmNfdCAqcGlw ZV9jcmM7CisJdW5zaWduZWQgdGVzdGVkID0gMDsKKwlpZ3RfcGxhbmVfdCAqcGxhbmU7CiAKIAlp Z3RfaW5mbygiVGVzdGluZyBjb25uZWN0b3IgJXMgdXNpbmcgcGlwZSAlc1xuIiwKIAkJIGlndF9v dXRwdXRfbmFtZShvdXRwdXQpLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7CiAKLQltb2RlMSA9 IHRlc3Rfc2V0dXAoZGF0YSwgcGlwZSwgbW9kaWZpZXIsIG91dHB1dCk7CisJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHBpcGUpOworCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1 dCk7CisJbW9kZV9sb3dyZXMgPSBnZXRfbG93cmVzX21vZGUoZGF0YS0+ZHJtX2ZkLCBvdXRwdXQs IG1vZGUpOwogCi0JbW9kZV9sb3dyZXMgPSBnZXRfbG93cmVzX21vZGUoZGF0YS0+ZHJtX2ZkLCBv dXRwdXQsIG1vZGUxKTsKKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+ aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIG1v ZGlmaWVyLCAwLjAsIDAuMCwgMS4wLAorCQkJICAgICZkYXRhLT5mYl9wcmltYXJ5KTsKKwlpZ3Rf cGxhbmVfc2V0X2ZiKHByaW1hcnlfcGxhbmVfZ2V0KCZkYXRhLT5kaXNwbGF5LCBwaXBlKSwKKwkJ CSAmZGF0YS0+ZmJfcHJpbWFyeSk7CiAKLQlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0Migm ZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Ci0JaWd0X3NraXBfb24ocmV0ICE9IDApOwor CXBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsCisJCQkJICAg IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKIAotCXBpcGVfY3JjID0gaWd0X3BpcGVfY3Jj X25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKLQlp Z3RfcGlwZV9jcmNfc3RhcnQocGlwZV9jcmMpOwotCWlndF9waXBlX2NyY19nZXRfc2luZ2xlKHBp cGVfY3JjLCAmY3JjX2hpcmVzMSk7CisJLyogeWVsbG93IHNwcml0ZSBwbGFuZSBpbiBsb3dlciBs ZWZ0IGNvcm5lciAqLworCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBp cGUsIHBsYW5lKSB7CisJCWlndF9jcmNfdCBjcmNfaGlyZXMxLCBjcmNfaGlyZXMyOworCQlpbnQg cjsKIAotCWlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShkYXRhLT5kcm1fZmQsIHBpcGUsIHRydWUp OworCQlpZiAoIXNldHVwX3BsYW5lKGRhdGEsIHBsYW5lLCBtb2RlLCBtb2RpZmllcikpCisJCQlj b250aW51ZTsKIAotCS8qIHN3aXRjaCB0byBsb3dlciByZXNvbHV0aW9uICovCi0JaWd0X291dHB1 dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgJm1vZGVfbG93cmVzKTsKLQlpZ3Rfb3V0cHV0X3NldF9w aXBlKG91dHB1dCwgcGlwZSk7CisJCXIgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0MigmZGF0YS0+ ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJCWlmIChyKSB7CisJCQlpZ3RfZGVidWcoIkNvbW1p dCBmYWlsZWQgJWkiLCByKTsKKwkJCWNvbnRpbnVlOworCQl9CiAKLQltb2RlMiA9IGlndF9vdXRw dXRfZ2V0X21vZGUob3V0cHV0KTsKKwkJaWd0X3BpcGVfY3JjX3N0YXJ0KHBpcGVfY3JjKTsKKwkJ aWd0X3BpcGVfY3JjX2dldF9zaW5nbGUocGlwZV9jcmMsICZjcmNfaGlyZXMxKTsKIAotCWNoZWNr X21vZGUoJm1vZGVfbG93cmVzLCBtb2RlMik7CisJCWlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShk YXRhLT5kcm1fZmQsIHBpcGUsIHBsYW5lLT5pbmRleCwKKwkJCQkJIHRydWUpOwogCi0JaWd0X2Rp c3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Ci0JaWd0X3BpcGVf Y3JjX2dldF9jdXJyZW50KGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlX2NyYywgJmNyY19sb3dy ZXMpOworCQkvKiBzd2l0Y2ggdG8gbG93ZXIgcmVzb2x1dGlvbiAqLworCQlpZ3Rfb3V0cHV0X292 ZXJyaWRlX21vZGUob3V0cHV0LCAmbW9kZV9sb3dyZXMpOworCQlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgcGlwZSk7CisJCWNoZWNrX21vZGUoJm1vZGVfbG93cmVzLCBpZ3Rfb3V0cHV0X2dl dF9tb2RlKG91dHB1dCkpOwogCi0JaWd0X2Fzc2VydF9wbGFuZV92aXNpYmxlKGRhdGEtPmRybV9m ZCwgcGlwZSwgZmFsc2UpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBD T01NSVRfQVRPTUlDKTsKIAotCS8qIHN3aXRjaCBiYWNrIHRvIGhpZ2hlciByZXNvbHV0aW9uICov Ci0JaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgTlVMTCk7Ci0JaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHBpcGUpOworCQlpZ3RfYXNzZXJ0X3BsYW5lX3Zpc2libGUoZGF0YS0+ ZHJtX2ZkLCBwaXBlLCBwbGFuZS0+aW5kZXgsCisJCQkJCSBmYWxzZSk7CiAKLQltb2RlMyA9IGln dF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwkJLyogc3dpdGNoIGJhY2sgdG8gaGlnaGVyIHJl c29sdXRpb24gKi8KKwkJaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgTlVMTCk7CisJ CWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKwkJY2hlY2tfbW9kZShtb2RlLCBp Z3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCkpOwogCi0JY2hlY2tfbW9kZShtb2RlMSwgbW9kZTMp OworCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsK IAotCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwor CQlpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGF0YS0+ZHJtX2ZkLCBwaXBlX2NyYywgJmNyY19o aXJlczIpOwogCi0JaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmRpc3BsYXkuZHJtX2Zk LCBwaXBlX2NyYywgJmNyY19oaXJlczIpOworCQlpZ3RfYXNzZXJ0X3BsYW5lX3Zpc2libGUoZGF0 YS0+ZHJtX2ZkLCBwaXBlLCBwbGFuZS0+aW5kZXgsCisJCQkJCSB0cnVlKTsKIAotCWlndF9hc3Nl cnRfcGxhbmVfdmlzaWJsZShkYXRhLT5kcm1fZmQsIHBpcGUsIHRydWUpOworCQlpZ3RfYXNzZXJ0 X2NyY19lcXVhbCgmY3JjX2hpcmVzMSwgJmNyY19oaXJlczIpOwogCi0JaWd0X2Fzc2VydF9jcmNf ZXF1YWwoJmNyY19oaXJlczEsICZjcmNfaGlyZXMyKTsKKwkJaWd0X3BpcGVfY3JjX3N0b3AocGlw ZV9jcmMpOwogCi0JaWd0X3BpcGVfY3JjX3N0b3AocGlwZV9jcmMpOwotCWlndF9waXBlX2NyY19m cmVlKHBpcGVfY3JjKTsKKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7CisJCWlndF9y ZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfcGxhbmUpOworCQl0ZXN0ZWQrKzsKKwl9 CiAKLQl0ZXN0X2ZpbmkoZGF0YSwgb3V0cHV0LCBwaXBlKTsKLX0KKwlpZ3RfcGlwZV9jcmNfZnJl ZShwaXBlX2NyYyk7CiAKLXN0YXRpYyB2b2lkCi10ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGFfdCAq ZGF0YSwgZW51bSBwaXBlIHBpcGUsIHVpbnQ2NF90IG1vZGlmaWVyKQotewotCWlndF9vdXRwdXRf dCAqb3V0cHV0OworCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeV9wbGFuZV9nZXQoJmRhdGEtPmRp c3BsYXksIHBpcGUpLCBOVUxMKTsKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEt PmZiX3ByaW1hcnkpOworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOwog Ci0JZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIG91 dHB1dCkKLQkJdGVzdF9wbGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChkYXRhLCBwaXBlLCBvdXRw dXQsIG1vZGlmaWVyKTsKKwlyZXR1cm4gdGVzdGVkOwogfQogCiBzdGF0aWMgdm9pZAotcnVuX3Rl c3RzX2Zvcl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCit0ZXN0X3BsYW5lc19v bl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIHVpbnQ2NF90IG1vZGlmaWVyKQog ewotCWlndF9maXh0dXJlIHsKLQkJaWd0X3NraXBfb24ocGlwZSA+PSBkYXRhLT5kaXNwbGF5Lm5f cGlwZXMpOwotCi0JCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRp c3BsYXksIHBpcGUpOwotCX0KLQotCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtdGlsaW5nLW5vbmUi LAotCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKLQkJdGVzdF9wbGFuZV9wb3NpdGlv bihkYXRhLCBwaXBlLCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FKTsKKwlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKKwl1bnNpZ25lZCB0ZXN0ZWQgPSAwOwogCi0JaWd0X3N1YnRlc3RfZigicGlwZS0l cy10aWxpbmcteCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQotCQl0ZXN0X3Bs YW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsK KwlpZ3Rfc2tpcF9vbihwaXBlID49IGRhdGEtPmRpc3BsYXkubl9waXBlcyk7CisJaWd0X2Rpc3Bs YXlfcmVxdWlyZV9vdXRwdXRfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSk7CisJaWd0X3Nr aXBfb24oIWlndF9kaXNwbGF5X2hhc19mb3JtYXRfbW9kKCZkYXRhLT5kaXNwbGF5LAorCQkJCQkJ RFJNX0ZPUk1BVF9YUkdCODg4OCwgbW9kaWZpZXIpKTsKIAotCWlndF9zdWJ0ZXN0X2YoInBpcGUt JXMtdGlsaW5nLXkiLAotCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKLQkJdGVzdF9w bGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCk7 CisJZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIG91 dHB1dCkKKwkJdGVzdGVkICs9IHRlc3RfcGxhbmVzX29uX3BpcGVfd2l0aF9vdXRwdXQoZGF0YSwg cGlwZSwgb3V0cHV0LAorCQkJCQkJCSAgbW9kaWZpZXIpOwogCi0JaWd0X3N1YnRlc3RfZigicGlw ZS0lcy10aWxpbmcteWYiLAotCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKLQkJdGVz dF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQpOworCWlndF9hc3NlcnQodGVzdGVkID4gMCk7CiB9CiAKLXN0YXRpYyBkYXRhX3QgZGF0YTsK LQogaWd0X21haW4KIHsKKwlkYXRhX3QgZGF0YSA9IHt9OwogCWVudW0gcGlwZSBwaXBlOwogCiAJ aWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwpAQCAtMjczLDkgKzI0MSwyMyBAQCBpZ3RfbWFpbgog CQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKIAl9CiAKLQlmb3JfZWFjaF9w aXBlX3N0YXRpYyhwaXBlKQotCQlpZ3Rfc3VidGVzdF9ncm91cAotCQkJcnVuX3Rlc3RzX2Zvcl9w aXBlKCZkYXRhLCBwaXBlKTsKKwlmb3JfZWFjaF9waXBlX3N0YXRpYyhwaXBlKSB7CisJCWlndF9z dWJ0ZXN0X2YoInBpcGUtJXMtdGlsaW5nLW5vbmUiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkK KwkJCXRlc3RfcGxhbmVzX29uX3BpcGUoJmRhdGEsIHBpcGUsCisJCQkJCSAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLXRpbGluZy14Iiwg a21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJCQl0ZXN0X3BsYW5lc19vbl9waXBlKCZkYXRhLCBw aXBlLAorCQkJCQkgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpOworCisJCWlndF9z dWJ0ZXN0X2YoInBpcGUtJXMtdGlsaW5nLXkiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJ CXRlc3RfcGxhbmVzX29uX3BpcGUoJmRhdGEsIHBpcGUsCisJCQkJCSAgICBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRCk7CisKKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcy10aWxpbmcteWYi LCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCXRlc3RfcGxhbmVzX29uX3BpcGUoJmRhdGEs IHBpcGUsCisJCQkJCSAgICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpOworCX0KIAog CWlndF9maXh0dXJlIHsKIAkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKLS0gCjIu MjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2