From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Jakobi Subject: [RFC v2] drm/exynos: g2d: fix runtime PM Date: Sat, 24 Sep 2016 10:33:03 +0200 Message-ID: <1474705983-3148-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 CB7C26E0EF for ; Sat, 24 Sep 2016 08:33:14 +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 cXVldWVfd29ya2VyKCkgaWYgdGhlcmUgaXMgbm9kZQogIGluIHRoZSBxdWV1ZSBsZWZ0CgpTaWdu ZWQtb2ZmLWJ5OiBUb2JpYXMgSmFrb2JpIDx0amFrb2JpQG1hdGgudW5pLWJpZWxlZmVsZC5kZT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZzJkLmMgfCAyMzcgKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxODggaW5zZXJ0aW9u cygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2cyZC5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2cy ZC5jCmluZGV4IDZlY2E4YmIuLmMzZjgzOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9nMmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fZzJkLmMKQEAgLTEzOCw2ICsxMzgsMTggQEAgZW51bSBnMmRfcmVnX3R5cGUgewogCU1B WF9SRUdfVFlQRV9OUgogfTsKIAorZW51bSBnMmRfZmxhZ19iaXRzIHsKKwkvKgorCSAqIElmIHNl dCwgc3VzcGVuZHMgdGhlIHJ1bnF1ZXVlIHdvcmtlciBhZnRlciB0aGUgY3VycmVudGx5CisJICog cHJvY2Vzc2VkIG5vZGUgaXMgZmluaXNoZWQuCisJICovCisJRzJEX0JJVF9TVVNQRU5EX1JVTlFV RVVFLAorCS8qCisJICogSWYgc2V0LCBpbmRpY2F0ZXMgdGhhdCB0aGUgZW5naW5lIGlzIGN1cnJl bnRseSBidXN5LgorCSAqLworCUcyRF9CSVRfRU5HSU5FX0JVU1ksCit9OworCiAvKiBjbWRsaXN0 IGRhdGEgc3RydWN0dXJlICovCiBzdHJ1Y3QgZzJkX2NtZGxpc3QgewogCXUzMgkJaGVhZDsKQEAg LTIyNiw3ICsyMzgsNyBAQCBzdHJ1Y3QgZzJkX2RhdGEgewogCXN0cnVjdCB3b3JrcXVldWVfc3Ry dWN0CQkqZzJkX3dvcmtxOwogCXN0cnVjdCB3b3JrX3N0cnVjdAkJcnVucXVldWVfd29yazsKIAlz dHJ1Y3QgZXh5bm9zX2RybV9zdWJkcnYJc3ViZHJ2OwotCWJvb2wJCQkJc3VzcGVuZGVkOworCXVu c2lnbmVkIGxvbmcJCQlmbGFnczsKIAogCS8qIGNtZGxpc3QgKi8KIAlzdHJ1Y3QgZzJkX2NtZGxp c3Rfbm9kZQkJKmNtZGxpc3Rfbm9kZTsKQEAgLTI0Niw2ICsyNTgsMTIgQEAgc3RydWN0IGcyZF9k YXRhIHsKIAl1bnNpZ25lZCBsb25nCQkJbWF4X3Bvb2w7CiB9OwogCitzdGF0aWMgaW5saW5lIHZv aWQgZzJkX2h3X3Jlc2V0KHN0cnVjdCBnMmRfZGF0YSAqZzJkKQoreworCXdyaXRlbChHMkRfUiB8 IEcyRF9TRlJDTEVBUiwgZzJkLT5yZWdzICsgRzJEX1NPRlRfUkVTRVQpOworCWNsZWFyX2JpdChH MkRfQklUX0VOR0lORV9CVVNZLCAmZzJkLT5mbGFncyk7Cit9CisKIHN0YXRpYyBpbnQgZzJkX2lu aXRfY21kbGlzdChzdHJ1Y3QgZzJkX2RhdGEgKmcyZCkKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBnMmQtPmRldjsKQEAgLTgwMywxMiArODIxLDggQEAgc3RhdGljIHZvaWQgZzJkX2RtYV9zdGFy dChzdHJ1Y3QgZzJkX2RhdGEgKmcyZCwKIAlzdHJ1Y3QgZzJkX2NtZGxpc3Rfbm9kZSAqbm9kZSA9 CiAJCQkJbGlzdF9maXJzdF9lbnRyeSgmcnVucXVldWVfbm9kZS0+cnVuX2NtZGxpc3QsCiAJCQkJ CQlzdHJ1Y3QgZzJkX2NtZGxpc3Rfbm9kZSwgbGlzdCk7Ci0JaW50IHJldDsKLQotCXJldCA9IHBt X3J1bnRpbWVfZ2V0X3N5bmMoZzJkLT5kZXYpOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm47CiAK KwlzZXRfYml0KEcyRF9CSVRfRU5HSU5FX0JVU1ksICZnMmQtPmZsYWdzKTsKIAl3cml0ZWxfcmVs YXhlZChub2RlLT5kbWFfYWRkciwgZzJkLT5yZWdzICsgRzJEX0RNQV9TRlJfQkFTRV9BRERSKTsK IAl3cml0ZWxfcmVsYXhlZChHMkRfRE1BX1NUQVJULCBnMmQtPnJlZ3MgKyBHMkRfRE1BX0NPTU1B TkQpOwogfQpAQCAtODMxLDkgKzg0NSw2IEBAIHN0YXRpYyB2b2lkIGcyZF9mcmVlX3J1bnF1ZXVl X25vZGUoc3RydWN0IGcyZF9kYXRhICpnMmQsCiB7CiAJc3RydWN0IGcyZF9jbWRsaXN0X25vZGUg Km5vZGU7CiAKLQlpZiAoIXJ1bnF1ZXVlX25vZGUpCi0JCXJldHVybjsKLQogCW11dGV4X2xvY2so JmcyZC0+Y21kbGlzdF9tdXRleCk7CiAJLyoKIAkgKiBjb21tYW5kcyBpbiBydW5fY21kbGlzdCBo YXZlIGJlZW4gY29tcGxldGVkIHNvIHVubWFwIGFsbCBnZW0KQEAgLTg0NywyOSArODU4LDY0IEBA IHN0YXRpYyB2b2lkIGcyZF9mcmVlX3J1bnF1ZXVlX25vZGUoc3RydWN0IGcyZF9kYXRhICpnMmQs CiAJa21lbV9jYWNoZV9mcmVlKGcyZC0+cnVucXVldWVfc2xhYiwgcnVucXVldWVfbm9kZSk7CiB9 CiAKLXN0YXRpYyB2b2lkIGcyZF9leGVjX3J1bnF1ZXVlKHN0cnVjdCBnMmRfZGF0YSAqZzJkKQor LyoqCisgKiBnMmRfcmVtb3ZlX3J1bnF1ZXVlX25vZGVzIC0gcmVtb3ZlIGl0ZW1zIGZyb20gdGhl IGxpc3Qgb2YgcnVucXVldWUgbm9kZXMKKyAqIEBnMmQ6IEcyRCBzdGF0ZSBvYmplY3QKKyAqIEBm aWxlOiBpZiBub3QgemVybywgb25seSByZW1vdmUgaXRlbXMgd2l0aCB0aGlzIERSTSBmaWxlCisg KgorICogSGFzIHRvIGJlIGNhbGxlZCB1bmRlciBydW5xdWV1ZSBsb2NrLgorICovCitzdGF0aWMg dm9pZCBnMmRfcmVtb3ZlX3J1bnF1ZXVlX25vZGVzKHN0cnVjdCBnMmRfZGF0YSAqZzJkLCBzdHJ1 Y3QgZHJtX2ZpbGUqIGZpbGUpCiB7Ci0JZzJkLT5ydW5xdWV1ZV9ub2RlID0gZzJkX2dldF9ydW5x dWV1ZV9ub2RlKGcyZCk7Ci0JaWYgKGcyZC0+cnVucXVldWVfbm9kZSkKLQkJZzJkX2RtYV9zdGFy dChnMmQsIGcyZC0+cnVucXVldWVfbm9kZSk7CisJc3RydWN0IGcyZF9ydW5xdWV1ZV9ub2RlICpu b2RlLCAqbjsKKworCWlmIChsaXN0X2VtcHR5KCZnMmQtPnJ1bnF1ZXVlKSkKKwkJcmV0dXJuOwor CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5vZGUsIG4sICZnMmQtPnJ1bnF1ZXVlLCBsaXN0 KSB7CisJCWlmIChmaWxlICYmIG5vZGUtPmZpbHAgIT0gZmlsZSkKKwkJCWNvbnRpbnVlOworCisJ CWcyZF9mcmVlX3J1bnF1ZXVlX25vZGUoZzJkLCBub2RlKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lk IGcyZF9ydW5xdWV1ZV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVj dCBnMmRfZGF0YSAqZzJkID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBnMmRfZGF0YSwKIAkJ CQkJICAgIHJ1bnF1ZXVlX3dvcmspOworCXN0cnVjdCBnMmRfcnVucXVldWVfbm9kZSAqcnVucXVl dWVfbm9kZTsKKworCS8qCisJICogVGhlIGVuZ2luZSBpcyBidXN5IGFuZCB0aGUgY29tcGxldGlv biBvZiB0aGUgY3VycmVudCBub2RlIGlzIGdvaW5nCisJICogdG8gcG9rZSB0aGUgcnVucXVldWUg d29ya2VyLCBzbyBub3RoaW5nIHRvIGRvIGhlcmUuCisJICovCisJaWYgKHRlc3RfYml0KEcyRF9C SVRfRU5HSU5FX0JVU1ksICZnMmQtPmZsYWdzKSkKKwkJcmV0dXJuOwogCiAJbXV0ZXhfbG9jaygm ZzJkLT5ydW5xdWV1ZV9tdXRleCk7Ci0JcG1fcnVudGltZV9wdXRfc3luYyhnMmQtPmRldik7CiAK LQljb21wbGV0ZSgmZzJkLT5ydW5xdWV1ZV9ub2RlLT5jb21wbGV0ZSk7Ci0JaWYgKGcyZC0+cnVu cXVldWVfbm9kZS0+YXN5bmMpCi0JCWcyZF9mcmVlX3J1bnF1ZXVlX25vZGUoZzJkLCBnMmQtPnJ1 bnF1ZXVlX25vZGUpOworCXJ1bnF1ZXVlX25vZGUgPSBnMmQtPnJ1bnF1ZXVlX25vZGU7CisJZzJk LT5ydW5xdWV1ZV9ub2RlID0gTlVMTDsKKworCWlmIChydW5xdWV1ZV9ub2RlKSB7CisJCXBtX3J1 bnRpbWVfbWFya19sYXN0X2J1c3koZzJkLT5kZXYpOworCQlwbV9ydW50aW1lX3B1dF9hdXRvc3Vz cGVuZChnMmQtPmRldik7CisKKwkJY29tcGxldGUoJnJ1bnF1ZXVlX25vZGUtPmNvbXBsZXRlKTsK KwkJaWYgKHJ1bnF1ZXVlX25vZGUtPmFzeW5jKQorCQkJZzJkX2ZyZWVfcnVucXVldWVfbm9kZShn MmQsIHJ1bnF1ZXVlX25vZGUpOworCX0KKworCWlmICghdGVzdF9iaXQoRzJEX0JJVF9TVVNQRU5E X1JVTlFVRVVFLCAmZzJkLT5mbGFncykpIHsKKwkJZzJkLT5ydW5xdWV1ZV9ub2RlID0gZzJkX2dl dF9ydW5xdWV1ZV9ub2RlKGcyZCk7CisKKwkJaWYgKGcyZC0+cnVucXVldWVfbm9kZSkgeworCQkJ cG1fcnVudGltZV9nZXRfc3luYyhnMmQtPmRldik7CisJCQlnMmRfZG1hX3N0YXJ0KGcyZCwgZzJk LT5ydW5xdWV1ZV9ub2RlKTsKKwkJfQorCX0KIAotCWlmIChnMmQtPnN1c3BlbmRlZCkKLQkJZzJk LT5ydW5xdWV1ZV9ub2RlID0gTlVMTDsKLQllbHNlCi0JCWcyZF9leGVjX3J1bnF1ZXVlKGcyZCk7 CiAJbXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1ZXVlX211dGV4KTsKIH0KIApAQCAtOTE4LDEyICs5 NjQsNzIgQEAgc3RhdGljIGlycXJldHVybl90IGcyZF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpkZXZfaWQpCiAJCX0KIAl9CiAKLQlpZiAocGVuZGluZyAmIEcyRF9JTlRQX0FDTURfRklOKQor CWlmIChwZW5kaW5nICYgRzJEX0lOVFBfQUNNRF9GSU4pIHsKKwkJY2xlYXJfYml0KEcyRF9CSVRf RU5HSU5FX0JVU1ksICZnMmQtPmZsYWdzKTsKIAkJcXVldWVfd29yayhnMmQtPmcyZF93b3JrcSwg JmcyZC0+cnVucXVldWVfd29yayk7CisJfQogCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCisv KioKKyAqIGcyZF93YWl0X2ZpbmlzaCAtIHdhaXQgZm9yIHRoZSBHMkQgZW5naW5lIHRvIGZpbmlz aCB0aGUgY3VycmVudCBydW5xdWV1ZSBub2RlCisgKiBAZzJkOiBHMkQgc3RhdGUgb2JqZWN0Cisg KiBAZmlsZTogaWYgbm90IHplcm8sIG9ubHkgd2FpdCBpZiB0aGUgY3VycmVudCBydW5xdWV1ZSBu b2RlIGJlbG9uZ3MKKyAqICAgICAgICB0byB0aGUgRFJNIGZpbGUKKyAqCisgKiBTaG91bGQgdGhl IGVuZ2luZSBub3QgYmVjb21lIGlkbGUgYWZ0ZXIgYSAxMDBtcyB0aW1lb3V0LCBhIGhhcmR3YXJl CisgKiByZXNldCBpcyBpc3N1ZWQuCisgKi8KK3N0YXRpYyB2b2lkIGcyZF93YWl0X2ZpbmlzaChz dHJ1Y3QgZzJkX2RhdGEgKmcyZCwgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGcyZC0+ZGV2OworCisJc3RydWN0IGcyZF9ydW5xdWV1ZV9ub2RlICpydW5x dWV1ZV9ub2RlID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQgdHJpZXMgPSAxMDsKKworCW11dGV4X2xv Y2soJmcyZC0+cnVucXVldWVfbXV0ZXgpOworCisJLyogSWYgbm8gbm9kZSBpcyBjdXJyZW50bHkg cHJvY2Vzc2VkLCB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uICovCisJaWYgKCFnMmQtPnJ1bnF1ZXVl X25vZGUpCisJCWdvdG8gb3V0OworCisJcnVucXVldWVfbm9kZSA9IGcyZC0+cnVucXVldWVfbm9k ZTsKKworCS8qIENoZWNrIGlmIHRoZSBjdXJyZW50bHkgcHJvY2Vzc2VkIGl0ZW0gYmVsb25ncyB0 byB1cy4gKi8KKwlpZiAoZmlsZSAmJiBydW5xdWV1ZV9ub2RlLT5maWxwICE9IGZpbGUpCisJCWdv dG8gb3V0OworCisJbXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1ZXVlX211dGV4KTsKKworCS8qIFdh aXQgZm9yIHRoZSBHMkQgZW5naW5lIHRvIGZpbmlzaC4gKi8KKwl3aGlsZSAodHJpZXMtLSAmJiAo ZzJkLT5ydW5xdWV1ZV9ub2RlID09IHJ1bnF1ZXVlX25vZGUpKQorCQltZGVsYXkoMTApOworCisJ bXV0ZXhfbG9jaygmZzJkLT5ydW5xdWV1ZV9tdXRleCk7CisKKwlpZiAoZzJkLT5ydW5xdWV1ZV9u b2RlICE9IHJ1bnF1ZXVlX25vZGUpCisJCWdvdG8gb3V0OworCisJZGV2X2VycihkZXYsICJ3YWl0 IHRpbWVkIG91dCwgcmVzZXR0aW5nIGVuZ2luZS4uLlxuIik7CisJZzJkX2h3X3Jlc2V0KGcyZCk7 CisKKwkvKgorCSAqIEFmdGVyIHRoZSBoYXJkd2FyZSByZXNldCBvZiB0aGUgZW5naW5lIHdlIGFy ZSBnb2luZyB0byBsb29zZQorCSAqIHRoZSBJUlEgd2hpY2ggdHJpZ2dlcnMgdGhlIFBNIHJ1bnRp bWUgcHV0KCkuCisJICogU28gZG8gdGhpcyBtYW51YWxseSBoZXJlLgorCSAqLworCXBtX3J1bnRp bWVfbWFya19sYXN0X2J1c3koZGV2KTsKKwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYp OworCisJY29tcGxldGUoJnJ1bnF1ZXVlX25vZGUtPmNvbXBsZXRlKTsKKwlpZiAocnVucXVldWVf bm9kZS0+YXN5bmMpCisJCWcyZF9mcmVlX3J1bnF1ZXVlX25vZGUoZzJkLCBydW5xdWV1ZV9ub2Rl KTsKKworb3V0OgorCW11dGV4X3VubG9jaygmZzJkLT5ydW5xdWV1ZV9tdXRleCk7Cit9CisKIHN0 YXRpYyBpbnQgZzJkX2NoZWNrX3JlZ19vZmZzZXQoc3RydWN0IGRldmljZSAqZGV2LAogCQkJCXN0 cnVjdCBnMmRfY21kbGlzdF9ub2RlICpub2RlLAogCQkJCWludCBuciwgYm9vbCBmb3JfYWRkcikK QEAgLTEyNTksMTAgKzEzNjUsMTEgQEAgaW50IGV4eW5vc19nMmRfZXhlY19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtX2Rldiwgdm9pZCAqZGF0YSwKIAlydW5xdWV1ZV9ub2RlLT5waWQgPSBj dXJyZW50LT5waWQ7CiAJcnVucXVldWVfbm9kZS0+ZmlscCA9IGZpbGU7CiAJbGlzdF9hZGRfdGFp bCgmcnVucXVldWVfbm9kZS0+bGlzdCwgJmcyZC0+cnVucXVldWUpOwotCWlmICghZzJkLT5ydW5x dWV1ZV9ub2RlKQotCQlnMmRfZXhlY19ydW5xdWV1ZShnMmQpOwogCW11dGV4X3VubG9jaygmZzJk LT5ydW5xdWV1ZV9tdXRleCk7CiAKKwkvKiBMZXQgdGhlIHJ1bnF1ZXVlIGtub3cgdGhhdCB0aGVy ZSBpcyB3b3JrIHRvIGRvLiAqLworCXF1ZXVlX3dvcmsoZzJkLT5nMmRfd29ya3EsICZnMmQtPnJ1 bnF1ZXVlX3dvcmspOworCiAJaWYgKHJ1bnF1ZXVlX25vZGUtPmFzeW5jKQogCQlnb3RvIG91dDsK IApAQCAtMTMzOSwxNSArMTQ0NiwyNyBAQCBzdGF0aWMgdm9pZCBnMmRfY2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRybV9kZXYsIHN0cnVjdCBkZXZpY2UgKmRldiwKIAlpZiAoIWcyZCkKIAkJcmV0 dXJuOwogCisJLyogUmVtb3ZlIHRoZSBydW5xdWV1ZSBub2RlcyB0aGF0IGJlbG9uZyB0byB1cy4g Ki8KKwltdXRleF9sb2NrKCZnMmQtPnJ1bnF1ZXVlX211dGV4KTsKKwlnMmRfcmVtb3ZlX3J1bnF1 ZXVlX25vZGVzKGcyZCwgZmlsZSk7CisJbXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1ZXVlX211dGV4 KTsKKworCS8qCisJICogV2FpdCBmb3IgdGhlIHJ1bnF1ZXVlIHdvcmtlciB0byBmaW5pc2ggaXRz IGN1cnJlbnQgbm9kZS4KKwkgKiBBZnRlciB0aGlzIHRoZSBlbmdpbmUgc2hvdWxkIG5vIGxvbmdl ciBiZSBhY2Nlc3NpbmcgYW55CisJICogbWVtb3J5IGJlbG9uZ2luZyB0byB1cy4KKwkgKi8KKwln MmRfd2FpdF9maW5pc2goZzJkLCBmaWxlKTsKKworCS8qCisJICogRXZlbiBhZnRlciB0aGUgZW5n aW5lIGlzIGlkbGUsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHN0YWxlIGNtZGxpc3RzCisJICogKGku ZS4gY21kbGlzc3Qgd2hpY2ggd2Ugc3VibWl0dGVkIGJ1dCBuZXZlciBleGVjdXRlZCkgYXJvdW5k LCB3aXRoCisJICogdGhlaXIgY29ycmVzcG9uZGluZyBHRU0vdXNlcnB0ciBidWZmZXJzLgorCSAq IFByb3Blcmx5IHVubWFwIHRoZXNlIGJ1ZmZlcnMgaGVyZS4KKwkgKi8KIAltdXRleF9sb2NrKCZn MmQtPmNtZGxpc3RfbXV0ZXgpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBuLCAm ZzJkX3ByaXYtPmludXNlX2NtZGxpc3QsIGxpc3QpIHsKLQkJLyoKLQkJICogdW5tYXAgYWxsIGdl bSBvYmplY3RzIG5vdCBjb21wbGV0ZWQuCi0JCSAqCi0JCSAqIFAuUy4gaWYgY3VycmVudCBwcm9j ZXNzIHdhcyB0ZXJtaW5hdGVkIGZvcmNlbHkgdGhlbgotCQkgKiB0aGVyZSBtYXkgYmUgc29tZSBj b21tYW5kcyBpbiBpbnVzZV9jbWRsaXN0IHNvIHVubWFwCi0JCSAqIHRoZW0uCi0JCSAqLworCiAJ CWcyZF91bm1hcF9jbWRsaXN0X2dlbShnMmQsIG5vZGUsIGZpbGUpOwogCQlsaXN0X21vdmVfdGFp bCgmbm9kZS0+bGlzdCwgJmcyZC0+ZnJlZV9jbWRsaXN0KTsKIAl9CkBAIC0xMzk5LDcgKzE1MTgs MTEgQEAgc3RhdGljIGludCBnMmRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAkJZ290byBlcnJfZGVzdHJveV93b3JrcXVldWU7CiAJfQogCisJcG1fcnVudGltZV91c2VfYXV0 b3N1c3BlbmQoZGV2KTsKKwlwbV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShkZXYsIDIw MDApOwogCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7CisJY2xlYXJfYml0KEcyRF9CSVRfU1VTUEVO RF9SVU5RVUVVRSwgJmcyZC0+ZmxhZ3MpOworCWNsZWFyX2JpdChHMkRfQklUX0VOR0lORV9CVVNZ LCAmZzJkLT5mbGFncyk7CiAKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOwogCkBAIC0xNDU4LDE0ICsxNTgxLDE3IEBAIHN0YXRpYyBpbnQgZzJk X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBnMmRfZGF0 YSAqZzJkID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAKKwkvKiBTdXNwZW5kIG9wZXJh dGlvbiBhbmQgd2FpdCBmb3IgZW5naW5lIGlkbGUuICovCisJc2V0X2JpdChHMkRfQklUX1NVU1BF TkRfUlVOUVVFVUUsICZnMmQtPmZsYWdzKTsKKwlnMmRfd2FpdF9maW5pc2goZzJkLCBOVUxMKTsK KwogCWNhbmNlbF93b3JrX3N5bmMoJmcyZC0+cnVucXVldWVfd29yayk7CiAJZXh5bm9zX2RybV9z dWJkcnZfdW5yZWdpc3RlcigmZzJkLT5zdWJkcnYpOwogCi0Jd2hpbGUgKGcyZC0+cnVucXVldWVf bm9kZSkgewotCQlnMmRfZnJlZV9ydW5xdWV1ZV9ub2RlKGcyZCwgZzJkLT5ydW5xdWV1ZV9ub2Rl KTsKLQkJZzJkLT5ydW5xdWV1ZV9ub2RlID0gZzJkX2dldF9ydW5xdWV1ZV9ub2RlKGcyZCk7Ci0J fQorCS8qIFRoZXJlIHNob3VsZCBiZSBubyBsb2NraW5nIG5lZWRlZCBoZXJlLiAqLworCWcyZF9y ZW1vdmVfcnVucXVldWVfbm9kZXMoZzJkLCBOVUxMKTsKIAorCXBtX3J1bnRpbWVfZG9udF91c2Vf YXV0b3N1c3BlbmQoJnBkZXYtPmRldik7CiAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYp OwogCiAJZzJkX2ZpbmlfY21kbGlzdChnMmQpOwpAQCAtMTQ3NSwyMCArMTYwMSwzNyBAQCBzdGF0 aWMgaW50IGcyZF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXR1cm4g MDsKIH0KIAotI2lmZGVmIENPTkZJR19QTQotc3RhdGljIGludCBnMmRfcnVudGltZV9zdXNwZW5k KHN0cnVjdCBkZXZpY2UgKmRldikKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0YXRpYyBpbnQg ZzJkX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBnMmRfZGF0YSAqZzJk ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAKLQltdXRleF9sb2NrKCZnMmQtPnJ1bnF1ZXVlX211 dGV4KTsKLQlnMmQtPnN1c3BlbmRlZCA9IHRydWU7Ci0JbXV0ZXhfdW5sb2NrKCZnMmQtPnJ1bnF1 ZXVlX211dGV4KTsKKwkvKgorCSAqIFN1c3BlbmQgdGhlIHJ1bnF1ZXVlIHdvcmtlciBvcGVyYXRp b24gYW5kIHdhaXQgdW50aWwgdGhlIEcyRAorCSAqIGVuZ2luZSBpcyBpZGxlLgorCSAqLworCXNl dF9iaXQoRzJEX0JJVF9TVVNQRU5EX1JVTlFVRVVFLCAmZzJkLT5mbGFncyk7CisJZzJkX3dhaXRf ZmluaXNoKGcyZCwgTlVMTCk7CisJZmx1c2hfd29yaygmZzJkLT5ydW5xdWV1ZV93b3JrKTsKIAot CXdoaWxlIChnMmQtPnJ1bnF1ZXVlX25vZGUpCi0JCS8qIEZJWE1FOiBnb29kIHJhbmdlPyAqLwot CQl1c2xlZXBfcmFuZ2UoNTAwLCAxMDAwKTsKKwlyZXR1cm4gMDsKK30KIAotCWZsdXNoX3dvcmso JmcyZC0+cnVucXVldWVfd29yayk7CitzdGF0aWMgaW50IGcyZF9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQoreworCXN0cnVjdCBnMmRfZGF0YSAqZzJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7 CisKKwljbGVhcl9iaXQoRzJEX0JJVF9TVVNQRU5EX1JVTlFVRVVFLCAmZzJkLT5mbGFncyk7CisJ cXVldWVfd29yayhnMmQtPmcyZF93b3JrcSwgJmcyZC0+cnVucXVldWVfd29yayk7CisKKwlyZXR1 cm4gMDsKK30KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgaW50IGcyZF9ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBnMmRfZGF0YSAqZzJk ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAKIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZzJkLT5n YXRlX2Nsayk7CiAKQEAgLTE1MDQsMTYgKzE2NDcsMTIgQEAgc3RhdGljIGludCBnMmRfcnVudGlt ZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChyZXQgPCAwKQogCQlkZXZfd2Fybihk ZXYsICJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrLlxuIik7CiAKLQlnMmQtPnN1c3BlbmRlZCA9IGZh bHNlOwotCWcyZF9leGVjX3J1bnF1ZXVlKGcyZCk7Ci0KIAlyZXR1cm4gcmV0OwogfQogI2VuZGlm CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBnMmRfcG1fb3BzID0gewotCVNFVF9T WVNURU1fU0xFRVBfUE1fT1BTKHBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVuZCwKLQkJCQlwbV9ydW50 aW1lX2ZvcmNlX3Jlc3VtZSkKKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhnMmRfc3VzcGVuZCwg ZzJkX3Jlc3VtZSkKIAlTRVRfUlVOVElNRV9QTV9PUFMoZzJkX3J1bnRpbWVfc3VzcGVuZCwgZzJk X3J1bnRpbWVfcmVzdW1lLCBOVUxMKQogfTsKIAotLSAKMi43LjMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=