From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 6/9] drm/radeon: handle lockup in delayed work, v5 Date: Tue, 26 Aug 2014 18:35:07 +0200 Message-ID: <1409070910-2549-6-git-send-email-deathsimple@vodafone.de> References: <1409070910-2549-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id 443C36E495 for ; Tue, 26 Aug 2014 09:35:35 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id B5B862613F0 for ; Tue, 26 Aug 2014 18:35:34 +0200 (CEST) Received: from pegasos-out.vodafone.de ([127.0.0.1]) by localhost (rohrpostix1.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TBDJDAUKLxd6 for ; Tue, 26 Aug 2014 18:35:24 +0200 (CEST) Received: from smtp-03.vodafone.de (smtp-03.vodafone.de [10.215.254.38]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id 80EC7261406 for ; Tue, 26 Aug 2014 18:35:24 +0200 (CEST) Received: from smtp-03.vodafone.de ([127.0.0.1]) by localhost (xsmail-dmz7.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zW8gCqiGHcWu for ; Tue, 26 Aug 2014 18:35:11 +0200 (CEST) In-Reply-To: <1409070910-2549-1-git-send-email-deathsimple@vodafone.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKdjUgKGNo ayk6IGNvbXBsZXRlIHJld29yaywgc3RhcnQgd2hlbiB0aGUgZmlyc3QgZmVuY2UgaXMgZW1pdHRl ZCwKICAgICAgICAgIHN0b3Agd2hlbiB0aGUgbGFzdCBmZW5jZSBpcyBzaWduYWxsZWQsIG1ha2Ug aXQgd29yawogICAgICAgICAgY29ycmVjdGx5IHdpdGggR1BVIHJlc2V0cywgY2xlYW51cCByYWRl b25fZmVuY2Vfd2FpdF9zZXEKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFy dGVuLmxhbmtob3JzdEBjYW5vbmljYWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2 bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb24uaCAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9m ZW5jZS5jIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbi5oCmluZGV4IGY1MjhhZTguLmZjZThiMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24u aApAQCAtMzQ5LDYgKzM0OSw3IEBAIGV4dGVybiB2b2lkIGV2ZXJncmVlbl90aWxpbmdfZmllbGRz KHVuc2lnbmVkIHRpbGluZ19mbGFncywgdW5zaWduZWQgKmJhbmt3LAogICogRmVuY2VzLgogICov CiBzdHJ1Y3QgcmFkZW9uX2ZlbmNlX2RyaXZlciB7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UJCSpy ZGV2OwogCXVpbnQzMl90CQkJc2NyYXRjaF9yZWc7CiAJdWludDY0X3QJCQlncHVfYWRkcjsKIAl2 b2xhdGlsZSB1aW50MzJfdAkJKmNwdV9hZGRyOwpAQCAtMzU2LDYgKzM1Nyw3IEBAIHN0cnVjdCBy YWRlb25fZmVuY2VfZHJpdmVyIHsKIAl1aW50NjRfdAkJCXN5bmNfc2VxW1JBREVPTl9OVU1fUklO R1NdOwogCWF0b21pYzY0X3QJCQlsYXN0X3NlcTsKIAlib29sCQkJCWluaXRpYWxpemVkOworCXN0 cnVjdCBkZWxheWVkX3dvcmsJCWxvY2t1cF93b3JrOwogfTsKIAogc3RydWN0IHJhZGVvbl9mZW5j ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5jIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYwppbmRleCBlOGEyOGU3Li5hYzE1 ZjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMKQEAgLTk4LDYgKzk4LDI1 IEBAIHN0YXRpYyB1MzIgcmFkZW9uX2ZlbmNlX3JlYWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJk ZXYsIGludCByaW5nKQogfQogCiAvKioKKyAqIHJhZGVvbl9mZW5jZV9zY2hlZHVsZV9jaGVjayAt IHNjaGVkdWxlIGxvY2t1cCBjaGVjaworICoKKyAqIEByZGV2OiByYWRlb25fZGV2aWNlIHBvaW50 ZXIKKyAqIEByaW5nOiByaW5nIGluZGV4IHdlIHNob3VsZCB3b3JrIHdpdGgKKyAqCisgKiBRdWV1 ZXMgYSBkZWxheWVkIHdvcmsgaXRlbSB0byBjaGVjayBmb3IgbG9ja3Vwcy4KKyAqLworc3RhdGlj IHZvaWQgcmFkZW9uX2ZlbmNlX3NjaGVkdWxlX2NoZWNrKHN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2LCBpbnQgcmluZykKK3sKKwkvKgorCSAqIERvIG5vdCByZXNldCB0aGUgdGltZXIgaGVyZSB3 aXRoIG1vZF9kZWxheWVkX3dvcmssCisJICogdGhpcyBjYW4gbGl2ZWxvY2sgaW4gYW4gaW50ZXJh Y3Rpb24gd2l0aCBUVE0gZGVsYXllZCBkZXN0cm95LgorCSAqLworCXF1ZXVlX2RlbGF5ZWRfd29y ayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLAorCQkJICAgJnJkZXYtPmZlbmNlX2RydltyaW5n XS5sb2NrdXBfd29yaywKKwkJCSAgIFJBREVPTl9GRU5DRV9KSUZGSUVTX1RJTUVPVVQpOworfQor CisvKioKICAqIHJhZGVvbl9mZW5jZV9lbWl0IC0gZW1pdCBhIGZlbmNlIG9uIHRoZSByZXF1ZXN0 ZWQgcmluZwogICoKICAqIEByZGV2OiByYWRlb25fZGV2aWNlIHBvaW50ZXIKQEAgLTEyMiwxOSAr MTQxLDIxIEBAIGludCByYWRlb25fZmVuY2VfZW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRl diwKIAkoKmZlbmNlKS0+cmluZyA9IHJpbmc7CiAJcmFkZW9uX2ZlbmNlX3JpbmdfZW1pdChyZGV2 LCByaW5nLCAqZmVuY2UpOwogCXRyYWNlX3JhZGVvbl9mZW5jZV9lbWl0KHJkZXYtPmRkZXYsIHJp bmcsICgqZmVuY2UpLT5zZXEpOworCXJhZGVvbl9mZW5jZV9zY2hlZHVsZV9jaGVjayhyZGV2LCBy aW5nKTsKIAlyZXR1cm4gMDsKIH0KIAogLyoqCi0gKiByYWRlb25fZmVuY2VfcHJvY2VzcyAtIHBy b2Nlc3MgYSBmZW5jZQorICogcmFkZW9uX2ZlbmNlX2FjdGl2aXR5IC0gY2hlY2sgZm9yIGZlbmNl IGFjdGl2aXR5CiAgKgogICogQHJkZXY6IHJhZGVvbl9kZXZpY2UgcG9pbnRlcgogICogQHJpbmc6 IHJpbmcgaW5kZXggdGhlIGZlbmNlIGlzIGFzc29jaWF0ZWQgd2l0aAogICoKLSAqIENoZWNrcyB0 aGUgY3VycmVudCBmZW5jZSB2YWx1ZSBhbmQgd2FrZXMgdGhlIGZlbmNlIHF1ZXVlCi0gKiBpZiB0 aGUgc2VxdWVuY2UgbnVtYmVyIGhhcyBpbmNyZWFzZWQgKGFsbCBhc2ljcykuCisgKiBDaGVja3Mg dGhlIGN1cnJlbnQgZmVuY2UgdmFsdWUgYW5kIGNhbGN1bGF0ZXMgdGhlIGxhc3QKKyAqIHNpZ25h bGxlZCBmZW5jZSB2YWx1ZS4gUmV0dXJucyB0cnVlIGlmIGFjdGl2aXR5IG9jY3VyZWQKKyAqIG9u IHRoZSByaW5nLCBhbmQgdGhlIGZlbmNlX3F1ZXVlIHNob3VsZCBiZSB3YWtlbiB1cC4KICAqLwot dm9pZCByYWRlb25fZmVuY2VfcHJvY2VzcyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50 IHJpbmcpCitzdGF0aWMgYm9vbCByYWRlb25fZmVuY2VfYWN0aXZpdHkoc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYsIGludCByaW5nKQogewogCXVpbnQ2NF90IHNlcSwgbGFzdF9zZXEsIGxhc3Rf ZW1pdHRlZDsKIAl1bnNpZ25lZCBjb3VudF9sb29wID0gMDsKQEAgLTE5MCw3ICsyMTEsNjcgQEAg dm9pZCByYWRlb25fZmVuY2VfcHJvY2VzcyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50 IHJpbmcpCiAJCX0KIAl9IHdoaWxlIChhdG9taWM2NF94Y2hnKCZyZGV2LT5mZW5jZV9kcnZbcmlu Z10ubGFzdF9zZXEsIHNlcSkgPiBzZXEpOwogCi0JaWYgKHdha2UpCisJaWYgKHNlcSA8IGxhc3Rf ZW1pdHRlZCkKKwkJcmFkZW9uX2ZlbmNlX3NjaGVkdWxlX2NoZWNrKHJkZXYsIHJpbmcpOworCisJ cmV0dXJuIHdha2U7Cit9CisKKy8qKgorICogcmFkZW9uX2ZlbmNlX2NoZWNrX2xvY2t1cCAtIGNo ZWNrIGZvciBoYXJkd2FyZSBsb2NrdXAKKyAqCisgKiBAd29yazogZGVsYXllZCB3b3JrIGl0ZW0K KyAqCisgKiBDaGVja3MgZm9yIGZlbmNlIGFjdGl2aXR5IGFuZCBpZiB0aGVyZSBpcyBub25lIHBy b2JlCisgKiB0aGUgaGFyZHdhcmUgaWYgYSBsb2NrdXAgb2NjdXJlZC4KKyAqLworc3RhdGljIHZv aWQgcmFkZW9uX2ZlbmNlX2NoZWNrX2xvY2t1cChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7 CisJc3RydWN0IHJhZGVvbl9mZW5jZV9kcml2ZXIgKmZlbmNlX2RydjsKKwlzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldjsKKwlpbnQgcmluZzsKKworCWZlbmNlX2RydiA9IGNvbnRhaW5lcl9vZih3 b3JrLCBzdHJ1Y3QgcmFkZW9uX2ZlbmNlX2RyaXZlciwKKwkJCQkgbG9ja3VwX3dvcmsud29yayk7 CisJcmRldiA9IGZlbmNlX2Rydi0+cmRldjsKKwlyaW5nID0gZmVuY2VfZHJ2IC0gJnJkZXYtPmZl bmNlX2RydlswXTsKKworCWlmICghZG93bl9yZWFkX3RyeWxvY2soJnJkZXYtPmV4Y2x1c2l2ZV9s b2NrKSkgeworCQkvKiBqdXN0IHJlc2NoZWR1bGUgdGhlIGNoZWNrIGlmIGEgcmVzZXQgaXMgZ29p bmcgb24gKi8KKwkJcmFkZW9uX2ZlbmNlX3NjaGVkdWxlX2NoZWNrKHJkZXYsIHJpbmcpOworCQly ZXR1cm47CisJfQorCisJaWYgKHJhZGVvbl9mZW5jZV9hY3Rpdml0eShyZGV2LCByaW5nKSkKKwkJ d2FrZV91cF9hbGwoJnJkZXYtPmZlbmNlX3F1ZXVlKTsKKworCWVsc2UgaWYgKHJhZGVvbl9yaW5n X2lzX2xvY2t1cChyZGV2LCByaW5nLCAmcmRldi0+cmluZ1tyaW5nXSkpIHsKKworCQkvKiBnb29k IG5ld3Mgd2UgYmVsaWV2ZSBpdCdzIGEgbG9ja3VwICovCisJCWRldl93YXJuKHJkZXYtPmRldiwg IkdQVSBsb2NrdXAgKGN1cnJlbnQgZmVuY2UgaWQgIgorCQkJICIweCUwMTZsbHggbGFzdCBmZW5j ZSBpZCAweCUwMTZsbHggb24gcmluZyAlZClcbiIsCisJCQkgKHVpbnQ2NF90KWF0b21pYzY0X3Jl YWQoJmZlbmNlX2Rydi0+bGFzdF9zZXEpLAorCQkJIGZlbmNlX2Rydi0+c3luY19zZXFbcmluZ10s IHJpbmcpOworCisJCS8qIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCBhbiByZXNldCAqLworCQlyZGV2 LT5uZWVkc19yZXNldCA9IHRydWU7CisJCXdha2VfdXBfYWxsKCZyZGV2LT5mZW5jZV9xdWV1ZSk7 CisJfQorCXVwX3JlYWQoJnJkZXYtPmV4Y2x1c2l2ZV9sb2NrKTsKK30KKworLyoqCisgKiByYWRl b25fZmVuY2VfcHJvY2VzcyAtIHByb2Nlc3MgYSBmZW5jZQorICoKKyAqIEByZGV2OiByYWRlb25f ZGV2aWNlIHBvaW50ZXIKKyAqIEByaW5nOiByaW5nIGluZGV4IHRoZSBmZW5jZSBpcyBhc3NvY2lh dGVkIHdpdGgKKyAqCisgKiBDaGVja3MgdGhlIGN1cnJlbnQgZmVuY2UgdmFsdWUgYW5kIHdha2Vz IHRoZSBmZW5jZSBxdWV1ZQorICogaWYgdGhlIHNlcXVlbmNlIG51bWJlciBoYXMgaW5jcmVhc2Vk IChhbGwgYXNpY3MpLgorICovCit2b2lkIHJhZGVvbl9mZW5jZV9wcm9jZXNzKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2LCBpbnQgcmluZykKK3sKKwlpZiAocmFkZW9uX2ZlbmNlX2FjdGl2aXR5 KHJkZXYsIHJpbmcpKQogCQl3YWtlX3VwX2FsbCgmcmRldi0+ZmVuY2VfcXVldWUpOwogfQogCkBA IC0zMDAsODYgKzM4MSw0MyBAQCBzdGF0aWMgYm9vbCByYWRlb25fZmVuY2VfYW55X3NlcV9zaWdu YWxlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgdTY0ICpzZXEpCiBzdGF0aWMgaW50IHJh ZGVvbl9mZW5jZV93YWl0X3NlcShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgdTY0ICp0YXJn ZXRfc2VxLAogCQkJCSBib29sIGludHIpCiB7Ci0JdWludDY0X3QgbGFzdF9zZXFbUkFERU9OX05V TV9SSU5HU107Ci0JYm9vbCBzaWduYWxlZDsKLQlpbnQgaSwgcjsKLQotCXdoaWxlICghcmFkZW9u X2ZlbmNlX2FueV9zZXFfc2lnbmFsZWQocmRldiwgdGFyZ2V0X3NlcSkpIHsKKwlsb25nIHI7CisJ aW50IGk7CiAKLQkJLyogU2F2ZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlcywgdXNlZCB0byBjaGVj ayBmb3IgR1BVIGxvY2t1cHMgKi8KLQkJZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7 ICsraSkgewotCQkJaWYgKCF0YXJnZXRfc2VxW2ldKQotCQkJCWNvbnRpbnVlOworCWlmIChyYWRl b25fZmVuY2VfYW55X3NlcV9zaWduYWxlZChyZGV2LCB0YXJnZXRfc2VxKSkKKwkJcmV0dXJuIDA7 CiAKLQkJCWxhc3Rfc2VxW2ldID0gYXRvbWljNjRfcmVhZCgmcmRldi0+ZmVuY2VfZHJ2W2ldLmxh c3Rfc2VxKTsKLQkJCXRyYWNlX3JhZGVvbl9mZW5jZV93YWl0X2JlZ2luKHJkZXYtPmRkZXYsIGks IHRhcmdldF9zZXFbaV0pOwotCQkJcmFkZW9uX2lycV9rbXNfc3dfaXJxX2dldChyZGV2LCBpKTsK LQkJfQorCS8qIGVuYWJsZSBJUlFzIGFuZCB0cmFjaW5nICovCisJZm9yIChpID0gMDsgaSA8IFJB REVPTl9OVU1fUklOR1M7ICsraSkgeworCQlpZiAoIXRhcmdldF9zZXFbaV0pCisJCQljb250aW51 ZTsKIAotCQlpZiAoaW50cikgewotCQkJciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1l b3V0KHJkZXYtPmZlbmNlX3F1ZXVlLCAoCi0JCQkJKHNpZ25hbGVkID0gcmFkZW9uX2ZlbmNlX2Fu eV9zZXFfc2lnbmFsZWQocmRldiwgdGFyZ2V0X3NlcSkpCi0JCQkJIHx8IHJkZXYtPm5lZWRzX3Jl c2V0KSwgUkFERU9OX0ZFTkNFX0pJRkZJRVNfVElNRU9VVCk7Ci0JCX0gZWxzZSB7Ci0JCQlyID0g d2FpdF9ldmVudF90aW1lb3V0KHJkZXYtPmZlbmNlX3F1ZXVlLCAoCi0JCQkJKHNpZ25hbGVkID0g cmFkZW9uX2ZlbmNlX2FueV9zZXFfc2lnbmFsZWQocmRldiwgdGFyZ2V0X3NlcSkpCi0JCQkJIHx8 IHJkZXYtPm5lZWRzX3Jlc2V0KSwgUkFERU9OX0ZFTkNFX0pJRkZJRVNfVElNRU9VVCk7Ci0JCX0K KwkJdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRfYmVnaW4ocmRldi0+ZGRldiwgaSwgdGFyZ2V0X3Nl cVtpXSk7CisJCXJhZGVvbl9pcnFfa21zX3N3X2lycV9nZXQocmRldiwgaSk7CisJfQogCi0JCWZv ciAoaSA9IDA7IGkgPCBSQURFT05fTlVNX1JJTkdTOyArK2kpIHsKLQkJCWlmICghdGFyZ2V0X3Nl cVtpXSkKLQkJCQljb250aW51ZTsKKwlpZiAoaW50cikgeworCQlyID0gd2FpdF9ldmVudF9pbnRl cnJ1cHRpYmxlX3RpbWVvdXQocmRldi0+ZmVuY2VfcXVldWUsICgKKwkJCXJhZGVvbl9mZW5jZV9h bnlfc2VxX3NpZ25hbGVkKHJkZXYsIHRhcmdldF9zZXEpCisJCQkgfHwgcmRldi0+bmVlZHNfcmVz ZXQpLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJfSBlbHNlIHsKKwkJciA9IHdhaXRfZXZlbnRf dGltZW91dChyZGV2LT5mZW5jZV9xdWV1ZSwgKAorCQkJcmFkZW9uX2ZlbmNlX2FueV9zZXFfc2ln bmFsZWQocmRldiwgdGFyZ2V0X3NlcSkKKwkJCSB8fCByZGV2LT5uZWVkc19yZXNldCksIE1BWF9T Q0hFRFVMRV9USU1FT1VUKTsKKwl9CiAKLQkJCXJhZGVvbl9pcnFfa21zX3N3X2lycV9wdXQocmRl diwgaSk7Ci0JCQl0cmFjZV9yYWRlb25fZmVuY2Vfd2FpdF9lbmQocmRldi0+ZGRldiwgaSwgdGFy Z2V0X3NlcVtpXSk7Ci0JCX0KKwlpZiAocmRldi0+bmVlZHNfcmVzZXQpCisJCXIgPSAtRURFQURM SzsKIAotCQlpZiAodW5saWtlbHkociA8IDApKQotCQkJcmV0dXJuIHI7CisJZm9yIChpID0gMDsg aSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgeworCQlpZiAoIXRhcmdldF9zZXFbaV0pCisJCQlj b250aW51ZTsKIAotCQlpZiAodW5saWtlbHkoIXNpZ25hbGVkKSkgewotCQkJaWYgKHJkZXYtPm5l ZWRzX3Jlc2V0KQotCQkJCXJldHVybiAtRURFQURMSzsKLQotCQkJLyogd2Ugd2VyZSBpbnRlcnJ1 cHRlZCBmb3Igc29tZSByZWFzb24gYW5kIGZlbmNlCi0JCQkgKiBpc24ndCBzaWduYWxlZCB5ZXQs IHJlc3VtZSB3YWl0aW5nICovCi0JCQlpZiAocikKLQkJCQljb250aW51ZTsKLQotCQkJZm9yIChp ID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCQkJCWlmICghdGFyZ2V0X3NlcVtp XSkKLQkJCQkJY29udGludWU7Ci0KLQkJCQlpZiAobGFzdF9zZXFbaV0gIT0gYXRvbWljNjRfcmVh ZCgmcmRldi0+ZmVuY2VfZHJ2W2ldLmxhc3Rfc2VxKSkKLQkJCQkJYnJlYWs7Ci0JCQl9Ci0KLQkJ CWlmIChpICE9IFJBREVPTl9OVU1fUklOR1MpCi0JCQkJY29udGludWU7Ci0KLQkJCWZvciAoaSA9 IDA7IGkgPCBSQURFT05fTlVNX1JJTkdTOyArK2kpIHsKLQkJCQlpZiAoIXRhcmdldF9zZXFbaV0p Ci0JCQkJCWNvbnRpbnVlOwotCi0JCQkJaWYgKHJhZGVvbl9yaW5nX2lzX2xvY2t1cChyZGV2LCBp LCAmcmRldi0+cmluZ1tpXSkpCi0JCQkJCWJyZWFrOwotCQkJfQotCi0JCQlpZiAoaSA8IFJBREVP Tl9OVU1fUklOR1MpIHsKLQkJCQkvKiBnb29kIG5ld3Mgd2UgYmVsaWV2ZSBpdCdzIGEgbG9ja3Vw ICovCi0JCQkJZGV2X3dhcm4ocmRldi0+ZGV2LCAiR1BVIGxvY2t1cCAod2FpdGluZyBmb3IgIgot CQkJCQkgIjB4JTAxNmxseCBsYXN0IGZlbmNlIGlkIDB4JTAxNmxseCBvbiIKLQkJCQkJICIgcmlu ZyAlZClcbiIsCi0JCQkJCSB0YXJnZXRfc2VxW2ldLCBsYXN0X3NlcVtpXSwgaSk7Ci0KLQkJCQkv KiByZW1lbWJlciB0aGF0IHdlIG5lZWQgYW4gcmVzZXQgKi8KLQkJCQlyZGV2LT5uZWVkc19yZXNl dCA9IHRydWU7Ci0JCQkJd2FrZV91cF9hbGwoJnJkZXYtPmZlbmNlX3F1ZXVlKTsKLQkJCQlyZXR1 cm4gLUVERUFETEs7Ci0JCQl9Ci0JCX0KKwkJcmFkZW9uX2lycV9rbXNfc3dfaXJxX3B1dChyZGV2 LCBpKTsKKwkJdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRfZW5kKHJkZXYtPmRkZXYsIGksIHRhcmdl dF9zZXFbaV0pOwogCX0KLQlyZXR1cm4gMDsKKworCXJldHVybiByIDwgMCA/IHIgOiAwOwogfQog CiAvKioKQEAgLTcxMSw2ICs3NDksOSBAQCBzdGF0aWMgdm9pZCByYWRlb25fZmVuY2VfZHJpdmVy X2luaXRfcmluZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiAJCXJkZXYt PmZlbmNlX2RydltyaW5nXS5zeW5jX3NlcVtpXSA9IDA7CiAJYXRvbWljNjRfc2V0KCZyZGV2LT5m ZW5jZV9kcnZbcmluZ10ubGFzdF9zZXEsIDApOwogCXJkZXYtPmZlbmNlX2RydltyaW5nXS5pbml0 aWFsaXplZCA9IGZhbHNlOworCUlOSVRfREVMQVlFRF9XT1JLKCZyZGV2LT5mZW5jZV9kcnZbcmlu Z10ubG9ja3VwX3dvcmssCisJCQkgIHJhZGVvbl9mZW5jZV9jaGVja19sb2NrdXApOworCXJkZXYt PmZlbmNlX2RydltyaW5nXS5yZGV2ID0gcmRldjsKIH0KIAogLyoqCkBAIC03NjAsNiArODAxLDcg QEAgdm9pZCByYWRlb25fZmVuY2VfZHJpdmVyX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJk ZXYpCiAJCQkvKiBubyBuZWVkIHRvIHRyaWdnZXIgR1BVIHJlc2V0IGFzIHdlIGFyZSB1bmxvYWRp bmcgKi8KIAkJCXJhZGVvbl9mZW5jZV9kcml2ZXJfZm9yY2VfY29tcGxldGlvbihyZGV2LCByaW5n KTsKIAkJfQorCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnJkZXYtPmZlbmNlX2RydltyaW5n XS5sb2NrdXBfd29yayk7CiAJCXdha2VfdXBfYWxsKCZyZGV2LT5mZW5jZV9xdWV1ZSk7CiAJCXJh ZGVvbl9zY3JhdGNoX2ZyZWUocmRldiwgcmRldi0+ZmVuY2VfZHJ2W3JpbmddLnNjcmF0Y2hfcmVn KTsKIAkJcmRldi0+ZmVuY2VfZHJ2W3JpbmddLmluaXRpYWxpemVkID0gZmFsc2U7CkBAIC03Nzgs OCArODIwLDEwIEBAIHZvaWQgcmFkZW9uX2ZlbmNlX2RyaXZlcl9maW5pKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2KQogICovCiB2b2lkIHJhZGVvbl9mZW5jZV9kcml2ZXJfZm9yY2VfY29tcGxl dGlvbihzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiB7Ci0JaWYgKHJkZXYt PmZlbmNlX2RydltyaW5nXS5pbml0aWFsaXplZCkKKwlpZiAocmRldi0+ZmVuY2VfZHJ2W3Jpbmdd LmluaXRpYWxpemVkKSB7CiAJCXJhZGVvbl9mZW5jZV93cml0ZShyZGV2LCByZGV2LT5mZW5jZV9k cnZbcmluZ10uc3luY19zZXFbcmluZ10sIHJpbmcpOworCQljYW5jZWxfZGVsYXllZF93b3JrX3N5 bmMoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5sb2NrdXBfd29yayk7CisJfQogfQogCiAKLS0gCjEu OS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=