From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 05/24] drm/radeon: rework gpu lockup detection and processing Date: Wed, 25 Apr 2012 15:03:10 -0400 Message-ID: <1335380609-5804-6-git-send-email-j.glisse@gmail.com> References: <1335380609-5804-1-git-send-email-j.glisse@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qa0-f42.google.com (mail-qa0-f42.google.com [209.85.216.42]) by gabe.freedesktop.org (Postfix) with ESMTP id C86E3A08D5 for ; Wed, 25 Apr 2012 12:03:51 -0700 (PDT) Received: by qafi31 with SMTP id i31so3761995qaf.15 for ; Wed, 25 Apr 2012 12:03:51 -0700 (PDT) In-Reply-To: <1335380609-5804-1-git-send-email-j.glisse@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+CgpQcmV2aXVz bHkgbXVsdGlwbGUgcmluZ3MgY291bGQgdHJpZ2dlciBtdWx0aXBsZSBHUFUKcmVzZXRzIGF0IHRo ZSBzYW1lIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0aHNpbXBs ZUB2b2RhZm9uZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oICAgICAg IHwgICAgMyArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYyB8ICAxNTAg KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDc3IGlu c2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCmluZGV4 IDg4MDE2NTcuLjg1YTNhYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtMjU1LDggKzI1 NSw3IEBAIHN0cnVjdCByYWRlb25fZmVuY2VfZHJpdmVyIHsKIAl2b2xhdGlsZSB1aW50MzJfdAkJ KmNwdV9hZGRyOwogCWF0b21pY190CQkJc2VxOwogCXVpbnQzMl90CQkJbGFzdF9zZXE7Ci0JdW5z aWduZWQgbG9uZwkJCWxhc3RfamlmZmllczsKLQl1bnNpZ25lZCBsb25nCQkJbGFzdF90aW1lb3V0 OworCXVuc2lnbmVkIGxvbmcJCQlsYXN0X2FjdGl2aXR5OwogCXdhaXRfcXVldWVfaGVhZF90CQlx dWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQljcmVhdGVkOwogCXN0cnVjdCBsaXN0X2hlYWQJCWVt aXR0ZWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5j IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYwppbmRleCBjMGVjMTlkLi41 ZDJjYTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMKQEAgLTc0LDYgKzc0 LDEwIEBAIGludCByYWRlb25fZmVuY2VfZW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg c3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UpCiAJcmFkZW9uX2ZlbmNlX3JpbmdfZW1pdChyZGV2 LCBmZW5jZS0+cmluZywgZmVuY2UpOwogCXRyYWNlX3JhZGVvbl9mZW5jZV9lbWl0KHJkZXYtPmRk ZXYsIGZlbmNlLT5zZXEpOwogCWZlbmNlLT5lbWl0dGVkID0gdHJ1ZTsKKwkvKiBhcmUgd2UgdGhl IGZpcnN0IGZlbmNlIG9uIGEgcHJldml1c2x5IGlkbGUgcmluZz8gKi8KKwlpZiAobGlzdF9lbXB0 eSgmcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5lbWl0dGVkKSkgeworCQlyZGV2LT5mZW5j ZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZpdHkgPSBqaWZmaWVzOworCX0KIAlsaXN0X21v dmVfdGFpbCgmZmVuY2UtPmxpc3QsICZyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmVtaXR0 ZWQpOwogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOwogCXJldHVybiAwOwpAQCAtODUsMzQgKzg5LDE0IEBAIHN0YXRpYyBib29sIHJhZGVvbl9m ZW5jZV9wb2xsX2xvY2tlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiAJ c3RydWN0IGxpc3RfaGVhZCAqaSwgKm47CiAJdWludDMyX3Qgc2VxOwogCWJvb2wgd2FrZSA9IGZh bHNlOwotCXVuc2lnbmVkIGxvbmcgY2ppZmZpZXM7CiAKIAlzZXEgPSByYWRlb25fZmVuY2VfcmVh ZChyZGV2LCByaW5nKTsKLQlpZiAoc2VxICE9IHJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3Nl cSkgewotCQlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9zZXEgPSBzZXE7Ci0JCXJkZXYtPmZl bmNlX2RydltyaW5nXS5sYXN0X2ppZmZpZXMgPSBqaWZmaWVzOwotCQlyZGV2LT5mZW5jZV9kcnZb cmluZ10ubGFzdF90aW1lb3V0ID0gUkFERU9OX0ZFTkNFX0pJRkZJRVNfVElNRU9VVDsKLQl9IGVs c2UgewotCQljamlmZmllcyA9IGppZmZpZXM7Ci0JCWlmICh0aW1lX2FmdGVyKGNqaWZmaWVzLCBy ZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9qaWZmaWVzKSkgewotCQkJY2ppZmZpZXMgLT0gcmRl di0+ZmVuY2VfZHJ2W3JpbmddLmxhc3RfamlmZmllczsKLQkJCWlmICh0aW1lX2FmdGVyKHJkZXYt PmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQsIGNqaWZmaWVzKSkgewotCQkJCS8qIHVwZGF0 ZSB0aGUgdGltZW91dCAqLwotCQkJCXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQg LT0gY2ppZmZpZXM7Ci0JCQl9IGVsc2UgewotCQkJCS8qIHRoZSA1MDBtcyB0aW1lb3V0IGlzIGVs YXBzZWQgd2Ugc2hvdWxkIHRlc3QKLQkJCQkgKiBmb3IgR1BVIGxvY2t1cAotCQkJCSAqLwotCQkJ CXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQgPSAxOwotCQkJfQotCQl9IGVsc2Ug ewotCQkJLyogd3JhcCBhcm91bmQgdXBkYXRlIGxhc3QgamlmZmllcywgd2Ugd2lsbCBqdXN0IHdh aXQKLQkJCSAqIGEgbGl0dGxlIGxvbmdlcgotCQkJICovCi0JCQlyZGV2LT5mZW5jZV9kcnZbcmlu Z10ubGFzdF9qaWZmaWVzID0gY2ppZmZpZXM7Ci0JCX0KKwlpZiAoc2VxID09IHJkZXYtPmZlbmNl X2RydltyaW5nXS5sYXN0X3NlcSkKIAkJcmV0dXJuIGZhbHNlOwotCX0KKworCXJkZXYtPmZlbmNl X2RydltyaW5nXS5sYXN0X3NlcSA9IHNlcTsKKwlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9h Y3Rpdml0eSA9IGppZmZpZXM7CisKIAluID0gTlVMTDsKIAlsaXN0X2Zvcl9lYWNoKGksICZyZGV2 LT5mZW5jZV9kcnZbcmluZ10uZW1pdHRlZCkgewogCQlmZW5jZSA9IGxpc3RfZW50cnkoaSwgc3Ry dWN0IHJhZGVvbl9mZW5jZSwgbGlzdCk7CkBAIC0yMDcsNjYgKzE5MSw4NCBAQCBpbnQgcmFkZW9u X2ZlbmNlX3dhaXQoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UsIGJvb2wgaW50cikKIAlzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldjsKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFncywgdGltZW91 dDsKIAl1MzIgc2VxOwotCWludCByOworCWludCBpLCByOworCWJvb2wgc2lnbmFsZWQ7CiAKIAlp ZiAoZmVuY2UgPT0gTlVMTCkgewogCQlXQVJOKDEsICJRdWVyeWluZyBhbiBpbnZhbGlkIGZlbmNl IDogJXAgIVxuIiwgZmVuY2UpOwotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQor CiAJcmRldiA9IGZlbmNlLT5yZGV2OwotCWlmIChyYWRlb25fZmVuY2Vfc2lnbmFsZWQoZmVuY2Up KSB7Ci0JCXJldHVybiAwOwotCX0KLQl0aW1lb3V0ID0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5y aW5nXS5sYXN0X3RpbWVvdXQ7Ci1yZXRyeToKLQkvKiBzYXZlIGN1cnJlbnQgc2VxdWVuY2UgdXNl ZCB0byBjaGVjayBmb3IgR1BVIGxvY2t1cCAqLwotCXNlcSA9IHJkZXYtPmZlbmNlX2RydltmZW5j ZS0+cmluZ10ubGFzdF9zZXE7Ci0JdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRfYmVnaW4ocmRldi0+ ZGRldiwgc2VxKTsKLQlpZiAoaW50cikgeworCXNpZ25hbGVkID0gcmFkZW9uX2ZlbmNlX3NpZ25h bGVkKGZlbmNlKTsKKwl3aGlsZSAoIXNpZ25hbGVkKSB7CisJCXJlYWRfbG9ja19pcnFzYXZlKCZy ZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCQl0aW1lb3V0ID0gamlmZmllcyAtIFJBREVP Tl9GRU5DRV9KSUZGSUVTX1RJTUVPVVQ7CisJCWlmICh0aW1lX2FmdGVyKHJkZXYtPmZlbmNlX2Ry dltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSwgdGltZW91dCkpIHsKKwkJCS8qIHRoZSBub3Jt YWwgY2FzZSwgdGltZW91dCBpcyBzb21ld2hlcmUgYmVmb3JlIGxhc3RfYWN0aXZpdHkgKi8KKwkJ CXRpbWVvdXQgPSByZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZpdHkgLSB0 aW1lb3V0OworCQl9IGVsc2UgeworCQkJLyogZWl0aGVyIGppZmZpZXMgd3JhcHBlZCBhcm91bmQs IG9yIG5vIGZlbmNlIHdhcyBzaWduYWxlZCBpbiB0aGUgbGFzdCA1MDBtcworCQkJICogYW55d2F5 IHdlIHdpbGwganVzdCB3YWl0IGZvciB0aGUgbWluaW11bSBhbW91bnQgYW5kIHRoZW4gY2hlY2sg Zm9yIGEgbG9ja3VwICovCisJCQl0aW1lb3V0ID0gMTsKKwkJfQorCQkvKiBzYXZlIGN1cnJlbnQg c2VxdWVuY2UgdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgR1BVIGxvY2t1cHMgKi8KKwkJc2VxID0g cmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3NlcTsKKwkJcmVhZF91bmxvY2tfaXJx cmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKworCQl0cmFjZV9yYWRlb25f ZmVuY2Vfd2FpdF9iZWdpbihyZGV2LT5kZGV2LCBzZXEpOwogCQlyYWRlb25faXJxX2ttc19zd19p cnFfZ2V0KHJkZXYsIGZlbmNlLT5yaW5nKTsKLQkJciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJs ZV90aW1lb3V0KHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkJcmFkZW9u X2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSwgdGltZW91dCk7CisJCWlmIChpbnRyKSB7CisJCQlyID0g d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoCisJCQkJcmRldi0+ZmVuY2VfZHJ2W2Zl bmNlLT5yaW5nXS5xdWV1ZSwKKwkJCQkoc2lnbmFsZWQgPSByYWRlb25fZmVuY2Vfc2lnbmFsZWQo ZmVuY2UpKSwgdGltZW91dCk7CisJCX0gZWxzZSB7CisJCQlyID0gd2FpdF9ldmVudF90aW1lb3V0 KAorCQkJCXJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCisJCQkJKHNpZ25hbGVk ID0gcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSksIHRpbWVvdXQpOworCQl9CiAJCXJhZGVv bl9pcnFfa21zX3N3X2lycV9wdXQocmRldiwgZmVuY2UtPnJpbmcpOwogCQlpZiAodW5saWtlbHko ciA8IDApKSB7CiAJCQlyZXR1cm4gcjsKIAkJfQotCX0gZWxzZSB7Ci0JCXJhZGVvbl9pcnFfa21z X3N3X2lycV9nZXQocmRldiwgZmVuY2UtPnJpbmcpOwotCQlyID0gd2FpdF9ldmVudF90aW1lb3V0 KHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkgcmFkZW9uX2ZlbmNlX3Np Z25hbGVkKGZlbmNlKSwgdGltZW91dCk7Ci0JCXJhZGVvbl9pcnFfa21zX3N3X2lycV9wdXQocmRl diwgZmVuY2UtPnJpbmcpOwotCX0KLQl0cmFjZV9yYWRlb25fZmVuY2Vfd2FpdF9lbmQocmRldi0+ ZGRldiwgc2VxKTsKLQlpZiAodW5saWtlbHkoIXJhZGVvbl9mZW5jZV9zaWduYWxlZChmZW5jZSkp KSB7Ci0JCS8qIHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZCBmZW5jZSBp c24ndAotCQkgKiBpc24ndCBzaWduYWxlZCB5ZXQsIHJlc3VtZSB3YWl0Ci0JCSAqLwotCQlpZiAo cikgewotCQkJdGltZW91dCA9IHI7Ci0JCQlnb3RvIHJldHJ5OwotCQl9Ci0JCS8qIGRvbid0IHBy b3RlY3QgcmVhZCBhY2Nlc3MgdG8gcmRldi0+ZmVuY2VfZHJ2W3RdLmxhc3Rfc2VxCi0JCSAqIGlm IHdlIGV4cGVyaWVuY2luZyBhIGxvY2t1cCB0aGUgdmFsdWUgZG9lc24ndCBjaGFuZ2UKLQkJICov Ci0JCWlmIChzZXEgPT0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3NlcSAmJgot CQkgICAgcmFkZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5yaW5nLCAmcmRldi0+cmlu Z1tmZW5jZS0+cmluZ10pKSB7Ci0KLQkJCS8qIGdvb2QgbmV3cyB3ZSBiZWxpZXZlIGl0J3MgYSBs b2NrdXAgKi8KLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIkdQVSBsb2NrdXAgKHdhaXRpbmcgZm9y IDB4JTA4WCBsYXN0IGZlbmNlIGlkIDB4JTA4WClcbiIsCi0JCQkgICAgIGZlbmNlLT5zZXEsIHNl cSk7Ci0KLQkJCS8qIG1hcmsgdGhlIHJpbmcgYXMgbm90IHJlYWR5IGFueSBtb3JlICovCi0JCQly ZGV2LT5yaW5nW2ZlbmNlLT5yaW5nXS5yZWFkeSA9IGZhbHNlOwotCQkJciA9IHJhZGVvbl9ncHVf cmVzZXQocmRldik7Ci0JCQlpZiAocikKLQkJCQlyZXR1cm4gcjsKKwkJdHJhY2VfcmFkZW9uX2Zl bmNlX3dhaXRfZW5kKHJkZXYtPmRkZXYsIHNlcSk7CisKKwkJaWYgKHVubGlrZWx5KCFzaWduYWxl ZCkpIHsKKwkJCS8qIHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZCBmZW5j ZQorCQkJICogaXNuJ3Qgc2lnbmFsZWQgeWV0LCByZXN1bWUgd2FpdGluZyAqLworCQkJaWYgKHIp IHsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5m ZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCQkJLyogY2hlY2sgaWYgc2VxdWVuY2UgdmFsdWUgaGFz IGNoYW5nZWQgc2luY2UgbGFzdF9hY3Rpdml0eSAqLworCQkJaWYgKHNlcSAhPSByZGV2LT5mZW5j ZV9kcnZbZmVuY2UtPnJpbmddLmxhc3Rfc2VxKSB7CisJCQkJd3JpdGVfdW5sb2NrX2lycXJlc3Rv cmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQkJY29udGludWU7CisJCQl9CisK KwkJCS8qIGNoYW5nZSBzZXF1ZW5jZSB2YWx1ZSBvbiBhbGwgcmluZ3MsIHNvIG5vYm9keSBlbHNl IHRoaW5ncyB0aGVyZSBpcyBhIGxvY2t1cCAqLworCQkJZm9yIChpID0gMDsgaSA8IFJBREVPTl9O VU1fUklOR1M7ICsraSkKKwkJCQlyZGV2LT5mZW5jZV9kcnZbaV0ubGFzdF9zZXEgLT0gMHgxMDAw MDsKKwkJCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOworCisJCQlpZiAocmFkZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5yaW5nLCAm cmRldi0+cmluZ1tmZW5jZS0+cmluZ10pKSB7CisKKwkJCQkvKiBnb29kIG5ld3Mgd2UgYmVsaWV2 ZSBpdCdzIGEgbG9ja3VwICovCisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiR1BVIGxvY2t1cCAo d2FpdGluZyBmb3IgMHglMDhYIGxhc3QgZmVuY2UgaWQgMHglMDhYKVxuIiwKKwkJCQkgICAgIGZl bmNlLT5zZXEsIHNlcSk7CisKKwkJCQkvKiBtYXJrIHRoZSByaW5nIGFzIG5vdCByZWFkeSBhbnkg bW9yZSAqLworCQkJCXJkZXYtPnJpbmdbZmVuY2UtPnJpbmddLnJlYWR5ID0gZmFsc2U7CisJCQkJ ciA9IHJhZGVvbl9ncHVfcmVzZXQocmRldik7CisJCQkJaWYgKHIpCisJCQkJCXJldHVybiByOwor CisJCQkJd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwor CQkJCXJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSA9IGppZmZpZXM7 CisJCQkJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFn cyk7CisJCQl9CiAJCX0KLQkJdGltZW91dCA9IFJBREVPTl9GRU5DRV9KSUZGSUVTX1RJTUVPVVQ7 Ci0JCXdyaXRlX2xvY2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJ cmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3RpbWVvdXQgPSBSQURFT05fRkVOQ0Vf SklGRklFU19USU1FT1VUOwotCQlyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3Rfamlm ZmllcyA9IGppZmZpZXM7Ci0JCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9s b2NrLCBpcnFfZmxhZ3MpOwotCQlnb3RvIHJldHJ5OwogCX0KIAlyZXR1cm4gMDsKIH0KLS0gCjEu Ny43LjYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==