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 7CF626F5A6 for ; Fri, 11 Jan 2019 09:06:40 +0000 (UTC) From: Paul Kocialkowski Date: Fri, 11 Jan 2019 10:05:32 +0100 Message-Id: <20190111090532.19235-22-paul.kocialkowski@bootlin.com> In-Reply-To: <20190111090532.19235-1-paul.kocialkowski@bootlin.com> References: <20190111090532.19235-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 21/21] chamelium: Add a 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 ZXJhdGVkIGJ5IGNhaXJvIHdpdGggZWl0aGVyIGEgQ1JDIG9yIHRoZQpjaGVja2VyYm9hcmQtc3Bl Y2lmaWMgY29tcGFyaXNvbiBtZXRob2QuCgpUaGlzIHRlc3QgYWxzbyBpbmNsdWRlcyB0ZXN0aW5n IG9mIHRoZSBWQzQtc3BlY2lmaWMgVC10aWxlZCBhbmQKU0FORC10aWxlZCBtb2RlcywgaW4gYWxs IGZvcm1hdHMgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZS4KClNpbmNlIHRoaXMgdGVzdCBkb2Vz IG5vdCBzaGFyZSBtdWNoIHdpdGggcHJldmlvdXMgQ2hhbWVsaXVtIGRpc3BsYXkKdGVzdHMgKGVz cGVjaWFsbHkgcmVnYXJkaW5nIEtNUyBjb25maWd1cmF0aW9uKSwgbW9zdCBvZiB0aGUgY29kZSBp cwpub3Qgc2hhcmVkIHdpdGggb3RoZXIgdGVzdHMuCgpUaGlzIHRlc3QgY2FuIGJlIGRlcml2ZWQg d2l0aCByZXByb2R1Y2libGUgcHJvcGVydGllcyBmb3IgcmVncmVzc2lvbgp0ZXN0aW5nIGluIHRo ZSBmdXR1cmUuIEZvciBub3csIGl0IHNlcnZlcyBhcyBhIGZ1enppbmcgdGVzdAoKU2lnbmVkLW9m Zi1ieTogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgot LS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8IDQ0NiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0NDYgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwpp bmRleCAyNzc5ZDc0ZjU1YjYuLjU5NjM5NjQ4NzhiYSAxMDA2NDQKLS0tIGEvdGVzdHMva21zX2No YW1lbGl1bS5jCisrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwpAQCAtMjYsNiArMjYsNyBAQAog CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X3Zj NC5oIgogCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTcwMiw2 ICs3MDMsNDQzIEBAIHRlc3RfZGlzcGxheV9mcmFtZV9kdW1wKGRhdGFfdCAqZGF0YSwgc3RydWN0 IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQogCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7 CiB9CiAKK3N0YXRpYyB2b2lkIHJhbmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKGlndF9wbGFu ZV90ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsCisJCQkJCSAgdWludDMyX3QgKmZvcm1hdCwgc2l6 ZV90ICpzdHJpZGUsCisJCQkJCSAgYm9vbCAqdGlsZWQsIGJvb2wgYWxsb3dfeXV2KQoreworCXNp emVfdCBzdHJpZGVfbWluOworCXVpbnQzMl90ICpmb3JtYXRzX2FycmF5OworCXVuc2lnbmVkIGlu dCBmb3JtYXRzX2NvdW50OworCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CisJdW5zaWduZWQgaW50 IGk7CisJaW50IGluZGV4OworCisJaWd0X2Zvcm1hdF9hcnJheV9maWxsKCZmb3JtYXRzX2FycmF5 LCAmZm9ybWF0c19jb3VudCwgYWxsb3dfeXV2KTsKKworCS8qIEZpcnN0IHBhc3MgdG8gY291bnQg dGhlIHN1cHBvcnRlZCBmb3JtYXRzLiAqLworCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2NvdW50 OyBpKyspCisJCWlmIChpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdHNfYXJy YXlbaV0sCisJCQkJCSAgICAgRFJNX0ZPUk1BVF9NT0RfTElORUFSKSkKKwkJCWNvdW50Kys7CisK KwlpZ3RfYXNzZXJ0KGNvdW50ID4gMCk7CisKKwlpbmRleCA9IHJhbmQoKSAlIGNvdW50OworCisJ LyogU2Vjb25kIHBhc3MgdG8gZ2V0IHRoZSBpbmRleC10aCBzdXBwb3J0ZWQgZm9ybWF0LiAqLwor CWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2NvdW50OyBpKyspIHsKKwkJaWYgKCFpZ3RfcGxhbmVf aGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdHNfYXJyYXlbaV0sCisJCQkJCSAgICAgIERSTV9G T1JNQVRfTU9EX0xJTkVBUikpCisJCQljb250aW51ZTsKKworCQlpZiAoIWluZGV4LS0pIHsKKwkJ CSpmb3JtYXQgPSBmb3JtYXRzX2FycmF5W2ldOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlmcmVl KGZvcm1hdHNfYXJyYXkpOworCisJaWd0X2Fzc2VydChpbmRleCA8IDApOworCisJc3RyaWRlX21p biA9IHdpZHRoICogaWd0X2Zvcm1hdF9wbGFuZV9icHAoKmZvcm1hdCwgMCkgLyA4OworCisJLyog UmFuZG9taXplIHRoZSBzdHJpZGUgd2l0aCBhdCBtb3N0IHR3aWNlIHRoZSBtaW5pbXVtLiAqLwor CSpzdHJpZGUgPSAocmFuZCgpICUgc3RyaWRlX21pbikgKyBzdHJpZGVfbWluOworCisJLyogUGl4 bWFuIHJlcXVpcmVzIHRoZSBzdHJpZGUgdG8gYmUgYWxpZ25lZCB0byAzMi1ieXRlIHdvcmRzLiAq LworCSpzdHJpZGUgPSBBTElHTigqc3RyaWRlLCBzaXplb2YodWludDMyX3QpKTsKKworCS8qIFJh bmRvbWl6ZSB0aGUgdXNlIG9mIGEgdGlsZWQgbW9kZSB3aXRoIGEgMS80IHByb2JhYmlsaXR5LiAq LworCSp0aWxlZCA9ICgocmFuZCgpICUgNCkgPT0gMCk7Cit9CisKK3N0YXRpYyB2b2lkIHJhbmRv bWl6ZV9wbGFuZV9kaW1lbnNpb25zKGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKKwkJCQkgICAgICAg dWludDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0LAorCQkJCSAgICAgICB1aW50MzJfdCAq c3JjX3csIHVpbnQzMl90ICpzcmNfaCwKKwkJCQkgICAgICAgdWludDMyX3QgKnNyY194LCB1aW50 MzJfdCAqc3JjX3ksCisJCQkJICAgICAgIHVpbnQzMl90ICpjcnRjX3csIHVpbnQzMl90ICpjcnRj X2gsCisJCQkJICAgICAgIGludDMyX3QgKmNydGNfeCwgaW50MzJfdCAqY3J0Y195LAorCQkJCSAg ICAgICBib29sIGFsbG93X3NjYWxpbmcpCit7CisJZG91YmxlIHJhdGlvOworCisJLyogUmFuZG9t aXplIHdpZHRoIGFuZCBoZWlnaHQgaW4gdGhlIG1vZGUgZGltZW5zaW9ucyByYW5nZS4gKi8KKwkq d2lkdGggPSAocmFuZCgpICUgbW9kZS0+aGRpc3BsYXkpICsgMTsKKwkqaGVpZ2h0ID0gKHJhbmQo KSAlIG1vZGUtPnZkaXNwbGF5KSArIDE7CisKKwkvKgorCSAqIFJhbmRvbWl6ZSBzb3VyY2Ugb2Zm c2V0LCBidXQga2VlcCBhdCBsZWFzdCBoYWxmIG9mIHRoZQorCSAqIG9yaWdpbmFsIHNpemUuCisJ ICovCisJKnNyY194ID0gcmFuZCgpICUgKCp3aWR0aCAvIDIpOworCSpzcmNfeSA9IHJhbmQoKSAl ICgqaGVpZ2h0IC8gMik7CisKKwkvKiBUaGUgc291cmNlIHNpemUgb25seSBpbmNsdWRlcyB0aGUg YWN0aXZlIHNvdXJjZSBhcmVhLiAqLworCSpzcmNfdyA9ICp3aWR0aCAtICpzcmNfeDsKKwkqc3Jj X2ggPSAqaGVpZ2h0IC0gKnNyY195OworCisJaWYgKGFsbG93X3NjYWxpbmcpIHsKKwkJKmNydGNf dyA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkgKyAxOworCQkqY3J0Y19oID0gKHJhbmQoKSAl IG1vZGUtPnZkaXNwbGF5KSArIDE7CisKKwkJLyoKKwkJICogRG9uJ3QgYm90aGVyIHdpdGggc2Nh bGluZyBpZiBkaW1lbnNpb25zIGFyZSBxdWl0ZSBjbG9zZSBpbgorCQkgKiBvcmRlciB0byBnZXQg bm9uLXNjYWxpbmcgY2FzZXMgbW9yZSBmcmVxdWVudGx5LiBBbHNvIGxpbWl0CisJCSAqIHNjYWxp bmcgdG8gM3ggdG8gYXZvaWQgYWdyZXNzaXZlIGZpbHRlcmluZyB0aGF0IG1ha2VzCisJCSAqIGNv bXBhcmlzb24gbGVzcyByZWxpYWJsZS4KKwkJICovCisKKwkJcmF0aW8gPSAoKGRvdWJsZSkgKmNy dGNfdyAvICpzcmNfdyk7CisJCWlmIChyYXRpbyA+IDAuOCAmJiByYXRpbyA8IDEuMikKKwkJCSpj cnRjX3cgPSAqc3JjX3c7CisJCWVsc2UgaWYgKHJhdGlvID4gMy4wKQorCQkJKmNydGNfdyA9ICpz cmNfdyAqIDM7CisKKwkJcmF0aW8gPSAoKGRvdWJsZSkgKmNydGNfaCAvICpzcmNfaCk7CisJCWlm IChyYXRpbyA+IDAuOCAmJiByYXRpbyA8IDEuMikKKwkJCSpjcnRjX2ggPSAqc3JjX2g7CisJCWVs c2UgaWYgKHJhdGlvID4gMy4wKQorCQkJKmNydGNfaCA9ICpzcmNfaCAqIDM7CisJfSBlbHNlIHsK KwkJKmNydGNfdyA9ICpzcmNfdzsKKwkJKmNydGNfaCA9ICpzcmNfaDsKKwl9CisKKwlpZiAoKmNy dGNfdyAhPSAqc3JjX3cgfHwgKmNydGNfaCAhPSAqc3JjX2gpIHsKKwkJLyoKKwkJICogV2hlbiBz Y2FsaW5nIGlzIGludm9sdmVkLCBtYWtlIHN1cmUgdG8gbm90IGdvIG9mZi1ib3VuZHMgb3IKKwkJ ICogc2NhbGVkIGNsaXBwaW5nIG1heSByZXN1bHQgaW4gZGVjaW1hbCBkaW1lbnNpb25zLCB0aGF0 IG1vc3QKKwkJICogZHJpdmVycyBkb24ndCBzdXBwb3J0LgorCQkgKi8KKwkJKmNydGNfeCA9IHJh bmQoKSAlIChtb2RlLT5oZGlzcGxheSAtICpjcnRjX3cpOworCQkqY3J0Y195ID0gcmFuZCgpICUg KG1vZGUtPnZkaXNwbGF5IC0gKmNydGNfaCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogUmFuZG9t aXplIHRoZSBvbi1jcnRjIHBvc2l0aW9uIGFuZCBhbGxvdyB0aGUgcGxhbmUgdG8gZ28KKwkJICog b2ZmLWRpc3BsYXkgYnkgdXAgdG8gaGFsZiBvZiBpdHMgb24tY3J0YyB3aWR0aCBhbmQgaGVpZ2h0 LgorCQkgKi8KKwkJKmNydGNfeCA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkgLSAqY3J0Y193 IC8gMjsKKwkJKmNydGNfeSA9IChyYW5kKCkgJSBtb2RlLT52ZGlzcGxheSkgLSAqY3J0Y19oIC8g MjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJsaXRfcGxhbmVfY2Fpcm8oZGF0YV90ICpkYXRhLCBj YWlyb19zdXJmYWNlX3QgKnJlc3VsdCwKKwkJCSAgICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90 IHNyY19oLAorCQkJICAgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCisJCQkgICAg IHVpbnQzMl90IGNydGNfdywgdWludDMyX3QgY3J0Y19oLAorCQkJICAgICBpbnQzMl90IGNydGNf eCwgaW50MzJfdCBjcnRjX3ksCisJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKmZiKQoreworCWNhaXJv X3N1cmZhY2VfdCAqc3VyZmFjZTsKKwljYWlyb19zdXJmYWNlX3QgKmNsaXBwZWRfc3VyZmFjZTsK KwljYWlyb190ICpjcjsKKworCXN1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1cmZhY2UoZGF0YS0+ ZHJtX2ZkLCBmYik7CisKKwlpZiAoc3JjX3ggfHwgc3JjX3kpIHsKKwkJY2xpcHBlZF9zdXJmYWNl ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX1JHQjI0LAorCQkJCQkJ CSAgICAgc3JjX3csIHNyY19oKTsKKworCQljciA9IGNhaXJvX2NyZWF0ZShjbGlwcGVkX3N1cmZh Y2UpOworCisJCWNhaXJvX3RyYW5zbGF0ZShjciwgLTEuICogc3JjX3gsIC0xLiAqIHNyY195KTsK KworCQljYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOworCisJCWNh aXJvX3BhaW50KGNyKTsKKwkJY2Fpcm9fc3VyZmFjZV9mbHVzaChjbGlwcGVkX3N1cmZhY2UpOwor CisJCWNhaXJvX2Rlc3Ryb3koY3IpOworCX0gZWxzZSB7CisJCWNsaXBwZWRfc3VyZmFjZSA9IHN1 cmZhY2U7CisJfQorCisJY3IgPSBjYWlyb19jcmVhdGUocmVzdWx0KTsKKworCWNhaXJvX3RyYW5z bGF0ZShjciwgY3J0Y194LCBjcnRjX3kpOworCisJaWYgKHNyY193ICE9IGNydGNfdyB8fCBzcmNf aCAhPSBjcnRjX2gpIHsKKwkJY2Fpcm9fc2NhbGUoY3IsIChkb3VibGUpIGNydGNfdyAvIHNyY193 LAorCQkJICAgIChkb3VibGUpIGNydGNfaCAvIHNyY19oKTsKKwl9CisKKwljYWlyb19zZXRfc291 cmNlX3N1cmZhY2UoY3IsIGNsaXBwZWRfc3VyZmFjZSwgMCwgMCk7CisJY2Fpcm9fc3VyZmFjZV9k ZXN0cm95KGNsaXBwZWRfc3VyZmFjZSk7CisKKwlpZiAoc3JjX3cgIT0gY3J0Y193IHx8IHNyY19o ICE9IGNydGNfaCkgeworCQljYWlyb19wYXR0ZXJuX3NldF9maWx0ZXIoY2Fpcm9fZ2V0X3NvdXJj ZShjciksCisJCQkJCSBDQUlST19GSUxURVJfQklMSU5FQVIpOworCQljYWlyb19wYXR0ZXJuX3Nl dF9leHRlbmQoY2Fpcm9fZ2V0X3NvdXJjZShjciksCisJCQkJCSBDQUlST19FWFRFTkRfTk9ORSk7 CisJfQorCisJY2Fpcm9fcGFpbnQoY3IpOworCWNhaXJvX3N1cmZhY2VfZmx1c2gocmVzdWx0KTsK KworCWNhaXJvX2Rlc3Ryb3koY3IpOworfQorCitzdGF0aWMgdm9pZCBjb25maWd1cmVfcGxhbmUo aWd0X3BsYW5lX3QgKnBsYW5lLCB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsCisJCQkg ICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LCB1aW50MzJfdCBjcnRjX3csCisJCQkg ICAgdWludDMyX3QgY3J0Y19oLCBpbnQzMl90IGNydGNfeCwgaW50MzJfdCBjcnRjX3ksCisJCQkg ICAgc3RydWN0IGlndF9mYiAqZmIpCit7CisJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgZmIpOwor CisJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgY3J0Y194LCBjcnRjX3kpOworCWlndF9w bGFuZV9zZXRfc2l6ZShwbGFuZSwgY3J0Y193LCBjcnRjX2gpOworCisJaWd0X2ZiX3NldF9wb3Np dGlvbihmYiwgcGxhbmUsIHNyY194LCBzcmNfeSk7CisJaWd0X2ZiX3NldF9zaXplKGZiLCBwbGFu ZSwgc3JjX3csIHNyY19oKTsKK30KKworc3RhdGljIHZvaWQgcHJlcGFyZV90aWxlZF9wbGFuZShk YXRhX3QgKmRhdGEsIGlndF9wbGFuZV90ICpwbGFuZSwKKwkJCQl1bnNpZ25lZCBpbnQgaW5kZXgs IHVpbnQzMl90IGZvcm1hdCwKKwkJCQlzdHJ1Y3QgaWd0X2ZiICpvdmVybGF5X2ZiKQoreworCXN0 cnVjdCBpZ3RfZmIgdGlsZWRfZmI7CisJdW5zaWduZWQgaW50IGZiX2lkOworCisJaWYgKGlzX3Zj NF9kZXZpY2UoZGF0YS0+ZHJtX2ZkKSAmJgorCSAgICBpZ3RfdmM0X3BsYW5lX3N1cHBvcnRzX3Rf dGlsaW5nKHBsYW5lLCBmb3JtYXQpKSB7CisJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IHVzaW5nIFZD NCBULXRpbGluZ1xuIiwgaW5kZXgpOworCisJCWZiX2lkID0gaWd0X3ZjNF9mYl90X3RpbGVkX2Nv bnZlcnQoJnRpbGVkX2ZiLCBvdmVybGF5X2ZiKTsKKwl9IGVsc2UgaWYgKGlzX3ZjNF9kZXZpY2Uo ZGF0YS0+ZHJtX2ZkKSAmJgorCQkgICBpZ3RfdmM0X3BsYW5lX3N1cHBvcnRzX3NhbmRfdGlsaW5n KHBsYW5lLCBmb3JtYXQsIDI1NikpIHsKKwkJLyogUmFuZG9taXplIHRoZSBjb2x1bW4gaGVpZ2h0 IHdpdGggYXQgbW9zdCB0d2ljZSB0aGUgaGVpZ2h0LiAqLworCQlzaXplX3QgY29sdW1uX2hlaWdo dCA9IChyYW5kKCkgJSBvdmVybGF5X2ZiLT5oZWlnaHQpICsKKwkJCQkgICAgICAgb3ZlcmxheV9m Yi0+aGVpZ2h0OworCisJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IHVzaW5nIFZDNCBTQU5EMjU2IHRp bGluZyB3aXRoIGNvbHVtbiBoZWlnaHQgJWxkXG4iLAorCQkJICBpbmRleCwgY29sdW1uX2hlaWdo dCk7CisKKwkJZmJfaWQgPSB2YzRfZmJfc2FuZF90aWxlZF9jb252ZXJ0KCZ0aWxlZF9mYiwgb3Zl cmxheV9mYiwgMjU2LAorCQkJCQkJICBjb2x1bW5faGVpZ2h0KTsKKwl9IGVsc2UgeworCQlyZXR1 cm47CisJfQorCisJaWd0X2Fzc2VydChmYl9pZCA+IDApOworCisJLyogTWFrZSB0aGUgdGlsZWQg ZnJhbWVidWZmZXIgdGhlIG92ZXJsYXkuICovCisJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQs IG92ZXJsYXlfZmIpOworCSpvdmVybGF5X2ZiID0gdGlsZWRfZmI7Cit9CisKK3N0YXRpYyB2b2lk IHByZXBhcmVfcmFuZG9taXplZF9wbGFuZShkYXRhX3QgKmRhdGEsCisJCQkJICAgICBkcm1Nb2Rl TW9kZUluZm8gKm1vZGUsCisJCQkJICAgICBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCQkJICAgICBz dHJ1Y3QgaWd0X2ZiICpvdmVybGF5X2ZiLAorCQkJCSAgICAgdW5zaWduZWQgaW50IGluZGV4LAor CQkJCSAgICAgY2Fpcm9fc3VyZmFjZV90ICpyZXN1bHRfc3VyZmFjZSwKKwkJCQkgICAgIGJvb2wg YWxsb3dfc2NhbGluZywgYm9vbCBhbGxvd195dXYpCit7CisJc3RydWN0IGlndF9mYiBwYXR0ZXJu X2ZiOworCXVpbnQzMl90IG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oOworCXVpbnQzMl90IG92 ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2g7CisJdWludDMyX3Qgb3ZlcmxheV9zcmNfeCwgb3Zl cmxheV9zcmNfeTsKKwlpbnQzMl90IG92ZXJsYXlfY3J0Y194LCBvdmVybGF5X2NydGNfeTsKKwl1 aW50MzJfdCBvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2g7CisJdWludDMyX3QgZm9ybWF0 OworCXNpemVfdCBzdHJpZGU7CisJYm9vbCB0aWxlZDsKKwlpbnQgZmJfaWQ7CisKKwlyYW5kb21p emVfcGxhbmVfZGltZW5zaW9ucyhtb2RlLCAmb3ZlcmxheV9mYl93LCAmb3ZlcmxheV9mYl9oLAor CQkJCSAgICZvdmVybGF5X3NyY193LCAmb3ZlcmxheV9zcmNfaCwKKwkJCQkgICAmb3ZlcmxheV9z cmNfeCwgJm92ZXJsYXlfc3JjX3ksCisJCQkJICAgJm92ZXJsYXlfY3J0Y193LCAmb3ZlcmxheV9j cnRjX2gsCisJCQkJICAgJm92ZXJsYXlfY3J0Y194LCAmb3ZlcmxheV9jcnRjX3ksCisJCQkJICAg YWxsb3dfc2NhbGluZyk7CisKKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBmcmFtZWJ1ZmZlciBzaXpl ICVkeCVkXG4iLCBpbmRleCwKKwkJICBvdmVybGF5X2ZiX3csIG92ZXJsYXlfZmJfaCk7CisJaWd0 X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBzaXplICVkeCVkXG4iLCBpbmRleCwKKwkJICBvdmVy bGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gpOworCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IG9uLWNy dGMgcG9zaXRpb24gJWR4JWRcbiIsIGluZGV4LAorCQkgIG92ZXJsYXlfY3J0Y194LCBvdmVybGF5 X2NydGNfeSk7CisJaWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIgc2l6ZSAlZHgl ZFxuIiwgaW5kZXgsCisJCSAgb3ZlcmxheV9zcmNfdywgb3ZlcmxheV9zcmNfaCk7CisJaWd0X2Rl YnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIgcG9zaXRpb24gJWR4JWRcbiIsIGluZGV4LAor CQkgIG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3kpOworCisJLyogR2V0IGEgcGF0dGVybiBm cmFtZWJ1ZmZlciBmb3IgdGhlIG92ZXJsYXkgcGxhbmUuICovCisJZmJfaWQgPSBjaGFtZWxpdW1f Z2V0X3BhdHRlcm5fZmIoZGF0YSwgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2gsCisJCQkJCSBE Uk1fRk9STUFUX1hSR0I4ODg4LCAzMiwgJnBhdHRlcm5fZmIpOworCWlndF9hc3NlcnQoZmJfaWQg PiAwKTsKKworCXJhbmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKHBsYW5lLCBvdmVybGF5X2Zi X3csICZmb3JtYXQsICZzdHJpZGUsCisJCQkJICAgICAgJnRpbGVkLCBhbGxvd195dXYpOworCisJ aWd0X2RlYnVnKCJQbGFuZSAlZDogJXMgZm9ybWF0IHdpdGggc3RyaWRlICVsZFxuIiwgaW5kZXgs CisJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSwgc3RyaWRlKTsKKworCWZiX2lkID0gaWd0X2Zi X2NvbnZlcnRfd2l0aF9zdHJpZGUob3ZlcmxheV9mYiwgJnBhdHRlcm5fZmIsIGZvcm1hdCwKKwkJ CQkJICAgc3RyaWRlKTsKKwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisKKwlpZiAodGlsZWQpCisJ CXByZXBhcmVfdGlsZWRfcGxhbmUoZGF0YSwgcGxhbmUsIGluZGV4LCBmb3JtYXQsIG92ZXJsYXlf ZmIpOworCisJYmxpdF9wbGFuZV9jYWlybyhkYXRhLCByZXN1bHRfc3VyZmFjZSwgb3ZlcmxheV9z cmNfdywgb3ZlcmxheV9zcmNfaCwKKwkJCSBvdmVybGF5X3NyY194LCBvdmVybGF5X3NyY195LAor CQkJIG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaCwKKwkJCSBvdmVybGF5X2NydGNfeCwg b3ZlcmxheV9jcnRjX3ksICZwYXR0ZXJuX2ZiKTsKKworCWNvbmZpZ3VyZV9wbGFuZShwbGFuZSwg b3ZlcmxheV9zcmNfdywgb3ZlcmxheV9zcmNfaCwKKwkJCW92ZXJsYXlfc3JjX3gsIG92ZXJsYXlf c3JjX3ksCisJCQlvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gsCisJCQlvdmVybGF5X2Ny dGNfeCwgb3ZlcmxheV9jcnRjX3ksIG92ZXJsYXlfZmIpOworCisJLyogUmVtb3ZlIHRoZSBvcmln aW5hbCBwYXR0ZXJuIGZyYW1lYnVmZmVyLiAqLworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2Zk LCAmcGF0dGVybl9mYik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9wbGFuZXNfcmFu ZG9tKGRhdGFfdCAqZGF0YSwKKwkJCQkgICAgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0 LAorCQkJCSAgICAgICBlbnVtIGNoYW1lbGl1bV9jaGVjayBjaGVjaykKK3sKKwlpZ3Rfb3V0cHV0 X3QgKm91dHB1dDsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJaWd0X3BsYW5lX3QgKnByaW1h cnlfcGxhbmU7CisJc3RydWN0IGlndF9mYiBwcmltYXJ5X2ZiOworCXN0cnVjdCBpZ3RfZmIgcmVz dWx0X2ZiOworCXN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmJzOworCWlndF9jcmNfdCAqY3JjOwor CWlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOworCXN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5j X2RhdGEgKmZiX2NyYzsKKwl1bnNpZ25lZCBpbnQgb3ZlcmxheV9wbGFuZXNfbWF4ID0gMDsKKwl1 bnNpZ25lZCBpbnQgb3ZlcmxheV9wbGFuZXNfY291bnQ7CisJY2Fpcm9fc3VyZmFjZV90ICpyZXN1 bHRfc3VyZmFjZTsKKwlpbnQgY2FwdHVyZWRfZnJhbWVfY291bnQ7CisJYm9vbCBhbGxvd19zY2Fs aW5nOworCWJvb2wgYWxsb3dfeXV2OworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGludCBm Yl9pZDsKKworCXN3aXRjaCAoY2hlY2spIHsKKwljYXNlIENIQU1FTElVTV9DSEVDS19DUkM6CisJ CWFsbG93X3NjYWxpbmcgPSBmYWxzZTsKKwkJYWxsb3dfeXV2ID0gZmFsc2U7CisJCWJyZWFrOwor CWNhc2UgQ0hBTUVMSVVNX0NIRUNLX0NIRUNLRVJCT0FSRDoKKwkJYWxsb3dfc2NhbGluZyA9IHRy dWU7CisJCWFsbG93X3l1diA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3Nl cnQoZmFsc2UpOworCX0KKworCXNyYW5kKHRpbWUoTlVMTCkpOworCisJcmVzZXRfc3RhdGUoZGF0 YSwgcG9ydCk7CisKKwkvKiBGaW5kIHRoZSBjb25uZWN0b3IgYW5kIHBpcGUuICovCisJb3V0cHV0 ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCk7CisKKwltb2RlID0gaWd0X291dHB1dF9nZXRf bW9kZShvdXRwdXQpOworCisJLyogR2V0IGEgZnJhbWVidWZmZXIgZm9yIHRoZSBwcmltYXJ5IHBs YW5lLiAqLworCXByaW1hcnlfcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1 dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X2Fzc2VydChwcmltYXJ5X3BsYW5lKTsK KworCWZiX2lkID0gY2hhbWVsaXVtX2dldF9wYXR0ZXJuX2ZiKGRhdGEsIG1vZGUtPmhkaXNwbGF5 LCBtb2RlLT52ZGlzcGxheSwKKwkJCQkJIERSTV9GT1JNQVRfWFJHQjg4ODgsIDY0LCAmcHJpbWFy eV9mYik7CisJaWd0X2Fzc2VydChmYl9pZCA+IDApOworCisJLyogR2V0IGEgZnJhbWVidWZmZXIg Zm9yIHRoZSBjYWlybyBjb21wb3NpdGlvbiByZXN1bHQuICovCisJZmJfaWQgPSBpZ3RfY3JlYXRl X2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksCisJCQkgICAgICBtb2RlLT52ZGlzcGxh eSwgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUsICZyZXN1bHRfZmIpOworCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKKworCXJlc3VsdF9zdXJm YWNlID0gaWd0X2dldF9jYWlyb19zdXJmYWNlKGRhdGEtPmRybV9mZCwgJnJlc3VsdF9mYik7CisK KwkvKiBQYWludCB0aGUgcHJpbWFyeSBmcmFtZWJ1ZmZlciBvbiB0aGUgcmVzdWx0IHN1cmZhY2Uu ICovCisJYmxpdF9wbGFuZV9jYWlybyhkYXRhLCByZXN1bHRfc3VyZmFjZSwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwKKwkJCSAmcHJpbWFyeV9mYik7CisKKwkvKiBDb25maWd1cmUgdGhlIHByaW1h cnkgcGxhbmUuICovCisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5X3BsYW5lLCAmcHJpbWFyeV9m Yik7CisKKwlvdmVybGF5X3BsYW5lc19tYXggPQorCQlpZ3Rfb3V0cHV0X2NvdW50X3BsYW5lX3R5 cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKTsKKworCS8qIExpbWl0IHRoZSBudW1i ZXIgb2YgcGxhbmVzIHRvIGEgcmVhc29uYWJsZSBzY2VuZS4gKi8KKwlpZiAob3ZlcmxheV9wbGFu ZXNfbWF4ID4gNCkKKwkJb3ZlcmxheV9wbGFuZXNfbWF4ID0gNDsKKworCW92ZXJsYXlfcGxhbmVz X2NvdW50ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxhbmVzX21heCkgKyAxOworCWlndF9kZWJ1Zygi VXNpbmcgJWQgb3ZlcmxheSBwbGFuZXNcbiIsIG92ZXJsYXlfcGxhbmVzX2NvdW50KTsKKworCW92 ZXJsYXlfZmJzID0gY2FsbG9jKHNpemVvZihzdHJ1Y3QgaWd0X2ZiKSwgb3ZlcmxheV9wbGFuZXNf Y291bnQpOworCisJZm9yIChpID0gMDsgaSA8IG92ZXJsYXlfcGxhbmVzX2NvdW50OyBpKyspIHsK KwkJc3RydWN0IGlndF9mYiAqb3ZlcmxheV9mYiA9ICZvdmVybGF5X2Zic1tpXTsKKwkJaWd0X3Bs YW5lX3QgKnBsYW5lID0KKwkJCWlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGVfaW5kZXgob3V0cHV0 LAorCQkJCQkJCURSTV9QTEFORV9UWVBFX09WRVJMQVksCisJCQkJCQkJaSk7CisJCWlndF9hc3Nl cnQocGxhbmUpOworCisJCXByZXBhcmVfcmFuZG9taXplZF9wbGFuZShkYXRhLCBtb2RlLCBwbGFu ZSwgb3ZlcmxheV9mYiwgaSwKKwkJCQkJIHJlc3VsdF9zdXJmYWNlLCBhbGxvd19zY2FsaW5nLAor CQkJCQkgYWxsb3dfeXV2KTsKKwl9CisKKwljYWlyb19zdXJmYWNlX2Rlc3Ryb3kocmVzdWx0X3N1 cmZhY2UpOworCisJaWYgKGNoZWNrID09IENIQU1FTElVTV9DSEVDS19DUkMpCisJCWZiX2NyYyA9 IGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3N0YXJ0KGRhdGEtPmRybV9mZCwKKwkJ CQkJCQkJJnJlc3VsdF9mYik7CisKKwlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5 LCBDT01NSVRfQVRPTUlDKTsKKworCWlmIChjaGVjayA9PSBDSEFNRUxJVU1fQ0hFQ0tfQ1JDKSB7 CisJCWNoYW1lbGl1bV9jYXB0dXJlKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgMCwgMCwgMCwgMCwg MSk7CisJCWNyYyA9IGNoYW1lbGl1bV9yZWFkX2NhcHR1cmVkX2NyY3MoZGF0YS0+Y2hhbWVsaXVt LAorCQkJCQkJICAgJmNhcHR1cmVkX2ZyYW1lX2NvdW50KTsKKworCQlpZ3RfYXNzZXJ0KGNhcHR1 cmVkX2ZyYW1lX2NvdW50ID09IDEpOworCisJCWV4cGVjdGVkX2NyYyA9IGNoYW1lbGl1bV9jYWxj dWxhdGVfZmJfY3JjX2FzeW5jX2ZpbmlzaChmYl9jcmMpOworCisJCWNoYW1lbGl1bV9hc3NlcnRf Y3JjX2VxX29yX2R1bXAoZGF0YS0+Y2hhbWVsaXVtLAorCQkJCQkJZXhwZWN0ZWRfY3JjLCBjcmMs CisJCQkJCQkmcmVzdWx0X2ZiLCAwKTsKKworCQlmcmVlKGV4cGVjdGVkX2NyYyk7CisJCWZyZWUo Y3JjKTsKKwl9IGVsc2UgaWYgKGNoZWNrID09IENIQU1FTElVTV9DSEVDS19DSEVDS0VSQk9BUkQp IHsKKwkJc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1wOworCisJCWR1bXAgPSBjaGFt ZWxpdW1fcG9ydF9kdW1wX3BpeGVscyhkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIDAsIDAsCisJCQkJ CQkgIDAsIDApOworCQljaGFtZWxpdW1fYXNzZXJ0X2ZyYW1lX21hdGNoX29yX2R1bXAoZGF0YS0+ Y2hhbWVsaXVtLCBwb3J0LAorCQkJCQkJICAgICBkdW1wLCAmcmVzdWx0X2ZiLCBjaGVjayk7CisJ CWNoYW1lbGl1bV9kZXN0cm95X2ZyYW1lX2R1bXAoZHVtcCk7CisJfQorCisJZm9yIChpID0gMDsg aSA8IG92ZXJsYXlfcGxhbmVzX2NvdW50OyBpKyspIHsKKwkJc3RydWN0IGlndF9mYiAqb3Zlcmxh eV9mYiA9ICZvdmVybGF5X2Zic1tpXTsKKwkJaWd0X3BsYW5lX3QgKnBsYW5lOworCisJCXBsYW5l ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZV9pbmRleChvdXRwdXQsCisJCQkJCQkJRFJNX1BM QU5FX1RZUEVfT1ZFUkxBWSwKKwkJCQkJCQlpKTsKKwkJaWd0X2Fzc2VydChwbGFuZSk7CisKKwkJ aWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsIG92ZXJsYXlfZmIpOworCX0KKworCWZyZWUob3Zl cmxheV9mYnMpOworCisJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZwcmltYXJ5X2ZiKTsK KwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnJlc3VsdF9mYik7Cit9CisKIHN0YXRpYyB2 b2lkCiB0ZXN0X2hwZF93aXRob3V0X2RkYyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1f cG9ydCAqcG9ydCkKIHsKQEAgLTk3Niw2ICsxNDE0LDEwIEBAIGlndF9tYWluCiAJCQl0ZXN0X2Rp c3BsYXlfb25lX21vZGUoJmRhdGEsIHBvcnQsIERSTV9GT1JNQVRfWFJHQjE1NTUsCiAJCQkJCSAg ICAgIENIQU1FTElVTV9DSEVDS19DUkMsIDEpOwogCisJCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJoZG1p LWNyYy1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCisJCQl0ZXN0X2Rpc3BsYXlfcGxhbmVzX3JhbmRv bSgmZGF0YSwgcG9ydCwKKwkJCQkJCSAgIENIQU1FTElVTV9DSEVDS19DUkMpOworCiAJCWNvbm5l Y3Rvcl9zdWJ0ZXN0KCJoZG1pLWNtcC1udjEyIiwgSERNSUEpCiAJCQl0ZXN0X2Rpc3BsYXlfb25l X21vZGUoJmRhdGEsIHBvcnQsIERSTV9GT1JNQVRfTlYxMiwKIAkJCQkJICAgICAgQ0hBTUVMSVVN X0NIRUNLX0NIRUNLRVJCT0FSRCwgMSk7CkBAIC0xMDA4LDYgKzE0NTAsMTAgQEAgaWd0X21haW4K IAkJCXRlc3RfZGlzcGxheV9vbmVfbW9kZSgmZGF0YSwgcG9ydCwgRFJNX0ZPUk1BVF9ZVlU0MjIs CiAJCQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19DSEVDS0VSQk9BUkQsIDEpOwogCisJCWNvbm5l Y3Rvcl9zdWJ0ZXN0KCJoZG1pLWNtcC1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCisJCQl0ZXN0X2Rp c3BsYXlfcGxhbmVzX3JhbmRvbSgmZGF0YSwgcG9ydCwKKwkJCQkJCSAgIENIQU1FTElVTV9DSEVD S19DSEVDS0VSQk9BUkQpOworCiAJCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJoZG1pLWZyYW1lLWR1bXAi LCBIRE1JQSkKIAkJCXRlc3RfZGlzcGxheV9mcmFtZV9kdW1wKCZkYXRhLCBwb3J0KTsKIAl9Ci0t IAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=