From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH] drm/tegra: Do not use ->load() and ->unload() callbacks Date: Thu, 24 Oct 2019 17:10:30 +0200 Message-ID: <20191024151030.3822283-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, dri-devel@lists.freedesktop.org List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoZSAtPmxvYWQoKSBh bmQgLT51bmxvYWQoKSBkcml2ZXJzIGFyZSBtaWRsYXllcnMgYW5kIHNob3VsZCBiZSBhdm9pZGVk CmluIG1vZGVybiBkcml2ZXJzLiBGaXggdGhpcyBieSBtb3ZpbmcgdGhlIGNvZGUgaW50byB0aGUg ZHJpdmVyIC0+cHJvYmUoKQphbmQgLT5yZW1vdmUoKSBpbXBsZW1lbnRhdGlvbnMsIHJlc3BlY3Rp dmVseS4KClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jIHwgMzg2ICsrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAy MDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5j IGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jCmluZGV4IDMwMTJmMTNiYWI5Ny4uYmQ3YTAw MjcyOTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jCkBAIC04MiwyMDIgKzgyLDYgQEAgdGVncmFfZHJtX21v ZGVfY29uZmlnX2hlbHBlcnMgPSB7CiAJLmF0b21pY19jb21taXRfdGFpbCA9IHRlZ3JhX2F0b21p Y19jb21taXRfdGFpbCwKIH07CiAKLXN0YXRpYyBpbnQgdGVncmFfZHJtX2xvYWQoc3RydWN0IGRy bV9kZXZpY2UgKmRybSwgdW5zaWduZWQgbG9uZyBmbGFncykKLXsKLQlzdHJ1Y3QgaG9zdDF4X2Rl dmljZSAqZGV2aWNlID0gdG9faG9zdDF4X2RldmljZShkcm0tPmRldik7Ci0Jc3RydWN0IGlvbW11 X2RvbWFpbiAqZG9tYWluOwotCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhOwotCWludCBlcnI7Ci0K LQl0ZWdyYSA9IGt6YWxsb2Moc2l6ZW9mKCp0ZWdyYSksIEdGUF9LRVJORUwpOwotCWlmICghdGVn cmEpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JLyoKLQkgKiBJZiB0aGUgVGVncmEgRFJNIGNsaWVu dHMgYXJlIGJhY2tlZCBieSBhbiBJT01NVSwgcHVzaCBidWZmZXJzIGFyZQotCSAqIGxpa2VseSB0 byBiZSBhbGxvY2F0ZWQgYmV5b25kIHRoZSAzMi1iaXQgYm91bmRhcnkgaWYgc3VmZmljaWVudAot CSAqIHN5c3RlbSBtZW1vcnkgaXMgYXZhaWxhYmxlLiBUaGlzIGlzIHByb2JsZW1hdGljIG9uIGVh cmxpZXIgVGVncmEKLQkgKiBnZW5lcmF0aW9ucyB3aGVyZSBob3N0MXggc3VwcG9ydHMgYSBtYXhp bXVtIG9mIDMyIGFkZHJlc3MgYml0cyBpbgotCSAqIHRoZSBHQVRIRVIgb3Bjb2RlLiBJbiB0aGlz IGNhc2UsIHVubGVzcyBob3N0MXggaXMgYmVoaW5kIGFuIElPTU1VCi0JICogYXMgd2VsbCBpdCB3 b24ndCBiZSBhYmxlIHRvIHByb2Nlc3MgYnVmZmVycyBhbGxvY2F0ZWQgYmV5b25kIHRoZQotCSAq IDMyLWJpdCBib3VuZGFyeS4KLQkgKgotCSAqIFRoZSBETUEgQVBJIHdpbGwgdXNlIGJvdW5jZSBi dWZmZXJzIGluIHRoaXMgY2FzZSwgc28gdGhhdCBjb3VsZAotCSAqIHBlcmhhcHMgc3RpbGwgYmUg bWFkZSB0byB3b3JrLCBldmVuIGlmIGxlc3MgZWZmaWNpZW50LCBidXQgdGhlcmUKLQkgKiBpcyBh bm90aGVyIGNhdGNoOiBpbiBvcmRlciB0byBwZXJmb3JtIGNhY2hlIG1haW50ZW5hbmNlIG9uIHBh Z2VzCi0JICogYWxsb2NhdGVkIGZvciBkaXNjb250aWd1b3VzIGJ1ZmZlcnMgd2UgbmVlZCB0byBt YXAgYW5kIHVubWFwIHRoZQotCSAqIFNHIHRhYmxlIHJlcHJlc2VudGluZyB0aGVzZSBidWZmZXJz LiBUaGlzIGlzIGZpbmUgZm9yIHNvbWV0aGluZwotCSAqIHNtYWxsIGxpa2UgYSBwdXNoIGJ1ZmZl ciwgYnV0IGl0IGV4aGF1c3RzIHRoZSBib3VuY2UgYnVmZmVyIHBvb2wKLQkgKiAodHlwaWNhbGx5 IG9uIHRoZSBvcmRlciBvZiBhIGZldyBNaUIpIGZvciBmcmFtZWJ1ZmZlcnMgKG1hbnkgTWlCCi0J ICogZm9yIGFueSBtb2Rlcm4gcmVzb2x1dGlvbikuCi0JICoKLQkgKiBXb3JrIGFyb3VuZCB0aGlz IGJ5IG1ha2luZyBzdXJlIHRoYXQgVGVncmEgRFJNIGNsaWVudHMgb25seSB1c2UKLQkgKiBhbiBJ T01NVSBpZiB0aGUgcGFyZW50IGhvc3QxeCBhbHNvIHVzZXMgYW4gSU9NTVUuCi0JICoKLQkgKiBO b3RlIHRoYXQgdGhlcmUncyBzdGlsbCBhIHNtYWxsIGdhcCBoZXJlIHRoYXQgd2UgZG9uJ3QgY292 ZXI6IGlmCi0JICogdGhlIERNQSBBUEkgaXMgYmFja2VkIGJ5IGFuIElPTU1VIHRoZXJlJ3Mgbm8g d2F5IHRvIGNvbnRyb2wgd2hpY2gKLQkgKiBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYW4gSU9NTVUg YW5kIHdoaWNoIGlzbid0LCBleGNlcHQgdmlhIHdpcmluZwotCSAqIHVwIHRoZSBkZXZpY2UgdHJl ZSBhcHByb3ByaWF0ZWx5LiBUaGlzIGlzIGNvbnNpZGVyZWQgYW4gcHJvYmxlbQotCSAqIG9mIGlu dGVncmF0aW9uLCBzbyBjYXJlIG11c3QgYmUgdGFrZW4gZm9yIHRoZSBEVCB0byBiZSBjb25zaXN0 ZW50LgotCSAqLwotCWRvbWFpbiA9IGlvbW11X2dldF9kb21haW5fZm9yX2Rldihkcm0tPmRldi0+ cGFyZW50KTsKLQotCWlmIChkb21haW4gJiYgaW9tbXVfcHJlc2VudCgmcGxhdGZvcm1fYnVzX3R5 cGUpKSB7Ci0JCXRlZ3JhLT5kb21haW4gPSBpb21tdV9kb21haW5fYWxsb2MoJnBsYXRmb3JtX2J1 c190eXBlKTsKLQkJaWYgKCF0ZWdyYS0+ZG9tYWluKSB7Ci0JCQllcnIgPSAtRU5PTUVNOwotCQkJ Z290byBmcmVlOwotCQl9Ci0KLQkJZXJyID0gaW92YV9jYWNoZV9nZXQoKTsKLQkJaWYgKGVyciA8 IDApCi0JCQlnb3RvIGRvbWFpbjsKLQl9Ci0KLQltdXRleF9pbml0KCZ0ZWdyYS0+Y2xpZW50c19s b2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmdGVncmEtPmNsaWVudHMpOwotCi0JZHJtLT5kZXZfcHJp dmF0ZSA9IHRlZ3JhOwotCXRlZ3JhLT5kcm0gPSBkcm07Ci0KLQlkcm1fbW9kZV9jb25maWdfaW5p dChkcm0pOwotCi0JZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOwotCWRybS0+bW9kZV9j b25maWcubWluX2hlaWdodCA9IDA7Ci0KLQlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDQw OTY7Ci0JZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKLQotCWRybS0+bW9kZV9j b25maWcuYWxsb3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKLQotCWRybS0+bW9kZV9jb25maWcubm9y bWFsaXplX3pwb3MgPSB0cnVlOwotCi0JZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZ0ZWdyYV9k cm1fbW9kZV9jb25maWdfZnVuY3M7Ci0JZHJtLT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9 ICZ0ZWdyYV9kcm1fbW9kZV9jb25maWdfaGVscGVyczsKLQotCWVyciA9IHRlZ3JhX2RybV9mYl9w cmVwYXJlKGRybSk7Ci0JaWYgKGVyciA8IDApCi0JCWdvdG8gY29uZmlnOwotCi0JZHJtX2ttc19o ZWxwZXJfcG9sbF9pbml0KGRybSk7Ci0KLQllcnIgPSBob3N0MXhfZGV2aWNlX2luaXQoZGV2aWNl KTsKLQlpZiAoZXJyIDwgMCkKLQkJZ290byBmYmRldjsKLQotCWlmICh0ZWdyYS0+Z3JvdXApIHsK LQkJdTY0IGNhcnZlb3V0X3N0YXJ0LCBjYXJ2ZW91dF9lbmQsIGdlbV9zdGFydCwgZ2VtX2VuZDsK LQkJdTY0IGRtYV9tYXNrID0gZG1hX2dldF9tYXNrKCZkZXZpY2UtPmRldik7Ci0JCWRtYV9hZGRy X3Qgc3RhcnQsIGVuZDsKLQkJdW5zaWduZWQgbG9uZyBvcmRlcjsKLQotCQlzdGFydCA9IHRlZ3Jh LT5kb21haW4tPmdlb21ldHJ5LmFwZXJ0dXJlX3N0YXJ0ICYgZG1hX21hc2s7Ci0JCWVuZCA9IHRl Z3JhLT5kb21haW4tPmdlb21ldHJ5LmFwZXJ0dXJlX2VuZCAmIGRtYV9tYXNrOwotCi0JCWdlbV9z dGFydCA9IHN0YXJ0OwotCQlnZW1fZW5kID0gZW5kIC0gQ0FSVkVPVVRfU1o7Ci0JCWNhcnZlb3V0 X3N0YXJ0ID0gZ2VtX2VuZCArIDE7Ci0JCWNhcnZlb3V0X2VuZCA9IGVuZDsKLQotCQlvcmRlciA9 IF9fZmZzKHRlZ3JhLT5kb21haW4tPnBnc2l6ZV9iaXRtYXApOwotCQlpbml0X2lvdmFfZG9tYWlu KCZ0ZWdyYS0+Y2FydmVvdXQuZG9tYWluLCAxVUwgPDwgb3JkZXIsCi0JCQkJIGNhcnZlb3V0X3N0 YXJ0ID4+IG9yZGVyKTsKLQotCQl0ZWdyYS0+Y2FydmVvdXQuc2hpZnQgPSBpb3ZhX3NoaWZ0KCZ0 ZWdyYS0+Y2FydmVvdXQuZG9tYWluKTsKLQkJdGVncmEtPmNhcnZlb3V0LmxpbWl0ID0gY2FydmVv dXRfZW5kID4+IHRlZ3JhLT5jYXJ2ZW91dC5zaGlmdDsKLQotCQlkcm1fbW1faW5pdCgmdGVncmEt Pm1tLCBnZW1fc3RhcnQsIGdlbV9lbmQgLSBnZW1fc3RhcnQgKyAxKTsKLQkJbXV0ZXhfaW5pdCgm dGVncmEtPm1tX2xvY2spOwotCi0JCURSTV9ERUJVR19EUklWRVIoIklPTU1VIGFwZXJ0dXJlczpc biIpOwotCQlEUk1fREVCVUdfRFJJVkVSKCIgIEdFTTogJSNsbHgtJSNsbHhcbiIsIGdlbV9zdGFy dCwgZ2VtX2VuZCk7Ci0JCURSTV9ERUJVR19EUklWRVIoIiAgQ2FydmVvdXQ6ICUjbGx4LSUjbGx4 XG4iLCBjYXJ2ZW91dF9zdGFydCwKLQkJCQkgY2FydmVvdXRfZW5kKTsKLQl9IGVsc2UgaWYgKHRl Z3JhLT5kb21haW4pIHsKLQkJaW9tbXVfZG9tYWluX2ZyZWUodGVncmEtPmRvbWFpbik7Ci0JCXRl Z3JhLT5kb21haW4gPSBOVUxMOwotCQlpb3ZhX2NhY2hlX3B1dCgpOwotCX0KLQotCWlmICh0ZWdy YS0+aHViKSB7Ci0JCWVyciA9IHRlZ3JhX2Rpc3BsYXlfaHViX3ByZXBhcmUodGVncmEtPmh1Yik7 Ci0JCWlmIChlcnIgPCAwKQotCQkJZ290byBkZXZpY2U7Ci0JfQotCi0JLyoKLQkgKiBXZSBkb24n dCB1c2UgdGhlIGRybV9pcnFfaW5zdGFsbCgpIGhlbHBlcnMgcHJvdmlkZWQgYnkgdGhlIERSTQot CSAqIGNvcmUsIHNvIHdlIG5lZWQgdG8gc2V0IHRoaXMgbWFudWFsbHkgaW4gb3JkZXIgdG8gYWxs b3cgdGhlCi0JICogRFJNX0lPQ1RMX1dBSVRfVkJMQU5LIHRvIG9wZXJhdGUgY29ycmVjdGx5Lgot CSAqLwotCWRybS0+aXJxX2VuYWJsZWQgPSB0cnVlOwotCi0JLyogc3luY3BvaW50cyBhcmUgdXNl ZCBmb3IgZnVsbCAzMi1iaXQgaGFyZHdhcmUgVkJMQU5LIGNvdW50ZXJzICovCi0JZHJtLT5tYXhf dmJsYW5rX2NvdW50ID0gMHhmZmZmZmZmZjsKLQotCWVyciA9IGRybV92YmxhbmtfaW5pdChkcm0s IGRybS0+bW9kZV9jb25maWcubnVtX2NydGMpOwotCWlmIChlcnIgPCAwKQotCQlnb3RvIGh1YjsK LQotCWRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOwotCi0JZXJyID0gdGVncmFfZHJtX2ZiX2lu aXQoZHJtKTsKLQlpZiAoZXJyIDwgMCkKLQkJZ290byBodWI7Ci0KLQlyZXR1cm4gMDsKLQotaHVi OgotCWlmICh0ZWdyYS0+aHViKQotCQl0ZWdyYV9kaXNwbGF5X2h1Yl9jbGVhbnVwKHRlZ3JhLT5o dWIpOwotZGV2aWNlOgotCWlmICh0ZWdyYS0+ZG9tYWluKSB7Ci0JCW11dGV4X2Rlc3Ryb3koJnRl Z3JhLT5tbV9sb2NrKTsKLQkJZHJtX21tX3Rha2Vkb3duKCZ0ZWdyYS0+bW0pOwotCQlwdXRfaW92 YV9kb21haW4oJnRlZ3JhLT5jYXJ2ZW91dC5kb21haW4pOwotCQlpb3ZhX2NhY2hlX3B1dCgpOwot CX0KLQotCWhvc3QxeF9kZXZpY2VfZXhpdChkZXZpY2UpOwotZmJkZXY6Ci0JZHJtX2ttc19oZWxw ZXJfcG9sbF9maW5pKGRybSk7Ci0JdGVncmFfZHJtX2ZiX2ZyZWUoZHJtKTsKLWNvbmZpZzoKLQlk cm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOwotZG9tYWluOgotCWlmICh0ZWdyYS0+ZG9tYWlu KQotCQlpb21tdV9kb21haW5fZnJlZSh0ZWdyYS0+ZG9tYWluKTsKLWZyZWU6Ci0Ja2ZyZWUodGVn cmEpOwotCXJldHVybiBlcnI7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlZ3JhX2RybV91bmxvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRybSkKLXsKLQlzdHJ1Y3QgaG9zdDF4X2RldmljZSAqZGV2aWNlID0g dG9faG9zdDF4X2RldmljZShkcm0tPmRldik7Ci0Jc3RydWN0IHRlZ3JhX2RybSAqdGVncmEgPSBk cm0tPmRldl9wcml2YXRlOwotCWludCBlcnI7Ci0KLQlkcm1fa21zX2hlbHBlcl9wb2xsX2Zpbmko ZHJtKTsKLQl0ZWdyYV9kcm1fZmJfZXhpdChkcm0pOwotCWRybV9hdG9taWNfaGVscGVyX3NodXRk b3duKGRybSk7Ci0JZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKLQotCWVyciA9IGhvc3Qx eF9kZXZpY2VfZXhpdChkZXZpY2UpOwotCWlmIChlcnIgPCAwKQotCQlyZXR1cm47Ci0KLQlpZiAo dGVncmEtPmRvbWFpbikgewotCQltdXRleF9kZXN0cm95KCZ0ZWdyYS0+bW1fbG9jayk7Ci0JCWRy bV9tbV90YWtlZG93bigmdGVncmEtPm1tKTsKLQkJcHV0X2lvdmFfZG9tYWluKCZ0ZWdyYS0+Y2Fy dmVvdXQuZG9tYWluKTsKLQkJaW92YV9jYWNoZV9wdXQoKTsKLQkJaW9tbXVfZG9tYWluX2ZyZWUo dGVncmEtPmRvbWFpbik7Ci0JfQotCi0Ja2ZyZWUodGVncmEpOwotfQotCiBzdGF0aWMgaW50IHRl Z3JhX2RybV9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBkcm1fZmlsZSAqZmls cCkKIHsKIAlzdHJ1Y3QgdGVncmFfZHJtX2ZpbGUgKmZwcml2OwpAQCAtMTA0Niw4ICs4NTAsNiBA QCBzdGF0aWMgaW50IHRlZ3JhX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikK IHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB0ZWdyYV9kcm1fZHJpdmVyID0gewogCS5kcml2ZXJf ZmVhdHVyZXMgPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfAogCQkJICAgRFJJVkVSX0FU T01JQyB8IERSSVZFUl9SRU5ERVIsCi0JLmxvYWQgPSB0ZWdyYV9kcm1fbG9hZCwKLQkudW5sb2Fk ID0gdGVncmFfZHJtX3VubG9hZCwKIAkub3BlbiA9IHRlZ3JhX2RybV9vcGVuLAogCS5wb3N0Y2xv c2UgPSB0ZWdyYV9kcm1fcG9zdGNsb3NlLAogCS5sYXN0Y2xvc2UgPSBkcm1fZmJfaGVscGVyX2xh c3RjbG9zZSwKQEAgLTEyMzEsNiArMTAzMyw4IEBAIHZvaWQgdGVncmFfZHJtX2ZyZWUoc3RydWN0 IHRlZ3JhX2RybSAqdGVncmEsIHNpemVfdCBzaXplLCB2b2lkICp2aXJ0LAogc3RhdGljIGludCBo b3N0MXhfZHJtX3Byb2JlKHN0cnVjdCBob3N0MXhfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRy bV9kcml2ZXIgKmRyaXZlciA9ICZ0ZWdyYV9kcm1fZHJpdmVyOworCXN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbjsKKwlzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYTsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtOwogCWludCBlcnI7CiAKQEAgLTEyMzgsMTggKzEwNDIsMTc5IEBAIHN0YXRpYyBpbnQg aG9zdDF4X2RybV9wcm9iZShzdHJ1Y3QgaG9zdDF4X2RldmljZSAqZGV2KQogCWlmIChJU19FUlIo ZHJtKSkKIAkJcmV0dXJuIFBUUl9FUlIoZHJtKTsKIAorCXRlZ3JhID0ga3phbGxvYyhzaXplb2Yo KnRlZ3JhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0ZWdyYSkgeworCQllcnIgPSAtRU5PTUVNOwor CQlnb3RvIHB1dDsKKwl9CisKKwkvKgorCSAqIElmIHRoZSBUZWdyYSBEUk0gY2xpZW50cyBhcmUg YmFja2VkIGJ5IGFuIElPTU1VLCBwdXNoIGJ1ZmZlcnMgYXJlCisJICogbGlrZWx5IHRvIGJlIGFs bG9jYXRlZCBiZXlvbmQgdGhlIDMyLWJpdCBib3VuZGFyeSBpZiBzdWZmaWNpZW50CisJICogc3lz dGVtIG1lbW9yeSBpcyBhdmFpbGFibGUuIFRoaXMgaXMgcHJvYmxlbWF0aWMgb24gZWFybGllciBU ZWdyYQorCSAqIGdlbmVyYXRpb25zIHdoZXJlIGhvc3QxeCBzdXBwb3J0cyBhIG1heGltdW0gb2Yg MzIgYWRkcmVzcyBiaXRzIGluCisJICogdGhlIEdBVEhFUiBvcGNvZGUuIEluIHRoaXMgY2FzZSwg dW5sZXNzIGhvc3QxeCBpcyBiZWhpbmQgYW4gSU9NTVUKKwkgKiBhcyB3ZWxsIGl0IHdvbid0IGJl IGFibGUgdG8gcHJvY2VzcyBidWZmZXJzIGFsbG9jYXRlZCBiZXlvbmQgdGhlCisJICogMzItYml0 IGJvdW5kYXJ5LgorCSAqCisJICogVGhlIERNQSBBUEkgd2lsbCB1c2UgYm91bmNlIGJ1ZmZlcnMg aW4gdGhpcyBjYXNlLCBzbyB0aGF0IGNvdWxkCisJICogcGVyaGFwcyBzdGlsbCBiZSBtYWRlIHRv IHdvcmssIGV2ZW4gaWYgbGVzcyBlZmZpY2llbnQsIGJ1dCB0aGVyZQorCSAqIGlzIGFub3RoZXIg Y2F0Y2g6IGluIG9yZGVyIHRvIHBlcmZvcm0gY2FjaGUgbWFpbnRlbmFuY2Ugb24gcGFnZXMKKwkg KiBhbGxvY2F0ZWQgZm9yIGRpc2NvbnRpZ3VvdXMgYnVmZmVycyB3ZSBuZWVkIHRvIG1hcCBhbmQg dW5tYXAgdGhlCisJICogU0cgdGFibGUgcmVwcmVzZW50aW5nIHRoZXNlIGJ1ZmZlcnMuIFRoaXMg aXMgZmluZSBmb3Igc29tZXRoaW5nCisJICogc21hbGwgbGlrZSBhIHB1c2ggYnVmZmVyLCBidXQg aXQgZXhoYXVzdHMgdGhlIGJvdW5jZSBidWZmZXIgcG9vbAorCSAqICh0eXBpY2FsbHkgb24gdGhl IG9yZGVyIG9mIGEgZmV3IE1pQikgZm9yIGZyYW1lYnVmZmVycyAobWFueSBNaUIKKwkgKiBmb3Ig YW55IG1vZGVybiByZXNvbHV0aW9uKS4KKwkgKgorCSAqIFdvcmsgYXJvdW5kIHRoaXMgYnkgbWFr aW5nIHN1cmUgdGhhdCBUZWdyYSBEUk0gY2xpZW50cyBvbmx5IHVzZQorCSAqIGFuIElPTU1VIGlm IHRoZSBwYXJlbnQgaG9zdDF4IGFsc28gdXNlcyBhbiBJT01NVS4KKwkgKgorCSAqIE5vdGUgdGhh dCB0aGVyZSdzIHN0aWxsIGEgc21hbGwgZ2FwIGhlcmUgdGhhdCB3ZSBkb24ndCBjb3ZlcjogaWYK KwkgKiB0aGUgRE1BIEFQSSBpcyBiYWNrZWQgYnkgYW4gSU9NTVUgdGhlcmUncyBubyB3YXkgdG8g Y29udHJvbCB3aGljaAorCSAqIGRldmljZSBpcyBhdHRhY2hlZCB0byBhbiBJT01NVSBhbmQgd2hp Y2ggaXNuJ3QsIGV4Y2VwdCB2aWEgd2lyaW5nCisJICogdXAgdGhlIGRldmljZSB0cmVlIGFwcHJv cHJpYXRlbHkuIFRoaXMgaXMgY29uc2lkZXJlZCBhbiBwcm9ibGVtCisJICogb2YgaW50ZWdyYXRp b24sIHNvIGNhcmUgbXVzdCBiZSB0YWtlbiBmb3IgdGhlIERUIHRvIGJlIGNvbnNpc3RlbnQuCisJ ICovCisJZG9tYWluID0gaW9tbXVfZ2V0X2RvbWFpbl9mb3JfZGV2KGRybS0+ZGV2LT5wYXJlbnQp OworCisJaWYgKGRvbWFpbiAmJiBpb21tdV9wcmVzZW50KCZwbGF0Zm9ybV9idXNfdHlwZSkpIHsK KwkJdGVncmEtPmRvbWFpbiA9IGlvbW11X2RvbWFpbl9hbGxvYygmcGxhdGZvcm1fYnVzX3R5cGUp OworCQlpZiAoIXRlZ3JhLT5kb21haW4pIHsKKwkJCWVyciA9IC1FTk9NRU07CisJCQlnb3RvIGZy ZWU7CisJCX0KKworCQllcnIgPSBpb3ZhX2NhY2hlX2dldCgpOworCQlpZiAoZXJyIDwgMCkKKwkJ CWdvdG8gZG9tYWluOworCX0KKworCW11dGV4X2luaXQoJnRlZ3JhLT5jbGllbnRzX2xvY2spOwor CUlOSVRfTElTVF9IRUFEKCZ0ZWdyYS0+Y2xpZW50cyk7CisKIAlkZXZfc2V0X2RydmRhdGEoJmRl di0+ZGV2LCBkcm0pOworCWRybS0+ZGV2X3ByaXZhdGUgPSB0ZWdyYTsKKwl0ZWdyYS0+ZHJtID0g ZHJtOworCisJZHJtX21vZGVfY29uZmlnX2luaXQoZHJtKTsKKworCWRybS0+bW9kZV9jb25maWcu bWluX3dpZHRoID0gMDsKKwlkcm0tPm1vZGVfY29uZmlnLm1pbl9oZWlnaHQgPSAwOworCisJZHJt LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSA0MDk2OworCWRybS0+bW9kZV9jb25maWcubWF4X2hl aWdodCA9IDQwOTY7CisKKwlkcm0tPm1vZGVfY29uZmlnLmFsbG93X2ZiX21vZGlmaWVycyA9IHRy dWU7CisKKwlkcm0tPm1vZGVfY29uZmlnLm5vcm1hbGl6ZV96cG9zID0gdHJ1ZTsKKworCWRybS0+ bW9kZV9jb25maWcuZnVuY3MgPSAmdGVncmFfZHJtX21vZGVfY29uZmlnX2Z1bmNzOworCWRybS0+ bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUgPSAmdGVncmFfZHJtX21vZGVfY29uZmlnX2hlbHBl cnM7CisKKwllcnIgPSB0ZWdyYV9kcm1fZmJfcHJlcGFyZShkcm0pOworCWlmIChlcnIgPCAwKQor CQlnb3RvIGNvbmZpZzsKKworCWRybV9rbXNfaGVscGVyX3BvbGxfaW5pdChkcm0pOworCisJZXJy ID0gaG9zdDF4X2RldmljZV9pbml0KGRldik7CisJaWYgKGVyciA8IDApCisJCWdvdG8gZmJkZXY7 CisKKwlpZiAodGVncmEtPmdyb3VwKSB7CisJCXU2NCBjYXJ2ZW91dF9zdGFydCwgY2FydmVvdXRf ZW5kLCBnZW1fc3RhcnQsIGdlbV9lbmQ7CisJCXU2NCBkbWFfbWFzayA9IGRtYV9nZXRfbWFzaygm ZGV2LT5kZXYpOworCQlkbWFfYWRkcl90IHN0YXJ0LCBlbmQ7CisJCXVuc2lnbmVkIGxvbmcgb3Jk ZXI7CisKKwkJc3RhcnQgPSB0ZWdyYS0+ZG9tYWluLT5nZW9tZXRyeS5hcGVydHVyZV9zdGFydCAm IGRtYV9tYXNrOworCQllbmQgPSB0ZWdyYS0+ZG9tYWluLT5nZW9tZXRyeS5hcGVydHVyZV9lbmQg JiBkbWFfbWFzazsKKworCQlnZW1fc3RhcnQgPSBzdGFydDsKKwkJZ2VtX2VuZCA9IGVuZCAtIENB UlZFT1VUX1NaOworCQljYXJ2ZW91dF9zdGFydCA9IGdlbV9lbmQgKyAxOworCQljYXJ2ZW91dF9l bmQgPSBlbmQ7CisKKwkJb3JkZXIgPSBfX2Zmcyh0ZWdyYS0+ZG9tYWluLT5wZ3NpemVfYml0bWFw KTsKKwkJaW5pdF9pb3ZhX2RvbWFpbigmdGVncmEtPmNhcnZlb3V0LmRvbWFpbiwgMVVMIDw8IG9y ZGVyLAorCQkJCSBjYXJ2ZW91dF9zdGFydCA+PiBvcmRlcik7CisKKwkJdGVncmEtPmNhcnZlb3V0 LnNoaWZ0ID0gaW92YV9zaGlmdCgmdGVncmEtPmNhcnZlb3V0LmRvbWFpbik7CisJCXRlZ3JhLT5j YXJ2ZW91dC5saW1pdCA9IGNhcnZlb3V0X2VuZCA+PiB0ZWdyYS0+Y2FydmVvdXQuc2hpZnQ7CisK KwkJZHJtX21tX2luaXQoJnRlZ3JhLT5tbSwgZ2VtX3N0YXJ0LCBnZW1fZW5kIC0gZ2VtX3N0YXJ0 ICsgMSk7CisJCW11dGV4X2luaXQoJnRlZ3JhLT5tbV9sb2NrKTsKKworCQlEUk1fREVCVUdfRFJJ VkVSKCJJT01NVSBhcGVydHVyZXM6XG4iKTsKKwkJRFJNX0RFQlVHX0RSSVZFUigiICBHRU06ICUj bGx4LSUjbGx4XG4iLCBnZW1fc3RhcnQsIGdlbV9lbmQpOworCQlEUk1fREVCVUdfRFJJVkVSKCIg IENhcnZlb3V0OiAlI2xseC0lI2xseFxuIiwgY2FydmVvdXRfc3RhcnQsCisJCQkJIGNhcnZlb3V0 X2VuZCk7CisJfSBlbHNlIGlmICh0ZWdyYS0+ZG9tYWluKSB7CisJCWlvbW11X2RvbWFpbl9mcmVl KHRlZ3JhLT5kb21haW4pOworCQl0ZWdyYS0+ZG9tYWluID0gTlVMTDsKKwkJaW92YV9jYWNoZV9w dXQoKTsKKwl9CisKKwlpZiAodGVncmEtPmh1YikgeworCQllcnIgPSB0ZWdyYV9kaXNwbGF5X2h1 Yl9wcmVwYXJlKHRlZ3JhLT5odWIpOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gZGV2aWNlOwor CX0KKworCS8qCisJICogV2UgZG9uJ3QgdXNlIHRoZSBkcm1faXJxX2luc3RhbGwoKSBoZWxwZXJz IHByb3ZpZGVkIGJ5IHRoZSBEUk0KKwkgKiBjb3JlLCBzbyB3ZSBuZWVkIHRvIHNldCB0aGlzIG1h bnVhbGx5IGluIG9yZGVyIHRvIGFsbG93IHRoZQorCSAqIERSTV9JT0NUTF9XQUlUX1ZCTEFOSyB0 byBvcGVyYXRlIGNvcnJlY3RseS4KKwkgKi8KKwlkcm0tPmlycV9lbmFibGVkID0gdHJ1ZTsKKwor CS8qIHN5bmNwb2ludHMgYXJlIHVzZWQgZm9yIGZ1bGwgMzItYml0IGhhcmR3YXJlIFZCTEFOSyBj b3VudGVycyAqLworCWRybS0+bWF4X3ZibGFua19jb3VudCA9IDB4ZmZmZmZmZmY7CisKKwllcnIg PSBkcm1fdmJsYW5rX2luaXQoZHJtLCBkcm0tPm1vZGVfY29uZmlnLm51bV9jcnRjKTsKKwlpZiAo ZXJyIDwgMCkKKwkJZ290byBodWI7CisKKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsKKwor CWVyciA9IHRlZ3JhX2RybV9mYl9pbml0KGRybSk7CisJaWYgKGVyciA8IDApCisJCWdvdG8gaHVi OwogCiAJZXJyID0gZHJtX2ZiX2hlbHBlcl9yZW1vdmVfY29uZmxpY3RpbmdfZnJhbWVidWZmZXJz KE5VTEwsICJ0ZWdyYWRybWZiIiwgZmFsc2UpOwogCWlmIChlcnIgPCAwKQotCQlnb3RvIHB1dDsK KwkJZ290byBmYjsKIAogCWVyciA9IGRybV9kZXZfcmVnaXN0ZXIoZHJtLCAwKTsKIAlpZiAoZXJy IDwgMCkKLQkJZ290byBwdXQ7CisJCWdvdG8gZmI7CiAKIAlyZXR1cm4gMDsKIAorZmI6CisJdGVn cmFfZHJtX2ZiX2V4aXQoZHJtKTsKK2h1YjoKKwlpZiAodGVncmEtPmh1YikKKwkJdGVncmFfZGlz cGxheV9odWJfY2xlYW51cCh0ZWdyYS0+aHViKTsKK2RldmljZToKKwlpZiAodGVncmEtPmRvbWFp bikgeworCQltdXRleF9kZXN0cm95KCZ0ZWdyYS0+bW1fbG9jayk7CisJCWRybV9tbV90YWtlZG93 bigmdGVncmEtPm1tKTsKKwkJcHV0X2lvdmFfZG9tYWluKCZ0ZWdyYS0+Y2FydmVvdXQuZG9tYWlu KTsKKwkJaW92YV9jYWNoZV9wdXQoKTsKKwl9CisKKwlob3N0MXhfZGV2aWNlX2V4aXQoZGV2KTsK K2ZiZGV2OgorCWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkcm0pOworCXRlZ3JhX2RybV9mYl9m cmVlKGRybSk7Citjb25maWc6CisJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKK2RvbWFp bjoKKwlpZiAodGVncmEtPmRvbWFpbikKKwkJaW9tbXVfZG9tYWluX2ZyZWUodGVncmEtPmRvbWFp bik7CitmcmVlOgorCWtmcmVlKHRlZ3JhKTsKIHB1dDoKIAlkcm1fZGV2X3B1dChkcm0pOwogCXJl dHVybiBlcnI7CkBAIC0xMjU4LDggKzEyMjMsMjkgQEAgc3RhdGljIGludCBob3N0MXhfZHJtX3By b2JlKHN0cnVjdCBob3N0MXhfZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IGhvc3QxeF9kcm1fcmVt b3ZlKHN0cnVjdCBob3N0MXhfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRy bSA9IGRldl9nZXRfZHJ2ZGF0YSgmZGV2LT5kZXYpOworCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3Jh ID0gZHJtLT5kZXZfcHJpdmF0ZTsKKwlpbnQgZXJyOwogCiAJZHJtX2Rldl91bnJlZ2lzdGVyKGRy bSk7CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtKTsKKwl0ZWdyYV9kcm1fZmJfZXhp dChkcm0pOworCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRybSk7CisJZHJtX21vZGVfY29u ZmlnX2NsZWFudXAoZHJtKTsKKworCWVyciA9IGhvc3QxeF9kZXZpY2VfZXhpdChkZXYpOworCWlm IChlcnIgPCAwKQorCQlkZXZfZXJyKCZkZXYtPmRldiwgImhvc3QxeCBkZXZpY2UgY2xlYW51cCBm YWlsZWQ6ICVkXG4iLCBlcnIpOworCisJaWYgKHRlZ3JhLT5kb21haW4pIHsKKwkJbXV0ZXhfZGVz dHJveSgmdGVncmEtPm1tX2xvY2spOworCQlkcm1fbW1fdGFrZWRvd24oJnRlZ3JhLT5tbSk7CisJ CXB1dF9pb3ZhX2RvbWFpbigmdGVncmEtPmNhcnZlb3V0LmRvbWFpbik7CisJCWlvdmFfY2FjaGVf cHV0KCk7CisJCWlvbW11X2RvbWFpbl9mcmVlKHRlZ3JhLT5kb21haW4pOworCX0KKworCWtmcmVl KHRlZ3JhKTsKIAlkcm1fZGV2X3B1dChkcm0pOwogCiAJcmV0dXJuIDA7Ci0tIAoyLjIzLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==