From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v6 2/4] lib/igt_pm: Find HDA device when attempting to enable runtime PM Date: Tue, 24 Jul 2018 11:29:31 +0100 Message-ID: <20180724102931.25352-1-tvrtko.ursulin@linux.intel.com> References: <20180724100852.24896-1-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-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A12F6E523 for ; Tue, 24 Jul 2018 10:29:44 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id t13-v6so3574687wrv.12 for ; Tue, 24 Jul 2018 03:29:44 -0700 (PDT) In-Reply-To: <20180724100852.24896-1-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 cyBubyBmYWlsdXJlLgoKdjM6CiAqIENvbW1lbnQuCiAqIFNraXAgbm9uLXN5bWxpbmtzLgogKiBG cmVlIHBhdGggb24gZmFpbHVyZSBhbmQgcmVzdG9yZS4KICogU2ltcGxpZnkgd2l0aCBhc3ByaW50 Zi4gKENocmlzIFdpbHNvbikKCnY0OgogKiBGaW5kIHNuZF9oZGFfaW50ZWwgaW5zdGFuY2UgdGll ZCB3aXRoIGFuIEludGVsIGRldmljZS4KCnY1OgogKiBGaXggbWVtb3J5IGxlYWsgYW5kIHNpbGVu Y2UgVmFsZ3JpbmQgd2FybmluZy4KCnY2OgogKiBGaXggZXJyb3Igb3V0IGxvZ2ljLgoKU2lnbmVk LW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBs aWIvaWd0X3BtLmMgfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5jIGIvbGliL2lndF9wbS5jCmluZGV4IDZm M2IwYTJkODk3ZC4uOTRkNGRkMmQzYzM3IDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysrIGIv bGliL2lndF9wbS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5j bHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxkaXJl bnQuaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpZ3RfcG0uaCIKQEAgLTY0 LDYgKzY1LDcgQEAgZW51bSB7CiAjZGVmaW5lIE1BWF9QT0xJQ1lfU1RSTEVOCXN0cmxlbihNQVhf UEVSRk9STUFOQ0VfU1RSKQogCiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bv d2VyX3NhdmVbNjRdOworc3RhdGljIGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xfcGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07 CiAKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCkBA IC04Niw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1l X3BtKHZvaWQpCiAKIAljbG9zZShmZCk7CiAKLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZp Y2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9sIiwgT19XUk9OTFkpOworCWZkID0gb3Blbihf X2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aCwgT19XUk9OTFkpOwogCWlmIChmZCA8 IDApCiAJCXJldHVybiBlcnJubzsKIApAQCAtMTAwLDYgKzEwMiw4IEBAIHN0YXRpYyBpbnQgX19p Z3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiAJY2xvc2UoZmQpOwogCiAJX19p Z3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlWzBdID0gMDsKKwlmcmVlKF9faWd0X3BtX2F1 ZGlvX3J1bnRpbWVfY29udHJvbF9wYXRoKTsKKwlfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xfcGF0aCA9IE5VTEw7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEzMCwzNiArMTM0LDk3IEBAIHN0 YXRpYyB2b2lkIHN0cmNob21wKGNoYXIgKnN0cikKICAqLwogdm9pZCBpZ3RfcG1fZW5hYmxlX2F1 ZGlvX3J1bnRpbWVfcG0odm9pZCkKIHsKKwljaGFyICpwYXRoID0gTlVMTDsKKwlzdHJ1Y3QgZGly ZW50ICpkZTsKKwlESVIgKmRpcjsKIAlpbnQgZmQ7CiAKIAkvKiBDaGVjayBpZiBhbHJlYWR5IGVu YWJsZWQuICovCiAJaWYgKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVswXSkKIAkJ cmV0dXJuOwogCi0JZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRl cnMvcG93ZXJfc2F2ZSIsIE9fUkRXUik7Ci0JaWYgKGZkID49IDApIHsKLQkJaWd0X2Fzc2VydChy ZWFkKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCi0JCQkJc2l6ZW9mKF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSkpID4gMCk7Ci0JCXN0cmNob21wKF9faWd0 X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSk7Ci0JCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxl cihfX2lndF9wbV9hdWRpb19ydW50aW1lX2V4aXRfaGFuZGxlcik7Ci0JCWlndF9hc3NlcnRfZXEo d3JpdGUoZmQsICIxXG4iLCAyKSwgMik7CisJZGlyID0gb3BlbmRpcigiL3N5cy9jbGFzcy9zb3Vu ZCIpOworCWlmICghZGlyKQorCQlyZXR1cm47CisKKwkvKiBGaW5kIFBDSSBkZXZpY2UgY2xhaW1l ZCBieSBzbmRfaGRhX2ludGVsIGFuZCB0aWVkIHRvIGk5MTUuICovCisJd2hpbGUgKChkZSA9IHJl YWRkaXIoZGlyKSkpIHsKKwkJY29uc3QgY2hhciAqbWF0Y2ggPSAiaHdDIjsKKwkJY2hhciBidWZb MzJdID0geyB9OyAvKiBmb3IgVmFsZ3JpbmQgKi8KKwkJY2hhciAqdG1wOworCQlpbnQgcmV0Owor CisJCWlmIChkZS0+ZF90eXBlICE9IERUX0xOSyB8fAorCQkgICAgc3RybmNtcChkZS0+ZF9uYW1l LCBtYXRjaCwgc3RybGVuKG1hdGNoKSkpCisJCQljb250aW51ZTsKKworCQlpZ3RfYXNzZXJ0KGFz cHJpbnRmKCZ0bXAsCisJCQkJICAgICIvc3lzL2NsYXNzL3NvdW5kLyVzL3ZlbmRvcl9uYW1lIiwK KwkJCQkgICAgZGUtPmRfbmFtZSkpOworCisJCWZkID0gb3Blbih0bXAsIE9fUkRPTkxZKTsKKwkJ ZnJlZSh0bXApOworCQlpZ3RfYXNzZXJ0X2ZkKGZkKTsKKwkJcmV0ID0gcmVhZChmZCwgYnVmLCBz aXplb2YoYnVmKSk7CiAJCWNsb3NlKGZkKTsKKwkJaWd0X2Fzc2VydChyZXQgPiAwKTsKKwkJc3Ry Y2hvbXAoYnVmKTsKKworCQkvKiBSZWFsdGVrIGFuZCBzaW1pbGFyIGRldmljZXMgYXJlIG5vdCB3 aGF0IHdlIGFyZSBhZnRlci4gKi8KKwkJaWYgKHN0cmNtcChidWYsICJJbnRlbCIpKQorCQkJY29u dGludWU7CisKKwkJaWd0X2Fzc2VydChhc3ByaW50ZigmcGF0aCwKKwkJCQkgICAgIi9zeXMvY2xh c3Mvc291bmQvJXMvZGV2aWNlL2RldmljZS9wb3dlci9jb250cm9sIiwKKwkJCQkgICAgZGUtPmRf bmFtZSkpOworCisJCWlndF9kZWJ1ZygiQXVkaW8gZGV2aWNlIHBhdGggaXMgJXNcbiIsIHBhdGgp OworCisJCWJyZWFrOwogCX0KLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6 MDA6MDMuMC9wb3dlci9jb250cm9sIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkgewotCQlpZ3Rf YXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKLQkJCQlzaXpl b2YoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKSkgPiAwKTsKLQkJc3RyY2hvbXAoX19p Z3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKTsKLQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwg ImF1dG9cbiIsIDUpLCA1KTsKKworCWZkID0gb3BlbigiL3N5cy9tb2R1bGUvc25kX2hkYV9pbnRl bC9wYXJhbWV0ZXJzL3Bvd2VyX3NhdmUiLCBPX1JEV1IpOworCWlmIChmZCA8IDApCisJCXJldHVy bjsKKworCS8qIHNuZF9oZGFfaW50ZWwgbG9hZGVkIGJ1dCBubyBwYXRoIGZvdW5kIGlzIGFuIGVy cm9yLiAqLworCWlmICghcGF0aCkgewogCQljbG9zZShmZCk7CisJCWVycm5vID0gRVNSQ0g7CisJ CWdvdG8gZXJyOwogCX0KIAorCWlndF9hc3NlcnQocmVhZChmZCwgX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9wb3dlcl9zYXZlLAorCQkJc2l6ZW9mKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJf c2F2ZSkpID4gMCk7CisJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZl KTsKKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0 X2hhbmRsZXIpOworCWlndF9hc3NlcnRfZXEod3JpdGUoZmQsICIxXG4iLCAyKSwgMik7CisJY2xv c2UoZmQpOworCisJZmQgPSBvcGVuKHBhdGgsIE9fUkRXUik7CisJaWYgKGZkIDwgMCkKKwkJZ290 byBlcnI7CisKKwlpZ3RfYXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29u dHJvbCwKKwkJCXNpemVvZihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2wpKSA+IDApOwor CXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJaWd0X2Fzc2VydF9l cSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1KTsKKwljbG9zZShmZCk7CisKKwlfX2lndF9wbV9h dWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aCA9IHBhdGg7CisKIAlpZ3RfZGVidWcoIlNhdmVkIGF1 ZGlvIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKIAkJICBfX2lndF9wbV9h dWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCiAJCSAgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250 cm9sKTsKIAogCS8qIEdpdmUgc29tZSB0aW1lIGZvciBpdCB0byByZWFjdC4gKi8KIAlzbGVlcCgx KTsKKworCXJldHVybjsKKworZXJyOgorCWlndF93YXJuKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlv IHJ1bnRpbWUgUE0hICglZCkiLCBlcnJubyk7CisJZnJlZShwYXRoKTsKIH0KIAogLyoqCi0tIAoy LjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Tue, 24 Jul 2018 11:29:31 +0100 Message-Id: <20180724102931.25352-1-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180724100852.24896-1-tvrtko.ursulin@linux.intel.com> References: <20180724100852.24896-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t v6 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 cyBubyBmYWlsdXJlLgoKdjM6CiAqIENvbW1lbnQuCiAqIFNraXAgbm9uLXN5bWxpbmtzLgogKiBG cmVlIHBhdGggb24gZmFpbHVyZSBhbmQgcmVzdG9yZS4KICogU2ltcGxpZnkgd2l0aCBhc3ByaW50 Zi4gKENocmlzIFdpbHNvbikKCnY0OgogKiBGaW5kIHNuZF9oZGFfaW50ZWwgaW5zdGFuY2UgdGll ZCB3aXRoIGFuIEludGVsIGRldmljZS4KCnY1OgogKiBGaXggbWVtb3J5IGxlYWsgYW5kIHNpbGVu Y2UgVmFsZ3JpbmQgd2FybmluZy4KCnY2OgogKiBGaXggZXJyb3Igb3V0IGxvZ2ljLgoKU2lnbmVk LW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBs aWIvaWd0X3BtLmMgfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5jIGIvbGliL2lndF9wbS5jCmluZGV4IDZm M2IwYTJkODk3ZC4uOTRkNGRkMmQzYzM3IDEwMDY0NAotLS0gYS9saWIvaWd0X3BtLmMKKysrIGIv bGliL2lndF9wbS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5j bHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxkaXJl bnQuaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpZ3RfcG0uaCIKQEAgLTY0 LDYgKzY1LDcgQEAgZW51bSB7CiAjZGVmaW5lIE1BWF9QT0xJQ1lfU1RSTEVOCXN0cmxlbihNQVhf UEVSRk9STUFOQ0VfU1RSKQogCiBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bv d2VyX3NhdmVbNjRdOworc3RhdGljIGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xfcGF0aDsKIHN0YXRpYyBjaGFyIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbFs2NF07 CiAKIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCkBA IC04Niw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1l X3BtKHZvaWQpCiAKIAljbG9zZShmZCk7CiAKLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZp Y2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9sIiwgT19XUk9OTFkpOworCWZkID0gb3Blbihf X2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aCwgT19XUk9OTFkpOwogCWlmIChmZCA8 IDApCiAJCXJldHVybiBlcnJubzsKIApAQCAtMTAwLDYgKzEwMiw4IEBAIHN0YXRpYyBpbnQgX19p Z3RfcG1fYXVkaW9fcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpCiAJY2xvc2UoZmQpOwogCiAJX19p Z3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlWzBdID0gMDsKKwlmcmVlKF9faWd0X3BtX2F1 ZGlvX3J1bnRpbWVfY29udHJvbF9wYXRoKTsKKwlfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRy b2xfcGF0aCA9IE5VTEw7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEzMCwzNiArMTM0LDk3IEBAIHN0 YXRpYyB2b2lkIHN0cmNob21wKGNoYXIgKnN0cikKICAqLwogdm9pZCBpZ3RfcG1fZW5hYmxlX2F1 ZGlvX3J1bnRpbWVfcG0odm9pZCkKIHsKKwljaGFyICpwYXRoID0gTlVMTDsKKwlzdHJ1Y3QgZGly ZW50ICpkZTsKKwlESVIgKmRpcjsKIAlpbnQgZmQ7CiAKIAkvKiBDaGVjayBpZiBhbHJlYWR5IGVu YWJsZWQuICovCiAJaWYgKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVswXSkKIAkJ cmV0dXJuOwogCi0JZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRl cnMvcG93ZXJfc2F2ZSIsIE9fUkRXUik7Ci0JaWYgKGZkID49IDApIHsKLQkJaWd0X2Fzc2VydChy ZWFkKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCi0JCQkJc2l6ZW9mKF9f aWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSkpID4gMCk7Ci0JCXN0cmNob21wKF9faWd0 X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSk7Ci0JCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxl cihfX2lndF9wbV9hdWRpb19ydW50aW1lX2V4aXRfaGFuZGxlcik7Ci0JCWlndF9hc3NlcnRfZXEo d3JpdGUoZmQsICIxXG4iLCAyKSwgMik7CisJZGlyID0gb3BlbmRpcigiL3N5cy9jbGFzcy9zb3Vu ZCIpOworCWlmICghZGlyKQorCQlyZXR1cm47CisKKwkvKiBGaW5kIFBDSSBkZXZpY2UgY2xhaW1l ZCBieSBzbmRfaGRhX2ludGVsIGFuZCB0aWVkIHRvIGk5MTUuICovCisJd2hpbGUgKChkZSA9IHJl YWRkaXIoZGlyKSkpIHsKKwkJY29uc3QgY2hhciAqbWF0Y2ggPSAiaHdDIjsKKwkJY2hhciBidWZb MzJdID0geyB9OyAvKiBmb3IgVmFsZ3JpbmQgKi8KKwkJY2hhciAqdG1wOworCQlpbnQgcmV0Owor CisJCWlmIChkZS0+ZF90eXBlICE9IERUX0xOSyB8fAorCQkgICAgc3RybmNtcChkZS0+ZF9uYW1l LCBtYXRjaCwgc3RybGVuKG1hdGNoKSkpCisJCQljb250aW51ZTsKKworCQlpZ3RfYXNzZXJ0KGFz cHJpbnRmKCZ0bXAsCisJCQkJICAgICIvc3lzL2NsYXNzL3NvdW5kLyVzL3ZlbmRvcl9uYW1lIiwK KwkJCQkgICAgZGUtPmRfbmFtZSkpOworCisJCWZkID0gb3Blbih0bXAsIE9fUkRPTkxZKTsKKwkJ ZnJlZSh0bXApOworCQlpZ3RfYXNzZXJ0X2ZkKGZkKTsKKwkJcmV0ID0gcmVhZChmZCwgYnVmLCBz aXplb2YoYnVmKSk7CiAJCWNsb3NlKGZkKTsKKwkJaWd0X2Fzc2VydChyZXQgPiAwKTsKKwkJc3Ry Y2hvbXAoYnVmKTsKKworCQkvKiBSZWFsdGVrIGFuZCBzaW1pbGFyIGRldmljZXMgYXJlIG5vdCB3 aGF0IHdlIGFyZSBhZnRlci4gKi8KKwkJaWYgKHN0cmNtcChidWYsICJJbnRlbCIpKQorCQkJY29u dGludWU7CisKKwkJaWd0X2Fzc2VydChhc3ByaW50ZigmcGF0aCwKKwkJCQkgICAgIi9zeXMvY2xh c3Mvc291bmQvJXMvZGV2aWNlL2RldmljZS9wb3dlci9jb250cm9sIiwKKwkJCQkgICAgZGUtPmRf bmFtZSkpOworCisJCWlndF9kZWJ1ZygiQXVkaW8gZGV2aWNlIHBhdGggaXMgJXNcbiIsIHBhdGgp OworCisJCWJyZWFrOwogCX0KLQlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6 MDA6MDMuMC9wb3dlci9jb250cm9sIiwgT19SRFdSKTsKLQlpZiAoZmQgPj0gMCkgewotCQlpZ3Rf YXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKLQkJCQlzaXpl b2YoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKSkgPiAwKTsKLQkJc3RyY2hvbXAoX19p Z3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKTsKLQkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwg ImF1dG9cbiIsIDUpLCA1KTsKKworCWZkID0gb3BlbigiL3N5cy9tb2R1bGUvc25kX2hkYV9pbnRl bC9wYXJhbWV0ZXJzL3Bvd2VyX3NhdmUiLCBPX1JEV1IpOworCWlmIChmZCA8IDApCisJCXJldHVy bjsKKworCS8qIHNuZF9oZGFfaW50ZWwgbG9hZGVkIGJ1dCBubyBwYXRoIGZvdW5kIGlzIGFuIGVy cm9yLiAqLworCWlmICghcGF0aCkgewogCQljbG9zZShmZCk7CisJCWVycm5vID0gRVNSQ0g7CisJ CWdvdG8gZXJyOwogCX0KIAorCWlndF9hc3NlcnQocmVhZChmZCwgX19pZ3RfcG1fYXVkaW9fcnVu dGltZV9wb3dlcl9zYXZlLAorCQkJc2l6ZW9mKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJf c2F2ZSkpID4gMCk7CisJc3RyY2hvbXAoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZl KTsKKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIoX19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0 X2hhbmRsZXIpOworCWlndF9hc3NlcnRfZXEod3JpdGUoZmQsICIxXG4iLCAyKSwgMik7CisJY2xv c2UoZmQpOworCisJZmQgPSBvcGVuKHBhdGgsIE9fUkRXUik7CisJaWYgKGZkIDwgMCkKKwkJZ290 byBlcnI7CisKKwlpZ3RfYXNzZXJ0KHJlYWQoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29u dHJvbCwKKwkJCXNpemVvZihfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2wpKSA+IDApOwor CXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7CisJaWd0X2Fzc2VydF9l cSh3cml0ZShmZCwgImF1dG9cbiIsIDUpLCA1KTsKKwljbG9zZShmZCk7CisKKwlfX2lndF9wbV9h dWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aCA9IHBhdGg7CisKIAlpZ3RfZGVidWcoIlNhdmVkIGF1 ZGlvIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKIAkJICBfX2lndF9wbV9h dWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCiAJCSAgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250 cm9sKTsKIAogCS8qIEdpdmUgc29tZSB0aW1lIGZvciBpdCB0byByZWFjdC4gKi8KIAlzbGVlcCgx KTsKKworCXJldHVybjsKKworZXJyOgorCWlndF93YXJuKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlv IHJ1bnRpbWUgUE0hICglZCkiLCBlcnJubyk7CisJZnJlZShwYXRoKTsKIH0KIAogLyoqCi0tIAoy LjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=