From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id EFEA989C84 for ; Wed, 4 Sep 2019 17:54:12 +0000 (UTC) From: Anshuman Gupta Date: Wed, 4 Sep 2019 23:21:04 +0530 Message-Id: <20190904175109.24626-2-anshuman.gupta@intel.com> In-Reply-To: <20190904175109.24626-1-anshuman.gupta@intel.com> References: <20190904175109.24626-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 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 NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGxpYi9pZ3RfcG0uaCAgICAgICAg ICAgICAgICAgICB8ICAgNyArLQogdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jIHwgICA2 ICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMgICAgICAgfCAgMzkgKy0tLS0tCiA0IGZpbGVz IGNoYW5nZWQsIDE3OSBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKaW5kZXggZmQyMjI3M2EuLjU0MGE5ZjkyIDEw MDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysrIGIvbGliL2lndF9wbS5jCkBAIC0zOCw2ICszOCw3 IEBACiAjaW5jbHVkZSAiZHJtdGVzdC5oIgogI2luY2x1ZGUgImlndF9wbS5oIgogI2luY2x1ZGUg ImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKIAogLyoqCiAgKiBTRUNUSU9OOmln dF9wbQpAQCAtNTgsMTYgKzU5LDMwIEBAIGVudW0gewogCVBPTElDWV9NSU5fUE9XRVIgPSAyCiB9 OwogCisjZGVmaW5lIE1TUl9QS0dfQ1NUX0NPTkZJR19DT05UUk9MCTB4RTIKKy8qCisgKiBCZWxv dyBQS0cgQ1NUIGxpbWl0IG1hc2sgYW5kIFBDOCBiaXRzIGFyZSBtZWFudCBmb3IKKyAqIEhTVyxC RFcgU0tMLElDTCBhbmQgR29sZG1vbnQgTWljcm9hcmNoIGFuZCBmdXR1cmUgcGxhdGZvcm1zLgor ICogUmVmZXIgSUEgUy9XIGRldmVsb3BlcnMgbWFudWFsIHZvbDNjIHBhcnQzIGNoYXB0ZXI6MzUK KyAqLworI2RlZmluZSAgUEtHX0NTVF9MSU1JVF9NQVNLCQkweEYKKyNkZWZpbmUgIFBLR19DU1Rf TElNSVRfQzgJCTB4NgorCiAjZGVmaW5lIE1BWF9QRVJGT1JNQU5DRV9TVFIJIm1heF9wZXJmb3Jt YW5jZVxuIgogI2RlZmluZSBNRURJVU1fUE9XRVJfU1RSCSJtZWRpdW1fcG93ZXJcbiIKICNkZWZp bmUgTUlOX1BPV0VSX1NUUgkJIm1pbl9wb3dlclxuIgogLyogUmVtZW1iZXIgdG8gZml4IHRoaXMg aWYgYWRkaW5nIGxvbmdlciBzdHJpbmdzICovCiAjZGVmaW5lIE1BWF9QT0xJQ1lfU1RSTEVOCXN0 cmxlbihNQVhfUEVSRk9STUFOQ0VfU1RSKQoraW50OF90ICpfX3NhdGFfcG1fcG9saWNpZXM7Citp bnQgX19zY3NpX2hvc3RfY250OwogCiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1l X3Bvd2VyX3NhdmVbNjRdOwogc3RhdGljIGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2Nv bnRyb2xfcGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2 NF07CiAKK3N0YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50 IHNpZyk7CitzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5h Z2VtZW50KHZvaWQpOworCiBzdGF0aWMgaW50IF9faWd0X3BtX2F1ZGlvX3Jlc3RvcmVfcnVudGlt ZV9wbSh2b2lkKQogewogCWludCBmZDsKQEAgLTI4MCwzOSArMjk1LDI2IEBAIHZvaWQgaWd0X3Bt X2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpCiAJCWlndF9kZWJ1ZygiRmFpbGVkIHRvIGVu YWJsZSBhdWRpbyBydW50aW1lIFBNISAoJWQpXG4iLCAtZXJyKTsKIH0KIAotLyoqCi0gKiBpZ3Rf cG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50OgotICoKLSAqIEVuYWJsZSB0aGUg bWluX3Bvd2VyIHBvbGljeSBmb3IgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQuCi0gKiBXaXRo b3V0IHRoaXMgd2UgY2Fubm90IHJlYWNoIGRlZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCi0gKgot ICogV2UgZG9uJ3QgaGF2ZSBhbnkgYXNzZXJ0aW9ucyBvbiBvcGVuIHNpbmNlIHRoZSBzeXN0ZW0g bWlnaHQgbm90IGhhdmUKLSAqIGEgU0FUQSBob3N0LgotICoKLSAqIFJldHVybnM6Ci0gKiBBbiBv cGFxdWUgcG9pbnRlciB0byB0aGUgZGF0YSBuZWVkZWQgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCB2 YWx1ZXMKLSAqIGFmdGVyIHRoZSB0ZXN0IGhhcyB0ZXJtaW5hdGVkLCBvciBOVUxMIGlmIFNBVEEg bGluayBwb3dlciBtYW5hZ2VtZW50Ci0gKiBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHBvaW50ZXIg c2hvdWxkIGJlIGZyZWVkIHdoZW4gbm8gbG9uZ2VyIHVzZWQKLSAqICh0eXBpY2FsbHkgYWZ0ZXIg aGF2aW5nIGNhbGxlZCByZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkpLgotICov Ci1pbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkK K3N0YXRpYyB2b2lkIF9faWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2 b2lkKQogewogCWludCBmZCwgaTsKIAlzc2l6ZV90IGxlbjsKIAljaGFyICpidWY7CiAJY2hhciAq ZmlsZV9uYW1lOwotCWludDhfdCAqbGlua19wbV9wb2xpY2llcyA9IE5VTEw7CisJaW50OF90IHBv bGljeTsKIAogCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7CiAJYnVmID0gbWFsbG9jKE1B WF9QT0xJQ1lfU1RSTEVOICsgMSk7CiAKLQlmb3IgKGkgPSAwOyA7IGkrKykgewotCQlpbnQ4X3Qg cG9saWN5OwotCisJZm9yIChfX3Njc2lfaG9zdF9jbnQgPSAwOyA7IF9fc2NzaV9ob3N0X2NudCsr KSB7CiAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCiAJCQkgIi9zeXMvY2xhc3Mvc2Nz aV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5IiwKLQkJCSBpKTsKKwkJ CSBfX3Njc2lfaG9zdF9jbnQpOwogCisJCS8qCisJCSAqIFdlIGRvbid0IGhhdmUgYW55IGFzc2Vy dGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtCisJCSAqIG1pZ2h0IG5vdCBoYXZlIGEgU0FU QSBob3N0LgorCQkgKi8KIAkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKIAkJaWYgKGZk IDwgMCkKIAkJCWJyZWFrOwpAQCAtMzMyLDEyICszMzQsMjYgQEAgaW50OF90ICppZ3RfcG1fZW5h YmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCiAJCWVsc2UKIAkJCXBvbGljeSA9 IFBPTElDWV9VTktOT1dOOwogCi0JCWlmICghKGkgJSAyNTYpKQotCQkJbGlua19wbV9wb2xpY2ll cyA9IHJlYWxsb2MobGlua19wbV9wb2xpY2llcywKLQkJCQkJCSAgIChpIC8gMjU2ICsgMSkgKiAy NTYgKyAxKTsKKwkJaWYgKCEoX19zY3NpX2hvc3RfY250ICUgMjU2KSkKKwkJCV9fc2F0YV9wbV9w b2xpY2llcyA9IHJlYWxsb2MoX19zYXRhX3BtX3BvbGljaWVzLAorCQkJCQkJICAgICAoX19zY3Np X2hvc3RfY250IC8gMjU2ICsgMSkKKwkJCQkJCSAgICAgKiAyNTYgKyAxKTsKKworCQlfX3NhdGFf cG1fcG9saWNpZXNbX19zY3NpX2hvc3RfY250XSA9IHBvbGljeTsKKwkJY2xvc2UoZmQpOworCX0K KworCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxlcihfX2lndF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9o YW5kbGVyKTsKKworCWZvciAoaSA9IDA7IGkgPCBfX3Njc2lfaG9zdF9jbnQ7IGkrKykgeworCQlz bnByaW50ZihmaWxlX25hbWUsIFBBVEhfTUFYLAorCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9o b3N0JWQvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeSIsCisJCQkgaSk7CisJCWZkID0gb3Bl bihmaWxlX25hbWUsIE9fUkRXUik7CisJCWlmIChmZCA8IDApCisJCQlicmVhazsKIAotCQlsaW5r X3BtX3BvbGljaWVzW2ldID0gcG9saWN5OwotCQlsaW5rX3BtX3BvbGljaWVzW2kgKyAxXSA9IDA7 CisJCXBvbGljeSA9IF9fc2F0YV9wbV9wb2xpY2llc1tpXTsKIAogCQkvKiBJZiB0aGUgcG9saWN5 IGlzIHNvbWV0aGluZyB3ZSBkb24ndCBrbm93IGFib3V0LAogCQkgKiBkb24ndCB0b3VjaCBpdCwg c2luY2Ugd2UgbWlnaHQgcG90ZW50aWFsbHkgYnJlYWsgdGhpbmdzLgpAQCAtMzU1LDM5ICszNzEs MjUgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpCiAJfQogCWZyZWUoYnVmKTsKIAlmcmVlKGZpbGVfbmFtZSk7Ci0KLQlyZXR1cm4gbGlua19w bV9wb2xpY2llczsKIH0KIAotLyoqCi0gKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudDoKLSAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVkIGxp bmsgUE0gcG9saWNpZXM7Ci0gKiAgICAgICAgICAgSWYgTlVMTCBpcyBwYXNzZWQgd2UgZm9yY2Ug ZW5hYmxlIHRoZSAibWF4X3BlcmZvcm1hbmNlIiBwb2xpY3kuCi0gKgotICogUmVzdG9yZSB0aGUg bGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKLSAqIHByaW9yIHRv IGVuYWJsaW5nIG1pbl9wb3dlci4KLSAqCi0gKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9y dHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCi0gKiAgICAgICAgIHBsYWNlIGR1 cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycwotICogICAg ICAgICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCi0g Ki8KLXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50OF90 ICpwbV9kYXRhKQotCitzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dl cl9tYW5hZ2VtZW50KHZvaWQpCiB7CiAJaW50IGZkLCBpOwogCWNoYXIgKmZpbGVfbmFtZTsKIAor CWlmICghX19zYXRhX3BtX3BvbGljaWVzKQorCQlyZXR1cm47CisKIAkvKiBEaXNrIHJ1bnRpbWUg UE0gcG9saWNpZXMuICovCiAJZmlsZV9uYW1lID0gbWFsbG9jKFBBVEhfTUFYKTsKLQlmb3IgKGkg PSAwOyA7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBfX3Njc2lfaG9zdF9jbnQ7IGkrKykgewog CQlpbnQ4X3QgcG9saWN5OwogCi0JCWlmICghcG1fZGF0YSkKLQkJCXBvbGljeSA9IFBPTElDWV9N QVhfUEVSRk9STUFOQ0U7Ci0JCWVsc2UgaWYgKHBtX2RhdGFbaV0gPT0gUE9MSUNZX1VOS05PV04p CisJCWlmIChfX3NhdGFfcG1fcG9saWNpZXNbaV0gPT0gUE9MSUNZX1VOS05PV04pCiAJCQljb250 aW51ZTsKIAkJZWxzZQotCQkJcG9saWN5ID0gcG1fZGF0YVtpXTsKKwkJCXBvbGljeSA9IF9fc2F0 YV9wbV9wb2xpY2llc1tpXTsKIAogCQlzbnByaW50ZihmaWxlX25hbWUsIFBBVEhfTUFYLAogCQkJ ICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGlj eSIsCkBAIC00MjEsNyArNDIzLDQ4IEBAIHZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bv d2VyX21hbmFnZW1lbnQoaW50OF90ICpwbV9kYXRhKQogCQljbG9zZShmZCk7CiAJfQogCWZyZWUo ZmlsZV9uYW1lKTsKKwlmcmVlKF9fc2F0YV9wbV9wb2xpY2llcyk7CisJX19zYXRhX3BtX3BvbGlj aWVzID0gTlVMTDsKIH0KKworLyoqCisgKiBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50OgorICoKKyAqIEVuYWJsZSB0aGUgbWluX3Bvd2VyIHBvbGljeSBmb3IgU0FUQSBs aW5rIHBvd2VyIG1hbmFnZW1lbnQuCisgKiBXaXRob3V0IHRoaXMgd2UgY2Fubm90IHJlYWNoIGRl ZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCisgKi8KK3ZvaWQgaWd0X3BtX2VuYWJsZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQoreworCS8qIENoZWNrIGlmIGhhcyBiZWVuIGFscmVh ZHkgc2F2ZWQuICovCisJaWYgKF9fc2F0YV9wbV9wb2xpY2llcykKKwkJcmV0dXJuOworCisJIF9f aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworfQorCisvKioKKyAq IGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50OgorICoKKyAqIFJlc3Rv cmUgdGhlIGxpbmsgcG93ZXIgbWFuYWdlbWVudCBwb2xpY2llcyB0byB0aGUgdmFsdWVzCisgKiBw cmlvciB0byBlbmFibGluZyBtaW5fcG93ZXIuCisgKgorICogQ2F2ZWF0OiBJZiB0aGUgc3lzdGVt IHN1cHBvcnRzIGhvdHBsdWdnaW5nIGFuZCBob3RwbHVnZ2luZyB0YWtlcworICogICAgICAgICBw bGFjZSBkdXJpbmcgb3VyIHRlc3Rpbmcgc28gdGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMK KyAqICAgICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhv c3RzLgorICovCit2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KHZvaWQpCit7CisJaWYgKCFfX3NhdGFfcG1fcG9saWNpZXMpCisJCXJldHVybjsKKworCSBfX2ln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cit9CisKK3N0YXRpYyB2 b2lkIF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZykKK3sKKwlfX2ln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cit9CisKICNkZWZpbmUg UE9XRVJfRElSICIvc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAyLjAvcG93ZXIiCiAv KiBXZSBqdXN0IGxlYWsgdGhpcyBvbiBleGl0IC4uLiAqLwogaW50IHBtX3N0YXR1c19mZCA9IC0x OwpAQCAtNTg1LDYgKzYyOCwzNCBAQCBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpCiAJ cmV0dXJuIHRydWU7CiB9CiAKKy8qKgorICogaWd0X2Rpc2FibGVfcnVudGltZV9wbToKKyAqCisg KiBEaXNhYmxlIHRoZSBydW50aW1lIHBtIGZvciBpOTE1IGRldmljZS4KKyAqIGlndF9kaXNhYmxl X3J1bnRpbWVfcG0gYXNzdW1lcyB0aGF0IGlndF9zZXR1cF9ydW50aW1lX3BtIGhhcyBhbHJlYWR5 CisgKiBjYWxsZWQgdG8gc2F2ZSBydW50aW1lIGF1dG9zdXNwZW5kIGFuZCBjb250cm9sIGF0dHJp YnV0ZXMuCisgKi8KK3ZvaWQgaWd0X2Rpc2FibGVfcnVudGltZV9wbSh2b2lkKQoreworCWludCBm ZDsKKwlzc2l6ZV90IHNpemU7CisJY2hhciBidWZbNl07CisKKwlpZ3RfYXNzZXJ0X2ZkKHBtX3N0 YXR1c19mZCk7CisKKwkvKiBXZSBrbm93IHdlIHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5 IHRvIGRpc2FibGUgaXQgbm93LiAqLworCWZkID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwg T19SRFdSKTsKKwlpZ3RfYXNzZXJ0X2YoZmQgPj0gMCwgIkNhbid0IG9wZW4gIiBQT1dFUl9ESVIg Ii9jb250cm9sXG4iKTsKKworCXNpemUgPSB3cml0ZShmZCwgIm9uXG4iLCAzKTsKKwlpZ3RfYXNz ZXJ0KHNpemUgPT0gMyk7CisJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKKwlzaXplID0gcmVhZChm ZCwgYnVmLCBBUlJBWV9TSVpFKGJ1ZikpOworCWlndF9hc3NlcnQoc2l6ZSA9PSAzKTsKKwlpZ3Rf YXNzZXJ0KHN0cm5jbXAoYnVmLCAib25cbiIsIDMpID09IDApOworCWNsb3NlKGZkKTsKK30KKwog LyoqCiAgKiBpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzOgogICoKQEAgLTYyOCwzICs2OTksNTMg QEAgYm9vbCBpZ3Rfd2FpdF9mb3JfcG1fc3RhdHVzKGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVz IHN0YXR1cykKIHsKIAlyZXR1cm4gaWd0X3dhaXQoaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cygp ID09IHN0YXR1cywgMTAwMDAsIDEwMCk7CiB9CisKKy8qKgorICogZG1jX2xvYWRlZDoKKyAqIEBk ZWJ1Z2ZzOiBmZCB0byB0aGUgZGVidWdmcyBkaXIuCisKKyAqIENoZWNrIHdoZXRoZXIgRE1DIEZX IGlzIGxvYWRlZCBvciBub3QuIERNQyBGVyBpcyByZXF1aXJlIGZvciBmZXcgRGlzcGxheSBDCisg KiBzdGF0ZXMgbGlrZSBEQzUgYW5kIERDNi4gRlcgZG9lcyB0aGUgQ29udGV4dCBTYXZlIGFuZCBS ZXN0b3JlIGR1cmluZyBEaXNwbGF5CisgKiBDIFN0YXRlcyBlbnRyeSBhbmQgZXhpdC4KKyAqCisg KiBSZXR1cm5zOgorICogVHJ1ZSBpZiBETUMgRlcgaXMgbG9hZGVkIG90aGVyd2lzZSBmYWxzZS4K KyAqLworYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcykKK3sKKwljaGFyIGJ1Zlsx NV07CisJaW50IGxlbjsKKworCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJpOTE1X2Rt Y19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworCWlmIChsZW4gPCAwKQorCQlyZXR1cm4g dHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLworCisJYnVmW2xl bl0gPSAnXDAnOworCisJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7CisJcmV0dXJuIHN0cnN0 cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOworfQorCisvKioKKyAqIGlzX2Jpb3NfbGltaXRzX3Bj OF9wbHVzX3Jlc2lkZW5jaWVzOgorCisgKiBDaGVjayB3aGV0aGVyIEJJT1MgaGFzIGRpc2FibGVk IHRoZSBQQzggcGFja2FnZSBkZWVwZXIgc3RhdGUuCisgKgorICogUmV0dXJuczoKKyAqIFRydWUg aWYgUEM4KyBwYWNrYWdlIGRlZXBlciBzdGF0ZSBlbmFibGVkIG9uIG1hY2hpbmUgb3RoZXJ3aXNl IGZhbHNlLgorICovCitib29sIGlzX2Jpb3NfbGltaXRzX3BjOF9wbHVzX3Jlc2lkZW5jaWVzKGlu dCBtc3JfZmQpCit7CisJaW50IHJjOworCXVpbnQ2NF90IHZhbDsKKworCXJjID0gcHJlYWQobXNy X2ZkLCAmdmFsLCBzaXplb2YodWludDY0X3QpLCBNU1JfUEtHX0NTVF9DT05GSUdfQ09OVFJPTCk7 CisJaWYgKHJjICE9IHNpemVvZih2YWwpKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKCh2YWwgJiBQ S0dfQ1NUX0xJTUlUX01BU0spIDwgUEtHX0NTVF9MSU1JVF9DOCkgeworCQlpZ3RfaW5mbygiUEtH IEMtc3RhdGVzIGxpbWl0ZWQgYmVsb3cgUEM4IGJ5IHRoZSBCSU9TXG4iKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworCXJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5oIGIv bGliL2lndF9wbS5oCmluZGV4IDEwY2M2Nzk0Li5mNGQ2YzQ5NiAxMDA2NDQKLS0tIGEvbGliL2ln dF9wbS5oCisrKyBiL2xpYi9pZ3RfcG0uaApAQCAtMjUsOCArMjUsOCBAQAogI2RlZmluZSBJR1Rf UE1fSAogCiB2b2lkIGlndF9wbV9lbmFibGVfYXVkaW9fcnVudGltZV9wbSh2b2lkKTsKLWludDhf dCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsKLXZvaWQg aWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50OF90ICpwbV9kYXRh KTsKK3ZvaWQgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsK K3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7CiAK IC8qKgogICogaWd0X3J1bnRpbWVfcG1fc3RhdHVzOgpAQCAtNDcsOCArNDcsMTEgQEAgZW51bSBp Z3RfcnVudGltZV9wbV9zdGF0dXMgewogfTsKIAogYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2 b2lkKTsKK3ZvaWQgaWd0X2Rpc2FibGVfcnVudGltZV9wbSh2b2lkKTsKIHZvaWQgaWd0X3Jlc3Rv cmVfcnVudGltZV9wbSh2b2lkKTsKIGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIGlndF9nZXRf cnVudGltZV9wbV9zdGF0dXModm9pZCk7CiBib29sIGlndF93YWl0X2Zvcl9wbV9zdGF0dXMoZW51 bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgc3RhdHVzKTsKK2Jvb2wgaWd0X3BtX2RtY19sb2FkZWQo aW50IGRlYnVnZnMpOworYm9vbCBpc19iaW9zX2xpbWl0c19wYzhfcGx1c19yZXNpZGVuY2llcyhp bnQgbXNyX2ZkKTsKIAogI2VuZGlmIC8qIElHVF9QTV9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMK aW5kZXggNGMxYmZmNWIuLjlhNWY0YzM3IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1f YmFja2xpZ2h0LmMKKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCkBAIC00Nyw3 ICs0Nyw2IEBAIHN0cnVjdCBjb250ZXh0IHsKICNkZWZpbmUgRkFERVNQRUVEIDEwMCAvKiBtaWxs aXNlY29uZHMgYmV0d2VlbiBzdGVwcyAqLwogCiBJR1RfVEVTVF9ERVNDUklQVElPTigiQmFzaWMg YmFja2xpZ2h0IHN5c2ZzIHRlc3QiKTsKLXN0YXRpYyBpbnQ4X3QgKnBtX2RhdGEgPSBOVUxMOwog CiBzdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyICpmbmFt ZSkKIHsKQEAgLTIzNSw3ICsyMzQsNyBAQCBpZ3RfbWFpbgogCQlpZ3RfcGxhbmVfc2V0X2ZiKHBy aW1hcnksICZmYik7CiAKIAkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGlzcGxheSwgZGlzcGxheS5p c19hdG9taWMgPyBDT01NSVRfQVRPTUlDIDogQ09NTUlUX0xFR0FDWSk7Ci0JCXBtX2RhdGEgPSBp Z3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CisJCWlndF9wbV9lbmFi bGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiYmFz aWMtYnJpZ2h0bmVzcyIpCkBAIC0yNTUsOCArMjU0LDcgQEAgaWd0X21haW4KIAogCQlpZ3RfZGlz cGxheV9maW5pKCZkaXNwbGF5KTsKIAkJaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmZi KTsKLQkJaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7 Ci0JCWZyZWUocG1fZGF0YSk7CisJCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5h Z2VtZW50KCk7CiAJCWNsb3NlKGRpc3BsYXkuZHJtX2ZkKTsKIAl9CiB9CmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKaW5kZXgg MjE2OGZmNzIuLmQwYTBiYzkwIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMK KysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCkBAIC01MiwxMSArNTIsNiBAQAogI2luY2x1 ZGUgImlndF9kZXZpY2UuaCIKICNpbmNsdWRlICJpZ3RfZWRpZC5oIgogCi0jZGVmaW5lIE1TUl9Q S0dfQ1NUX0NPTkZJR19DT05UUk9MCTB4RTIKLS8qIEhTVy9CRFc6ICovCi0jZGVmaW5lICBQS0df Q1NUX0xJTUlUX01BU0sJCTB4RgotI2RlZmluZSAgUEtHX0NTVF9MSU1JVF9DOAkJMHg2Ci0KICNk ZWZpbmUgTVNSX1BDOF9SRVMJMHg2MzAKICNkZWZpbmUgTVNSX1BDOV9SRVMJMHg2MzEKICNkZWZp bmUgTVNSX1BDMTBfUkVTCTB4NjMyCkBAIC0xMjMsOCArMTE4LDYgQEAgc3RydWN0IG1vZGVzZXRf cGFyYW1zIGxwc3BfbW9kZV9wYXJhbXM7CiBzdHJ1Y3QgbW9kZXNldF9wYXJhbXMgbm9uX2xwc3Bf bW9kZV9wYXJhbXM7CiBzdHJ1Y3QgbW9kZXNldF9wYXJhbXMgKmRlZmF1bHRfbW9kZV9wYXJhbXM7 CiAKLXN0YXRpYyBpbnQ4X3QgKnBtX2RhdGEgPSBOVUxMOwotCiBzdGF0aWMgaW50IG1vZHByb2Jl KGNvbnN0IGNoYXIgKmRyaXZlcikKIHsKIAlyZXR1cm4gaWd0X2ttb2RfbG9hZChkcml2ZXIsIE5V TEwpOwpAQCAtMTQ2LDE1ICsxMzksNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c19wYzhfcGx1c19y ZXNpZGVuY2llcyh2b2lkKQogCWlmIChyYyAhPSBzaXplb2YodmFsKSkKIAkJcmV0dXJuIGZhbHNl OwogCi0JcmMgPSBwcmVhZChtc3JfZmQsICZ2YWwsIHNpemVvZih1aW50NjRfdCksIE1TUl9QS0df Q1NUX0NPTkZJR19DT05UUk9MKTsKLQlpZiAocmMgIT0gc2l6ZW9mKHZhbCkpCi0JCXJldHVybiBm YWxzZTsKLQlpZiAoKHZhbCAmIFBLR19DU1RfTElNSVRfTUFTSykgPCBQS0dfQ1NUX0xJTUlUX0M4 KSB7Ci0JCWlndF9pbmZvKCJQS0cgQy1zdGF0ZXMgbGltaXRlZCBiZWxvdyBQQzggYnkgdGhlIEJJ T1NcbiIpOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JcmV0dXJuIHRydWU7CisJcmV0dXJuIGlz X2Jpb3NfbGltaXRzX3BjOF9wbHVzX3Jlc2lkZW5jaWVzKG1zcl9mZCk7CiB9CiAKIHN0YXRpYyB1 aW50NjRfdCBnZXRfcmVzaWRlbmN5KHVpbnQzMl90IHR5cGUpCkBAIC03NTUsMjEgKzc0MCw2IEBA IHN0YXRpYyB2b2lkIHNldHVwX3BjOCh2b2lkKQogCWhhc19wYzggPSB0cnVlOwogfQogCi1zdGF0 aWMgYm9vbCBkbWNfbG9hZGVkKHZvaWQpCi17Ci0JY2hhciBidWZbMTVdOwotCWludCBsZW47Ci0K LQlsZW4gPSBpZ3Rfc3lzZnNfcmVhZChkZWJ1Z2ZzLCAiaTkxNV9kbWNfaW5mbyIsIGJ1Ziwgc2l6 ZW9mKGJ1ZikgLSAxKTsKLQlpZiAobGVuIDwgMCkKLQkgICAgcmV0dXJuIHRydWU7IC8qIG5vIENT UiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8KLQotCWJ1ZltsZW5dID0gJ1wwJzsKLQot CWlndF9pbmZvKCJETUM6ICVzXG4iLCBidWYpOwotCXJldHVybiBzdHJzdHIoYnVmLCAiZncgbG9h ZGVkOiB5ZXMiKTsKLX0KLQogc3RhdGljIHZvaWQgZHVtcF9maWxlKGludCBkaXIsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQogewogCWNoYXIgKmNvbnRlbnRzOwpAQCAtNzk2LDcgKzc2Niw3IEBAIHN0 YXRpYyBib29sIHNldHVwX2Vudmlyb25tZW50KHZvaWQpCiAKIAlpbml0X21vZGVfc2V0X2RhdGEo Jm1zX2RhdGEpOwogCi0JcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQoKTsKKwlpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7 CiAKIAloYXNfcnVudGltZV9wbSA9IGlndF9zZXR1cF9ydW50aW1lX3BtKCk7CiAJc2V0dXBfcGM4 KCk7CkBAIC04MDQsNyArNzc0LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9p ZCkKIAlpZ3RfaW5mbygiUnVudGltZSBQTSBzdXBwb3J0OiAlZFxuIiwgaGFzX3J1bnRpbWVfcG0p OwogCWlndF9pbmZvKCJQQzggcmVzaWRlbmN5IHN1cHBvcnQ6ICVkXG4iLCBoYXNfcGM4KTsKIAlp Z3RfcmVxdWlyZShoYXNfcnVudGltZV9wbSk7Ci0JaWd0X3JlcXVpcmUoZG1jX2xvYWRlZCgpKTsK KwlpZ3RfcmVxdWlyZShpZ3RfcG1fZG1jX2xvYWRlZChkZWJ1Z2ZzKSk7CiAKIG91dDoKIAlkaXNh YmxlX2FsbF9zY3JlZW5zKCZtc19kYXRhKTsKQEAgLTgyMSw4ICs3OTEsNyBAQCBzdGF0aWMgdm9p ZCB0ZWFyZG93bl9lbnZpcm9ubWVudCh2b2lkKQogCiAJaWd0X3Jlc3RvcmVfcnVudGltZV9wbSgp OwogCi0JaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7 Ci0JZnJlZShwbV9kYXRhKTsKKwlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudCgpOwogCiAJZmluaV9tb2RlX3NldF9kYXRhKCZtc19kYXRhKTsKIAotLSAKMi4yMS4wCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=