From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1D92089321 for ; Tue, 23 Apr 2019 11:19:30 +0000 (UTC) From: Anshuman Gupta Date: Tue, 23 Apr 2019 16:45:31 +0530 Message-Id: <1556018135-30789-2-git-send-email-anshuman.gupta@intel.com> In-Reply-To: <1556018135-30789-1-git-send-email-anshuman.gupta@intel.com> References: <1556018135-30789-1-git-send-email-anshuman.gupta@intel.com> Subject: [igt-dev] [PATCH i-g-t v11 1/5] 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.r.yadav@intel.com List-ID: RnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgoKZG1jX2xvYWRlZCgp IHdpbGwgYmUgdXNlZCBieSBuZXcgdGVzdCBpOTE1X3BtX2RjLmMgd2hpY2ggd2lsbCB2YWxpZGF0 ZQpEaXNwbGF5IEMgU3RhdGVzLiBTbyBtb3ZpbmcgdGhlIHNhbWUgdG8gaWd0X3BtIGxpYnJhcnku CkludHJvZHVjZWQgaWd0X2Rpc2FibGVfcnVudGltZV9wbSgpIGluIG9yZGVyIHRvIGRpc2FibGUg cnVudGltZSBzdXNwZW5kCmZvciB0aGUgZnVuY3Rpb24gd2hpY2ggc3VwcG9ydCBkYzkuCgp2Mjog U2ltcGxpZnkgdGhlIGNvbW1lbnQgc2VjdGlvbi4KdjM6IFJlbW92ZSAuIGZyb20gdGhlIHN1Ympl Y3QgbGluZS4KdjQ6IFJlYmFzZWQsIHJlc29sdmUgY29uZmxpY3RzIGluIHBtX3JwbS5jCiAgICBJ bmNsdWRlZCBwYXRjaCBzZXQgdmVyc2lvbiBjaGFuZ2UgbG9nLgp2NTogTGlzdGluZyBhY3R1YWwg Y2hhbmdlIGluIHBhdGNoIHNldCBjaGFuZ2Vsb2cgdG8gbWFrZSByZXZpZXcgZWFzaWVyLgp2Njog aWd0J3MgbGliIGFkZGVkIHN1cHBvcnQgZm9yIGRpc2FibGluZyBydW50aW1lIHN1c3BlbmQsCiAg ICBjaGFuZ2UgaW4gY29tbWl0IGxvZy4gcmViYXNlZCBkdWUgdG8gdGVzdCBuYW1lIHBtX3JwbSBj aGFuZ2VkCiAgICB0byBpOTE1X3BtX3JwbS4Kdjc6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudCBi eSBzYXZpbmcgUE9XRVJfRElSIHZhbHVlcyBpbgogICAgaWd0X2Rpc2FibGVfcnVudGltZV9wbSgp LiBbSW1yZV0Kdjg6IEFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnQsIGlndF9wbV9lbmFibGVf c2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKICAgIGZ1bmN0aW9uIHRvIHJlc3RvcmUgdGhlIG9y aWdpbmFsIFNBVEEgbGluayBwb3dlciBwb2xpY3kgaWYgdGhpbmdzIGZhaWwKICAgIGJ5IHVzaW5n IGFuIGV4aXQgaGFuZGxlci4gW0ltcmVdCgpTaWduZWQtb2ZmLWJ5OiBKeW90aSBZYWRhdiA8anlv dGkuci55YWRhdkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuc2h1bWFuIEd1cHRhIDxhbnNo dW1hbi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9wbS5jICAgICAgICAgICAgIHwgMjAx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBsaWIvaWd0 X3BtLmggICAgICAgICAgICAgfCAgIDIgKwogdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jIHwgIDE3 ICstLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcG0uYyBiL2xpYi9pZ3RfcG0uYwppbmRleCBmZDIyMjcz Li41ZDQ5YmNhIDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysrIGIvbGliL2lndF9wbS5jCkBA IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiZHJtdGVzdC5oIgogI2luY2x1ZGUgImlndF9wbS5o IgogI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKIAogLyoqCiAg KiBTRUNUSU9OOmlndF9wbQpAQCAtNjMsMTEgKzY0LDE1IEBAIGVudW0gewogI2RlZmluZSBNSU5f UE9XRVJfU1RSCQkibWluX3Bvd2VyXG4iCiAvKiBSZW1lbWJlciB0byBmaXggdGhpcyBpZiBhZGRp bmcgbG9uZ2VyIHN0cmluZ3MgKi8KICNkZWZpbmUgTUFYX1BPTElDWV9TVFJMRU4Jc3RybGVuKE1B WF9QRVJGT1JNQU5DRV9TVFIpCitpbnQ4X3QgKl9fc2F0YV9saW5rX3BtX3BvbGljaWVzOwogCiBz dGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbNjRdOwogc3RhdGlj IGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKIHN0YXRpYyBjaGFy IF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07CiAKK3ZvaWQgX19pZ3RfcG1fc2F0 YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKTsKK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7CisKIHN0YXRpYyBpbnQgX19p Z3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiB7CiAJaW50IGZkOwpAQCAtMjgw LDI4ICsyODUsMTIgQEAgdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCkK IAkJaWd0X2RlYnVnKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlvIHJ1bnRpbWUgUE0hICglZClcbiIs IC1lcnIpOwogfQogCi0vKioKLSAqIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQ6Ci0gKgotICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsg cG93ZXIgbWFuYWdlbWVudC4KLSAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVlcCBy dW50aW1lIHBvd2VyIHN0YXRlcy4KLSAqCi0gKiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25z IG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbSBtaWdodCBub3QgaGF2ZQotICogYSBTQVRBIGhvc3Qu Ci0gKgotICogUmV0dXJuczoKLSAqIEFuIG9wYXF1ZSBwb2ludGVyIHRvIHRoZSBkYXRhIG5lZWRl ZCB0byByZXN0b3JlIHRoZSBkZWZhdWx0IHZhbHVlcwotICogYWZ0ZXIgdGhlIHRlc3QgaGFzIHRl cm1pbmF0ZWQsIG9yIE5VTEwgaWYgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQKLSAqIGlzIG5v dCBzdXBwb3J0ZWQuIFRoaXMgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgd2hlbiBubyBsb25nZXIg dXNlZAotICogKHR5cGljYWxseSBhZnRlciBoYXZpbmcgY2FsbGVkIHJlc3RvcmVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQoKSkuCi0gKi8KLWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQorc3RhdGljIHZvaWQgX19pZ3RfcG1fZW5hYmxlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCiB7CiAJaW50IGZkLCBpOwogCXNzaXplX3Qg bGVuOwogCWNoYXIgKmJ1ZjsKIAljaGFyICpmaWxlX25hbWU7Ci0JaW50OF90ICpsaW5rX3BtX3Bv bGljaWVzID0gTlVMTDsKIAogCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7CiAJYnVmID0g bWFsbG9jKE1BWF9QT0xJQ1lfU1RSTEVOICsgMSk7CkBAIC0zMzMsMTEgKzMyMiwxMyBAQCBpbnQ4 X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIAkJCXBv bGljeSA9IFBPTElDWV9VTktOT1dOOwogCiAJCWlmICghKGkgJSAyNTYpKQotCQkJbGlua19wbV9w b2xpY2llcyA9IHJlYWxsb2MobGlua19wbV9wb2xpY2llcywKLQkJCQkJCSAgIChpIC8gMjU2ICsg MSkgKiAyNTYgKyAxKTsKKwkJCV9fc2F0YV9saW5rX3BtX3BvbGljaWVzID0KKwkJCXJlYWxsb2Mo X19zYXRhX2xpbmtfcG1fcG9saWNpZXMsCisJCQkJKGkgLyAyNTYgKyAxKSAqIDI1NiArIDEpOwog Ci0JCWxpbmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7Ci0JCWxpbmtfcG1fcG9saWNpZXNbaSAr IDFdID0gMDsKKwkJX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7CisJCV9fc2F0 YV9saW5rX3BtX3BvbGljaWVzW2kgKyAxXSA9IDA7CisJCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxl cihfX2lndF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKTsKIAogCQkvKiBJZiB0aGUgcG9s aWN5IGlzIHNvbWV0aGluZyB3ZSBkb24ndCBrbm93IGFib3V0LAogCQkgKiBkb24ndCB0b3VjaCBp dCwgc2luY2Ugd2UgbWlnaHQgcG90ZW50aWFsbHkgYnJlYWsgdGhpbmdzLgpAQCAtMzU1LDM5ICsz NDYsMjcgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KHZvaWQpCiAJfQogCWZyZWUoYnVmKTsKIAlmcmVlKGZpbGVfbmFtZSk7Ci0KLQlyZXR1cm4gbGlu a19wbV9wb2xpY2llczsKIH0KIAotLyoqCi0gKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudDoKLSAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVk IGxpbmsgUE0gcG9saWNpZXM7Ci0gKiAgICAgICAgICAgSWYgTlVMTCBpcyBwYXNzZWQgd2UgZm9y Y2UgZW5hYmxlIHRoZSAibWF4X3BlcmZvcm1hbmNlIiBwb2xpY3kuCi0gKgotICogUmVzdG9yZSB0 aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKLSAqIHByaW9y IHRvIGVuYWJsaW5nIG1pbl9wb3dlci4KLSAqCi0gKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3Vw cG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCi0gKiAgICAgICAgIHBsYWNl IGR1cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycwotICog ICAgICAgICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMu Ci0gKi8KLXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50 OF90ICpwbV9kYXRhKQotCitzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KHZvaWQpCiB7CiAJaW50IGZkLCBpOwogCWNoYXIgKmZpbGVfbmFtZTsK IAorCWlmICghX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKwogCS8qIERpc2sg cnVudGltZSBQTSBwb2xpY2llcy4gKi8KIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwog CWZvciAoaSA9IDA7IDsgaSsrKSB7CiAJCWludDhfdCBwb2xpY3k7CiAKLQkJaWYgKCFwbV9kYXRh KQorCQlpZiAoIV9fc2F0YV9saW5rX3BtX3BvbGljaWVzKQogCQkJcG9saWN5ID0gUE9MSUNZX01B WF9QRVJGT1JNQU5DRTsKLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJQ1lfVU5LTk9XTikK KwkJZWxzZSBpZiAoX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV0gPT0gUE9MSUNZX1VOS05PV04p CiAJCQljb250aW51ZTsKIAkJZWxzZQotCQkJcG9saWN5ID0gcG1fZGF0YVtpXTsKKwkJCXBvbGlj eSA9IF9fc2F0YV9saW5rX3BtX3BvbGljaWVzW2ldOwogCiAJCXNucHJpbnRmKGZpbGVfbmFtZSwg UEFUSF9NQVgsCiAJCQkgIi9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21h bmFnZW1lbnRfcG9saWN5IiwKQEAgLTQyMiw2ICs0MDEsNjYgQEAgdm9pZCBpZ3RfcG1fcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCiAJfQogCWZyZWUo ZmlsZV9uYW1lKTsKIH0KKworLyoqCisgKiBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50OgorICoKKyAqIEVuYWJsZSB0aGUgbWluX3Bvd2VyIHBvbGljeSBmb3IgU0FUQSBs aW5rIHBvd2VyIG1hbmFnZW1lbnQuCisgKiBXaXRob3V0IHRoaXMgd2UgY2Fubm90IHJlYWNoIGRl ZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCisgKgorICogV2UgZG9uJ3QgaGF2ZSBhbnkgYXNzZXJ0 aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0gbWlnaHQgbm90IGhhdmUKKyAqIGEgU0FUQSBo b3N0LgorICoKKyAqIFJldHVybnM6CisgKiBBbiBvcGFxdWUgcG9pbnRlciB0byB0aGUgZGF0YSBu ZWVkZWQgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCB2YWx1ZXMKKyAqIGFmdGVyIHRoZSB0ZXN0IGhh cyB0ZXJtaW5hdGVkLCBvciBOVUxMIGlmIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50CisgKiBp cyBub3Qgc3VwcG9ydGVkLiBUaGlzIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIHdoZW4gbm8gbG9u Z2VyIHVzZWQKKyAqICh0eXBpY2FsbHkgYWZ0ZXIgaGF2aW5nIGNhbGxlZCByZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KCkpLgorICovCitpbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKK3sKKwlpbnQgZXJyOworCisJLyogQ2hlY2sg aWYgaGFzIGJlZW4gYWxyZWFkeSBzYXZlZC4gKi8KKwlpZiAoX19zYXRhX2xpbmtfcG1fcG9saWNp ZXMpCisJCXJldHVybjsKKworCSBfX2lndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQoKTsKKworCSAvKiAgRml4bWU6CisJICAqICBOZWVkIHRvIG9iZXkgdGhlIGZ1bmN0aW9u IHByb3RvdHlwZSBhcyByZXR1cm5pbmcgYSBpbnQ4X3QgKiwKKwkgICogIGl0IGlzIGdldHRpbmcg dXNlZCBhdCBtdWx0aXBsZSBwbGFjZXMuCisJICAqLworCXJldHVybiBfX3NhdGFfbGlua19wbV9w b2xpY2llczsKK30KKworLyoqCisgKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudDoKKyAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVkIGxpbmsg UE0gcG9saWNpZXM7CisgKgorICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBv bGljaWVzIHRvIHRoZSB2YWx1ZXMKKyAqIHByaW9yIHRvIGVuYWJsaW5nIG1pbl9wb3dlci4KKyAq CisgKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBs dWdnaW5nIHRha2VzCisgKiAgICAgICAgIHBsYWNlIGR1cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0 IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycworICogICAgICAgICB3ZSBtaWdodCByZXN0b3JlIHRo ZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCisgKi8KK3ZvaWQgaWd0X3BtX3Jlc3RvcmVf c2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50OF90ICpwbV9kYXRhKQorCit7CisJaW50IGVy cjsKKworCWlmICghX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKworCSBfX2ln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cit9CisKK3ZvaWQgX19p Z3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQoreworCV9faWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKK30KKwogI2RlZmluZSBQT1dFUl9E SVIgIi9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIuMC9wb3dlciIKIC8qIFdlIGp1 c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCiBpbnQgcG1fc3RhdHVzX2ZkID0gLTE7CkBAIC01 ODUsNiArNjI0LDYxIEBAIGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0odm9pZCkKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorYm9vbCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZvaWQpCit7CisJaW50IGZk OworCXNzaXplX3Qgc2l6ZTsKKwljaGFyIGJ1Zls2XTsKKworCWlmIChwbV9zdGF0dXNfZmQgPCAw KSB7CisJCWZkID0gb3BlbihQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9kZWxheV9tcyIsIE9fUkRX Uik7CisJCWlmIChmZCA8IDApCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJc2l6ZSA9IHJlYWQoZmQs IF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCisJCQkgICAgc2l6ZW9mKF9faWd0X3BtX3J1 bnRpbWVfYXV0b3N1c3BlbmQpKTsKKworCQlpZiAoc2l6ZSA8PSAwKSB7CisJCQljbG9zZShmZCk7 CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2F1 dG9zdXNwZW5kKTsKKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX3J1bnRpbWVf ZXhpdF9oYW5kbGVyKTsKKwkJY2xvc2UoZmQpOworCX0KKworCS8qIFdlIGtub3cgd2Ugc3VwcG9y dCBydW50aW1lIFBNLCBsZXQncyB0cnkgdG8gZGlzYWJsZSBpdCBub3cuICovCisJZmQgPSBvcGVu KFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1JEV1IpOworCWlndF9hc3NlcnRfZihmZCA+PSAwLCAi Q2FuJ3Qgb3BlbiAiIFBPV0VSX0RJUiAiL2NvbnRyb2xcbiIpOworCisJaWYgKHBtX3N0YXR1c19m ZCA8IDApIHsKKwkJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9ydW50aW1lX2NvbnRyb2ws CisJCQkJc2l6ZW9mKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCkpID4gMCk7CisJCXN0cmNob21w KF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCk7CisKKwkJaWd0X2RlYnVnKCJTYXZlZCBydW50aW1l IHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKKwkJCSAgX19pZ3RfcG1fcnVu dGltZV9hdXRvc3VzcGVuZCwKKwkJCSAgX19pZ3RfcG1fcnVudGltZV9jb250cm9sKTsKKwl9CisK KwlzaXplID0gd3JpdGUoZmQsICJvblxuIiwgMyk7CisJaWd0X2Fzc2VydChzaXplID09IDMpOwor CWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7CisJc2l6ZSA9IHJlYWQoZmQsIGJ1ZiwgQVJSQVlfU0la RShidWYpKTsKKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7CisJaWd0X2Fzc2VydChzdHJuY21wKGJ1 ZiwgIm9uXG4iLCAzKSA9PSAwKTsKKwljbG9zZShmZCk7CisKKwlpZiAocG1fc3RhdHVzX2ZkIDwg MCkgeworCQlwbV9zdGF0dXNfZmQgPSBvcGVuKFBPV0VSX0RJUiAiL3J1bnRpbWVfc3RhdHVzIiwg T19SRE9OTFkpOworCQlpZ3RfYXNzZXJ0X2YocG1fc3RhdHVzX2ZkID49IDAsCisJCQkgICAgICJD YW4ndCBvcGVuICIgUE9XRVJfRElSICIvcnVudGltZV9zdGF0dXNcbiIpOworCX0KKworCXJldHVy biB0cnVlOworfQorCiAvKioKICAqIGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXM6CiAgKgpAQCAt NjI4LDMgKzcyMiwzMCBAQCBib29sIGlndF93YWl0X2Zvcl9wbV9zdGF0dXMoZW51bSBpZ3RfcnVu dGltZV9wbV9zdGF0dXMgc3RhdHVzKQogewogCXJldHVybiBpZ3Rfd2FpdChpZ3RfZ2V0X3J1bnRp bWVfcG1fc3RhdHVzKCkgPT0gc3RhdHVzLCAxMDAwMCwgMTAwKTsKIH0KKworLyoqCisgKiBkbWNf bG9hZGVkOgorICogQGRlYnVnZnM6IGZkIHRvIHRoZSBkZWJ1Z2ZzIGRpci4KKworICogQ2hlY2sg d2hldGhlciBETUMgRlcgaXMgbG9hZGVkIG9yIG5vdC4gRE1DIEZXIGlzIHJlcXVpcmUgZm9yIGZl dyBEaXNwbGF5IEMKKyAqIHN0YXRlcyBsaWtlIERDNSBhbmQgREM2LiBGVyBkb2VzIHRoZSBDb250 ZXh0IFNhdmUgYW5kIFJlc3RvcmUgZHVyaW5nIERpc3BsYXkKKyAqIEMgU3RhdGVzIGVudHJ5IGFu ZCBleGl0LgorICoKKyAqIFJldHVybnM6CisgKiBUcnVlIGlmIERNQyBGVyBpcyBsb2FkZWQgb3Ro ZXJ3aXNlIGZhbHNlLgorICovCitib29sIGlndF9wbV9kbWNfbG9hZGVkKGludCBkZWJ1Z2ZzKQor eworCWlndF9yZXF1aXJlKGRlYnVnZnMgIT0gLTEpOworCWNoYXIgYnVmWzE1XTsKKwlpbnQgbGVu OworCisJbGVuID0gaWd0X3N5c2ZzX3JlYWQoZGVidWdmcywgImk5MTVfZG1jX2luZm8iLCBidWYs IHNpemVvZihidWYpIC0gMSk7CisJaWYgKGxlbiA8IDApCisJCXJldHVybiB0cnVlOyAvKiBubyBD U1Igc3VwcG9ydCwgbm8gRE1DIHJlcXVpcmVtZW50ICovCisKKwlidWZbbGVuXSA9ICdcMCc7CisK KwlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVmKTsKKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3IGxv YWRlZDogeWVzIik7Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmggYi9saWIvaWd0X3BtLmgK aW5kZXggMTBjYzY3OS4uNmM0NjE3YSAxMDA2NDQKLS0tIGEvbGliL2lndF9wbS5oCisrKyBiL2xp Yi9pZ3RfcG0uaApAQCAtNDcsOCArNDcsMTAgQEAgZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMg ewogfTsKIAogYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2b2lkKTsKK2Jvb2wgaWd0X2Rpc2Fi bGVfcnVudGltZV9wbSh2b2lkKTsKIHZvaWQgaWd0X3Jlc3RvcmVfcnVudGltZV9wbSh2b2lkKTsK IGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXModm9p ZCk7CiBib29sIGlndF93YWl0X2Zvcl9wbV9zdGF0dXMoZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0 dXMgc3RhdHVzKTsKK2Jvb2wgaWd0X3BtX2RtY19sb2FkZWQoaW50IGRlYnVnZnMpOwogCiAjZW5k aWYgLyogSUdUX1BNX0ggKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyBi L3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwppbmRleCBhMmM5ZDBlLi4wYzNiNGU1IDEwMDY0NAot LS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3Jw bS5jCkBAIC03MTAsMjEgKzcxMCw2IEBAIHN0YXRpYyB2b2lkIHNldHVwX3BjOCh2b2lkKQogCWhh c19wYzggPSB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBkbWNfbG9hZGVkKHZvaWQpCi17Ci0JY2hh ciBidWZbMTVdOwotCWludCBsZW47Ci0KLQlsZW4gPSBpZ3Rfc3lzZnNfcmVhZChkZWJ1Z2ZzLCAi aTkxNV9kbWNfaW5mbyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKLQlpZiAobGVuIDwgMCkKLQkg ICAgcmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8K LQotCWJ1ZltsZW5dID0gJ1wwJzsKLQotCWlndF9pbmZvKCJETUM6ICVzXG4iLCBidWYpOwotCXJl dHVybiBzdHJzdHIoYnVmLCAiZncgbG9hZGVkOiB5ZXMiKTsKLX0KLQogc3RhdGljIHZvaWQgZHVt cF9maWxlKGludCBkaXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogCWNoYXIgKmNvbnRlbnRz OwpAQCAtNzU5LDcgKzc0NCw3IEBAIHN0YXRpYyBib29sIHNldHVwX2Vudmlyb25tZW50KHZvaWQp CiAJaWd0X2luZm8oIlJ1bnRpbWUgUE0gc3VwcG9ydDogJWRcbiIsIGhhc19ydW50aW1lX3BtKTsK IAlpZ3RfaW5mbygiUEM4IHJlc2lkZW5jeSBzdXBwb3J0OiAlZFxuIiwgaGFzX3BjOCk7CiAJaWd0 X3JlcXVpcmUoaGFzX3J1bnRpbWVfcG0pOwotCWlndF9yZXF1aXJlKGRtY19sb2FkZWQoKSk7CisJ aWd0X3JlcXVpcmUoaWd0X3BtX2RtY19sb2FkZWQoZGVidWdmcykpOwogCiBvdXQ6CiAJZGlzYWJs ZV9hbGxfc2NyZWVucygmbXNfZGF0YSk7Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pZ3QtZGV2