From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 08C5B6EC44 for ; Fri, 17 Apr 2020 15:38:34 +0000 (UTC) Date: Fri, 17 Apr 2020 20:58:50 +0530 From: Anshuman Gupta Message-ID: <20200417152850.GM5533@intel.com> References: <20200409053951.26929-1-anshuman.gupta@intel.com> <20200409053951.26929-4-anshuman.gupta@intel.com> <26fc49ab-bf41-41e4-d3ff-5d7455d64b79@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <26fc49ab-bf41-41e4-d3ff-5d7455d64b79@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v5 3/5] tests/i915_pm_lpsp: lpsp platform agnostic support 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: "Manna, Animesh" Cc: igt-dev@lists.freedesktop.org, jani.nikula@intel.com, martin.peres@intel.com List-ID: T24gMjAyMC0wNC0xNyBhdCAxOTo1MjowMCArMDUzMCwgTWFubmEsIEFuaW1lc2ggd3JvdGU6Cj4g Cj4gT24gMDktMDQtMjAyMCAxMTowOSwgQW5zaHVtYW4gR3VwdGEgd3JvdGU6Cj4gPkN1cnJlbnQg aW1wbGVtZW50YXRpb24gb2YgbHBzcCBpZ3QgdGVzdCwgYXNzdW1lZCB0aGF0IGV2ZXJ5IG5vbi1l ZHAKPiA+cGFuZWwgaXNuJ3QgYSBscHNwIHBhbmVsIGJ1dCBpdCBpcyBub3QgdHJ1ZSBvbiBUR0wg YW55bW9yZSwKPiA+YW55IEhETUkvRFAvRFNJIHBhbmVsIGNvbm5lY3RlZCBvbiBwaXBlIEEgYW5k IGNvbm5lY3RlZCB0byBQT1JUX3tBLEIsQ30KPiA+Y2FuIGRyaXZlIExQU1AuCj4gPkV2ZW4gb24g b2xkZXIgR2VuOSBwbGF0Zm9ybSBhIERQIHBhbmVsIGNhbiBkcml2ZSBscHNwIG9uIFBvcnQgQS4K PiA+VGhpcyByZXF1aXJlcyBjb21wbGV0ZSBkZXNpZ24gY2hhbmdlIGluIGN1cnJlbnQgbHBzcCBp Z3QgZm9yIGEgcGxhdGZvcm0KPiA+YWdub3N0aWMgc3VwcG9ydC4KPiA+Cj4gPlRoZSBuZXcgaWd0 IGFwcHJvYWNoIGlzIHJlbGllcyBvbiBjb25uZWN0b3Igc3BlY2lmaWMKPiA+aTkxNV9scHNwX2Nh cGFiaWxpdHkgYW5kIGk5MTVfbHBzcF9zdGF0dXMgZGVidWdmcyBhdHRyaWJ1dGVzLAo+ID50aGVz ZSBkZWJ1Z2ZzIGV4cG9zZXMgd2hldGhlciBhbiBvdXRwdXQgaXMgY2FwYWJsZSBvZiBkcml2aW5n IGxwc3AKPiA+YW5kIGxwc3AgaXMgZW5hYmxlZC4KPiA+Cj4gPk51a2luZyBlZHAtbmF0aXZlIGFu ZCBub24tZWRwIHRlc3QsIGludHJvZHVjaW5nIGEgbmV3IGR5bmFtaWMKPiA+aWd0IHN1YnRlc3Qg a21zLWxwc3AsIHdoaWNoIHZhbGlkYXRlcyBscHNwIG9uIGVhY2ggY29ubmVjdGVkIG91dHB1dAo+ ID5hbmQgc2tpcCB0aGUgc3VidGVzdCBpZiBvdXRwdXQgaXMgbm90IGxwc3AgY2FwYWJsZS4KPiA+ Cj4gPnYyOgo+ID4tIENJIGZhaWx1cmVzIGZpeHVwLgo+ID52MzoKPiA+LSByZW1vdmVkIHVubG9h ZGluZyBvZiBzbmRfbW9kdWxlcy4gW01hcnRpbl0KPiA+djQ6Cj4gPi0gRG9uJ3QgdGVzdCBub24t bHBzcChpZiBscHNwIGRpc2FibGVkKSwgbm8gUk9JIHRvIHRlc3QgdGhhdC4KPiA+LSBudWtlIHBh bmVsLWZpdHRlciB0ZXN0Lgo+ID52NToKPiA+LSBBZGRlZCBkeW5hbWljIHN1YnRlc3QgYW5kIGln dCBjaGFuZ2VzIGFjY29yZGluZyB0byBrZXJuZWwKPiA+ICAgZGVidWdmcyBpOTE1X2xwc3Bfc3Rh dHVzIGNoYW5nZXMuCj4gPgo+ID5TaWduZWQtb2ZmLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVt YW4uZ3VwdGFAaW50ZWwuY29tPgo+ID4tLS0KPiA+ICB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5j IHwgMjg1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgMSBmaWxl IGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCj4gPgo+ID5kaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9s cHNwLmMKPiA+aW5kZXggMDhmODJlN2MuLjdiZTIzZTZjIDEwMDY0NAo+ID4tLS0gYS90ZXN0cy9p OTE1L2k5MTVfcG1fbHBzcC5jCj4gPisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKPiA+ QEAgLTI1LDIxMCArMjUsMTUzIEBACj4gPiAgICovCj4gPiAgI2luY2x1ZGUgImlndC5oIgo+ID4r I2luY2x1ZGUgImlndF9rbW9kLmgiCj4gPisjaW5jbHVkZSAiaWd0X3BtLmgiCj4gPisjaW5jbHVk ZSAiaWd0X3N5c2ZzLmgiCj4gPiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ID4gICNpbmNsdWRl IDxzeXMvc3RhdC5oPgo+ID4gICNpbmNsdWRlIDxmY250bC5oPgo+ID4gICNpbmNsdWRlIDx1bmlz dGQuaD4KPiA+KyNkZWZpbmUgTUFYX1NJTktfTFBTUF9JTkZPX0JVRl9MRU4JNDA5Ngo+ID4tc3Rh dGljIGJvb2wgc3VwcG9ydHNfbHBzcCh1aW50MzJfdCBkZXZpZCkKPiA+LXsKPiA+LQlyZXR1cm4g SVNfSEFTV0VMTChkZXZpZCkgfHwgSVNfQlJPQURXRUxMKGRldmlkKTsKPiA+LX0KPiA+KyNkZWZp bmUgUFdSX0RPTUFJTl9JTkZPICJpOTE1X3Bvd2VyX2RvbWFpbl9pbmZvIgo+ID4tc3RhdGljIGJv b2wgbHBzcF9pc19lbmFibGVkKGludCBkcm1fZmQpCj4gPit0eXBlZGVmIHN0cnVjdCB7Cj4gPisJ aW50IGRybV9mZDsKPiA+KwlpbnQgZGVidWdmc19mZDsKPiA+Kwl1aW50MzJfdCBkZXZpZDsKPiA+ KwljaGFyICpwd3JfZG1uX2luZm87Cj4gPisJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ID4rCXN0 cnVjdCBpZ3RfZmIgZmI7Cj4gPisJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ID4rCWlndF9vdXRw dXRfdCAqb3V0cHV0Owo+ID4rfSBkYXRhX3Q7Cj4gPisKPiA+K3N0YXRpYyBib29sIGxwc3BfaXNf ZW5hYmxlZChkYXRhX3QgKmRhdGEpCj4gPiAgewo+ID4tCXVpbnQzMl90IHZhbDsKPiA+KwljaGFy IGJ1ZltNQVhfU0lOS19MUFNQX0lORk9fQlVGX0xFTl07Cj4gPisJaW50IGxlbjsKPiA+LQl2YWwg PSBJTlJFRyhIU1dfUFdSX1dFTExfQ1RMMik7Cj4gPi0JcmV0dXJuICEodmFsICYgSFNXX1BXUl9X RUxMX1NUQVRFX0VOQUJMRUQpOwo+ID4tfQo+ID4rCWxlbiA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9y ZWFkKGRhdGEtPmRlYnVnZnNfZmQsICJpOTE1X2xwc3Bfc3RhdHVzIiwKPiA+KwkJCQkgICAgICBi dWYsIHNpemVvZihidWYpKTsKPiA+KwlpZiAobGVuIDwgMCkKPiA+KwkJaWd0X2Fzc2VydF9lcShs ZW4sIC1FTk9ERVYpOwo+ID4tLyogVGhlIExQU1AgbW9kZSBpcyBhbGwgYWJvdXQgYW4gZW5hYmxl ZCBwaXBlLCBidXQgd2UgZXhwZWN0IHRvIGFsc28gYmUgaW4gdGhlCj4gPi0gKiBsb3cgcG93ZXIg bW9kZSB3aGVuIG5vIHBpcGVzIGFyZSBlbmFibGVkLCBzbyBkbyB0aGlzIGNoZWNrIGFueXdheS4g Ki8KPiA+LXN0YXRpYyB2b2lkIHNjcmVlbnNfZGlzYWJsZWRfc3VidGVzdChpbnQgZHJtX2ZkLCBk cm1Nb2RlUmVzUHRyIGRybV9yZXMpCj4gPi17Cj4gPi0Ja21zdGVzdF91bnNldF9hbGxfY3J0Y3Mo ZHJtX2ZkLCBkcm1fcmVzKTsKPiA+LQlpZ3RfYXNzZXJ0KGxwc3BfaXNfZW5hYmxlZChkcm1fZmQp KTsKPiA+KwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkxQU1A6IGVuYWJsZWQiKTsKPiA+ICB9Cj4gPi1z dGF0aWMgdWludDMyX3QgY3JlYXRlX2ZiKGludCBkcm1fZmQsIGludCB3aWR0aCwgaW50IGhlaWdo dCkKPiA+Ky8qCj4gPisgKiBUaGUgTFBTUCBtb2RlIGlzIGFsbCBhYm91dCBhbiBlbmFibGVkIHBp cGUsIGJ1dCB3ZSBleHBlY3QgdG8gYWxzbyBiZSBpbiB0aGUKPiA+KyAqIGxvdyBwb3dlciBtb2Rl IHdoZW4gbm8gcGlwZXMgYXJlIGVuYWJsZWQsIHNvIGRvIHRoaXMgY2hlY2sgYW55d2F5Lgo+ID4r ICovCj4gQWxsIHBpcGUgZGlzYWJsZWQgaW4gbm90IHNhbWUgYXMgbHBzcC4gSSBmZWVsIHRoZSBp ZGVhIGJlaGluZCBscHNwIGlzIHNpbmdsZQo+IHBpcGUgdXNhZ2Ugd2l0aCBsZWFzdCBwb3dlciBj b25zdW1wdGlvbiAuLi4gdGhlcmUgbWF5YmUgbm8gZGlzcGxheQo+IGNvbm5lY3RlZC4KWWVzIHlv dSBhcmUgY29ycmVjdCB0aGF0IGlzIHRoZSBzYW1lIGFib3ZlIGNvbW1lbnQgaGFzIG1lbnRpb25l ZCB0aGF0ICJMUFNQIG1vZGUKaXMgYWxsIGFib3V0IGFuIGVuYWJsZWQgcGlwZSIsIGJ1dCBoZXJl IHRlc3QgbWV0aG9kIGNoZWNrcyBmb3IgbHBzcCB3aGVuIGFsbCBzY3JlZW5zIAphcmUgZGlzYmFs ZWQgaS5lLiBhbGwgY3J0YyBhcmUgZGlzYWJsZWQsIHRoYXQgaXMgYWxtb3N0IHNhbWUgYXMgdGhl cmUgaXMgbm8gZGlzcGxheQpjb25uZWN0ZWQgd2l0aCByZXNwZWN0IHRvIHBvd2VyIGNvbnN1bXB0 aW9uLgo+ID4rc3RhdGljIHZvaWQgc2NyZWVuc19kaXNhYmxlZF9zdWJ0ZXN0KGRhdGFfdCAqZGF0 YSkKPiA+ICB7Cj4gPi0Jc3RydWN0IGlndF9mYiBmYjsKPiA+KwlpZ3Rfb3V0cHV0X3QgKm91dHB1 dDsKPiA+KwlpbnQgdmFsaWRfb3V0cHV0ID0gMDsKPiA+KwllbnVtIHBpcGUgcGlwZTsKPiA+Kwo+ ID4rCWZvcl9lYWNoX3BpcGVfd2l0aF9zaW5nbGVfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBwaXBl LCBvdXRwdXQpIHsKPiA+KwkJZGF0YS0+b3V0cHV0ID0gb3V0cHV0Owo+ID4rCQlpZ3Rfb3V0cHV0 X3NldF9waXBlKGRhdGEtPm91dHB1dCwgUElQRV9OT05FKTsKPiAKPiBQYXNzaW5nIFBJUEVfTk9O RSBhbmQgdGVzdGluZyBscHNwIG1heWJlIG5vdCB0aGUgcmlnaHQgdGhpbmcgaGVyZS4gV2UgbWF5 Cj4gbm90IGhhdmUgY29ubmVjdG9yIGJ1dCBuZWVkIHRvIGVuYWJsZSBhIHNpbmdsZSBwaXBlIHRv IHRlc3QgbHBzcC4uLsKgIHJ0PwpQSVBFX05PTkUgY29tbWl0IHdpbGwgZGlzYmFsZSBhIGNydGMs IHdoZW4gYWxsIGNydGMgZ2V0cyBkaXNiYWxlZCwgYWxsIHBvd2VyIHdlbGwKZXhjZXB0IFBHMSB3 aWxsIGJlIGRpc2JhbGVkLCBQRzEgaXMgY29udHJvbGxlZCBieSBETUMuClNvIHRlc3RpbmcgbHBz cCBpcyBoZXJlIGlzIG9uZSBvZiB0aGUgdGVzdCBjYXNlLCBpLmUgd2Ugd2FudCB0byB0ZXN0IHBv d2VyIHdlbGwgYXNzb2NpYXRlZAp0byBQSVBFX0Igc2hvdWxkIGJlIHR1cm5lZCBvZmYuIFRoZXJl IG1heSBiZSBhIGJ1ZyBpbiBkcml2ZXIgdGhhdCB3aGVuIGFsbCBjcnRjIGFyZSBkaXNiYWxlZApQ SVBFX0IgIGFzc29jaWF0ZWQgIHBvd2VyIGlzIG5vdCB0dXJuZWQgb2ZmLCB0aGF0IGlzIHdoYXQg dGhpcyB0ZXN0IHZhbGlkYXRlZC4KRW5hYmxpbmcgYSBwaXBlIGZvciBscHNwIHdpbGwgZ2V0IGNv dmVyZWQgaW4ga21zLWxwc3AgdGVzdC4KVGhhbmtzLApBbnNodW1hbiBHdXB0YS4KPiAKPiBSZWdh cmRzLAo+IAo+IEFuaW1lc2gKPiAKPiA+KwkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNw bGF5KTsKPiA+KwkJdmFsaWRfb3V0cHV0Kys7Cj4gPisJfQo+ID4tCXJldHVybiBpZ3RfY3JlYXRl X3BhdHRlcm5fZmIoZHJtX2ZkLCB3aWR0aCwgaGVpZ2h0LCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ ID4tCQkJCSAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwgJmZiKTsKPiA+KwlpZ3RfcmVx dWlyZV9mKHZhbGlkX291dHB1dCwgIk5vIGNvbm5lY3RlZCBvdXRwdXQgZm91bmRcbiIpOwo+ID4r CWlndF9hc3NlcnRfZihscHNwX2lzX2VuYWJsZWQoZGF0YSksICJscHNwIGlzIG5vdCBlbmFibGVk XG4lczpcbiVzXG4iLAo+ID4rCQkgICAgIFBXUl9ET01BSU5fSU5GTywgZGF0YS0+cHdyX2Rtbl9p bmZvID0KPiA+KwkJICAgICBpZ3Rfc3lzZnNfZ2V0KGRhdGEtPmRlYnVnZnNfZmQsIFBXUl9ET01B SU5fSU5GTykpOwo+ID4gIH0KPiA+LXN0YXRpYyB2b2lkIGVkcF9zdWJ0ZXN0KGludCBkcm1fZmQs IGRybU1vZGVSZXNQdHIgZHJtX3JlcywKPiA+LQkJCWRybU1vZGVDb25uZWN0b3JQdHIgKmRybV9j b25uZWN0b3JzLCB1aW50MzJfdCBkZXZpZCwKPiA+LQkJCWJvb2wgdXNlX3BhbmVsX2ZpdHRlcikK PiA+K3N0YXRpYyB2b2lkIHNldHVwX2xwc3Bfb3V0cHV0KGRhdGFfdCAqZGF0YSkKPiA+ICB7Cj4g Pi0JaW50IGksIHJjOwo+ID4tCXVpbnQzMl90IGNydGNfaWQgPSAwLCBidWZmZXJfaWQgPSAwOwo+ ID4tCWRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yID0gTlVMTDsKPiA+LQlkcm1Nb2RlTW9k ZUluZm9QdHIgbW9kZSA9IE5VTEw7Cj4gPi0JZHJtTW9kZU1vZGVJbmZvIHN0ZF8xMDI0X21vZGUg PSB7Cj4gPi0JCS5jbG9jayA9IDY1MDAwLAo+ID4tCQkuaGRpc3BsYXkgPSAxMDI0LAo+ID4tCQku aHN5bmNfc3RhcnQgPSAxMDQ4LAo+ID4tCQkuaHN5bmNfZW5kID0gMTE4NCwKPiA+LQkJLmh0b3Rh bCA9IDEzNDQsCj4gPi0JCS5oc2tldyA9IDAsCj4gPi0JCS52ZGlzcGxheSA9IDc2OCwKPiA+LQkJ LnZzeW5jX3N0YXJ0ID0gNzcxLAo+ID4tCQkudnN5bmNfZW5kID0gNzc3LAo+ID4tCQkudnRvdGFs ID0gODA2LAo+ID4tCQkudnNjYW4gPSAwLAo+ID4tCQkudnJlZnJlc2ggPSA2MCwKPiA+LQkJLmZs YWdzID0gMHhBLAo+ID4tCQkudHlwZSA9IDB4NDAsCj4gPi0JCS5uYW1lID0gIkN1c3RvbSAxMDI0 eDc2OCIsCj4gPi0JfTsKPiA+LQo+ID4tCWttc3Rlc3RfdW5zZXRfYWxsX2NydGNzKGRybV9mZCwg ZHJtX3Jlcyk7Cj4gPi0KPiA+LQlmb3IgKGkgPSAwOyBpIDwgZHJtX3Jlcy0+Y291bnRfY29ubmVj dG9yczsgaSsrKSB7Cj4gPi0JCWRybU1vZGVDb25uZWN0b3JQdHIgYyA9IGRybV9jb25uZWN0b3Jz W2ldOwo+ID4tCj4gPi0JCWlmIChjLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNU T1JfZURQKQo+ID4tCQkJY29udGludWU7Cj4gPi0JCWlmIChjLT5jb25uZWN0aW9uICE9IERSTV9N T0RFX0NPTk5FQ1RFRCkKPiA+LQkJCWNvbnRpbnVlOwo+ID4tCj4gPi0JCWlmICghdXNlX3BhbmVs X2ZpdHRlciAmJiBjLT5jb3VudF9tb2Rlcykgewo+ID4tCQkJY29ubmVjdG9yID0gYzsKPiA+LQkJ CW1vZGUgPSAmYy0+bW9kZXNbMF07Cj4gPi0JCQlicmVhazsKPiA+LQkJfQo+ID4tCQlpZiAodXNl X3BhbmVsX2ZpdHRlcikgewo+ID4tCQkJY29ubmVjdG9yID0gYzsKPiA+LQo+ID4tCQkJLyogVGhp cyBpcyBvbmUgb2YgdGhlIG1vZGVzIFhvcmcgY3JlYXRlcyBmb3IgcGFuZWxzLCBzbwo+ID4tCQkJ ICogaXQgc2hvdWxkIHdvcmsganVzdCBmaW5lLiBOb3RpY2UgdGhhdCBHZW5zIHRoYXQKPiA+LQkJ CSAqIHN1cHBvcnQgTFBTUCBhcmUgdG9vIG5ldyBmb3IgcGFuZWxzIHdpdGggbmF0aXZlCj4gPi0J CQkgKiAxMDI0eDc2OCByZXNvbHV0aW9uLCBzbyB0aGlzIHNob3VsZCBmb3JjZSB0aGUgcGFuZWwK PiA+LQkJCSAqIGZpdHRlci4gKi8KPiA+LQkJCWlndF9hc3NlcnQoYy0+Y291bnRfbW9kZXMgJiYK PiA+LQkJCQkgICBjLT5tb2Rlc1swXS5oZGlzcGxheSA+IDEwMjQpOwo+ID4tCQkJaWd0X2Fzc2Vy dChjLT5jb3VudF9tb2RlcyAmJgo+ID4tCQkJCSAgIGMtPm1vZGVzWzBdLnZkaXNwbGF5ID4gNzY4 KTsKPiA+LQkJCW1vZGUgPSAmc3RkXzEwMjRfbW9kZTsKPiA+LQkJCWJyZWFrOwo+ID4tCQl9Cj4g Pi0JfQo+ID4tCWlndF9yZXF1aXJlKGNvbm5lY3Rvcik7Cj4gPi0KPiA+LQljcnRjX2lkID0ga21z dGVzdF9maW5kX2NydGNfZm9yX2Nvbm5lY3Rvcihkcm1fZmQsIGRybV9yZXMsIGNvbm5lY3RvciwK PiA+LQkJCQkJCSAgMCk7Cj4gPi0JYnVmZmVyX2lkID0gY3JlYXRlX2ZiKGRybV9mZCwgbW9kZS0+ aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKPiA+LQo+ID4tCWlndF9hc3NlcnQoYnVmZmVyX2lk KTsKPiA+LQlpZ3RfYXNzZXJ0KGNvbm5lY3Rvcik7Cj4gPi0JaWd0X2Fzc2VydChtb2RlKTsKPiA+ LQo+ID4tCXJjID0gZHJtTW9kZVNldENydGMoZHJtX2ZkLCBjcnRjX2lkLCBidWZmZXJfaWQsIDAs IDAsCj4gPi0JCQkgICAgJmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLCAxLCBtb2RlKTsKPiA+LQlp Z3RfYXNzZXJ0X2VxKHJjLCAwKTsKPiA+LQo+ID4tCWlmICh1c2VfcGFuZWxfZml0dGVyKSB7Cj4g Pi0JCWlmIChJU19IQVNXRUxMKGRldmlkKSkKPiA+LQkJCWlndF9hc3NlcnQoIWxwc3BfaXNfZW5h YmxlZChkcm1fZmQpKTsKPiA+LQkJZWxzZQo+ID4tCQkJaWd0X2Fzc2VydChscHNwX2lzX2VuYWJs ZWQoZHJtX2ZkKSk7Cj4gPi0JfSBlbHNlIHsKPiA+LQkJaWd0X2Fzc2VydChscHNwX2lzX2VuYWJs ZWQoZHJtX2ZkKSk7Cj4gPi0JfQo+ID4rCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ID4rCj4gPisJ Lyogc2V0IG91dHB1dCBwaXBlID0gUElQRV9BIGZvciBMUFNQICovCj4gPisJaWd0X291dHB1dF9z ZXRfcGlwZShkYXRhLT5vdXRwdXQsIFBJUEVfQSk7Cj4gPisJcHJpbWFyeSA9IGlndF9vdXRwdXRf Z2V0X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LAo+ID4rCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7Cj4gPisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+KwlpZ3Rf Y3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJtX2ZkLAo+ID4rCQkJICAgICAgZGF0YS0+bW9kZS0+ aGRpc3BsYXksIGRhdGEtPm1vZGUtPnZkaXNwbGF5LAo+ID4rCQkJICAgICAgRFJNX0ZPUk1BVF9Y UkdCODg4OCwKPiA+KwkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gPisJCQkg ICAgICAmZGF0YS0+ZmIpOwo+ID4rCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZi KTsKPiA+KwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOwo+ID4gIH0KPiA+LXN0 YXRpYyB2b2lkIG5vbl9lZHBfc3VidGVzdChpbnQgZHJtX2ZkLCBkcm1Nb2RlUmVzUHRyIGRybV9y ZXMsCj4gPi0JCQkgICAgZHJtTW9kZUNvbm5lY3RvclB0ciAqZHJtX2Nvbm5lY3RvcnMpCj4gPitz dGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAoZGF0YV90ICpkYXRhKQo+ID4gIHsKPiA+LQlpbnQgaSwg cmM7Cj4gPi0JdWludDMyX3QgY3J0Y19pZCA9IDAsIGJ1ZmZlcl9pZCA9IDA7Cj4gPi0JZHJtTW9k ZUNvbm5lY3RvclB0ciBjb25uZWN0b3IgPSBOVUxMOwo+ID4tCWRybU1vZGVNb2RlSW5mb1B0ciBt b2RlID0gTlVMTDsKPiA+LQo+ID4tCWttc3Rlc3RfdW5zZXRfYWxsX2NydGNzKGRybV9mZCwgZHJt X3Jlcyk7Cj4gPi0KPiA+LQlmb3IgKGkgPSAwOyBpIDwgZHJtX3Jlcy0+Y291bnRfY29ubmVjdG9y czsgaSsrKSB7Cj4gPi0JCWRybU1vZGVDb25uZWN0b3JQdHIgYyA9IGRybV9jb25uZWN0b3JzW2ld Owo+ID4tCj4gPi0JCWlmIChjLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1Jf ZURQKQo+ID4tCQkJY29udGludWU7Cj4gPi0JCWlmIChjLT5jb25uZWN0aW9uICE9IERSTV9NT0RF X0NPTk5FQ1RFRCkKPiA+LQkJCWNvbnRpbnVlOwo+ID4tCj4gPi0JCWlmIChjLT5jb3VudF9tb2Rl cykgewo+ID4tCQkJY29ubmVjdG9yID0gYzsKPiA+LQkJCW1vZGUgPSAmYy0+bW9kZXNbMF07Cj4g Pi0JCQlicmVhazsKPiA+LQkJfQo+ID4tCX0KPiA+LQlpZ3RfcmVxdWlyZShjb25uZWN0b3IpOwo+ ID4tCj4gPi0JY3J0Y19pZCA9IGttc3Rlc3RfZmluZF9jcnRjX2Zvcl9jb25uZWN0b3IoZHJtX2Zk LCBkcm1fcmVzLCBjb25uZWN0b3IsCj4gPi0JCQkJCQkgIDApOwo+ID4tCWJ1ZmZlcl9pZCA9IGNy ZWF0ZV9mYihkcm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4gPi0KPiA+ LQlpZ3RfYXNzZXJ0KGJ1ZmZlcl9pZCk7Cj4gPi0JaWd0X2Fzc2VydChtb2RlKTsKPiA+LQo+ID4t CXJjID0gZHJtTW9kZVNldENydGMoZHJtX2ZkLCBjcnRjX2lkLCBidWZmZXJfaWQsIDAsIDAsCj4g Pi0JCQkgICAgJmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLCAxLCBtb2RlKTsKPiA+LQlpZ3RfYXNz ZXJ0X2VxKHJjLCAwKTsKPiA+LQo+ID4tCWlndF9hc3NlcnQoIWxwc3BfaXNfZW5hYmxlZChkcm1f ZmQpKTsKPiA+KwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+Kwo+ID4rCWlmICghZGF0YS0+b3V0 cHV0IHx8IGRhdGEtPm91dHB1dC0+cGVuZGluZ19waXBlID09IFBJUEVfTk9ORSkKPiA+KwkJcmV0 dXJuOwo+ID4rCj4gPisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+ b3V0cHV0LAo+ID4rCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gPisJaWd0X3Bs YW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+KwlpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEt Pm91dHB1dCwgUElQRV9OT05FKTsKPiA+KwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3Bs YXkpOwo+ID4rCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIpOwo+ID4rCWRh dGEtPm91dHB1dCA9IE5VTEw7Cj4gPiAgfQo+ID4tI2RlZmluZSBNQVhfQ09OTkVDVE9SUyAzMgo+ ID4rc3RhdGljIHZvaWQgdGVzdF9scHNwKGRhdGFfdCAqZGF0YSkKPiA+K3sKPiA+KwkvKiBMUFNQ IGlzIGxvdyBwb3dlciBzaW5nbGUgcGlwZSB1c2FnZXMgaS5lLiBQSVBFX0EgKi8KPiA+KwlpZ3Rf cmVxdWlyZShpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQoUElQRV9BLCBkYXRhLT5vdXRwdXQpKTsK PiA+KwlpZ3RfcmVxdWlyZV9mKGk5MTVfb3V0cHV0X2lzX2xwc3BfY2FwYWJsZShkYXRhLT5kcm1f ZmQsIGRhdGEtPm91dHB1dCksCj4gPisJCSAgICAgICJvdXRwdXQgaXMgbm90IGxwc3AgY2FwYWJs ZVxuIik7Cj4gPisKPiA+KwlkYXRhLT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShkYXRhLT5v dXRwdXQpOwo+ID4rCXNldHVwX2xwc3Bfb3V0cHV0KGRhdGEpOwo+ID4rCWlndF9hc3NlcnRfZihs cHNwX2lzX2VuYWJsZWQoZGF0YSksICIlczogbHBzcCBpcyBub3QgZW5hYmxlZFxuJXM6XG4lc1xu IiwKPiA+KwkJICAgICBkYXRhLT5vdXRwdXQtPm5hbWUsIFBXUl9ET01BSU5fSU5GTywgZGF0YS0+ cHdyX2Rtbl9pbmZvID0KPiA+KwkJICAgICBpZ3Rfc3lzZnNfZ2V0KGRhdGEtPmRlYnVnZnNfZmQs IFBXUl9ET01BSU5fSU5GTykpOwo+ID4rfQo+ID4taW50IGRybV9mZDsKPiA+LXVpbnQzMl90IGRl dmlkOwo+ID4tZHJtTW9kZVJlc1B0ciBkcm1fcmVzOwo+ID4tZHJtTW9kZUNvbm5lY3RvclB0ciBk cm1fY29ubmVjdG9yc1tNQVhfQ09OTkVDVE9SU107Cj4gPi1zdHJ1Y3QgaW50ZWxfbW1pb19kYXRh IG1taW9fZGF0YTsKPiA+K0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUaGVzZSB0ZXN0cyB2YWxpZGF0 ZXMgZGlzcGxheSBMb3cgUG93ZXIgU2luZ2xlIFBpcGUgY29uZmlndXJhdGlvbnMiKTsKPiA+ICBp Z3RfbWFpbgo+ID4gIHsKPiA+LQlpZ3RfZml4dHVyZSB7Cj4gPi0JCWludCBpOwo+ID4tCj4gPi0J CWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKPiA+LQkJaWd0 X3JlcXVpcmUoZHJtX2ZkID49IDApOwo+ID4tCj4gPi0JCWRldmlkID0gaW50ZWxfZ2V0X2RybV9k ZXZpZChkcm1fZmQpOwo+ID4tCj4gPi0JCWRybV9yZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRy bV9mZCk7Cj4gPi0JCWlndF9yZXF1aXJlKGRybV9yZXMpOwo+ID4tCQlpZ3RfYXNzZXJ0KGRybV9y ZXMtPmNvdW50X2Nvbm5lY3RvcnMgPD0gTUFYX0NPTk5FQ1RPUlMpOwo+ID4rCWRhdGFfdCBkYXRh ID0ge307Cj4gPi0JCWZvciAoaSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBp KyspCj4gPi0JCQlkcm1fY29ubmVjdG9yc1tpXSA9IGRybU1vZGVHZXRDb25uZWN0b3JDdXJyZW50 KGRybV9mZCwKPiA+LQkJCQkJCQlkcm1fcmVzLT5jb25uZWN0b3JzW2ldKTsKPiA+KwlpZ3RfZml4 dHVyZSB7Cj4gPisJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJf SU5URUwpOwo+ID4rCQlpZ3RfcmVxdWlyZShkYXRhLmRybV9mZCA+PSAwKTsKPiA+KwkJZGF0YS5k ZWJ1Z2ZzX2ZkID0gaWd0X2RlYnVnZnNfZGlyKGRhdGEuZHJtX2ZkKTsKPiA+KwkJaWd0X3JlcXVp cmUoZGF0YS5kZWJ1Z2ZzX2ZkID49IDApOwo+ID4gIAkJaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50 aW1lX3BtKCk7Cj4gPi0KPiA+LQkJaWd0X3JlcXVpcmUoc3VwcG9ydHNfbHBzcChkZXZpZCkpOwo+ ID4tCj4gPi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7Cj4gPi0KPiA+ICAJCWttc3Rlc3Rfc2V0X3Z0X2dy YXBoaWNzX21vZGUoKTsKPiA+KwkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0 YS5kcm1fZmQpOwo+ID4rCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEu ZHJtX2ZkKTsKPiA+KwkJaWd0X3JlcXVpcmUoaWd0X3BtX2RtY19sb2FkZWQoZGF0YS5kZWJ1Z2Zz X2ZkKSk7Cj4gPiAgCX0KPiA+KwlpZ3RfZGVzY3JpYmUoIlRoaXMgdGVzdCB2YWxpZGF0ZXMgbHBz cCB3aGlsZSBhbGwgY3J0YyBhcmUgZGlzYWJsZWQiKTsKPiA+ICAJaWd0X3N1YnRlc3QoInNjcmVl bnMtZGlzYWJsZWQiKQo+ID4tCQlzY3JlZW5zX2Rpc2FibGVkX3N1YnRlc3QoZHJtX2ZkLCBkcm1f cmVzKTsKPiA+LQlpZ3Rfc3VidGVzdCgiZWRwLW5hdGl2ZSIpCj4gPi0JCWVkcF9zdWJ0ZXN0KGRy bV9mZCwgZHJtX3JlcywgZHJtX2Nvbm5lY3RvcnMsIGRldmlkLCBmYWxzZSk7Cj4gPi0JaWd0X3N1 YnRlc3QoIm5vbi1lZHAiKQo+ID4tCQlub25fZWRwX3N1YnRlc3QoZHJtX2ZkLCBkcm1fcmVzLCBk cm1fY29ubmVjdG9ycyk7Cj4gPisJCXNjcmVlbnNfZGlzYWJsZWRfc3VidGVzdCgmZGF0YSk7Cj4g Pi0JaWd0X2ZpeHR1cmUgewo+ID4tCQlpbnQgaTsKPiA+KwlpZ3RfZGVzY3JpYmUoIlRoaXMgdGVz dCB2YWxpZGF0ZXMgbHBzcCBvbiBhbGwgY29ubmVjdGVkIG91dHB1dHMgb24gbG93IHBvd2VyIFBJ UEVfQSIpOwo+ID4rCWlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCJrbXMtbHBzcCIpIHsKPiA+ KwkJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLmRpc3BsYXk7Cj4gPisJCWlndF9vdXRw dXRfdCAqb3V0cHV0Owo+ID4tCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRh KTsKPiA+LQkJZm9yIChpID0gMDsgaSA8IGRybV9yZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykK PiA+LQkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsKPiA+LQkJZHJt TW9kZUZyZWVSZXNvdXJjZXMoZHJtX3Jlcyk7Cj4gPi0JCWNsb3NlKGRybV9mZCk7Cj4gPisJCWZv cl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7Cj4gPisJCQlpZ3RfZHlu YW1pY19mKCJrbXMtbHBzcC0lcyIsIG91dHB1dC0+bmFtZSkgewo+ID4rCQkJCWRhdGEub3V0cHV0 ID0gb3V0cHV0Owo+ID4rCQkJCXRlc3RfbHBzcCgmZGF0YSk7Cj4gPisJCQl9Cj4gPisKPiA+KwkJ CXRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gPisJCX0KPiA+Kwl9Cj4gPisKPiA+KwlpZ3RfZml4dHVy ZSB7Cj4gPisJCWZyZWUoZGF0YS5wd3JfZG1uX2luZm8pOwo+ID4rCQljbG9zZShkYXRhLmRybV9m ZCk7Cj4gPisJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7Cj4gPiAgCX0KPiA+ICB9 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=