From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH v2] drm/tegra: Do not use ->load() and ->unload() callbacks Date: Thu, 24 Oct 2019 19:31:37 +0200 Message-ID: <20191024173137.290420-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, Dmitry Osipenko , dri-devel@lists.freedesktop.org, =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoZSAtPmxvYWQoKSBh bmQgLT51bmxvYWQoKSBkcml2ZXJzIGFyZSBtaWRsYXllcnMgYW5kIHNob3VsZCBiZSBhdm9pZGVk CmluIG1vZGVybiBkcml2ZXJzLiBGaXggdGhpcyBieSBtb3ZpbmcgdGhlIGNvZGUgaW50byB0aGUg ZHJpdmVyIC0+cHJvYmUoKQphbmQgLT5yZW1vdmUoKSBpbXBsZW1lbnRhdGlvbnMsIHJlc3BlY3Rp dmVseS4KCnYyOiBraWNrIG91dCBjb25mbGljdGluZyBmcmFtZWJ1ZmZlcnMgYmVmb3JlIGluaXRp YWxpemluZyBmYmRldgoKU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZp ZGlhLmNvbT4KLS0tCk1pY2hhxYIsIERtaXRyeSwKCmRvIHlvdSBndXlzIGhhdmUgYSB3YXkgb2Yg dGVzdGluZyB0aGF0IHRoZSByZW1vdmFsIG9mIHRoZSBjb25mbGljdGluZwpmcmFtZWJ1ZmZlciBh Y3R1YWxseSB3b3Jrcz8KClRoaWVycnkKCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMgfCAz ODkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTg4IGluc2VydGlvbnMoKyksIDIwMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGVncmEvZHJtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMKaW5kZXgg MzAxMmYxM2JhYjk3Li5lZDJhZTg5ODcyNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9kcm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMKQEAgLTgyLDIwMiAr ODIsNiBAQCB0ZWdyYV9kcm1fbW9kZV9jb25maWdfaGVscGVycyA9IHsKIAkuYXRvbWljX2NvbW1p dF90YWlsID0gdGVncmFfYXRvbWljX2NvbW1pdF90YWlsLAogfTsKIAotc3RhdGljIGludCB0ZWdy YV9kcm1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBsb25nIGZsYWdzKQot ewotCXN0cnVjdCBob3N0MXhfZGV2aWNlICpkZXZpY2UgPSB0b19ob3N0MXhfZGV2aWNlKGRybS0+ ZGV2KTsKLQlzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW47Ci0Jc3RydWN0IHRlZ3JhX2RybSAq dGVncmE7Ci0JaW50IGVycjsKLQotCXRlZ3JhID0ga3phbGxvYyhzaXplb2YoKnRlZ3JhKSwgR0ZQ X0tFUk5FTCk7Ci0JaWYgKCF0ZWdyYSkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkvKgotCSAqIElm IHRoZSBUZWdyYSBEUk0gY2xpZW50cyBhcmUgYmFja2VkIGJ5IGFuIElPTU1VLCBwdXNoIGJ1ZmZl cnMgYXJlCi0JICogbGlrZWx5IHRvIGJlIGFsbG9jYXRlZCBiZXlvbmQgdGhlIDMyLWJpdCBib3Vu ZGFyeSBpZiBzdWZmaWNpZW50Ci0JICogc3lzdGVtIG1lbW9yeSBpcyBhdmFpbGFibGUuIFRoaXMg aXMgcHJvYmxlbWF0aWMgb24gZWFybGllciBUZWdyYQotCSAqIGdlbmVyYXRpb25zIHdoZXJlIGhv c3QxeCBzdXBwb3J0cyBhIG1heGltdW0gb2YgMzIgYWRkcmVzcyBiaXRzIGluCi0JICogdGhlIEdB VEhFUiBvcGNvZGUuIEluIHRoaXMgY2FzZSwgdW5sZXNzIGhvc3QxeCBpcyBiZWhpbmQgYW4gSU9N TVUKLQkgKiBhcyB3ZWxsIGl0IHdvbid0IGJlIGFibGUgdG8gcHJvY2VzcyBidWZmZXJzIGFsbG9j YXRlZCBiZXlvbmQgdGhlCi0JICogMzItYml0IGJvdW5kYXJ5LgotCSAqCi0JICogVGhlIERNQSBB UEkgd2lsbCB1c2UgYm91bmNlIGJ1ZmZlcnMgaW4gdGhpcyBjYXNlLCBzbyB0aGF0IGNvdWxkCi0J ICogcGVyaGFwcyBzdGlsbCBiZSBtYWRlIHRvIHdvcmssIGV2ZW4gaWYgbGVzcyBlZmZpY2llbnQs IGJ1dCB0aGVyZQotCSAqIGlzIGFub3RoZXIgY2F0Y2g6IGluIG9yZGVyIHRvIHBlcmZvcm0gY2Fj aGUgbWFpbnRlbmFuY2Ugb24gcGFnZXMKLQkgKiBhbGxvY2F0ZWQgZm9yIGRpc2NvbnRpZ3VvdXMg YnVmZmVycyB3ZSBuZWVkIHRvIG1hcCBhbmQgdW5tYXAgdGhlCi0JICogU0cgdGFibGUgcmVwcmVz ZW50aW5nIHRoZXNlIGJ1ZmZlcnMuIFRoaXMgaXMgZmluZSBmb3Igc29tZXRoaW5nCi0JICogc21h bGwgbGlrZSBhIHB1c2ggYnVmZmVyLCBidXQgaXQgZXhoYXVzdHMgdGhlIGJvdW5jZSBidWZmZXIg cG9vbAotCSAqICh0eXBpY2FsbHkgb24gdGhlIG9yZGVyIG9mIGEgZmV3IE1pQikgZm9yIGZyYW1l YnVmZmVycyAobWFueSBNaUIKLQkgKiBmb3IgYW55IG1vZGVybiByZXNvbHV0aW9uKS4KLQkgKgot CSAqIFdvcmsgYXJvdW5kIHRoaXMgYnkgbWFraW5nIHN1cmUgdGhhdCBUZWdyYSBEUk0gY2xpZW50 cyBvbmx5IHVzZQotCSAqIGFuIElPTU1VIGlmIHRoZSBwYXJlbnQgaG9zdDF4IGFsc28gdXNlcyBh biBJT01NVS4KLQkgKgotCSAqIE5vdGUgdGhhdCB0aGVyZSdzIHN0aWxsIGEgc21hbGwgZ2FwIGhl cmUgdGhhdCB3ZSBkb24ndCBjb3ZlcjogaWYKLQkgKiB0aGUgRE1BIEFQSSBpcyBiYWNrZWQgYnkg YW4gSU9NTVUgdGhlcmUncyBubyB3YXkgdG8gY29udHJvbCB3aGljaAotCSAqIGRldmljZSBpcyBh dHRhY2hlZCB0byBhbiBJT01NVSBhbmQgd2hpY2ggaXNuJ3QsIGV4Y2VwdCB2aWEgd2lyaW5nCi0J ICogdXAgdGhlIGRldmljZSB0cmVlIGFwcHJvcHJpYXRlbHkuIFRoaXMgaXMgY29uc2lkZXJlZCBh biBwcm9ibGVtCi0JICogb2YgaW50ZWdyYXRpb24sIHNvIGNhcmUgbXVzdCBiZSB0YWtlbiBmb3Ig dGhlIERUIHRvIGJlIGNvbnNpc3RlbnQuCi0JICovCi0JZG9tYWluID0gaW9tbXVfZ2V0X2RvbWFp bl9mb3JfZGV2KGRybS0+ZGV2LT5wYXJlbnQpOwotCi0JaWYgKGRvbWFpbiAmJiBpb21tdV9wcmVz ZW50KCZwbGF0Zm9ybV9idXNfdHlwZSkpIHsKLQkJdGVncmEtPmRvbWFpbiA9IGlvbW11X2RvbWFp bl9hbGxvYygmcGxhdGZvcm1fYnVzX3R5cGUpOwotCQlpZiAoIXRlZ3JhLT5kb21haW4pIHsKLQkJ CWVyciA9IC1FTk9NRU07Ci0JCQlnb3RvIGZyZWU7Ci0JCX0KLQotCQllcnIgPSBpb3ZhX2NhY2hl X2dldCgpOwotCQlpZiAoZXJyIDwgMCkKLQkJCWdvdG8gZG9tYWluOwotCX0KLQotCW11dGV4X2lu aXQoJnRlZ3JhLT5jbGllbnRzX2xvY2spOwotCUlOSVRfTElTVF9IRUFEKCZ0ZWdyYS0+Y2xpZW50 cyk7Ci0KLQlkcm0tPmRldl9wcml2YXRlID0gdGVncmE7Ci0JdGVncmEtPmRybSA9IGRybTsKLQot CWRybV9tb2RlX2NvbmZpZ19pbml0KGRybSk7Ci0KLQlkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0 aCA9IDA7Ci0JZHJtLT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsKLQotCWRybS0+bW9kZV9j b25maWcubWF4X3dpZHRoID0gNDA5NjsKLQlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSA0 MDk2OwotCi0JZHJtLT5tb2RlX2NvbmZpZy5hbGxvd19mYl9tb2RpZmllcnMgPSB0cnVlOwotCi0J ZHJtLT5tb2RlX2NvbmZpZy5ub3JtYWxpemVfenBvcyA9IHRydWU7Ci0KLQlkcm0tPm1vZGVfY29u ZmlnLmZ1bmNzID0gJnRlZ3JhX2RybV9tb2RlX2NvbmZpZ19mdW5jczsKLQlkcm0tPm1vZGVfY29u ZmlnLmhlbHBlcl9wcml2YXRlID0gJnRlZ3JhX2RybV9tb2RlX2NvbmZpZ19oZWxwZXJzOwotCi0J ZXJyID0gdGVncmFfZHJtX2ZiX3ByZXBhcmUoZHJtKTsKLQlpZiAoZXJyIDwgMCkKLQkJZ290byBj b25maWc7Ci0KLQlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJtKTsKLQotCWVyciA9IGhvc3Qx eF9kZXZpY2VfaW5pdChkZXZpY2UpOwotCWlmIChlcnIgPCAwKQotCQlnb3RvIGZiZGV2OwotCi0J aWYgKHRlZ3JhLT5ncm91cCkgewotCQl1NjQgY2FydmVvdXRfc3RhcnQsIGNhcnZlb3V0X2VuZCwg Z2VtX3N0YXJ0LCBnZW1fZW5kOwotCQl1NjQgZG1hX21hc2sgPSBkbWFfZ2V0X21hc2soJmRldmlj ZS0+ZGV2KTsKLQkJZG1hX2FkZHJfdCBzdGFydCwgZW5kOwotCQl1bnNpZ25lZCBsb25nIG9yZGVy OwotCi0JCXN0YXJ0ID0gdGVncmEtPmRvbWFpbi0+Z2VvbWV0cnkuYXBlcnR1cmVfc3RhcnQgJiBk bWFfbWFzazsKLQkJZW5kID0gdGVncmEtPmRvbWFpbi0+Z2VvbWV0cnkuYXBlcnR1cmVfZW5kICYg ZG1hX21hc2s7Ci0KLQkJZ2VtX3N0YXJ0ID0gc3RhcnQ7Ci0JCWdlbV9lbmQgPSBlbmQgLSBDQVJW RU9VVF9TWjsKLQkJY2FydmVvdXRfc3RhcnQgPSBnZW1fZW5kICsgMTsKLQkJY2FydmVvdXRfZW5k ID0gZW5kOwotCi0JCW9yZGVyID0gX19mZnModGVncmEtPmRvbWFpbi0+cGdzaXplX2JpdG1hcCk7 Ci0JCWluaXRfaW92YV9kb21haW4oJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4sIDFVTCA8PCBvcmRl ciwKLQkJCQkgY2FydmVvdXRfc3RhcnQgPj4gb3JkZXIpOwotCi0JCXRlZ3JhLT5jYXJ2ZW91dC5z aGlmdCA9IGlvdmFfc2hpZnQoJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4pOwotCQl0ZWdyYS0+Y2Fy dmVvdXQubGltaXQgPSBjYXJ2ZW91dF9lbmQgPj4gdGVncmEtPmNhcnZlb3V0LnNoaWZ0OwotCi0J CWRybV9tbV9pbml0KCZ0ZWdyYS0+bW0sIGdlbV9zdGFydCwgZ2VtX2VuZCAtIGdlbV9zdGFydCAr IDEpOwotCQltdXRleF9pbml0KCZ0ZWdyYS0+bW1fbG9jayk7Ci0KLQkJRFJNX0RFQlVHX0RSSVZF UigiSU9NTVUgYXBlcnR1cmVzOlxuIik7Ci0JCURSTV9ERUJVR19EUklWRVIoIiAgR0VNOiAlI2xs eC0lI2xseFxuIiwgZ2VtX3N0YXJ0LCBnZW1fZW5kKTsKLQkJRFJNX0RFQlVHX0RSSVZFUigiICBD YXJ2ZW91dDogJSNsbHgtJSNsbHhcbiIsIGNhcnZlb3V0X3N0YXJ0LAotCQkJCSBjYXJ2ZW91dF9l bmQpOwotCX0gZWxzZSBpZiAodGVncmEtPmRvbWFpbikgewotCQlpb21tdV9kb21haW5fZnJlZSh0 ZWdyYS0+ZG9tYWluKTsKLQkJdGVncmEtPmRvbWFpbiA9IE5VTEw7Ci0JCWlvdmFfY2FjaGVfcHV0 KCk7Ci0JfQotCi0JaWYgKHRlZ3JhLT5odWIpIHsKLQkJZXJyID0gdGVncmFfZGlzcGxheV9odWJf cHJlcGFyZSh0ZWdyYS0+aHViKTsKLQkJaWYgKGVyciA8IDApCi0JCQlnb3RvIGRldmljZTsKLQl9 Ci0KLQkvKgotCSAqIFdlIGRvbid0IHVzZSB0aGUgZHJtX2lycV9pbnN0YWxsKCkgaGVscGVycyBw cm92aWRlZCBieSB0aGUgRFJNCi0JICogY29yZSwgc28gd2UgbmVlZCB0byBzZXQgdGhpcyBtYW51 YWxseSBpbiBvcmRlciB0byBhbGxvdyB0aGUKLQkgKiBEUk1fSU9DVExfV0FJVF9WQkxBTksgdG8g b3BlcmF0ZSBjb3JyZWN0bHkuCi0JICovCi0JZHJtLT5pcnFfZW5hYmxlZCA9IHRydWU7Ci0KLQkv KiBzeW5jcG9pbnRzIGFyZSB1c2VkIGZvciBmdWxsIDMyLWJpdCBoYXJkd2FyZSBWQkxBTksgY291 bnRlcnMgKi8KLQlkcm0tPm1heF92YmxhbmtfY291bnQgPSAweGZmZmZmZmZmOwotCi0JZXJyID0g ZHJtX3ZibGFua19pbml0KGRybSwgZHJtLT5tb2RlX2NvbmZpZy5udW1fY3J0Yyk7Ci0JaWYgKGVy ciA8IDApCi0JCWdvdG8gaHViOwotCi0JZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7Ci0KLQll cnIgPSB0ZWdyYV9kcm1fZmJfaW5pdChkcm0pOwotCWlmIChlcnIgPCAwKQotCQlnb3RvIGh1YjsK LQotCXJldHVybiAwOwotCi1odWI6Ci0JaWYgKHRlZ3JhLT5odWIpCi0JCXRlZ3JhX2Rpc3BsYXlf aHViX2NsZWFudXAodGVncmEtPmh1Yik7Ci1kZXZpY2U6Ci0JaWYgKHRlZ3JhLT5kb21haW4pIHsK LQkJbXV0ZXhfZGVzdHJveSgmdGVncmEtPm1tX2xvY2spOwotCQlkcm1fbW1fdGFrZWRvd24oJnRl Z3JhLT5tbSk7Ci0JCXB1dF9pb3ZhX2RvbWFpbigmdGVncmEtPmNhcnZlb3V0LmRvbWFpbik7Ci0J CWlvdmFfY2FjaGVfcHV0KCk7Ci0JfQotCi0JaG9zdDF4X2RldmljZV9leGl0KGRldmljZSk7Ci1m YmRldjoKLQlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtKTsKLQl0ZWdyYV9kcm1fZmJfZnJl ZShkcm0pOwotY29uZmlnOgotCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Ci1kb21haW46 Ci0JaWYgKHRlZ3JhLT5kb21haW4pCi0JCWlvbW11X2RvbWFpbl9mcmVlKHRlZ3JhLT5kb21haW4p OwotZnJlZToKLQlrZnJlZSh0ZWdyYSk7Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIHZvaWQg dGVncmFfZHJtX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQotewotCXN0cnVjdCBob3N0 MXhfZGV2aWNlICpkZXZpY2UgPSB0b19ob3N0MXhfZGV2aWNlKGRybS0+ZGV2KTsKLQlzdHJ1Y3Qg dGVncmFfZHJtICp0ZWdyYSA9IGRybS0+ZGV2X3ByaXZhdGU7Ci0JaW50IGVycjsKLQotCWRybV9r bXNfaGVscGVyX3BvbGxfZmluaShkcm0pOwotCXRlZ3JhX2RybV9mYl9leGl0KGRybSk7Ci0JZHJt X2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsKLQlkcm1fbW9kZV9jb25maWdfY2xlYW51cChk cm0pOwotCi0JZXJyID0gaG9zdDF4X2RldmljZV9leGl0KGRldmljZSk7Ci0JaWYgKGVyciA8IDAp Ci0JCXJldHVybjsKLQotCWlmICh0ZWdyYS0+ZG9tYWluKSB7Ci0JCW11dGV4X2Rlc3Ryb3koJnRl Z3JhLT5tbV9sb2NrKTsKLQkJZHJtX21tX3Rha2Vkb3duKCZ0ZWdyYS0+bW0pOwotCQlwdXRfaW92 YV9kb21haW4oJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4pOwotCQlpb3ZhX2NhY2hlX3B1dCgpOwot CQlpb21tdV9kb21haW5fZnJlZSh0ZWdyYS0+ZG9tYWluKTsKLQl9Ci0KLQlrZnJlZSh0ZWdyYSk7 Ci19Ci0KIHN0YXRpYyBpbnQgdGVncmFfZHJtX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRybSwg c3RydWN0IGRybV9maWxlICpmaWxwKQogewogCXN0cnVjdCB0ZWdyYV9kcm1fZmlsZSAqZnByaXY7 CkBAIC0xMDQ2LDggKzg1MCw2IEBAIHN0YXRpYyBpbnQgdGVncmFfZGVidWdmc19pbml0KHN0cnVj dCBkcm1fbWlub3IgKm1pbm9yKQogc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHRlZ3JhX2RybV9k cml2ZXIgPSB7CiAJLmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0dF TSB8CiAJCQkgICBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX1JFTkRFUiwKLQkubG9hZCA9IHRlZ3Jh X2RybV9sb2FkLAotCS51bmxvYWQgPSB0ZWdyYV9kcm1fdW5sb2FkLAogCS5vcGVuID0gdGVncmFf ZHJtX29wZW4sCiAJLnBvc3RjbG9zZSA9IHRlZ3JhX2RybV9wb3N0Y2xvc2UsCiAJLmxhc3RjbG9z ZSA9IGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlLApAQCAtMTIzMSw2ICsxMDMzLDggQEAgdm9pZCB0 ZWdyYV9kcm1fZnJlZShzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSwgc2l6ZV90IHNpemUsIHZvaWQg KnZpcnQsCiBzdGF0aWMgaW50IGhvc3QxeF9kcm1fcHJvYmUoc3RydWN0IGhvc3QxeF9kZXZpY2Ug KmRldikKIHsKIAlzdHJ1Y3QgZHJtX2RyaXZlciAqZHJpdmVyID0gJnRlZ3JhX2RybV9kcml2ZXI7 CisJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOworCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3Jh OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CiAJaW50IGVycjsKIApAQCAtMTIzOCwxOCArMTA0 MiwxODAgQEAgc3RhdGljIGludCBob3N0MXhfZHJtX3Byb2JlKHN0cnVjdCBob3N0MXhfZGV2aWNl ICpkZXYpCiAJaWYgKElTX0VSUihkcm0pKQogCQlyZXR1cm4gUFRSX0VSUihkcm0pOwogCisJdGVn cmEgPSBremFsbG9jKHNpemVvZigqdGVncmEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXRlZ3JhKSB7 CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gcHV0OworCX0KKworCS8qCisJICogSWYgdGhlIFRl Z3JhIERSTSBjbGllbnRzIGFyZSBiYWNrZWQgYnkgYW4gSU9NTVUsIHB1c2ggYnVmZmVycyBhcmUK KwkgKiBsaWtlbHkgdG8gYmUgYWxsb2NhdGVkIGJleW9uZCB0aGUgMzItYml0IGJvdW5kYXJ5IGlm IHN1ZmZpY2llbnQKKwkgKiBzeXN0ZW0gbWVtb3J5IGlzIGF2YWlsYWJsZS4gVGhpcyBpcyBwcm9i bGVtYXRpYyBvbiBlYXJsaWVyIFRlZ3JhCisJICogZ2VuZXJhdGlvbnMgd2hlcmUgaG9zdDF4IHN1 cHBvcnRzIGEgbWF4aW11bSBvZiAzMiBhZGRyZXNzIGJpdHMgaW4KKwkgKiB0aGUgR0FUSEVSIG9w Y29kZS4gSW4gdGhpcyBjYXNlLCB1bmxlc3MgaG9zdDF4IGlzIGJlaGluZCBhbiBJT01NVQorCSAq IGFzIHdlbGwgaXQgd29uJ3QgYmUgYWJsZSB0byBwcm9jZXNzIGJ1ZmZlcnMgYWxsb2NhdGVkIGJl eW9uZCB0aGUKKwkgKiAzMi1iaXQgYm91bmRhcnkuCisJICoKKwkgKiBUaGUgRE1BIEFQSSB3aWxs IHVzZSBib3VuY2UgYnVmZmVycyBpbiB0aGlzIGNhc2UsIHNvIHRoYXQgY291bGQKKwkgKiBwZXJo YXBzIHN0aWxsIGJlIG1hZGUgdG8gd29yaywgZXZlbiBpZiBsZXNzIGVmZmljaWVudCwgYnV0IHRo ZXJlCisJICogaXMgYW5vdGhlciBjYXRjaDogaW4gb3JkZXIgdG8gcGVyZm9ybSBjYWNoZSBtYWlu dGVuYW5jZSBvbiBwYWdlcworCSAqIGFsbG9jYXRlZCBmb3IgZGlzY29udGlndW91cyBidWZmZXJz IHdlIG5lZWQgdG8gbWFwIGFuZCB1bm1hcCB0aGUKKwkgKiBTRyB0YWJsZSByZXByZXNlbnRpbmcg dGhlc2UgYnVmZmVycy4gVGhpcyBpcyBmaW5lIGZvciBzb21ldGhpbmcKKwkgKiBzbWFsbCBsaWtl IGEgcHVzaCBidWZmZXIsIGJ1dCBpdCBleGhhdXN0cyB0aGUgYm91bmNlIGJ1ZmZlciBwb29sCisJ ICogKHR5cGljYWxseSBvbiB0aGUgb3JkZXIgb2YgYSBmZXcgTWlCKSBmb3IgZnJhbWVidWZmZXJz IChtYW55IE1pQgorCSAqIGZvciBhbnkgbW9kZXJuIHJlc29sdXRpb24pLgorCSAqCisJICogV29y ayBhcm91bmQgdGhpcyBieSBtYWtpbmcgc3VyZSB0aGF0IFRlZ3JhIERSTSBjbGllbnRzIG9ubHkg dXNlCisJICogYW4gSU9NTVUgaWYgdGhlIHBhcmVudCBob3N0MXggYWxzbyB1c2VzIGFuIElPTU1V LgorCSAqCisJICogTm90ZSB0aGF0IHRoZXJlJ3Mgc3RpbGwgYSBzbWFsbCBnYXAgaGVyZSB0aGF0 IHdlIGRvbid0IGNvdmVyOiBpZgorCSAqIHRoZSBETUEgQVBJIGlzIGJhY2tlZCBieSBhbiBJT01N VSB0aGVyZSdzIG5vIHdheSB0byBjb250cm9sIHdoaWNoCisJICogZGV2aWNlIGlzIGF0dGFjaGVk IHRvIGFuIElPTU1VIGFuZCB3aGljaCBpc24ndCwgZXhjZXB0IHZpYSB3aXJpbmcKKwkgKiB1cCB0 aGUgZGV2aWNlIHRyZWUgYXBwcm9wcmlhdGVseS4gVGhpcyBpcyBjb25zaWRlcmVkIGFuIHByb2Js ZW0KKwkgKiBvZiBpbnRlZ3JhdGlvbiwgc28gY2FyZSBtdXN0IGJlIHRha2VuIGZvciB0aGUgRFQg dG8gYmUgY29uc2lzdGVudC4KKwkgKi8KKwlkb21haW4gPSBpb21tdV9nZXRfZG9tYWluX2Zvcl9k ZXYoZHJtLT5kZXYtPnBhcmVudCk7CisKKwlpZiAoZG9tYWluICYmIGlvbW11X3ByZXNlbnQoJnBs YXRmb3JtX2J1c190eXBlKSkgeworCQl0ZWdyYS0+ZG9tYWluID0gaW9tbXVfZG9tYWluX2FsbG9j KCZwbGF0Zm9ybV9idXNfdHlwZSk7CisJCWlmICghdGVncmEtPmRvbWFpbikgeworCQkJZXJyID0g LUVOT01FTTsKKwkJCWdvdG8gZnJlZTsKKwkJfQorCisJCWVyciA9IGlvdmFfY2FjaGVfZ2V0KCk7 CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBkb21haW47CisJfQorCisJbXV0ZXhfaW5pdCgmdGVn cmEtPmNsaWVudHNfbG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJnRlZ3JhLT5jbGllbnRzKTsKKwog CWRldl9zZXRfZHJ2ZGF0YSgmZGV2LT5kZXYsIGRybSk7CisJZHJtLT5kZXZfcHJpdmF0ZSA9IHRl Z3JhOworCXRlZ3JhLT5kcm0gPSBkcm07CisKKwlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwor CisJZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOworCWRybS0+bW9kZV9jb25maWcubWlu X2hlaWdodCA9IDA7CisKKwlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDQwOTY7CisJZHJt LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKKworCWRybS0+bW9kZV9jb25maWcuYWxs b3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKKworCWRybS0+bW9kZV9jb25maWcubm9ybWFsaXplX3pw b3MgPSB0cnVlOworCisJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZ0ZWdyYV9kcm1fbW9kZV9j b25maWdfZnVuY3M7CisJZHJtLT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9ICZ0ZWdyYV9k cm1fbW9kZV9jb25maWdfaGVscGVyczsKIAotCWVyciA9IGRybV9mYl9oZWxwZXJfcmVtb3ZlX2Nv bmZsaWN0aW5nX2ZyYW1lYnVmZmVycyhOVUxMLCAidGVncmFkcm1mYiIsIGZhbHNlKTsKKwllcnIg PSB0ZWdyYV9kcm1fZmJfcHJlcGFyZShkcm0pOwogCWlmIChlcnIgPCAwKQotCQlnb3RvIHB1dDsK KwkJZ290byBjb25maWc7CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJtKTsKKworCWVy ciA9IGhvc3QxeF9kZXZpY2VfaW5pdChkZXYpOworCWlmIChlcnIgPCAwKQorCQlnb3RvIGZiZGV2 OworCisJaWYgKHRlZ3JhLT5ncm91cCkgeworCQl1NjQgY2FydmVvdXRfc3RhcnQsIGNhcnZlb3V0 X2VuZCwgZ2VtX3N0YXJ0LCBnZW1fZW5kOworCQl1NjQgZG1hX21hc2sgPSBkbWFfZ2V0X21hc2so JmRldi0+ZGV2KTsKKwkJZG1hX2FkZHJfdCBzdGFydCwgZW5kOworCQl1bnNpZ25lZCBsb25nIG9y ZGVyOworCisJCXN0YXJ0ID0gdGVncmEtPmRvbWFpbi0+Z2VvbWV0cnkuYXBlcnR1cmVfc3RhcnQg JiBkbWFfbWFzazsKKwkJZW5kID0gdGVncmEtPmRvbWFpbi0+Z2VvbWV0cnkuYXBlcnR1cmVfZW5k ICYgZG1hX21hc2s7CisKKwkJZ2VtX3N0YXJ0ID0gc3RhcnQ7CisJCWdlbV9lbmQgPSBlbmQgLSBD QVJWRU9VVF9TWjsKKwkJY2FydmVvdXRfc3RhcnQgPSBnZW1fZW5kICsgMTsKKwkJY2FydmVvdXRf ZW5kID0gZW5kOworCisJCW9yZGVyID0gX19mZnModGVncmEtPmRvbWFpbi0+cGdzaXplX2JpdG1h cCk7CisJCWluaXRfaW92YV9kb21haW4oJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4sIDFVTCA8PCBv cmRlciwKKwkJCQkgY2FydmVvdXRfc3RhcnQgPj4gb3JkZXIpOworCisJCXRlZ3JhLT5jYXJ2ZW91 dC5zaGlmdCA9IGlvdmFfc2hpZnQoJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4pOworCQl0ZWdyYS0+ Y2FydmVvdXQubGltaXQgPSBjYXJ2ZW91dF9lbmQgPj4gdGVncmEtPmNhcnZlb3V0LnNoaWZ0Owor CisJCWRybV9tbV9pbml0KCZ0ZWdyYS0+bW0sIGdlbV9zdGFydCwgZ2VtX2VuZCAtIGdlbV9zdGFy dCArIDEpOworCQltdXRleF9pbml0KCZ0ZWdyYS0+bW1fbG9jayk7CisKKwkJRFJNX0RFQlVHX0RS SVZFUigiSU9NTVUgYXBlcnR1cmVzOlxuIik7CisJCURSTV9ERUJVR19EUklWRVIoIiAgR0VNOiAl I2xseC0lI2xseFxuIiwgZ2VtX3N0YXJ0LCBnZW1fZW5kKTsKKwkJRFJNX0RFQlVHX0RSSVZFUigi ICBDYXJ2ZW91dDogJSNsbHgtJSNsbHhcbiIsIGNhcnZlb3V0X3N0YXJ0LAorCQkJCSBjYXJ2ZW91 dF9lbmQpOworCX0gZWxzZSBpZiAodGVncmEtPmRvbWFpbikgeworCQlpb21tdV9kb21haW5fZnJl ZSh0ZWdyYS0+ZG9tYWluKTsKKwkJdGVncmEtPmRvbWFpbiA9IE5VTEw7CisJCWlvdmFfY2FjaGVf cHV0KCk7CisJfQorCisJaWYgKHRlZ3JhLT5odWIpIHsKKwkJZXJyID0gdGVncmFfZGlzcGxheV9o dWJfcHJlcGFyZSh0ZWdyYS0+aHViKTsKKwkJaWYgKGVyciA8IDApCisJCQlnb3RvIGRldmljZTsK Kwl9CisKKwkvKgorCSAqIFdlIGRvbid0IHVzZSB0aGUgZHJtX2lycV9pbnN0YWxsKCkgaGVscGVy cyBwcm92aWRlZCBieSB0aGUgRFJNCisJICogY29yZSwgc28gd2UgbmVlZCB0byBzZXQgdGhpcyBt YW51YWxseSBpbiBvcmRlciB0byBhbGxvdyB0aGUKKwkgKiBEUk1fSU9DVExfV0FJVF9WQkxBTksg dG8gb3BlcmF0ZSBjb3JyZWN0bHkuCisJICovCisJZHJtLT5pcnFfZW5hYmxlZCA9IHRydWU7CisK KwkvKiBzeW5jcG9pbnRzIGFyZSB1c2VkIGZvciBmdWxsIDMyLWJpdCBoYXJkd2FyZSBWQkxBTksg Y291bnRlcnMgKi8KKwlkcm0tPm1heF92YmxhbmtfY291bnQgPSAweGZmZmZmZmZmOworCisJZXJy ID0gZHJtX3ZibGFua19pbml0KGRybSwgZHJtLT5tb2RlX2NvbmZpZy5udW1fY3J0Yyk7CisJaWYg KGVyciA8IDApCisJCWdvdG8gaHViOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisK KwllcnIgPSBkcm1fZmJfaGVscGVyX3JlbW92ZV9jb25mbGljdGluZ19mcmFtZWJ1ZmZlcnMoTlVM TCwgInRlZ3JhZHJtZmIiLAorCQkJCQkJCSAgICBmYWxzZSk7CisJaWYgKGVyciA8IDApCisJCWdv dG8gaHViOworCisJZXJyID0gdGVncmFfZHJtX2ZiX2luaXQoZHJtKTsKKwlpZiAoZXJyIDwgMCkK KwkJZ290byBodWI7CiAKIAllcnIgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7CiAJaWYgKGVy ciA8IDApCi0JCWdvdG8gcHV0OworCQlnb3RvIGZiOwogCiAJcmV0dXJuIDA7CiAKK2ZiOgorCXRl Z3JhX2RybV9mYl9leGl0KGRybSk7CitodWI6CisJaWYgKHRlZ3JhLT5odWIpCisJCXRlZ3JhX2Rp c3BsYXlfaHViX2NsZWFudXAodGVncmEtPmh1Yik7CitkZXZpY2U6CisJaWYgKHRlZ3JhLT5kb21h aW4pIHsKKwkJbXV0ZXhfZGVzdHJveSgmdGVncmEtPm1tX2xvY2spOworCQlkcm1fbW1fdGFrZWRv d24oJnRlZ3JhLT5tbSk7CisJCXB1dF9pb3ZhX2RvbWFpbigmdGVncmEtPmNhcnZlb3V0LmRvbWFp bik7CisJCWlvdmFfY2FjaGVfcHV0KCk7CisJfQorCisJaG9zdDF4X2RldmljZV9leGl0KGRldik7 CitmYmRldjoKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtKTsKKwl0ZWdyYV9kcm1fZmJf ZnJlZShkcm0pOworY29uZmlnOgorCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Citkb21h aW46CisJaWYgKHRlZ3JhLT5kb21haW4pCisJCWlvbW11X2RvbWFpbl9mcmVlKHRlZ3JhLT5kb21h aW4pOworZnJlZToKKwlrZnJlZSh0ZWdyYSk7CiBwdXQ6CiAJZHJtX2Rldl9wdXQoZHJtKTsKIAly ZXR1cm4gZXJyOwpAQCAtMTI1OCw4ICsxMjI0LDI5IEBAIHN0YXRpYyBpbnQgaG9zdDF4X2RybV9w cm9iZShzdHJ1Y3QgaG9zdDF4X2RldmljZSAqZGV2KQogc3RhdGljIGludCBob3N0MXhfZHJtX3Jl bW92ZShzdHJ1Y3QgaG9zdDF4X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBkZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsKKwlzdHJ1Y3QgdGVncmFfZHJtICp0ZWdy YSA9IGRybS0+ZGV2X3ByaXZhdGU7CisJaW50IGVycjsKIAogCWRybV9kZXZfdW5yZWdpc3Rlcihk cm0pOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7CisJdGVncmFfZHJtX2ZiX2V4 aXQoZHJtKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihkcm0pOworCWRybV9tb2RlX2Nv bmZpZ19jbGVhbnVwKGRybSk7CisKKwllcnIgPSBob3N0MXhfZGV2aWNlX2V4aXQoZGV2KTsKKwlp ZiAoZXJyIDwgMCkKKwkJZGV2X2VycigmZGV2LT5kZXYsICJob3N0MXggZGV2aWNlIGNsZWFudXAg ZmFpbGVkOiAlZFxuIiwgZXJyKTsKKworCWlmICh0ZWdyYS0+ZG9tYWluKSB7CisJCW11dGV4X2Rl c3Ryb3koJnRlZ3JhLT5tbV9sb2NrKTsKKwkJZHJtX21tX3Rha2Vkb3duKCZ0ZWdyYS0+bW0pOwor CQlwdXRfaW92YV9kb21haW4oJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4pOworCQlpb3ZhX2NhY2hl X3B1dCgpOworCQlpb21tdV9kb21haW5fZnJlZSh0ZWdyYS0+ZG9tYWluKTsKKwl9CisKKwlrZnJl ZSh0ZWdyYSk7CiAJZHJtX2Rldl9wdXQoZHJtKTsKIAogCXJldHVybiAwOwotLSAKMi4yMy4wCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=