From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0501E893A2 for ; Wed, 8 May 2019 06:36:46 +0000 (UTC) From: Anshuman Gupta Date: Wed, 8 May 2019 12:01:49 +0530 Message-Id: <1557297113-15249-2-git-send-email-anshuman.gupta@intel.com> In-Reply-To: <1557297113-15249-1-git-send-email-anshuman.gupta@intel.com> References: <1557297113-15249-1-git-send-email-anshuman.gupta@intel.com> Subject: [igt-dev] [PATCH i-g-t v12 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: RnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBk b2VzIHRoZSBmb2xsb3dpbmcgY2huZWdzIHRvIGxpYi9pZ3RfcG0uYwoKLWRtY19sb2FkZWQoKSB3 aWxsIGJlIHVzZWQgYnkgbmV3IHRlc3QgaTkxNV9wbV9kYy5jIHdoaWNoIHdpbGwgdmFsaWRhdGUK IERpc3BsYXkgQyBTdGF0ZXMuIFNvIG1vdmluZyB0aGUgc2FtZSB0byBpZ3RfcG0gbGlicmFyeS4K Ci1JbnRyb2R1Y2VkIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0oKSBpbiBvcmRlciB0byBkaXNhYmxl IHJ1bnRpbWUgc3VzcGVuZAogZm9yIHRoZSBmdW5jdGlvbiB3aGljaCBzdXBwb3J0IGRjOS4KCi1D aGFuZ2VkIHRoZSBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkgYW5k CiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpIGluIG9yZGVyIHRv IHNhdmUKIGFuZCByZXN0b3JlIHRoZSBzYXRhIGxpbmsgcG93ZXIgcG9saWN5IGJ5IGFuIGV4aXQg aGFuZGxlci4KCnYyOiBTaW1wbGlmeSB0aGUgY29tbWVudCBzZWN0aW9uLgp2MzogUmVtb3ZlIC4g ZnJvbSB0aGUgc3ViamVjdCBsaW5lLgp2NDogUmViYXNlZCwgcmVzb2x2ZSBjb25mbGljdHMgaW4g cG1fcnBtLmMKICAgIEluY2x1ZGVkIHBhdGNoIHNldCB2ZXJzaW9uIGNoYW5nZSBsb2cuCnY1OiBM aXN0aW5nIGFjdHVhbCBjaGFuZ2UgaW4gcGF0Y2ggc2V0IGNoYW5nZWxvZyB0byBtYWtlIHJldmll dyBlYXNpZXIuCnY2OiBpZ3QncyBsaWIgYWRkZWQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHJ1bnRp bWUgc3VzcGVuZCwKICAgIGNoYW5nZSBpbiBjb21taXQgbG9nLiByZWJhc2VkIGR1ZSB0byB0ZXN0 IG5hbWUgcG1fcnBtIGNoYW5nZWQKICAgIHRvIGk5MTVfcG1fcnBtLgp2NzogQWRkcmVzc2VkIHJl dmlldyBjb21tZW50IGJ5IHNhdmluZyBQT1dFUl9ESVIgdmFsdWVzIGluCiAgICBpZ3RfZGlzYWJs ZV9ydW50aW1lX3BtKCkuIFtJbXJlXQp2ODogQWRkcmVzc2VkIHRoZSByZXZpZXcgY29tbWVudCwg aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudAogICAgZnVuY3Rpb24gdG8g cmVzdG9yZSB0aGUgb3JpZ2luYWwgU0FUQSBsaW5rIHBvd2VyIHBvbGljeSBpZiB0aGluZ3MgZmFp bAogICAgYnkgdXNpbmcgYW4gZXhpdCBoYW5kbGVyLiBbSW1yZV0Kdjk6IElHVCBmYWlsdXJlIGZp eHR1cmUgaW4gaTkxNV9wbV9iYWNrbGlnaHQgYW5kIGk5MTVfcG1fcnBtLgoKU2lnbmVkLW9mZi1i eTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBB bnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfcG0u YyAgICAgICAgICAgICAgICAgICB8IDE5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLQogbGliL2lndF9wbS5oICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiB0ZXN0 cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgfCAgIDYgKy0KIHRlc3RzL2k5MTUvaTkxNV9wbV9y cG0uYyAgICAgICB8ICAyNCArLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMo KyksIDY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcG0uYyBiL2xpYi9pZ3Rf cG0uYwppbmRleCBmZDIyMjczLi45YjgzZmJiIDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysr IGIvbGliL2lndF9wbS5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiZHJtdGVzdC5oIgog I2luY2x1ZGUgImlndF9wbS5oIgogI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3Rf c3lzZnMuaCIKIAogLyoqCiAgKiBTRUNUSU9OOmlndF9wbQpAQCAtNjMsMTEgKzY0LDE1IEBAIGVu dW0gewogI2RlZmluZSBNSU5fUE9XRVJfU1RSCQkibWluX3Bvd2VyXG4iCiAvKiBSZW1lbWJlciB0 byBmaXggdGhpcyBpZiBhZGRpbmcgbG9uZ2VyIHN0cmluZ3MgKi8KICNkZWZpbmUgTUFYX1BPTElD WV9TVFJMRU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCitpbnQ4X3QgKl9fc2F0YV9saW5r X3BtX3BvbGljaWVzOwogCiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2Vy X3NhdmVbNjRdOwogc3RhdGljIGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xf cGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07CiAK K3N0YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZyk7 CitzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KHZvaWQpOworCiBzdGF0aWMgaW50IF9faWd0X3BtX2F1ZGlvX3Jlc3RvcmVfcnVudGltZV9wbSh2 b2lkKQogewogCWludCBmZDsKQEAgLTI4MCwyOCArMjg1LDEyIEBAIHZvaWQgaWd0X3BtX2VuYWJs ZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpCiAJCWlndF9kZWJ1ZygiRmFpbGVkIHRvIGVuYWJsZSBh dWRpbyBydW50aW1lIFBNISAoJWQpXG4iLCAtZXJyKTsKIH0KIAotLyoqCi0gKiBpZ3RfcG1fZW5h YmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50OgotICoKLSAqIEVuYWJsZSB0aGUgbWluX3Bv d2VyIHBvbGljeSBmb3IgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQuCi0gKiBXaXRob3V0IHRo aXMgd2UgY2Fubm90IHJlYWNoIGRlZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCi0gKgotICogV2Ug ZG9uJ3QgaGF2ZSBhbnkgYXNzZXJ0aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0gbWlnaHQg bm90IGhhdmUKLSAqIGEgU0FUQSBob3N0LgotICoKLSAqIFJldHVybnM6Ci0gKiBBbiBvcGFxdWUg cG9pbnRlciB0byB0aGUgZGF0YSBuZWVkZWQgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCB2YWx1ZXMK LSAqIGFmdGVyIHRoZSB0ZXN0IGhhcyB0ZXJtaW5hdGVkLCBvciBOVUxMIGlmIFNBVEEgbGluayBw b3dlciBtYW5hZ2VtZW50Ci0gKiBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHBvaW50ZXIgc2hvdWxk IGJlIGZyZWVkIHdoZW4gbm8gbG9uZ2VyIHVzZWQKLSAqICh0eXBpY2FsbHkgYWZ0ZXIgaGF2aW5n IGNhbGxlZCByZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkpLgotICovCi1pbnQ4 X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKK3N0YXRp YyB2b2lkIF9faWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQog ewogCWludCBmZCwgaTsKIAlzc2l6ZV90IGxlbjsKIAljaGFyICpidWY7CiAJY2hhciAqZmlsZV9u YW1lOwotCWludDhfdCAqbGlua19wbV9wb2xpY2llcyA9IE5VTEw7CiAKIAlmaWxlX25hbWUgPSBt YWxsb2MoUEFUSF9NQVgpOwogCWJ1ZiA9IG1hbGxvYyhNQVhfUE9MSUNZX1NUUkxFTiArIDEpOwpA QCAtMzEzLDYgKzMwMiw5IEBAIGludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCh2b2lkKQogCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19w b3dlcl9tYW5hZ2VtZW50X3BvbGljeSIsCiAJCQkgaSk7CiAKKwkJLyogV2UgZG9uJ3QgaGF2ZSBh bnkgYXNzZXJ0aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0KKwkJICogbWlnaHQgbm90IGhh dmUgYSBTQVRBIGhvc3QuCisJCSAqLwogCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOwog CQlpZiAoZmQgPCAwKQogCQkJYnJlYWs7CkBAIC0zMzMsMTEgKzMyNSwxMyBAQCBpbnQ4X3QgKmln dF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIAkJCXBvbGljeSA9 IFBPTElDWV9VTktOT1dOOwogCiAJCWlmICghKGkgJSAyNTYpKQotCQkJbGlua19wbV9wb2xpY2ll cyA9IHJlYWxsb2MobGlua19wbV9wb2xpY2llcywKLQkJCQkJCSAgIChpIC8gMjU2ICsgMSkgKiAy NTYgKyAxKTsKKwkJCV9fc2F0YV9saW5rX3BtX3BvbGljaWVzID0KKwkJCXJlYWxsb2MoX19zYXRh X2xpbmtfcG1fcG9saWNpZXMsCisJCQkJKGkgLyAyNTYgKyAxKSAqIDI1NiArIDEpOwogCi0JCWxp bmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7Ci0JCWxpbmtfcG1fcG9saWNpZXNbaSArIDFdID0g MDsKKwkJX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7CisJCV9fc2F0YV9saW5r X3BtX3BvbGljaWVzW2kgKyAxXSA9IDA7CisJCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxlcihfX2ln dF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKTsKIAogCQkvKiBJZiB0aGUgcG9saWN5IGlz IHNvbWV0aGluZyB3ZSBkb24ndCBrbm93IGFib3V0LAogCQkgKiBkb24ndCB0b3VjaCBpdCwgc2lu Y2Ugd2UgbWlnaHQgcG90ZW50aWFsbHkgYnJlYWsgdGhpbmdzLgpAQCAtMzU1LDM5ICszNDksMjcg QEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQp CiAJfQogCWZyZWUoYnVmKTsKIAlmcmVlKGZpbGVfbmFtZSk7Ci0KLQlyZXR1cm4gbGlua19wbV9w b2xpY2llczsKIH0KIAotLyoqCi0gKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudDoKLSAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVkIGxpbmsg UE0gcG9saWNpZXM7Ci0gKiAgICAgICAgICAgSWYgTlVMTCBpcyBwYXNzZWQgd2UgZm9yY2UgZW5h YmxlIHRoZSAibWF4X3BlcmZvcm1hbmNlIiBwb2xpY3kuCi0gKgotICogUmVzdG9yZSB0aGUgbGlu ayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKLSAqIHByaW9yIHRvIGVu YWJsaW5nIG1pbl9wb3dlci4KLSAqCi0gKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMg aG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCi0gKiAgICAgICAgIHBsYWNlIGR1cmlu ZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycwotICogICAgICAg ICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCi0gKi8K LXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50OF90ICpw bV9kYXRhKQotCitzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50KHZvaWQpCiB7CiAJaW50IGZkLCBpOwogCWNoYXIgKmZpbGVfbmFtZTsKIAorCWlm ICghX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKwogCS8qIERpc2sgcnVudGlt ZSBQTSBwb2xpY2llcy4gKi8KIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwogCWZvciAo aSA9IDA7IDsgaSsrKSB7CiAJCWludDhfdCBwb2xpY3k7CiAKLQkJaWYgKCFwbV9kYXRhKQorCQlp ZiAoIV9fc2F0YV9saW5rX3BtX3BvbGljaWVzKQogCQkJcG9saWN5ID0gUE9MSUNZX01BWF9QRVJG T1JNQU5DRTsKLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJQ1lfVU5LTk9XTikKKwkJZWxz ZSBpZiAoX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV0gPT0gUE9MSUNZX1VOS05PV04pCiAJCQlj b250aW51ZTsKIAkJZWxzZQotCQkJcG9saWN5ID0gcG1fZGF0YVtpXTsKKwkJCXBvbGljeSA9IF9f c2F0YV9saW5rX3BtX3BvbGljaWVzW2ldOwogCiAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9N QVgsCiAJCQkgIi9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1l bnRfcG9saWN5IiwKQEAgLTQyMSw3ICs0MDMsNTMgQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRh X2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCiAJCWNsb3NlKGZkKTsKIAl9 CiAJZnJlZShmaWxlX25hbWUpOworCWZyZWUoX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpOworCV9f c2F0YV9saW5rX3BtX3BvbGljaWVzID0gTlVMTDsKK30KKworLyoqCisgKiBpZ3RfcG1fZW5hYmxl X3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50OgorICoKKyAqIEVuYWJsZSB0aGUgbWluX3Bvd2Vy IHBvbGljeSBmb3IgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQuCisgKiBXaXRob3V0IHRoaXMg d2UgY2Fubm90IHJlYWNoIGRlZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCisgKiBSZXR1cm5zOiBW b2lkCisgKi8KK3ZvaWQgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2 b2lkKQoreworCWludCBlcnI7CisKKwkvKiBDaGVjayBpZiBoYXMgYmVlbiBhbHJlYWR5IHNhdmVk LiAqLworCWlmIChfX3NhdGFfbGlua19wbV9wb2xpY2llcykKKwkJcmV0dXJuOworCisJIF9faWd0 X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworfQorCisvKioKKyAqIGln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50OgorICoKKyAqIFJlc3RvcmUg dGhlIGxpbmsgcG93ZXIgbWFuYWdlbWVudCBwb2xpY2llcyB0byB0aGUgdmFsdWVzCisgKiBwcmlv ciB0byBlbmFibGluZyBtaW5fcG93ZXIuCisgKgorICogQ2F2ZWF0OiBJZiB0aGUgc3lzdGVtIHN1 cHBvcnRzIGhvdHBsdWdnaW5nIGFuZCBob3RwbHVnZ2luZyB0YWtlcworICogICAgICAgICBwbGFj ZSBkdXJpbmcgb3VyIHRlc3Rpbmcgc28gdGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMKKyAq ICAgICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhvc3Rz LgorICovCit2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpCit7CisJaW50IGVycjsKKworCWlmICghX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpCisJCXJl dHVybjsKKworCSBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7 CiB9CisKK3N0YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50 IHNpZykKK3sKKwlfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7 Cit9CisKICNkZWZpbmUgUE9XRVJfRElSICIvc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAw OjAyLjAvcG93ZXIiCiAvKiBXZSBqdXN0IGxlYWsgdGhpcyBvbiBleGl0IC4uLiAqLwogaW50IHBt X3N0YXR1c19mZCA9IC0xOwpAQCAtNTg1LDYgKzYxMyw2MSBAQCBib29sIGlndF9zZXR1cF9ydW50 aW1lX3BtKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgaWd0X2Rpc2FibGVfcnVudGlt ZV9wbSh2b2lkKQoreworCWludCBmZDsKKwlzc2l6ZV90IHNpemU7CisJY2hhciBidWZbNl07CisK KwlpZiAocG1fc3RhdHVzX2ZkIDwgMCkgeworCQlmZCA9IG9wZW4oUE9XRVJfRElSICIvYXV0b3N1 c3BlbmRfZGVsYXlfbXMiLCBPX1JEV1IpOworCQlpZiAoZmQgPCAwKQorCQkJcmV0dXJuIGZhbHNl OworCisJCXNpemUgPSByZWFkKGZkLCBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAorCQkJ ICAgIHNpemVvZihfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kKSk7CisKKwkJaWYgKHNpemUg PD0gMCkgeworCQkJY2xvc2UoZmQpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJc3RyY2hv bXAoX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCk7CisJCWlndF9pbnN0YWxsX2V4aXRfaGFu ZGxlcihfX2lndF9wbV9ydW50aW1lX2V4aXRfaGFuZGxlcik7CisJCWNsb3NlKGZkKTsKKwl9CisK KwkvKiBXZSBrbm93IHdlIHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5IHRvIGRpc2FibGUg aXQgbm93LiAqLworCWZkID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwgT19SRFdSKTsKKwlp Z3RfYXNzZXJ0X2YoZmQgPj0gMCwgIkNhbid0IG9wZW4gIiBQT1dFUl9ESVIgIi9jb250cm9sXG4i KTsKKworCWlmIChwbV9zdGF0dXNfZmQgPCAwKSB7CisJCWlndF9hc3NlcnQocmVhZChmZCwgX19p Z3RfcG1fcnVudGltZV9jb250cm9sLAorCQkJCXNpemVvZihfX2lndF9wbV9ydW50aW1lX2NvbnRy b2wpKSA+IDApOworCQlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wpOworCisJCWln dF9kZWJ1ZygiU2F2ZWQgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGFzICclcycgYW5kICclcydc biIsCisJCQkgIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCisJCQkgIF9faWd0X3BtX3J1 bnRpbWVfY29udHJvbCk7CisJfQorCisJc2l6ZSA9IHdyaXRlKGZkLCAib25cbiIsIDMpOworCWln dF9hc3NlcnQoc2l6ZSA9PSAzKTsKKwlsc2VlayhmZCwgMCwgU0VFS19TRVQpOworCXNpemUgPSBy ZWFkKGZkLCBidWYsIEFSUkFZX1NJWkUoYnVmKSk7CisJaWd0X2Fzc2VydChzaXplID09IDMpOwor CWlndF9hc3NlcnQoc3RybmNtcChidWYsICJvblxuIiwgMykgPT0gMCk7CisJY2xvc2UoZmQpOwor CisJaWYgKHBtX3N0YXR1c19mZCA8IDApIHsKKwkJcG1fc3RhdHVzX2ZkID0gb3BlbihQT1dFUl9E SVIgIi9ydW50aW1lX3N0YXR1cyIsIE9fUkRPTkxZKTsKKwkJaWd0X2Fzc2VydF9mKHBtX3N0YXR1 c19mZCA+PSAwLAorCQkJICAgICAiQ2FuJ3Qgb3BlbiAiIFBPV0VSX0RJUiAiL3J1bnRpbWVfc3Rh dHVzXG4iKTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoqCiAgKiBpZ3RfZ2V0X3J1bnRp bWVfcG1fc3RhdHVzOgogICoKQEAgLTYyOCwzICs3MTEsMzAgQEAgYm9vbCBpZ3Rfd2FpdF9mb3Jf cG1fc3RhdHVzKGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIHN0YXR1cykKIHsKIAlyZXR1cm4g aWd0X3dhaXQoaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cygpID09IHN0YXR1cywgMTAwMDAsIDEw MCk7CiB9CisKKy8qKgorICogZG1jX2xvYWRlZDoKKyAqIEBkZWJ1Z2ZzOiBmZCB0byB0aGUgZGVi dWdmcyBkaXIuCisKKyAqIENoZWNrIHdoZXRoZXIgRE1DIEZXIGlzIGxvYWRlZCBvciBub3QuIERN QyBGVyBpcyByZXF1aXJlIGZvciBmZXcgRGlzcGxheSBDCisgKiBzdGF0ZXMgbGlrZSBEQzUgYW5k IERDNi4gRlcgZG9lcyB0aGUgQ29udGV4dCBTYXZlIGFuZCBSZXN0b3JlIGR1cmluZyBEaXNwbGF5 CisgKiBDIFN0YXRlcyBlbnRyeSBhbmQgZXhpdC4KKyAqCisgKiBSZXR1cm5zOgorICogVHJ1ZSBp ZiBETUMgRlcgaXMgbG9hZGVkIG90aGVyd2lzZSBmYWxzZS4KKyAqLworYm9vbCBpZ3RfcG1fZG1j X2xvYWRlZChpbnQgZGVidWdmcykKK3sKKwlpZ3RfcmVxdWlyZShkZWJ1Z2ZzICE9IC0xKTsKKwlj aGFyIGJ1ZlsxNV07CisJaW50IGxlbjsKKworCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMs ICJpOTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworCWlmIChsZW4gPCAwKQor CQlyZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLwor CisJYnVmW2xlbl0gPSAnXDAnOworCisJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7CisJcmV0 dXJuIHN0cnN0cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOworfQpkaWZmIC0tZ2l0IGEvbGliL2ln dF9wbS5oIGIvbGliL2lndF9wbS5oCmluZGV4IDEwY2M2NzkuLjk3OWIzNDYgMTAwNjQ0Ci0tLSBh L2xpYi9pZ3RfcG0uaAorKysgYi9saWIvaWd0X3BtLmgKQEAgLTI1LDggKzI1LDggQEAKICNkZWZp bmUgSUdUX1BNX0gKIAogdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCk7 Ci1pbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7 Ci12b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KGludDhfdCAq cG1fZGF0YSk7Cit2b2lkIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo dm9pZCk7Cit2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpOwogCiAvKioKICAqIGlndF9ydW50aW1lX3BtX3N0YXR1czoKQEAgLTQ3LDggKzQ3LDEwIEBA IGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIHsKIH07CiAKIGJvb2wgaWd0X3NldHVwX3J1bnRp bWVfcG0odm9pZCk7Citib29sIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0odm9pZCk7CiB2b2lkIGln dF9yZXN0b3JlX3J1bnRpbWVfcG0odm9pZCk7CiBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBp Z3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKHZvaWQpOwogYm9vbCBpZ3Rfd2FpdF9mb3JfcG1fc3Rh dHVzKGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIHN0YXR1cyk7Citib29sIGlndF9wbV9kbWNf bG9hZGVkKGludCBkZWJ1Z2ZzKTsKIAogI2VuZGlmIC8qIElHVF9QTV9IICovCmRpZmYgLS1naXQg YS90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFj a2xpZ2h0LmMKaW5kZXggNGMxYmZmNS4uOWE1ZjRjMyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9p OTE1X3BtX2JhY2tsaWdodC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwpA QCAtNDcsNyArNDcsNiBAQCBzdHJ1Y3QgY29udGV4dCB7CiAjZGVmaW5lIEZBREVTUEVFRCAxMDAg LyogbWlsbGlzZWNvbmRzIGJldHdlZW4gc3RlcHMgKi8KIAogSUdUX1RFU1RfREVTQ1JJUFRJT04o IkJhc2ljIGJhY2tsaWdodCBzeXNmcyB0ZXN0Iik7Ci1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0g TlVMTDsKIAogc3RhdGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hh ciAqZm5hbWUpCiB7CkBAIC0yMzUsNyArMjM0LDcgQEAgaWd0X21haW4KIAkJaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmZmIpOwogCiAJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRpc3BsYXksIGRp c3BsYXkuaXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwotCQlwbV9k YXRhID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCQlpZ3Rf cG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAJfQogCiAJaWd0X3N1YnRl c3QoImJhc2ljLWJyaWdodG5lc3MiKQpAQCAtMjU1LDggKzI1NCw3IEBAIGlndF9tYWluCiAKIAkJ aWd0X2Rpc3BsYXlfZmluaSgmZGlzcGxheSk7CiAJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1f ZmQsICZmYik7Ci0JCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHBt X2RhdGEpOwotCQlmcmVlKHBtX2RhdGEpOworCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudCgpOwogCQljbG9zZShkaXNwbGF5LmRybV9mZCk7CiAJfQogfQpkaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5j CmluZGV4IGEyYzlkMGUuLjJkMmY3N2IgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9y cG0uYworKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKQEAgLTEyMiw4ICsxMjIsNiBAQCBz dHJ1Y3QgbW9kZXNldF9wYXJhbXMgbHBzcF9tb2RlX3BhcmFtczsKIHN0cnVjdCBtb2Rlc2V0X3Bh cmFtcyBub25fbHBzcF9tb2RlX3BhcmFtczsKIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyAqZGVmYXVs dF9tb2RlX3BhcmFtczsKIAotc3RhdGljIGludDhfdCAqcG1fZGF0YSA9IE5VTEw7Ci0KIHN0YXRp YyBpbnQgbW9kcHJvYmUoY29uc3QgY2hhciAqZHJpdmVyKQogewogCXJldHVybiBpZ3Rfa21vZF9s b2FkKGRyaXZlciwgTlVMTCk7CkBAIC03MTAsMjEgKzcwOCw2IEBAIHN0YXRpYyB2b2lkIHNldHVw X3BjOCh2b2lkKQogCWhhc19wYzggPSB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBkbWNfbG9hZGVk KHZvaWQpCi17Ci0JY2hhciBidWZbMTVdOwotCWludCBsZW47Ci0KLQlsZW4gPSBpZ3Rfc3lzZnNf cmVhZChkZWJ1Z2ZzLCAiaTkxNV9kbWNfaW5mbyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKLQlp ZiAobGVuIDwgMCkKLQkgICAgcmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMg cmVxdWlyZW1lbnQgKi8KLQotCWJ1ZltsZW5dID0gJ1wwJzsKLQotCWlndF9pbmZvKCJETUM6ICVz XG4iLCBidWYpOwotCXJldHVybiBzdHJzdHIoYnVmLCAiZncgbG9hZGVkOiB5ZXMiKTsKLX0KLQog c3RhdGljIHZvaWQgZHVtcF9maWxlKGludCBkaXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewog CWNoYXIgKmNvbnRlbnRzOwpAQCAtNzUxLDcgKzczNCw3IEBAIHN0YXRpYyBib29sIHNldHVwX2Vu dmlyb25tZW50KHZvaWQpCiAKIAlpbml0X21vZGVfc2V0X2RhdGEoJm1zX2RhdGEpOwogCi0JcG1f ZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKKwlpZ3Rf cG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAKIAloYXNfcnVudGltZV9w bSA9IGlndF9zZXR1cF9ydW50aW1lX3BtKCk7CiAJc2V0dXBfcGM4KCk7CkBAIC03NTksNyArNzQy LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9pZCkKIAlpZ3RfaW5mbygiUnVu dGltZSBQTSBzdXBwb3J0OiAlZFxuIiwgaGFzX3J1bnRpbWVfcG0pOwogCWlndF9pbmZvKCJQQzgg cmVzaWRlbmN5IHN1cHBvcnQ6ICVkXG4iLCBoYXNfcGM4KTsKIAlpZ3RfcmVxdWlyZShoYXNfcnVu dGltZV9wbSk7Ci0JaWd0X3JlcXVpcmUoZG1jX2xvYWRlZCgpKTsKKwlpZ3RfcmVxdWlyZShpZ3Rf cG1fZG1jX2xvYWRlZChkZWJ1Z2ZzKSk7CiAKIG91dDoKIAlkaXNhYmxlX2FsbF9zY3JlZW5zKCZt c19kYXRhKTsKQEAgLTc3Niw4ICs3NTksNyBAQCBzdGF0aWMgdm9pZCB0ZWFyZG93bl9lbnZpcm9u bWVudCh2b2lkKQogCiAJaWd0X3Jlc3RvcmVfcnVudGltZV9wbSgpOwogCi0JaWd0X3BtX3Jlc3Rv cmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7Ci0JZnJlZShwbV9kYXRhKTsK KwlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwogCiAJZmluaV9t b2RlX3NldF9kYXRhKCZtc19kYXRhKTsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldg==