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 93B476E00F for ; Fri, 25 Jan 2019 13:58:58 +0000 (UTC) Message-ID: From: Paul Kocialkowski Date: Fri, 25 Jan 2019 14:58:56 +0100 In-Reply-To: <6b128c813b480be98fcb68666884ca9bfb6c0c5d.camel@redhat.com> References: <20190111090532.19235-1-paul.kocialkowski@bootlin.com> <20190111090532.19235-22-paul.kocialkowski@bootlin.com> <6b128c813b480be98fcb68666884ca9bfb6c0c5d.camel@redhat.com> Mime-Version: 1.0 Subject: Re: [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: Lyude Paul , igt-dev@lists.freedesktop.org Cc: Petri Latvala , Eben Upton , Thomas Petazzoni List-ID: SGksCgpPbiBUdWUsIDIwMTktMDEtMTUgYXQgMTc6NTYgLTA1MDAsIEx5dWRlIFBhdWwgd3JvdGU6 Cj4gT24gRnJpLCAyMDE5LTAxLTExIGF0IDEwOjA1ICswMTAwLCBQYXVsIEtvY2lhbGtvd3NraSB3 cm90ZToKPiA+IFRoaXMgaW50cm9kdWNlcyBhIG5ldyB0ZXN0IGZvciB0aGUgQ2hhbWVsaXVtLCB0 aGF0IHNldHMgdXAgcGxhbmVzCj4gPiB3aXRoIHJhbmRvbWl6ZWQgcHJvcGVydGllcyBzdWNoIGFz IHRoZSBmb3JtYXQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLAo+ID4gaW4tZnJhbWVidWZmZXIgb2Zm c2V0cyBhbmQgc3RyaWRlLiBUaGUgQ2hhbWVsaXVtIGNhcHR1cmUgaXMgY2hlY2tlZAo+ID4gYWdh aW5zdCB0aGUgcmVmZXJlbmNlIGdlbmVyYXRlZCBieSBjYWlybyB3aXRoIGVpdGhlciBhIENSQyBv ciB0aGUKPiA+IGNoZWNrZXJib2FyZC1zcGVjaWZpYyBjb21wYXJpc29uIG1ldGhvZC4KPiA+IAo+ ID4gVGhpcyB0ZXN0IGFsc28gaW5jbHVkZXMgdGVzdGluZyBvZiB0aGUgVkM0LXNwZWNpZmljIFQt dGlsZWQgYW5kCj4gPiBTQU5ELXRpbGVkIG1vZGVzLCBpbiBhbGwgZm9ybWF0cyBzdXBwb3J0ZWQg YnkgdGhlIGhhcmR3YXJlLgo+ID4gCj4gPiBTaW5jZSB0aGlzIHRlc3QgZG9lcyBub3Qgc2hhcmUg bXVjaCB3aXRoIHByZXZpb3VzIENoYW1lbGl1bSBkaXNwbGF5Cj4gPiB0ZXN0cyAoZXNwZWNpYWxs eSByZWdhcmRpbmcgS01TIGNvbmZpZ3VyYXRpb24pLCBtb3N0IG9mIHRoZSBjb2RlIGlzCj4gPiBu b3Qgc2hhcmVkIHdpdGggb3RoZXIgdGVzdHMuCj4gPiAKPiA+IFRoaXMgdGVzdCBjYW4gYmUgZGVy aXZlZCB3aXRoIHJlcHJvZHVjaWJsZSBwcm9wZXJ0aWVzIGZvciByZWdyZXNzaW9uCj4gPiB0ZXN0 aW5nIGluIHRoZSBmdXR1cmUuIEZvciBub3csIGl0IHNlcnZlcyBhcyBhIGZ1enppbmcgdGVzdAo+ ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dz a2lAYm9vdGxpbi5jb20+Cj4gPiAtLS0KPiA+ICB0ZXN0cy9rbXNfY2hhbWVsaXVtLmMgfCA0NDYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgMSBmaWxlIGNo YW5nZWQsIDQ0NiBpbnNlcnRpb25zKCspCj4gPiAKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNf Y2hhbWVsaXVtLmMgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKPiA+IGluZGV4IDI3NzlkNzRmNTVi Ni4uNTk2Mzk2NDg3OGJhIDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCj4g PiArKysgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKPiA+IEBAIC0yNiw2ICsyNiw3IEBACj4gPiAg Cj4gPiAgI2luY2x1ZGUgImNvbmZpZy5oIgo+ID4gICNpbmNsdWRlICJpZ3QuaCIKPiA+ICsjaW5j bHVkZSAiaWd0X3ZjNC5oIgo+ID4gIAo+ID4gICNpbmNsdWRlIDxmY250bC5oPgo+ID4gICNpbmNs dWRlIDxzdHJpbmcuaD4KPiA+IEBAIC03MDIsNiArNzAzLDQ0MyBAQCB0ZXN0X2Rpc3BsYXlfZnJh bWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ID4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4g PiAgCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0 YXRpYyB2b2lkIHJhbmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKGlndF9wbGFuZV90ICpwbGFu ZSwgdWludDMyX3QKPiA+IHdpZHRoLAo+ID4gKwkJCQkJICB1aW50MzJfdCAqZm9ybWF0LCBzaXpl X3QgKnN0cmlkZSwKPiA+ICsJCQkJCSAgYm9vbCAqdGlsZWQsIGJvb2wgYWxsb3dfeXV2KQo+ID4g K3sKPiA+ICsJc2l6ZV90IHN0cmlkZV9taW47Cj4gPiArCXVpbnQzMl90ICpmb3JtYXRzX2FycmF5 Owo+ID4gKwl1bnNpZ25lZCBpbnQgZm9ybWF0c19jb3VudDsKPiA+ICsJdW5zaWduZWQgaW50IGNv dW50ID0gMDsKPiA+ICsJdW5zaWduZWQgaW50IGk7Cj4gPiArCWludCBpbmRleDsKPiA+ICsKPiA+ ICsJaWd0X2Zvcm1hdF9hcnJheV9maWxsKCZmb3JtYXRzX2FycmF5LCAmZm9ybWF0c19jb3VudCwg YWxsb3dfeXV2KTsKPiA+ICsKPiA+ICsJLyogRmlyc3QgcGFzcyB0byBjb3VudCB0aGUgc3VwcG9y dGVkIGZvcm1hdHMuICovCj4gPiArCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2NvdW50OyBpKysp Cj4gPiArCQlpZiAoaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBsYW5lLCBmb3JtYXRzX2FycmF5 W2ldLAo+ID4gKwkJCQkJICAgICBEUk1fRk9STUFUX01PRF9MSU5FQVIpKQo+ID4gKwkJCWNvdW50 Kys7Cj4gPiArCj4gPiArCWlndF9hc3NlcnQoY291bnQgPiAwKTsKPiA+ICsKPiA+ICsJaW5kZXgg PSByYW5kKCkgJSBjb3VudDsKPiA+ICsKPiA+ICsJLyogU2Vjb25kIHBhc3MgdG8gZ2V0IHRoZSBp bmRleC10aCBzdXBwb3J0ZWQgZm9ybWF0LiAqLwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0 c19jb3VudDsgaSsrKSB7Cj4gPiArCQlpZiAoIWlndF9wbGFuZV9oYXNfZm9ybWF0X21vZChwbGFu ZSwgZm9ybWF0c19hcnJheVtpXSwKPiA+ICsJCQkJCSAgICAgIERSTV9GT1JNQVRfTU9EX0xJTkVB UikpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQlpZiAoIWluZGV4LS0pIHsKPiA+ICsJ CQkqZm9ybWF0ID0gZm9ybWF0c19hcnJheVtpXTsKPiA+ICsJCQlicmVhazsKPiA+ICsJCX0KPiA+ ICsJfQo+ID4gKwo+ID4gKwlmcmVlKGZvcm1hdHNfYXJyYXkpOwo+ID4gKwo+ID4gKwlpZ3RfYXNz ZXJ0KGluZGV4IDwgMCk7Cj4gPiArCj4gPiArCXN0cmlkZV9taW4gPSB3aWR0aCAqIGlndF9mb3Jt YXRfcGxhbmVfYnBwKCpmb3JtYXQsIDApIC8gODsKPiA+ICsKPiA+ICsJLyogUmFuZG9taXplIHRo ZSBzdHJpZGUgd2l0aCBhdCBtb3N0IHR3aWNlIHRoZSBtaW5pbXVtLiAqLwo+ID4gKwkqc3RyaWRl ID0gKHJhbmQoKSAlIHN0cmlkZV9taW4pICsgc3RyaWRlX21pbjsKPiBNYXliZSBuZWVkIHRvIGNo YW5nZSB0aGUgY29tbWVudCBvciBmaXggdGhpcyBsaW5lPyBHaXZlbgo+IAo+IHJhbmQoKSA9IDk5 OTk5OTkKPiBzdHJpZGVfbWluID0gMTAKPiAKPiBUaGlzIHdvdWxkIGNvbWUgb3V0IHRvIDE5LCBl LmcuIGxlc3MgdGhlbiB0d2ljZSB0aGUgbWF4aW11bS4gTWF5YmUgeW91IG1lYW50Cj4gCj4gKnN0 cmlkZSA9IChyYW5kKCkgJSAoc3RyaWRlX21pbiArIDEpKSArIHN0cmlkZV9taW47CgpHb29kIGNh dGNoLCB0aGFua3MhIEkgdGhpbmsgSSdsbCBqdXN0IHVwZGF0ZSB0aGUgY29tbWVudHMgdG8gYmUK Y29uc2lzdGVudCB0aG91Z2gsIGhhdmluZyB0aGUgbGltaXQgaW5jbHVkZWQgb3Igbm90IGRvZXMg bm90IGNhdXNlCmFkdmVyc2UgZWZmZWN0cyBpbiBwcmFjdGljZSAoaW4gdGhlc2UgY2FzZXMgb25s eSwgSSB0aGluayBJIGhhZCBhbHJlYWR5CnRha2VuIGNhcmUgb2YgdGhlIG9uZXMgd2hlcmUgaXQn cyBzaWduaWZpY2FudCkgYW5kIEkgZmluZCBpdCBzbGlnaHRseQptb3JlIHJlYWRhYmxlIHdpdGgg dGhlIGxpbWl0IGV4Y2x1ZGVkLgoKWy4uLl0KCj4gPiArc3RhdGljIHZvaWQgcHJlcGFyZV90aWxl ZF9wbGFuZShkYXRhX3QgKmRhdGEsIGlndF9wbGFuZV90ICpwbGFuZSwKPiA+ICsJCQkJdW5zaWdu ZWQgaW50IGluZGV4LCB1aW50MzJfdCBmb3JtYXQsCj4gPiArCQkJCXN0cnVjdCBpZ3RfZmIgKm92 ZXJsYXlfZmIpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaWd0X2ZiIHRpbGVkX2ZiOwo+ID4gKwl1bnNp Z25lZCBpbnQgZmJfaWQ7Cj4gPiArCj4gPiArCWlmIChpc192YzRfZGV2aWNlKGRhdGEtPmRybV9m ZCkgJiYKPiA+ICsJICAgIGlndF92YzRfcGxhbmVfc3VwcG9ydHNfdF90aWxpbmcocGxhbmUsIGZv cm1hdCkpIHsKPiA+ICsJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IHVzaW5nIFZDNCBULXRpbGluZ1xu IiwgaW5kZXgpOwo+ID4gKwo+ID4gKwkJZmJfaWQgPSBpZ3RfdmM0X2ZiX3RfdGlsZWRfY29udmVy dCgmdGlsZWRfZmIsIG92ZXJsYXlfZmIpOwo+ID4gKwl9IGVsc2UgaWYgKGlzX3ZjNF9kZXZpY2Uo ZGF0YS0+ZHJtX2ZkKSAmJgo+ID4gKwkJICAgaWd0X3ZjNF9wbGFuZV9zdXBwb3J0c19zYW5kX3Rp bGluZyhwbGFuZSwgZm9ybWF0LCAyNTYpKSB7Cj4gPiArCQkvKiBSYW5kb21pemUgdGhlIGNvbHVt biBoZWlnaHQgd2l0aCBhdCBtb3N0IHR3aWNlIHRoZSBoZWlnaHQuCj4gPiAqLwo+ID4gKwkJc2l6 ZV90IGNvbHVtbl9oZWlnaHQgPSAocmFuZCgpICUgb3ZlcmxheV9mYi0+aGVpZ2h0KSArCj4gPiAr CQkJCSAgICAgICBvdmVybGF5X2ZiLT5oZWlnaHQ7Cj4gPiArCj4gPiArCQlpZ3RfZGVidWcoIlBs YW5lICVkOiB1c2luZyBWQzQgU0FORDI1NiB0aWxpbmcgd2l0aCBjb2x1bW4KPiA+IGhlaWdodCAl bGRcbiIsCj4gPiArCQkJICBpbmRleCwgY29sdW1uX2hlaWdodCk7Cj4gPiArCj4gPiArCQlmYl9p ZCA9IHZjNF9mYl9zYW5kX3RpbGVkX2NvbnZlcnQoJnRpbGVkX2ZiLCBvdmVybGF5X2ZiLCAyNTYs Cj4gPiArCQkJCQkJICBjb2x1bW5faGVpZ2h0KTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCXJldHVy bjsKPiA+ICsJfQo+IAo+IEJpa2VzaGVkOiBXaHkgbm90IHJlbW92ZSB0aGUgdHdvIGlzX3ZjNF9k ZXZpY2UoZGF0YS0+ZHJtX2ZkKSBjaGVja3MgYW5kIGp1c3QKPiBwdXQgdGhpcyBhdCB0aGUgdG9w IG9mIHByZXBhcmVfdGlsZWRfcGxhbmUoKToKPiAKPiBpZiAoIWlzX3ZjNF9kZXZpY2UoZGF0YS0+ ZHJtX2ZkKSkKPiAJcmV0dXJuOwo+IAo+IFdvdWxkIG1ha2UgdGhlc2UgY29uZGl0aW9uYWxzIGEg Yml0IGVhc2llciB0byByZWFkCgpJIGhhdmUgZHJvcHBlZCB0aGF0IGNoZWNrIGFsdG9nZXRoZXIu IEFmdGVyIGFsbCwgdGhlcmUgaXMgbm8gbmVlZCB0bwpkb3VibGUtY2hlY2sgZm9yIFZDNCBpZiB0 aGUgbW9kaWZpZXJzIHdlcmUgcmVwb3J0ZWQgYnkgdGhlIGRyaXZlci4KCj4gPiArCj4gPiArCWln dF9hc3NlcnQoZmJfaWQgPiAwKTsKPiA+ICsKPiA+ICsJLyogTWFrZSB0aGUgdGlsZWQgZnJhbWVi dWZmZXIgdGhlIG92ZXJsYXkuICovCj4gPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCBv dmVybGF5X2ZiKTsKPiA+ICsJKm92ZXJsYXlfZmIgPSB0aWxlZF9mYjsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHZvaWQgcHJlcGFyZV9yYW5kb21pemVkX3BsYW5lKGRhdGFfdCAqZGF0YSwKPiA+ ICsJCQkJICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCj4gPiArCQkJCSAgICAgaWd0X3BsYW5l X3QgKnBsYW5lLAo+ID4gKwkJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmIsCj4gPiAr CQkJCSAgICAgdW5zaWduZWQgaW50IGluZGV4LAo+ID4gKwkJCQkgICAgIGNhaXJvX3N1cmZhY2Vf dCAqcmVzdWx0X3N1cmZhY2UsCj4gPiArCQkJCSAgICAgYm9vbCBhbGxvd19zY2FsaW5nLCBib29s IGFsbG93X3l1dikKPiA+ICt7Cj4gPiArCXN0cnVjdCBpZ3RfZmIgcGF0dGVybl9mYjsKPiA+ICsJ dWludDMyX3Qgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2g7Cj4gPiArCXVpbnQzMl90IG92ZXJs YXlfc3JjX3csIG92ZXJsYXlfc3JjX2g7Cj4gPiArCXVpbnQzMl90IG92ZXJsYXlfc3JjX3gsIG92 ZXJsYXlfc3JjX3k7Cj4gPiArCWludDMyX3Qgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195 Owo+ID4gKwl1aW50MzJfdCBvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2g7Cj4gPiArCXVp bnQzMl90IGZvcm1hdDsKPiA+ICsJc2l6ZV90IHN0cmlkZTsKPiA+ICsJYm9vbCB0aWxlZDsKPiA+ ICsJaW50IGZiX2lkOwo+ID4gKwo+ID4gKwlyYW5kb21pemVfcGxhbmVfZGltZW5zaW9ucyhtb2Rl LCAmb3ZlcmxheV9mYl93LCAmb3ZlcmxheV9mYl9oLAo+ID4gKwkJCQkgICAmb3ZlcmxheV9zcmNf dywgJm92ZXJsYXlfc3JjX2gsCj4gPiArCQkJCSAgICZvdmVybGF5X3NyY194LCAmb3ZlcmxheV9z cmNfeSwKPiA+ICsJCQkJICAgJm92ZXJsYXlfY3J0Y193LCAmb3ZlcmxheV9jcnRjX2gsCj4gPiAr CQkJCSAgICZvdmVybGF5X2NydGNfeCwgJm92ZXJsYXlfY3J0Y195LAo+ID4gKwkJCQkgICBhbGxv d19zY2FsaW5nKTsKPiA+ICsKPiA+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogZnJhbWVidWZmZXIg c2l6ZSAlZHglZFxuIiwgaW5kZXgsCj4gPiArCQkgIG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9o KTsKPiA+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBzaXplICVkeCVkXG4iLCBpbmRl eCwKPiA+ICsJCSAgb3ZlcmxheV9jcnRjX3csIG92ZXJsYXlfY3J0Y19oKTsKPiA+ICsJaWd0X2Rl YnVnKCJQbGFuZSAlZDogb24tY3J0YyBwb3NpdGlvbiAlZHglZFxuIiwgaW5kZXgsCj4gPiArCQkg IG92ZXJsYXlfY3J0Y194LCBvdmVybGF5X2NydGNfeSk7Cj4gPiArCWlndF9kZWJ1ZygiUGxhbmUg JWQ6IGluLWZyYW1lYnVmZmVyIHNpemUgJWR4JWRcbiIsIGluZGV4LAo+ID4gKwkJICBvdmVybGF5 X3NyY193LCBvdmVybGF5X3NyY19oKTsKPiA+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJh bWVidWZmZXIgcG9zaXRpb24gJWR4JWRcbiIsIGluZGV4LAo+ID4gKwkJICBvdmVybGF5X3NyY194 LCBvdmVybGF5X3NyY195KTsKPiA+ICsKPiA+ICsJLyogR2V0IGEgcGF0dGVybiBmcmFtZWJ1ZmZl ciBmb3IgdGhlIG92ZXJsYXkgcGxhbmUuICovCj4gPiArCWZiX2lkID0gY2hhbWVsaXVtX2dldF9w YXR0ZXJuX2ZiKGRhdGEsIG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oLAo+ID4gKwkJCQkJIERS TV9GT1JNQVRfWFJHQjg4ODgsIDMyLAo+ID4gJnBhdHRlcm5fZmIpOwo+ID4gKwlpZ3RfYXNzZXJ0 KGZiX2lkID4gMCk7Cj4gPiArCj4gPiArCXJhbmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKHBs YW5lLCBvdmVybGF5X2ZiX3csICZmb3JtYXQsICZzdHJpZGUsCj4gPiArCQkJCSAgICAgICZ0aWxl ZCwgYWxsb3dfeXV2KTsKPiA+ICsKPiA+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogJXMgZm9ybWF0 IHdpdGggc3RyaWRlICVsZFxuIiwgaW5kZXgsCj4gPiArCQkgIGlndF9mb3JtYXRfc3RyKGZvcm1h dCksIHN0cmlkZSk7Cj4gPiArCj4gPiArCWZiX2lkID0gaWd0X2ZiX2NvbnZlcnRfd2l0aF9zdHJp ZGUob3ZlcmxheV9mYiwgJnBhdHRlcm5fZmIsIGZvcm1hdCwKPiA+ICsJCQkJCSAgIHN0cmlkZSk7 Cj4gPiArCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKPiA+ICsKPiA+ICsJaWYgKHRpbGVkKQo+ID4g KwkJcHJlcGFyZV90aWxlZF9wbGFuZShkYXRhLCBwbGFuZSwgaW5kZXgsIGZvcm1hdCwgb3Zlcmxh eV9mYik7Cj4gPiArCj4gPiArCWJsaXRfcGxhbmVfY2Fpcm8oZGF0YSwgcmVzdWx0X3N1cmZhY2Us IG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2gsCj4gPiArCQkJIG92ZXJsYXlfc3JjX3gsIG92 ZXJsYXlfc3JjX3ksCj4gPiArCQkJIG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaCwKPiA+ ICsJCQkgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195LCAmcGF0dGVybl9mYik7Cj4gPiAr Cj4gPiArCWNvbmZpZ3VyZV9wbGFuZShwbGFuZSwgb3ZlcmxheV9zcmNfdywgb3ZlcmxheV9zcmNf aCwKPiA+ICsJCQlvdmVybGF5X3NyY194LCBvdmVybGF5X3NyY195LAo+ID4gKwkJCW92ZXJsYXlf Y3J0Y193LCBvdmVybGF5X2NydGNfaCwKPiA+ICsJCQlvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9j cnRjX3ksIG92ZXJsYXlfZmIpOwo+ID4gKwo+ID4gKwkvKiBSZW1vdmUgdGhlIG9yaWdpbmFsIHBh dHRlcm4gZnJhbWVidWZmZXIuICovCj4gPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAm cGF0dGVybl9mYik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9w bGFuZXNfcmFuZG9tKGRhdGFfdCAqZGF0YSwKPiA+ICsJCQkJICAgICAgIHN0cnVjdCBjaGFtZWxp dW1fcG9ydCAqcG9ydCwKPiA+ICsJCQkJICAgICAgIGVudW0gY2hhbWVsaXVtX2NoZWNrIGNoZWNr KQo+ID4gK3sKPiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArCWRybU1vZGVNb2RlSW5m byAqbW9kZTsKPiA+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnlfcGxhbmU7Cj4gPiArCXN0cnVjdCBp Z3RfZmIgcHJpbWFyeV9mYjsKPiA+ICsJc3RydWN0IGlndF9mYiByZXN1bHRfZmI7Cj4gPiArCXN0 cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmJzOwo+ID4gKwlpZ3RfY3JjX3QgKmNyYzsKPiA+ICsJaWd0 X2NyY190ICpleHBlY3RlZF9jcmM7Cj4gPiArCXN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5j X2RhdGEgKmZiX2NyYzsKPiA+ICsJdW5zaWduZWQgaW50IG92ZXJsYXlfcGxhbmVzX21heCA9IDA7 Cj4gPiArCXVuc2lnbmVkIGludCBvdmVybGF5X3BsYW5lc19jb3VudDsKPiA+ICsJY2Fpcm9fc3Vy ZmFjZV90ICpyZXN1bHRfc3VyZmFjZTsKPiA+ICsJaW50IGNhcHR1cmVkX2ZyYW1lX2NvdW50Owo+ ID4gKwlib29sIGFsbG93X3NjYWxpbmc7Cj4gPiArCWJvb2wgYWxsb3dfeXV2Owo+ID4gKwl1bnNp Z25lZCBpbnQgaTsKPiA+ICsJdW5zaWduZWQgaW50IGZiX2lkOwo+ID4gKwo+ID4gKwlzd2l0Y2gg KGNoZWNrKSB7Cj4gPiArCWNhc2UgQ0hBTUVMSVVNX0NIRUNLX0NSQzoKPiA+ICsJCWFsbG93X3Nj YWxpbmcgPSBmYWxzZTsKPiA+ICsJCWFsbG93X3l1diA9IGZhbHNlOwo+ID4gKwkJYnJlYWs7Cj4g PiArCWNhc2UgQ0hBTUVMSVVNX0NIRUNLX0NIRUNLRVJCT0FSRDoKPiA+ICsJCWFsbG93X3NjYWxp bmcgPSB0cnVlOwo+ID4gKwkJYWxsb3dfeXV2ID0gdHJ1ZTsKPiA+ICsJCWJyZWFrOwo+ID4gKwlk ZWZhdWx0Ogo+ID4gKwkJaWd0X2Fzc2VydChmYWxzZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJc3Jh bmQodGltZShOVUxMKSk7Cj4gPiArCj4gPiArCXJlc2V0X3N0YXRlKGRhdGEsIHBvcnQpOwo+ID4g Kwo+ID4gKwkvKiBGaW5kIHRoZSBjb25uZWN0b3IgYW5kIHBpcGUuICovCj4gPiArCW91dHB1dCA9 IHByZXBhcmVfb3V0cHV0KGRhdGEsIHBvcnQpOwo+ID4gKwo+ID4gKwltb2RlID0gaWd0X291dHB1 dF9nZXRfbW9kZShvdXRwdXQpOwo+ID4gKwo+ID4gKwkvKiBHZXQgYSBmcmFtZWJ1ZmZlciBmb3Ig dGhlIHByaW1hcnkgcGxhbmUuICovCj4gPiArCXByaW1hcnlfcGxhbmUgPSBpZ3Rfb3V0cHV0X2dl dF9wbGFuZV90eXBlKG91dHB1dCwKPiA+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ID4gKwlp Z3RfYXNzZXJ0KHByaW1hcnlfcGxhbmUpOwo+ID4gKwo+ID4gKwlmYl9pZCA9IGNoYW1lbGl1bV9n ZXRfcGF0dGVybl9mYihkYXRhLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gPiAr CQkJCQkgRFJNX0ZPUk1BVF9YUkdCODg4OCwgNjQsCj4gPiAmcHJpbWFyeV9mYik7Cj4gPiArCWln dF9hc3NlcnQoZmJfaWQgPiAwKTsKPiA+ICsKPiA+ICsJLyogR2V0IGEgZnJhbWVidWZmZXIgZm9y IHRoZSBjYWlybyBjb21wb3NpdGlvbiByZXN1bHQuICovCj4gPiArCWZiX2lkID0gaWd0X2NyZWF0 ZV9mYihkYXRhLT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5LAo+ID4gKwkJCSAgICAgIG1vZGUtPnZk aXNwbGF5LCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gKwkJCSAgICAgIExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUsICZyZXN1bHRfZmIpOwo+ID4gKwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7Cj4g PiArCj4gPiArCXJlc3VsdF9zdXJmYWNlID0gaWd0X2dldF9jYWlyb19zdXJmYWNlKGRhdGEtPmRy bV9mZCwgJnJlc3VsdF9mYik7Cj4gPiArCj4gPiArCS8qIFBhaW50IHRoZSBwcmltYXJ5IGZyYW1l YnVmZmVyIG9uIHRoZSByZXN1bHQgc3VyZmFjZS4gKi8KPiA+ICsJYmxpdF9wbGFuZV9jYWlybyhk YXRhLCByZXN1bHRfc3VyZmFjZSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKPiA+ICsJCQkgJnBy aW1hcnlfZmIpOwo+ID4gKwo+ID4gKwkvKiBDb25maWd1cmUgdGhlIHByaW1hcnkgcGxhbmUuICov Cj4gPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeV9wbGFuZSwgJnByaW1hcnlfZmIpOwo+ID4g Kwo+ID4gKwlvdmVybGF5X3BsYW5lc19tYXggPQo+ID4gKwkJaWd0X291dHB1dF9jb3VudF9wbGFu ZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSk7Cj4gPiArCj4gPiArCS8qIExp bWl0IHRoZSBudW1iZXIgb2YgcGxhbmVzIHRvIGEgcmVhc29uYWJsZSBzY2VuZS4gKi8KPiA+ICsJ aWYgKG92ZXJsYXlfcGxhbmVzX21heCA+IDQpCj4gPiArCQlvdmVybGF5X3BsYW5lc19tYXggPSA0 Owo+IAo+IFdoeSBub3QganVzdCB1c2UgbWF4KCkgaGVyZT8KClN1cmUsIEknbGwgZG8gdGhhdCEK Cj4gPiArCj4gPiArCW92ZXJsYXlfcGxhbmVzX2NvdW50ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxh bmVzX21heCkgKyAxOwo+ID4gKwlpZ3RfZGVidWcoIlVzaW5nICVkIG92ZXJsYXkgcGxhbmVzXG4i LCBvdmVybGF5X3BsYW5lc19jb3VudCk7Cj4gPiArCj4gPiArCW92ZXJsYXlfZmJzID0gY2FsbG9j KHNpemVvZihzdHJ1Y3QgaWd0X2ZiKSwgb3ZlcmxheV9wbGFuZXNfY291bnQpOwo+IGlndF9hc3Nl cnQob3ZlcmxheV9mYnMpOwo+IAo+IE90aGVyIHRoZW4gdGhhdCwgbG9va3MgcmVhbGx5IGdvb2Qh CgpHcmVhdCwgdGhhbmtzIGEgbG90IGZvciB0aGUgcmV2aWV3IQoKQ2hlZXJzLAoKUGF1bAoKPiA+ ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IG92ZXJsYXlfcGxhbmVzX2NvdW50OyBpKyspIHsKPiA+ ICsJCXN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmIgPSAmb3ZlcmxheV9mYnNbaV07Cj4gPiArCQlp Z3RfcGxhbmVfdCAqcGxhbmUgPQo+ID4gKwkJCWlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGVfaW5k ZXgob3V0cHV0LAo+ID4gKwkJCQkJCQlEUk1fUExBTkVfVFlQRV9PVkVSTEFZCj4gPiAsCj4gPiAr CQkJCQkJCWkpOwo+ID4gKwkJaWd0X2Fzc2VydChwbGFuZSk7Cj4gPiArCj4gPiArCQlwcmVwYXJl X3JhbmRvbWl6ZWRfcGxhbmUoZGF0YSwgbW9kZSwgcGxhbmUsIG92ZXJsYXlfZmIsIGksCj4gPiAr CQkJCQkgcmVzdWx0X3N1cmZhY2UsIGFsbG93X3NjYWxpbmcsCj4gPiArCQkJCQkgYWxsb3dfeXV2 KTsKPiA+ICsJfQo+ID4gKwo+ID4gKwljYWlyb19zdXJmYWNlX2Rlc3Ryb3kocmVzdWx0X3N1cmZh Y2UpOwo+ID4gKwo+ID4gKwlpZiAoY2hlY2sgPT0gQ0hBTUVMSVVNX0NIRUNLX0NSQykKPiA+ICsJ CWZiX2NyYyA9IGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3N0YXJ0KGRhdGEtPmRy bV9mZCwKPiA+ICsJCQkJCQkJCSZyZXN1bHRfZmIpOwo+ID4gKwo+ID4gKwlpZ3RfZGlzcGxheV9j b21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiA+ICsKPiA+ICsJaWYgKGNo ZWNrID09IENIQU1FTElVTV9DSEVDS19DUkMpIHsKPiA+ICsJCWNoYW1lbGl1bV9jYXB0dXJlKGRh dGEtPmNoYW1lbGl1bSwgcG9ydCwgMCwgMCwgMCwgMCwgMSk7Cj4gPiArCQljcmMgPSBjaGFtZWxp dW1fcmVhZF9jYXB0dXJlZF9jcmNzKGRhdGEtPmNoYW1lbGl1bSwKPiA+ICsJCQkJCQkgICAmY2Fw dHVyZWRfZnJhbWVfY291bnQpOwo+ID4gKwo+ID4gKwkJaWd0X2Fzc2VydChjYXB0dXJlZF9mcmFt ZV9jb3VudCA9PSAxKTsKPiA+ICsKPiA+ICsJCWV4cGVjdGVkX2NyYyA9Cj4gPiBjaGFtZWxpdW1f Y2FsY3VsYXRlX2ZiX2NyY19hc3luY19maW5pc2goZmJfY3JjKTsKPiA+ICsKPiA+ICsJCWNoYW1l bGl1bV9hc3NlcnRfY3JjX2VxX29yX2R1bXAoZGF0YS0+Y2hhbWVsaXVtLAo+ID4gKwkJCQkJCWV4 cGVjdGVkX2NyYywgY3JjLAo+ID4gKwkJCQkJCSZyZXN1bHRfZmIsIDApOwo+ID4gKwo+ID4gKwkJ ZnJlZShleHBlY3RlZF9jcmMpOwo+ID4gKwkJZnJlZShjcmMpOwo+ID4gKwl9IGVsc2UgaWYgKGNo ZWNrID09IENIQU1FTElVTV9DSEVDS19DSEVDS0VSQk9BUkQpIHsKPiA+ICsJCXN0cnVjdCBjaGFt ZWxpdW1fZnJhbWVfZHVtcCAqZHVtcDsKPiA+ICsKPiA+ICsJCWR1bXAgPSBjaGFtZWxpdW1fcG9y dF9kdW1wX3BpeGVscyhkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIDAsIDAsCj4gPiArCQkJCQkJICAw LCAwKTsKPiA+ICsJCWNoYW1lbGl1bV9hc3NlcnRfZnJhbWVfbWF0Y2hfb3JfZHVtcChkYXRhLT5j aGFtZWxpdW0sIHBvcnQsCj4gPiArCQkJCQkJICAgICBkdW1wLCAmcmVzdWx0X2ZiLCBjaGVjayk7 Cj4gPiArCQljaGFtZWxpdW1fZGVzdHJveV9mcmFtZV9kdW1wKGR1bXApOwo+ID4gKwl9Cj4gPiAr Cj4gPiArCWZvciAoaSA9IDA7IGkgPCBvdmVybGF5X3BsYW5lc19jb3VudDsgaSsrKSB7Cj4gPiAr CQlzdHJ1Y3QgaWd0X2ZiICpvdmVybGF5X2ZiID0gJm92ZXJsYXlfZmJzW2ldOwo+ID4gKwkJaWd0 X3BsYW5lX3QgKnBsYW5lOwo+ID4gKwo+ID4gKwkJcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFu ZV90eXBlX2luZGV4KG91dHB1dCwKPiA+ICsJCQkJCQkJRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWQo+ ID4gLAo+ID4gKwkJCQkJCQlpKTsKPiA+ICsJCWlndF9hc3NlcnQocGxhbmUpOwo+ID4gKwo+ID4g KwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsIG92ZXJsYXlfZmIpOwo+ID4gKwl9Cj4gPiAr Cj4gPiArCWZyZWUob3ZlcmxheV9mYnMpOwo+ID4gKwo+ID4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgJnByaW1hcnlfZmIpOwo+ID4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwg JnJlc3VsdF9mYik7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB2b2lkCj4gPiAgdGVzdF9ocGRf d2l0aG91dF9kZGMoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4g PiAgewo+ID4gQEAgLTk3Niw2ICsxNDE0LDEwIEBAIGlndF9tYWluCj4gPiAgCQkJdGVzdF9kaXNw bGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LAo+ID4gRFJNX0ZPUk1BVF9YUkdCMTU1NSwKPiA+ICAJ CQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19DUkMsIDEpOwo+ID4gIAo+ID4gKwkJY29ubmVjdG9y X3N1YnRlc3QoImhkbWktY3JjLXBsYW5lcy1yYW5kb20iLCBIRE1JQSkKPiA+ICsJCQl0ZXN0X2Rp c3BsYXlfcGxhbmVzX3JhbmRvbSgmZGF0YSwgcG9ydCwKPiA+ICsJCQkJCQkgICBDSEFNRUxJVU1f Q0hFQ0tfQ1JDKTsKPiA+ICsKPiA+ICAJCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJoZG1pLWNtcC1udjEy IiwgSERNSUEpCj4gPiAgCQkJdGVzdF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LCBEUk1f Rk9STUFUX05WMTIsCj4gPiAgCQkJCQkgICAgICBDSEFNRUxJVU1fQ0hFQ0tfQ0hFQ0tFUkJPQVJE LAo+ID4gMSk7Cj4gPiBAQCAtMTAwOCw2ICsxNDUwLDEwIEBAIGlndF9tYWluCj4gPiAgCQkJdGVz dF9kaXNwbGF5X29uZV9tb2RlKCZkYXRhLCBwb3J0LCBEUk1fRk9STUFUX1lWVTQyMiwKPiA+ICAJ CQkJCSAgICAgIENIQU1FTElVTV9DSEVDS19DSEVDS0VSQk9BUkQsCj4gPiAxKTsKPiA+ICAKPiA+ ICsJCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJoZG1pLWNtcC1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCj4g PiArCQkJdGVzdF9kaXNwbGF5X3BsYW5lc19yYW5kb20oJmRhdGEsIHBvcnQsCj4gPiArCQkJCQkJ ICAgQ0hBTUVMSVVNX0NIRUNLX0NIRUNLRVJCT0FSCj4gPiBEKTsKPiA+ICsKPiA+ICAJCWNvbm5l Y3Rvcl9zdWJ0ZXN0KCJoZG1pLWZyYW1lLWR1bXAiLCBIRE1JQSkKPiA+ICAJCQl0ZXN0X2Rpc3Bs YXlfZnJhbWVfZHVtcCgmZGF0YSwgcG9ydCk7Cj4gPiAgCX0KLS0gClBhdWwgS29jaWFsa293c2tp LCBCb290bGluCkVtYmVkZGVkIExpbnV4IGFuZCBrZXJuZWwgZW5naW5lZXJpbmcKaHR0cHM6Ly9i b290bGluLmNvbQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==