From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 85D366E61A for ; Fri, 2 Nov 2018 22:39:55 +0000 (UTC) From: Dhinakaran Pandiyan Date: Fri, 02 Nov 2018 15:39:57 -0700 Message-ID: <9605297.PTn4Fjk6Em@dk-thinkpad-x260> In-Reply-To: <20181005233437.31286-1-manasi.d.navare@intel.com> References: <20181005233437.31286-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP 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: Manasi Navare , Anusha Srivatsa List-ID: T24gRnJpZGF5LCBPY3RvYmVyIDUsIDIwMTggNDozNDozNyBQTSBQRFQgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBUaGlzIHBhdGNoIGFkZHMgYSBiYXNpYyBrbXMgdGVzdCB0byB2YWxpZGF0ZSB0aGUg ZGlzcGxheSBzdHJlYW0KPiBjb21wcmVzc2lvbiBmdW5jdGlvbmFsaXR5IGlmIHN1cHBvcnRlZCBv biBEUC9lRFAgY29ubmVjdG9yLgo+IEN1cnJlbnRseSB0aGlzIGhhcyBvbmx5IG9uZSBzdWJ0ZXN0 IHRvIGZvcmNlIHRoZSBEU0Mgb24gYWxsCj4gdGhlIGNvbm5lY3RvcnMgdGhhdCBzdXBwb3J0IGl0 IHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzLgo+IFRoaXMgd2lsbCBiZSBleHBhbmRlZCB0byBhZGQg bW9yZSBzdWJ0ZXN0cyB0byB0d2VhayBEU0MgcGFyYW1ldGVycy4KPiAKPiBDYzogQW51c2hhIFNy aXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFz aSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL01ha2Vm aWxlLnNvdXJjZXMgfCAgIDEgKwo+ICB0ZXN0cy9rbXNfZHBfZHNjLmMgICAgIHwgMzcyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwg MzczIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19kcF9kc2Mu Ywo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZp bGUuc291cmNlcwo+IGluZGV4IGM4NDkzM2YxLi5jODA3YWFkMyAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC0y MDcsNiArMjA3LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gIAlrbXNfdHZfbG9hZF9kZXRlY3QgXAo+ ICAJa21zX3VuaXZlcnNhbF9wbGFuZSBcCj4gIAlrbXNfdmJsYW5rIFwKPiArCWttc19kcF9kc2Mg XAo+ICAJbWV0YV90ZXN0IFwKPiAgCXBlcmYgXAo+ICAJcGVyZl9wbXUgXAo+IGRpZmYgLS1naXQg YS90ZXN0cy9rbXNfZHBfZHNjLmMgYi90ZXN0cy9rbXNfZHBfZHNjLmMKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5kMGZkMmFlMwo+IC0tLSAvZGV2L251bGwKPiArKysg Yi90ZXN0cy9rbXNfZHBfZHNjLmMKPiBAQCAtMCwwICsxLDM3MiBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBEaXNwbGF5cG9ydCBE aXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiB0ZXN0Cj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAq IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gKyAqCj4gKyAqIEVs ZW1lbnRzIG9mIHRoZSBtb2Rlc2V0IGNvZGUgYWRhcHRlZCBmcm9tIERhdmlkIEhlcnJtYW5uJ3MK PiArICogRFJNIG1vZGVzZXQgZXhhbXBsZQo+ICsgKgo+ICsgKi8KPiArI2luY2x1ZGUgImlndC5o Igo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPGdldG9wdC5oPgo+ICsjaW5jbHVk ZSA8bWF0aC5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+ Cj4gKyNpbmNsdWRlIDxzdHJpbmdzLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1 ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c2lnbmFsLmg+Cj4gKyNpbmNsdWRlIDx0aW1lLmg+ Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8dGVybWlvcy5oPgo+ICsKPiAraW50 IGRybV9mZDsKPiArZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwo+ICt1aW50NjRfdCB0aWxpbmcgPSBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwo+ICsKPiArc3RydWN0IGNvbm5lY3RvciB7Cj4gKwl1 aW50MzJfdCBpZDsKPiArCWludCBtb2RlX3ZhbGlkOwo+ICsJZHJtTW9kZU1vZGVJbmZvIG1vZGU7 Cj4gKwlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlkcm1Nb2RlRW5jb2RlciAqZW5j b2RlcjsKPiArCWludCBjcnRjLCBwaXBlOwo+ICt9Owo+ICsKPiArc3RydWN0IGRzY19jb25maWcg ewo+ICsJY2hhciB0ZXN0X25hbWVbMTI4XTsKPiArCWludCBtb2RlX3dpZHRoOwo+ICsJaW50IG1v ZGVfaGVpZ2h0Owo+ICsJaW50IGJwcDsKPiArCWludCBkZXB0aDsKPiArCWJvb2wgZHNjX3N1cHBv cnRlZDsKPiArCWJvb2wgZHNjX2VuYWJsZTsKPiArfTsKPiArCj4gK3N0YXRpYyBGSUxFICpmb3Bl bmF0KGludCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCj4gK3sKPiAr CWludCBmZCA9IG9wZW5hdChkaXIsIG5hbWUsIE9fUkRXUik7Cj4gKwlyZXR1cm4gZmRvcGVuKGZk LCBtb2RlKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgZ2V0X2RwX2RzY19zdXBwb3J0KGNoYXIg KnRlc3RfY29ubmVjdG9yX25hbWUpCj4gK3sKPiArCWludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIo ZHJtX2ZkKTsKPiArCUZJTEUgKmRzY19zdXBwb3J0X2ZwID0gTlVMTDsKPiArCWNoYXIgKmxpbmUg PSBOVUxMOwo+ICsJc2l6ZV90IGxpbmVfc2l6ZSA9IDA7Cj4gKwljaGFyIGJ1ZlsxMjhdID0gezB9 LCBzdXBwb3J0ZWRfc3RyWzVdLCBlbmFibGVkX3N0cls1XTsKPiArCWJvb2wgc3VwcG9ydGVkID0g ZmFsc2U7Cj4gKwo+ICsJc3RyY3B5KGJ1ZiwgdGVzdF9jb25uZWN0b3JfbmFtZSk7Cj4gKwlzdHJj YXQoYnVmLCAiL2k5MTVfZHNjX3N1cHBvcnQiKTsKPiArCWRzY19zdXBwb3J0X2ZwID0gZm9wZW5h dChkaXIsIGJ1ZiwgInIiKTsKPiArCWlndF9yZXF1aXJlKGRzY19zdXBwb3J0X2ZwKTsKPiArCj4g Kwl3aGlsZSAoZ2V0bGluZSgmbGluZSwgJmxpbmVfc2l6ZSwgZHNjX3N1cHBvcnRfZnApID4gMCkg ewpUaGlzIGxvb3AgbG9va3Mgd2FzdGVmdWwuCgo+ICsJCWNoYXIgKnN1cHBvcnQsICplbmFibGVk Owo+ICsKPiArCQllbmFibGVkID0gc3Ryc3RyKGxpbmUsICJFbmFibGVkOiAiKTsKPiArCQlpZ3Rf YXNzZXJ0X2VxKHNzY2FuZihlbmFibGVkLCAiRW5hYmxlZDogJXMiLCBlbmFibGVkX3N0ciksIDEp Owo+ICsJCWlmIChzdHJjbXAoZW5hYmxlZF9zdHIsICJ5ZXMiKSA9PSAwKSB7Cj4gKwkJCWlndF9p bmZvKCJEU0MgaXMgZW5hYmxlZCBvbiAlc1xuIiwgdGVzdF9jb25uZWN0b3JfbmFtZSk7Cj4gKwkJ CXN1cHBvcnRlZCA9IHRydWU7CldoYXQgaXMgdGhlIHVzZSBvZiB0aGlzIGNoZWNrPyBJZiBhbGwg dGhhdCB3ZSBuZWVkIHRvIGtub3cgaXMgd2hldGhlciBEU0MgaXMgc3VwcG9ydGVkLCBqdXN0IGNo ZWNrIGZvciAiU3VwcG9ydGVkOiB5ZXMiCgo+ICsJCQlicmVhazsKPiArCQl9IGVsc2Ugewo+ICsJ CQlnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBkc2Nfc3VwcG9ydF9mcCk7Cj4gKwkJCXN1cHBv cnQgPSBzdHJzdHIobGluZSwgIlN1cHBvcnRlZDogIik7Cj4gKwkJaWd0X2Fzc2VydF9lcShzc2Nh bmYoc3VwcG9ydCwgIlN1cHBvcnRlZDogJXMiLCBzdXBwb3J0ZWRfc3RyKSwgMSk7Cj4gKwkJaWYg KHN0cmNtcChzdXBwb3J0ZWRfc3RyLCAieWVzIikgPT0gMCkKPiArCQkJc3VwcG9ydGVkID0gdHJ1 ZTsKPiArCQllbHNlIGlmIChzdHJjbXAoc3VwcG9ydGVkX3N0ciwgIm5vIikgPT0gMCkKPiArCQkJ c3VwcG9ydGVkID0gZmFsc2U7ClNraXAgdGhlIHRlc3QgaGVyZS4KPiArCQllbHNlCj4gKwkJCWln dF9mYWlsX29uX2YodHJ1ZSwgIlVua25vd24gRFNDIHN1cHBvcnRlZCBzdGF0dXMgJyVzJ1xuIiwK PiArCQkJCSAgICAgIHN1cHBvcnRlZF9zdHIpOwo+ICsJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwlmcmVlKGxpbmUpOwoKWW91IGNvdWxkIHNpbXBsaWZ5IHRoZSBsb2dpYyBpbiB0aGlzIGZ1 bmN0aW9uIHdpdGggaWd0X2RlYnVnZnNfcmVhZCgpIGFuZCBzdHJzdHIoKQpUaGVyZSBhcmUgZXhh bXBsZXMgaW4ga21zX3Bzci5jLCBrbXNfZmJ0X2ZiY29uIGV0Yy4KCj4gKwlmY2xvc2UoZHNjX3N1 cHBvcnRfZnApOwpPcGVuIHRoZSBmaWxlIG9uY2UsIGNhY2hlIHRoZSBmZCBhbmQgY2xvc2UgaXQg d2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGUgdGVzdC4KCj4gKwo+ICsJcmV0dXJuIHN1cHBvcnRl ZDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2V0X2RwX2RzY19lbmFibGUoYm9vbCBlbmFibGUs IGNoYXIgKnRlc3RfY29ubmVjdG9yX25hbWUpCj4gK3sKPiArCWludCBkaXIgPSBpZ3RfZGVidWdm c19kaXIoZHJtX2ZkKTsKPiArCUZJTEUgKmRzY19lbmFibGVfZnAgPSBOVUxMOwo+ICsJY2hhciBi dWZbMTI4XSA9IHswfTsKPiArCj4gKwlzdHJjcHkoYnVmLCB0ZXN0X2Nvbm5lY3Rvcl9uYW1lKTsK PiArCXN0cmNhdChidWYsICIvaTkxNV9kc2Nfc3VwcG9ydCIpOwo+ICsJZHNjX2VuYWJsZV9mcCA9 IGZvcGVuYXQoZGlyLCBidWYsICJ3KyIpOwo+ICsJaWd0X3JlcXVpcmUoZHNjX2VuYWJsZV9mcCk7 Cj4gKwlyZXdpbmQoZHNjX2VuYWJsZV9mcCk7ClNob3VsZCBiZSAgYSBsb3Qgc2ltcGxlciB1c2lu ZyBzeXNmc193cml0ZSgpLiBBZ2FpbiwgbGliL2lndF9wc3IuYyBoYXMgZXhhbXBsZXMuCgo+ICsJ aWd0X2luZm8oIlNldHRpbmcgRFNDX0VOQUJMRSB0byAlcyBmb3IgJXNcbiIsIChlbmFibGUpID8g InRydWUiIDogImZhbHNlIiwgdGVzdF9jb25uZWN0b3JfbmFtZSk7Cj4gKwlmcHJpbnRmKGRzY19l bmFibGVfZnAsICIlZCIsIGVuYWJsZSk7Cj4gKwlmZmx1c2goZHNjX2VuYWJsZV9mcCk7Cj4gKwlm Y2xvc2UoZHNjX2VuYWJsZV9mcCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGR1bXBfY29ubmVj dG9yc19mZChpbnQgZHJtZmQpCj4gK3sKPiArCWludCBpLCBqOwo+ICsKPiArCWRybU1vZGVSZXMg Km1vZGVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNlcyhkcm1mZCk7Cj4gKwo+ICsgICAg ICAgIGlmICghbW9kZV9yZXNvdXJjZXMpIHsKPiArCQlpZ3Rfd2FybigiZHJtTW9kZUdldFJlc291 cmNlcyBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwo+ICsJCXJldHVybjsKPiArCX0K PiArCj4gKwlpZ3RfaW5mbygiQ29ubmVjdG9yczpcbiIpOwo+ICsJaWd0X2luZm8oImlkXHRlbmNv ZGVyXHRzdGF0dXNcdFx0dHlwZVx0c2l6ZSAobW0pXHRtb2Rlc1xuIik7Cj4gKwlmb3IgKGkgPSAw OyBpIDwgbW9kZV9yZXNvdXJjZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykgewo+ICsJCWRybU1v ZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCj4gKwkJY29ubmVjdG9yID0gZHJtTW9kZUdldENv bm5lY3RvckN1cnJlbnQoZHJtZmQsCj4gKwkJCQkJCSAgICAgICBtb2RlX3Jlc291cmNlcy0+Y29u bmVjdG9yc1tpXSk7Cj4gKwkJaWYgKCFjb25uZWN0b3IpIHsKPiArCQkJaWd0X3dhcm4oImNvdWxk IG5vdCBnZXQgY29ubmVjdG9yICVpOiAlc1xuIiwKPiArCQkJCSBtb2RlX3Jlc291cmNlcy0+Y29u bmVjdG9yc1tpXSwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsK PiArCQlpZ3RfaW5mbygiJWRcdCVkXHQlc1x0JXNcdCVkeCVkXHRcdCVkXG4iLAo+ICsJCQkgY29u bmVjdG9yLT5jb25uZWN0b3JfaWQsIGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZCwKPiArCQkJIGttc3Rl c3RfY29ubmVjdG9yX3N0YXR1c19zdHIoY29ubmVjdG9yLT5jb25uZWN0aW9uKSwKPiArCQkJIGtt c3Rlc3RfY29ubmVjdG9yX3R5cGVfc3RyKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAo+ICsJ CQkgY29ubmVjdG9yLT5tbVdpZHRoLCBjb25uZWN0b3ItPm1tSGVpZ2h0LAo+ICsJCQkgY29ubmVj dG9yLT5jb3VudF9tb2Rlcyk7Cj4gKwo+ICsJCWlmICghY29ubmVjdG9yLT5jb3VudF9tb2RlcykK PiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlndF9pbmZvKCIgIG1vZGVzOlxuIik7Cj4gKwkJaWd0 X2luZm8oIiAgbmFtZSByZWZyZXNoIChIeikgaGRpc3AgaHNzIGhzZSBodG90IHZkaXNwICIidnNz IHZzZSB2dG90IGZsYWdzIHR5cGUgY2xvY2tcbiIpOwo+ICsJCWZvciAoaiA9IDA7IGogPCBjb25u ZWN0b3ItPmNvdW50X21vZGVzOyBqKyspewo+ICsJCQlpZ3RfaW5mbygiWyVkXSIsIGopOwo+ICsJ CQlrbXN0ZXN0X2R1bXBfbW9kZSgmY29ubmVjdG9yLT5tb2Rlc1tqXSk7Cj4gKwkJfQo+ICsKPiAr CQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICsJfQo+ICsJaWd0X2luZm8oIlxu Iik7Cj4gKwo+ICsJZHJtTW9kZUZyZWVSZXNvdXJjZXMobW9kZV9yZXNvdXJjZXMpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBkdW1wX2NydGNzX2ZkKGludCBkcm1mZCkKPiArewo+ICsJaW50IGk7 Cj4gKwlkcm1Nb2RlUmVzICptb2RlX3Jlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZHJt ZmQpOwo+ICsKPiArCWlndF9pbmZvKCJDUlRDczpcbiIpOwo+ICsJaWd0X2luZm8oImlkXHRmYlx0 cG9zXHRzaXplXG4iKTsKPiArCWZvciAoaSA9IDA7IGkgPCBtb2RlX3Jlc291cmNlcy0+Y291bnRf Y3J0Y3M7IGkrKykgewo+ICsJCWRybU1vZGVDcnRjICpjcnRjOwo+ICsKPiArCQljcnRjID0gZHJt TW9kZUdldENydGMoZHJtZmQsIG1vZGVfcmVzb3VyY2VzLT5jcnRjc1tpXSk7Cj4gKwkJaWYgKCFj cnRjKSB7Cj4gKwkJCWlndF93YXJuKCJjb3VsZCBub3QgZ2V0IGNydGMgJWk6ICVzXG4iLAo+ICsJ CQkJIG1vZGVfcmVzb3VyY2VzLT5jcnRjc1tpXSwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQkJY29u dGludWU7Cj4gKwkJfQo+ICsJCWlndF9pbmZvKCIlZFx0JWRcdCglZCwlZClcdCglZHglZClcbiIs Cj4gKwkJCSBjcnRjLT5jcnRjX2lkLCBjcnRjLT5idWZmZXJfaWQsIGNydGMtPngsCj4gKwkJCSBj cnRjLT55LCBjcnRjLT53aWR0aCwgY3J0Yy0+aGVpZ2h0KTsKPiArCQlrbXN0ZXN0X2R1bXBfbW9k ZSgmY3J0Yy0+bW9kZSk7Cj4gKwo+ICsJCWRybU1vZGVGcmVlQ3J0YyhjcnRjKTsKPiArCX0KPiAr CWlndF9pbmZvKCJcbiIpOwo+ICsKPiArCWRybU1vZGVGcmVlUmVzb3VyY2VzKG1vZGVfcmVzb3Vy Y2VzKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHVtcF9pbmZvKHZvaWQpCj4gK3sKPiArCWR1 bXBfY29ubmVjdG9yc19mZChkcm1fZmQpOwo+ICsJZHVtcF9jcnRjc19mZChkcm1fZmQpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3NldF9tb2RlKHN0cnVjdCBjb25uZWN0b3IgKmMsIHN0cnVj dCBkc2NfY29uZmlnICp0ZXN0X2NvbmZpZywgYm9vbCBzZXRfbW9kZSkKPiArewo+ICsJdW5zaWdu ZWQgaW50IGZiX2lkID0gMDsKPiArCXN0cnVjdCBpZ3RfZmIgZmJfaW5mbzsKPiArCWludCByZXQg PSAwOwo+ICsKPiArCWlmICghc2V0X21vZGUpIHsKPiArCQlyZXQgPSBkcm1Nb2RlU2V0Q3J0Yyhk cm1fZmQsIGMtPmNydGMsIDAsIDAsIDAsCj4gKwkJCQkgICAgIE5VTEwsIDAsIE5VTEwpOwo+ICsJ CWlmIChyZXQpCj4gKwkJCWlndF93YXJuKCJGYWlsZWQgdG8gdW5zZXQgbW9kZSIpOwo+ICsJCXJl dHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZmJfaWQgPSBpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZHJt X2ZkLCB0ZXN0X2NvbmZpZy0+bW9kZV93aWR0aCwKPiArCQkJCSAgICAgIHRlc3RfY29uZmlnLT5t b2RlX2hlaWdodCwKPiArCQkJCSAgICAgIGlndF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1hdCh0ZXN0 X2NvbmZpZy0+YnBwLAo+ICsJCQkJCQkJCSAgdGVzdF9jb25maWctPmRlcHRoKSwKPiArCQkJCSAg ICAgIHRpbGluZywgJmZiX2luZm8pOwo+ICsKPiArCWlndF9pbmZvKCJDUlRDKCV1KTpbJWRdIiwg Yy0+Y3J0YywgMCk7Cj4gKwlrbXN0ZXN0X2R1bXBfbW9kZSgmYy0+bW9kZSk7Cj4gKwlkcm1Nb2Rl U2V0Q3J0Yyhkcm1fZmQsIGMtPmNydGMsIC0xLCAwLCAwLCBOVUxMLCAwLCBOVUxMKTsKPiArCXJl dCA9IGRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgZmJfaWQsIDAsIDAsCj4gKwkJCSAg ICAgJmMtPmlkLCAxLCAmYy0+bW9kZSk7Cj4gKwlzbGVlcCg1KTsKV2h5PyBJZiB0aGlzIGZvciBt YW51YWwgdGVzdGluZywgcGxlYXNlIHVzZSBtYW51YWwoKS4gVGhlcmUgYXJlIHBsZW50eSBvZiBl eGFtcGxlcy4KCj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gc2V0 IG1vZGUgKCVkeCVkQCVkSHopOiAlc1xuIiwKPiArCQkJIHRlc3RfY29uZmlnLT5tb2RlX3dpZHRo LCB0ZXN0X2NvbmZpZy0+bW9kZV9oZWlnaHQsCj4gKwkJCSBjLT5tb2RlLnZyZWZyZXNoLCBzdHJl cnJvcihlcnJubykpOwpUaGlzIGNhbid0IGJlIGEgd2FybmluZywgdGhlIHRlc3Qgc2hvdWxkIGZh aWwgaWYgdGhlIG1vZGUgY2FuJ3QgYmUgc2V0LgoKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRybV9mZCwg JmZiX2luZm8pOwoKUmVhZCBiYWNrIGRlYnVnZnMgdG8gY2hlY2sgd2hldGhlciBEU0Mgd2FzIGVu YWJsZWQ/IEknbSBjYW4ndCB0ZWxsIHdoYXQgaXMgYmVpbmcgdGVzdGVkIGhlcmUuCj4gKwo+ICsJ fQo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gKwo+ICsvKgo+ICsgKiBSZS1wcm9iZSBj b25uZWN0b3JzIGFuZCBkbyBhIG1vZGVzZXQgd2l0aCBhbmQgd2lob3V0IERTQwo+ICsgKgo+ICsg KiBSZXR1cm5zOgo+ICsgKiAwOiBPbiBTdWNjZXNzCj4gKyAqIC0xOiBPbiBmYWlsdXJlCmludCBp cyBwb2ludGxlc3MsIGp1c3QgdXNlIGEgYm9vbCByZXR1cm4gaWYgdGhlIGZ1bmN0aW9uIGRvZXNu J3QgbWFrZSB1c2Ugb2YgZXJyb3IgY29kZXMuCgo+ICsgKi8KPiArc3RhdGljIGludCB1cGRhdGVf ZGlzcGxheShzdHJ1Y3QgZHNjX2NvbmZpZyAqdGVzdF9jb25maWcpCj4gK3sKPiArCXN0cnVjdCBj b25uZWN0b3IgKmNvbm5lY3RvcnM7Cj4gKwlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmln IGNvbmZpZzsKPiArCWludCBjbnQsIGNvbm5fY250ID0gMCwgcmV0ID0gMCwgZWRwX2NudCA9IDAs IGRwX2NudCA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIGNydGNfaWR4X21hc2sgPSAtMVVMOwo+ICsJ Y2hhciBjb25uX2J1ZlsxMjhdID0gezB9Owo+ICsKPiArCXJlc291cmNlcyA9IGRybU1vZGVHZXRS ZXNvdXJjZXMoZHJtX2ZkKTsKPiArCWlmICghcmVzb3VyY2VzKSB7Cj4gKwkJaWd0X3dhcm4oImRy bU1vZGVHZXRSZXNvdXJjZXMgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQly ZXR1cm4gLTE7Cj4gKwl9CgpXaHkgaGFuZCByb2xsIElPQ1RMcyB3aGVuIHRoZSBJR1QgbGlicmFy eSBwcm92aWRlcyBhIGxvdCBvZiB0aGVzZSBmdW5jdGlvbmFsaXR5Pwo+ICsKPiArCWNvbm5lY3Rv cnMgPSBjYWxsb2MocmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzLAo+ICsJCQkgICAgc2l6ZW9m KHN0cnVjdCBjb25uZWN0b3IpKTsKPiArCWlmICghY29ubmVjdG9ycykKPiArCQlyZXR1cm4gLTE7 Cj4gKwo+ICsJLyogRmluZCBhbnkgY29ubmVjdGVkIGRpc3BsYXlzICovCj4gKwlmb3IgKGNudCA9 IDA7IGNudCA8IHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgY250KyspIHsKPiArCQlzdHJ1 Y3QgY29ubmVjdG9yICpjID0gJmNvbm5lY3RvcnNbY250XTsKPiArCQljLT5pZCA9IHJlc291cmNl cy0+Y29ubmVjdG9yc1tjbnRdOwo+ICsJCWlmKCFrbXN0ZXN0X2dldF9jb25uZWN0b3JfY29uZmln KGRybV9mZCwgYy0+aWQsIGNydGNfaWR4X21hc2ssCj4gKwkJCQkJCSZjb25maWcpKSB7Cj4gKwkJ CWMtPm1vZGVfdmFsaWQgPSAwOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwkJYy0+Y29ubmVj dG9yID0gY29uZmlnLmNvbm5lY3RvcjsKPiArCQljLT5lbmNvZGVyID0gY29uZmlnLmVuY29kZXI7 Cj4gKwkJYy0+bW9kZSA9IGNvbmZpZy5kZWZhdWx0X21vZGU7Cj4gKwkJYy0+Y3J0YyA9IGNvbmZp Zy5jcnRjLT5jcnRjX2lkOwo+ICsJCWMtPnBpcGUgPSBjb25maWcucGlwZTsKPiArCQljLT5tb2Rl X3ZhbGlkID0gMTsKPiArCj4gKwkJaWYgKGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0g RFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0IHx8Cj4gKwkJICAgIGMtPmNvbm5lY3Rvci0+ Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ICsKPiArCQkJaWYg KGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkK PiArCQkJCWNvbm5fY250ID0gKysgZWRwX2NudDsKPiArCQkJZWxzZQo+ICsJCQkJY29ubl9jbnQg PSArKyBkcF9jbnQ7Cj4gKwkJCWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rpb24gPT0gRFJNX01P REVfQ09OTkVDVEVEKSB7Cj4gKwkJCQlzcHJpbnRmKGNvbm5fYnVmLCAiJXMtJWQiLAo+ICsJCQkJ CWttc3Rlc3RfY29ubmVjdG9yX3R5cGVfc3RyKGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUp LAo+ICsJCQkJCWNvbm5fY250KTsKPiArCQkJCXRlc3RfY29uZmlnLT5kc2Nfc3VwcG9ydGVkID0K PiArCQkJCQlnZXRfZHBfZHNjX3N1cHBvcnQoY29ubl9idWYpOwo+ICsJCQkJaWYgKCFzdHJjbXAo dGVzdF9jb25maWctPnRlc3RfbmFtZSwKPiArCQkJCQkgICAgImZvcmNlX2RzY19lbmFibGVfYmFz aWMiKSkgewpIbW0sIHRoZXJlIGlzIGp1c3Qgb25lIHN1YnRlc3QsIHdoYXQgZWxzZSBjb3VsZCB0 aGlzIGJlPwoKCj4gKwkJCQkJaWYgKHRlc3RfY29uZmlnLT5kc2Nfc3VwcG9ydGVkKSB7Cj4gKwkJ CQkJCWlndF9pbmZvICgiRFNDIGlzIHN1cHBvcnRlZCBvbiAlc1xuIiwKPiArCQkJCQkJCSAgY29u bl9idWYpOwo+ICsJCQkJCQl0ZXN0X2NvbmZpZy0+bW9kZV93aWR0aCA9IGMtPm1vZGUuaGRpc3Bs YXk7Cj4gKwkJCQkJCXRlc3RfY29uZmlnLT5tb2RlX2hlaWdodCA9IGMtPm1vZGUudmRpc3BsYXk7 Cj4gKwkJCQkJCXRlc3RfY29uZmlnLT5icHAgPSAzMjsKPiArCQkJCQkJdGVzdF9jb25maWctPmRl cHRoID0gMjQ7Cj4gKwkJCQkJCXNldF9kcF9kc2NfZW5hYmxlKHRlc3RfY29uZmlnLT5kc2NfZW5h YmxlLAo+ICsJCQkJCQkJICBjb25uX2J1Zik7Cj4gKwkJCQkJCXJldCA9IHNldF9tb2RlKGMsIHRl c3RfY29uZmlnLAo+ICsJCQkJCQkJICAgICAgIHRydWUpOwpyZXQgZ2V0cyBvdmVyd3JpdHRlbiBp biB0aGUgbmV4dCBsb29wLCBpZiBzZXRfbW9kZSBmYWlscywgdGhlbiB0aGUgdGVzdCBzaG91bGQg dG9vLgoKPiArCQkJCQl9IGVsc2Ugewpza2lwIGlmIHRoZSBwYW5lbCBkb2VzIG5vdCBzdXBwb3J0 IERTQyAgYW5kIGRvIGl0IGluc2lkZSB0aGUgc3VwcG9ydCBjaGVjayBoZWxwZXIuCgo+ICsJCQkJ CQlpZ3RfaW5mbyAoIkRTQyBpcyBub3Qgc3VwcG9ydGVkIG9uICVzXG4iLAo+ICsJCQkJCQkJICBj b25uX2J1Zik7Cj4gKwkJCQkJfQo+ICsJCQkJfQo+ICsJCQkJY3J0Y19pZHhfbWFzayAmPSB+KDEg PDwgYy0+cGlwZSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZnJlZShjb25uZWN0b3Jz KTsKPiArCWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7Cj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG9wdF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgs IHZvaWQgKm9wdF9kdW1wKQo+ICt7Cj4gKwlib29sICpkdW1wID0gb3B0X2R1bXA7Cj4gKwo+ICsJ c3dpdGNoIChvcHQpIHsKPiArCWNhc2UgJ2knOgo+ICsJCSpkdW1wID0gdHJ1ZTsKRG9uJ3Qgc2Vl IG11Y2ggcG9pbnQgYWRkaW5nIGFuIG9wdGlvbiwgIGlmIHlvdSByZWFsbHkgd2FudCB0byBkdW1w IHRoZSAgZnVsbCBtb2RlLCBqdXN0IHVzZSBpZ3RfZGVidWcoKQphbmQgcnVuIHRoZSB0ZXN0IHdp dGggLS1kZWJ1Zy4KCj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlndF9hc3NlcnQoMCk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pClJlbW92ZSBkdW1wIGFuZCBzd2l0Y2ggdG8gIGlndF9tYWluCj4gK3sKPiAr CWNvbnN0IGNoYXIgKmhlbHBfc3RyID0KPiArCQkiICAtLWluZm9cdFx0RHVtcCBJbmZvcm1hdGlv biBhYm91dCBjb25uZWN0b3JzLiAoc3RpbGwgbmVlZHMgRFJNIGFjY2VzcylcbiI7Cj4gKwlzdGF0 aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKPiArCQl7ImluZm8iLCAwLCAwLCAn aSd9LAo+ICsJCXswLCAwLCAwLCAwfQo+ICsJfTsKPiArCWludCByZXQgPSAwOwo+ICsJc3RydWN0 IGRzY19jb25maWcgdGVzdF9jb25maWc7Cj4gKwlib29sIG9wdF9kdW1wID0gZmFsc2U7Cj4gKwlp Z3Rfc3VidGVzdF9pbml0X3BhcnNlX29wdHMoJmFyZ2MsIGFyZ3YsICIiLCBsb25nX29wdGlvbnMs IGhlbHBfc3RyLAo+ICsJCQkJICAgIG9wdF9oYW5kbGVyLCAmb3B0X2R1bXApOwpUaGlzIHdvbid0 IGJlIG5lZWRlZCBlaXRoZXIuCgo+ICsKPiArCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiAr Cj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ ICsJCWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKTsKCk1pc3NpbmcgaWd0X2Rp c3BsYXlfcmVxdWlyZSgpCgo+ICsJCWlmIChvcHRfZHVtcCkKPiArCQkJZHVtcF9pbmZvKCk7Cgo+ ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0KCJmb3JjZV9kc2NfZW5hYmxlX2Jhc2ljIikgewo+ICsJ CXN0cmNweSh0ZXN0X2NvbmZpZy50ZXN0X25hbWUsImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKTsK V2h5PyAKPiArCQlyZXQgPSB1cGRhdGVfZGlzcGxheSgmdGVzdF9jb25maWcpOwo+ICsJCWlndF9h c3NlcnRfZXEocmV0LCAwKTsKPiArCX0KPiArClRoZSB0ZXN0IGRvZXNuJ3QgbWFrZSB1c2Ugb2Yg ZGlzcGxheV9pbml0KCkgYW5kIGRpc3BsYXlfZmluaSgpIGxpa2UgIG90aGVyIGttcyB0ZXN0cyBk bywgd2hhdCBpcyB0aGUgcmVhc29uPwo+ICsJY2xvc2UoZHJtX2ZkKTsKPiArCj4gKwlpZ3RfYXNz ZXJ0X2VxKHJldCwgMCk7Cj4gKwo+ICsJaWd0X2luZm8oIkRTQyB0ZXN0aW5nIGRvbmVcbiIpOwo+ ICsJaWd0X2V4aXQoKTsKPiArCj4gK30KPiAKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaWd0LWRldgo=