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 C6D4D89E19 for ; Sun, 1 Sep 2019 14:23:08 +0000 (UTC) From: Anshuman Gupta Date: Sun, 1 Sep 2019 19:49:56 +0530 Message-Id: <20190901142001.11279-2-anshuman.gupta@intel.com> In-Reply-To: <20190901142001.11279-1-anshuman.gupta@intel.com> References: <20190901142001.11279-1-anshuman.gupta@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v13 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 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 c2FibGVfcnVudGltZV9wbSgpLgogICAgW0ltcmUgJiBQZXRyaV0KClNpZ25lZC1vZmYtYnk6IEp5 b3RpIFlhZGF2IDxqeW90aS5yLnlhZGF2QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5zaHVt YW4gR3VwdGEgPGFuc2h1bWFuLmd1cHRhQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X3BtLmMgICAg ICAgICAgICAgICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBs aWIvaWd0X3BtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHRlc3RzL2k5MTUvaTkxNV9w bV9iYWNrbGlnaHQuYyB8ICAgNiArLQogdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jICAgICAgIHwg IDI0ICstLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKaW5kZXggZmQy MjI3M2EuLmRkNTAyMmZjIDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysrIGIvbGliL2lndF9w bS5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiZHJtdGVzdC5oIgogI2luY2x1ZGUgImln dF9wbS5oIgogI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKIAog LyoqCiAgKiBTRUNUSU9OOmlndF9wbQpAQCAtNjMsMTEgKzY0LDE2IEBAIGVudW0gewogI2RlZmlu ZSBNSU5fUE9XRVJfU1RSCQkibWluX3Bvd2VyXG4iCiAvKiBSZW1lbWJlciB0byBmaXggdGhpcyBp ZiBhZGRpbmcgbG9uZ2VyIHN0cmluZ3MgKi8KICNkZWZpbmUgTUFYX1BPTElDWV9TVFJMRU4Jc3Ry bGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCitpbnQ4X3QgKl9fc2F0YV9wbV9wb2xpY2llczsKK2lu dCBfX3Njc2lfaG9zdF9jbnQ7CiAKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVf cG93ZXJfc2F2ZVs2NF07CiBzdGF0aWMgY2hhciAqIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29u dHJvbF9wYXRoOwogc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sWzY0 XTsKIAorc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQg c2lnKTsKK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQodm9pZCk7CisKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1l X3BtKHZvaWQpCiB7CiAJaW50IGZkOwpAQCAtMjgwLDM5ICsyODYsMjYgQEAgdm9pZCBpZ3RfcG1f ZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCkKIAkJaWd0X2RlYnVnKCJGYWlsZWQgdG8gZW5h YmxlIGF1ZGlvIHJ1bnRpbWUgUE0hICglZClcbiIsIC1lcnIpOwogfQogCi0vKioKLSAqIGlndF9w bV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Ci0gKgotICogRW5hYmxlIHRoZSBt aW5fcG93ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KLSAqIFdpdGhv dXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRlcy4KLSAqCi0g KiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbSBt aWdodCBub3QgaGF2ZQotICogYSBTQVRBIGhvc3QuCi0gKgotICogUmV0dXJuczoKLSAqIEFuIG9w YXF1ZSBwb2ludGVyIHRvIHRoZSBkYXRhIG5lZWRlZCB0byByZXN0b3JlIHRoZSBkZWZhdWx0IHZh bHVlcwotICogYWZ0ZXIgdGhlIHRlc3QgaGFzIHRlcm1pbmF0ZWQsIG9yIE5VTEwgaWYgU0FUQSBs aW5rIHBvd2VyIG1hbmFnZW1lbnQKLSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgcG9pbnRlciBz aG91bGQgYmUgZnJlZWQgd2hlbiBubyBsb25nZXIgdXNlZAotICogKHR5cGljYWxseSBhZnRlciBo YXZpbmcgY2FsbGVkIHJlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKSkuCi0gKi8K LWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQor c3RhdGljIHZvaWQgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpCiB7CiAJaW50IGZkLCBpOwogCXNzaXplX3QgbGVuOwogCWNoYXIgKmJ1ZjsKIAljaGFyICpm aWxlX25hbWU7Ci0JaW50OF90ICpsaW5rX3BtX3BvbGljaWVzID0gTlVMTDsKKwlpbnQ4X3QgcG9s aWN5OwogCiAJZmlsZV9uYW1lID0gbWFsbG9jKFBBVEhfTUFYKTsKIAlidWYgPSBtYWxsb2MoTUFY X1BPTElDWV9TVFJMRU4gKyAxKTsKIAotCWZvciAoaSA9IDA7IDsgaSsrKSB7Ci0JCWludDhfdCBw b2xpY3k7Ci0KKwlmb3IgKF9fc2NzaV9ob3N0X2NudCA9IDA7IDsgX19zY3NpX2hvc3RfY250Kysp IHsKIAkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKIAkJCSAiL3N5cy9jbGFzcy9zY3Np X2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAotCQkJIGkpOworCQkJ IF9fc2NzaV9ob3N0X2NudCk7CiAKKwkJLyoKKwkJICogV2UgZG9uJ3QgaGF2ZSBhbnkgYXNzZXJ0 aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0KKwkJICogbWlnaHQgbm90IGhhdmUgYSBTQVRB IGhvc3QuCisJCSAqLwogCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOwogCQlpZiAoZmQg PCAwKQogCQkJYnJlYWs7CkBAIC0zMzIsMTIgKzMyNSwyNiBAQCBpbnQ4X3QgKmlndF9wbV9lbmFi bGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIAkJZWxzZQogCQkJcG9saWN5ID0g UE9MSUNZX1VOS05PV047CiAKLQkJaWYgKCEoaSAlIDI1NikpCi0JCQlsaW5rX3BtX3BvbGljaWVz ID0gcmVhbGxvYyhsaW5rX3BtX3BvbGljaWVzLAotCQkJCQkJICAgKGkgLyAyNTYgKyAxKSAqIDI1 NiArIDEpOworCQlpZiAoIShfX3Njc2lfaG9zdF9jbnQgJSAyNTYpKQorCQkJX19zYXRhX3BtX3Bv bGljaWVzID0gcmVhbGxvYyhfX3NhdGFfcG1fcG9saWNpZXMsCisJCQkJCQkgICAgIChfX3Njc2lf aG9zdF9jbnQgLyAyNTYgKyAxKQorCQkJCQkJICAgICAqIDI1NiArIDEpOworCisJCV9fc2F0YV9w bV9wb2xpY2llc1tfX3Njc2lfaG9zdF9jbnRdID0gcG9saWN5OworCQljbG9zZShmZCk7CisJfQog Ci0JCWxpbmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7Ci0JCWxpbmtfcG1fcG9saWNpZXNbaSAr IDFdID0gMDsKKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIoX19pZ3RfcG1fc2F0YV9saW5rX3Bt X2V4aXRfaGFuZGxlcik7CisKKwlmb3IgKGkgPSAwOyBpIDwgX19zY3NpX2hvc3RfY250OyBpKysp IHsKKwkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKKwkJCSAiL3N5cy9jbGFzcy9zY3Np X2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAorCQkJIGkpOworCQlm ZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOworCQlpZiAoZmQgPCAwKQorCQkJYnJlYWs7CisK KwkJcG9saWN5ID0gX19zYXRhX3BtX3BvbGljaWVzW2ldOwogCiAJCS8qIElmIHRoZSBwb2xpY3kg aXMgc29tZXRoaW5nIHdlIGRvbid0IGtub3cgYWJvdXQsCiAJCSAqIGRvbid0IHRvdWNoIGl0LCBz aW5jZSB3ZSBtaWdodCBwb3RlbnRpYWxseSBicmVhayB0aGluZ3MuCkBAIC0zNTUsMzkgKzM2Miwy NSBAQCBpbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9p ZCkKIAl9CiAJZnJlZShidWYpOwogCWZyZWUoZmlsZV9uYW1lKTsKLQotCXJldHVybiBsaW5rX3Bt X3BvbGljaWVzOwogfQogCi0vKioKLSAqIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50OgotICogQHBtX2RhdGE6IEFuIG9wYXF1ZSBwb2ludGVyIHdpdGggc2F2ZWQgbGlu ayBQTSBwb2xpY2llczsKLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBhc3NlZCB3ZSBmb3JjZSBl bmFibGUgdGhlICJtYXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KLSAqCi0gKiBSZXN0b3JlIHRoZSBs aW5rIHBvd2VyIG1hbmFnZW1lbnQgcG9saWNpZXMgdG8gdGhlIHZhbHVlcwotICogcHJpb3IgdG8g ZW5hYmxpbmcgbWluX3Bvd2VyLgotICoKLSAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0 cyBob3RwbHVnZ2luZyBhbmQgaG90cGx1Z2dpbmcgdGFrZXMKLSAqICAgICAgICAgcGxhY2UgZHVy aW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCi0gKiAgICAg ICAgIHdlIG1pZ2h0IHJlc3RvcmUgdGhlIHNldHRpbmdzIHRvIHRoZSB3cm9uZyBob3N0cy4KLSAq Lwotdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3Qg KnBtX2RhdGEpCi0KK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQodm9pZCkKIHsKIAlpbnQgZmQsIGk7CiAJY2hhciAqZmlsZV9uYW1lOwogCisJ aWYgKCFfX3NhdGFfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKwogCS8qIERpc2sgcnVudGltZSBQ TSBwb2xpY2llcy4gKi8KIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwotCWZvciAoaSA9 IDA7IDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IF9fc2NzaV9ob3N0X2NudDsgaSsrKSB7CiAJ CWludDhfdCBwb2xpY3k7CiAKLQkJaWYgKCFwbV9kYXRhKQotCQkJcG9saWN5ID0gUE9MSUNZX01B WF9QRVJGT1JNQU5DRTsKLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJQ1lfVU5LTk9XTikK KwkJaWYgKF9fc2F0YV9wbV9wb2xpY2llc1tpXSA9PSBQT0xJQ1lfVU5LTk9XTikKIAkJCWNvbnRp bnVlOwogCQllbHNlCi0JCQlwb2xpY3kgPSBwbV9kYXRhW2ldOworCQkJcG9saWN5ID0gX19zYXRh X3BtX3BvbGljaWVzW2ldOwogCiAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCiAJCQkg Ii9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5 IiwKQEAgLTQyMSw3ICs0MTQsNDkgQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCiAJCWNsb3NlKGZkKTsKIAl9CiAJZnJlZShm aWxlX25hbWUpOworCWZyZWUoX19zYXRhX3BtX3BvbGljaWVzKTsKKwlfX3NhdGFfcG1fcG9saWNp ZXMgPSBOVUxMOworfQorCisvKioKKyAqIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQ6CisgKgorICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZvciBTQVRBIGxp bmsgcG93ZXIgbWFuYWdlbWVudC4KKyAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVl cCBydW50aW1lIHBvd2VyIHN0YXRlcy4KKyAqIFJldHVybnM6IFZvaWQKKyAqLwordm9pZCBpZ3Rf cG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCit7CisJLyogQ2hlY2sg aWYgaGFzIGJlZW4gYWxyZWFkeSBzYXZlZC4gKi8KKwlpZiAoX19zYXRhX3BtX3BvbGljaWVzKQor CQlyZXR1cm47CisKKwkgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KCk7CiB9CisKKy8qKgorICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQ6CisgKgorICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRv IHRoZSB2YWx1ZXMKKyAqIHByaW9yIHRvIGVuYWJsaW5nIG1pbl9wb3dlci4KKyAqCisgKiBDYXZl YXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRh a2VzCisgKiAgICAgICAgIHBsYWNlIGR1cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0 cyBjaGFuZ2UgbnVtYmVycworICogICAgICAgICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5n cyB0byB0aGUgd3JvbmcgaG9zdHMuCisgKi8KK3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKK3sKKwlpZiAoIV9fc2F0YV9wbV9wb2xpY2llcykKKwkJ cmV0dXJuOworCisJIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo KTsKK30KKworc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihp bnQgc2lnKQoreworCV9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo KTsKK30KKwogI2RlZmluZSBQT1dFUl9ESVIgIi9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6 MDA6MDIuMC9wb3dlciIKIC8qIFdlIGp1c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCiBpbnQg cG1fc3RhdHVzX2ZkID0gLTE7CkBAIC01ODUsNiArNjIwLDM5IEBAIGJvb2wgaWd0X3NldHVwX3J1 bnRpbWVfcG0odm9pZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoqCisgKiBpZ3RfZGlzYWJsZV9y dW50aW1lX3BtOgorICoKKyAqIERpc2FibGUgdGhlIHJ1bnRpbWUgcG0gZm9yIGk5MTUgZGV2aWNl LgorICogaWd0X2Rpc2FibGVfcnVudGltZV9wbSBhc3N1bWVzIHRoYXQgaWd0X3NldHVwX3J1bnRp bWVfcG0gaGFzIGFscmVhZHkKKyAqIGNhbGxlZCB0byBzYXZlIHJ1bnRpbWUgYXV0b3N1c3BlbmQg YW5kIGNvbnRyb2wgYXR0cmlidXRlcy4KKyAqCisgKiBSZXR1cm5zOgorICogVHJ1ZSBpZiBydW50 aW1lIHBtIGlzIGRpc2FibGVkLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK2Jvb2wgaWd0X2Rpc2Fi bGVfcnVudGltZV9wbSh2b2lkKQoreworCWludCBmZDsKKwlzc2l6ZV90IHNpemU7CisJY2hhciBi dWZbNl07CisKKwlpZ3RfYXNzZXJ0X2ZkKHBtX3N0YXR1c19mZCk7CisKKwkvKiBXZSBrbm93IHdl IHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5IHRvIGRpc2FibGUgaXQgbm93LiAqLworCWZk ID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwgT19SRFdSKTsKKwlpZ3RfYXNzZXJ0X2YoZmQg Pj0gMCwgIkNhbid0IG9wZW4gIiBQT1dFUl9ESVIgIi9jb250cm9sXG4iKTsKKworCXNpemUgPSB3 cml0ZShmZCwgIm9uXG4iLCAzKTsKKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7CisJbHNlZWsoZmQs IDAsIFNFRUtfU0VUKTsKKwlzaXplID0gcmVhZChmZCwgYnVmLCBBUlJBWV9TSVpFKGJ1ZikpOwor CWlndF9hc3NlcnQoc2l6ZSA9PSAzKTsKKwlpZ3RfYXNzZXJ0KHN0cm5jbXAoYnVmLCAib25cbiIs IDMpID09IDApOworCWNsb3NlKGZkKTsKKworCXJldHVybiB0cnVlOworfQorCiAvKioKICAqIGln dF9nZXRfcnVudGltZV9wbV9zdGF0dXM6CiAgKgpAQCAtNjI4LDMgKzY5NiwyOSBAQCBib29sIGln dF93YWl0X2Zvcl9wbV9zdGF0dXMoZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgc3RhdHVzKQog ewogCXJldHVybiBpZ3Rfd2FpdChpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKCkgPT0gc3RhdHVz LCAxMDAwMCwgMTAwKTsKIH0KKworLyoqCisgKiBkbWNfbG9hZGVkOgorICogQGRlYnVnZnM6IGZk IHRvIHRoZSBkZWJ1Z2ZzIGRpci4KKworICogQ2hlY2sgd2hldGhlciBETUMgRlcgaXMgbG9hZGVk IG9yIG5vdC4gRE1DIEZXIGlzIHJlcXVpcmUgZm9yIGZldyBEaXNwbGF5IEMKKyAqIHN0YXRlcyBs aWtlIERDNSBhbmQgREM2LiBGVyBkb2VzIHRoZSBDb250ZXh0IFNhdmUgYW5kIFJlc3RvcmUgZHVy aW5nIERpc3BsYXkKKyAqIEMgU3RhdGVzIGVudHJ5IGFuZCBleGl0LgorICoKKyAqIFJldHVybnM6 CisgKiBUcnVlIGlmIERNQyBGVyBpcyBsb2FkZWQgb3RoZXJ3aXNlIGZhbHNlLgorICovCitib29s IGlndF9wbV9kbWNfbG9hZGVkKGludCBkZWJ1Z2ZzKQoreworCWNoYXIgYnVmWzE1XTsKKwlpbnQg bGVuOworCisJbGVuID0gaWd0X3N5c2ZzX3JlYWQoZGVidWdmcywgImk5MTVfZG1jX2luZm8iLCBi dWYsIHNpemVvZihidWYpIC0gMSk7CisJaWYgKGxlbiA8IDApCisJCXJldHVybiB0cnVlOyAvKiBu byBDU1Igc3VwcG9ydCwgbm8gRE1DIHJlcXVpcmVtZW50ICovCisKKwlidWZbbGVuXSA9ICdcMCc7 CisKKwlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVmKTsKKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3 IGxvYWRlZDogeWVzIik7Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmggYi9saWIvaWd0X3Bt LmgKaW5kZXggMTBjYzY3OTQuLjk3OWIzNDYzIDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmgKKysr IGIvbGliL2lndF9wbS5oCkBAIC0yNSw4ICsyNSw4IEBACiAjZGVmaW5lIElHVF9QTV9ICiAKIHZv aWQgaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpOwotaW50OF90ICppZ3RfcG1f ZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwotdm9pZCBpZ3RfcG1fcmVz dG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpOwordm9pZCBp Z3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwordm9pZCBpZ3Rf cG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsKIAogLyoqCiAgKiBp Z3RfcnVudGltZV9wbV9zdGF0dXM6CkBAIC00Nyw4ICs0NywxMCBAQCBlbnVtIGlndF9ydW50aW1l X3BtX3N0YXR1cyB7CiB9OwogCiBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpOworYm9v bCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZvaWQpOwogdm9pZCBpZ3RfcmVzdG9yZV9ydW50aW1l X3BtKHZvaWQpOwogZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgaWd0X2dldF9ydW50aW1lX3Bt X3N0YXR1cyh2b2lkKTsKIGJvb2wgaWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50 aW1lX3BtX3N0YXR1cyBzdGF0dXMpOworYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdm cyk7CiAKICNlbmRpZiAvKiBJR1RfUE1fSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1 X3BtX2JhY2tsaWdodC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCmluZGV4IDRj MWJmZjViLi45YTVmNGMzNyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdo dC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwpAQCAtNDcsNyArNDcsNiBA QCBzdHJ1Y3QgY29udGV4dCB7CiAjZGVmaW5lIEZBREVTUEVFRCAxMDAgLyogbWlsbGlzZWNvbmRz IGJldHdlZW4gc3RlcHMgKi8KIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJhc2ljIGJhY2tsaWdo dCBzeXNmcyB0ZXN0Iik7Ci1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0gTlVMTDsKIAogc3RhdGlj IGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAqZm5hbWUpCiB7CkBA IC0yMzUsNyArMjM0LDcgQEAgaWd0X21haW4KIAkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAm ZmIpOwogCiAJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRpc3BsYXksIGRpc3BsYXkuaXNfYXRvbWlj ID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwotCQlwbV9kYXRhID0gaWd0X3BtX2Vu YWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCQlpZ3RfcG1fZW5hYmxlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAJfQogCiAJaWd0X3N1YnRlc3QoImJhc2ljLWJyaWdo dG5lc3MiKQpAQCAtMjU1LDggKzI1NCw3IEBAIGlndF9tYWluCiAKIAkJaWd0X2Rpc3BsYXlfZmlu aSgmZGlzcGxheSk7CiAJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1fZmQsICZmYik7Ci0JCWln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHBtX2RhdGEpOwotCQlmcmVl KHBtX2RhdGEpOworCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgp OwogCQljbG9zZShkaXNwbGF5LmRybV9mZCk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkx NS9pOTE1X3BtX3JwbS5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCmluZGV4IDIxNjhmZjcy Li42ODc5YzUxMyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCisrKyBiL3Rl c3RzL2k5MTUvaTkxNV9wbV9ycG0uYwpAQCAtMTIzLDggKzEyMyw2IEBAIHN0cnVjdCBtb2Rlc2V0 X3BhcmFtcyBscHNwX21vZGVfcGFyYW1zOwogc3RydWN0IG1vZGVzZXRfcGFyYW1zIG5vbl9scHNw X21vZGVfcGFyYW1zOwogc3RydWN0IG1vZGVzZXRfcGFyYW1zICpkZWZhdWx0X21vZGVfcGFyYW1z OwogCi1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0gTlVMTDsKLQogc3RhdGljIGludCBtb2Rwcm9i ZShjb25zdCBjaGFyICpkcml2ZXIpCiB7CiAJcmV0dXJuIGlndF9rbW9kX2xvYWQoZHJpdmVyLCBO VUxMKTsKQEAgLTc1NSwyMSArNzUzLDYgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGM4KHZvaWQpCiAJ aGFzX3BjOCA9IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRtY19sb2FkZWQodm9pZCkKLXsKLQlj aGFyIGJ1ZlsxNV07Ci0JaW50IGxlbjsKLQotCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMs ICJpOTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwotCWlmIChsZW4gPCAwKQot CSAgICByZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAq LwotCi0JYnVmW2xlbl0gPSAnXDAnOwotCi0JaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7Ci0J cmV0dXJuIHN0cnN0cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOwotfQotCiBzdGF0aWMgdm9pZCBk dW1wX2ZpbGUoaW50IGRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJY2hhciAqY29udGVu dHM7CkBAIC03OTYsNyArNzc5LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9p ZCkKIAogCWluaXRfbW9kZV9zZXRfZGF0YSgmbXNfZGF0YSk7CiAKLQlwbV9kYXRhID0gaWd0X3Bt X2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCWlndF9wbV9lbmFibGVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAogCWhhc19ydW50aW1lX3BtID0gaWd0X3NldHVw X3J1bnRpbWVfcG0oKTsKIAlzZXR1cF9wYzgoKTsKQEAgLTgwNCw3ICs3ODcsNyBAQCBzdGF0aWMg Ym9vbCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQogCWlndF9pbmZvKCJSdW50aW1lIFBNIHN1cHBv cnQ6ICVkXG4iLCBoYXNfcnVudGltZV9wbSk7CiAJaWd0X2luZm8oIlBDOCByZXNpZGVuY3kgc3Vw cG9ydDogJWRcbiIsIGhhc19wYzgpOwogCWlndF9yZXF1aXJlKGhhc19ydW50aW1lX3BtKTsKLQlp Z3RfcmVxdWlyZShkbWNfbG9hZGVkKCkpOworCWlndF9yZXF1aXJlKGlndF9wbV9kbWNfbG9hZGVk KGRlYnVnZnMpKTsKIAogb3V0OgogCWRpc2FibGVfYWxsX3NjcmVlbnMoJm1zX2RhdGEpOwpAQCAt ODIxLDggKzgwNCw3IEBAIHN0YXRpYyB2b2lkIHRlYXJkb3duX2Vudmlyb25tZW50KHZvaWQpCiAK IAlpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7CiAKLQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtf cG93ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsKLQlmcmVlKHBtX2RhdGEpOworCWlndF9wbV9yZXN0 b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAKIAlmaW5pX21vZGVfc2V0X2RhdGEo Jm1zX2RhdGEpOwogCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldg==