From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7D79C89343 for ; Wed, 20 Feb 2019 15:40:18 +0000 (UTC) From: Paul Kocialkowski Date: Wed, 20 Feb 2019 16:39:13 +0100 Message-Id: <20190220153913.10753-23-paul.kocialkowski@bootlin.com> In-Reply-To: <20190220153913.10753-1-paul.kocialkowski@bootlin.com> References: <20190220153913.10753-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 22/22] 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 Zi1ieTogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgpS ZXZpZXdlZC1ieTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4KUmV2 aWV3ZWQtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Ci0tLQogdGVzdHMva21zX2No YW1lbGl1bS5jIHwgNDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvdGVzdHMv a21zX2NoYW1lbGl1bS5jIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCmluZGV4IGYzMzI1OTJiNGVk Yi4uZTA3MTU5NTAxYzg3IDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKKysrIGIv dGVzdHMva21zX2NoYW1lbGl1bS5jCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25m aWcuaCIKICNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfdmM0LmgiCiAKICNpbmNsdWRl IDxmY250bC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNzAzLDYgKzcwNCw0MzUgQEAgdGVz dF9kaXNwbGF5X2ZyYW1lX2R1bXAoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQg KnBvcnQpCiAJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKIH0KIAorc3RhdGljIHZv aWQgc2VsZWN0X3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgd2lk dGgsCisJCQkJICB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwKKwkJCQkgIHVpbnQ2 NF90ICptb2RpZmllcikKK3sKKwlpZiAoaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBsYW5lLCBm b3JtYXQsCisJCQkJICAgICBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9WQzRfVF9USUxFRCkpIHsK KwkJaWd0X2RlYnVnKCJTZWxlY3RpbmcgVkM0IFQtdGlsaW5nXG4iKTsKKworCQkqbW9kaWZpZXIg PSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9WQzRfVF9USUxFRDsKKwl9IGVsc2UgaWYgKGlndF9w bGFuZV9oYXNfZm9ybWF0X21vZChwbGFuZSwgZm9ybWF0LAorCQkJCQkgICAgRFJNX0ZPUk1BVF9N T0RfQlJPQURDT01fU0FORDI1NikpIHsKKwkJLyogUmFuZG9taXplIHRoZSBjb2x1bW4gaGVpZ2h0 IHRvIGxlc3MgdGhhbiB0d2ljZSB0aGUgbWluaW11bS4gKi8KKwkJc2l6ZV90IGNvbHVtbl9oZWln aHQgPSAocmFuZCgpICUgaGVpZ2h0KSArIGhlaWdodDsKKworCQlpZ3RfZGVidWcoIlNlbGVjdGlu ZyBWQzQgU0FORDI1NiB0aWxpbmcgd2l0aCBjb2x1bW4gaGVpZ2h0ICVsZFxuIiwKKwkJCSAgY29s dW1uX2hlaWdodCk7CisKKwkJKm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fU0FO RDI1Nl9DT0xfSEVJR0hUKGNvbHVtbl9oZWlnaHQpOworCX0gZWxzZSB7CisJCSptb2RpZmllciA9 IERSTV9GT1JNQVRfTU9EX0xJTkVBUjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHJhbmRvbWl6ZV9w bGFuZV9mb3JtYXRfc3RyaWRlKGlndF9wbGFuZV90ICpwbGFuZSwKKwkJCQkJICB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQkJCQkgIHVpbnQzMl90ICpmb3JtYXQsIHVpbnQ2NF90 ICptb2RpZmllciwKKwkJCQkJICBzaXplX3QgKnN0cmlkZSwgYm9vbCBhbGxvd195dXYpCit7CisJ c2l6ZV90IHN0cmlkZV9taW47CisJdWludDMyX3QgKmZvcm1hdHNfYXJyYXk7CisJdW5zaWduZWQg aW50IGZvcm1hdHNfY291bnQ7CisJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKwl1bnNpZ25lZCBp bnQgaTsKKwlib29sIHRpbGVkOworCWludCBpbmRleDsKKworCWlndF9mb3JtYXRfYXJyYXlfZmls bCgmZm9ybWF0c19hcnJheSwgJmZvcm1hdHNfY291bnQsIGFsbG93X3l1dik7CisKKwkvKiBGaXJz dCBwYXNzIHRvIGNvdW50IHRoZSBzdXBwb3J0ZWQgZm9ybWF0cy4gKi8KKwlmb3IgKGkgPSAwOyBp IDwgZm9ybWF0c19jb3VudDsgaSsrKQorCQlpZiAoaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBs YW5lLCBmb3JtYXRzX2FycmF5W2ldLAorCQkJCQkgICAgIERSTV9GT1JNQVRfTU9EX0xJTkVBUikp CisJCQljb3VudCsrOworCisJaWd0X2Fzc2VydChjb3VudCA+IDApOworCisJaW5kZXggPSByYW5k KCkgJSBjb3VudDsKKworCS8qIFNlY29uZCBwYXNzIHRvIGdldCB0aGUgaW5kZXgtdGggc3VwcG9y dGVkIGZvcm1hdC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0c19jb3VudDsgaSsrKSB7CisJ CWlmICghaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBsYW5lLCBmb3JtYXRzX2FycmF5W2ldLAor CQkJCQkgICAgICBEUk1fRk9STUFUX01PRF9MSU5FQVIpKQorCQkJY29udGludWU7CisKKwkJaWYg KCFpbmRleC0tKSB7CisJCQkqZm9ybWF0ID0gZm9ybWF0c19hcnJheVtpXTsKKwkJCWJyZWFrOwor CQl9CisJfQorCisJZnJlZShmb3JtYXRzX2FycmF5KTsKKworCWlndF9hc3NlcnQoaW5kZXggPCAw KTsKKworCXN0cmlkZV9taW4gPSB3aWR0aCAqIGlndF9mb3JtYXRfcGxhbmVfYnBwKCpmb3JtYXQs IDApIC8gODsKKworCS8qIFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHRvIGxlc3MgdGhhbiB0d2ljZSB0 aGUgbWluaW11bS4gKi8KKwkqc3RyaWRlID0gKHJhbmQoKSAlIHN0cmlkZV9taW4pICsgc3RyaWRl X21pbjsKKworCS8qIFBpeG1hbiByZXF1aXJlcyB0aGUgc3RyaWRlIHRvIGJlIGFsaWduZWQgdG8g MzItYnl0ZSB3b3Jkcy4gKi8KKwkqc3RyaWRlID0gQUxJR04oKnN0cmlkZSwgc2l6ZW9mKHVpbnQz Ml90KSk7CisKKwkvKiBSYW5kb21pemUgdGhlIHVzZSBvZiBhIHRpbGVkIG1vZGUgd2l0aCBhIDEv NCBwcm9iYWJpbGl0eS4gKi8KKwl0aWxlZCA9ICgocmFuZCgpICUgNCkgPT0gMCk7CisKKwlpZiAo dGlsZWQpCisJCXNlbGVjdF90aWxlZF9tb2RpZmllcihwbGFuZSwgd2lkdGgsIGhlaWdodCwgKmZv cm1hdCwgbW9kaWZpZXIpOworCWVsc2UKKwkJKm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfTElO RUFSOworfQorCitzdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZGltZW5zaW9ucyhkcm1Nb2Rl TW9kZUluZm8gKm1vZGUsCisJCQkJICAgICAgIHVpbnQzMl90ICp3aWR0aCwgdWludDMyX3QgKmhl aWdodCwKKwkJCQkgICAgICAgdWludDMyX3QgKnNyY193LCB1aW50MzJfdCAqc3JjX2gsCisJCQkJ ICAgICAgIHVpbnQzMl90ICpzcmNfeCwgdWludDMyX3QgKnNyY195LAorCQkJCSAgICAgICB1aW50 MzJfdCAqY3J0Y193LCB1aW50MzJfdCAqY3J0Y19oLAorCQkJCSAgICAgICBpbnQzMl90ICpjcnRj X3gsIGludDMyX3QgKmNydGNfeSwKKwkJCQkgICAgICAgYm9vbCBhbGxvd19zY2FsaW5nKQorewor CWRvdWJsZSByYXRpbzsKKworCS8qIFJhbmRvbWl6ZSB3aWR0aCBhbmQgaGVpZ2h0IGluIHRoZSBt b2RlIGRpbWVuc2lvbnMgcmFuZ2UuICovCisJKndpZHRoID0gKHJhbmQoKSAlIG1vZGUtPmhkaXNw bGF5KSArIDE7CisJKmhlaWdodCA9IChyYW5kKCkgJSBtb2RlLT52ZGlzcGxheSkgKyAxOworCisJ LyogUmFuZG9taXplIHNvdXJjZSBvZmZzZXQgaW4gdGhlIGZpcnN0IGhhbGYgb2YgdGhlIG9yaWdp bmFsIHNpemUuICovCisJKnNyY194ID0gcmFuZCgpICUgKCp3aWR0aCAvIDIpOworCSpzcmNfeSA9 IHJhbmQoKSAlICgqaGVpZ2h0IC8gMik7CisKKwkvKiBUaGUgc291cmNlIHNpemUgb25seSBpbmNs dWRlcyB0aGUgYWN0aXZlIHNvdXJjZSBhcmVhLiAqLworCSpzcmNfdyA9ICp3aWR0aCAtICpzcmNf eDsKKwkqc3JjX2ggPSAqaGVpZ2h0IC0gKnNyY195OworCisJaWYgKGFsbG93X3NjYWxpbmcpIHsK KwkJKmNydGNfdyA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkgKyAxOworCQkqY3J0Y19oID0g KHJhbmQoKSAlIG1vZGUtPnZkaXNwbGF5KSArIDE7CisKKwkJLyoKKwkJICogRG9uJ3QgYm90aGVy IHdpdGggc2NhbGluZyBpZiBkaW1lbnNpb25zIGFyZSBxdWl0ZSBjbG9zZSBpbgorCQkgKiBvcmRl ciB0byBnZXQgbm9uLXNjYWxpbmcgY2FzZXMgbW9yZSBmcmVxdWVudGx5LiBBbHNvIGxpbWl0CisJ CSAqIHNjYWxpbmcgdG8gM3ggdG8gYXZvaWQgYWdyZXNzaXZlIGZpbHRlcmluZyB0aGF0IG1ha2Vz CisJCSAqIGNvbXBhcmlzb24gbGVzcyByZWxpYWJsZS4KKwkJICovCisKKwkJcmF0aW8gPSAoKGRv dWJsZSkgKmNydGNfdyAvICpzcmNfdyk7CisJCWlmIChyYXRpbyA+IDAuOCAmJiByYXRpbyA8IDEu MikKKwkJCSpjcnRjX3cgPSAqc3JjX3c7CisJCWVsc2UgaWYgKHJhdGlvID4gMy4wKQorCQkJKmNy dGNfdyA9ICpzcmNfdyAqIDM7CisKKwkJcmF0aW8gPSAoKGRvdWJsZSkgKmNydGNfaCAvICpzcmNf aCk7CisJCWlmIChyYXRpbyA+IDAuOCAmJiByYXRpbyA8IDEuMikKKwkJCSpjcnRjX2ggPSAqc3Jj X2g7CisJCWVsc2UgaWYgKHJhdGlvID4gMy4wKQorCQkJKmNydGNfaCA9ICpzcmNfaCAqIDM7CisJ fSBlbHNlIHsKKwkJKmNydGNfdyA9ICpzcmNfdzsKKwkJKmNydGNfaCA9ICpzcmNfaDsKKwl9CisK KwlpZiAoKmNydGNfdyAhPSAqc3JjX3cgfHwgKmNydGNfaCAhPSAqc3JjX2gpIHsKKwkJLyoKKwkJ ICogV2hlbiBzY2FsaW5nIGlzIGludm9sdmVkLCBtYWtlIHN1cmUgdG8gbm90IGdvIG9mZi1ib3Vu ZHMgb3IKKwkJICogc2NhbGVkIGNsaXBwaW5nIG1heSByZXN1bHQgaW4gZGVjaW1hbCBkaW1lbnNp b25zLCB0aGF0IG1vc3QKKwkJICogZHJpdmVycyBkb24ndCBzdXBwb3J0LgorCQkgKi8KKwkJKmNy dGNfeCA9IHJhbmQoKSAlIChtb2RlLT5oZGlzcGxheSAtICpjcnRjX3cpOworCQkqY3J0Y195ID0g cmFuZCgpICUgKG1vZGUtPnZkaXNwbGF5IC0gKmNydGNfaCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJ ICogUmFuZG9taXplIHRoZSBvbi1jcnRjIHBvc2l0aW9uIGFuZCBhbGxvdyB0aGUgcGxhbmUgdG8g Z28KKwkJICogb2ZmLWRpc3BsYXkgYnkgbGVzcyB0aGFuIGhhbGYgb2YgaXRzIG9uLWNydGMgZGlt ZW5zaW9ucy4KKwkJICovCisJCSpjcnRjX3ggPSAocmFuZCgpICUgbW9kZS0+aGRpc3BsYXkpIC0g KmNydGNfdyAvIDI7CisJCSpjcnRjX3kgPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpIC0gKmNy dGNfaCAvIDI7CisJfQorfQorCitzdGF0aWMgdm9pZCBibGl0X3BsYW5lX2NhaXJvKGRhdGFfdCAq ZGF0YSwgY2Fpcm9fc3VyZmFjZV90ICpyZXN1bHQsCisJCQkgICAgIHVpbnQzMl90IHNyY193LCB1 aW50MzJfdCBzcmNfaCwKKwkJCSAgICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LAor CQkJICAgICB1aW50MzJfdCBjcnRjX3csIHVpbnQzMl90IGNydGNfaCwKKwkJCSAgICAgaW50MzJf dCBjcnRjX3gsIGludDMyX3QgY3J0Y195LAorCQkJICAgICBzdHJ1Y3QgaWd0X2ZiICpmYikKK3sK KwljYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CisJY2Fpcm9fc3VyZmFjZV90ICpjbGlwcGVkX3N1 cmZhY2U7CisJY2Fpcm9fdCAqY3I7CisKKwlzdXJmYWNlID0gaWd0X2dldF9jYWlyb19zdXJmYWNl KGRhdGEtPmRybV9mZCwgZmIpOworCisJaWYgKHNyY194IHx8IHNyY195KSB7CisJCWNsaXBwZWRf c3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwK KwkJCQkJCQkgICAgIHNyY193LCBzcmNfaCk7CisKKwkJY3IgPSBjYWlyb19jcmVhdGUoY2xpcHBl ZF9zdXJmYWNlKTsKKworCQljYWlyb190cmFuc2xhdGUoY3IsIC0xLiAqIHNyY194LCAtMS4gKiBz cmNfeSk7CisKKwkJY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsK KworCQljYWlyb19wYWludChjcik7CisJCWNhaXJvX3N1cmZhY2VfZmx1c2goY2xpcHBlZF9zdXJm YWNlKTsKKworCQljYWlyb19kZXN0cm95KGNyKTsKKwl9IGVsc2UgeworCQljbGlwcGVkX3N1cmZh Y2UgPSBzdXJmYWNlOworCX0KKworCWNyID0gY2Fpcm9fY3JlYXRlKHJlc3VsdCk7CisKKwljYWly b190cmFuc2xhdGUoY3IsIGNydGNfeCwgY3J0Y195KTsKKworCWlmIChzcmNfdyAhPSBjcnRjX3cg fHwgc3JjX2ggIT0gY3J0Y19oKSB7CisJCWNhaXJvX3NjYWxlKGNyLCAoZG91YmxlKSBjcnRjX3cg LyBzcmNfdywKKwkJCSAgICAoZG91YmxlKSBjcnRjX2ggLyBzcmNfaCk7CisJfQorCisJY2Fpcm9f c2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBjbGlwcGVkX3N1cmZhY2UsIDAsIDApOworCWNhaXJvX3N1 cmZhY2VfZGVzdHJveShjbGlwcGVkX3N1cmZhY2UpOworCisJaWYgKHNyY193ICE9IGNydGNfdyB8 fCBzcmNfaCAhPSBjcnRjX2gpIHsKKwkJY2Fpcm9fcGF0dGVybl9zZXRfZmlsdGVyKGNhaXJvX2dl dF9zb3VyY2UoY3IpLAorCQkJCQkgQ0FJUk9fRklMVEVSX0JJTElORUFSKTsKKwkJY2Fpcm9fcGF0 dGVybl9zZXRfZXh0ZW5kKGNhaXJvX2dldF9zb3VyY2UoY3IpLAorCQkJCQkgQ0FJUk9fRVhURU5E X05PTkUpOworCX0KKworCWNhaXJvX3BhaW50KGNyKTsKKwljYWlyb19zdXJmYWNlX2ZsdXNoKHJl c3VsdCk7CisKKwljYWlyb19kZXN0cm95KGNyKTsKK30KKworc3RhdGljIHZvaWQgY29uZmlndXJl X3BsYW5lKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19o LAorCQkJICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwgdWludDMyX3QgY3J0Y193 LAorCQkJICAgIHVpbnQzMl90IGNydGNfaCwgaW50MzJfdCBjcnRjX3gsIGludDMyX3QgY3J0Y195 LAorCQkJICAgIHN0cnVjdCBpZ3RfZmIgKmZiKQoreworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUs IGZiKTsKKworCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIGNydGNfeCwgY3J0Y195KTsK KwlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGNydGNfdywgY3J0Y19oKTsKKworCWlndF9mYl9z ZXRfcG9zaXRpb24oZmIsIHBsYW5lLCBzcmNfeCwgc3JjX3kpOworCWlndF9mYl9zZXRfc2l6ZShm YiwgcGxhbmUsIHNyY193LCBzcmNfaCk7Cit9CisKK3N0YXRpYyB2b2lkIHByZXBhcmVfcmFuZG9t aXplZF9wbGFuZShkYXRhX3QgKmRhdGEsCisJCQkJICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUs CisJCQkJICAgICBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCQkJICAgICBzdHJ1Y3QgaWd0X2ZiICpv dmVybGF5X2ZiLAorCQkJCSAgICAgdW5zaWduZWQgaW50IGluZGV4LAorCQkJCSAgICAgY2Fpcm9f c3VyZmFjZV90ICpyZXN1bHRfc3VyZmFjZSwKKwkJCQkgICAgIGJvb2wgYWxsb3dfc2NhbGluZywg Ym9vbCBhbGxvd195dXYpCit7CisJc3RydWN0IGlndF9mYiBwYXR0ZXJuX2ZiOworCXVpbnQzMl90 IG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oOworCXVpbnQzMl90IG92ZXJsYXlfc3JjX3csIG92 ZXJsYXlfc3JjX2g7CisJdWludDMyX3Qgb3ZlcmxheV9zcmNfeCwgb3ZlcmxheV9zcmNfeTsKKwlp bnQzMl90IG92ZXJsYXlfY3J0Y194LCBvdmVybGF5X2NydGNfeTsKKwl1aW50MzJfdCBvdmVybGF5 X2NydGNfdywgb3ZlcmxheV9jcnRjX2g7CisJdWludDMyX3QgZm9ybWF0OworCXVpbnQ2NF90IG1v ZGlmaWVyOworCXNpemVfdCBzdHJpZGU7CisJYm9vbCB0aWxlZDsKKwlpbnQgZmJfaWQ7CisKKwly YW5kb21pemVfcGxhbmVfZGltZW5zaW9ucyhtb2RlLCAmb3ZlcmxheV9mYl93LCAmb3ZlcmxheV9m Yl9oLAorCQkJCSAgICZvdmVybGF5X3NyY193LCAmb3ZlcmxheV9zcmNfaCwKKwkJCQkgICAmb3Zl cmxheV9zcmNfeCwgJm92ZXJsYXlfc3JjX3ksCisJCQkJICAgJm92ZXJsYXlfY3J0Y193LCAmb3Zl cmxheV9jcnRjX2gsCisJCQkJICAgJm92ZXJsYXlfY3J0Y194LCAmb3ZlcmxheV9jcnRjX3ksCisJ CQkJICAgYWxsb3dfc2NhbGluZyk7CisKKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBmcmFtZWJ1ZmZl ciBzaXplICVkeCVkXG4iLCBpbmRleCwKKwkJICBvdmVybGF5X2ZiX3csIG92ZXJsYXlfZmJfaCk7 CisJaWd0X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBzaXplICVkeCVkXG4iLCBpbmRleCwKKwkJ ICBvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gpOworCWlndF9kZWJ1ZygiUGxhbmUgJWQ6 IG9uLWNydGMgcG9zaXRpb24gJWR4JWRcbiIsIGluZGV4LAorCQkgIG92ZXJsYXlfY3J0Y194LCBv dmVybGF5X2NydGNfeSk7CisJaWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIgc2l6 ZSAlZHglZFxuIiwgaW5kZXgsCisJCSAgb3ZlcmxheV9zcmNfdywgb3ZlcmxheV9zcmNfaCk7CisJ aWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIgcG9zaXRpb24gJWR4JWRcbiIsIGlu ZGV4LAorCQkgIG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3kpOworCisJLyogR2V0IGEgcGF0 dGVybiBmcmFtZWJ1ZmZlciBmb3IgdGhlIG92ZXJsYXkgcGxhbmUuICovCisJZmJfaWQgPSBjaGFt ZWxpdW1fZ2V0X3BhdHRlcm5fZmIoZGF0YSwgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2gsCisJ CQkJCSBEUk1fRk9STUFUX1hSR0I4ODg4LCAzMiwgJnBhdHRlcm5fZmIpOworCWlndF9hc3NlcnQo ZmJfaWQgPiAwKTsKKworCXJhbmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKHBsYW5lLCBvdmVy bGF5X2ZiX3csIG92ZXJsYXlfZmJfaCwKKwkJCQkgICAgICAmZm9ybWF0LCAmbW9kaWZpZXIsICZz dHJpZGUsIGFsbG93X3l1dik7CisKKwl0aWxlZCA9IChtb2RpZmllciAhPSBMT0NBTF9EUk1fRk9S TUFUX01PRF9OT05FKTsKKworCWlndF9kZWJ1ZygiUGxhbmUgJWQ6ICVzIGZvcm1hdCAoJXMpIHdp dGggc3RyaWRlICVsZFxuIiwgaW5kZXgsCisJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSwgdGls ZWQgPyAidGlsZWQiIDogImxpbmVhciIsIHN0cmlkZSk7CisKKwlmYl9pZCA9IGlndF9mYl9jb252 ZXJ0X3dpdGhfc3RyaWRlKG92ZXJsYXlfZmIsICZwYXR0ZXJuX2ZiLCBmb3JtYXQsCisJCQkJCSAg IG1vZGlmaWVyLCBzdHJpZGUpOworCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKKworCWJsaXRfcGxh bmVfY2Fpcm8oZGF0YSwgcmVzdWx0X3N1cmZhY2UsIG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3Jj X2gsCisJCQkgb3ZlcmxheV9zcmNfeCwgb3ZlcmxheV9zcmNfeSwKKwkJCSBvdmVybGF5X2NydGNf dywgb3ZlcmxheV9jcnRjX2gsCisJCQkgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195LCAm cGF0dGVybl9mYik7CisKKwljb25maWd1cmVfcGxhbmUocGxhbmUsIG92ZXJsYXlfc3JjX3csIG92 ZXJsYXlfc3JjX2gsCisJCQlvdmVybGF5X3NyY194LCBvdmVybGF5X3NyY195LAorCQkJb3Zlcmxh eV9jcnRjX3csIG92ZXJsYXlfY3J0Y19oLAorCQkJb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0 Y195LCBvdmVybGF5X2ZiKTsKKworCS8qIFJlbW92ZSB0aGUgb3JpZ2luYWwgcGF0dGVybiBmcmFt ZWJ1ZmZlci4gKi8KKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnBhdHRlcm5fZmIpOwor fQorCitzdGF0aWMgdm9pZCB0ZXN0X2Rpc3BsYXlfcGxhbmVzX3JhbmRvbShkYXRhX3QgKmRhdGEs CisJCQkJICAgICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKKwkJCQkgICAgICAgZW51 bSBjaGFtZWxpdW1fY2hlY2sgY2hlY2spCit7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJZHJt TW9kZU1vZGVJbmZvICptb2RlOworCWlndF9wbGFuZV90ICpwcmltYXJ5X3BsYW5lOworCXN0cnVj dCBpZ3RfZmIgcHJpbWFyeV9mYjsKKwlzdHJ1Y3QgaWd0X2ZiIHJlc3VsdF9mYjsKKwlzdHJ1Y3Qg aWd0X2ZiICpvdmVybGF5X2ZiczsKKwlpZ3RfY3JjX3QgKmNyYzsKKwlpZ3RfY3JjX3QgKmV4cGVj dGVkX2NyYzsKKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhICpmYl9jcmM7CisJ dW5zaWduZWQgaW50IG92ZXJsYXlfcGxhbmVzX21heCA9IDA7CisJdW5zaWduZWQgaW50IG92ZXJs YXlfcGxhbmVzX2NvdW50OworCWNhaXJvX3N1cmZhY2VfdCAqcmVzdWx0X3N1cmZhY2U7CisJaW50 IGNhcHR1cmVkX2ZyYW1lX2NvdW50OworCWJvb2wgYWxsb3dfc2NhbGluZzsKKwlib29sIGFsbG93 X3l1djsKKwl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBpbnQgZmJfaWQ7CisKKwlzd2l0Y2gg KGNoZWNrKSB7CisJY2FzZSBDSEFNRUxJVU1fQ0hFQ0tfQ1JDOgorCQlhbGxvd19zY2FsaW5nID0g ZmFsc2U7CisJCWFsbG93X3l1diA9IGZhbHNlOworCQlicmVhazsKKwljYXNlIENIQU1FTElVTV9D SEVDS19DSEVDS0VSQk9BUkQ6CisJCWFsbG93X3NjYWxpbmcgPSB0cnVlOworCQlhbGxvd195dXYg PSB0cnVlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfYXNzZXJ0KGZhbHNlKTsKKwl9CisK KwlzcmFuZCh0aW1lKE5VTEwpKTsKKworCXJlc2V0X3N0YXRlKGRhdGEsIHBvcnQpOworCisJLyog RmluZCB0aGUgY29ubmVjdG9yIGFuZCBwaXBlLiAqLworCW91dHB1dCA9IHByZXBhcmVfb3V0cHV0 KGRhdGEsIHBvcnQpOworCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwor CS8qIEdldCBhIGZyYW1lYnVmZmVyIGZvciB0aGUgcHJpbWFyeSBwbGFuZS4gKi8KKwlwcmltYXJ5 X3BsYW5lID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBF X1BSSU1BUlkpOworCWlndF9hc3NlcnQocHJpbWFyeV9wbGFuZSk7CisKKwlmYl9pZCA9IGNoYW1l bGl1bV9nZXRfcGF0dGVybl9mYihkYXRhLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXks CisJCQkJCSBEUk1fRk9STUFUX1hSR0I4ODg4LCA2NCwgJnByaW1hcnlfZmIpOworCWlndF9hc3Nl cnQoZmJfaWQgPiAwKTsKKworCS8qIEdldCBhIGZyYW1lYnVmZmVyIGZvciB0aGUgY2Fpcm8gY29t cG9zaXRpb24gcmVzdWx0LiAqLworCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQs IG1vZGUtPmhkaXNwbGF5LAorCQkJICAgICAgbW9kZS0+dmRpc3BsYXksIERSTV9GT1JNQVRfWFJH Qjg4ODgsCisJCQkgICAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmcmVzdWx0X2ZiKTsK KwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisKKwlyZXN1bHRfc3VyZmFjZSA9IGlndF9nZXRfY2Fp cm9fc3VyZmFjZShkYXRhLT5kcm1fZmQsICZyZXN1bHRfZmIpOworCisJLyogUGFpbnQgdGhlIHBy aW1hcnkgZnJhbWVidWZmZXIgb24gdGhlIHJlc3VsdCBzdXJmYWNlLiAqLworCWJsaXRfcGxhbmVf Y2Fpcm8oZGF0YSwgcmVzdWx0X3N1cmZhY2UsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisJCQkg JnByaW1hcnlfZmIpOworCisJLyogQ29uZmlndXJlIHRoZSBwcmltYXJ5IHBsYW5lLiAqLworCWln dF9wbGFuZV9zZXRfZmIocHJpbWFyeV9wbGFuZSwgJnByaW1hcnlfZmIpOworCisJb3ZlcmxheV9w bGFuZXNfbWF4ID0KKwkJaWd0X291dHB1dF9jb3VudF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BM QU5FX1RZUEVfT1ZFUkxBWSk7CisKKwkvKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHBsYW5lcyB0byBh IHJlYXNvbmFibGUgc2NlbmUuICovCisJb3ZlcmxheV9wbGFuZXNfbWF4ID0gbWF4KG92ZXJsYXlf cGxhbmVzX21heCwgNCk7CisKKwlvdmVybGF5X3BsYW5lc19jb3VudCA9IChyYW5kKCkgJSBvdmVy bGF5X3BsYW5lc19tYXgpICsgMTsKKwlpZ3RfZGVidWcoIlVzaW5nICVkIG92ZXJsYXkgcGxhbmVz XG4iLCBvdmVybGF5X3BsYW5lc19jb3VudCk7CisKKwlvdmVybGF5X2ZicyA9IGNhbGxvYyhzaXpl b2Yoc3RydWN0IGlndF9mYiksIG92ZXJsYXlfcGxhbmVzX2NvdW50KTsKKworCWZvciAoaSA9IDA7 IGkgPCBvdmVybGF5X3BsYW5lc19jb3VudDsgaSsrKSB7CisJCXN0cnVjdCBpZ3RfZmIgKm92ZXJs YXlfZmIgPSAmb3ZlcmxheV9mYnNbaV07CisJCWlndF9wbGFuZV90ICpwbGFuZSA9CisJCQlpZ3Rf b3V0cHV0X2dldF9wbGFuZV90eXBlX2luZGV4KG91dHB1dCwKKwkJCQkJCQlEUk1fUExBTkVfVFlQ RV9PVkVSTEFZLAorCQkJCQkJCWkpOworCQlpZ3RfYXNzZXJ0KHBsYW5lKTsKKworCQlwcmVwYXJl X3JhbmRvbWl6ZWRfcGxhbmUoZGF0YSwgbW9kZSwgcGxhbmUsIG92ZXJsYXlfZmIsIGksCisJCQkJ CSByZXN1bHRfc3VyZmFjZSwgYWxsb3dfc2NhbGluZywKKwkJCQkJIGFsbG93X3l1dik7CisJfQor CisJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHJlc3VsdF9zdXJmYWNlKTsKKworCWlmIChjaGVjayA9 PSBDSEFNRUxJVU1fQ0hFQ0tfQ1JDKQorCQlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2Zi X2NyY19hc3luY19zdGFydChkYXRhLT5kcm1fZmQsCisJCQkJCQkJCSZyZXN1bHRfZmIpOworCisJ aWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlp ZiAoY2hlY2sgPT0gQ0hBTUVMSVVNX0NIRUNLX0NSQykgeworCQljaGFtZWxpdW1fY2FwdHVyZShk YXRhLT5jaGFtZWxpdW0sIHBvcnQsIDAsIDAsIDAsIDAsIDEpOworCQljcmMgPSBjaGFtZWxpdW1f cmVhZF9jYXB0dXJlZF9jcmNzKGRhdGEtPmNoYW1lbGl1bSwKKwkJCQkJCSAgICZjYXB0dXJlZF9m cmFtZV9jb3VudCk7CisKKwkJaWd0X2Fzc2VydChjYXB0dXJlZF9mcmFtZV9jb3VudCA9PSAxKTsK KworCQlleHBlY3RlZF9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19maW5p c2goZmJfY3JjKTsKKworCQljaGFtZWxpdW1fYXNzZXJ0X2NyY19lcV9vcl9kdW1wKGRhdGEtPmNo YW1lbGl1bSwKKwkJCQkJCWV4cGVjdGVkX2NyYywgY3JjLAorCQkJCQkJJnJlc3VsdF9mYiwgMCk7 CisKKwkJZnJlZShleHBlY3RlZF9jcmMpOworCQlmcmVlKGNyYyk7CisJfSBlbHNlIGlmIChjaGVj ayA9PSBDSEFNRUxJVU1fQ0hFQ0tfQ0hFQ0tFUkJPQVJEKSB7CisJCXN0cnVjdCBjaGFtZWxpdW1f ZnJhbWVfZHVtcCAqZHVtcDsKKworCQlkdW1wID0gY2hhbWVsaXVtX3BvcnRfZHVtcF9waXhlbHMo ZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LCAwLCAwLAorCQkJCQkJICAwLCAwKTsKKwkJY2hhbWVsaXVt X2Fzc2VydF9mcmFtZV9tYXRjaF9vcl9kdW1wKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwKKwkJCQkJ CSAgICAgZHVtcCwgJnJlc3VsdF9mYiwgY2hlY2spOworCQljaGFtZWxpdW1fZGVzdHJveV9mcmFt ZV9kdW1wKGR1bXApOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBvdmVybGF5X3BsYW5lc19jb3Vu dDsgaSsrKSB7CisJCXN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmIgPSAmb3ZlcmxheV9mYnNbaV07 CisJCWlndF9wbGFuZV90ICpwbGFuZTsKKworCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5l X3R5cGVfaW5kZXgob3V0cHV0LAorCQkJCQkJCURSTV9QTEFORV9UWVBFX09WRVJMQVksCisJCQkJ CQkJaSk7CisJCWlndF9hc3NlcnQocGxhbmUpOworCisJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJt X2ZkLCBvdmVybGF5X2ZiKTsKKwl9CisKKwlmcmVlKG92ZXJsYXlfZmJzKTsKKworCWlndF9yZW1v dmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcHJpbWFyeV9mYik7CisJaWd0X3JlbW92ZV9mYihkYXRhLT5k cm1fZmQsICZyZXN1bHRfZmIpOworfQorCiBzdGF0aWMgdm9pZAogdGVzdF9ocGRfd2l0aG91dF9k ZGMoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiB7CkBAIC05Nzcs NiArMTQwNywxMCBAQCBpZ3RfbWFpbgogCQkJdGVzdF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBw b3J0LCBEUk1fRk9STUFUX1hSR0IxNTU1LAogCQkJCQkgICAgICBDSEFNRUxJVU1fQ0hFQ0tfQ1JD LCAxKTsKIAorCQljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1jcmMtcGxhbmVzLXJhbmRvbSIsIEhE TUlBKQorCQkJdGVzdF9kaXNwbGF5X3BsYW5lc19yYW5kb20oJmRhdGEsIHBvcnQsCisJCQkJCQkg ICBDSEFNRUxJVU1fQ0hFQ0tfQ1JDKTsKKwogCQljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1jbXAt bnYxMiIsIEhETUlBKQogCQkJdGVzdF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LCBEUk1f Rk9STUFUX05WMTIsCiAJCQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19DSEVDS0VSQk9BUkQsIDEp OwpAQCAtMTAwOSw2ICsxNDQzLDEwIEBAIGlndF9tYWluCiAJCQl0ZXN0X2Rpc3BsYXlfb25lX21v ZGUoJmRhdGEsIHBvcnQsIERSTV9GT1JNQVRfWVZVNDIyLAogCQkJCQkgICAgICBDSEFNRUxJVU1f Q0hFQ0tfQ0hFQ0tFUkJPQVJELCAxKTsKIAorCQljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1jbXAt cGxhbmVzLXJhbmRvbSIsIEhETUlBKQorCQkJdGVzdF9kaXNwbGF5X3BsYW5lc19yYW5kb20oJmRh dGEsIHBvcnQsCisJCQkJCQkgICBDSEFNRUxJVU1fQ0hFQ0tfQ0hFQ0tFUkJPQVJEKTsKKwogCQlj b25uZWN0b3Jfc3VidGVzdCgiaGRtaS1mcmFtZS1kdW1wIiwgSERNSUEpCiAJCQl0ZXN0X2Rpc3Bs YXlfZnJhbWVfZHVtcCgmZGF0YSwgcG9ydCk7CiAJfQotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=