From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Jakobi Subject: [RFC v3] drm/exynos: g2d: fix runtime PM Date: Sat, 24 Sep 2016 20:58:06 +0200 Message-ID: <1474743486-3881-1-git-send-email-tjakobi@math.uni-bielefeld.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.math.uni-bielefeld.de (smtp.math.uni-bielefeld.de [129.70.45.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3CF86E105 for ; Sat, 24 Sep 2016 18:58:16 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-samsung-soc@vger.kernel.org Cc: Tobias Jakobi , dri-devel@lists.freedesktop.org, m.szyprowski@samsung.com List-Id: dri-devel@lists.freedesktop.org VGhlIGNvbW1pdCBiMDU5ODRlMjFhN2UwMDBiZjUwNzRhY2UwMGQ3YTU3NDk0NGIyYzE2IGJyb2tl Cm9wZXJhdGlvbiBvZiB0aGUgRzJELiBBZnRlciB0aGlzIGNvbW1pdCB0aGUgZm9sbG93aW5nCmhh cHBlbnMuCi0gZXh5bm9zX2cyZF9leGVjX2lvY3RsKCkgcHJlcGFyZXMgYSBydW5xdWV1ZSBub2Rl IGFuZAogIGNhbGxzIGcyZF9leGVjX3J1bnF1ZXVlKCkKLSBnMmRfZXhlY19ydW5xdWV1ZSgpIGNh bGxzIGcyZF9kbWFfc3RhcnQoKSB3aGljaCBnZXRzCiAgcnVudGltZSBQTSBzeW5jCi0gcnVudGlt ZSBQTSBjYWxscyBnMmRfcnVudGltZV9yZXN1bWUoKQotIGcyZF9ydW50aW1lX3Jlc3VtZSgpIGNh bGxzIGcyZF9leGVjX3J1bnF1ZXVlKCkKCkx1Y2tpbHkgZm9yIHVzIHRoaXMgZG9lc24ndCByZWFs bHkgbG9vcCwgYnV0IGNyZWF0ZXMgYQptdXRleCBsb2NrdXAsIHdoaWNoIHRoZSBrZXJuZWwgZXZl biBwcmVkaWN0cy4KCkFueXdheSwgd2UgZml4IHRoaXMgYnkgcmVpbnRyb2R1Y2luZyBkZWRpY2F0 ZWQgc2xlZXAKb3BlcmF0aW9ucyBhZ2FpbiwgYW5kIG9ubHkgbGV0dGluZyBydW50aW1lIFBNIGNv bnRyb2wKdGhlIGdhdGUgY2xvY2suCgpUaGlzIGlzIG5vdCBlbm91Z2ggdG8gZml4IHRoZSBpc3N1 ZSB0aG91Z2guCi0gV2Ugc3dpdGNoIHJ1bnRpbWUgUE0gdG8gYXV0b3N1c3BlbmQuIEN1cnJlbnRs eSBjbG9ja3MgZ2V0CiAgZGlzYWJsZWQsIGFuZCB0aGVuIHJlLWVuYWJsZWQgYWdhaW4gaW4gdGhl IHJ1bnF1ZXVlIHdvcmtlcgogIHdoZW4gYSBub2RlIGlzIGNvbXBsZXRlZCBhbmQgdGhlIG5leHQg aXMgc3RhcnRlZC4KICBXaXRoIHRoZSB1cGNvbWluZyBpbnRyb2R1Y3Rpb24gb2YgSU9NTVUgcnVu dGltZSBQTSB0aGlzCiAgc2l0dWF0aW9ucyBnZXRzIHdvcnNlLCBzaW5jZSBub3cgYWxzbyB0aGUg SU9NTVUgZ29lcwogIHRocm91Z2ggYSBkaXNhYmxlL2VuYWJsZSBjeWNsZSBiZWZvcmUgdGhlIG5l eHQgbm9kZSBpcwogIHN0YXJ0ZWQuCi0gV2UgY29uc29saWRhdGUgYWxsIHJ1bnRpbWUgUE0gbWFu YWdlbWVudCB0byB0aGUgcnVucXVldWUKICB3b3JrZXIuCi0gV2UgaW50cm9kdWNlIGcyZF93YWl0 X2ZpbmlzaCgpIHdoaWNoIHdhaXRzIHVudGlsIHRoZSBjdXJyZW50bHkKICBwcm9jZXNzZWQgcnVu cXVldWUgbm9kZSBpcyBmaW5pc2hlZC4KICBJZiB0aGlzIHRha2VzIHRvbyBsb25nLCB0aGUgZW5n aW5lIGlzIGZvcmNpYmx5IHJlc2V0LiBUaGlzCiAgaXMgbmVjZXNzYXJ5IHRvIHByb3Blcmx5IGNs b3NlIHRoZSBkcml2ZXIgaW4gY2FzZSB0aGUgZW5naW5lCiAgc2hvdWxkIGhhbmcgd2l0aCByZWFk L3dyaXRlIGFjY2VzcyB0byBzb21lIGFyZWEgb2YgbWVtb3J5LgogIEluIHRoaXMgc2l0dWF0aW9u IHdlIGNhbid0IHByb3Blcmx5IHVubWFwIEdFTS91c2VycHRyCiAgb2JqZWN0cywgc2luY2UgdGhp cyBtaWdodCBjcmVhdGUgYSBwYWdlZmF1bHQuCi0gU2xlZXAgc3VzcGVuZCBpc3N1ZXMgYSBzdXNw ZW5kIG9mIHRoZSBydW5xdWV1ZSBhbmQgdGhlbiBjYWxscwogIGcyZF93YWl0X2ZpbmlzaCgpLCB3 aGljaCByZXR1cm5zIHRoZSBlbmdpbmUgaW4gdGhlIGlkbGUgc3RhdGUuCiAgVGhlIGN1cnJlbnQg cnVucXVldWUgbm9kZSBnZXRzIGNvbXBsZXRlZCwgYWxsIG90aGVyIHF1ZXVlZAogIG5vZGVzIHN0 YXkgaW4gdGhlIHF1ZXVlLiBUaGVyZSBpcyBubyBoYXJkd2FyZSBzdGF0ZSB0aGF0CiAgbmVlZHMg dG8gYmUgcmV0YWluZWQuCi0gU2xlZXAgcmVzdW1lIGp1c3QgcG9rZXMgdGhlIHJ1bnF1ZXVlIHdv cmtlciwgd2hpY2gsIHNob3VsZAogIHNvbWV0aGluZyBiZSBpbiBxdWV1ZSwgY29udGludWVzIGl0 cyB3b3JrLCBvciBqdXN0IGV4aXRzLgoKQ2hhbmdlcyBpbiB2MjoKLSBkaXNhYmxlIGF1dG9zdXNw ZW5kIG1vZGUgYWdhaW4gaW4gZzJkX3JlbW92ZSgpCi0gb25seSBnZXQgc3luYyBpbiBnMmRfcnVu cXVldWVfd29ya2VyKCkgaWYgdGhlcmUgaXMgbm9kZQogIGluIHRoZSBxdWV1ZSBsZWZ0CgpDaGFu Z2VzIGluIHYzOgotIGFjdHVhbGx5IGRlbGV0ZSBub2RlIGluIGcyZF9yZW1vdmVfcnVucXVldWVf bm9kZXMoKQoKU2lnbmVkLW9mZi1ieTogVG9iaWFzIEpha29iaSA8dGpha29iaUBtYXRoLnVuaS1i aWVsZWZlbGQuZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2cyZC5j IHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTg5IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nMmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3Mv ZXh5bm9zX2RybV9nMmQuYwppbmRleCA2ZWNhOGJiLi5lZjU0NmVjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZzJkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX2cyZC5jCkBAIC0xMzgsNiArMTM4LDE4IEBAIGVudW0gZzJkX3Jl Z190eXBlIHsKIAlNQVhfUkVHX1RZUEVfTlIKIH07CiAKK2VudW0gZzJkX2ZsYWdfYml0cyB7CisJ LyoKKwkgKiBJZiBzZXQsIHN1c3BlbmRzIHRoZSBydW5xdWV1ZSB3b3JrZXIgYWZ0ZXIgdGhlIGN1 cnJlbnRseQorCSAqIHByb2Nlc3NlZCBub2RlIGlzIGZpbmlzaGVkLgorCSAqLworCUcyRF9CSVRf U1VTUEVORF9SVU5RVUVVRSwKKwkvKgorCSAqIElmIHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIGVu Z2luZSBpcyBjdXJyZW50bHkgYnVzeS4KKwkgKi8KKwlHMkRfQklUX0VOR0lORV9CVVNZLAorfTsK KwogLyogY21kbGlzdCBkYXRhIHN0cnVjdHVyZSAqLwogc3RydWN0IGcyZF9jbWRsaXN0IHsKIAl1 MzIJCWhlYWQ7CkBAIC0yMjYsNyArMjM4LDcgQEAgc3RydWN0IGcyZF9kYXRhIHsKIAlzdHJ1Y3Qg d29ya3F1ZXVlX3N0cnVjdAkJKmcyZF93b3JrcTsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCXJ1bnF1 ZXVlX3dvcms7CiAJc3RydWN0IGV4eW5vc19kcm1fc3ViZHJ2CXN1YmRydjsKLQlib29sCQkJCXN1 c3BlbmRlZDsKKwl1bnNpZ25lZCBsb25nCQkJZmxhZ3M7CiAKIAkvKiBjbWRsaXN0ICovCiAJc3Ry dWN0IGcyZF9jbWRsaXN0X25vZGUJCSpjbWRsaXN0X25vZGU7CkBAIC0yNDYsNiArMjU4LDEyIEBA IHN0cnVjdCBnMmRfZGF0YSB7CiAJdW5zaWduZWQgbG9uZwkJCW1heF9wb29sOwogfTsKIAorc3Rh dGljIGlubGluZSB2b2lkIGcyZF9od19yZXNldChzdHJ1Y3QgZzJkX2RhdGEgKmcyZCkKK3sKKwl3 cml0ZWwoRzJEX1IgfCBHMkRfU0ZSQ0xFQVIsIGcyZC0+cmVncyArIEcyRF9TT0ZUX1JFU0VUKTsK KwljbGVhcl9iaXQoRzJEX0JJVF9FTkdJTkVfQlVTWSwgJmcyZC0+ZmxhZ3MpOworfQorCiBzdGF0 aWMgaW50IGcyZF9pbml0X2NtZGxpc3Qoc3RydWN0IGcyZF9kYXRhICpnMmQpCiB7CiAJc3RydWN0 IGRldmljZSAqZGV2ID0gZzJkLT5kZXY7CkBAIC04MDMsMTIgKzgyMSw4IEBAIHN0YXRpYyB2b2lk IGcyZF9kbWFfc3RhcnQoc3RydWN0IGcyZF9kYXRhICpnMmQsCiAJc3RydWN0IGcyZF9jbWRsaXN0 X25vZGUgKm5vZGUgPQogCQkJCWxpc3RfZmlyc3RfZW50cnkoJnJ1bnF1ZXVlX25vZGUtPnJ1bl9j bWRsaXN0LAogCQkJCQkJc3RydWN0IGcyZF9jbWRsaXN0X25vZGUsIGxpc3QpOwotCWludCByZXQ7 Ci0KLQlyZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKGcyZC0+ZGV2KTsKLQlpZiAocmV0IDwgMCkK LQkJcmV0dXJuOwogCisJc2V0X2JpdChHMkRfQklUX0VOR0lORV9CVVNZLCAmZzJkLT5mbGFncyk7 CiAJd3JpdGVsX3JlbGF4ZWQobm9kZS0+ZG1hX2FkZHIsIGcyZC0+cmVncyArIEcyRF9ETUFfU0ZS X0JBU0VfQUREUik7CiAJd3JpdGVsX3JlbGF4ZWQoRzJEX0RNQV9TVEFSVCwgZzJkLT5yZWdzICsg RzJEX0RNQV9DT01NQU5EKTsKIH0KQEAgLTgzMSw5ICs4NDUsNiBAQCBzdGF0aWMgdm9pZCBnMmRf ZnJlZV9ydW5xdWV1ZV9ub2RlKHN0cnVjdCBnMmRfZGF0YSAqZzJkLAogewogCXN0cnVjdCBnMmRf Y21kbGlzdF9ub2RlICpub2RlOwogCi0JaWYgKCFydW5xdWV1ZV9ub2RlKQotCQlyZXR1cm47Ci0K IAltdXRleF9sb2NrKCZnMmQtPmNtZGxpc3RfbXV0ZXgpOwogCS8qCiAJICogY29tbWFuZHMgaW4g cnVuX2NtZGxpc3QgaGF2ZSBiZWVuIGNvbXBsZXRlZCBzbyB1bm1hcCBhbGwgZ2VtCkBAIC04NDcs MjkgKzg1OCw2NSBAQCBzdGF0aWMgdm9pZCBnMmRfZnJlZV9ydW5xdWV1ZV9ub2RlKHN0cnVjdCBn MmRfZGF0YSAqZzJkLAogCWttZW1fY2FjaGVfZnJlZShnMmQtPnJ1bnF1ZXVlX3NsYWIsIHJ1bnF1 ZXVlX25vZGUpOwogfQogCi1zdGF0aWMgdm9pZCBnMmRfZXhlY19ydW5xdWV1ZShzdHJ1Y3QgZzJk X2RhdGEgKmcyZCkKKy8qKgorICogZzJkX3JlbW92ZV9ydW5xdWV1ZV9ub2RlcyAtIHJlbW92ZSBp dGVtcyBmcm9tIHRoZSBsaXN0IG9mIHJ1bnF1ZXVlIG5vZGVzCisgKiBAZzJkOiBHMkQgc3RhdGUg b2JqZWN0CisgKiBAZmlsZTogaWYgbm90IHplcm8sIG9ubHkgcmVtb3ZlIGl0ZW1zIHdpdGggdGhp cyBEUk0gZmlsZQorICoKKyAqIEhhcyB0byBiZSBjYWxsZWQgdW5kZXIgcnVucXVldWUgbG9jay4K KyAqLworc3RhdGljIHZvaWQgZzJkX3JlbW92ZV9ydW5xdWV1ZV9ub2RlcyhzdHJ1Y3QgZzJkX2Rh dGEgKmcyZCwgc3RydWN0IGRybV9maWxlKiBmaWxlKQogewotCWcyZC0+cnVucXVldWVfbm9kZSA9 IGcyZF9nZXRfcnVucXVldWVfbm9kZShnMmQpOwotCWlmIChnMmQtPnJ1bnF1ZXVlX25vZGUpCi0J CWcyZF9kbWFfc3RhcnQoZzJkLCBnMmQtPnJ1bnF1ZXVlX25vZGUpOworCXN0cnVjdCBnMmRfcnVu cXVldWVfbm9kZSAqbm9kZSwgKm47CisKKwlpZiAobGlzdF9lbXB0eSgmZzJkLT5ydW5xdWV1ZSkp CisJCXJldHVybjsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBuLCAmZzJkLT5y dW5xdWV1ZSwgbGlzdCkgeworCQlpZiAoZmlsZSAmJiBub2RlLT5maWxwICE9IGZpbGUpCisJCQlj b250aW51ZTsKKworCQlsaXN0X2RlbF9pbml0KCZub2RlLT5saXN0KTsKKwkJZzJkX2ZyZWVfcnVu cXVldWVfbm9kZShnMmQsIG5vZGUpOworCX0KIH0KIAogc3RhdGljIHZvaWQgZzJkX3J1bnF1ZXVl X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IGcyZF9kYXRhICpn MmQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGcyZF9kYXRhLAogCQkJCQkgICAgcnVucXVl dWVfd29yayk7CisJc3RydWN0IGcyZF9ydW5xdWV1ZV9ub2RlICpydW5xdWV1ZV9ub2RlOworCisJ LyoKKwkgKiBUaGUgZW5naW5lIGlzIGJ1c3kgYW5kIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBjdXJy ZW50IG5vZGUgaXMgZ29pbmcKKwkgKiB0byBwb2tlIHRoZSBydW5xdWV1ZSB3b3JrZXIsIHNvIG5v dGhpbmcgdG8gZG8gaGVyZS4KKwkgKi8KKwlpZiAodGVzdF9iaXQoRzJEX0JJVF9FTkdJTkVfQlVT WSwgJmcyZC0+ZmxhZ3MpKQorCQlyZXR1cm47CiAKIAltdXRleF9sb2NrKCZnMmQtPnJ1bnF1ZXVl X211dGV4KTsKLQlwbV9ydW50aW1lX3B1dF9zeW5jKGcyZC0+ZGV2KTsKIAotCWNvbXBsZXRlKCZn MmQtPnJ1bnF1ZXVlX25vZGUtPmNvbXBsZXRlKTsKLQlpZiAoZzJkLT5ydW5xdWV1ZV9ub2RlLT5h c3luYykKLQkJZzJkX2ZyZWVfcnVucXVldWVfbm9kZShnMmQsIGcyZC0+cnVucXVldWVfbm9kZSk7 CisJcnVucXVldWVfbm9kZSA9IGcyZC0+cnVucXVldWVfbm9kZTsKKwlnMmQtPnJ1bnF1ZXVlX25v ZGUgPSBOVUxMOworCisJaWYgKHJ1bnF1ZXVlX25vZGUpIHsKKwkJcG1fcnVudGltZV9tYXJrX2xh c3RfYnVzeShnMmQtPmRldik7CisJCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGcyZC0+ZGV2 KTsKKworCQljb21wbGV0ZSgmcnVucXVldWVfbm9kZS0+Y29tcGxldGUpOworCQlpZiAocnVucXVl dWVfbm9kZS0+YXN5bmMpCisJCQlnMmRfZnJlZV9ydW5xdWV1ZV9ub2RlKGcyZCwgcnVucXVldWVf bm9kZSk7CisJfQorCisJaWYgKCF0ZXN0X2JpdChHMkRfQklUX1NVU1BFTkRfUlVOUVVFVUUsICZn MmQtPmZsYWdzKSkgeworCQlnMmQtPnJ1bnF1ZXVlX25vZGUgPSBnMmRfZ2V0X3J1bnF1ZXVlX25v ZGUoZzJkKTsKKworCQlpZiAoZzJkLT5ydW5xdWV1ZV9ub2RlKSB7CisJCQlwbV9ydW50aW1lX2dl dF9zeW5jKGcyZC0+ZGV2KTsKKwkJCWcyZF9kbWFfc3RhcnQoZzJkLCBnMmQtPnJ1bnF1ZXVlX25v ZGUpOworCQl9CisJfQogCi0JaWYgKGcyZC0+c3VzcGVuZGVkKQotCQlnMmQtPnJ1bnF1ZXVlX25v ZGUgPSBOVUxMOwotCWVsc2UKLQkJZzJkX2V4ZWNfcnVucXVldWUoZzJkKTsKIAltdXRleF91bmxv Y2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOwogfQogCkBAIC05MTgsMTIgKzk2NSw3MiBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgZzJkX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAkJ fQogCX0KIAotCWlmIChwZW5kaW5nICYgRzJEX0lOVFBfQUNNRF9GSU4pCisJaWYgKHBlbmRpbmcg JiBHMkRfSU5UUF9BQ01EX0ZJTikgeworCQljbGVhcl9iaXQoRzJEX0JJVF9FTkdJTkVfQlVTWSwg JmcyZC0+ZmxhZ3MpOwogCQlxdWV1ZV93b3JrKGcyZC0+ZzJkX3dvcmtxLCAmZzJkLT5ydW5xdWV1 ZV93b3JrKTsKKwl9CiAKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKKy8qKgorICogZzJkX3dh aXRfZmluaXNoIC0gd2FpdCBmb3IgdGhlIEcyRCBlbmdpbmUgdG8gZmluaXNoIHRoZSBjdXJyZW50 IHJ1bnF1ZXVlIG5vZGUKKyAqIEBnMmQ6IEcyRCBzdGF0ZSBvYmplY3QKKyAqIEBmaWxlOiBpZiBu b3QgemVybywgb25seSB3YWl0IGlmIHRoZSBjdXJyZW50IHJ1bnF1ZXVlIG5vZGUgYmVsb25ncwor ICogICAgICAgIHRvIHRoZSBEUk0gZmlsZQorICoKKyAqIFNob3VsZCB0aGUgZW5naW5lIG5vdCBi ZWNvbWUgaWRsZSBhZnRlciBhIDEwMG1zIHRpbWVvdXQsIGEgaGFyZHdhcmUKKyAqIHJlc2V0IGlz IGlzc3VlZC4KKyAqLworc3RhdGljIHZvaWQgZzJkX3dhaXRfZmluaXNoKHN0cnVjdCBnMmRfZGF0 YSAqZzJkLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0g ZzJkLT5kZXY7CisKKwlzdHJ1Y3QgZzJkX3J1bnF1ZXVlX25vZGUgKnJ1bnF1ZXVlX25vZGUgPSBO VUxMOworCXVuc2lnbmVkIGludCB0cmllcyA9IDEwOworCisJbXV0ZXhfbG9jaygmZzJkLT5ydW5x dWV1ZV9tdXRleCk7CisKKwkvKiBJZiBubyBub2RlIGlzIGN1cnJlbnRseSBwcm9jZXNzZWQsIHdl IGhhdmUgbm90aGluZyB0byBkby4gKi8KKwlpZiAoIWcyZC0+cnVucXVldWVfbm9kZSkKKwkJZ290 byBvdXQ7CisKKwlydW5xdWV1ZV9ub2RlID0gZzJkLT5ydW5xdWV1ZV9ub2RlOworCisJLyogQ2hl Y2sgaWYgdGhlIGN1cnJlbnRseSBwcm9jZXNzZWQgaXRlbSBiZWxvbmdzIHRvIHVzLiAqLworCWlm IChmaWxlICYmIHJ1bnF1ZXVlX25vZGUtPmZpbHAgIT0gZmlsZSkKKwkJZ290byBvdXQ7CisKKwlt dXRleF91bmxvY2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOworCisJLyogV2FpdCBmb3IgdGhlIEcy RCBlbmdpbmUgdG8gZmluaXNoLiAqLworCXdoaWxlICh0cmllcy0tICYmIChnMmQtPnJ1bnF1ZXVl X25vZGUgPT0gcnVucXVldWVfbm9kZSkpCisJCW1kZWxheSgxMCk7CisKKwltdXRleF9sb2NrKCZn MmQtPnJ1bnF1ZXVlX211dGV4KTsKKworCWlmIChnMmQtPnJ1bnF1ZXVlX25vZGUgIT0gcnVucXVl dWVfbm9kZSkKKwkJZ290byBvdXQ7CisKKwlkZXZfZXJyKGRldiwgIndhaXQgdGltZWQgb3V0LCBy ZXNldHRpbmcgZW5naW5lLi4uXG4iKTsKKwlnMmRfaHdfcmVzZXQoZzJkKTsKKworCS8qCisJICog QWZ0ZXIgdGhlIGhhcmR3YXJlIHJlc2V0IG9mIHRoZSBlbmdpbmUgd2UgYXJlIGdvaW5nIHRvIGxv b3NlCisJICogdGhlIElSUSB3aGljaCB0cmlnZ2VycyB0aGUgUE0gcnVudGltZSBwdXQoKS4KKwkg KiBTbyBkbyB0aGlzIG1hbnVhbGx5IGhlcmUuCisJICovCisJcG1fcnVudGltZV9tYXJrX2xhc3Rf YnVzeShkZXYpOworCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7CisKKwljb21wbGV0 ZSgmcnVucXVldWVfbm9kZS0+Y29tcGxldGUpOworCWlmIChydW5xdWV1ZV9ub2RlLT5hc3luYykK KwkJZzJkX2ZyZWVfcnVucXVldWVfbm9kZShnMmQsIHJ1bnF1ZXVlX25vZGUpOworCitvdXQ6CisJ bXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1ZXVlX211dGV4KTsKK30KKwogc3RhdGljIGludCBnMmRf Y2hlY2tfcmVnX29mZnNldChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkJc3RydWN0IGcyZF9jbWRs aXN0X25vZGUgKm5vZGUsCiAJCQkJaW50IG5yLCBib29sIGZvcl9hZGRyKQpAQCAtMTI1OSwxMCAr MTM2NiwxMSBAQCBpbnQgZXh5bm9zX2cyZF9leGVjX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2LCB2b2lkICpkYXRhLAogCXJ1bnF1ZXVlX25vZGUtPnBpZCA9IGN1cnJlbnQtPnBpZDsK IAlydW5xdWV1ZV9ub2RlLT5maWxwID0gZmlsZTsKIAlsaXN0X2FkZF90YWlsKCZydW5xdWV1ZV9u b2RlLT5saXN0LCAmZzJkLT5ydW5xdWV1ZSk7Ci0JaWYgKCFnMmQtPnJ1bnF1ZXVlX25vZGUpCi0J CWcyZF9leGVjX3J1bnF1ZXVlKGcyZCk7CiAJbXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1ZXVlX211 dGV4KTsKIAorCS8qIExldCB0aGUgcnVucXVldWUga25vdyB0aGF0IHRoZXJlIGlzIHdvcmsgdG8g ZG8uICovCisJcXVldWVfd29yayhnMmQtPmcyZF93b3JrcSwgJmcyZC0+cnVucXVldWVfd29yayk7 CisKIAlpZiAocnVucXVldWVfbm9kZS0+YXN5bmMpCiAJCWdvdG8gb3V0OwogCkBAIC0xMzM5LDE1 ICsxNDQ3LDI3IEBAIHN0YXRpYyB2b2lkIGcyZF9jbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2Rldiwgc3RydWN0IGRldmljZSAqZGV2LAogCWlmICghZzJkKQogCQlyZXR1cm47CiAKKwkvKiBS ZW1vdmUgdGhlIHJ1bnF1ZXVlIG5vZGVzIHRoYXQgYmVsb25nIHRvIHVzLiAqLworCW11dGV4X2xv Y2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOworCWcyZF9yZW1vdmVfcnVucXVldWVfbm9kZXMoZzJk LCBmaWxlKTsKKwltdXRleF91bmxvY2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOworCisJLyoKKwkg KiBXYWl0IGZvciB0aGUgcnVucXVldWUgd29ya2VyIHRvIGZpbmlzaCBpdHMgY3VycmVudCBub2Rl LgorCSAqIEFmdGVyIHRoaXMgdGhlIGVuZ2luZSBzaG91bGQgbm8gbG9uZ2VyIGJlIGFjY2Vzc2lu ZyBhbnkKKwkgKiBtZW1vcnkgYmVsb25naW5nIHRvIHVzLgorCSAqLworCWcyZF93YWl0X2Zpbmlz aChnMmQsIGZpbGUpOworCisJLyoKKwkgKiBFdmVuIGFmdGVyIHRoZSBlbmdpbmUgaXMgaWRsZSwg dGhlcmUgbWlnaHQgc3RpbGwgYmUgc3RhbGUgY21kbGlzdHMKKwkgKiAoaS5lLiBjbWRsaXNzdCB3 aGljaCB3ZSBzdWJtaXR0ZWQgYnV0IG5ldmVyIGV4ZWN1dGVkKSBhcm91bmQsIHdpdGgKKwkgKiB0 aGVpciBjb3JyZXNwb25kaW5nIEdFTS91c2VycHRyIGJ1ZmZlcnMuCisJICogUHJvcGVybHkgdW5t YXAgdGhlc2UgYnVmZmVycyBoZXJlLgorCSAqLwogCW11dGV4X2xvY2soJmcyZC0+Y21kbGlzdF9t dXRleCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5vZGUsIG4sICZnMmRfcHJpdi0+aW51 c2VfY21kbGlzdCwgbGlzdCkgewotCQkvKgotCQkgKiB1bm1hcCBhbGwgZ2VtIG9iamVjdHMgbm90 IGNvbXBsZXRlZC4KLQkJICoKLQkJICogUC5TLiBpZiBjdXJyZW50IHByb2Nlc3Mgd2FzIHRlcm1p bmF0ZWQgZm9yY2VseSB0aGVuCi0JCSAqIHRoZXJlIG1heSBiZSBzb21lIGNvbW1hbmRzIGluIGlu dXNlX2NtZGxpc3Qgc28gdW5tYXAKLQkJICogdGhlbS4KLQkJICovCisKIAkJZzJkX3VubWFwX2Nt ZGxpc3RfZ2VtKGcyZCwgbm9kZSwgZmlsZSk7CiAJCWxpc3RfbW92ZV90YWlsKCZub2RlLT5saXN0 LCAmZzJkLT5mcmVlX2NtZGxpc3QpOwogCX0KQEAgLTEzOTksNyArMTUxOSwxMSBAQCBzdGF0aWMg aW50IGcyZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIGVycl9k ZXN0cm95X3dvcmtxdWV1ZTsKIAl9CiAKKwlwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYp OworCXBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KGRldiwgMjAwMCk7CiAJcG1fcnVu dGltZV9lbmFibGUoZGV2KTsKKwljbGVhcl9iaXQoRzJEX0JJVF9TVVNQRU5EX1JVTlFVRVVFLCAm ZzJkLT5mbGFncyk7CisJY2xlYXJfYml0KEcyRF9CSVRfRU5HSU5FX0JVU1ksICZnMmQtPmZsYWdz KTsKIAogCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwg MCk7CiAKQEAgLTE0NTgsMTQgKzE1ODIsMTcgQEAgc3RhdGljIGludCBnMmRfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGcyZF9kYXRhICpnMmQgPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAorCS8qIFN1c3BlbmQgb3BlcmF0aW9uIGFuZCB3YWl0 IGZvciBlbmdpbmUgaWRsZS4gKi8KKwlzZXRfYml0KEcyRF9CSVRfU1VTUEVORF9SVU5RVUVVRSwg JmcyZC0+ZmxhZ3MpOworCWcyZF93YWl0X2ZpbmlzaChnMmQsIE5VTEwpOworCiAJY2FuY2VsX3dv cmtfc3luYygmZzJkLT5ydW5xdWV1ZV93b3JrKTsKIAlleHlub3NfZHJtX3N1YmRydl91bnJlZ2lz dGVyKCZnMmQtPnN1YmRydik7CiAKLQl3aGlsZSAoZzJkLT5ydW5xdWV1ZV9ub2RlKSB7Ci0JCWcy ZF9mcmVlX3J1bnF1ZXVlX25vZGUoZzJkLCBnMmQtPnJ1bnF1ZXVlX25vZGUpOwotCQlnMmQtPnJ1 bnF1ZXVlX25vZGUgPSBnMmRfZ2V0X3J1bnF1ZXVlX25vZGUoZzJkKTsKLQl9CisJLyogVGhlcmUg c2hvdWxkIGJlIG5vIGxvY2tpbmcgbmVlZGVkIGhlcmUuICovCisJZzJkX3JlbW92ZV9ydW5xdWV1 ZV9ub2RlcyhnMmQsIE5VTEwpOwogCisJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZCgm cGRldi0+ZGV2KTsKIAlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7CiAKIAlnMmRfZmlu aV9jbWRsaXN0KGcyZCk7CkBAIC0xNDc1LDIwICsxNjAyLDM3IEBAIHN0YXRpYyBpbnQgZzJkX3Jl bW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiAwOwogfQogCi0jaWZk ZWYgQ09ORklHX1BNCi1zdGF0aWMgaW50IGcyZF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmlj ZSAqZGV2KQorI2lmZGVmIENPTkZJR19QTV9TTEVFUAorc3RhdGljIGludCBnMmRfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGcyZF9kYXRhICpnMmQgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKIAotCW11dGV4X2xvY2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOwotCWcyZC0+ c3VzcGVuZGVkID0gdHJ1ZTsKLQltdXRleF91bmxvY2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOwor CS8qCisJICogU3VzcGVuZCB0aGUgcnVucXVldWUgd29ya2VyIG9wZXJhdGlvbiBhbmQgd2FpdCB1 bnRpbCB0aGUgRzJECisJICogZW5naW5lIGlzIGlkbGUuCisJICovCisJc2V0X2JpdChHMkRfQklU X1NVU1BFTkRfUlVOUVVFVUUsICZnMmQtPmZsYWdzKTsKKwlnMmRfd2FpdF9maW5pc2goZzJkLCBO VUxMKTsKKwlmbHVzaF93b3JrKCZnMmQtPnJ1bnF1ZXVlX3dvcmspOwogCi0Jd2hpbGUgKGcyZC0+ cnVucXVldWVfbm9kZSkKLQkJLyogRklYTUU6IGdvb2QgcmFuZ2U/ICovCi0JCXVzbGVlcF9yYW5n ZSg1MDAsIDEwMDApOworCXJldHVybiAwOworfQogCi0JZmx1c2hfd29yaygmZzJkLT5ydW5xdWV1 ZV93b3JrKTsKK3N0YXRpYyBpbnQgZzJkX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGcyZF9kYXRhICpnMmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCWNsZWFyX2Jp dChHMkRfQklUX1NVU1BFTkRfUlVOUVVFVUUsICZnMmQtPmZsYWdzKTsKKwlxdWV1ZV93b3JrKGcy ZC0+ZzJkX3dvcmtxLCAmZzJkLT5ydW5xdWV1ZV93b3JrKTsKKworCXJldHVybiAwOworfQorI2Vu ZGlmCisKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQgZzJkX3J1bnRpbWVfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGcyZF9kYXRhICpnMmQgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKIAogCWNsa19kaXNhYmxlX3VucHJlcGFyZShnMmQtPmdhdGVfY2xrKTsKIApA QCAtMTUwNCwxNiArMTY0OCwxMiBAQCBzdGF0aWMgaW50IGcyZF9ydW50aW1lX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCiAJaWYgKHJldCA8IDApCiAJCWRldl93YXJuKGRldiwgImZhaWxlZCB0 byBlbmFibGUgY2xvY2suXG4iKTsKIAotCWcyZC0+c3VzcGVuZGVkID0gZmFsc2U7Ci0JZzJkX2V4 ZWNfcnVucXVldWUoZzJkKTsKLQogCXJldHVybiByZXQ7CiB9CiAjZW5kaWYKIAogc3RhdGljIGNv bnN0IHN0cnVjdCBkZXZfcG1fb3BzIGcyZF9wbV9vcHMgPSB7Ci0JU0VUX1NZU1RFTV9TTEVFUF9Q TV9PUFMocG1fcnVudGltZV9mb3JjZV9zdXNwZW5kLAotCQkJCXBtX3J1bnRpbWVfZm9yY2VfcmVz dW1lKQorCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGcyZF9zdXNwZW5kLCBnMmRfcmVzdW1lKQog CVNFVF9SVU5USU1FX1BNX09QUyhnMmRfcnVudGltZV9zdXNwZW5kLCBnMmRfcnVudGltZV9yZXN1 bWUsIE5VTEwpCiB9OwogCi0tIAoyLjcuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==