From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A5ED6EC4D for ; Thu, 12 Sep 2019 08:17:58 +0000 (UTC) From: Jeevan B Date: Thu, 12 Sep 2019 13:46:31 +0530 Message-Id: <1568276198-6363-2-git-send-email-jeevan.b@intel.com> In-Reply-To: <1568276198-6363-1-git-send-email-jeevan.b@intel.com> References: <1568276198-6363-1-git-send-email-jeevan.b@intel.com> Subject: [igt-dev] [PATCH i-g-t 1/8] lib/igt_pm: igt lib helper routines to support DC5/6 tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 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 Yadav 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 c2FibGVfcnVudGltZV9wbSgpLgogICAgW0ltcmUgJiBQZXRyaV0KdjEyOiBSZWZhY3RvciBpc19i aW9zX2xpbWl0c19wYzhfcGx1c19yZXNpZGVuY2llcygpIGZyb20KICAgICBzdXBwb3J0c19wYzhf cGx1c19yZXNpZGVuY2llcygpLgogICAgIENoYW5nZWQgaWd0X2Rpc2FibGVfcnVudGltZV9wbSgp cmV0dXJuIHR5cGUuIFtJbXJlXQoKU2lnbmVkLW9mZi1ieTogSnlvdGkgWWFkYXYgPGp5b3RpLnIu eWFkYXZAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4u Z3VwdGFAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfcG0uYyAgICAgICAgICAgICAgICAgICB8IDIx NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogbGliL2lndF9wbS5o ICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0 LmMgfCAgIDYgKy0KIHRlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyAgICAgICB8ICAzOSArLS0tLS0t LQogNCBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGliL2lndF9wbS5jIGIvbGliL2lndF9wbS5jCmluZGV4IGZkMjIyNzMuLjU0 MGE5ZjkgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcG0uYworKysgYi9saWIvaWd0X3BtLmMKQEAgLTM4 LDYgKzM4LDcgQEAKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAjaW5jbHVkZSAiaWd0X3BtLmgiCiAj aW5jbHVkZSAiaWd0X2F1eC5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgogCiAvKioKICAqIFNF Q1RJT046aWd0X3BtCkBAIC01OCwxNiArNTksMzAgQEAgZW51bSB7CiAJUE9MSUNZX01JTl9QT1dF UiA9IDIKIH07CiAKKyNkZWZpbmUgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wJMHhFMgorLyoK KyAqIEJlbG93IFBLRyBDU1QgbGltaXQgbWFzayBhbmQgUEM4IGJpdHMgYXJlIG1lYW50IGZvcgor ICogSFNXLEJEVyBTS0wsSUNMIGFuZCBHb2xkbW9udCBNaWNyb2FyY2ggYW5kIGZ1dHVyZSBwbGF0 Zm9ybXMuCisgKiBSZWZlciBJQSBTL1cgZGV2ZWxvcGVycyBtYW51YWwgdm9sM2MgcGFydDMgY2hh cHRlcjozNQorICovCisjZGVmaW5lICBQS0dfQ1NUX0xJTUlUX01BU0sJCTB4RgorI2RlZmluZSAg UEtHX0NTVF9MSU1JVF9DOAkJMHg2CisKICNkZWZpbmUgTUFYX1BFUkZPUk1BTkNFX1NUUgkibWF4 X3BlcmZvcm1hbmNlXG4iCiAjZGVmaW5lIE1FRElVTV9QT1dFUl9TVFIJIm1lZGl1bV9wb3dlclxu IgogI2RlZmluZSBNSU5fUE9XRVJfU1RSCQkibWluX3Bvd2VyXG4iCiAvKiBSZW1lbWJlciB0byBm aXggdGhpcyBpZiBhZGRpbmcgbG9uZ2VyIHN0cmluZ3MgKi8KICNkZWZpbmUgTUFYX1BPTElDWV9T VFJMRU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCitpbnQ4X3QgKl9fc2F0YV9wbV9wb2xp Y2llczsKK2ludCBfX3Njc2lfaG9zdF9jbnQ7CiAKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlv X3J1bnRpbWVfcG93ZXJfc2F2ZVs2NF07CiBzdGF0aWMgY2hhciAqIF9faWd0X3BtX2F1ZGlvX3J1 bnRpbWVfY29udHJvbF9wYXRoOwogc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9j b250cm9sWzY0XTsKIAorc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFu ZGxlcihpbnQgc2lnKTsKK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bv d2VyX21hbmFnZW1lbnQodm9pZCk7CisKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9y ZV9ydW50aW1lX3BtKHZvaWQpCiB7CiAJaW50IGZkOwpAQCAtMjgwLDM5ICsyOTUsMjYgQEAgdm9p ZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCkKIAkJaWd0X2RlYnVnKCJGYWls ZWQgdG8gZW5hYmxlIGF1ZGlvIHJ1bnRpbWUgUE0hICglZClcbiIsIC1lcnIpOwogfQogCi0vKioK LSAqIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Ci0gKgotICogRW5h YmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4K LSAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRl cy4KLSAqCi0gKiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9uIG9wZW4gc2luY2UgdGhl IHN5c3RlbSBtaWdodCBub3QgaGF2ZQotICogYSBTQVRBIGhvc3QuCi0gKgotICogUmV0dXJuczoK LSAqIEFuIG9wYXF1ZSBwb2ludGVyIHRvIHRoZSBkYXRhIG5lZWRlZCB0byByZXN0b3JlIHRoZSBk ZWZhdWx0IHZhbHVlcwotICogYWZ0ZXIgdGhlIHRlc3QgaGFzIHRlcm1pbmF0ZWQsIG9yIE5VTEwg aWYgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQKLSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMg cG9pbnRlciBzaG91bGQgYmUgZnJlZWQgd2hlbiBubyBsb25nZXIgdXNlZAotICogKHR5cGljYWxs eSBhZnRlciBoYXZpbmcgY2FsbGVkIHJlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo KSkuCi0gKi8KLWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVu dCh2b2lkKQorc3RhdGljIHZvaWQgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5h Z2VtZW50KHZvaWQpCiB7CiAJaW50IGZkLCBpOwogCXNzaXplX3QgbGVuOwogCWNoYXIgKmJ1ZjsK IAljaGFyICpmaWxlX25hbWU7Ci0JaW50OF90ICpsaW5rX3BtX3BvbGljaWVzID0gTlVMTDsKKwlp bnQ4X3QgcG9saWN5OwogCiAJZmlsZV9uYW1lID0gbWFsbG9jKFBBVEhfTUFYKTsKIAlidWYgPSBt YWxsb2MoTUFYX1BPTElDWV9TVFJMRU4gKyAxKTsKIAotCWZvciAoaSA9IDA7IDsgaSsrKSB7Ci0J CWludDhfdCBwb2xpY3k7Ci0KKwlmb3IgKF9fc2NzaV9ob3N0X2NudCA9IDA7IDsgX19zY3NpX2hv c3RfY250KyspIHsKIAkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKIAkJCSAiL3N5cy9j bGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAotCQkJ IGkpOworCQkJIF9fc2NzaV9ob3N0X2NudCk7CiAKKwkJLyoKKwkJICogV2UgZG9uJ3QgaGF2ZSBh bnkgYXNzZXJ0aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0KKwkJICogbWlnaHQgbm90IGhh dmUgYSBTQVRBIGhvc3QuCisJCSAqLwogCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOwog CQlpZiAoZmQgPCAwKQogCQkJYnJlYWs7CkBAIC0zMzIsMTIgKzMzNCwyNiBAQCBpbnQ4X3QgKmln dF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIAkJZWxzZQogCQkJ cG9saWN5ID0gUE9MSUNZX1VOS05PV047CiAKLQkJaWYgKCEoaSAlIDI1NikpCi0JCQlsaW5rX3Bt X3BvbGljaWVzID0gcmVhbGxvYyhsaW5rX3BtX3BvbGljaWVzLAotCQkJCQkJICAgKGkgLyAyNTYg KyAxKSAqIDI1NiArIDEpOworCQlpZiAoIShfX3Njc2lfaG9zdF9jbnQgJSAyNTYpKQorCQkJX19z YXRhX3BtX3BvbGljaWVzID0gcmVhbGxvYyhfX3NhdGFfcG1fcG9saWNpZXMsCisJCQkJCQkgICAg IChfX3Njc2lfaG9zdF9jbnQgLyAyNTYgKyAxKQorCQkJCQkJICAgICAqIDI1NiArIDEpOworCisJ CV9fc2F0YV9wbV9wb2xpY2llc1tfX3Njc2lfaG9zdF9jbnRdID0gcG9saWN5OworCQljbG9zZShm ZCk7CisJfQorCisJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX3NhdGFfbGlua19w bV9leGl0X2hhbmRsZXIpOworCisJZm9yIChpID0gMDsgaSA8IF9fc2NzaV9ob3N0X2NudDsgaSsr KSB7CisJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCisJCQkgIi9zeXMvY2xhc3Mvc2Nz aV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5IiwKKwkJCSBpKTsKKwkJ ZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKKwkJaWYgKGZkIDwgMCkKKwkJCWJyZWFrOwog Ci0JCWxpbmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7Ci0JCWxpbmtfcG1fcG9saWNpZXNbaSAr IDFdID0gMDsKKwkJcG9saWN5ID0gX19zYXRhX3BtX3BvbGljaWVzW2ldOwogCiAJCS8qIElmIHRo ZSBwb2xpY3kgaXMgc29tZXRoaW5nIHdlIGRvbid0IGtub3cgYWJvdXQsCiAJCSAqIGRvbid0IHRv dWNoIGl0LCBzaW5jZSB3ZSBtaWdodCBwb3RlbnRpYWxseSBicmVhayB0aGluZ3MuCkBAIC0zNTUs MzkgKzM3MSwyNSBAQCBpbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQodm9pZCkKIAl9CiAJZnJlZShidWYpOwogCWZyZWUoZmlsZV9uYW1lKTsKLQotCXJldHVy biBsaW5rX3BtX3BvbGljaWVzOwogfQogCi0vKioKLSAqIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlu a19wb3dlcl9tYW5hZ2VtZW50OgotICogQHBtX2RhdGE6IEFuIG9wYXF1ZSBwb2ludGVyIHdpdGgg c2F2ZWQgbGluayBQTSBwb2xpY2llczsKLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBhc3NlZCB3 ZSBmb3JjZSBlbmFibGUgdGhlICJtYXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KLSAqCi0gKiBSZXN0 b3JlIHRoZSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQgcG9saWNpZXMgdG8gdGhlIHZhbHVlcwotICog cHJpb3IgdG8gZW5hYmxpbmcgbWluX3Bvd2VyLgotICoKLSAqIENhdmVhdDogSWYgdGhlIHN5c3Rl bSBzdXBwb3J0cyBob3RwbHVnZ2luZyBhbmQgaG90cGx1Z2dpbmcgdGFrZXMKLSAqICAgICAgICAg cGxhY2UgZHVyaW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJz Ci0gKiAgICAgICAgIHdlIG1pZ2h0IHJlc3RvcmUgdGhlIHNldHRpbmdzIHRvIHRoZSB3cm9uZyBo b3N0cy4KLSAqLwotdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVu dChpbnQ4X3QgKnBtX2RhdGEpCi0KK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIHsKIAlpbnQgZmQsIGk7CiAJY2hhciAqZmlsZV9u YW1lOwogCisJaWYgKCFfX3NhdGFfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKwogCS8qIERpc2sg cnVudGltZSBQTSBwb2xpY2llcy4gKi8KIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwot CWZvciAoaSA9IDA7IDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IF9fc2NzaV9ob3N0X2NudDsg aSsrKSB7CiAJCWludDhfdCBwb2xpY3k7CiAKLQkJaWYgKCFwbV9kYXRhKQotCQkJcG9saWN5ID0g UE9MSUNZX01BWF9QRVJGT1JNQU5DRTsKLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJQ1lf VU5LTk9XTikKKwkJaWYgKF9fc2F0YV9wbV9wb2xpY2llc1tpXSA9PSBQT0xJQ1lfVU5LTk9XTikK IAkJCWNvbnRpbnVlOwogCQllbHNlCi0JCQlwb2xpY3kgPSBwbV9kYXRhW2ldOworCQkJcG9saWN5 ID0gX19zYXRhX3BtX3BvbGljaWVzW2ldOwogCiAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9N QVgsCiAJCQkgIi9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1l bnRfcG9saWN5IiwKQEAgLTQyMSw3ICs0MjMsNDggQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRh X2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCiAJCWNsb3NlKGZkKTsKIAl9 CiAJZnJlZShmaWxlX25hbWUpOworCWZyZWUoX19zYXRhX3BtX3BvbGljaWVzKTsKKwlfX3NhdGFf cG1fcG9saWNpZXMgPSBOVUxMOwogfQorCisvKioKKyAqIGlndF9wbV9lbmFibGVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQ6CisgKgorICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZv ciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KKyAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5ub3Qg cmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRlcy4KKyAqLwordm9pZCBpZ3RfcG1fZW5hYmxl X3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCit7CisJLyogQ2hlY2sgaWYgaGFzIGJl ZW4gYWxyZWFkeSBzYXZlZC4gKi8KKwlpZiAoX19zYXRhX3BtX3BvbGljaWVzKQorCQlyZXR1cm47 CisKKwkgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cit9CisK Ky8qKgorICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6CisgKgor ICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1 ZXMKKyAqIHByaW9yIHRvIGVuYWJsaW5nIG1pbl9wb3dlci4KKyAqCisgKiBDYXZlYXQ6IElmIHRo ZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCisgKiAg ICAgICAgIHBsYWNlIGR1cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2Ug bnVtYmVycworICogICAgICAgICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUg d3JvbmcgaG9zdHMuCisgKi8KK3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQodm9pZCkKK3sKKwlpZiAoIV9fc2F0YV9wbV9wb2xpY2llcykKKwkJcmV0dXJuOwor CisJIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKK30KKwor c3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQor eworCV9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKK30KKwog I2RlZmluZSBQT1dFUl9ESVIgIi9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIuMC9w b3dlciIKIC8qIFdlIGp1c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCiBpbnQgcG1fc3RhdHVz X2ZkID0gLTE7CkBAIC01ODYsNiArNjI5LDM0IEBAIGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0o dm9pZCkKIH0KIAogLyoqCisgKiBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtOgorICoKKyAqIERpc2Fi bGUgdGhlIHJ1bnRpbWUgcG0gZm9yIGk5MTUgZGV2aWNlLgorICogaWd0X2Rpc2FibGVfcnVudGlt ZV9wbSBhc3N1bWVzIHRoYXQgaWd0X3NldHVwX3J1bnRpbWVfcG0gaGFzIGFscmVhZHkKKyAqIGNh bGxlZCB0byBzYXZlIHJ1bnRpbWUgYXV0b3N1c3BlbmQgYW5kIGNvbnRyb2wgYXR0cmlidXRlcy4K KyAqLwordm9pZCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZvaWQpCit7CisJaW50IGZkOworCXNz aXplX3Qgc2l6ZTsKKwljaGFyIGJ1Zls2XTsKKworCWlndF9hc3NlcnRfZmQocG1fc3RhdHVzX2Zk KTsKKworCS8qIFdlIGtub3cgd2Ugc3VwcG9ydCBydW50aW1lIFBNLCBsZXQncyB0cnkgdG8gZGlz YWJsZSBpdCBub3cuICovCisJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1JEV1Ip OworCWlndF9hc3NlcnRfZihmZCA+PSAwLCAiQ2FuJ3Qgb3BlbiAiIFBPV0VSX0RJUiAiL2NvbnRy b2xcbiIpOworCisJc2l6ZSA9IHdyaXRlKGZkLCAib25cbiIsIDMpOworCWlndF9hc3NlcnQoc2l6 ZSA9PSAzKTsKKwlsc2VlayhmZCwgMCwgU0VFS19TRVQpOworCXNpemUgPSByZWFkKGZkLCBidWYs IEFSUkFZX1NJWkUoYnVmKSk7CisJaWd0X2Fzc2VydChzaXplID09IDMpOworCWlndF9hc3NlcnQo c3RybmNtcChidWYsICJvblxuIiwgMykgPT0gMCk7CisJY2xvc2UoZmQpOworfQorCisvKioKICAq IGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXM6CiAgKgogICogUmV0dXJuczogVGhlIGN1cnJlbnQg cnVudGltZSBQTSBzdGF0dXMuCkBAIC02MjgsMyArNjk5LDUzIEBAIGJvb2wgaWd0X3dhaXRfZm9y X3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpCiB7CiAJcmV0dXJu IGlndF93YWl0KGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXMoKSA9PSBzdGF0dXMsIDEwMDAwLCAx MDApOwogfQorCisvKioKKyAqIGRtY19sb2FkZWQ6CisgKiBAZGVidWdmczogZmQgdG8gdGhlIGRl YnVnZnMgZGlyLgorCisgKiBDaGVjayB3aGV0aGVyIERNQyBGVyBpcyBsb2FkZWQgb3Igbm90LiBE TUMgRlcgaXMgcmVxdWlyZSBmb3IgZmV3IERpc3BsYXkgQworICogc3RhdGVzIGxpa2UgREM1IGFu ZCBEQzYuIEZXIGRvZXMgdGhlIENvbnRleHQgU2F2ZSBhbmQgUmVzdG9yZSBkdXJpbmcgRGlzcGxh eQorICogQyBTdGF0ZXMgZW50cnkgYW5kIGV4aXQuCisgKgorICogUmV0dXJuczoKKyAqIFRydWUg aWYgRE1DIEZXIGlzIGxvYWRlZCBvdGhlcndpc2UgZmFsc2UuCisgKi8KK2Jvb2wgaWd0X3BtX2Rt Y19sb2FkZWQoaW50IGRlYnVnZnMpCit7CisJY2hhciBidWZbMTVdOworCWludCBsZW47CisKKwls ZW4gPSBpZ3Rfc3lzZnNfcmVhZChkZWJ1Z2ZzLCAiaTkxNV9kbWNfaW5mbyIsIGJ1Ziwgc2l6ZW9m KGJ1ZikgLSAxKTsKKwlpZiAobGVuIDwgMCkKKwkJcmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBw b3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8KKworCWJ1ZltsZW5dID0gJ1wwJzsKKworCWlndF9p bmZvKCJETUM6ICVzXG4iLCBidWYpOworCXJldHVybiBzdHJzdHIoYnVmLCAiZncgbG9hZGVkOiB5 ZXMiKTsKK30KKworLyoqCisgKiBpc19iaW9zX2xpbWl0c19wYzhfcGx1c19yZXNpZGVuY2llczoK KworICogQ2hlY2sgd2hldGhlciBCSU9TIGhhcyBkaXNhYmxlZCB0aGUgUEM4IHBhY2thZ2UgZGVl cGVyIHN0YXRlLgorICoKKyAqIFJldHVybnM6CisgKiBUcnVlIGlmIFBDOCsgcGFja2FnZSBkZWVw ZXIgc3RhdGUgZW5hYmxlZCBvbiBtYWNoaW5lIG90aGVyd2lzZSBmYWxzZS4KKyAqLworYm9vbCBp c19iaW9zX2xpbWl0c19wYzhfcGx1c19yZXNpZGVuY2llcyhpbnQgbXNyX2ZkKQoreworCWludCBy YzsKKwl1aW50NjRfdCB2YWw7CisKKwlyYyA9IHByZWFkKG1zcl9mZCwgJnZhbCwgc2l6ZW9mKHVp bnQ2NF90KSwgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wpOworCWlmIChyYyAhPSBzaXplb2Yo dmFsKSkKKwkJcmV0dXJuIGZhbHNlOworCWlmICgodmFsICYgUEtHX0NTVF9MSU1JVF9NQVNLKSA8 IFBLR19DU1RfTElNSVRfQzgpIHsKKwkJaWd0X2luZm8oIlBLRyBDLXN0YXRlcyBsaW1pdGVkIGJl bG93IFBDOCBieSB0aGUgQklPU1xuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcG0uaCBiL2xpYi9pZ3RfcG0uaAppbmRleCAx MGNjNjc5Li5mNGQ2YzQ5IDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmgKKysrIGIvbGliL2lndF9w bS5oCkBAIC0yNSw4ICsyNSw4IEBACiAjZGVmaW5lIElHVF9QTV9ICiAKIHZvaWQgaWd0X3BtX2Vu YWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpOwotaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwotdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpOwordm9pZCBpZ3RfcG1fZW5hYmxl X3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwordm9pZCBpZ3RfcG1fcmVzdG9yZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsKIAogLyoqCiAgKiBpZ3RfcnVudGltZV9w bV9zdGF0dXM6CkBAIC00Nyw4ICs0NywxMSBAQCBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyB7 CiB9OwogCiBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpOwordm9pZCBpZ3RfZGlzYWJs ZV9ydW50aW1lX3BtKHZvaWQpOwogdm9pZCBpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpOwog ZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cyh2b2lk KTsKIGJvb2wgaWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1 cyBzdGF0dXMpOworYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcyk7Citib29sIGlz X2Jpb3NfbGltaXRzX3BjOF9wbHVzX3Jlc2lkZW5jaWVzKGludCBtc3JfZmQpOwogCiAjZW5kaWYg LyogSUdUX1BNX0ggKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQu YyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwppbmRleCA3NjYyMzY2Li4wM2FmM2U0 IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKKysrIGIvdGVzdHMv aTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCkBAIC00OCw3ICs0OCw2IEBAIHN0cnVjdCBjb250ZXh0 IHsKICNkZWZpbmUgRkFERVNQRUVEIDEwMCAvKiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdGVwcyAq LwogCiBJR1RfVEVTVF9ERVNDUklQVElPTigiQmFzaWMgYmFja2xpZ2h0IHN5c2ZzIHRlc3QiKTsK LXN0YXRpYyBpbnQ4X3QgKnBtX2RhdGEgPSBOVUxMOwogCiBzdGF0aWMgaW50IGJhY2tsaWdodF9y ZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyICpmbmFtZSkKIHsKQEAgLTIzOCw3ICsyMzcsNyBA QCBpZ3RfbWFpbgogCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7CiAKIAkJaWd0X2Rp c3BsYXlfY29tbWl0MigmZGlzcGxheSwgZGlzcGxheS5pc19hdG9taWMgPyBDT01NSVRfQVRPTUlD IDogQ09NTUlUX0xFR0FDWSk7Ci0JCXBtX2RhdGEgPSBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KCk7CisJCWlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQoKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIpCkBAIC0yNTgs OCArMjU3LDcgQEAgaWd0X21haW4KIAogCQlpZ3RfZGlzcGxheV9maW5pKCZkaXNwbGF5KTsKIAkJ aWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmZiKTsKLQkJaWd0X3BtX3Jlc3RvcmVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7Ci0JCWZyZWUocG1fZGF0YSk7CisJCWln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAJCWNsb3NlKGRpc3Bs YXkuZHJtX2ZkKTsKIAl9CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMg Yi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKaW5kZXggMzFjZTJhMS4uZWMwZmFhOCAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9y cG0uYwpAQCAtNTIsMTEgKzUyLDYgQEAKICNpbmNsdWRlICJpZ3RfZGV2aWNlLmgiCiAjaW5jbHVk ZSAiaWd0X2VkaWQuaCIKIAotI2RlZmluZSBNU1JfUEtHX0NTVF9DT05GSUdfQ09OVFJPTAkweEUy Ci0vKiBIU1cvQkRXOiAqLwotI2RlZmluZSAgUEtHX0NTVF9MSU1JVF9NQVNLCQkweEYKLSNkZWZp bmUgIFBLR19DU1RfTElNSVRfQzgJCTB4NgotCiAjZGVmaW5lIE1TUl9QQzhfUkVTCTB4NjMwCiAj ZGVmaW5lIE1TUl9QQzlfUkVTCTB4NjMxCiAjZGVmaW5lIE1TUl9QQzEwX1JFUwkweDYzMgpAQCAt MTIzLDggKzExOCw2IEBAIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyBscHNwX21vZGVfcGFyYW1zOwog c3RydWN0IG1vZGVzZXRfcGFyYW1zIG5vbl9scHNwX21vZGVfcGFyYW1zOwogc3RydWN0IG1vZGVz ZXRfcGFyYW1zICpkZWZhdWx0X21vZGVfcGFyYW1zOwogCi1zdGF0aWMgaW50OF90ICpwbV9kYXRh ID0gTlVMTDsKLQogc3RhdGljIGludCBtb2Rwcm9iZShjb25zdCBjaGFyICpkcml2ZXIpCiB7CiAJ cmV0dXJuIGlndF9rbW9kX2xvYWQoZHJpdmVyLCBOVUxMKTsKQEAgLTE0NiwxNSArMTM5LDcgQEAg c3RhdGljIGJvb2wgc3VwcG9ydHNfcGM4X3BsdXNfcmVzaWRlbmNpZXModm9pZCkKIAlpZiAocmMg IT0gc2l6ZW9mKHZhbCkpCiAJCXJldHVybiBmYWxzZTsKIAotCXJjID0gcHJlYWQobXNyX2ZkLCAm dmFsLCBzaXplb2YodWludDY0X3QpLCBNU1JfUEtHX0NTVF9DT05GSUdfQ09OVFJPTCk7Ci0JaWYg KHJjICE9IHNpemVvZih2YWwpKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKCh2YWwgJiBQS0dfQ1NU X0xJTUlUX01BU0spIDwgUEtHX0NTVF9MSU1JVF9DOCkgewotCQlpZ3RfaW5mbygiUEtHIEMtc3Rh dGVzIGxpbWl0ZWQgYmVsb3cgUEM4IGJ5IHRoZSBCSU9TXG4iKTsKLQkJcmV0dXJuIGZhbHNlOwot CX0KLQotCXJldHVybiB0cnVlOworCXJldHVybiBpc19iaW9zX2xpbWl0c19wYzhfcGx1c19yZXNp ZGVuY2llcyhtc3JfZmQpOwogfQogCiBzdGF0aWMgdWludDY0X3QgZ2V0X3Jlc2lkZW5jeSh1aW50 MzJfdCB0eXBlKQpAQCAtNzU1LDIxICs3NDAsNiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wYzgodm9p ZCkKIAloYXNfcGM4ID0gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgZG1jX2xvYWRlZCh2b2lkKQot ewotCWNoYXIgYnVmWzE1XTsKLQlpbnQgbGVuOwotCi0JbGVuID0gaWd0X3N5c2ZzX3JlYWQoZGVi dWdmcywgImk5MTVfZG1jX2luZm8iLCBidWYsIHNpemVvZihidWYpIC0gMSk7Ci0JaWYgKGxlbiA8 IDApCi0JICAgIHJldHVybiB0cnVlOyAvKiBubyBDU1Igc3VwcG9ydCwgbm8gRE1DIHJlcXVpcmVt ZW50ICovCi0KLQlidWZbbGVuXSA9ICdcMCc7Ci0KLQlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVm KTsKLQlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7Ci19Ci0KIHN0YXRpYyB2 b2lkIGR1bXBfZmlsZShpbnQgZGlyLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKIAljaGFyICpj b250ZW50czsKQEAgLTc5Niw3ICs3NjYsNyBAQCBzdGF0aWMgYm9vbCBzZXR1cF9lbnZpcm9ubWVu dCh2b2lkKQogCiAJaW5pdF9tb2RlX3NldF9kYXRhKCZtc19kYXRhKTsKIAotCXBtX2RhdGEgPSBp Z3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CisJaWd0X3BtX2VuYWJs ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwogCiAJaGFzX3J1bnRpbWVfcG0gPSBpZ3Rf c2V0dXBfcnVudGltZV9wbSgpOwogCXNldHVwX3BjOCgpOwpAQCAtODA0LDcgKzc3NCw3IEBAIHN0 YXRpYyBib29sIHNldHVwX2Vudmlyb25tZW50KHZvaWQpCiAJaWd0X2luZm8oIlJ1bnRpbWUgUE0g c3VwcG9ydDogJWRcbiIsIGhhc19ydW50aW1lX3BtKTsKIAlpZ3RfaW5mbygiUEM4IHJlc2lkZW5j eSBzdXBwb3J0OiAlZFxuIiwgaGFzX3BjOCk7CiAJaWd0X3JlcXVpcmUoaGFzX3J1bnRpbWVfcG0p OwotCWlndF9yZXF1aXJlKGRtY19sb2FkZWQoKSk7CisJaWd0X3JlcXVpcmUoaWd0X3BtX2RtY19s b2FkZWQoZGVidWdmcykpOwogCiBvdXQ6CiAJZGlzYWJsZV9hbGxfc2NyZWVucygmbXNfZGF0YSk7 CkBAIC04MjEsOCArNzkxLDcgQEAgc3RhdGljIHZvaWQgdGVhcmRvd25fZW52aXJvbm1lbnQodm9p ZCkKIAogCWlndF9yZXN0b3JlX3J1bnRpbWVfcG0oKTsKIAotCWlndF9wbV9yZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHBtX2RhdGEpOwotCWZyZWUocG1fZGF0YSk7CisJaWd0X3Bt X3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAogCWZpbmlfbW9kZV9zZXRf ZGF0YSgmbXNfZGF0YSk7CiAKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=