From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id B15C56E27E for ; Tue, 16 Oct 2018 18:44:43 +0000 (UTC) Date: Tue, 16 Oct 2018 11:47:05 -0700 From: Manasi Navare Message-ID: <20181016184704.GA8224@intel.com> References: <20181005233437.31286-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: 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: Antonio Argenziano Cc: igt-dev@lists.freedesktop.org, Anusha Srivatsa List-ID: T24gV2VkLCBPY3QgMTAsIDIwMTggYXQgMDg6NDg6MzdBTSAtMDcwMCwgQW50b25pbyBBcmdlbnpp YW5vIHdyb3RlOgo+IAo+IAo+IE9uIDA1LzEwLzE4IDE2OjM0LCBNYW5hc2kgTmF2YXJlIHdyb3Rl Ogo+ID5UaGlzIHBhdGNoIGFkZHMgYSBiYXNpYyBrbXMgdGVzdCB0byB2YWxpZGF0ZSB0aGUgZGlz cGxheSBzdHJlYW0KPiA+Y29tcHJlc3Npb24gZnVuY3Rpb25hbGl0eSBpZiBzdXBwb3J0ZWQgb24g RFAvZURQIGNvbm5lY3Rvci4KPiA+Q3VycmVudGx5IHRoaXMgaGFzIG9ubHkgb25lIHN1YnRlc3Qg dG8gZm9yY2UgdGhlIERTQyBvbiBhbGwKPiA+dGhlIGNvbm5lY3RvcnMgdGhhdCBzdXBwb3J0IGl0 IHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzLgo+ID5UaGlzIHdpbGwgYmUgZXhwYW5kZWQgdG8gYWRk IG1vcmUgc3VidGVzdHMgdG8gdHdlYWsgRFNDIHBhcmFtZXRlcnMuCj4gPgo+ID5DYzogQW51c2hh IFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID5TaWduZWQtb2ZmLWJ5OiBN YW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4tLS0KPiA+ICB0ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiA+ICB0ZXN0cy9rbXNfZHBfZHNjLmMgICAgIHwg MzcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgMiBmaWxl cyBjaGFuZ2VkLCAzNzMgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9rbXNfZHBfZHNjLmMKPiA+Cj4gPmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz IGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID5pbmRleCBjODQ5MzNmMS4uYzgwN2FhZDMgMTAw NjQ0Cj4gPi0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+KysrIGIvdGVzdHMvTWFrZWZp bGUuc291cmNlcwo+ID5AQCAtMjA3LDYgKzIwNyw3IEBAIFRFU1RTX3Byb2dzID0gXAo+ID4gIAlr bXNfdHZfbG9hZF9kZXRlY3QgXAo+ID4gIAlrbXNfdW5pdmVyc2FsX3BsYW5lIFwKPiA+ICAJa21z X3ZibGFuayBcCj4gPisJa21zX2RwX2RzYyBcCj4gCj4gQWRkIHRlc3QgaW4gbWVzb24gYnVpbGQg YXMgd2VsbC4KCkJ1dCBJIGRvbnQgc2VlIGFueSBrbXMgdGVzdHMgYWRkZWQgaW4gbWVzb24uYnVp bGQgZmlsZSwgaXMgdGhlcmUgYW55IG90aGVyCmZpbGUgdGhhdCBhZGRzIHRoZSB0ZXN0IG5hbWVz IHRvIG1lc29uIGJ1aWxkPwoKPiAKPiA+ICAJbWV0YV90ZXN0IFwKPiA+ICAJcGVyZiBcCj4gPiAg CXBlcmZfcG11IFwKPiA+ZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcF9kc2MuYyBiL3Rlc3RzL2tt c19kcF9kc2MuYwo+ID5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID5pbmRleCAwMDAwMDAwMC4uZDBm ZDJhZTMKPiA+LS0tIC9kZXYvbnVsbAo+ID4rKysgYi90ZXN0cy9rbXNfZHBfZHNjLmMKPiA+QEAg LTAsMCArMSwzNzIgQEAKPiA+Ky8qCj4gPisgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jw b3JhdGlvbgo+ID4rICoKPiA+KyAqIERpc3BsYXlwb3J0IERpc3BsYXkgU3RyZWFtIENvbXByZXNz aW9uIHRlc3QKPiA+KyAqCj4gPisgKiBBdXRob3JzOgo+ID4rICogTWFuYXNpIE5hdmFyZSA8bWFu YXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+KyAqCj4gPisgKiBFbGVtZW50cyBvZiB0aGUgbW9k ZXNldCBjb2RlIGFkYXB0ZWQgZnJvbSBEYXZpZCBIZXJybWFubidzCj4gPisgKiBEUk0gbW9kZXNl dCBleGFtcGxlCj4gPisgKgo+ID4rICovCj4gPisjaW5jbHVkZSAiaWd0LmgiCj4gPisjaW5jbHVk ZSA8ZXJybm8uaD4KPiA+KyNpbmNsdWRlIDxnZXRvcHQuaD4KPiA+KyNpbmNsdWRlIDxtYXRoLmg+ Cj4gPisjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gPisjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ID4rI2lu Y2x1ZGUgPHN0cmluZ3MuaD4KPiA+KyNpbmNsdWRlIDx1bmlzdGQuaD4KPiA+KyNpbmNsdWRlIDxz dGRsaWIuaD4KPiA+KyNpbmNsdWRlIDxzaWduYWwuaD4KPiA+KyNpbmNsdWRlIDx0aW1lLmg+Cj4g PisjaW5jbHVkZSA8ZmNudGwuaD4KPiA+KyNpbmNsdWRlIDx0ZXJtaW9zLmg+Cj4gPisKPiA+K2lu dCBkcm1fZmQ7Cj4gPitkcm1Nb2RlUmVzICpyZXNvdXJjZXM7Cj4gPit1aW50NjRfdCB0aWxpbmcg PSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwo+IAo+IF4gU2VlbXMgdG8gYmUgdXNlZCBvbmx5 IGluIG9uZSBwbGFjZSwgd2h5IG5vdCB1c2UgdGhlIG1hY3JvIGRpcmVjdGx5PwoKSG1tLCB5ZWEg SSBjb3VsZCB1c2UgdGhlIG1hY3JvIGRpcmVjdGx5IHNpbmNlIEkgZG9udCB0aGluayBhbnkgc3Vi dGVzdHMgd291bGQgY2hhbmdlCnRoZSB0aWxpbmcgZm9ybWF0LgoKPiAKPiA+Kwo+ID4rc3RydWN0 IGNvbm5lY3RvciB7Cj4gPisJdWludDMyX3QgaWQ7Cj4gPisJaW50IG1vZGVfdmFsaWQ7Cj4gPisJ ZHJtTW9kZU1vZGVJbmZvIG1vZGU7Cj4gPisJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwo+ ID4rCWRybU1vZGVFbmNvZGVyICplbmNvZGVyOwo+ID4rCWludCBjcnRjLCBwaXBlOwo+ID4rfTsK PiA+Kwo+ID4rc3RydWN0IGRzY19jb25maWcgewo+ID4rCWNoYXIgdGVzdF9uYW1lWzEyOF07Cj4g PisJaW50IG1vZGVfd2lkdGg7Cj4gPisJaW50IG1vZGVfaGVpZ2h0Owo+ID4rCWludCBicHA7Cj4g PisJaW50IGRlcHRoOwo+ID4rCWJvb2wgZHNjX3N1cHBvcnRlZDsKPiA+Kwlib29sIGRzY19lbmFi bGU7Cj4gPit9Owo+ID4rCj4gPitzdGF0aWMgRklMRSAqZm9wZW5hdChpbnQgZGlyLCBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICptb2RlKQo+ID4rewo+ID4rCWludCBmZCA9IG9wZW5hdChk aXIsIG5hbWUsIE9fUkRXUik7Cj4gPisJcmV0dXJuIGZkb3BlbihmZCwgbW9kZSk7Cj4gPit9Cj4g PisKPiA+K3N0YXRpYyBib29sIGdldF9kcF9kc2Nfc3VwcG9ydChjaGFyICp0ZXN0X2Nvbm5lY3Rv cl9uYW1lKQo+ID4rewo+ID4rCWludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKPiA+ KwlGSUxFICpkc2Nfc3VwcG9ydF9mcCA9IE5VTEw7Cj4gPisJY2hhciAqbGluZSA9IE5VTEw7Cj4g PisJc2l6ZV90IGxpbmVfc2l6ZSA9IDA7Cj4gPisJY2hhciBidWZbMTI4XSA9IHswfSwgc3VwcG9y dGVkX3N0cls1XSwgZW5hYmxlZF9zdHJbNV07Cj4gPisJYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsK PiA+Kwo+ID4rCXN0cmNweShidWYsIHRlc3RfY29ubmVjdG9yX25hbWUpOwo+ID4rCXN0cmNhdChi dWYsICIvaTkxNV9kc2Nfc3VwcG9ydCIpOwo+ID4rCWRzY19zdXBwb3J0X2ZwID0gZm9wZW5hdChk aXIsIGJ1ZiwgInIiKTsKPiA+KwlpZ3RfcmVxdWlyZShkc2Nfc3VwcG9ydF9mcCk7Cj4gCj4gZG9u J3Qgd2UgaGF2ZSBzb21ldGhpbmcgc2ltaWxhciBpbiBpZ3RfZGVidWdmcyBhbHJlYWR5IChpZ3Rf ZGVidWdmc19yZWFkKT8KCkhtbSwgeWVhIEkgdGhpbmsgSSBjb3VsZCBiZSBhYmxlIHRvIHVzZSBp Z3RfZGVidWdmc19yZWFkIGFuZCBwYXNzIHRoZSBidWYgd2hpY2ggd2lsbApiZSBjb25jYXRlbmF0 ZWQgc3RyIHdpdGggY29ubmVjdG9yX25hbWUvZmlsZSBuYW1lIEVnOiBEUC0xL2k5MTVfZHNjX3N1 cHBvcnQKCkJ1dCBJIHdpbGwgc3RpbGwgbmVlZCB0aGUgYmVsb3cgd2hpbGUgbG9vcCBpbiBvcmRl ciB0byBwYXJzZSB0aGUgc3VwcG9ydGVkIGFuZCBlbmFibGVkCnN0cmluZ3MuIEkgd2lsbCBwbGF5 IHdpdGggdGhlIGlndF9kZWJ1Z2ZzX3JlYWQgYW5kIHN0cnN0ciB0byBzZWUgaWYgSSBjYW4gZ2V0 IHJpZCBvZiB0aGlzIHdoaWxlCmxvb3AgYmVsb3cuCgo+IAo+ID4rCj4gPisJd2hpbGUgKGdldGxp bmUoJmxpbmUsICZsaW5lX3NpemUsIGRzY19zdXBwb3J0X2ZwKSA+IDApIHsKPiA+KwkJY2hhciAq c3VwcG9ydCwgKmVuYWJsZWQ7Cj4gPisKPiA+KwkJZW5hYmxlZCA9IHN0cnN0cihsaW5lLCAiRW5h YmxlZDogIik7Cj4gPisJCWlndF9hc3NlcnRfZXEoc3NjYW5mKGVuYWJsZWQsICJFbmFibGVkOiAl cyIsIGVuYWJsZWRfc3RyKSwgMSk7Cj4gPisJCWlmIChzdHJjbXAoZW5hYmxlZF9zdHIsICJ5ZXMi KSA9PSAwKSB7Cj4gPisJCQlpZ3RfaW5mbygiRFNDIGlzIGVuYWJsZWQgb24gJXNcbiIsIHRlc3Rf Y29ubmVjdG9yX25hbWUpOwo+ID4rCQkJc3VwcG9ydGVkID0gdHJ1ZTsKPiA+KwkJCWJyZWFrOwo+ ID4rCQl9IGVsc2Ugewo+ID4rCQkJZ2V0bGluZSgmbGluZSwgJmxpbmVfc2l6ZSwgZHNjX3N1cHBv cnRfZnApOwo+ID4rCQkJc3VwcG9ydCA9IHN0cnN0cihsaW5lLCAiU3VwcG9ydGVkOiAiKTsKPiA+ KwkJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3VwcG9ydCwgIlN1cHBvcnRlZDogJXMiLCBzdXBwb3J0 ZWRfc3RyKSwgMSk7Cj4gPisJCWlmIChzdHJjbXAoc3VwcG9ydGVkX3N0ciwgInllcyIpID09IDAp Cj4gPisJCQlzdXBwb3J0ZWQgPSB0cnVlOwo+ID4rCQllbHNlIGlmIChzdHJjbXAoc3VwcG9ydGVk X3N0ciwgIm5vIikgPT0gMCkKPiA+KwkJCXN1cHBvcnRlZCA9IGZhbHNlOwo+ID4rCQllbHNlCj4g PisJCQlpZ3RfZmFpbF9vbl9mKHRydWUsICJVbmtub3duIERTQyBzdXBwb3J0ZWQgc3RhdHVzICcl cydcbiIsCj4gPisJCQkJICAgICAgc3VwcG9ydGVkX3N0cik7Cj4gPisJCWJyZWFrOwo+ID4rCQl9 aHR0cHM6Ly9qaXJhMDEuZGV2dG9vbHMuaW50ZWwuY29tL2Jyb3dzZS9HVUMtMzA2Cj4gPisJfQo+ ID4rCj4gPisJZnJlZShsaW5lKTsKPiA+KwlmY2xvc2UoZHNjX3N1cHBvcnRfZnApOwo+ID4rCj4g PisJcmV0dXJuIHN1cHBvcnRlZDsKPiA+K30KPiA+Kwo+ID4rc3RhdGljIHZvaWQgc2V0X2RwX2Rz Y19lbmFibGUoYm9vbCBlbmFibGUsIGNoYXIgKnRlc3RfY29ubmVjdG9yX25hbWUpCj4gPit7Cj4g PisJaW50IGRpciA9IGlndF9kZWJ1Z2ZzX2Rpcihkcm1fZmQpOwo+ID4rCUZJTEUgKmRzY19lbmFi bGVfZnAgPSBOVUxMOwo+ID4rCWNoYXIgYnVmWzEyOF0gPSB7MH07Cj4gPisKPiA+KwlzdHJjcHko YnVmLCB0ZXN0X2Nvbm5lY3Rvcl9uYW1lKTsKPiA+KwlzdHJjYXQoYnVmLCAiL2k5MTVfZHNjX3N1 cHBvcnQiKTsKPiA+Kwlkc2NfZW5hYmxlX2ZwID0gZm9wZW5hdChkaXIsIGJ1ZiwgIncrIik7Cj4g PisJaWd0X3JlcXVpcmUoZHNjX2VuYWJsZV9mcCk7Cj4gPisJcmV3aW5kKGRzY19lbmFibGVfZnAp Owo+ID4rCWlndF9pbmZvKCJTZXR0aW5nIERTQ19FTkFCTEUgdG8gJXMgZm9yICVzXG4iLCAoZW5h YmxlKSA/ICJ0cnVlIiA6ICJmYWxzZSIsIHRlc3RfY29ubmVjdG9yX25hbWUpOwo+ID4rCWZwcmlu dGYoZHNjX2VuYWJsZV9mcCwgIiVkIiwgZW5hYmxlKTsKPiA+KwlmZmx1c2goZHNjX2VuYWJsZV9m cCk7Cj4gPisJZmNsb3NlKGRzY19lbmFibGVfZnApOwo+ID4rfQo+ID4rCj4gPitzdGF0aWMgdm9p ZCBkdW1wX2Nvbm5lY3RvcnNfZmQoaW50IGRybWZkKQo+ID4rewo+ID4rCWludCBpLCBqOwo+ID4r Cj4gPisJZHJtTW9kZVJlcyAqbW9kZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRy bWZkKTsKPiA+Kwo+ID4rICAgICAgICBpZiAoIW1vZGVfcmVzb3VyY2VzKSB7Cj4gPisJCWlndF93 YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7 Cj4gPisJCXJldHVybjsKPiA+Kwl9Cj4gPisKPiA+KwlpZ3RfaW5mbygiQ29ubmVjdG9yczpcbiIp Owo+ID4rCWlndF9pbmZvKCJpZFx0ZW5jb2Rlclx0c3RhdHVzXHRcdHR5cGVcdHNpemUgKG1tKVx0 bW9kZXNcbiIpOwo+ID4rCWZvciAoaSA9IDA7IGkgPCBtb2RlX3Jlc291cmNlcy0+Y291bnRfY29u bmVjdG9yczsgaSsrKSB7Cj4gPisJCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+Kwo+ ID4rCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yQ3VycmVudChkcm1mZCwKPiA+KwkJ CQkJCSAgICAgICBtb2RlX3Jlc291cmNlcy0+Y29ubmVjdG9yc1tpXSk7Cj4gPisJCWlmICghY29u bmVjdG9yKSB7Cj4gPisJCQlpZ3Rfd2FybigiY291bGQgbm90IGdldCBjb25uZWN0b3IgJWk6ICVz XG4iLAo+ID4rCQkJCSBtb2RlX3Jlc291cmNlcy0+Y29ubmVjdG9yc1tpXSwgc3RyZXJyb3IoZXJy bm8pKTsKPiA+KwkJCWNvbnRpbnVlOwo+ID4rCQl9Cj4gPisKPiA+KwkJaWd0X2luZm8oIiVkXHQl ZFx0JXNcdCVzXHQlZHglZFx0XHQlZFxuIiwKPiA+KwkJCSBjb25uZWN0b3ItPmNvbm5lY3Rvcl9p ZCwgY29ubmVjdG9yLT5lbmNvZGVyX2lkLAo+ID4rCQkJIGttc3Rlc3RfY29ubmVjdG9yX3N0YXR1 c19zdHIoY29ubmVjdG9yLT5jb25uZWN0aW9uKSwKPiA+KwkJCSBrbXN0ZXN0X2Nvbm5lY3Rvcl90 eXBlX3N0cihjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKSwKPiA+KwkJCSBjb25uZWN0b3ItPm1t V2lkdGgsIGNvbm5lY3Rvci0+bW1IZWlnaHQsCj4gPisJCQkgY29ubmVjdG9yLT5jb3VudF9tb2Rl cyk7Cj4gPisKPiA+KwkJaWYgKCFjb25uZWN0b3ItPmNvdW50X21vZGVzKQo+IAo+IE5lZWQgdG8g ZnJlZSB0aGUgY29ubmVjdG9yIGhlcmUuCgpZZXMgd2lsIGFkZCBkcm1Nb2RlRnJlZUNvbm5lY3Rv cihjb25uZWN0b3IpOyBoZXJlIGJlZm9yZSBjb250aW51ZQoKPiAKPiA+KwkJCWNvbnRpbnVlOwo+ ID4rCj4gPisJCWlndF9pbmZvKCIgIG1vZGVzOlxuIik7Cj4gPisJCWlndF9pbmZvKCIgIG5hbWUg cmVmcmVzaCAoSHopIGhkaXNwIGhzcyBoc2UgaHRvdCB2ZGlzcCAiInZzcyB2c2UgdnRvdCBmbGFn cyB0eXBlIGNsb2NrXG4iKTsKPiA+KwkJZm9yIChqID0gMDsgaiA8IGNvbm5lY3Rvci0+Y291bnRf bW9kZXM7IGorKyl7Cj4gPisJCQlpZ3RfaW5mbygiWyVkXSIsIGopOwo+ID4rCQkJa21zdGVzdF9k dW1wX21vZGUoJmNvbm5lY3Rvci0+bW9kZXNbal0pOwo+ID4rCQl9Cj4gPisKPiA+KwkJZHJtTW9k ZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+Kwl9Cj4gPisJaWd0X2luZm8oIlxuIik7Cj4g PisKPiA+Kwlkcm1Nb2RlRnJlZVJlc291cmNlcyhtb2RlX3Jlc291cmNlcyk7Cj4gPit9Cj4gPisK PiA+K3N0YXRpYyB2b2lkIGR1bXBfY3J0Y3NfZmQoaW50IGRybWZkKQo+ID4rewo+ID4rCWludCBp Owo+ID4rCWRybU1vZGVSZXMgKm1vZGVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNlcyhk cm1mZCk7Cj4gPisKPiA+KwlpZ3RfaW5mbygiQ1JUQ3M6XG4iKTsKPiA+KwlpZ3RfaW5mbygiaWRc dGZiXHRwb3NcdHNpemVcbiIpOwo+ID4rCWZvciAoaSA9IDA7IGkgPCBtb2RlX3Jlc291cmNlcy0+ Y291bnRfY3J0Y3M7IGkrKykgewo+ID4rCQlkcm1Nb2RlQ3J0YyAqY3J0YzsKPiA+Kwo+ID4rCQlj cnRjID0gZHJtTW9kZUdldENydGMoZHJtZmQsIG1vZGVfcmVzb3VyY2VzLT5jcnRjc1tpXSk7Cj4g PisJCWlmICghY3J0Yykgewo+ID4rCQkJaWd0X3dhcm4oImNvdWxkIG5vdCBnZXQgY3J0YyAlaTog JXNcbiIsCj4gPisJCQkJIG1vZGVfcmVzb3VyY2VzLT5jcnRjc1tpXSwgc3RyZXJyb3IoZXJybm8p KTsKPiA+KwkJCWNvbnRpbnVlOwo+ID4rCQl9Cj4gPisJCWlndF9pbmZvKCIlZFx0JWRcdCglZCwl ZClcdCglZHglZClcbiIsCj4gPisJCQkgY3J0Yy0+Y3J0Y19pZCwgY3J0Yy0+YnVmZmVyX2lkLCBj cnRjLT54LAo+ID4rCQkJIGNydGMtPnksIGNydGMtPndpZHRoLCBjcnRjLT5oZWlnaHQpOwo+ID4r CQlrbXN0ZXN0X2R1bXBfbW9kZSgmY3J0Yy0+bW9kZSk7Cj4gPisKPiA+KwkJZHJtTW9kZUZyZWVD cnRjKGNydGMpOwo+ID4rCX0KPiA+KwlpZ3RfaW5mbygiXG4iKTsKPiA+Kwo+ID4rCWRybU1vZGVG cmVlUmVzb3VyY2VzKG1vZGVfcmVzb3VyY2VzKTsKPiA+K30KPiA+Kwo+ID4rc3RhdGljIHZvaWQg ZHVtcF9pbmZvKHZvaWQpCj4gPit7Cj4gPisJZHVtcF9jb25uZWN0b3JzX2ZkKGRybV9mZCk7Cj4g PisJZHVtcF9jcnRjc19mZChkcm1fZmQpOwo+ID4rfQo+ID4rCj4gPitzdGF0aWMgaW50Cj4gPitz ZXRfbW9kZShzdHJ1Y3QgY29ubmVjdG9yICpjLCBzdHJ1Y3QgZHNjX2NvbmZpZyAqdGVzdF9jb25m aWcsIGJvb2wgc2V0X21vZGUpCj4gPit7Cj4gPisJdW5zaWduZWQgaW50IGZiX2lkID0gMDsKPiA+ KwlzdHJ1Y3QgaWd0X2ZiIGZiX2luZm87Cj4gPisJaW50IHJldCA9IDA7Cj4gPisKPiA+KwlpZiAo IXNldF9tb2RlKSB7Cj4gPisJCXJldCA9IGRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0Yywg MCwgMCwgMCwKPiA+KwkJCQkgICAgIE5VTEwsIDAsIE5VTEwpOwo+ID4rCQlpZiAocmV0KQo+ID4r CQkJaWd0X3dhcm4oIkZhaWxlZCB0byB1bnNldCBtb2RlIik7Cj4gPisJCXJldHVybiByZXQ7Cj4g PisJfQo+ID4rCj4gPisJZmJfaWQgPSBpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZHJtX2ZkLCB0ZXN0 X2NvbmZpZy0+bW9kZV93aWR0aCwKPiA+KwkJCQkgICAgICB0ZXN0X2NvbmZpZy0+bW9kZV9oZWln aHQsCj4gPisJCQkJICAgICAgaWd0X2JwcF9kZXB0aF90b19kcm1fZm9ybWF0KHRlc3RfY29uZmln LT5icHAsCj4gPisJCQkJCQkJCSAgdGVzdF9jb25maWctPmRlcHRoKSwKPiA+KwkJCQkgICAgICB0 aWxpbmcsICZmYl9pbmZvKTsKPiA+Kwo+ID4rCWlndF9pbmZvKCJDUlRDKCV1KTpbJWRdIiwgYy0+ Y3J0YywgMCk7Cj4gPisJa21zdGVzdF9kdW1wX21vZGUoJmMtPm1vZGUpOwo+ID4rCWRybU1vZGVT ZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgLTEsIDAsIDAsIE5VTEwsIDAsIE5VTEwpOwo+ID4rCXJl dCA9IGRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgZmJfaWQsIDAsIDAsCj4gPisJCQkg ICAgICZjLT5pZCwgMSwgJmMtPm1vZGUpOwo+ID4rCXNsZWVwKDUpOwo+IAo+IFdoeSB0aGUgc2xl ZXAgYmVmb3JlIGNoZWNraW5nIHRoZSByZXR1cm4gY29kZT8KClRoaXMgaXMgc28gdGhhdCBpdCBk aXNwbGF5cyB0aGUgcmVxdWVzdGVkIHBhdHRlcm4gZm9yIGZldyBzZWNzIGJlZm9yZSBjeWNsaW5n IHRvIHRoZSBuZXh0CmNvbm5lY3RvciBzbyB0aGF0IGl0IGNhbiBiZSB2YWxpZGF0ZWQgdmlzdWFs bHkuCk1ha2VzIHNlbnNlPwoKPiAKPiA+KwlpZiAocmV0IDwgMCkgewo+ID4rCQlpZ3Rfd2Fybigi RmFpbGVkIHRvIHNldCBtb2RlICglZHglZEAlZEh6KTogJXNcbiIsCj4gPisJCQkgdGVzdF9jb25m aWctPm1vZGVfd2lkdGgsIHRlc3RfY29uZmlnLT5tb2RlX2hlaWdodCwKPiA+KwkJCSBjLT5tb2Rl LnZyZWZyZXNoLCBzdHJlcnJvcihlcnJubykpOwo+ID4rCQlpZ3RfcmVtb3ZlX2ZiKGRybV9mZCwg JmZiX2luZm8pOwo+ID4rCj4gPisJfQo+ID4rCj4gPisJcmV0dXJuIHJldDsKPiA+K30KPiA+Kwo+ ID4rCj4gPisvKgo+ID4rICogUmUtcHJvYmUgY29ubmVjdG9ycyBhbmQgZG8gYSBtb2Rlc2V0IHdp dGggYW5kIHdpaG91dCBEU0MKPiA+KyAqCj4gPisgKiBSZXR1cm5zOgo+ID4rICogMDogT24gU3Vj Y2Vzcwo+ID4rICogLTE6IE9uIGZhaWx1cmUKPiA+KyAqLwo+ID4rc3RhdGljIGludCB1cGRhdGVf ZGlzcGxheShzdHJ1Y3QgZHNjX2NvbmZpZyAqdGVzdF9jb25maWcpCj4gPit7Cj4gPisJc3RydWN0 IGNvbm5lY3RvciAqY29ubmVjdG9yczsKPiA+KwlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29u ZmlnIGNvbmZpZzsKPiA+KwlpbnQgY250LCBjb25uX2NudCA9IDAsIHJldCA9IDAsIGVkcF9jbnQg PSAwLCBkcF9jbnQgPSAwOwo+ID4rCXVuc2lnbmVkIGxvbmcgY3J0Y19pZHhfbWFzayA9IC0xVUw7 Cj4gPisJY2hhciBjb25uX2J1ZlsxMjhdID0gezB9Owo+ID4rCj4gPisJcmVzb3VyY2VzID0gZHJt TW9kZUdldFJlc291cmNlcyhkcm1fZmQpOwo+ID4rCWlmICghcmVzb3VyY2VzKSB7Cj4gPisJCWln dF93YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5v KSk7Cj4gPisJCXJldHVybiAtMTsKPiA+Kwl9Cj4gPisKPiA+Kwljb25uZWN0b3JzID0gY2FsbG9j KHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9ycywKPiA+KwkJCSAgICBzaXplb2Yoc3RydWN0IGNv bm5lY3RvcikpOwo+ID4rCWlmICghY29ubmVjdG9ycykKPiA+KwkJcmV0dXJuIC0xOwo+ID4rCj4g PisJLyogRmluZCBhbnkgY29ubmVjdGVkIGRpc3BsYXlzICovCj4gPisJZm9yIChjbnQgPSAwOyBj bnQgPCByZXNvdXJjZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGNudCsrKSB7Cj4gPisJCXN0cnVjdCBj b25uZWN0b3IgKmMgPSAmY29ubmVjdG9yc1tjbnRdOwo+ID4rCQljLT5pZCA9IHJlc291cmNlcy0+ Y29ubmVjdG9yc1tjbnRdOwo+ID4rCQlpZigha21zdGVzdF9nZXRfY29ubmVjdG9yX2NvbmZpZyhk cm1fZmQsIGMtPmlkLCBjcnRjX2lkeF9tYXNrLAo+ID4rCQkJCQkJJmNvbmZpZykpIHsKPiA+KwkJ CWMtPm1vZGVfdmFsaWQgPSAwOwo+ID4rCQkJY29udGludWU7Cj4gPisJCX0KPiA+KwkJYy0+Y29u bmVjdG9yID0gY29uZmlnLmNvbm5lY3RvcjsKPiA+KwkJYy0+ZW5jb2RlciA9IGNvbmZpZy5lbmNv ZGVyOwo+ID4rCQljLT5tb2RlID0gY29uZmlnLmRlZmF1bHRfbW9kZTsKPiA+KwkJYy0+Y3J0YyA9 IGNvbmZpZy5jcnRjLT5jcnRjX2lkOwo+ID4rCQljLT5waXBlID0gY29uZmlnLnBpcGU7Cj4gPisJ CWMtPm1vZGVfdmFsaWQgPSAxOwo+ID4rCj4gPisJCWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCB8fAo+ID4rCQkgICAgYy0+ Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKSB7Cj4g PisKPiA+KwkJCWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NP Tk5FQ1RPUl9lRFApCj4gPisJCQkJY29ubl9jbnQgPSArKyBlZHBfY250Owo+ID4rCQkJZWxzZQo+ ID4rCQkJCWNvbm5fY250ID0gKysgZHBfY250Owo+ID4rCQkJaWYgKGMtPmNvbm5lY3Rvci0+Y29u bmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQpIHsKPiA+KwkJCQlzcHJpbnRmKGNvbm5fYnVm LCAiJXMtJWQiLAo+ID4rCQkJCQlrbXN0ZXN0X2Nvbm5lY3Rvcl90eXBlX3N0cihjLT5jb25uZWN0 b3ItPmNvbm5lY3Rvcl90eXBlKSwKPiA+KwkJCQkJY29ubl9jbnQpOwo+ID4rCQkJCXRlc3RfY29u ZmlnLT5kc2Nfc3VwcG9ydGVkID0KPiA+KwkJCQkJZ2V0X2RwX2RzY19zdXBwb3J0KGNvbm5fYnVm KTsKPiA+KwkJCQlpZiAoIXN0cmNtcCh0ZXN0X2NvbmZpZy0+dGVzdF9uYW1lLAo+ID4rCQkJCQkg ICAgImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKSkgewo+ID4rCQkJCQlpZiAodGVzdF9jb25maWct PmRzY19zdXBwb3J0ZWQpIHsKPiA+KwkJCQkJCWlndF9pbmZvICgiRFNDIGlzIHN1cHBvcnRlZCBv biAlc1xuIiwKPiA+KwkJCQkJCQkgIGNvbm5fYnVmKTsKPiA+KwkJCQkJCXRlc3RfY29uZmlnLT5t b2RlX3dpZHRoID0gYy0+bW9kZS5oZGlzcGxheTsKPiA+KwkJCQkJCXRlc3RfY29uZmlnLT5tb2Rl X2hlaWdodCA9IGMtPm1vZGUudmRpc3BsYXk7Cj4gPisJCQkJCQl0ZXN0X2NvbmZpZy0+YnBwID0g MzI7Cj4gPisJCQkJCQl0ZXN0X2NvbmZpZy0+ZGVwdGggPSAyNDsKPiA+KwkJCQkJCXNldF9kcF9k c2NfZW5hYmxlKHRlc3RfY29uZmlnLT5kc2NfZW5hYmxlLAo+ID4rCQkJCQkJCSAgY29ubl9idWYp Owo+ID4rCQkJCQkJcmV0ID0gc2V0X21vZGUoYywgdGVzdF9jb25maWcsCj4gPisJCQkJCQkJICAg ICAgIHRydWUpOwo+ID4rCQkJCQl9IGVsc2Ugewo+ID4rCQkJCQkJaWd0X2luZm8gKCJEU0MgaXMg bm90IHN1cHBvcnRlZCBvbiAlc1xuIiwKPiA+KwkJCQkJCQkgIGNvbm5fYnVmKTsKPiA+KwkJCQkJ fQo+ID4rCQkJCX0KPiA+KwkJCQljcnRjX2lkeF9tYXNrICY9IH4oMSA8PCBjLT5waXBlKTsKPiA+ KwkJCX0KPiA+KwkJfQo+ID4rCX0KPiA+Kwo+ID4rCWZyZWUoY29ubmVjdG9ycyk7Cj4gPisJZHJt TW9kZUZyZWVSZXNvdXJjZXMocmVzb3VyY2VzKTsKPiA+KwlyZXR1cm4gcmV0Owo+ID4rfQo+ID4r Cj4gPitzdGF0aWMgaW50IG9wdF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQg Km9wdF9kdW1wKQo+ID4rewo+IAo+IFdoeSBub3Qgd3JhcHBpbmcgYWxsIHRoZSBvcHRpb25hbCBw cmludHMgaW4gaWd0X2RlYnVnIHNvIHlvdSBjb3VsZCByZS11c2UKPiB0aGUgLS1kZWJ1ZyBvcHRp b24/CgpZb3UgbWVhbiBpbnN0ZWFkIG9mIGlndF9pbmZvIGFuZCBhbGwgY29ubmVjdG9yIGR1bXAg cHJpbnRzIGhhdmUgdGhlbSBpbiBpZ3RfZGVidWcoKSA/Cgo+IAo+ID4rCWJvb2wgKmR1bXAgPSBv cHRfZHVtcDsKPiA+Kwo+ID4rCXN3aXRjaCAob3B0KSB7Cj4gPisJY2FzZSAnaSc6Cj4gPisJCSpk dW1wID0gdHJ1ZTsKPiA+KwkJYnJlYWs7Cj4gPisJZGVmYXVsdDoKPiA+KwkJaWd0X2Fzc2VydCgw KTsKPiA+Kwl9Cj4gPisKPiA+KwlyZXR1cm4gMDsKPiA+K30KPiA+Kwo+ID4raW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiA+K3sKPiA+Kwljb25zdCBjaGFyICpoZWxwX3N0ciA9Cj4g PisJCSIgIC0taW5mb1x0XHREdW1wIEluZm9ybWF0aW9uIGFib3V0IGNvbm5lY3RvcnMuIChzdGls bCBuZWVkcyBEUk0gYWNjZXNzKVxuIjsKPiA+KwlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29w dGlvbnNbXSA9IHsKPiA+KwkJeyJpbmZvIiwgMCwgMCwgJ2knfSwKPiA+KwkJezAsIDAsIDAsIDB9 Cj4gPisJfTsKPiA+KwlpbnQgcmV0ID0gMDsKPiA+KwlzdHJ1Y3QgZHNjX2NvbmZpZyB0ZXN0X2Nv bmZpZzsKPiA+Kwlib29sIG9wdF9kdW1wID0gZmFsc2U7Cj4gPisJaWd0X3N1YnRlc3RfaW5pdF9w YXJzZV9vcHRzKCZhcmdjLCBhcmd2LCAiIiwgbG9uZ19vcHRpb25zLCBoZWxwX3N0ciwKPiA+KwkJ CQkgICAgb3B0X2hhbmRsZXIsICZvcHRfZHVtcCk7Cj4gPisKPiA+KwlpZ3Rfc2tpcF9vbl9zaW11 bGF0aW9uKCk7Cj4gPisKPiA+KwlpZ3RfZml4dHVyZSB7Cj4gPisJCWttc3Rlc3Rfc2V0X3Z0X2dy YXBoaWNzX21vZGUoKTsKPiA+KwkJZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9BTlkp Owo+ID4rCQlpZiAob3B0X2R1bXApCj4gPisJCQlkdW1wX2luZm8oKTsKPiA+Kwl9Cj4gPisKPiA+ KwlpZ3Rfc3VidGVzdCgiZm9yY2VfZHNjX2VuYWJsZV9iYXNpYyIpIHsKPiA+KwkJc3RyY3B5KHRl c3RfY29uZmlnLnRlc3RfbmFtZSwiZm9yY2VfZHNjX2VuYWJsZV9iYXNpYyIpOwo+ID4rCQlyZXQg PSB1cGRhdGVfZGlzcGxheSgmdGVzdF9jb25maWcpOwo+IAo+ICd0ZXN0X2NvbmZpZycgc2VlbXMg dG8gYmUgYW4gb3V0cHV0IHBhcmFtZXRlciBidXQgaXQgaXMgbm90IHVzZWQgaW4gdGhlCj4gdGVz dC4KCnRlc3RfY29uZmlnIGlzIHVzZWQgaW4gdGhlIHVwZGF0ZV9kaXNwbGF5KCkKCj4gCj4gPisJ CWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPiA+Kwl9Cj4gPisKPiA+KwljbG9zZShkcm1fZmQpOwo+ ID4rCj4gPisJaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+IAo+ICdyZXQnIGlzIGFscmVhZHkgY2hl Y2tlZCBpbiB0aGUgc3VidGVzdCBhbHNvLCB0aGlzIHdvdWxkIGZhaWwgaWYgeW91IGRvbid0Cj4g cnVuIHRoZSBzdWJ0ZXN0LgoKSWYgSSBkb250IHJ1biB0aGUgc3VidGVzdCwgaXQgd2lsbCB1c2Ug dGhlIGluaXRpYWxpemVkIHZhbHVlIG9mIHJldCB3aGljaCBpcyAwLgpJdCB3aWxsIG9ubHkgZmFp bCBpZiB1cGRhdGVfZGlzcGxheSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuCgpNYW5hc2kKCj4g Cj4gQ29tbWVudHMgbW9zdGx5IGZyb20gYSByYXBpZCByZWFkLiBZb3Ugd2lsbCBzdGlsbCBuZWVk IGEgcHJvcGVyIHJldmlld2VyIGZvcgo+IHRoZSBLTVMgc3R1ZmYuCj4gCj4gVGhhbmtzLAo+IEFu dG9uaW8KPiAKPiA+Kwo+ID4rCWlndF9pbmZvKCJEU0MgdGVzdGluZyBkb25lXG4iKTsKPiA+Kwlp Z3RfZXhpdCgpOwo+ID4rCj4gPit9Cj4gPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXYK