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 25AB86E8F7 for ; Fri, 21 Jun 2019 15:47:39 +0000 (UTC) From: Anshuman Gupta Date: Fri, 21 Jun 2019 21:12:47 +0530 Message-Id: <20190621154252.27952-2-anshuman.gupta@intel.com> In-Reply-To: <20190621154252.27952-1-anshuman.gupta@intel.com> References: <20190621154252.27952-1-anshuman.gupta@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v12 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 b2VzIHRoZSBmb2xsb3dpbmcgY2huZWdzIHRvIGxpYi9pZ3RfcG0uYwoKLWRtY19sb2FkZWQoKSB3 aWxsIGJlIHVzZWQgYnkgbmV3IHRlc3QgaTkxNV9wbV9kYy5jIHdoaWNoIHdpbGwgdmFsaWRhdGUK IERpc3BsYXkgQyBTdGF0ZXMuIFNvIG1vdmluZyB0aGUgc2FtZSB0byBpZ3RfcG0gbGlicmFyeS4K Ci1JbnRyb2R1Y2VkIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0oKSBpbiBvcmRlciB0byBkaXNhYmxl IHJ1bnRpbWUgc3VzcGVuZAogZm9yIHRoZSBmdW5jdGlvbiB3aGljaCBzdXBwb3J0IGRjOS4KCi1D aGFuZ2VkIHRoZSBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkgYW5k CiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpIGluIG9yZGVyIHRv IHNhdmUKIGFuZCByZXN0b3JlIHRoZSBzYXRhIGxpbmsgcG93ZXIgcG9saWN5IGJ5IGFuIGV4aXQg aGFuZGxlci4KCnYyOiBTaW1wbGlmeSB0aGUgY29tbWVudCBzZWN0aW9uLgp2MzogUmVtb3ZlIC4g ZnJvbSB0aGUgc3ViamVjdCBsaW5lLgp2NDogUmViYXNlZCwgcmVzb2x2ZSBjb25mbGljdHMgaW4g cG1fcnBtLmMKICAgIEluY2x1ZGVkIHBhdGNoIHNldCB2ZXJzaW9uIGNoYW5nZSBsb2cuCnY1OiBM aXN0aW5nIGFjdHVhbCBjaGFuZ2UgaW4gcGF0Y2ggc2V0IGNoYW5nZWxvZyB0byBtYWtlIHJldmll dyBlYXNpZXIuCnY2OiBpZ3QncyBsaWIgYWRkZWQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHJ1bnRp bWUgc3VzcGVuZCwKICAgIGNoYW5nZSBpbiBjb21taXQgbG9nLiByZWJhc2VkIGR1ZSB0byB0ZXN0 IG5hbWUgcG1fcnBtIGNoYW5nZWQKICAgIHRvIGk5MTVfcG1fcnBtLgp2NzogQWRkcmVzc2VkIHJl dmlldyBjb21tZW50IGJ5IHNhdmluZyBQT1dFUl9ESVIgdmFsdWVzIGluCiAgICBpZ3RfZGlzYWJs ZV9ydW50aW1lX3BtKCkuIFtJbXJlXQp2ODogQWRkcmVzc2VkIHRoZSByZXZpZXcgY29tbWVudCwg aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudAogICAgZnVuY3Rpb24gdG8g cmVzdG9yZSB0aGUgb3JpZ2luYWwgU0FUQSBsaW5rIHBvd2VyIHBvbGljeSBpZiB0aGluZ3MgZmFp bAogICAgYnkgdXNpbmcgYW4gZXhpdCBoYW5kbGVyLiBbSW1yZV0Kdjk6IElHVCBmYWlsdXJlIGZp eHR1cmUgaW4gaTkxNV9wbV9iYWNrbGlnaHQgYW5kIGk5MTVfcG1fcnBtLgoKU2lnbmVkLW9mZi1i eTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBB bnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPgotLS0KIGxpYi9pZ3RfcG0u YyAgICAgICAgICAgICAgICAgICB8IDE5MCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIGxpYi9pZ3RfcG0uaCAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogdGVzdHMvaTkxNS9p OTE1X3BtX2JhY2tsaWdodC5jIHwgICA2ICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMgICAg ICAgfCAgMjQgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDY3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcG0uYyBiL2xpYi9pZ3RfcG0uYwppbmRl eCBmZDIyMjczYS4uOWI4M2ZiYjUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcG0uYworKysgYi9saWIv aWd0X3BtLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAjaW5jbHVk ZSAiaWd0X3BtLmgiCiAjaW5jbHVkZSAiaWd0X2F1eC5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5o IgogCiAvKioKICAqIFNFQ1RJT046aWd0X3BtCkBAIC02MywxMSArNjQsMTUgQEAgZW51bSB7CiAj ZGVmaW5lIE1JTl9QT1dFUl9TVFIJCSJtaW5fcG93ZXJcbiIKIC8qIFJlbWVtYmVyIHRvIGZpeCB0 aGlzIGlmIGFkZGluZyBsb25nZXIgc3RyaW5ncyAqLwogI2RlZmluZSBNQVhfUE9MSUNZX1NUUkxF TglzdHJsZW4oTUFYX1BFUkZPUk1BTkNFX1NUUikKK2ludDhfdCAqX19zYXRhX2xpbmtfcG1fcG9s aWNpZXM7CiAKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVs2 NF07CiBzdGF0aWMgY2hhciAqIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbF9wYXRoOwog c3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sWzY0XTsKIAorc3RhdGlj IHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKTsKK3N0YXRp YyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7 CisKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiB7 CiAJaW50IGZkOwpAQCAtMjgwLDI4ICsyODUsMTIgQEAgdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlv X3J1bnRpbWVfcG0odm9pZCkKIAkJaWd0X2RlYnVnKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlvIHJ1 bnRpbWUgUE0hICglZClcbiIsIC1lcnIpOwogfQogCi0vKioKLSAqIGlndF9wbV9lbmFibGVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Ci0gKgotICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9s aWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KLSAqIFdpdGhvdXQgdGhpcyB3ZSBj YW5ub3QgcmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRlcy4KLSAqCi0gKiBXZSBkb24ndCBo YXZlIGFueSBhc3NlcnRpb25zIG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbSBtaWdodCBub3QgaGF2 ZQotICogYSBTQVRBIGhvc3QuCi0gKgotICogUmV0dXJuczoKLSAqIEFuIG9wYXF1ZSBwb2ludGVy IHRvIHRoZSBkYXRhIG5lZWRlZCB0byByZXN0b3JlIHRoZSBkZWZhdWx0IHZhbHVlcwotICogYWZ0 ZXIgdGhlIHRlc3QgaGFzIHRlcm1pbmF0ZWQsIG9yIE5VTEwgaWYgU0FUQSBsaW5rIHBvd2VyIG1h bmFnZW1lbnQKLSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgcG9pbnRlciBzaG91bGQgYmUgZnJl ZWQgd2hlbiBubyBsb25nZXIgdXNlZAotICogKHR5cGljYWxseSBhZnRlciBoYXZpbmcgY2FsbGVk IHJlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKSkuCi0gKi8KLWludDhfdCAqaWd0 X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQorc3RhdGljIHZvaWQg X19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCiB7CiAJaW50 IGZkLCBpOwogCXNzaXplX3QgbGVuOwogCWNoYXIgKmJ1ZjsKIAljaGFyICpmaWxlX25hbWU7Ci0J aW50OF90ICpsaW5rX3BtX3BvbGljaWVzID0gTlVMTDsKIAogCWZpbGVfbmFtZSA9IG1hbGxvYyhQ QVRIX01BWCk7CiAJYnVmID0gbWFsbG9jKE1BWF9QT0xJQ1lfU1RSTEVOICsgMSk7CkBAIC0zMTMs NiArMzAyLDkgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50KHZvaWQpCiAJCQkgIi9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21h bmFnZW1lbnRfcG9saWN5IiwKIAkJCSBpKTsKIAorCQkvKiBXZSBkb24ndCBoYXZlIGFueSBhc3Nl cnRpb25zIG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbQorCQkgKiBtaWdodCBub3QgaGF2ZSBhIFNB VEEgaG9zdC4KKwkJICovCiAJCWZkID0gb3BlbihmaWxlX25hbWUsIE9fUkRXUik7CiAJCWlmIChm ZCA8IDApCiAJCQlicmVhazsKQEAgLTMzMywxMSArMzI1LDEzIEBAIGludDhfdCAqaWd0X3BtX2Vu YWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQogCQkJcG9saWN5ID0gUE9MSUNZ X1VOS05PV047CiAKIAkJaWYgKCEoaSAlIDI1NikpCi0JCQlsaW5rX3BtX3BvbGljaWVzID0gcmVh bGxvYyhsaW5rX3BtX3BvbGljaWVzLAotCQkJCQkJICAgKGkgLyAyNTYgKyAxKSAqIDI1NiArIDEp OworCQkJX19zYXRhX2xpbmtfcG1fcG9saWNpZXMgPQorCQkJcmVhbGxvYyhfX3NhdGFfbGlua19w bV9wb2xpY2llcywKKwkJCQkoaSAvIDI1NiArIDEpICogMjU2ICsgMSk7CiAKLQkJbGlua19wbV9w b2xpY2llc1tpXSA9IHBvbGljeTsKLQkJbGlua19wbV9wb2xpY2llc1tpICsgMV0gPSAwOworCQlf X3NhdGFfbGlua19wbV9wb2xpY2llc1tpXSA9IHBvbGljeTsKKwkJX19zYXRhX2xpbmtfcG1fcG9s aWNpZXNbaSArIDFdID0gMDsKKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX3Nh dGFfbGlua19wbV9leGl0X2hhbmRsZXIpOwogCiAJCS8qIElmIHRoZSBwb2xpY3kgaXMgc29tZXRo aW5nIHdlIGRvbid0IGtub3cgYWJvdXQsCiAJCSAqIGRvbid0IHRvdWNoIGl0LCBzaW5jZSB3ZSBt aWdodCBwb3RlbnRpYWxseSBicmVhayB0aGluZ3MuCkBAIC0zNTUsMzkgKzM0OSwyNyBAQCBpbnQ4 X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKIAl9CiAJ ZnJlZShidWYpOwogCWZyZWUoZmlsZV9uYW1lKTsKLQotCXJldHVybiBsaW5rX3BtX3BvbGljaWVz OwogfQogCi0vKioKLSAqIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 OgotICogQHBtX2RhdGE6IEFuIG9wYXF1ZSBwb2ludGVyIHdpdGggc2F2ZWQgbGluayBQTSBwb2xp Y2llczsKLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBhc3NlZCB3ZSBmb3JjZSBlbmFibGUgdGhl ICJtYXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KLSAqCi0gKiBSZXN0b3JlIHRoZSBsaW5rIHBvd2Vy IG1hbmFnZW1lbnQgcG9saWNpZXMgdG8gdGhlIHZhbHVlcwotICogcHJpb3IgdG8gZW5hYmxpbmcg bWluX3Bvd2VyLgotICoKLSAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBob3RwbHVn Z2luZyBhbmQgaG90cGx1Z2dpbmcgdGFrZXMKLSAqICAgICAgICAgcGxhY2UgZHVyaW5nIG91ciB0 ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCi0gKiAgICAgICAgIHdlIG1p Z2h0IHJlc3RvcmUgdGhlIHNldHRpbmdzIHRvIHRoZSB3cm9uZyBob3N0cy4KLSAqLwotdm9pZCBp Z3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEp Ci0KK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQodm9pZCkKIHsKIAlpbnQgZmQsIGk7CiAJY2hhciAqZmlsZV9uYW1lOwogCisJaWYgKCFfX3Nh dGFfbGlua19wbV9wb2xpY2llcykKKwkJcmV0dXJuOworCiAJLyogRGlzayBydW50aW1lIFBNIHBv bGljaWVzLiAqLwogCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7CiAJZm9yIChpID0gMDsg OyBpKyspIHsKIAkJaW50OF90IHBvbGljeTsKIAotCQlpZiAoIXBtX2RhdGEpCisJCWlmICghX19z YXRhX2xpbmtfcG1fcG9saWNpZXMpCiAJCQlwb2xpY3kgPSBQT0xJQ1lfTUFYX1BFUkZPUk1BTkNF OwotCQllbHNlIGlmIChwbV9kYXRhW2ldID09IFBPTElDWV9VTktOT1dOKQorCQllbHNlIGlmIChf X3NhdGFfbGlua19wbV9wb2xpY2llc1tpXSA9PSBQT0xJQ1lfVU5LTk9XTikKIAkJCWNvbnRpbnVl OwogCQllbHNlCi0JCQlwb2xpY3kgPSBwbV9kYXRhW2ldOworCQkJcG9saWN5ID0gX19zYXRhX2xp bmtfcG1fcG9saWNpZXNbaV07CiAKIAkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKIAkJ CSAiL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xp Y3kiLApAQCAtNDIxLDcgKzQwMyw1MyBAQCB2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KGludDhfdCAqcG1fZGF0YSkKIAkJY2xvc2UoZmQpOwogCX0KIAlmcmVl KGZpbGVfbmFtZSk7CisJZnJlZShfX3NhdGFfbGlua19wbV9wb2xpY2llcyk7CisJX19zYXRhX2xp bmtfcG1fcG9saWNpZXMgPSBOVUxMOworfQorCisvKioKKyAqIGlndF9wbV9lbmFibGVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQ6CisgKgorICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5 IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KKyAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5u b3QgcmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRlcy4KKyAqIFJldHVybnM6IFZvaWQKKyAq Lwordm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCit7 CisJaW50IGVycjsKKworCS8qIENoZWNrIGlmIGhhcyBiZWVuIGFscmVhZHkgc2F2ZWQuICovCisJ aWYgKF9fc2F0YV9saW5rX3BtX3BvbGljaWVzKQorCQlyZXR1cm47CisKKwkgX19pZ3RfcG1fZW5h YmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cit9CisKKy8qKgorICogaWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6CisgKgorICogUmVzdG9yZSB0aGUgbGlu ayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKKyAqIHByaW9yIHRvIGVu YWJsaW5nIG1pbl9wb3dlci4KKyAqCisgKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMg aG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCisgKiAgICAgICAgIHBsYWNlIGR1cmlu ZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycworICogICAgICAg ICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCisgKi8K K3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKK3sK KwlpbnQgZXJyOworCisJaWYgKCFfX3NhdGFfbGlua19wbV9wb2xpY2llcykKKwkJcmV0dXJuOwor CisJIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIH0KKwor c3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQor eworCV9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKK30KKwog I2RlZmluZSBQT1dFUl9ESVIgIi9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIuMC9w b3dlciIKIC8qIFdlIGp1c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCiBpbnQgcG1fc3RhdHVz X2ZkID0gLTE7CkBAIC01ODUsNiArNjEzLDYxIEBAIGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0o dm9pZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZv aWQpCit7CisJaW50IGZkOworCXNzaXplX3Qgc2l6ZTsKKwljaGFyIGJ1Zls2XTsKKworCWlmIChw bV9zdGF0dXNfZmQgPCAwKSB7CisJCWZkID0gb3BlbihQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9k ZWxheV9tcyIsIE9fUkRXUik7CisJCWlmIChmZCA8IDApCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJ c2l6ZSA9IHJlYWQoZmQsIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCisJCQkgICAgc2l6 ZW9mKF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQpKTsKKworCQlpZiAoc2l6ZSA8PSAwKSB7 CisJCQljbG9zZShmZCk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlzdHJjaG9tcChfX2ln dF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kKTsKKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9f aWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKKwkJY2xvc2UoZmQpOworCX0KKworCS8qIFdl IGtub3cgd2Ugc3VwcG9ydCBydW50aW1lIFBNLCBsZXQncyB0cnkgdG8gZGlzYWJsZSBpdCBub3cu ICovCisJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1JEV1IpOworCWlndF9hc3Nl cnRfZihmZCA+PSAwLCAiQ2FuJ3Qgb3BlbiAiIFBPV0VSX0RJUiAiL2NvbnRyb2xcbiIpOworCisJ aWYgKHBtX3N0YXR1c19mZCA8IDApIHsKKwkJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9y dW50aW1lX2NvbnRyb2wsCisJCQkJc2l6ZW9mKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCkpID4g MCk7CisJCXN0cmNob21wKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCk7CisKKwkJaWd0X2RlYnVn KCJTYXZlZCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKKwkJ CSAgX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCwKKwkJCSAgX19pZ3RfcG1fcnVudGltZV9j b250cm9sKTsKKwl9CisKKwlzaXplID0gd3JpdGUoZmQsICJvblxuIiwgMyk7CisJaWd0X2Fzc2Vy dChzaXplID09IDMpOworCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7CisJc2l6ZSA9IHJlYWQoZmQs IGJ1ZiwgQVJSQVlfU0laRShidWYpKTsKKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7CisJaWd0X2Fz c2VydChzdHJuY21wKGJ1ZiwgIm9uXG4iLCAzKSA9PSAwKTsKKwljbG9zZShmZCk7CisKKwlpZiAo cG1fc3RhdHVzX2ZkIDwgMCkgeworCQlwbV9zdGF0dXNfZmQgPSBvcGVuKFBPV0VSX0RJUiAiL3J1 bnRpbWVfc3RhdHVzIiwgT19SRE9OTFkpOworCQlpZ3RfYXNzZXJ0X2YocG1fc3RhdHVzX2ZkID49 IDAsCisJCQkgICAgICJDYW4ndCBvcGVuICIgUE9XRVJfRElSICIvcnVudGltZV9zdGF0dXNcbiIp OworCX0KKworCXJldHVybiB0cnVlOworfQorCiAvKioKICAqIGlndF9nZXRfcnVudGltZV9wbV9z dGF0dXM6CiAgKgpAQCAtNjI4LDMgKzcxMSwzMCBAQCBib29sIGlndF93YWl0X2Zvcl9wbV9zdGF0 dXMoZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgc3RhdHVzKQogewogCXJldHVybiBpZ3Rfd2Fp dChpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKCkgPT0gc3RhdHVzLCAxMDAwMCwgMTAwKTsKIH0K KworLyoqCisgKiBkbWNfbG9hZGVkOgorICogQGRlYnVnZnM6IGZkIHRvIHRoZSBkZWJ1Z2ZzIGRp ci4KKworICogQ2hlY2sgd2hldGhlciBETUMgRlcgaXMgbG9hZGVkIG9yIG5vdC4gRE1DIEZXIGlz IHJlcXVpcmUgZm9yIGZldyBEaXNwbGF5IEMKKyAqIHN0YXRlcyBsaWtlIERDNSBhbmQgREM2LiBG VyBkb2VzIHRoZSBDb250ZXh0IFNhdmUgYW5kIFJlc3RvcmUgZHVyaW5nIERpc3BsYXkKKyAqIEMg U3RhdGVzIGVudHJ5IGFuZCBleGl0LgorICoKKyAqIFJldHVybnM6CisgKiBUcnVlIGlmIERNQyBG VyBpcyBsb2FkZWQgb3RoZXJ3aXNlIGZhbHNlLgorICovCitib29sIGlndF9wbV9kbWNfbG9hZGVk KGludCBkZWJ1Z2ZzKQoreworCWlndF9yZXF1aXJlKGRlYnVnZnMgIT0gLTEpOworCWNoYXIgYnVm WzE1XTsKKwlpbnQgbGVuOworCisJbGVuID0gaWd0X3N5c2ZzX3JlYWQoZGVidWdmcywgImk5MTVf ZG1jX2luZm8iLCBidWYsIHNpemVvZihidWYpIC0gMSk7CisJaWYgKGxlbiA8IDApCisJCXJldHVy biB0cnVlOyAvKiBubyBDU1Igc3VwcG9ydCwgbm8gRE1DIHJlcXVpcmVtZW50ICovCisKKwlidWZb bGVuXSA9ICdcMCc7CisKKwlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVmKTsKKwlyZXR1cm4gc3Ry c3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmgg Yi9saWIvaWd0X3BtLmgKaW5kZXggMTBjYzY3OTQuLjk3OWIzNDYzIDEwMDY0NAotLS0gYS9saWIv aWd0X3BtLmgKKysrIGIvbGliL2lndF9wbS5oCkBAIC0yNSw4ICsyNSw4IEBACiAjZGVmaW5lIElH VF9QTV9ICiAKIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpOwotaW50 OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwotdm9p ZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2Rh dGEpOwordm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQp Owordm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsK IAogLyoqCiAgKiBpZ3RfcnVudGltZV9wbV9zdGF0dXM6CkBAIC00Nyw4ICs0NywxMCBAQCBlbnVt IGlndF9ydW50aW1lX3BtX3N0YXR1cyB7CiB9OwogCiBib29sIGlndF9zZXR1cF9ydW50aW1lX3Bt KHZvaWQpOworYm9vbCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZvaWQpOwogdm9pZCBpZ3RfcmVz dG9yZV9ydW50aW1lX3BtKHZvaWQpOwogZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgaWd0X2dl dF9ydW50aW1lX3BtX3N0YXR1cyh2b2lkKTsKIGJvb2wgaWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhl bnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpOworYm9vbCBpZ3RfcG1fZG1jX2xvYWRl ZChpbnQgZGVidWdmcyk7CiAKICNlbmRpZiAvKiBJR1RfUE1fSCAqLwpkaWZmIC0tZ2l0IGEvdGVz dHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdo dC5jCmluZGV4IDRjMWJmZjViLi45YTVmNGMzNyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1 X3BtX2JhY2tsaWdodC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwpAQCAt NDcsNyArNDcsNiBAQCBzdHJ1Y3QgY29udGV4dCB7CiAjZGVmaW5lIEZBREVTUEVFRCAxMDAgLyog bWlsbGlzZWNvbmRzIGJldHdlZW4gc3RlcHMgKi8KIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJh c2ljIGJhY2tsaWdodCBzeXNmcyB0ZXN0Iik7Ci1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0gTlVM TDsKIAogc3RhdGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAq Zm5hbWUpCiB7CkBAIC0yMzUsNyArMjM0LDcgQEAgaWd0X21haW4KIAkJaWd0X3BsYW5lX3NldF9m YihwcmltYXJ5LCAmZmIpOwogCiAJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRpc3BsYXksIGRpc3Bs YXkuaXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwotCQlwbV9kYXRh ID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCQlpZ3RfcG1f ZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAJfQogCiAJaWd0X3N1YnRlc3Qo ImJhc2ljLWJyaWdodG5lc3MiKQpAQCAtMjU1LDggKzI1NCw3IEBAIGlndF9tYWluCiAKIAkJaWd0 X2Rpc3BsYXlfZmluaSgmZGlzcGxheSk7CiAJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1fZmQs ICZmYik7Ci0JCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHBtX2Rh dGEpOwotCQlmcmVlKHBtX2RhdGEpOworCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCgpOwogCQljbG9zZShkaXNwbGF5LmRybV9mZCk7CiAJfQogfQpkaWZmIC0tZ2l0 IGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCmlu ZGV4IGEyYzlkMGVkLi4yZDJmNzdiZSAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3Jw bS5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwpAQCAtMTIyLDggKzEyMiw2IEBAIHN0 cnVjdCBtb2Rlc2V0X3BhcmFtcyBscHNwX21vZGVfcGFyYW1zOwogc3RydWN0IG1vZGVzZXRfcGFy YW1zIG5vbl9scHNwX21vZGVfcGFyYW1zOwogc3RydWN0IG1vZGVzZXRfcGFyYW1zICpkZWZhdWx0 X21vZGVfcGFyYW1zOwogCi1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0gTlVMTDsKLQogc3RhdGlj IGludCBtb2Rwcm9iZShjb25zdCBjaGFyICpkcml2ZXIpCiB7CiAJcmV0dXJuIGlndF9rbW9kX2xv YWQoZHJpdmVyLCBOVUxMKTsKQEAgLTcxMCwyMSArNzA4LDYgQEAgc3RhdGljIHZvaWQgc2V0dXBf cGM4KHZvaWQpCiAJaGFzX3BjOCA9IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRtY19sb2FkZWQo dm9pZCkKLXsKLQljaGFyIGJ1ZlsxNV07Ci0JaW50IGxlbjsKLQotCWxlbiA9IGlndF9zeXNmc19y ZWFkKGRlYnVnZnMsICJpOTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwotCWlm IChsZW4gPCAwKQotCSAgICByZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyBy ZXF1aXJlbWVudCAqLwotCi0JYnVmW2xlbl0gPSAnXDAnOwotCi0JaWd0X2luZm8oIkRNQzogJXNc biIsIGJ1Zik7Ci0JcmV0dXJuIHN0cnN0cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOwotfQotCiBz dGF0aWMgdm9pZCBkdW1wX2ZpbGUoaW50IGRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJ Y2hhciAqY29udGVudHM7CkBAIC03NTEsNyArNzM0LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52 aXJvbm1lbnQodm9pZCkKIAogCWluaXRfbW9kZV9zZXRfZGF0YSgmbXNfZGF0YSk7CiAKLQlwbV9k YXRhID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOworCWlndF9w bV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKIAogCWhhc19ydW50aW1lX3Bt ID0gaWd0X3NldHVwX3J1bnRpbWVfcG0oKTsKIAlzZXR1cF9wYzgoKTsKQEAgLTc1OSw3ICs3NDIs NyBAQCBzdGF0aWMgYm9vbCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQogCWlndF9pbmZvKCJSdW50 aW1lIFBNIHN1cHBvcnQ6ICVkXG4iLCBoYXNfcnVudGltZV9wbSk7CiAJaWd0X2luZm8oIlBDOCBy ZXNpZGVuY3kgc3VwcG9ydDogJWRcbiIsIGhhc19wYzgpOwogCWlndF9yZXF1aXJlKGhhc19ydW50 aW1lX3BtKTsKLQlpZ3RfcmVxdWlyZShkbWNfbG9hZGVkKCkpOworCWlndF9yZXF1aXJlKGlndF9w bV9kbWNfbG9hZGVkKGRlYnVnZnMpKTsKIAogb3V0OgogCWRpc2FibGVfYWxsX3NjcmVlbnMoJm1z X2RhdGEpOwpAQCAtNzc2LDggKzc1OSw3IEBAIHN0YXRpYyB2b2lkIHRlYXJkb3duX2Vudmlyb25t ZW50KHZvaWQpCiAKIAlpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7CiAKLQlpZ3RfcG1fcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsKLQlmcmVlKHBtX2RhdGEpOwor CWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7CiAKIAlmaW5pX21v ZGVfc2V0X2RhdGEoJm1zX2RhdGEpOwogCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldg==