From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v2 2/4] lib/igt_pm: Find HDA device when attempting to enable runtime PM Date: Mon, 23 Jul 2018 13:46:49 +0100 Message-ID: <20180723124649.13719-1-tvrtko.ursulin@linux.intel.com> References: <20180723114658.13025-2-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id E96AD6E43E for ; Mon, 23 Jul 2018 12:46:55 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id s14-v6so1092317wmc.1 for ; Mon, 23 Jul 2018 05:46:55 -0700 (PDT) In-Reply-To: <20180723114658.13025-2-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkhEQSBhdWRp byBkZXZpY2UgY2FuIGJlIHByZXNlbnQgYXQgdmFyaW91cyBQQ0kgcGF0aHMgb24gZGlmZmVyZW50 IHN5c3RlbXMKd2hpY2ggdGhlIGV4aXN0aW5nIGNvZGUgZGlkIG5vdCBhY2NvdW50IGZvci4KCkZ1 cnRoZXJtb3JlIHRoZSBmYWlsdXJlIHRvIGVuYWJsZSBydW50aW1lIFBNIHdhcyBzaWxlbnQgbGVh dmluZyBjYWxsZXJzCmluIHRoZSBkYXJrLgoKSW1wcm92ZSBpdCBieSBhdXRvLWxvY2F0aW5nIHRo ZSBQQ0kgcGF0aCBhbmQgbG9nZ2luZyBhIHdhcm5pbmcgd2hlbgpzb21ldGhpbmcgaXMgbm90IGFz IGV4cGVjdGVkLgoKdjI6CiAqIElmIHRoZXJlIGlzIG5vIGF1ZGlvIGh3L2RyaXZlciB0aGVyZSBp cyBubyBmYWlsdXJlLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X3BtLmMgfCA3NyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjAgaW5z ZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5jIGIv bGliL2lndF9wbS5jCmluZGV4IDZmM2IwYTJkODk3ZC4uMjYxNTBmZGZlZGY1IDEwMDY0NAotLS0g YS9saWIvaWd0X3BtLmMKKysrIGIvbGliL2lndF9wbS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNs dWRlICJpZ3RfcG0uaCIKQEAgLTY0LDYgKzY1LDcgQEAgZW51bSB7CiAjZGVmaW5lIE1BWF9QT0xJ Q1lfU1RSTEVOCXN0cmxlbihNQVhfUEVSRk9STUFOQ0VfU1RSKQogCiBzdGF0aWMgY2hhciBfX2ln dF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbNjRdOworc3RhdGljIGNvbnN0IGNoYXIgKiBf X2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3Bt X2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07CiAKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9f cmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCkBAIC04Niw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgX19p Z3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiAKIAljbG9zZShmZCk7CiAKLQlm ZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9s IiwgT19XUk9OTFkpOworCWZkID0gb3BlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xf cGF0aCwgT19XUk9OTFkpOwogCWlmIChmZCA8IDApCiAJCXJldHVybiBlcnJubzsKIApAQCAtMTMw LDM2ICsxMzIsNzcgQEAgc3RhdGljIHZvaWQgc3RyY2hvbXAoY2hhciAqc3RyKQogICovCiB2b2lk IGlndF9wbV9lbmFibGVfYXVkaW9fcnVudGltZV9wbSh2b2lkKQogeworCWNoYXIgKnBhdGggPSBO VUxMOworCXN0cnVjdCBkaXJlbnQgKmRlOworCURJUiAqZGlyOwogCWludCBmZDsKIAogCS8qIENo ZWNrIGlmIGFscmVhZHkgZW5hYmxlZC4gKi8KIAlpZiAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9w b3dlcl9zYXZlWzBdKQogCQlyZXR1cm47CiAKLQlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9o ZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9zYXZlIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkg ewotCQlpZ3RfYXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2 ZSwKLQkJCQlzaXplb2YoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKSkgPiAwKTsK LQkJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKTsKLQkJaWd0X2lu c3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsK LQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgIjFcbiIsIDIpLCAyKTsKLQkJY2xvc2UoZmQpOwot CX0KLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9j b250cm9sIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkgewotCQlpZ3RfYXNzZXJ0KHJlYWQoZmQs IF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKLQkJCQlzaXplb2YoX19pZ3RfcG1fYXVk aW9fcnVudGltZV9jb250cm9sKSkgPiAwKTsKLQkJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9jb250cm9sKTsKLQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1 KTsKLQkJY2xvc2UoZmQpOworCWRpciA9IG9wZW5kaXIoIi9zeXMvYnVzL3BjaS9kcml2ZXJzL3Nu ZF9oZGFfaW50ZWwiKTsKKwlpZiAoIWRpcikKKwkJcmV0dXJuOworCisJd2hpbGUgKChkZSA9IHJl YWRkaXIoZGlyKSkpIHsKKwkJY29uc3QgY2hhciAqcHJlZml4ID0gIi9zeXMvYnVzL3BjaS9kZXZp Y2VzLyI7CisJCWNvbnN0IGNoYXIgKnN1ZmZpeCA9ICIvcG93ZXIvY29udHJvbCI7CisJCWNvbnN0 IGNoYXIgKm1hdGNoID0gIjAwMDA6MDA6IjsKKworCQlpZiAoc3RybmNtcChkZS0+ZF9uYW1lLCBt YXRjaCwgc3RybGVuKG1hdGNoKSkpCisJCQljb250aW51ZTsKKworCQlwYXRoID0gbWFsbG9jKHN0 cmxlbihwcmVmaXgpICsKKwkJCSAgICAgIHN0cmxlbihkZS0+ZF9uYW1lKSArCisJCQkgICAgICBz dHJsZW4oc3VmZml4KSArCisJCQkgICAgICAxKTsKKwkJaWYgKCFwYXRoKQorCQkJZ290byBlcnI7 CisKKwkJc3RyY3B5KHBhdGgsIHByZWZpeCk7CisJCXN0cmNhdChwYXRoLCBkZS0+ZF9uYW1lKTsK KwkJc3RyY2F0KHBhdGgsIHN1ZmZpeCk7CisKKwkJaWd0X2RlYnVnKCJBdWRpbyBkZXZpY2UgUENJ IHBhdGggaXMgJXNcbiIsIHBhdGgpOwogCX0KIAorCWlmICghcGF0aCkKKwkJZ290byBlcnI7CisK KwlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9oZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9z YXZlIiwgT19SRFdSKTsKKwlpZiAoZmQgPCAwKQorCQlnb3RvIGVycjsKKworCWlndF9hc3NlcnQo cmVhZChmZCwgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAorCQkJc2l6ZW9mKF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSkpID4gMCk7CisJc3RyY2hvbXAoX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKTsKKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIo X19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0X2hhbmRsZXIpOworCWlndF9hc3NlcnRfZXEod3Jp dGUoZmQsICIxXG4iLCAyKSwgMik7CisJY2xvc2UoZmQpOworCisJZmQgPSBvcGVuKHBhdGgsIE9f UkRXUik7CisJaWYgKGZkIDwgMCkKKwkJZ290byBlcnI7CisKKwlpZ3RfYXNzZXJ0KHJlYWQoZmQs IF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKKwkJCXNpemVvZihfX2lndF9wbV9hdWRp b19ydW50aW1lX2NvbnRyb2wpKSA+IDApOworCXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRp bWVfY29udHJvbCk7CisJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1KTsK KwljbG9zZShmZCk7CisJX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sX3BhdGggPSBwYXRo OworCiAJaWd0X2RlYnVnKCJTYXZlZCBhdWRpbyBwb3dlciBtYW5hZ2VtZW50IGFzICclcycgYW5k ICclcydcbiIsCiAJCSAgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAogCQkgIF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CiAKIAkvKiBHaXZlIHNvbWUgdGltZSBmb3Ig aXQgdG8gcmVhY3QuICovCiAJc2xlZXAoMSk7CisKKwlyZXR1cm47CisKK2VycjoKKwlpZ3Rfd2Fy bigiRmFpbGVkIHRvIGVuYWJsZSBhdWRpbyBydW50aW1lIFBNISAoJWQpIiwgZXJybm8pOwogfQog CiAvKioKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 23 Jul 2018 13:46:49 +0100 Message-Id: <20180723124649.13719-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180723114658.13025-2-tvrtko.ursulin@linux.intel.com> References: <20180723114658.13025-2-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t v2 2/4] lib/igt_pm: Find HDA device when attempting to enable runtime PM 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkhEQSBhdWRp byBkZXZpY2UgY2FuIGJlIHByZXNlbnQgYXQgdmFyaW91cyBQQ0kgcGF0aHMgb24gZGlmZmVyZW50 IHN5c3RlbXMKd2hpY2ggdGhlIGV4aXN0aW5nIGNvZGUgZGlkIG5vdCBhY2NvdW50IGZvci4KCkZ1 cnRoZXJtb3JlIHRoZSBmYWlsdXJlIHRvIGVuYWJsZSBydW50aW1lIFBNIHdhcyBzaWxlbnQgbGVh dmluZyBjYWxsZXJzCmluIHRoZSBkYXJrLgoKSW1wcm92ZSBpdCBieSBhdXRvLWxvY2F0aW5nIHRo ZSBQQ0kgcGF0aCBhbmQgbG9nZ2luZyBhIHdhcm5pbmcgd2hlbgpzb21ldGhpbmcgaXMgbm90IGFz IGV4cGVjdGVkLgoKdjI6CiAqIElmIHRoZXJlIGlzIG5vIGF1ZGlvIGh3L2RyaXZlciB0aGVyZSBp cyBubyBmYWlsdXJlLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X3BtLmMgfCA3NyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjAgaW5z ZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5jIGIv bGliL2lndF9wbS5jCmluZGV4IDZmM2IwYTJkODk3ZC4uMjYxNTBmZGZlZGY1IDEwMDY0NAotLS0g YS9saWIvaWd0X3BtLmMKKysrIGIvbGliL2lndF9wbS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNs dWRlICJpZ3RfcG0uaCIKQEAgLTY0LDYgKzY1LDcgQEAgZW51bSB7CiAjZGVmaW5lIE1BWF9QT0xJ Q1lfU1RSTEVOCXN0cmxlbihNQVhfUEVSRk9STUFOQ0VfU1RSKQogCiBzdGF0aWMgY2hhciBfX2ln dF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbNjRdOworc3RhdGljIGNvbnN0IGNoYXIgKiBf X2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3Bt X2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07CiAKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9f cmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCkBAIC04Niw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgX19p Z3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiAKIAljbG9zZShmZCk7CiAKLQlm ZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9s IiwgT19XUk9OTFkpOworCWZkID0gb3BlbihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xf cGF0aCwgT19XUk9OTFkpOwogCWlmIChmZCA8IDApCiAJCXJldHVybiBlcnJubzsKIApAQCAtMTMw LDM2ICsxMzIsNzcgQEAgc3RhdGljIHZvaWQgc3RyY2hvbXAoY2hhciAqc3RyKQogICovCiB2b2lk IGlndF9wbV9lbmFibGVfYXVkaW9fcnVudGltZV9wbSh2b2lkKQogeworCWNoYXIgKnBhdGggPSBO VUxMOworCXN0cnVjdCBkaXJlbnQgKmRlOworCURJUiAqZGlyOwogCWludCBmZDsKIAogCS8qIENo ZWNrIGlmIGFscmVhZHkgZW5hYmxlZC4gKi8KIAlpZiAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9w b3dlcl9zYXZlWzBdKQogCQlyZXR1cm47CiAKLQlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9o ZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9zYXZlIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkg ewotCQlpZ3RfYXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2 ZSwKLQkJCQlzaXplb2YoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKSkgPiAwKTsK LQkJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKTsKLQkJaWd0X2lu c3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsK LQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgIjFcbiIsIDIpLCAyKTsKLQkJY2xvc2UoZmQpOwot CX0KLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9j b250cm9sIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkgewotCQlpZ3RfYXNzZXJ0KHJlYWQoZmQs IF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKLQkJCQlzaXplb2YoX19pZ3RfcG1fYXVk aW9fcnVudGltZV9jb250cm9sKSkgPiAwKTsKLQkJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9jb250cm9sKTsKLQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1 KTsKLQkJY2xvc2UoZmQpOworCWRpciA9IG9wZW5kaXIoIi9zeXMvYnVzL3BjaS9kcml2ZXJzL3Nu ZF9oZGFfaW50ZWwiKTsKKwlpZiAoIWRpcikKKwkJcmV0dXJuOworCisJd2hpbGUgKChkZSA9IHJl YWRkaXIoZGlyKSkpIHsKKwkJY29uc3QgY2hhciAqcHJlZml4ID0gIi9zeXMvYnVzL3BjaS9kZXZp Y2VzLyI7CisJCWNvbnN0IGNoYXIgKnN1ZmZpeCA9ICIvcG93ZXIvY29udHJvbCI7CisJCWNvbnN0 IGNoYXIgKm1hdGNoID0gIjAwMDA6MDA6IjsKKworCQlpZiAoc3RybmNtcChkZS0+ZF9uYW1lLCBt YXRjaCwgc3RybGVuKG1hdGNoKSkpCisJCQljb250aW51ZTsKKworCQlwYXRoID0gbWFsbG9jKHN0 cmxlbihwcmVmaXgpICsKKwkJCSAgICAgIHN0cmxlbihkZS0+ZF9uYW1lKSArCisJCQkgICAgICBz dHJsZW4oc3VmZml4KSArCisJCQkgICAgICAxKTsKKwkJaWYgKCFwYXRoKQorCQkJZ290byBlcnI7 CisKKwkJc3RyY3B5KHBhdGgsIHByZWZpeCk7CisJCXN0cmNhdChwYXRoLCBkZS0+ZF9uYW1lKTsK KwkJc3RyY2F0KHBhdGgsIHN1ZmZpeCk7CisKKwkJaWd0X2RlYnVnKCJBdWRpbyBkZXZpY2UgUENJ IHBhdGggaXMgJXNcbiIsIHBhdGgpOwogCX0KIAorCWlmICghcGF0aCkKKwkJZ290byBlcnI7CisK KwlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9oZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9z YXZlIiwgT19SRFdSKTsKKwlpZiAoZmQgPCAwKQorCQlnb3RvIGVycjsKKworCWlndF9hc3NlcnQo cmVhZChmZCwgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAorCQkJc2l6ZW9mKF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSkpID4gMCk7CisJc3RyY2hvbXAoX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlKTsKKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIo X19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0X2hhbmRsZXIpOworCWlndF9hc3NlcnRfZXEod3Jp dGUoZmQsICIxXG4iLCAyKSwgMik7CisJY2xvc2UoZmQpOworCisJZmQgPSBvcGVuKHBhdGgsIE9f UkRXUik7CisJaWYgKGZkIDwgMCkKKwkJZ290byBlcnI7CisKKwlpZ3RfYXNzZXJ0KHJlYWQoZmQs IF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKKwkJCXNpemVvZihfX2lndF9wbV9hdWRp b19ydW50aW1lX2NvbnRyb2wpKSA+IDApOworCXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRp bWVfY29udHJvbCk7CisJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1KTsK KwljbG9zZShmZCk7CisJX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sX3BhdGggPSBwYXRo OworCiAJaWd0X2RlYnVnKCJTYXZlZCBhdWRpbyBwb3dlciBtYW5hZ2VtZW50IGFzICclcycgYW5k ICclcydcbiIsCiAJCSAgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAogCQkgIF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CiAKIAkvKiBHaXZlIHNvbWUgdGltZSBmb3Ig aXQgdG8gcmVhY3QuICovCiAJc2xlZXAoMSk7CisKKwlyZXR1cm47CisKK2VycjoKKwlpZ3Rfd2Fy bigiRmFpbGVkIHRvIGVuYWJsZSBhdWRpbyBydW50aW1lIFBNISAoJWQpIiwgZXJybm8pOwogfQog CiAvKioKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==