From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 36FF56F80A for ; Thu, 19 Sep 2019 17:37:15 +0000 (UTC) From: Anshuman Gupta Date: Thu, 19 Sep 2019 23:00:28 +0530 Message-Id: <20190919173033.20962-2-anshuman.gupta@intel.com> In-Reply-To: <20190919173033.20962-1-anshuman.gupta@intel.com> References: <20190919173033.20962-1-anshuman.gupta@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v14 1/6] lib/igt_pm: igt lib helper routines to support DC5/6 tests 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: jyoti.r.yadav@intel.com, petri.latvala@intel.com List-ID: RnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBk b2VzIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byBsaWIvaWd0X3BtLmMKCi1kbWNfbG9hZGVkKCkg d2lsbCBiZSB1c2VkIGJ5IG5ldyB0ZXN0IGk5MTVfcG1fZGMuYyB3aGljaCB3aWxsIHZhbGlkYXRl CiBEaXNwbGF5IEMgU3RhdGVzLiBTbyBtb3ZpbmcgdGhlIHNhbWUgdG8gaWd0X3BtIGxpYnJhcnku CgotSW50cm9kdWNlZCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKCkgaW4gb3JkZXIgdG8gZGlzYWJs ZSBydW50aW1lIHN1c3BlbmQKIGZvciB0aGUgZnVuY3Rpb24gd2hpY2ggc3VwcG9ydCBkYzkuCgot Q2hhbmdlZCB0aGUgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpIGFu ZAogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKSBpbiBvcmRlciB0 byBzYXZlCiBhbmQgcmVzdG9yZSB0aGUgc2F0YSBsaW5rIHBvd2VyIHBvbGljeSBieSBhbiBleGl0 IGhhbmRsZXIuCgp2MjogU2ltcGxpZnkgdGhlIGNvbW1lbnQgc2VjdGlvbi4KdjM6IFJlbW92ZSAu IGZyb20gdGhlIHN1YmplY3QgbGluZS4KdjQ6IFJlYmFzZWQsIHJlc29sdmUgY29uZmxpY3RzIGlu IHBtX3JwbS5jCiAgICBJbmNsdWRlZCBwYXRjaCBzZXQgdmVyc2lvbiBjaGFuZ2UgbG9nLgp2NTog TGlzdGluZyBhY3R1YWwgY2hhbmdlIGluIHBhdGNoIHNldCBjaGFuZ2Vsb2cgdG8gbWFrZSByZXZp ZXcgZWFzaWVyLgp2NjogaWd0J3MgbGliIGFkZGVkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBydW50 aW1lIHN1c3BlbmQsCiAgICBjaGFuZ2UgaW4gY29tbWl0IGxvZy4gcmViYXNlZCBkdWUgdG8gdGVz dCBuYW1lIHBtX3JwbSBjaGFuZ2VkCiAgICB0byBpOTE1X3BtX3JwbS4Kdjc6IEFkZHJlc3NlZCBy ZXZpZXcgY29tbWVudCBieSBzYXZpbmcgUE9XRVJfRElSIHZhbHVlcyBpbgogICAgaWd0X2Rpc2Fi bGVfcnVudGltZV9wbSgpLiBbSW1yZV0Kdjg6IEFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnQs IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKICAgIGZ1bmN0aW9uIHRv IHJlc3RvcmUgdGhlIG9yaWdpbmFsIFNBVEEgbGluayBwb3dlciBwb2xpY3kgaWYgdGhpbmdzIGZh aWwKICAgIGJ5IHVzaW5nIGFuIGV4aXQgaGFuZGxlci4gW0ltcmVdCnY5OiBJR1QgZmFpbHVyZSBm aXh0dXJlIGluIGk5MTVfcG1fYmFja2xpZ2h0IGFuZCBpOTE1X3BtX3JwbS4KdjEwOlJldmlldyBj b21tZW50IGZpeHVwIGluIHNhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50CiAgICBsaWIgZnVuY3Rp b25zLiBbSW1yZV0KdjExOkFkZCBpZ3RfYXNzZXJ0X2ZkKHBtX3N0YXR1c19mZCkgaW4gaWd0X2Rp c2FibGVfcnVudGltZV9wbSgpLgogICAgW0ltcmUgJiBQZXRyaV0KdjEyOiBSZWZhY3RvciBpZ3Rf cG1fcGM4X3BsdXNfcmVzaWRlbmNpZXNfZW5hYmxlZCgpIGZyb20KICAgICBzdXBwb3J0c19wYzhf cGx1c19yZXNpZGVuY2llcygpLgogICAgIENoYW5nZWQgaWd0X2Rpc2FibGVfcnVudGltZV9wbSgp IHJldHVybiB0eXBlLiBbSW1yZV0KClNpZ25lZC1vZmYtYnk6IEp5b3RpIFlhZGF2IDxqeW90aS5y LnlhZGF2QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5zaHVtYW4gR3VwdGEgPGFuc2h1bWFu Lmd1cHRhQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVs LmNvbT4KLS0tCiBsaWIvaWd0X3BtLmMgICAgICAgICAgICAgICAgICAgfCAyMTUgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCiBsaWIvaWd0X3BtLmggICAgICAgICAgICAgICAgICAg fCAgIDcgKy0KIHRlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYyB8ICAgNiArLQogdGVzdHMv aTkxNS9pOTE1X3BtX3JwbS5jICAgICAgIHwgIDM5ICstLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAx NzkgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9w bS5jIGIvbGliL2lndF9wbS5jCmluZGV4IGZkMjIyNzNhLi42NGNlMjQwZSAxMDA2NDQKLS0tIGEv bGliL2lndF9wbS5jCisrKyBiL2xpYi9pZ3RfcG0uYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1 ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpZ3RfcG0uaCIKICNpbmNsdWRlICJpZ3RfYXV4Lmgi CisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCiAKIC8qKgogICogU0VDVElPTjppZ3RfcG0KQEAgLTU4 LDE2ICs1OSwzMCBAQCBlbnVtIHsKIAlQT0xJQ1lfTUlOX1BPV0VSID0gMgogfTsKIAorI2RlZmlu ZSBNU1JfUEtHX0NTVF9DT05GSUdfQ09OVFJPTAkweEUyCisvKgorICogQmVsb3cgUEtHIENTVCBs aW1pdCBtYXNrIGFuZCBQQzggYml0cyBhcmUgbWVhbnQgZm9yCisgKiBIU1csQkRXIFNLTCxJQ0wg YW5kIEdvbGRtb250IE1pY3JvYXJjaCBhbmQgZnV0dXJlIHBsYXRmb3Jtcy4KKyAqIFJlZmVyIElB IFMvVyBkZXZlbG9wZXJzIG1hbnVhbCB2b2wzYyBwYXJ0MyBjaGFwdGVyOjM1CisgKi8KKyNkZWZp bmUgIFBLR19DU1RfTElNSVRfTUFTSwkJMHhGCisjZGVmaW5lICBQS0dfQ1NUX0xJTUlUX0M4CQkw eDYKKwogI2RlZmluZSBNQVhfUEVSRk9STUFOQ0VfU1RSCSJtYXhfcGVyZm9ybWFuY2VcbiIKICNk ZWZpbmUgTUVESVVNX1BPV0VSX1NUUgkibWVkaXVtX3Bvd2VyXG4iCiAjZGVmaW5lIE1JTl9QT1dF Ul9TVFIJCSJtaW5fcG93ZXJcbiIKIC8qIFJlbWVtYmVyIHRvIGZpeCB0aGlzIGlmIGFkZGluZyBs b25nZXIgc3RyaW5ncyAqLwogI2RlZmluZSBNQVhfUE9MSUNZX1NUUkxFTglzdHJsZW4oTUFYX1BF UkZPUk1BTkNFX1NUUikKK2ludDhfdCAqX19zYXRhX3BtX3BvbGljaWVzOworaW50IF9fc2NzaV9o b3N0X2NudDsKIAogc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZl WzY0XTsKIHN0YXRpYyBjaGFyICogX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sX3BhdGg7 CiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xbNjRdOwogCitzdGF0 aWMgdm9pZCBfX2lndF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKGludCBzaWcpOworc3Rh dGljIHZvaWQgX19pZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lk KTsKKwogc3RhdGljIGludCBfX2lndF9wbV9hdWRpb19yZXN0b3JlX3J1bnRpbWVfcG0odm9pZCkK IHsKIAlpbnQgZmQ7CkBAIC0yODAsMzkgKzI5NSwyNiBAQCB2b2lkIGlndF9wbV9lbmFibGVfYXVk aW9fcnVudGltZV9wbSh2b2lkKQogCQlpZ3RfZGVidWcoIkZhaWxlZCB0byBlbmFibGUgYXVkaW8g cnVudGltZSBQTSEgKCVkKVxuIiwgLWVycik7CiB9CiAKLS8qKgotICogaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKLSAqCi0gKiBFbmFibGUgdGhlIG1pbl9wb3dlciBw b2xpY3kgZm9yIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50LgotICogV2l0aG91dCB0aGlzIHdl IGNhbm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUgcG93ZXIgc3RhdGVzLgotICoKLSAqIFdlIGRvbid0 IGhhdmUgYW55IGFzc2VydGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtIG1pZ2h0IG5vdCBo YXZlCi0gKiBhIFNBVEEgaG9zdC4KLSAqCi0gKiBSZXR1cm5zOgotICogQW4gb3BhcXVlIHBvaW50 ZXIgdG8gdGhlIGRhdGEgbmVlZGVkIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgdmFsdWVzCi0gKiBh ZnRlciB0aGUgdGVzdCBoYXMgdGVybWluYXRlZCwgb3IgTlVMTCBpZiBTQVRBIGxpbmsgcG93ZXIg bWFuYWdlbWVudAotICogaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBwb2ludGVyIHNob3VsZCBiZSBm cmVlZCB3aGVuIG5vIGxvbmdlciB1c2VkCi0gKiAodHlwaWNhbGx5IGFmdGVyIGhhdmluZyBjYWxs ZWQgcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpKS4KLSAqLwotaW50OF90ICpp Z3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCitzdGF0aWMgdm9p ZCBfX2lndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIHsKIAlp bnQgZmQsIGk7CiAJc3NpemVfdCBsZW47CiAJY2hhciAqYnVmOwogCWNoYXIgKmZpbGVfbmFtZTsK LQlpbnQ4X3QgKmxpbmtfcG1fcG9saWNpZXMgPSBOVUxMOworCWludDhfdCBwb2xpY3k7CiAKIAlm aWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwogCWJ1ZiA9IG1hbGxvYyhNQVhfUE9MSUNZX1NU UkxFTiArIDEpOwogCi0JZm9yIChpID0gMDsgOyBpKyspIHsKLQkJaW50OF90IHBvbGljeTsKLQor CWZvciAoX19zY3NpX2hvc3RfY250ID0gMDsgOyBfX3Njc2lfaG9zdF9jbnQrKykgewogCQlzbnBy aW50ZihmaWxlX25hbWUsIFBBVEhfTUFYLAogCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0 JWQvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeSIsCi0JCQkgaSk7CisJCQkgX19zY3NpX2hv c3RfY250KTsKIAorCQkvKgorCQkgKiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9uIG9w ZW4gc2luY2UgdGhlIHN5c3RlbQorCQkgKiBtaWdodCBub3QgaGF2ZSBhIFNBVEEgaG9zdC4KKwkJ ICovCiAJCWZkID0gb3BlbihmaWxlX25hbWUsIE9fUkRXUik7CiAJCWlmIChmZCA8IDApCiAJCQli cmVhazsKQEAgLTMzMiwxMiArMzM0LDI2IEBAIGludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQogCQllbHNlCiAJCQlwb2xpY3kgPSBQT0xJQ1lfVU5L Tk9XTjsKIAotCQlpZiAoIShpICUgMjU2KSkKLQkJCWxpbmtfcG1fcG9saWNpZXMgPSByZWFsbG9j KGxpbmtfcG1fcG9saWNpZXMsCi0JCQkJCQkgICAoaSAvIDI1NiArIDEpICogMjU2ICsgMSk7CisJ CWlmICghKF9fc2NzaV9ob3N0X2NudCAlIDI1NikpCisJCQlfX3NhdGFfcG1fcG9saWNpZXMgPSBy ZWFsbG9jKF9fc2F0YV9wbV9wb2xpY2llcywKKwkJCQkJCSAgICAgKF9fc2NzaV9ob3N0X2NudCAv IDI1NiArIDEpCisJCQkJCQkgICAgICogMjU2ICsgMSk7CisKKwkJX19zYXRhX3BtX3BvbGljaWVz W19fc2NzaV9ob3N0X2NudF0gPSBwb2xpY3k7CisJCWNsb3NlKGZkKTsKKwl9CisKKwlpZ3RfaW5z dGFsbF9leGl0X2hhbmRsZXIoX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcik7CisK Kwlmb3IgKGkgPSAwOyBpIDwgX19zY3NpX2hvc3RfY250OyBpKyspIHsKKwkJc25wcmludGYoZmls ZV9uYW1lLCBQQVRIX01BWCwKKwkJCSAiL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtf cG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAorCQkJIGkpOworCQlmZCA9IG9wZW4oZmlsZV9uYW1l LCBPX1JEV1IpOworCQlpZiAoZmQgPCAwKQorCQkJYnJlYWs7CiAKLQkJbGlua19wbV9wb2xpY2ll c1tpXSA9IHBvbGljeTsKLQkJbGlua19wbV9wb2xpY2llc1tpICsgMV0gPSAwOworCQlwb2xpY3kg PSBfX3NhdGFfcG1fcG9saWNpZXNbaV07CiAKIAkJLyogSWYgdGhlIHBvbGljeSBpcyBzb21ldGhp bmcgd2UgZG9uJ3Qga25vdyBhYm91dCwKIAkJICogZG9uJ3QgdG91Y2ggaXQsIHNpbmNlIHdlIG1p Z2h0IHBvdGVudGlhbGx5IGJyZWFrIHRoaW5ncy4KQEAgLTM1NSwzOSArMzcxLDI1IEBAIGludDhf dCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQogCX0KIAlm cmVlKGJ1Zik7CiAJZnJlZShmaWxlX25hbWUpOwotCi0JcmV0dXJuIGxpbmtfcG1fcG9saWNpZXM7 CiB9CiAKLS8qKgotICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6 Ci0gKiBAcG1fZGF0YTogQW4gb3BhcXVlIHBvaW50ZXIgd2l0aCBzYXZlZCBsaW5rIFBNIHBvbGlj aWVzOwotICogICAgICAgICAgIElmIE5VTEwgaXMgcGFzc2VkIHdlIGZvcmNlIGVuYWJsZSB0aGUg Im1heF9wZXJmb3JtYW5jZSIgcG9saWN5LgotICoKLSAqIFJlc3RvcmUgdGhlIGxpbmsgcG93ZXIg bWFuYWdlbWVudCBwb2xpY2llcyB0byB0aGUgdmFsdWVzCi0gKiBwcmlvciB0byBlbmFibGluZyBt aW5fcG93ZXIuCi0gKgotICogQ2F2ZWF0OiBJZiB0aGUgc3lzdGVtIHN1cHBvcnRzIGhvdHBsdWdn aW5nIGFuZCBob3RwbHVnZ2luZyB0YWtlcwotICogICAgICAgICBwbGFjZSBkdXJpbmcgb3VyIHRl c3Rpbmcgc28gdGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMKLSAqICAgICAgICAgd2UgbWln aHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhvc3RzLgotICovCi12b2lkIGln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KGludDhfdCAqcG1fZGF0YSkK LQorc3RhdGljIHZvaWQgX19pZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVu dCh2b2lkKQogewogCWludCBmZCwgaTsKIAljaGFyICpmaWxlX25hbWU7CiAKKwlpZiAoIV9fc2F0 YV9wbV9wb2xpY2llcykKKwkJcmV0dXJuOworCiAJLyogRGlzayBydW50aW1lIFBNIHBvbGljaWVz LiAqLwogCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7Ci0JZm9yIChpID0gMDsgOyBpKysp IHsKKwlmb3IgKGkgPSAwOyBpIDwgX19zY3NpX2hvc3RfY250OyBpKyspIHsKIAkJaW50OF90IHBv bGljeTsKIAotCQlpZiAoIXBtX2RhdGEpCi0JCQlwb2xpY3kgPSBQT0xJQ1lfTUFYX1BFUkZPUk1B TkNFOwotCQllbHNlIGlmIChwbV9kYXRhW2ldID09IFBPTElDWV9VTktOT1dOKQorCQlpZiAoX19z YXRhX3BtX3BvbGljaWVzW2ldID09IFBPTElDWV9VTktOT1dOKQogCQkJY29udGludWU7CiAJCWVs c2UKLQkJCXBvbGljeSA9IHBtX2RhdGFbaV07CisJCQlwb2xpY3kgPSBfX3NhdGFfcG1fcG9saWNp ZXNbaV07CiAKIAkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKIAkJCSAiL3N5cy9jbGFz cy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLApAQCAtNDIx LDcgKzQyMyw0OCBAQCB2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50KGludDhfdCAqcG1fZGF0YSkKIAkJY2xvc2UoZmQpOwogCX0KIAlmcmVlKGZpbGVfbmFtZSk7 CisJZnJlZShfX3NhdGFfcG1fcG9saWNpZXMpOworCV9fc2F0YV9wbV9wb2xpY2llcyA9IE5VTEw7 Cit9CisKKy8qKgorICogaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoK KyAqCisgKiBFbmFibGUgdGhlIG1pbl9wb3dlciBwb2xpY3kgZm9yIFNBVEEgbGluayBwb3dlciBt YW5hZ2VtZW50LgorICogV2l0aG91dCB0aGlzIHdlIGNhbm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUg cG93ZXIgc3RhdGVzLgorICovCit2b2lkIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQodm9pZCkKK3sKKwkvKiBDaGVjayBpZiBoYXMgYmVlbiBhbHJlYWR5IHNhdmVkLiAq LworCWlmIChfX3NhdGFfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKworCSBfX2lndF9wbV9lbmFi bGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKK30KKworLyoqCisgKiBpZ3RfcG1fcmVz dG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKKyAqCisgKiBSZXN0b3JlIHRoZSBsaW5r IHBvd2VyIG1hbmFnZW1lbnQgcG9saWNpZXMgdG8gdGhlIHZhbHVlcworICogcHJpb3IgdG8gZW5h YmxpbmcgbWluX3Bvd2VyLgorICoKKyAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBo b3RwbHVnZ2luZyBhbmQgaG90cGx1Z2dpbmcgdGFrZXMKKyAqICAgICAgICAgcGxhY2UgZHVyaW5n IG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCisgKiAgICAgICAg IHdlIG1pZ2h0IHJlc3RvcmUgdGhlIHNldHRpbmdzIHRvIHRoZSB3cm9uZyBob3N0cy4KKyAqLwor dm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQorewor CWlmICghX19zYXRhX3BtX3BvbGljaWVzKQorCQlyZXR1cm47CisKKwkgX19pZ3RfcG1fcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworfQorCitzdGF0aWMgdm9pZCBfX2lndF9w bV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKGludCBzaWcpCit7CisJX19pZ3RfcG1fcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwogfQorCiAjZGVmaW5lIFBPV0VSX0RJUiAi L3N5cy9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDowMi4wL3Bvd2VyIgogLyogV2UganVzdCBs ZWFrIHRoaXMgb24gZXhpdCAuLi4gKi8KIGludCBwbV9zdGF0dXNfZmQgPSAtMTsKQEAgLTU4NSw2 ICs2MjgsMzQgQEAgYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2b2lkKQogCXJldHVybiB0cnVl OwogfQogCisvKioKKyAqIGlndF9kaXNhYmxlX3J1bnRpbWVfcG06CisgKgorICogRGlzYWJsZSB0 aGUgcnVudGltZSBwbSBmb3IgaTkxNSBkZXZpY2UuCisgKiBpZ3RfZGlzYWJsZV9ydW50aW1lX3Bt IGFzc3VtZXMgdGhhdCBpZ3Rfc2V0dXBfcnVudGltZV9wbSBoYXMgYWxyZWFkeQorICogY2FsbGVk IHRvIHNhdmUgcnVudGltZSBhdXRvc3VzcGVuZCBhbmQgY29udHJvbCBhdHRyaWJ1dGVzLgorICov Cit2b2lkIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0odm9pZCkKK3sKKwlpbnQgZmQ7CisJc3NpemVf dCBzaXplOworCWNoYXIgYnVmWzZdOworCisJaWd0X2Fzc2VydF9mZChwbV9zdGF0dXNfZmQpOwor CisJLyogV2Uga25vdyB3ZSBzdXBwb3J0IHJ1bnRpbWUgUE0sIGxldCdzIHRyeSB0byBkaXNhYmxl IGl0IG5vdy4gKi8KKwlmZCA9IG9wZW4oUE9XRVJfRElSICIvY29udHJvbCIsIE9fUkRXUik7CisJ aWd0X2Fzc2VydF9mKGZkID49IDAsICJDYW4ndCBvcGVuICIgUE9XRVJfRElSICIvY29udHJvbFxu Iik7CisKKwlzaXplID0gd3JpdGUoZmQsICJvblxuIiwgMyk7CisJaWd0X2Fzc2VydChzaXplID09 IDMpOworCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7CisJc2l6ZSA9IHJlYWQoZmQsIGJ1ZiwgQVJS QVlfU0laRShidWYpKTsKKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7CisJaWd0X2Fzc2VydChzdHJu Y21wKGJ1ZiwgIm9uXG4iLCAzKSA9PSAwKTsKKwljbG9zZShmZCk7Cit9CisKIC8qKgogICogaWd0 X2dldF9ydW50aW1lX3BtX3N0YXR1czoKICAqCkBAIC02MjgsMyArNjk5LDUzIEBAIGJvb2wgaWd0 X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpCiB7 CiAJcmV0dXJuIGlndF93YWl0KGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXMoKSA9PSBzdGF0dXMs IDEwMDAwLCAxMDApOwogfQorCisvKioKKyAqIGRtY19sb2FkZWQ6CisgKiBAZGVidWdmczogZmQg dG8gdGhlIGRlYnVnZnMgZGlyLgorICoKKyAqIENoZWNrIHdoZXRoZXIgRE1DIEZXIGlzIGxvYWRl ZCBvciBub3QuIERNQyBGVyBpcyByZXF1aXJlIGZvciBmZXcgRGlzcGxheSBDCisgKiBzdGF0ZXMg bGlrZSBEQzUgYW5kIERDNi4gRlcgZG9lcyB0aGUgQ29udGV4dCBTYXZlIGFuZCBSZXN0b3JlIGR1 cmluZyBEaXNwbGF5CisgKiBDIFN0YXRlcyBlbnRyeSBhbmQgZXhpdC4KKyAqCisgKiBSZXR1cm5z OgorICogVHJ1ZSBpZiBETUMgRlcgaXMgbG9hZGVkIG90aGVyd2lzZSBmYWxzZS4KKyAqLworYm9v bCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcykKK3sKKwljaGFyIGJ1ZlsxNV07CisJaW50 IGxlbjsKKworCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJpOTE1X2RtY19pbmZvIiwg YnVmLCBzaXplb2YoYnVmKSAtIDEpOworCWlmIChsZW4gPCAwKQorCQlyZXR1cm4gdHJ1ZTsgLyog bm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLworCisJYnVmW2xlbl0gPSAnXDAn OworCisJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7CisJcmV0dXJuIHN0cnN0cihidWYsICJm dyBsb2FkZWQ6IHllcyIpOworfQorCisvKioKKyAqIGlndF9wbV9wYzhfcGx1c19yZXNpZGVuY2ll c19lbmFibGVkOgorICogQG1zcl9mZDogZmQgdG8gL2Rldi9jcHUvMC9tc3IKKyAqIENoZWNrIHdo ZXRoZXIgQklPUyBoYXMgZGlzYWJsZWQgdGhlIFBDOCBwYWNrYWdlIGRlZXBlciBzdGF0ZS4KKyAq CisgKiBSZXR1cm5zOgorICogVHJ1ZSBpZiBQQzgrIHBhY2thZ2UgZGVlcGVyIHN0YXRlIGVuYWJs ZWQgb24gbWFjaGluZSBvdGhlcndpc2UgZmFsc2UuCisgKi8KK2Jvb2wgaWd0X3BtX3BjOF9wbHVz X3Jlc2lkZW5jaWVzX2VuYWJsZWQoaW50IG1zcl9mZCkKK3sKKwlpbnQgcmM7CisJdWludDY0X3Qg dmFsOworCisJcmMgPSBwcmVhZChtc3JfZmQsICZ2YWwsIHNpemVvZih1aW50NjRfdCksIE1TUl9Q S0dfQ1NUX0NPTkZJR19DT05UUk9MKTsKKwlpZiAocmMgIT0gc2l6ZW9mKHZhbCkpCisJCXJldHVy biBmYWxzZTsKKwlpZiAoKHZhbCAmIFBLR19DU1RfTElNSVRfTUFTSykgPCBQS0dfQ1NUX0xJTUlU X0M4KSB7CisJCWlndF9pbmZvKCJQS0cgQy1zdGF0ZXMgbGltaXRlZCBiZWxvdyBQQzggYnkgdGhl IEJJT1NcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CmRpZmYg LS1naXQgYS9saWIvaWd0X3BtLmggYi9saWIvaWd0X3BtLmgKaW5kZXggMTBjYzY3OTQuLjdkYzI0 MTc0IDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmgKKysrIGIvbGliL2lndF9wbS5oCkBAIC0yNSw4 ICsyNSw4IEBACiAjZGVmaW5lIElHVF9QTV9ICiAKIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19y dW50aW1lX3BtKHZvaWQpOwotaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50KHZvaWQpOwotdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpOwordm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KHZvaWQpOwordm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudCh2b2lkKTsKIAogLyoqCiAgKiBpZ3RfcnVudGltZV9wbV9zdGF0dXM6CkBA IC00Nyw4ICs0NywxMSBAQCBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyB7CiB9OwogCiBib29s IGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpOwordm9pZCBpZ3RfZGlzYWJsZV9ydW50aW1lX3Bt KHZvaWQpOwogdm9pZCBpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpOwogZW51bSBpZ3RfcnVu dGltZV9wbV9zdGF0dXMgaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cyh2b2lkKTsKIGJvb2wgaWd0 X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpOwor Ym9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcyk7Citib29sIGlndF9wbV9wYzhfcGx1 c19yZXNpZGVuY2llc19lbmFibGVkKGludCBtc3JfZmQpOwogCiAjZW5kaWYgLyogSUdUX1BNX0gg Ki8KZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYyBiL3Rlc3RzL2k5 MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwppbmRleCA0YzFiZmY1Yi4uOWE1ZjRjMzcgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYworKysgYi90ZXN0cy9pOTE1L2k5MTVf cG1fYmFja2xpZ2h0LmMKQEAgLTQ3LDcgKzQ3LDYgQEAgc3RydWN0IGNvbnRleHQgewogI2RlZmlu ZSBGQURFU1BFRUQgMTAwIC8qIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN0ZXBzICovCiAKIElHVF9U RVNUX0RFU0NSSVBUSU9OKCJCYXNpYyBiYWNrbGlnaHQgc3lzZnMgdGVzdCIpOwotc3RhdGljIGlu dDhfdCAqcG1fZGF0YSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50ICpy ZXN1bHQsIGNvbnN0IGNoYXIgKmZuYW1lKQogewpAQCAtMjM1LDcgKzIzNCw3IEBAIGlndF9tYWlu CiAJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsKIAogCQlpZ3RfZGlzcGxheV9jb21t aXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRf TEVHQUNZKTsKLQkJcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQoKTsKKwkJaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwog CX0KIAogCWlndF9zdWJ0ZXN0KCJiYXNpYy1icmlnaHRuZXNzIikKQEAgLTI1NSw4ICsyNTQsNyBA QCBpZ3RfbWFpbgogCiAJCWlndF9kaXNwbGF5X2ZpbmkoJmRpc3BsYXkpOwogCQlpZ3RfcmVtb3Zl X2ZiKGRpc3BsYXkuZHJtX2ZkLCAmZmIpOwotCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsKLQkJZnJlZShwbV9kYXRhKTsKKwkJaWd0X3BtX3Jlc3Rv cmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAkJY2xvc2UoZGlzcGxheS5kcm1fZmQp OwogCX0KIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyBiL3Rlc3RzL2k5 MTUvaTkxNV9wbV9ycG0uYwppbmRleCAyMTY4ZmY3Mi4uMjBjNGZmOTAgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvaTkxNV9wbV9ycG0uYworKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKQEAg LTUyLDExICs1Miw2IEBACiAjaW5jbHVkZSAiaWd0X2RldmljZS5oIgogI2luY2x1ZGUgImlndF9l ZGlkLmgiCiAKLSNkZWZpbmUgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wJMHhFMgotLyogSFNX L0JEVzogKi8KLSNkZWZpbmUgIFBLR19DU1RfTElNSVRfTUFTSwkJMHhGCi0jZGVmaW5lICBQS0df Q1NUX0xJTUlUX0M4CQkweDYKLQogI2RlZmluZSBNU1JfUEM4X1JFUwkweDYzMAogI2RlZmluZSBN U1JfUEM5X1JFUwkweDYzMQogI2RlZmluZSBNU1JfUEMxMF9SRVMJMHg2MzIKQEAgLTEyMyw4ICsx MTgsNiBAQCBzdHJ1Y3QgbW9kZXNldF9wYXJhbXMgbHBzcF9tb2RlX3BhcmFtczsKIHN0cnVjdCBt b2Rlc2V0X3BhcmFtcyBub25fbHBzcF9tb2RlX3BhcmFtczsKIHN0cnVjdCBtb2Rlc2V0X3BhcmFt cyAqZGVmYXVsdF9tb2RlX3BhcmFtczsKIAotc3RhdGljIGludDhfdCAqcG1fZGF0YSA9IE5VTEw7 Ci0KIHN0YXRpYyBpbnQgbW9kcHJvYmUoY29uc3QgY2hhciAqZHJpdmVyKQogewogCXJldHVybiBp Z3Rfa21vZF9sb2FkKGRyaXZlciwgTlVMTCk7CkBAIC0xNDYsMTUgKzEzOSw3IEBAIHN0YXRpYyBi b29sIHN1cHBvcnRzX3BjOF9wbHVzX3Jlc2lkZW5jaWVzKHZvaWQpCiAJaWYgKHJjICE9IHNpemVv Zih2YWwpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyYyA9IHByZWFkKG1zcl9mZCwgJnZhbCwgc2l6 ZW9mKHVpbnQ2NF90KSwgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wpOwotCWlmIChyYyAhPSBz aXplb2YodmFsKSkKLQkJcmV0dXJuIGZhbHNlOwotCWlmICgodmFsICYgUEtHX0NTVF9MSU1JVF9N QVNLKSA8IFBLR19DU1RfTElNSVRfQzgpIHsKLQkJaWd0X2luZm8oIlBLRyBDLXN0YXRlcyBsaW1p dGVkIGJlbG93IFBDOCBieSB0aGUgQklPU1xuIik7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQly ZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gaWd0X3BtX3BjOF9wbHVzX3Jlc2lkZW5jaWVzX2VuYWJsZWQo bXNyX2ZkKTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IGdldF9yZXNpZGVuY3kodWludDMyX3QgdHlw ZSkKQEAgLTc1NSwyMSArNzQwLDYgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGM4KHZvaWQpCiAJaGFz X3BjOCA9IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRtY19sb2FkZWQodm9pZCkKLXsKLQljaGFy IGJ1ZlsxNV07Ci0JaW50IGxlbjsKLQotCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJp OTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwotCWlmIChsZW4gPCAwKQotCSAg ICByZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLwot Ci0JYnVmW2xlbl0gPSAnXDAnOwotCi0JaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7Ci0JcmV0 dXJuIHN0cnN0cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOwotfQotCiBzdGF0aWMgdm9pZCBkdW1w X2ZpbGUoaW50IGRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJY2hhciAqY29udGVudHM7 CkBAIC03OTYsNyArNzY2LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9pZCkK IAogCWluaXRfbW9kZV9zZXRfZGF0YSgmbXNfZGF0YSk7CiAKLQlwbV9kYXRhID0gaWd0X3BtX2Vu YWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCWlndF9wbV9lbmFibGVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAogCWhhc19ydW50aW1lX3BtID0gaWd0X3NldHVwX3J1 bnRpbWVfcG0oKTsKIAlzZXR1cF9wYzgoKTsKQEAgLTgwNCw3ICs3NzQsNyBAQCBzdGF0aWMgYm9v bCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQogCWlndF9pbmZvKCJSdW50aW1lIFBNIHN1cHBvcnQ6 ICVkXG4iLCBoYXNfcnVudGltZV9wbSk7CiAJaWd0X2luZm8oIlBDOCByZXNpZGVuY3kgc3VwcG9y dDogJWRcbiIsIGhhc19wYzgpOwogCWlndF9yZXF1aXJlKGhhc19ydW50aW1lX3BtKTsKLQlpZ3Rf cmVxdWlyZShkbWNfbG9hZGVkKCkpOworCWlndF9yZXF1aXJlKGlndF9wbV9kbWNfbG9hZGVkKGRl YnVnZnMpKTsKIAogb3V0OgogCWRpc2FibGVfYWxsX3NjcmVlbnMoJm1zX2RhdGEpOwpAQCAtODIx LDggKzc5MSw3IEBAIHN0YXRpYyB2b2lkIHRlYXJkb3duX2Vudmlyb25tZW50KHZvaWQpCiAKIAlp Z3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7CiAKLQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsKLQlmcmVlKHBtX2RhdGEpOworCWlndF9wbV9yZXN0b3Jl X3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAKIAlmaW5pX21vZGVfc2V0X2RhdGEoJm1z X2RhdGEpOwogCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==