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 067566E5D5 for ; Thu, 6 Dec 2018 14:13:51 +0000 (UTC) From: Paul Kocialkowski Date: Thu, 6 Dec 2018 15:11:32 +0100 Message-Id: <20181206141132.23349-10-paul.kocialkowski@bootlin.com> In-Reply-To: <20181206141132.23349-1-paul.kocialkowski@bootlin.com> References: <20181206141132.23349-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 9/9] 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 , Thomas Petazzoni List-ID: VGhpcyBpbnRyb2R1Y2VzIGEgbmV3IHRlc3QgZm9yIHRoZSBDaGFtZWxpdW0sIHRoYXQgc2V0cyB1 cCBwbGFuZXMKd2l0aCByYW5kb21pemVkIHByb3BlcnRpZXMgc3VjaCBhcyB0aGUgZm9ybWF0LCBk aW1lbnNpb25zLCBwb3NpdGlvbiwKaW4tZnJhbWVidWZmZXIgb2Zmc2V0cyBhbmQgc3RyaWRlLiBU aGUgQ2hhbWVsaXVtIGNhcHR1cmUgaXMgY2hlY2tlZAphZ2FpbnN0IHRoZSByZWZlcmVuY2UgZ2Vu ZXJhdGVkIGJ5IGNhaXJvIHdpdGggYSBDUkMuCgpUaGlzIHRlc3QgYWxzbyBpbmNsdWRlcyB0ZXN0 aW5nIGZvciBzb21lIFZDNC1zcGVjaWZpYyBmZWF0dXJlcywgc3VjaCBhcwpULXRpbGVkIG1vZGUg KGluIFhSMjQgZm9ybWF0KSwgYmFuZHdpZHRoIGxpbWl0YXRpb24gYW5kIHVuZGVycnVuCih0aGF0 IHJlcXVpcmUga2VybmVsLXNpZGUgcGF0Y2hlcyB0aGF0IGFyZSBjdXJyZW50bHkgdW5kZXIgcmV2 aWV3KS4KClNpbmNlIHRoaXMgdGVzdCBkb2VzIG5vdCBzaGFyZSBtdWNoIHdpdGggcHJldmlvdXMg Q1JDLWJhc2VkIGRpc3BsYXkKdGVzdHMgKGVzcGVjaWFsbHkgcmVnYXJkaW5nIEtNUyBjb25maWd1 cmF0aW9uKSwgbW9zdCBvZiB0aGUgY29kZSBpcwpub3Qgc2hhcmVkIHdpdGggb3RoZXIgdGVzdHMu CgpUaGlzIHRlc3QgY2FuIGJlIGRlcml2ZWQgd2l0aCByZXByb2R1Y2libGUgcHJvcGVydGllcyBm b3IgcmVncmVzc2lvbgp0ZXN0aW5nIGluIHRoZSBmdXR1cmUuIEZvciBub3csIGl0IHNlcnZlcyBh cyBhIGtpbmQgb2YgZnV6emluZyB0ZXN0LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBLb2NpYWxrb3dz a2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgotLS0KIHRlc3RzL2ttc19jaGFtZWxp dW0uYyB8IDMzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEg ZmlsZSBjaGFuZ2VkLCAzMzEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19j aGFtZWxpdW0uYyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwppbmRleCA3ZDk1YThiYy4uYTQ5Nzcz MDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYworKysgYi90ZXN0cy9rbXNfY2hh bWVsaXVtLmMKQEAgLTI2LDYgKzI2LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1 ZGUgImlndC5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlndF92YzQuaCIK IAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03MDMsNiArNzA1 LDMzMCBAQCB0ZXN0X2Rpc3BsYXlfZnJhbWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFt ZWxpdW1fcG9ydCAqcG9ydCkKIAlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwogfQog CitzdGF0aWMgdWludDMyX3QgcmFuZG9tX3BsYW5lX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFU X0FCR1I4ODg4LAorCURSTV9GT1JNQVRfQVJHQjE1NTUsCisJRFJNX0ZPUk1BVF9BUkdCODg4OCwK KwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX0JHUjU2NSwKKwlEUk1fRk9STUFUX1JH Qjg4OCwKKwlEUk1fRk9STUFUX0JHUjg4OCwKKwlEUk1fRk9STUFUX1hCR1I4ODg4LAorCURSTV9G T1JNQVRfWFJHQjE1NTUsCisJRFJNX0ZPUk1BVF9YUkdCODg4OCwKK307CisKK3N0YXRpYyB2b2lk IHRlc3RfZGlzcGxheV9wbGFuZXNfcmFuZG9tKGRhdGFfdCAqZGF0YSwKKwkJCQkgICAgICAgc3Ry dWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAorCQkJCSAgICAgICBlbnVtIGNoYW1lbGl1bV9jaGVj ayBjaGVjaykKK3sKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpZ3RfcGlwZV90ICpwaXBlOwor CWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeV9wbGFuZTsKKwlz dHJ1Y3QgaWd0X2ZiIHByaW1hcnlfZmI7CisJc3RydWN0IGlndF9mYiByZXN1bHRfZmI7CisJc3Ry dWN0IGlndF9mYiAqb3ZlcmxheV9mYnM7CisJaWd0X2NyY190ICpjcmM7CisJaWd0X2NyY190ICpl eHBlY3RlZF9jcmM7CisJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSAqZmJfY3Jj OworCXVuc2lnbmVkIGludCBvdmVybGF5X3BsYW5lc19tYXggPSAwOworCXVuc2lnbmVkIGludCBv dmVybGF5X3BsYW5lc19jb3VudDsKKwl1bnNpZ25lZCBpbnQgb3ZlcmxheV9wbGFuZXNfaW5kZXg7 CisJYm9vbCBiYW5kd2lkdGhfZXhjZWVkZWQgPSBmYWxzZTsKKwlib29sIHVuZGVycnVuX2RldGVj dGVkID0gZmFsc2U7CisJY2Fpcm9fc3VyZmFjZV90ICpyZXN1bHRfc3VyZmFjZTsKKwljYWlyb19z dXJmYWNlX3QgKnByaW1hcnlfc3VyZmFjZTsKKwljYWlyb19zdXJmYWNlX3QgKm92ZXJsYXlfc3Vy ZmFjZTsKKwljYWlyb190ICpjcjsKKwlpbnQgY2FwdHVyZWRfZnJhbWVfY291bnQ7CisJdW5zaWdu ZWQgaW50IGk7CisJY2hhciAqdW5kZXJydW47CisJaW50IGZiX2lkOworCWludCBkZWJ1Z2ZzOwor CWludCByZXQ7CisKKwlpZ3RfYXNzZXJ0KGNoZWNrID09IENIQU1FTElVTV9DSEVDS19DUkMpOwor CisJc3JhbmQodGltZShOVUxMKSk7CisKKwlyZXNldF9zdGF0ZShkYXRhLCBwb3J0KTsKKworCS8q IEZpbmQgdGhlIGNvbm5lY3RvciBhbmQgcGlwZS4gKi8KKwlvdXRwdXQgPSBwcmVwYXJlX291dHB1 dChkYXRhLCBwb3J0KTsKKwlpZ3RfYXNzZXJ0KG91dHB1dCk7CisKKwlpZiAoaXNfdmM0X2Rldmlj ZShkYXRhLT5kcm1fZmQpKSB7CisJCWRlYnVnZnMgPSBpZ3RfZGVidWdmc19kaXIoZGF0YS0+ZHJt X2ZkKTsKKwkJaWd0X2Fzc2VydChkZWJ1Z2ZzID49IDApOworCX0KKworCXBpcGUgPSAmZGF0YS0+ ZGlzcGxheS5waXBlc1tvdXRwdXQtPnBlbmRpbmdfcGlwZV07CisKKwltb2RlID0gaWd0X291dHB1 dF9nZXRfbW9kZShvdXRwdXQpOworCWlndF9hc3NlcnQobW9kZSk7CisKKwkvKiBHZXQgYSBmcmFt ZWJ1ZmZlciBmb3IgdGhlIHByaW1hcnkgcGxhbmUuICovCisJcHJpbWFyeV9wbGFuZSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlp Z3RfYXNzZXJ0KHByaW1hcnlfcGxhbmUpOworCisJZmJfaWQgPSBjaGFtZWxpdW1fZ2V0X3BhdHRl cm5fZmIoZGF0YSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJCQkgRFJNX0ZP Uk1BVF9YUkdCODg4OCwgNjQsICZwcmltYXJ5X2ZiKTsKKwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7 CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnlfcGxhbmUsICZwcmltYXJ5X2ZiKTsKKworCXBy aW1hcnlfc3VyZmFjZSA9IGlndF9nZXRfY2Fpcm9fc3VyZmFjZShkYXRhLT5kcm1fZmQsICZwcmlt YXJ5X2ZiKTsKKworCS8qIEdldCBhIGZyYW1lYnVmZmVyIGZvciB0aGUgY2Fpcm8gY29tcG9zaXRp b24gcmVzdWx0LiAqLworCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIG1vZGUt PmhkaXNwbGF5LAorCQkJICAgICAgbW9kZS0+dmRpc3BsYXksIERSTV9GT1JNQVRfWFJHQjg4ODgs CisJCQkgICAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmcmVzdWx0X2ZiKTsKKwlpZ3Rf YXNzZXJ0KGZiX2lkID4gMCk7CisKKwkvKiBJbml0aWFsaXplIGNhaXJvIHdpdGggdGhlIHJlc3Vs dCBzdXJmYWNlIGFzIHRhcmdldC4gKi8KKwlyZXN1bHRfc3VyZmFjZSA9IGlndF9nZXRfY2Fpcm9f c3VyZmFjZShkYXRhLT5kcm1fZmQsICZyZXN1bHRfZmIpOworCisJY3IgPSBjYWlyb19jcmVhdGUo cmVzdWx0X3N1cmZhY2UpOworCisJLyogQmxlbmQgdGhlIHByaW1hcnkgc3VyZmFjZS4gKi8KKwlj YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHByaW1hcnlfc3VyZmFjZSwgMCwgMCk7CisJY2Fp cm9fc3VyZmFjZV9kZXN0cm95KHByaW1hcnlfc3VyZmFjZSk7CisJY2Fpcm9fcGFpbnQoY3IpOwor CisJY2Fpcm9fZGVzdHJveShjcik7CisKKwkvKiBDb3VudCBhdmFpbGFibGUgb3ZlcmxheSBwbGFu ZXMuICovCisJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBpKyspIHsKKwkJaWd0X3Bs YW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsKKworCQlpZiAocGxhbmUtPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKKwkJCW92ZXJsYXlfcGxhbmVzX21heCsrOworCX0KKwor CS8qIExpbWl0IHRoZSBudW1iZXIgb2YgcGxhbmVzIHRvIGEgcmVhc29uYWJsZSBzY2VuZS4gKi8K KwlpZiAob3ZlcmxheV9wbGFuZXNfbWF4ID4gNCkKKwkJb3ZlcmxheV9wbGFuZXNfbWF4ID0gNDsK KworCW92ZXJsYXlfcGxhbmVzX2NvdW50ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxhbmVzX21heCkg KyAxOworCWlndF9kZWJ1ZygiVXNpbmcgJWQgb3ZlcmxheSBwbGFuZXNcbiIsIG92ZXJsYXlfcGxh bmVzX2NvdW50KTsKKworCW92ZXJsYXlfZmJzID0gY2FsbG9jKHNpemVvZihzdHJ1Y3QgaWd0X2Zi KSwgb3ZlcmxheV9wbGFuZXNfY291bnQpOworCisJZm9yIChpID0gMCwgb3ZlcmxheV9wbGFuZXNf aW5kZXggPSAwOworCSAgICAgaSA8IHBpcGUtPm5fcGxhbmVzICYmIG92ZXJsYXlfcGxhbmVzX2lu ZGV4IDwgb3ZlcmxheV9wbGFuZXNfY291bnQ7CisJICAgICBpKyspIHsKKwkJc3RydWN0IGlndF9m YiAqb3ZlcmxheV9mYiA9ICZvdmVybGF5X2Zic1tvdmVybGF5X3BsYW5lc19pbmRleF07CisJCWln dF9wbGFuZV90ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07CisJCXN0cnVjdCBpZ3RfZmIgcGF0 dGVybl9mYjsKKwkJdWludDMyX3Qgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2g7CisJCWludDMy X3Qgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195OworCQl1aW50MzJfdCBvdmVybGF5X2Ny dGNfdywgb3ZlcmxheV9jcnRjX2g7CisJCXVpbnQzMl90IG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlf c3JjX3k7CisJCXVpbnQzMl90IG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2g7CisJCWludCBv dmVybGF5X3N1cmZhY2VfeCwgb3ZlcmxheV9zdXJmYWNlX3k7CisJCXVuc2lnbmVkIGludCBpbmRl eDsKKwkJdW5zaWduZWQgaW50IHN0cmlkZV9taW47CisJCXVuc2lnbmVkIGludCBzdHJpZGU7CisJ CWJvb2wgdmM0X3RfdGlsZWQ7CisJCXVpbnQzMl90IGZvcm1hdDsKKworCQlpZiAocGxhbmUtPnR5 cGUgIT0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFJhbmRv bWl6ZSB3aWR0aCBhbmQgaGVpZ2h0IGluIHRoZSBtb2RlIGRpbWVuc2lvbnMgcmFuZ2UuICovCisJ CW92ZXJsYXlfZmJfdyA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkgKyAxOworCQlvdmVybGF5 X2ZiX2ggPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpICsgMTsKKworCQkvKgorCQkgKiBSYW5k b21pemUgc291cmNlIG9mZnNldCwgYnV0IGtlZXAgYXQgbGVhc3QgaGFsZiBvZiB0aGUKKwkJICog b3JpZ2luYWwgc2l6ZS4KKwkJICovCisJCW92ZXJsYXlfc3JjX3ggPSByYW5kKCkgJSAob3Zlcmxh eV9mYl93IC8gMik7CisJCW92ZXJsYXlfc3JjX3kgPSByYW5kKCkgJSAob3ZlcmxheV9mYl9oIC8g Mik7CisKKwkJLyoKKwkJICogVGhlIG9uLWNydGMgc2l6ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBz b3VyY2Ugb2Zmc2V0LCBzbyBpdAorCQkgKiBuZWVkcyB0byBiZSBzdWJ0cmFjdGVkIHRvIGF2b2lk IHNjYWxpbmcuCisJCSAqLworCQlvdmVybGF5X2NydGNfdyA9IG92ZXJsYXlfZmJfdyAtIG92ZXJs YXlfc3JjX3g7CisJCW92ZXJsYXlfY3J0Y19oID0gb3ZlcmxheV9mYl9oIC0gb3ZlcmxheV9zcmNf eTsKKworCQkvKiBTYW1lIGdvZXMgZm9yIHRoZSBmcmFtZWJ1ZmZlciBzb3VyY2Ugc2l6ZS4gKi8K KwkJb3ZlcmxheV9zcmNfdyA9IG92ZXJsYXlfY3J0Y193OworCQlvdmVybGF5X3NyY19oID0gb3Zl cmxheV9jcnRjX2g7CisKKwkJLyoKKwkJICogUmFuZG9taXplIHRoZSBvbi1jcnRjIHBvc2l0aW9u IGFuZCBhbGxvdyB0aGUgcGxhbmUgdG8gZ28KKwkJICogb2ZmLWRpc3BsYXkgYnkgdXAgdG8gaGFs ZiBvZiBpdHMgd2lkdGggYW5kIGhlaWdodC4KKwkJICovCisJCW92ZXJsYXlfY3J0Y194ID0gKHJh bmQoKSAlIG1vZGUtPmhkaXNwbGF5KSAtIG92ZXJsYXlfY3J0Y193IC8gMjsKKwkJb3ZlcmxheV9j cnRjX3kgPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpIC0gb3ZlcmxheV9jcnRjX2ggLyAyOwor CisJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IG9uLWNydGMgc2l6ZSAlZHglZFxuIiwKKwkJCSAgb3Zl cmxheV9wbGFuZXNfaW5kZXgsIG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaCk7CisJCWln dF9kZWJ1ZygiUGxhbmUgJWQ6IG9uLWNydGMgcG9zaXRpb24gJWR4JWRcbiIsCisJCQkgIG92ZXJs YXlfcGxhbmVzX2luZGV4LCBvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9jcnRjX3kpOworCQlpZ3Rf ZGVidWcoIlBsYW5lICVkOiBpbi1mcmFtZWJ1ZmZlciBwb3NpdGlvbiAlZHglZFxuIiwKKwkJCSAg b3ZlcmxheV9wbGFuZXNfaW5kZXgsIG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3kpOworCisJ CS8qIEdldCBhIHBhdHRlcm4gZnJhbWVidWZmZXIgZm9yIHRoZSBvdmVybGF5IHBsYW5lLiAqLwor CQlmYl9pZCA9IGNoYW1lbGl1bV9nZXRfcGF0dGVybl9mYihkYXRhLCBvdmVybGF5X2ZiX3csCisJ CQkJCQkgb3ZlcmxheV9mYl9oLAorCQkJCQkJIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkJCQkg MzIsICZwYXR0ZXJuX2ZiKTsKKwkJaWd0X2Fzc2VydChmYl9pZCA+IDApOworCisJCS8qIFJhbmRv bWl6ZSB0aGUgdXNlIG9mIHRpbGVkIG1vZGUgd2l0aCBhIDEvNCBwcm9iYWJpbGl0eS4gKi8KKwkJ aW5kZXggPSByYW5kKCkgJSA0OworCisJCWlmIChpc192YzRfZGV2aWNlKGRhdGEtPmRybV9mZCkg JiYgaW5kZXggPT0gMCkgeworCQkJZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4ODsKKwkJCXZj NF90X3RpbGVkID0gdHJ1ZTsKKworCQkJaWd0X2RlYnVnKCJQbGFuZSAlZDogVkM0IFQtdGlsZWQg JXMgZm9ybWF0XG4iLAorCQkJCSAgb3ZlcmxheV9wbGFuZXNfaW5kZXgsIGlndF9mb3JtYXRfc3Ry KGZvcm1hdCkpOworCQl9IGVsc2UgeworCQkJLyogUmFuZG9taXplIHRoZSBmb3JtYXQgdG8gdGVz dC4gKi8KKwkJCWluZGV4ID0gcmFuZCgpICUgQVJSQVlfU0laRShyYW5kb21fcGxhbmVfZm9ybWF0 cyk7CisJCQlmb3JtYXQgPSByYW5kb21fcGxhbmVfZm9ybWF0c1tpbmRleF07CisJCQl2YzRfdF90 aWxlZCA9IGZhbHNlOworCisJCQlpZ3RfZGVidWcoIlBsYW5lICVkOiAlcyBmb3JtYXRcbiIsIG92 ZXJsYXlfcGxhbmVzX2luZGV4LAorCQkJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSk7CisJCX0K KworCQkvKiBDb252ZXJ0IHRoZSBwYXR0ZXJuIHRvIHRoZSB0ZXN0IGZvcm1hdCBpZiBuZWVkZWQu ICovCisJCWlmICh2YzRfdF90aWxlZCkgeworCQkJZmJfaWQgPSBpZ3RfdmM0X2ZiX3RfdGlsZWRf Y29udmVydChvdmVybGF5X2ZiLAorCQkJCQkJCSAgICZwYXR0ZXJuX2ZiKTsKKwkJCWlndF9hc3Nl cnQoZmJfaWQgPiAwKTsKKwkJfSBlbHNlIHsKKwkJCXN0cmlkZV9taW4gPSBvdmVybGF5X2ZiX3cg KgorCQkJCSAgICAgaWd0X2Zvcm1hdF9wbGFuZV9icHAoZm9ybWF0LCAwKSAvIDg7CisKKwkJCS8q IFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHdpdGggYXQgbW9zdCB0d2ljZSB0aGUgbWluaW11bS4gKi8K KwkJCXN0cmlkZSA9IChyYW5kKCkgJSBzdHJpZGVfbWluKSArIHN0cmlkZV9taW47CisKKwkJCS8q IFBpeG1hbiByZXF1aXJlcyB0aGUgc3RyaWRlIHRvIGJlIGFsaWduZWQgdG8gMzItYnl0ZSB3b3Jk cy4gKi8KKwkJCXN0cmlkZSA9IEFMSUdOKHN0cmlkZSwgc2l6ZW9mKHVpbnQzMl90KSk7CisKKwkJ CWlndF9kZWJ1ZygiUGxhbmUgJWQ6IHVzaW5nIHN0cmlkZSAlZFxuIiwgb3ZlcmxheV9wbGFuZXNf aW5kZXgsIHN0cmlkZSk7CisKKwkJCWZiX2lkID0gaWd0X2ZiX2NvbnZlcnRfd2l0aF9zdHJpZGUo b3ZlcmxheV9mYiwKKwkJCQkJCQkgICAmcGF0dGVybl9mYiwKKwkJCQkJCQkgICBmb3JtYXQsIHN0 cmlkZSk7CisJCQlpZ3RfYXNzZXJ0KGZiX2lkKTsKKwkJfQorCisJCWlndF9wbGFuZV9zZXRfZmIo cGxhbmUsIG92ZXJsYXlfZmIpOworCisJCW92ZXJsYXlfc3VyZmFjZSA9IGlndF9nZXRfY2Fpcm9f c3VyZmFjZShkYXRhLT5kcm1fZmQsCisJCQkJCQkJJnBhdHRlcm5fZmIpOworCisJCS8qIEJsZW5k IHRoZSBvdmVybGF5IHN1cmZhY2UuICovCisJCW92ZXJsYXlfc3VyZmFjZV94ID0gb3ZlcmxheV9j cnRjX3ggLSAoaW50KSBvdmVybGF5X3NyY194OworCQlvdmVybGF5X3N1cmZhY2VfeSA9IG92ZXJs YXlfY3J0Y195IC0gKGludCkgb3ZlcmxheV9zcmNfeTsKKworCQljciA9IGNhaXJvX2NyZWF0ZShy ZXN1bHRfc3VyZmFjZSk7CisKKwkJY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBvdmVybGF5 X3N1cmZhY2UsIG92ZXJsYXlfc3VyZmFjZV94LAorCQkJCQkgb3ZlcmxheV9zdXJmYWNlX3kpOwor CQljYWlyb19zdXJmYWNlX2Rlc3Ryb3kob3ZlcmxheV9zdXJmYWNlKTsKKworCQkvKiBDbGlwIHRo ZSBzdXJmYWNlIHRvIGEgcmVjdGFuZ2xlLiAqLworCQljYWlyb19yZWN0YW5nbGUoY3IsIG92ZXJs YXlfY3J0Y194LCBvdmVybGF5X2NydGNfeSwKKwkJCQlvdmVybGF5X2NydGNfdywgb3ZlcmxheV9j cnRjX2gpOworCQljYWlyb19jbGlwKGNyKTsKKworCQljYWlyb19wYWludChjcik7CisKKwkJY2Fp cm9fZGVzdHJveShjcik7CisKKwkJLyogQ29uZmlndXJlIHRoZSBwbGFuZSB3aXRoIGZyYW1lYnVm ZmVyIHNvdXJjZSBjb29yZGluYXRlcy4gKi8KKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFu ZSwgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195KTsKKwkJaWd0X3BsYW5lX3NldF9zaXpl KHBsYW5lLCBvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gpOworCisJCWlndF9mYl9zZXRf cG9zaXRpb24ob3ZlcmxheV9mYiwgcGxhbmUsIG92ZXJsYXlfc3JjX3gsCisJCQkJICAgIG92ZXJs YXlfc3JjX3kpOworCQlpZ3RfZmJfc2V0X3NpemUob3ZlcmxheV9mYiwgcGxhbmUsIG92ZXJsYXlf c3JjX3csCisJCQkJb3ZlcmxheV9zcmNfaCk7CisKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1f ZmQsICZwYXR0ZXJuX2ZiKTsKKworCQlvdmVybGF5X3BsYW5lc19pbmRleCsrOworCX0KKworCWNh aXJvX3N1cmZhY2VfZGVzdHJveShyZXN1bHRfc3VyZmFjZSk7CisKKwlmYl9jcmMgPSBjaGFtZWxp dW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19zdGFydChkYXRhLT5kcm1fZmQsCisJCQkJCQkJJnJl c3VsdF9mYik7CisKKwlpZiAoaXNfdmM0X2RldmljZShkYXRhLT5kcm1fZmQpKSB7CisJCXJldCA9 IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsK KwkJYmFuZHdpZHRoX2V4Y2VlZGVkID0gKHJldCA8IDAgJiYgZXJybm8gPT0gRU5PU1BDKTsKKwor CQlpZ3RfZGVidWcoIkJhbmR3aWR0aCBsaW1pdGF0aW9uIGV4ZWVkZWQ6ICVzXG4iLAorCQkJICBi YW5kd2lkdGhfZXhjZWVkZWQgPyAiWWVzIiA6ICJObyIpOworCisJCWlndF9hc3NlcnQoIWJhbmR3 aWR0aF9leGNlZWRlZCk7CisJfQorCisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxh eSwgQ09NTUlUX0FUT01JQyk7CisKKwljaGFtZWxpdW1fY2FwdHVyZShkYXRhLT5jaGFtZWxpdW0s IHBvcnQsIDAsIDAsIDAsIDAsIDEpOworCWNyYyA9IGNoYW1lbGl1bV9yZWFkX2NhcHR1cmVkX2Ny Y3MoZGF0YS0+Y2hhbWVsaXVtLAorCQkJCQkgICAmY2FwdHVyZWRfZnJhbWVfY291bnQpOworCisJ aWd0X2Fzc2VydChjYXB0dXJlZF9mcmFtZV9jb3VudCA9PSAxKTsKKworCWlmIChpc192YzRfZGV2 aWNlKGRhdGEtPmRybV9mZCkpIHsKKwkJdW5kZXJydW4gPSBpZ3Rfc3lzZnNfZ2V0KGRlYnVnZnMs ICJ1bmRlcnJ1biIpOworCQlpZ3RfYXNzZXJ0KHVuZGVycnVuKTsKKworCQl1bmRlcnJ1bl9kZXRl Y3RlZCA9ICh1bmRlcnJ1blswXSA9PSAnWScpOworCQlmcmVlKHVuZGVycnVuKTsKKworCQlpZ3Rf ZGVidWcoIlVuZGVycnVuIGRldGVjdGVkOiAlc1xuIiwKKwkJCSAgdW5kZXJydW5fZGV0ZWN0ZWQg PyAiWWVzIiA6ICJObyIpOworCisJCWlndF9hc3NlcnQoIXVuZGVycnVuX2RldGVjdGVkKTsKKwor CQljbG9zZShkZWJ1Z2ZzKTsKKwl9CisKKwlleHBlY3RlZF9jcmMgPSBjaGFtZWxpdW1fY2FsY3Vs YXRlX2ZiX2NyY19hc3luY19maW5pc2goZmJfY3JjKTsKKworCWNoYW1lbGl1bV9hc3NlcnRfY3Jj X2VxX29yX2R1bXAoZGF0YS0+Y2hhbWVsaXVtLAorCQkJCQlleHBlY3RlZF9jcmMsIGNyYywKKwkJ CQkJJnJlc3VsdF9mYiwgaSk7CisKKwlpZ3RfZGVidWcoInJlZmVyZW5jZSBDUkM6ICVzXG4iLCBp Z3RfY3JjX3RvX3N0cmluZyhleHBlY3RlZF9jcmMpKTsKKwlpZ3RfZGVidWcoImNhbGN1bGF0ZWQg Q1JDOiAlc1xuIiwgaWd0X2NyY190b19zdHJpbmcoY3JjKSk7CisKKwlmcmVlKGV4cGVjdGVkX2Ny Yyk7CisJZnJlZShjcmMpOworCisJZm9yIChpID0gMCwgb3ZlcmxheV9wbGFuZXNfaW5kZXggPSAw OworCSAgICAgaSA8IHBpcGUtPm5fcGxhbmVzICYmIG92ZXJsYXlfcGxhbmVzX2luZGV4IDwgb3Zl cmxheV9wbGFuZXNfY291bnQ7CisJICAgICBpKyspIHsKKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0g JnBpcGUtPnBsYW5lc1tpXTsKKwkJc3RydWN0IGlndF9mYiAqb3ZlcmxheV9mYiA9ICZvdmVybGF5 X2Zic1tvdmVybGF5X3BsYW5lc19pbmRleF07CisKKwkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9Q TEFORV9UWVBFX09WRVJMQVkpCisJCQljb250aW51ZTsKKworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgb3ZlcmxheV9mYik7CisKKwkJb3ZlcmxheV9wbGFuZXNfaW5kZXgrKzsKKwl9CisK KwlmcmVlKG92ZXJsYXlfZmJzKTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcHJp bWFyeV9mYik7CisJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZyZXN1bHRfZmIpOworfQor CiBzdGF0aWMgdm9pZAogdGVzdF9ocGRfd2l0aG91dF9kZGMoZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg Y2hhbWVsaXVtX3BvcnQgKnBvcnQpCiB7CkBAIC05ODEsNiArMTMwNywxMSBAQCBpZ3RfbWFpbgog CQkJdGVzdF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LCBEUk1fRk9STUFUX05WMTIsCiAJ CQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19BTkFMT0csIDEpOwogCisJCWNvbm5lY3Rvcl9zdWJ0 ZXN0KCJoZG1pLWNyYy1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCisJCQl0ZXN0X2Rpc3BsYXlfcGxh bmVzX3JhbmRvbSgmZGF0YSwgcG9ydCwKKwkJCQkJCSAgIENIQU1FTElVTV9DSEVDS19DUkMpOwor CisKIAkJY29ubmVjdG9yX3N1YnRlc3QoImhkbWktZnJhbWUtZHVtcCIsIEhETUlBKQogCQkJdGVz dF9kaXNwbGF5X2ZyYW1lX2R1bXAoJmRhdGEsIHBvcnQpOwogCX0KLS0gCjIuMTkuMgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==