From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 356E76EEDE for ; Thu, 13 Dec 2018 15:55:56 +0000 (UTC) From: Paul Kocialkowski Date: Thu, 13 Dec 2018 16:55:33 +0100 Message-Id: <20181213155533.18048-13-paul.kocialkowski@bootlin.com> In-Reply-To: <20181213155533.18048-1-paul.kocialkowski@bootlin.com> References: <20181213155533.18048-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 12/12] chamelium: Add a CRC-based display test for randomized planes 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 , Eben Upton , Boris Brezillon , Thomas Petazzoni List-ID: VGhpcyBpbnRyb2R1Y2VzIGEgbmV3IHRlc3QgZm9yIHRoZSBDaGFtZWxpdW0sIHRoYXQgc2V0cyB1 cCBwbGFuZXMKd2l0aCByYW5kb21pemVkIHByb3BlcnRpZXMgc3VjaCBhcyB0aGUgZm9ybWF0LCBk aW1lbnNpb25zLCBwb3NpdGlvbiwKaW4tZnJhbWVidWZmZXIgb2Zmc2V0cyBhbmQgc3RyaWRlLiBU aGUgQ2hhbWVsaXVtIGNhcHR1cmUgaXMgY2hlY2tlZAphZ2FpbnN0IHRoZSByZWZlcmVuY2UgZ2Vu ZXJhdGVkIGJ5IGNhaXJvIHdpdGggYSBDUkMuCgpUaGlzIHRlc3QgYWxzbyBpbmNsdWRlcyB0ZXN0 aW5nIG9mIHRoZSBWQzQtc3BlY2lmaWMgVC10aWxlZCBtb2RlCihpbiBYUjI0IGZvcm1hdCkuCgpT aW5jZSB0aGlzIHRlc3QgZG9lcyBub3Qgc2hhcmUgbXVjaCB3aXRoIHByZXZpb3VzIENSQy1iYXNl ZCBkaXNwbGF5CnRlc3RzIChlc3BlY2lhbGx5IHJlZ2FyZGluZyBLTVMgY29uZmlndXJhdGlvbiks IG1vc3Qgb2YgdGhlIGNvZGUgaXMKbm90IHNoYXJlZCB3aXRoIG90aGVyIHRlc3RzLgoKVGhpcyB0 ZXN0IGNhbiBiZSBkZXJpdmVkIHdpdGggcmVwcm9kdWNpYmxlIHByb3BlcnRpZXMgZm9yIHJlZ3Jl c3Npb24KdGVzdGluZyBpbiB0aGUgZnV0dXJlLiBGb3Igbm93LCBpdCBzZXJ2ZXMgYXMgYSBmdXp6 aW5nIHRlc3QKClNpZ25lZC1vZmYtYnk6IFBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtv d3NraUBib290bGluLmNvbT4KLS0tCiB0ZXN0cy9rbXNfY2hhbWVsaXVtLmMgfCAyOTYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjk2 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY2hhbWVsaXVtLmMgYi90ZXN0 cy9rbXNfY2hhbWVsaXVtLmMKaW5kZXggN2Q5NWE4YmM1MmYzLi5lZmQ3MGYwZjFiNTkgMTAwNjQ0 Ci0tLSBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYworKysgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMK QEAgLTI2LDYgKzI2LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImlndC5o IgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlndF92YzQuaCIKIAogI2luY2x1 ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03MDMsNiArNzA1LDI5NSBAQCB0 ZXN0X2Rpc3BsYXlfZnJhbWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9y dCAqcG9ydCkKIAlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwogfQogCitzdGF0aWMg dWludDMyX3QgcmFuZG9tX3BsYW5lX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX0FCR1I4ODg4 LAorCURSTV9GT1JNQVRfQVJHQjE1NTUsCisJRFJNX0ZPUk1BVF9BUkdCODg4OCwKKwlEUk1fRk9S TUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX0JHUjU2NSwKKwlEUk1fRk9STUFUX1JHQjg4OCwKKwlE Uk1fRk9STUFUX0JHUjg4OCwKKwlEUk1fRk9STUFUX1hCR1I4ODg4LAorCURSTV9GT1JNQVRfWFJH QjE1NTUsCisJRFJNX0ZPUk1BVF9YUkdCODg4OCwKK307CisKK3N0YXRpYyB2b2lkIHJhbmRvbWl6 ZV9wbGFuZV9kaW1lbnNpb25zKGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKKwkJCQkgICAgICAgdWlu dDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0LAorCQkJCSAgICAgICB1aW50MzJfdCAqc3Jj X3gsIHVpbnQzMl90ICpzcmNfeSwKKwkJCQkgICAgICAgdWludDMyX3QgKmNydGNfdywgdWludDMy X3QgKmNydGNfaCwKKwkJCQkgICAgICAgaW50MzJfdCAqY3J0Y194LCBpbnQzMl90ICpjcnRjX3kp Cit7CisJLyogUmFuZG9taXplIHdpZHRoIGFuZCBoZWlnaHQgaW4gdGhlIG1vZGUgZGltZW5zaW9u cyByYW5nZS4gKi8KKwkqd2lkdGggPSAocmFuZCgpICUgbW9kZS0+aGRpc3BsYXkpICsgMTsKKwkq aGVpZ2h0ID0gKHJhbmQoKSAlIG1vZGUtPnZkaXNwbGF5KSArIDE7CisKKwkvKgorCSAqIFJhbmRv bWl6ZSBzb3VyY2Ugb2Zmc2V0LCBidXQga2VlcCBhdCBsZWFzdCBoYWxmIG9mIHRoZQorCSAqIG9y aWdpbmFsIHNpemUuCisJICovCisJKnNyY194ID0gcmFuZCgpICUgKCp3aWR0aCAvIDIpOworCSpz cmNfeSA9IHJhbmQoKSAlICgqaGVpZ2h0IC8gMik7CisKKwkvKgorCSAqIFRoZSBvbi1jcnRjIHNp emUgZG9lcyBub3QgaW5jbHVkZSB0aGUgc291cmNlIG9mZnNldCwgc28gaXQKKwkgKiBuZWVkcyB0 byBiZSBzdWJ0cmFjdGVkIHRvIGF2b2lkIHNjYWxpbmcuCisJICovCisJKmNydGNfdyA9ICp3aWR0 aCAtICpzcmNfeDsKKwkqY3J0Y19oID0gKmhlaWdodCAtICpzcmNfeTsKKworCS8qCisJICogUmFu ZG9taXplIHRoZSBvbi1jcnRjIHBvc2l0aW9uIGFuZCBhbGxvdyB0aGUgcGxhbmUgdG8gZ28KKwkg KiBvZmYtZGlzcGxheSBieSB1cCB0byBoYWxmIG9mIGl0cyB3aWR0aCBhbmQgaGVpZ2h0LgorCSAq LworCSpjcnRjX3ggPSAocmFuZCgpICUgbW9kZS0+aGRpc3BsYXkpIC0gKndpZHRoIC8gMjsKKwkq Y3J0Y195ID0gKHJhbmQoKSAlIG1vZGUtPnZkaXNwbGF5KSAtICpoZWlnaHQgLyAyOworfQorCitz dGF0aWMgdm9pZCBibGl0X3BsYW5lX2NhaXJvKGRhdGFfdCAqZGF0YSwgY2Fpcm9fc3VyZmFjZV90 ICpyZXN1bHQsCisJCQkgICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKKwkJCSAg ICAgdWludDMyX3QgY3J0Y193LCB1aW50MzJfdCBjcnRjX2gsCisJCQkgICAgIGludDMyX3QgY3J0 Y194LCBpbnQzMl90IGNydGNfeSwKKwkJCSAgICAgc3RydWN0IGlndF9mYiAqZmIpCit7CisJY2Fp cm9fc3VyZmFjZV90ICpzdXJmYWNlOworCWludDMyX3QgeCwgeTsKKwljYWlyb190ICpjcjsKKwor CXN1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1cmZhY2UoZGF0YS0+ZHJtX2ZkLCBmYik7CisKKwl4 ID0gY3J0Y194IC0gKGludDMyX3QpIHNyY194OworCXkgPSBjcnRjX3kgLSAoaW50MzJfdCkgc3Jj X3k7CisKKwljciA9IGNhaXJvX2NyZWF0ZShyZXN1bHQpOworCisJY2Fpcm9fc2V0X3NvdXJjZV9z dXJmYWNlKGNyLCBzdXJmYWNlLCB4LCB5KTsKKwljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFj ZSk7CisKKwkvKiBDbGlwIHRoZSBzdXJmYWNlIHRvIGEgcmVjdGFuZ2xlIGlmIG5lZWRlZC4gKi8K KwlpZiAoc3JjX3ggfHwgc3JjX3kpIHsKKwkJY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjcnRjX3gsIGNy dGNfeSwgY3J0Y193LCBjcnRjX2gpOworCQljYWlyb19jbGlwKGNyKTsKKwl9CisKKwljYWlyb19w YWludChjcik7CisKKwljYWlyb19kZXN0cm95KGNyKTsKK30KKworc3RhdGljIHZvaWQgY29uZmln dXJlX3BsYW5lKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNy Y195LAorCQkJICAgIHVpbnQzMl90IGNydGNfdywgdWludDMyX3QgY3J0Y19oLCBpbnQzMl90IGNy dGNfeCwKKwkJCSAgICBpbnQzMl90IGNydGNfeSwgc3RydWN0IGlndF9mYiAqZmIpCit7CisJaWd0 X3BsYW5lX3NldF9mYihwbGFuZSwgZmIpOworCisJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFu ZSwgY3J0Y194LCBjcnRjX3kpOworCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgY3J0Y193LCBj cnRjX2gpOworCisJaWd0X2ZiX3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIHNyY194LCBzcmNfeSk7 CisJLyogRnJhbWVidWZmZXIgc291cmNlIHNpemUgc2V0IHRvIG9uLUNSVEMgc2l6ZSB0byBhdm9p ZCBzY2FsaW5nLiAqLworCWlndF9mYl9zZXRfc2l6ZShmYiwgcGxhbmUsIGNydGNfdywgY3J0Y19o KTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9kaXNwbGF5X3BsYW5lc19yYW5kb20oZGF0YV90ICpk YXRhLAorCQkJCSAgICAgICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCisJCQkJICAgICAg IGVudW0gY2hhbWVsaXVtX2NoZWNrIGNoZWNrKQoreworCWlndF9vdXRwdXRfdCAqb3V0cHV0Owor CWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeV9wbGFuZTsKKwlz dHJ1Y3QgaWd0X2ZiIHByaW1hcnlfZmI7CisJc3RydWN0IGlndF9mYiByZXN1bHRfZmI7CisJc3Ry dWN0IGlndF9mYiAqb3ZlcmxheV9mYnM7CisJaWd0X2NyY190ICpjcmM7CisJaWd0X2NyY190ICpl eHBlY3RlZF9jcmM7CisJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSAqZmJfY3Jj OworCXVuc2lnbmVkIGludCBvdmVybGF5X3BsYW5lc19tYXggPSAwOworCXVuc2lnbmVkIGludCBv dmVybGF5X3BsYW5lc19jb3VudDsKKwljYWlyb19zdXJmYWNlX3QgKnJlc3VsdF9zdXJmYWNlOwor CWludCBjYXB0dXJlZF9mcmFtZV9jb3VudDsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQgZmJfaWQ7 CisKKwlpZ3RfYXNzZXJ0KGNoZWNrID09IENIQU1FTElVTV9DSEVDS19DUkMpOworCisJc3JhbmQo dGltZShOVUxMKSk7CisKKwlyZXNldF9zdGF0ZShkYXRhLCBwb3J0KTsKKworCS8qIEZpbmQgdGhl IGNvbm5lY3RvciBhbmQgcGlwZS4gKi8KKwlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBw b3J0KTsKKworCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisKKwkvKiBHZXQg YSBmcmFtZWJ1ZmZlciBmb3IgdGhlIHByaW1hcnkgcGxhbmUuICovCisJcHJpbWFyeV9wbGFuZSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KTsKKwlpZ3RfYXNzZXJ0KHByaW1hcnlfcGxhbmUpOworCisJZmJfaWQgPSBjaGFtZWxpdW1fZ2V0 X3BhdHRlcm5fZmIoZGF0YSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJCQkg RFJNX0ZPUk1BVF9YUkdCODg4OCwgNjQsICZwcmltYXJ5X2ZiKTsKKwlpZ3RfYXNzZXJ0KGZiX2lk ID4gMCk7CisKKwkvKiBHZXQgYSBmcmFtZWJ1ZmZlciBmb3IgdGhlIGNhaXJvIGNvbXBvc2l0aW9u IHJlc3VsdC4gKi8KKwlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5o ZGlzcGxheSwKKwkJCSAgICAgIG1vZGUtPnZkaXNwbGF5LCBEUk1fRk9STUFUX1hSR0I4ODg4LAor CQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwgJnJlc3VsdF9mYik7CisJaWd0X2Fz c2VydChmYl9pZCA+IDApOworCisJcmVzdWx0X3N1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1cmZh Y2UoZGF0YS0+ZHJtX2ZkLCAmcmVzdWx0X2ZiKTsKKworCS8qIFBhaW50IHRoZSBwcmltYXJ5IGZy YW1lYnVmZmVyIG9uIHRoZSByZXN1bHQgc3VyZmFjZS4gKi8KKwlibGl0X3BsYW5lX2NhaXJvKGRh dGEsIHJlc3VsdF9zdXJmYWNlLCAwLCAwLCAwLCAwLCAwLCAwLCAmcHJpbWFyeV9mYik7CisKKwkv KiBDb25maWd1cmUgdGhlIHByaW1hcnkgcGxhbmUuICovCisJaWd0X3BsYW5lX3NldF9mYihwcmlt YXJ5X3BsYW5lLCAmcHJpbWFyeV9mYik7CisKKwlvdmVybGF5X3BsYW5lc19tYXggPQorCQlpZ3Rf b3V0cHV0X2NvdW50X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKTsK KworCS8qIExpbWl0IHRoZSBudW1iZXIgb2YgcGxhbmVzIHRvIGEgcmVhc29uYWJsZSBzY2VuZS4g Ki8KKwlpZiAob3ZlcmxheV9wbGFuZXNfbWF4ID4gNCkKKwkJb3ZlcmxheV9wbGFuZXNfbWF4ID0g NDsKKworCW92ZXJsYXlfcGxhbmVzX2NvdW50ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxhbmVzX21h eCkgKyAxOworCWlndF9kZWJ1ZygiVXNpbmcgJWQgb3ZlcmxheSBwbGFuZXNcbiIsIG92ZXJsYXlf cGxhbmVzX2NvdW50KTsKKworCW92ZXJsYXlfZmJzID0gY2FsbG9jKHNpemVvZihzdHJ1Y3QgaWd0 X2ZiKSwgb3ZlcmxheV9wbGFuZXNfY291bnQpOworCisJZm9yIChpID0gMDsgaSA8IG92ZXJsYXlf cGxhbmVzX2NvdW50OyBpKyspIHsKKwkJc3RydWN0IGlndF9mYiAqb3ZlcmxheV9mYiA9ICZvdmVy bGF5X2Zic1tpXTsKKwkJaWd0X3BsYW5lX3QgKnBsYW5lOworCQlzdHJ1Y3QgaWd0X2ZiIHBhdHRl cm5fZmI7CisJCXVpbnQzMl90IG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oOworCQlpbnQzMl90 IG92ZXJsYXlfY3J0Y194LCBvdmVybGF5X2NydGNfeTsKKwkJdWludDMyX3Qgb3ZlcmxheV9jcnRj X3csIG92ZXJsYXlfY3J0Y19oOworCQl1aW50MzJfdCBvdmVybGF5X3NyY194LCBvdmVybGF5X3Ny Y195OworCQl1bnNpZ25lZCBpbnQgaW5kZXg7CisJCXVuc2lnbmVkIGludCBzdHJpZGVfbWluOwor CQl1bnNpZ25lZCBpbnQgc3RyaWRlOworCQlib29sIHZjNF90X3RpbGVkOworCQl1aW50MzJfdCBm b3JtYXQ7CisKKwkJcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlX2luZGV4KG91dHB1 dCwKKwkJCQkJCQlEUk1fUExBTkVfVFlQRV9PVkVSTEFZLAorCQkJCQkJCWkpOworCQlpZ3RfYXNz ZXJ0KHBsYW5lKTsKKworCQlyYW5kb21pemVfcGxhbmVfZGltZW5zaW9ucyhtb2RlLCAmb3Zlcmxh eV9mYl93LCAmb3ZlcmxheV9mYl9oLAorCQkJCQkgICAmb3ZlcmxheV9zcmNfeCwgJm92ZXJsYXlf c3JjX3ksCisJCQkJCSAgICZvdmVybGF5X2NydGNfdywgJm92ZXJsYXlfY3J0Y19oLAorCQkJCQkg ICAmb3ZlcmxheV9jcnRjX3gsICZvdmVybGF5X2NydGNfeSk7CisKKwkJaWd0X2RlYnVnKCJQbGFu ZSAlZDogb24tY3J0YyBzaXplICVkeCVkXG4iLCBpLCBvdmVybGF5X2NydGNfdywKKwkJCSAgb3Zl cmxheV9jcnRjX2gpOworCQlpZ3RfZGVidWcoIlBsYW5lICVkOiBvbi1jcnRjIHBvc2l0aW9uICVk eCVkXG4iLCBpLAorCQkJICBvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9jcnRjX3kpOworCQlpZ3Rf ZGVidWcoIlBsYW5lICVkOiBpbi1mcmFtZWJ1ZmZlciBwb3NpdGlvbiAlZHglZFxuIiwgaSwKKwkJ CSAgb3ZlcmxheV9zcmNfeCwgb3ZlcmxheV9zcmNfeSk7CisKKwkJLyogR2V0IGEgcGF0dGVybiBm cmFtZWJ1ZmZlciBmb3IgdGhlIG92ZXJsYXkgcGxhbmUuICovCisJCWZiX2lkID0gY2hhbWVsaXVt X2dldF9wYXR0ZXJuX2ZiKGRhdGEsIG92ZXJsYXlfZmJfdywKKwkJCQkJCSBvdmVybGF5X2ZiX2gs CisJCQkJCQkgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkJCSAzMiwgJnBhdHRlcm5fZmIpOwor CQlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisKKwkJLyogUmFuZG9taXplIHRoZSB1c2Ugb2YgdGls ZWQgbW9kZSB3aXRoIGEgMS80IHByb2JhYmlsaXR5LiAqLworCQlpbmRleCA9IHJhbmQoKSAlIDQ7 CisKKwkJaWYgKGlzX3ZjNF9kZXZpY2UoZGF0YS0+ZHJtX2ZkKSAmJiBpbmRleCA9PSAwKSB7CisJ CQlmb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4OworCQkJdmM0X3RfdGlsZWQgPSB0cnVlOwor CisJCQlpZ3RfZGVidWcoIlBsYW5lICVkOiBWQzQgVC10aWxlZCAlcyBmb3JtYXRcbiIsIGksCisJ CQkJICBpZ3RfZm9ybWF0X3N0cihmb3JtYXQpKTsKKwkJfSBlbHNlIHsKKwkJCS8qIFJhbmRvbWl6 ZSB0aGUgZm9ybWF0IHRvIHRlc3QuICovCisJCQlpbmRleCA9IHJhbmQoKSAlIEFSUkFZX1NJWkUo cmFuZG9tX3BsYW5lX2Zvcm1hdHMpOworCQkJZm9ybWF0ID0gcmFuZG9tX3BsYW5lX2Zvcm1hdHNb aW5kZXhdOworCQkJdmM0X3RfdGlsZWQgPSBmYWxzZTsKKworCQkJaWd0X2RlYnVnKCJQbGFuZSAl ZDogJXMgZm9ybWF0XG4iLCBpLAorCQkJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSk7CisJCX0K KworCQkvKiBDb252ZXJ0IHRoZSBwYXR0ZXJuIHRvIHRoZSB0ZXN0IGZvcm1hdCBpZiBuZWVkZWQu ICovCisJCWlmICh2YzRfdF90aWxlZCkgeworCQkJZmJfaWQgPSBpZ3RfdmM0X2ZiX3RfdGlsZWRf Y29udmVydChvdmVybGF5X2ZiLAorCQkJCQkJCSAgICZwYXR0ZXJuX2ZiKTsKKwkJCWlndF9hc3Nl cnQoZmJfaWQgPiAwKTsKKwkJfSBlbHNlIHsKKwkJCXN0cmlkZV9taW4gPSBvdmVybGF5X2ZiX3cg KgorCQkJCSAgICAgaWd0X2Zvcm1hdF9wbGFuZV9icHAoZm9ybWF0LCAwKSAvIDg7CisKKwkJCS8q IFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHdpdGggYXQgbW9zdCB0d2ljZSB0aGUgbWluaW11bS4gKi8K KwkJCXN0cmlkZSA9IChyYW5kKCkgJSBzdHJpZGVfbWluKSArIHN0cmlkZV9taW47CisKKwkJCS8q IFBpeG1hbiByZXF1aXJlcyB0aGUgc3RyaWRlIHRvIGJlIGFsaWduZWQgdG8gMzItYnl0ZSB3b3Jk cy4gKi8KKwkJCXN0cmlkZSA9IEFMSUdOKHN0cmlkZSwgc2l6ZW9mKHVpbnQzMl90KSk7CisKKwkJ CWlndF9kZWJ1ZygiUGxhbmUgJWQ6IHVzaW5nIHN0cmlkZSAlZFxuIiwgaSwgc3RyaWRlKTsKKwor CQkJZmJfaWQgPSBpZ3RfZmJfY29udmVydF93aXRoX3N0cmlkZShvdmVybGF5X2ZiLAorCQkJCQkJ CSAgICZwYXR0ZXJuX2ZiLAorCQkJCQkJCSAgIGZvcm1hdCwgc3RyaWRlKTsKKwkJCWlndF9hc3Nl cnQoZmJfaWQpOworCQl9CisKKwkJYmxpdF9wbGFuZV9jYWlybyhkYXRhLCByZXN1bHRfc3VyZmFj ZSwgb3ZlcmxheV9zcmNfeCwKKwkJCQkgb3ZlcmxheV9zcmNfeSwgb3ZlcmxheV9jcnRjX3csIG92 ZXJsYXlfY3J0Y19oLAorCQkJCSBvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9jcnRjX3ksICZwYXR0 ZXJuX2ZiKTsKKworCQljb25maWd1cmVfcGxhbmUocGxhbmUsIG92ZXJsYXlfc3JjX3gsIG92ZXJs YXlfc3JjX3ksCisJCQkJb3ZlcmxheV9jcnRjX3csIG92ZXJsYXlfY3J0Y19oLCBvdmVybGF5X2Ny dGNfeCwKKwkJCQlvdmVybGF5X2NydGNfeSwgb3ZlcmxheV9mYik7CisKKwkJLyogUmVtb3ZlIHRo ZSBvcmlnaW5hbCBwYXR0ZXJuIGZyYW1lYnVmZmVyLiAqLworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgJnBhdHRlcm5fZmIpOworCX0KKworCWNhaXJvX3N1cmZhY2VfZGVzdHJveShyZXN1 bHRfc3VyZmFjZSk7CisKKwlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3lu Y19zdGFydChkYXRhLT5kcm1fZmQsCisJCQkJCQkJJnJlc3VsdF9mYik7CisKKwlpZ3RfZGlzcGxh eV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKworCWNoYW1lbGl1bV9j YXB0dXJlKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgMCwgMCwgMCwgMCwgMSk7CisJY3JjID0gY2hh bWVsaXVtX3JlYWRfY2FwdHVyZWRfY3JjcyhkYXRhLT5jaGFtZWxpdW0sCisJCQkJCSAgICZjYXB0 dXJlZF9mcmFtZV9jb3VudCk7CisKKwlpZ3RfYXNzZXJ0KGNhcHR1cmVkX2ZyYW1lX2NvdW50ID09 IDEpOworCisJZXhwZWN0ZWRfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNf ZmluaXNoKGZiX2NyYyk7CisKKwljaGFtZWxpdW1fYXNzZXJ0X2NyY19lcV9vcl9kdW1wKGRhdGEt PmNoYW1lbGl1bSwKKwkJCQkJZXhwZWN0ZWRfY3JjLCBjcmMsCisJCQkJCSZyZXN1bHRfZmIsIGkp OworCisJZnJlZShleHBlY3RlZF9jcmMpOworCWZyZWUoY3JjKTsKKworCWZvciAoaSA9IDA7IGkg PCBvdmVybGF5X3BsYW5lc19jb3VudDsgaSsrKSB7CisJCXN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlf ZmIgPSAmb3ZlcmxheV9mYnNbaV07CisJCWlndF9wbGFuZV90ICpwbGFuZTsKKworCQlwbGFuZSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGVfaW5kZXgob3V0cHV0LAorCQkJCQkJCURSTV9QTEFO RV9UWVBFX09WRVJMQVksCisJCQkJCQkJaSk7CisJCWlndF9hc3NlcnQocGxhbmUpOworCisJCWln dF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9m ZCwgb3ZlcmxheV9mYik7CisJfQorCisJZnJlZShvdmVybGF5X2Zicyk7CisKKwlpZ3RfcGxhbmVf c2V0X2ZiKHByaW1hcnlfcGxhbmUsIE5VTEwpOworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2Zk LCAmcHJpbWFyeV9mYik7CisJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZyZXN1bHRfZmIp OworfQorCiBzdGF0aWMgdm9pZAogdGVzdF9ocGRfd2l0aG91dF9kZGMoZGF0YV90ICpkYXRhLCBz dHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiB7CkBAIC05ODEsNiArMTI3MiwxMSBAQCBpZ3Rf bWFpbgogCQkJdGVzdF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LCBEUk1fRk9STUFUX05W MTIsCiAJCQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19BTkFMT0csIDEpOwogCisJCWNvbm5lY3Rv cl9zdWJ0ZXN0KCJoZG1pLWNyYy1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCisJCQl0ZXN0X2Rpc3Bs YXlfcGxhbmVzX3JhbmRvbSgmZGF0YSwgcG9ydCwKKwkJCQkJCSAgIENIQU1FTElVTV9DSEVDS19D UkMpOworCisKIAkJY29ubmVjdG9yX3N1YnRlc3QoImhkbWktZnJhbWUtZHVtcCIsIEhETUlBKQog CQkJdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAoJmRhdGEsIHBvcnQpOwogCX0KLS0gCjIuMTkuMgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==