From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 05/27] drm/radeon: rework gpu lockup detection and processing Date: Tue, 1 May 2012 13:19:15 -0400 Message-ID: <1335892777-7357-6-git-send-email-j.glisse@gmail.com> References: <ยท> <1335892777-7357-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-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 4FB69A0911 for ; Tue, 1 May 2012 10:20:01 -0700 (PDT) Received: by mail-qc0-f177.google.com with SMTP id u28so2436886qcs.36 for ; Tue, 01 May 2012 10:20:01 -0700 (PDT) In-Reply-To: <1335892777-7357-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 ZUB2b2RhZm9uZS5kZT4KUmV2aWV3ZWQtYnk6IEplcm9tZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0 LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oICAgICAgIHwgICAgMyAr LQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYyB8ICAxNTAgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMo KyksIDc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCmluZGV4IDg4MDE2NTcu Ljg1YTNhYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtMjU1LDggKzI1NSw3IEBAIHN0 cnVjdCByYWRlb25fZmVuY2VfZHJpdmVyIHsKIAl2b2xhdGlsZSB1aW50MzJfdAkJKmNwdV9hZGRy OwogCWF0b21pY190CQkJc2VxOwogCXVpbnQzMl90CQkJbGFzdF9zZXE7Ci0JdW5zaWduZWQgbG9u ZwkJCWxhc3RfamlmZmllczsKLQl1bnNpZ25lZCBsb25nCQkJbGFzdF90aW1lb3V0OworCXVuc2ln bmVkIGxvbmcJCQlsYXN0X2FjdGl2aXR5OwogCXdhaXRfcXVldWVfaGVhZF90CQlxdWV1ZTsKIAlz dHJ1Y3QgbGlzdF9oZWFkCQljcmVhdGVkOwogCXN0cnVjdCBsaXN0X2hlYWQJCWVtaXR0ZWQ7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5jIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYwppbmRleCAzNmM0MTFmLi4xYTk3NjVhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMKQEAgLTc0LDYgKzc0LDEwIEBAIGlu dCByYWRlb25fZmVuY2VfZW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJh ZGVvbl9mZW5jZSAqZmVuY2UpCiAJcmFkZW9uX2ZlbmNlX3JpbmdfZW1pdChyZGV2LCBmZW5jZS0+ cmluZywgZmVuY2UpOwogCXRyYWNlX3JhZGVvbl9mZW5jZV9lbWl0KHJkZXYtPmRkZXYsIGZlbmNl LT5zZXEpOwogCWZlbmNlLT5lbWl0dGVkID0gdHJ1ZTsKKwkvKiBhcmUgd2UgdGhlIGZpcnN0IGZl bmNlIG9uIGEgcHJldml1c2x5IGlkbGUgcmluZz8gKi8KKwlpZiAobGlzdF9lbXB0eSgmcmRldi0+ ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5lbWl0dGVkKSkgeworCQlyZGV2LT5mZW5jZV9kcnZbZmVu Y2UtPnJpbmddLmxhc3RfYWN0aXZpdHkgPSBqaWZmaWVzOworCX0KIAlsaXN0X21vdmVfdGFpbCgm ZmVuY2UtPmxpc3QsICZyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmVtaXR0ZWQpOwogCXdy aXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwogCXJl dHVybiAwOwpAQCAtODUsMzQgKzg5LDE0IEBAIHN0YXRpYyBib29sIHJhZGVvbl9mZW5jZV9wb2xs X2xvY2tlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiAJc3RydWN0IGxp c3RfaGVhZCAqaSwgKm47CiAJdWludDMyX3Qgc2VxOwogCWJvb2wgd2FrZSA9IGZhbHNlOwotCXVu c2lnbmVkIGxvbmcgY2ppZmZpZXM7CiAKIAlzZXEgPSByYWRlb25fZmVuY2VfcmVhZChyZGV2LCBy aW5nKTsKLQlpZiAoc2VxICE9IHJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3NlcSkgewotCQly ZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9zZXEgPSBzZXE7Ci0JCXJkZXYtPmZlbmNlX2Rydlty aW5nXS5sYXN0X2ppZmZpZXMgPSBqaWZmaWVzOwotCQlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFz dF90aW1lb3V0ID0gUkFERU9OX0ZFTkNFX0pJRkZJRVNfVElNRU9VVDsKLQl9IGVsc2UgewotCQlj amlmZmllcyA9IGppZmZpZXM7Ci0JCWlmICh0aW1lX2FmdGVyKGNqaWZmaWVzLCByZGV2LT5mZW5j ZV9kcnZbcmluZ10ubGFzdF9qaWZmaWVzKSkgewotCQkJY2ppZmZpZXMgLT0gcmRldi0+ZmVuY2Vf ZHJ2W3JpbmddLmxhc3RfamlmZmllczsKLQkJCWlmICh0aW1lX2FmdGVyKHJkZXYtPmZlbmNlX2Ry dltyaW5nXS5sYXN0X3RpbWVvdXQsIGNqaWZmaWVzKSkgewotCQkJCS8qIHVwZGF0ZSB0aGUgdGlt ZW91dCAqLwotCQkJCXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQgLT0gY2ppZmZp ZXM7Ci0JCQl9IGVsc2UgewotCQkJCS8qIHRoZSA1MDBtcyB0aW1lb3V0IGlzIGVsYXBzZWQgd2Ug c2hvdWxkIHRlc3QKLQkJCQkgKiBmb3IgR1BVIGxvY2t1cAotCQkJCSAqLwotCQkJCXJkZXYtPmZl bmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQgPSAxOwotCQkJfQotCQl9IGVsc2UgewotCQkJLyog d3JhcCBhcm91bmQgdXBkYXRlIGxhc3QgamlmZmllcywgd2Ugd2lsbCBqdXN0IHdhaXQKLQkJCSAq IGEgbGl0dGxlIGxvbmdlcgotCQkJICovCi0JCQlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9q aWZmaWVzID0gY2ppZmZpZXM7Ci0JCX0KKwlpZiAoc2VxID09IHJkZXYtPmZlbmNlX2RydltyaW5n XS5sYXN0X3NlcSkKIAkJcmV0dXJuIGZhbHNlOwotCX0KKworCXJkZXYtPmZlbmNlX2RydltyaW5n XS5sYXN0X3NlcSA9IHNlcTsKKwlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9hY3Rpdml0eSA9 IGppZmZpZXM7CisKIAluID0gTlVMTDsKIAlsaXN0X2Zvcl9lYWNoKGksICZyZGV2LT5mZW5jZV9k cnZbcmluZ10uZW1pdHRlZCkgewogCQlmZW5jZSA9IGxpc3RfZW50cnkoaSwgc3RydWN0IHJhZGVv bl9mZW5jZSwgbGlzdCk7CkBAIC0yMDcsNjYgKzE5MSw4NCBAQCBpbnQgcmFkZW9uX2ZlbmNlX3dh aXQoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UsIGJvb2wgaW50cikKIAlzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldjsKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFncywgdGltZW91dDsKIAl1MzIg c2VxOwotCWludCByOworCWludCBpLCByOworCWJvb2wgc2lnbmFsZWQ7CiAKIAlpZiAoZmVuY2Ug PT0gTlVMTCkgewogCQlXQVJOKDEsICJRdWVyeWluZyBhbiBpbnZhbGlkIGZlbmNlIDogJXAgIVxu IiwgZmVuY2UpOwotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQorCiAJcmRldiA9 IGZlbmNlLT5yZGV2OwotCWlmIChyYWRlb25fZmVuY2Vfc2lnbmFsZWQoZmVuY2UpKSB7Ci0JCXJl dHVybiAwOwotCX0KLQl0aW1lb3V0ID0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0 X3RpbWVvdXQ7Ci1yZXRyeToKLQkvKiBzYXZlIGN1cnJlbnQgc2VxdWVuY2UgdXNlZCB0byBjaGVj ayBmb3IgR1BVIGxvY2t1cCAqLwotCXNlcSA9IHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10u bGFzdF9zZXE7Ci0JdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRfYmVnaW4ocmRldi0+ZGRldiwgc2Vx KTsKLQlpZiAoaW50cikgeworCXNpZ25hbGVkID0gcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZlbmNl KTsKKwl3aGlsZSAoIXNpZ25hbGVkKSB7CisJCXJlYWRfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5j ZV9sb2NrLCBpcnFfZmxhZ3MpOworCQl0aW1lb3V0ID0gamlmZmllcyAtIFJBREVPTl9GRU5DRV9K SUZGSUVTX1RJTUVPVVQ7CisJCWlmICh0aW1lX2FmdGVyKHJkZXYtPmZlbmNlX2RydltmZW5jZS0+ cmluZ10ubGFzdF9hY3Rpdml0eSwgdGltZW91dCkpIHsKKwkJCS8qIHRoZSBub3JtYWwgY2FzZSwg dGltZW91dCBpcyBzb21ld2hlcmUgYmVmb3JlIGxhc3RfYWN0aXZpdHkgKi8KKwkJCXRpbWVvdXQg PSByZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZpdHkgLSB0aW1lb3V0Owor CQl9IGVsc2UgeworCQkJLyogZWl0aGVyIGppZmZpZXMgd3JhcHBlZCBhcm91bmQsIG9yIG5vIGZl bmNlIHdhcyBzaWduYWxlZCBpbiB0aGUgbGFzdCA1MDBtcworCQkJICogYW55d2F5IHdlIHdpbGwg anVzdCB3YWl0IGZvciB0aGUgbWluaW11bSBhbW91bnQgYW5kIHRoZW4gY2hlY2sgZm9yIGEgbG9j a3VwICovCisJCQl0aW1lb3V0ID0gMTsKKwkJfQorCQkvKiBzYXZlIGN1cnJlbnQgc2VxdWVuY2Ug dmFsdWUgdXNlZCB0byBjaGVjayBmb3IgR1BVIGxvY2t1cHMgKi8KKwkJc2VxID0gcmRldi0+ZmVu Y2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3NlcTsKKwkJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgm cmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKworCQl0cmFjZV9yYWRlb25fZmVuY2Vfd2Fp dF9iZWdpbihyZGV2LT5kZGV2LCBzZXEpOwogCQlyYWRlb25faXJxX2ttc19zd19pcnFfZ2V0KHJk ZXYsIGZlbmNlLT5yaW5nKTsKLQkJciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0 KHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkJcmFkZW9uX2ZlbmNlX3Np Z25hbGVkKGZlbmNlKSwgdGltZW91dCk7CisJCWlmIChpbnRyKSB7CisJCQlyID0gd2FpdF9ldmVu dF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoCisJCQkJcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5n XS5xdWV1ZSwKKwkJCQkoc2lnbmFsZWQgPSByYWRlb25fZmVuY2Vfc2lnbmFsZWQoZmVuY2UpKSwg dGltZW91dCk7CisJCX0gZWxzZSB7CisJCQlyID0gd2FpdF9ldmVudF90aW1lb3V0KAorCQkJCXJk ZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCisJCQkJKHNpZ25hbGVkID0gcmFkZW9u X2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSksIHRpbWVvdXQpOworCQl9CiAJCXJhZGVvbl9pcnFfa21z X3N3X2lycV9wdXQocmRldiwgZmVuY2UtPnJpbmcpOwogCQlpZiAodW5saWtlbHkociA8IDApKSB7 CiAJCQlyZXR1cm4gcjsKIAkJfQotCX0gZWxzZSB7Ci0JCXJhZGVvbl9pcnFfa21zX3N3X2lycV9n ZXQocmRldiwgZmVuY2UtPnJpbmcpOwotCQlyID0gd2FpdF9ldmVudF90aW1lb3V0KHJkZXYtPmZl bmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkgcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZl bmNlKSwgdGltZW91dCk7Ci0JCXJhZGVvbl9pcnFfa21zX3N3X2lycV9wdXQocmRldiwgZmVuY2Ut PnJpbmcpOwotCX0KLQl0cmFjZV9yYWRlb25fZmVuY2Vfd2FpdF9lbmQocmRldi0+ZGRldiwgc2Vx KTsKLQlpZiAodW5saWtlbHkoIXJhZGVvbl9mZW5jZV9zaWduYWxlZChmZW5jZSkpKSB7Ci0JCS8q IHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZCBmZW5jZSBpc24ndAotCQkg KiBpc24ndCBzaWduYWxlZCB5ZXQsIHJlc3VtZSB3YWl0Ci0JCSAqLwotCQlpZiAocikgewotCQkJ dGltZW91dCA9IHI7Ci0JCQlnb3RvIHJldHJ5OwotCQl9Ci0JCS8qIGRvbid0IHByb3RlY3QgcmVh ZCBhY2Nlc3MgdG8gcmRldi0+ZmVuY2VfZHJ2W3RdLmxhc3Rfc2VxCi0JCSAqIGlmIHdlIGV4cGVy aWVuY2luZyBhIGxvY2t1cCB0aGUgdmFsdWUgZG9lc24ndCBjaGFuZ2UKLQkJICovCi0JCWlmIChz ZXEgPT0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3NlcSAmJgotCQkgICAgcmFk ZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5yaW5nLCAmcmRldi0+cmluZ1tmZW5jZS0+ cmluZ10pKSB7Ci0KLQkJCS8qIGdvb2QgbmV3cyB3ZSBiZWxpZXZlIGl0J3MgYSBsb2NrdXAgKi8K LQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIkdQVSBsb2NrdXAgKHdhaXRpbmcgZm9yIDB4JTA4WCBs YXN0IGZlbmNlIGlkIDB4JTA4WClcbiIsCi0JCQkgICAgIGZlbmNlLT5zZXEsIHNlcSk7Ci0KLQkJ CS8qIG1hcmsgdGhlIHJpbmcgYXMgbm90IHJlYWR5IGFueSBtb3JlICovCi0JCQlyZGV2LT5yaW5n W2ZlbmNlLT5yaW5nXS5yZWFkeSA9IGZhbHNlOwotCQkJciA9IHJhZGVvbl9ncHVfcmVzZXQocmRl dik7Ci0JCQlpZiAocikKLQkJCQlyZXR1cm4gcjsKKwkJdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRf ZW5kKHJkZXYtPmRkZXYsIHNlcSk7CisKKwkJaWYgKHVubGlrZWx5KCFzaWduYWxlZCkpIHsKKwkJ CS8qIHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZCBmZW5jZQorCQkJICog aXNuJ3Qgc2lnbmFsZWQgeWV0LCByZXN1bWUgd2FpdGluZyAqLworCQkJaWYgKHIpIHsKKwkJCQlj b250aW51ZTsKKwkJCX0KKworCQkJd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2Nr LCBpcnFfZmxhZ3MpOworCQkJLyogY2hlY2sgaWYgc2VxdWVuY2UgdmFsdWUgaGFzIGNoYW5nZWQg c2luY2UgbGFzdF9hY3Rpdml0eSAqLworCQkJaWYgKHNlcSAhPSByZGV2LT5mZW5jZV9kcnZbZmVu Y2UtPnJpbmddLmxhc3Rfc2VxKSB7CisJCQkJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYt PmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8qIGNo YW5nZSBzZXF1ZW5jZSB2YWx1ZSBvbiBhbGwgcmluZ3MsIHNvIG5vYm9keSBlbHNlIHRoaW5ncyB0 aGVyZSBpcyBhIGxvY2t1cCAqLworCQkJZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7 ICsraSkKKwkJCQlyZGV2LT5mZW5jZV9kcnZbaV0ubGFzdF9zZXEgLT0gMHgxMDAwMDsKKwkJCXdy aXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCisJ CQlpZiAocmFkZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5yaW5nLCAmcmRldi0+cmlu Z1tmZW5jZS0+cmluZ10pKSB7CisKKwkJCQkvKiBnb29kIG5ld3Mgd2UgYmVsaWV2ZSBpdCdzIGEg bG9ja3VwICovCisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiR1BVIGxvY2t1cCAod2FpdGluZyBm b3IgMHglMDhYIGxhc3QgZmVuY2UgaWQgMHglMDhYKVxuIiwKKwkJCQkgICAgIGZlbmNlLT5zZXEs IHNlcSk7CisKKwkJCQkvKiBtYXJrIHRoZSByaW5nIGFzIG5vdCByZWFkeSBhbnkgbW9yZSAqLwor CQkJCXJkZXYtPnJpbmdbZmVuY2UtPnJpbmddLnJlYWR5ID0gZmFsc2U7CisJCQkJciA9IHJhZGVv bl9ncHVfcmVzZXQocmRldik7CisJCQkJaWYgKHIpCisJCQkJCXJldHVybiByOworCisJCQkJd3Jp dGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCQkJCXJkZXYt PmZlbmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSA9IGppZmZpZXM7CisJCQkJd3Jp dGVfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQl9 CiAJCX0KLQkJdGltZW91dCA9IFJBREVPTl9GRU5DRV9KSUZGSUVTX1RJTUVPVVQ7Ci0JCXdyaXRl X2xvY2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJcmRldi0+ZmVu Y2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3RpbWVvdXQgPSBSQURFT05fRkVOQ0VfSklGRklFU19U SU1FT1VUOwotCQlyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfamlmZmllcyA9IGpp ZmZpZXM7Ci0JCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFf ZmxhZ3MpOwotCQlnb3RvIHJldHJ5OwogCX0KIAlyZXR1cm4gMDsKIH0KLS0gCjEuNy43LjYKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==