From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 1/9] drm: Extract drm_encoder.[hc] Date: Thu, 25 Aug 2016 17:53:51 +0530 Message-ID: <57BEE357.5050403@codeaurora.org> References: <1471467366-26444-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1471467366-26444-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , DRI Development Cc: Daniel Vetter , Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDgvMTgvMjAxNiAwMjoyNSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBTYW1l IHRyZWF0bWVudCBhcyBiZWZvcmUuIE9ubHkgaGljY3VwIGlzIGRybV9jcnRjX21hc2ssIHdoaWNo Cj4gdW5mb3J0dW5hdGVseSBjYW4ndCBiZSByZXNvbHZlZCB1bnRpbCBkcm1fY3J0Yy5oIGlzIGxl c3Mgb2YgYSBtb25zdGVyLgo+IFVudGFuZ2xlIHRoZSBoZWFkZXIgbG9vcCB3aXRoIGEgZm9yd2Fy ZCBkZWxjYXJhdGlvbiBmb3IgdGhhdCBzdGF0aWMKCnMvZGVsY2FyYXRpb24vZGVjbGFyYXRpb24K Cj4gaW5saW5lLgo+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBpbnRlbC5jb20+Cj4gLS0tCj4gICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCAgICAg ICB8ICAgOSArKwo+ICAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDMg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jICAgICAgICAgIHwgMTkzIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRl cm5hbC5oIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2VuY29kZXIuYyAgICAgICB8 IDIyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGluY2x1ZGUvZHJt L2RybV9jcnRjLmggICAgICAgICAgICAgIHwgMTM0ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg IGluY2x1ZGUvZHJtL2RybV9lbmNvZGVyLmggICAgICAgICAgIHwgMTY3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0aW9ucygrKSwgMzI5 IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1f ZW5jb2Rlci5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX2VuY29kZXIu aAo+Cgo8c25pcD4KCj4gKwo+ICsvKioKPiArICogZHJtX2VuY29kZXJfaW5pdCAtIEluaXQgYSBw cmVhbGxvY2F0ZWQgZW5jb2Rlcgo+ICsgKiBAZGV2OiBkcm0gZGV2aWNlCj4gKyAqIEBlbmNvZGVy OiB0aGUgZW5jb2RlciB0byBpbml0Cj4gKyAqIEBmdW5jczogY2FsbGJhY2tzIGZvciB0aGlzIGVu Y29kZXIKPiArICogQGVuY29kZXJfdHlwZTogdXNlciB2aXNpYmxlIHR5cGUgb2YgdGhlIGVuY29k ZXIKPiArICogQG5hbWU6IHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0aGUgZW5jb2Rl ciBuYW1lLCBvciBOVUxMIGZvciBkZWZhdWx0IG5hbWUKPiArICoKPiArICogSW5pdGlhbGlzZXMg YSBwcmVhbGxvY2F0ZWQgZW5jb2Rlci4gRW5jb2RlciBzaG91bGQgYmUKPiArICogc3ViY2xhc3Nl ZCBhcyBwYXJ0IG9mIGRyaXZlciBlbmNvZGVyIG9iamVjdHMuCj4gKyAqCj4gKyAqIFJldHVybnM6 Cj4gKyAqIFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr aW50IGRybV9lbmNvZGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkgICAgICBz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJICAgICAgY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2Z1bmNzICpmdW5jcywKPiArCQkgICAgICBpbnQgZW5jb2Rlcl90eXBlLCBjb25zdCBj aGFyICpuYW1lLCAuLi4pCgpBbGlnbm1lbnQgd2l0aCB0aGUgb3BlbiBwYXJlbnRoZXNlcyBpcyBu ZWVkZWQgaGVyZS4KCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9ja19h bGwoZGV2KTsKPiArCj4gKwlyZXQgPSBkcm1fbW9kZV9vYmplY3RfZ2V0KGRldiwgJmVuY29kZXIt PmJhc2UsIERSTV9NT0RFX09CSkVDVF9FTkNPREVSKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBv dXRfdW5sb2NrOwo+ICsKPiArCWVuY29kZXItPmRldiA9IGRldjsKPiArCWVuY29kZXItPmVuY29k ZXJfdHlwZSA9IGVuY29kZXJfdHlwZTsKPiArCWVuY29kZXItPmZ1bmNzID0gZnVuY3M7Cj4gKwlp ZiAobmFtZSkgewo+ICsJCXZhX2xpc3QgYXA7Cj4gKwo+ICsJCXZhX3N0YXJ0KGFwLCBuYW1lKTsK PiArCQllbmNvZGVyLT5uYW1lID0ga3Zhc3ByaW50ZihHRlBfS0VSTkVMLCBuYW1lLCBhcCk7Cj4g KwkJdmFfZW5kKGFwKTsKPiArCX0gZWxzZSB7Cj4gKwkJZW5jb2Rlci0+bmFtZSA9IGthc3ByaW50 ZihHRlBfS0VSTkVMLCAiJXMtJWQiLAo+ICsJCQkJCSAgZHJtX2VuY29kZXJfZW51bV9saXN0W2Vu Y29kZXJfdHlwZV0ubmFtZSwKPiArCQkJCQkgIGVuY29kZXItPmJhc2UuaWQpOwo+ICsJfQo+ICsJ aWYgKCFlbmNvZGVyLT5uYW1lKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIG91dF9w dXQ7Cj4gKwl9Cj4gKwo+ICsJbGlzdF9hZGRfdGFpbCgmZW5jb2Rlci0+aGVhZCwgJmRldi0+bW9k ZV9jb25maWcuZW5jb2Rlcl9saXN0KTsKPiArCWVuY29kZXItPmluZGV4ID0gZGV2LT5tb2RlX2Nv bmZpZy5udW1fZW5jb2RlcisrOwo+ICsKPiArb3V0X3B1dDoKPiArCWlmIChyZXQpCj4gKwkJZHJt X21vZGVfb2JqZWN0X3VucmVnaXN0ZXIoZGV2LCAmZW5jb2Rlci0+YmFzZSk7Cj4gKwo+ICtvdXRf dW5sb2NrOgo+ICsJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ICsKPiArCXJldHVybiBy ZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZW5jb2Rlcl9pbml0KTsKPiArCj4gKy8qKgo+ ICsgKiBkcm1fZW5jb2Rlcl9jbGVhbnVwIC0gY2xlYW5zIHVwIGFuIGluaXRpYWxpc2VkIGVuY29k ZXIKPiArICogQGVuY29kZXI6IGVuY29kZXIgdG8gY2xlYW51cAo+ICsgKgo+ICsgKiBDbGVhbnMg dXAgdGhlIGVuY29kZXIgYnV0IGRvZXNuJ3QgZnJlZSB0aGUgb2JqZWN0Lgo+ICsgKi8KPiArdm9p ZCBkcm1fZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiArewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiArCj4gKwkvKiBOb3Rl IHRoYXQgdGhlIGVuY29kZXJfbGlzdCBpcyBjb25zaWRlcmVkIHRvIGJlIHN0YXRpYzsgc2hvdWxk IHdlCj4gKwkgKiByZW1vdmUgdGhlIGRybV9lbmNvZGVyIGF0IHJ1bnRpbWUgd2Ugd291bGQgaGF2 ZSB0byBkZWNyZW1lbnQgYWxsCj4gKwkgKiB0aGUgaW5kaWNlcyBvbiB0aGUgZHJtX2VuY29kZXIg YWZ0ZXIgdXMgaW4gdGhlIGVuY29kZXJfbGlzdC4KPiArCSAqLwo+ICsKPiArCWRybV9tb2Rlc2V0 X2xvY2tfYWxsKGRldik7Cj4gKwlkcm1fbW9kZV9vYmplY3RfdW5yZWdpc3RlcihkZXYsICZlbmNv ZGVyLT5iYXNlKTsKPiArCWtmcmVlKGVuY29kZXItPm5hbWUpOwo+ICsJbGlzdF9kZWwoJmVuY29k ZXItPmhlYWQpOwo+ICsJZGV2LT5tb2RlX2NvbmZpZy5udW1fZW5jb2Rlci0tOwo+ICsJZHJtX21v ZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ICsKPiArCW1lbXNldChlbmNvZGVyLCAwLCBzaXplb2Yo KmVuY29kZXIpKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9lbmNvZGVyX2NsZWFudXApOwo+ ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqZHJtX2VuY29kZXJfZ2V0X2NydGMoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiArCWJv b2wgdXNlc19hdG9taWMgPSBmYWxzZTsKPiArCj4gKwkvKiBGb3IgYXRvbWljIGRyaXZlcnMgb25s eSBzdGF0ZSBvYmplY3RzIGFyZSBzeW5jaHJvbm91c2x5IHVwZGF0ZWQgYW5kCj4gKwkgKiBwcm90 ZWN0ZWQgYnkgbW9kZXNldCBsb2Nrcywgc28gY2hlY2sgdGhvc2UgZmlyc3QuICovCj4gKwlkcm1f Zm9yX2VhY2hfY29ubmVjdG9yKGNvbm5lY3RvciwgZGV2KSB7Cj4gKwkJaWYgKCFjb25uZWN0b3It PnN0YXRlKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJdXNlc19hdG9taWMgPSB0cnVlOwo+ICsK PiArCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlyZXR1cm4gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPiArCX0K PiArCj4gKwkvKiBEb24ndCByZXR1cm4gc3RhbGUgZGF0YSAoZS5nLiBwZW5kaW5nIGFzeW5jIGRp c2FibGUpLiAqLwo+ICsJaWYgKHVzZXNfYXRvbWljKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiAr CXJldHVybiBlbmNvZGVyLT5jcnRjOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX21vZGVfZ2V0 ZW5jb2RlciAtIGdldCBlbmNvZGVyIGNvbmZpZ3VyYXRpb24KPiArICogQGRldjogZHJtIGRldmlj ZSBmb3IgdGhlIGlvY3RsCj4gKyAqIEBkYXRhOiBkYXRhIHBvaW50ZXIgZm9yIHRoZSBpb2N0bAo+ ICsgKiBAZmlsZV9wcml2OiBkcm0gZmlsZSBmb3IgdGhlIGlvY3RsIGNhbGwKPiArICoKPiArICog Q29uc3RydWN0IGEgZW5jb2RlciBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byByZXR1cm4gdG8g dGhlIHVzZXIuCj4gKyAqCj4gKyAqIENhbGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwuCj4gKyAq Cj4gKyAqIFJldHVybnM6Cj4gKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24g ZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fbW9kZV9nZXRlbmNvZGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfZ2V0X2VuY29kZXIgKmVuY19yZXNwID0gZGF0YTsKPiAr CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK PiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkp Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZW5jb2RlciA9IGRybV9lbmNvZGVyX2ZpbmQo ZGV2LCBlbmNfcmVzcC0+ZW5jb2Rlcl9pZCk7Cj4gKwlpZiAoIWVuY29kZXIpCj4gKwkJcmV0dXJu IC1FTk9FTlQ7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25u ZWN0aW9uX211dGV4LCBOVUxMKTsKPiArCWNydGMgPSBkcm1fZW5jb2Rlcl9nZXRfY3J0YyhlbmNv ZGVyKTsKPiArCWlmIChjcnRjKQo+ICsJCWVuY19yZXNwLT5jcnRjX2lkID0gY3J0Yy0+YmFzZS5p ZDsKPiArCWVsc2UKPiArCQllbmNfcmVzcC0+Y3J0Y19pZCA9IDA7Cj4gKwlkcm1fbW9kZXNldF91 bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gKwo+ICsJZW5jX3Jl c3AtPmVuY29kZXJfdHlwZSA9IGVuY29kZXItPmVuY29kZXJfdHlwZTsKPiArCWVuY19yZXNwLT5l bmNvZGVyX2lkID0gZW5jb2Rlci0+YmFzZS5pZDsKPiArCWVuY19yZXNwLT5wb3NzaWJsZV9jcnRj cyA9IGVuY29kZXItPnBvc3NpYmxlX2NydGNzOwo+ICsJZW5jX3Jlc3AtPnBvc3NpYmxlX2Nsb25l cyA9IGVuY29kZXItPnBvc3NpYmxlX2Nsb25lczsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMu aAo+IGluZGV4IDNmYTAyNzVlNTA5Zi4uNjFkODFmYjNjOGZjIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9jcnRjLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTQw LDYgKzQwLDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vZHJtX2ZyYW1lYnVmZmVyLmg+Cj4gICAjaW5j bHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ICAgI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+ Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPgo+ICAgc3RydWN0IGRybV9kZXZpY2U7 Cj4gICBzdHJ1Y3QgZHJtX21vZGVfc2V0Owo+IEBAIC02NjIsOTcgKzY2Myw2IEBAIHN0cnVjdCBk cm1fY3J0YyB7Cj4gICB9Owo+Cj4gICAvKioKPiAtICogc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNz IC0gZW5jb2RlciBjb250cm9scwo+IC0gKgo+IC0gKiBFbmNvZGVycyBzaXQgYmV0d2VlbiBDUlRD cyBhbmQgY29ubmVjdG9ycy4KPiAtICovCj4gLXN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyB7Cj4g LQkvKioKPiAtCSAqIEByZXNldDoKPiAtCSAqCj4gLQkgKiBSZXNldCBlbmNvZGVyIGhhcmR3YXJl IGFuZCBzb2Z0d2FyZSBzdGF0ZSB0byBvZmYuIFRoaXMgZnVuY3Rpb24gaXNuJ3QKPiAtCSAqIGNh bGxlZCBieSB0aGUgY29yZSBkaXJlY3RseSwgb25seSB0aHJvdWdoIGRybV9tb2RlX2NvbmZpZ19y ZXNldCgpLgo+IC0JICogSXQncyBub3QgYSBoZWxwZXIgaG9vayBvbmx5IGZvciBoaXN0b3JpY2Fs IHJlYXNvbnMuCj4gLQkgKi8KPiAtCXZvaWQgKCpyZXNldCkoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKTsKPiAtCj4gLQkvKioKPiAtCSAqIEBkZXN0cm95Ogo+IC0JICoKPiAtCSAqIENsZWFu IHVwIGVuY29kZXIgcmVzb3VyY2VzLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGF0IGRyaXZlciB1bmxv YWQgdGltZQo+IC0JICogdGhyb3VnaCBkcm1fbW9kZV9jb25maWdfY2xlYW51cCgpIHNpbmNlIGFu IGVuY29kZXIgY2Fubm90IGJlCj4gLQkgKiBob3RwbHVnZ2VkIGluIERSTS4KPiAtCSAqLwo+IC0J dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gLQo+IC0JLyoq Cj4gLQkgKiBAbGF0ZV9yZWdpc3RlcjoKPiAtCSAqCj4gLQkgKiBUaGlzIG9wdGlvbmFsIGhvb2sg Y2FuIGJlIHVzZWQgdG8gcmVnaXN0ZXIgYWRkaXRpb25hbCB1c2Vyc3BhY2UKPiAtCSAqIGludGVy ZmFjZXMgYXR0YWNoZWQgdG8gdGhlIGVuY29kZXIgbGlrZSBkZWJ1Z2ZzIGludGVyZmFjZXMuCj4g LQkgKiBJdCBpcyBjYWxsZWQgbGF0ZSBpbiB0aGUgZHJpdmVyIGxvYWQgc2VxdWVuY2UgZnJvbSBk cm1fZGV2X3JlZ2lzdGVyKCkuCj4gLQkgKiBFdmVyeXRoaW5nIGFkZGVkIGZyb20gdGhpcyBjYWxs YmFjayBzaG91bGQgYmUgdW5yZWdpc3RlcmVkIGluCj4gLQkgKiB0aGUgZWFybHlfdW5yZWdpc3Rl ciBjYWxsYmFjay4KPiAtCSAqCj4gLQkgKiBSZXR1cm5zOgo+IC0JICoKPiAtCSAqIDAgb24gc3Vj Y2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gLQkgKi8KPiAtCWlu dCAoKmxhdGVfcmVnaXN0ZXIpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gLQo+IC0J LyoqCj4gLQkgKiBAZWFybHlfdW5yZWdpc3RlcjoKPiAtCSAqCj4gLQkgKiBUaGlzIG9wdGlvbmFs IGhvb2sgc2hvdWxkIGJlIHVzZWQgdG8gdW5yZWdpc3RlciB0aGUgYWRkaXRpb25hbAo+IC0JICog dXNlcnNwYWNlIGludGVyZmFjZXMgYXR0YWNoZWQgdG8gdGhlIGVuY29kZXIgZnJvbQo+IC0JICog bGF0ZV91bnJlZ2lzdGVyKCkuIEl0IGlzIGNhbGxlZCBmcm9tIGRybV9kZXZfdW5yZWdpc3Rlcigp LAo+IC0JICogZWFybHkgaW4gdGhlIGRyaXZlciB1bmxvYWQgc2VxdWVuY2UgdG8gZGlzYWJsZSB1 c2Vyc3BhY2UgYWNjZXNzCj4gLQkgKiBiZWZvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB0b3JuZG93 bi4KPiAtCSAqLwo+IC0Jdm9pZCAoKmVhcmx5X3VucmVnaXN0ZXIpKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2Rlcik7Cj4gLX07Cj4gLQo+IC0vKioKPiAtICogc3RydWN0IGRybV9lbmNvZGVyIC0g Y2VudHJhbCBEUk0gZW5jb2RlciBzdHJ1Y3R1cmUKPiAtICogQGRldjogcGFyZW50IERSTSBkZXZp Y2UKPiAtICogQGhlYWQ6IGxpc3QgbWFuYWdlbWVudAo+IC0gKiBAYmFzZTogYmFzZSBLTVMgb2Jq ZWN0Cj4gLSAqIEBuYW1lOiBodW1hbiByZWFkYWJsZSBuYW1lLCBjYW4gYmUgb3ZlcndyaXR0ZW4g YnkgdGhlIGRyaXZlcgo+IC0gKiBAZW5jb2Rlcl90eXBlOiBvbmUgb2YgdGhlIERSTV9NT0RFX0VO Q09ERVJfPGZvbz4gdHlwZXMgaW4gZHJtX21vZGUuaAo+IC0gKiBAcG9zc2libGVfY3J0Y3M6IGJp dG1hc2sgb2YgcG90ZW50aWFsIENSVEMgYmluZGluZ3MKPiAtICogQHBvc3NpYmxlX2Nsb25lczog Yml0bWFzayBvZiBwb3RlbnRpYWwgc2libGluZyBlbmNvZGVycyBmb3IgY2xvbmluZwo+IC0gKiBA Y3J0YzogY3VycmVudGx5IGJvdW5kIENSVEMKPiAtICogQGJyaWRnZTogYnJpZGdlIGFzc29jaWF0 ZWQgdG8gdGhlIGVuY29kZXIKPiAtICogQGZ1bmNzOiBjb250cm9sIGZ1bmN0aW9ucwo+IC0gKiBA aGVscGVyX3ByaXZhdGU6IG1pZC1sYXllciBwcml2YXRlIGRhdGEKPiAtICoKPiAtICogQ1JUQ3Mg ZHJpdmUgcGl4ZWxzIHRvIGVuY29kZXJzLCB3aGljaCBjb252ZXJ0IHRoZW0gaW50byBzaWduYWxz Cj4gLSAqIGFwcHJvcHJpYXRlIGZvciBhIGdpdmVuIGNvbm5lY3RvciBvciBzZXQgb2YgY29ubmVj dG9ycy4KPiAtICovCj4gLXN0cnVjdCBkcm1fZW5jb2RlciB7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2Owo+IC0Jc3RydWN0IGxpc3RfaGVhZCBoZWFkOwo+IC0KPiAtCXN0cnVjdCBkcm1fbW9k ZV9vYmplY3QgYmFzZTsKPiAtCWNoYXIgKm5hbWU7Cj4gLQlpbnQgZW5jb2Rlcl90eXBlOwo+IC0K PiAtCS8qKgo+IC0JICogQGluZGV4OiBQb3NpdGlvbiBpbnNpZGUgdGhlIG1vZGVfY29uZmlnLmxp c3QsIGNhbiBiZSB1c2VkIGFzIGFuIGFycmF5Cj4gLQkgKiBpbmRleC4gSXQgaXMgaW52YXJpYW50 IG92ZXIgdGhlIGxpZmV0aW1lIG9mIHRoZSBlbmNvZGVyLgo+IC0JICovCj4gLQl1bnNpZ25lZCBp bmRleDsKPiAtCj4gLQl1aW50MzJfdCBwb3NzaWJsZV9jcnRjczsKPiAtCXVpbnQzMl90IHBvc3Np YmxlX2Nsb25lczsKPiAtCj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlOwo+IC0JY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzICpmdW5j czsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmhlbHBlcl9wcml2 YXRlOwo+IC19Owo+IC0KPiAtLyoqCj4gICAgKiBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIC0gbXV0 YWJsZSBwbGFuZSBzdGF0ZQo+ICAgICogQHBsYW5lOiBiYWNrcG9pbnRlciB0byB0aGUgcGxhbmUK PiAgICAqIEBjcnRjOiBjdXJyZW50bHkgYm91bmQgQ1JUQywgTlVMTCBpZiBkaXNhYmxlZAo+IEBA IC0yMDkxLDcgKzIwMDEsNiBAQCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnIHsKPiAgIAkJZm9yX2Vh Y2hfaWYgKChlbmNvZGVyX21hc2spICYgKDEgPDwgZHJtX2VuY29kZXJfaW5kZXgoZW5jb2Rlcikp KQo+Cj4gICAjZGVmaW5lIG9ial90b19jcnRjKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJt X2NydGMsIGJhc2UpCj4gLSNkZWZpbmUgb2JqX3RvX2VuY29kZXIoeCkgY29udGFpbmVyX29mKHgs IHN0cnVjdCBkcm1fZW5jb2RlciwgYmFzZSkKPiAgICNkZWZpbmUgb2JqX3RvX21vZGUoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlLCBiYXNlKQo+ICAgI2RlZmluZSBv YmpfdG9fZmIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIsIGJhc2Up Cj4gICAjZGVmaW5lIG9ial90b19wcm9wZXJ0eSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRy bV9wcm9wZXJ0eSwgYmFzZSkKPiBAQCAtMjEzNiwzNyArMjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUg dWludDMyX3QgZHJtX2NydGNfbWFzayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICAJcmV0dXJu IDEgPDwgZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gICB9Cj4KPiAtZXh0ZXJuIF9fcHJpbnRmKDUs IDYpCj4gLWludCBkcm1fZW5jb2Rlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJ ICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gLQkJICAgICBjb25zdCBzdHJ1Y3Qg ZHJtX2VuY29kZXJfZnVuY3MgKmZ1bmNzLAo+IC0JCSAgICAgaW50IGVuY29kZXJfdHlwZSwgY29u c3QgY2hhciAqbmFtZSwgLi4uKTsKPiAtCj4gLS8qKgo+IC0gKiBkcm1fZW5jb2Rlcl9pbmRleCAt IGZpbmQgdGhlIGluZGV4IG9mIGEgcmVnaXN0ZXJlZCBlbmNvZGVyCj4gLSAqIEBlbmNvZGVyOiBl bmNvZGVyIHRvIGZpbmQgaW5kZXggZm9yCj4gLSAqCj4gLSAqIEdpdmVuIGEgcmVnaXN0ZXJlZCBl bmNvZGVyLCByZXR1cm4gdGhlIGluZGV4IG9mIHRoYXQgZW5jb2RlciB3aXRoaW4gYSBEUk0KPiAt ICogZGV2aWNlJ3MgbGlzdCBvZiBlbmNvZGVycy4KPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IGRybV9lbmNvZGVyX2luZGV4KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikK PiAtewo+IC0JcmV0dXJuIGVuY29kZXItPmluZGV4Owo+IC19Cj4gLQo+IC0vKioKPiAtICogZHJt X2VuY29kZXJfY3J0Y19vayAtIGNhbiBhIGdpdmVuIGNydGMgZHJpdmUgYSBnaXZlbiBlbmNvZGVy Pwo+IC0gKiBAZW5jb2RlcjogZW5jb2RlciB0byB0ZXN0Cj4gLSAqIEBjcnRjOiBjcnRjIHRvIHRl c3QKPiAtICoKPiAtICogUmV0dXJuIGZhbHNlIGlmIEBlbmNvZGVyIGNhbid0IGJlIGRyaXZlbiBi eSBAY3J0YywgdHJ1ZSBvdGhlcndpc2UuCj4gLSAqLwo+IC1zdGF0aWMgaW5saW5lIGJvb2wgZHJt X2VuY29kZXJfY3J0Y19vayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gLQkJCQkgICAg ICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+IC17Cj4gLQlyZXR1cm4gISEoZW5jb2Rlci0+cG9z c2libGVfY3J0Y3MgJiBkcm1fY3J0Y19tYXNrKGNydGMpKTsKPiAtfQo+IC0KPiAgIGV4dGVybiBf X3ByaW50Zig4LCA5KQo+ICAgaW50IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAgCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiBAQCAt MjIwMiw4ICsyMDgwLDYgQEAgZXh0ZXJuIHZvaWQgZHJtX2NydGNfZ2V0X2h2X3RpbWluZyhjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgIGV4dGVybiBpbnQgZHJtX2NydGNf Zm9yY2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICAgZXh0ZXJuIGludCBkcm1f Y3J0Y19mb3JjZV9kaXNhYmxlX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+IC1leHRl cm4gdm9pZCBkcm1fZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7 Cj4gLQo+ICAgZXh0ZXJuIHZvaWQgZHJtX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gICBleHRlcm4gdm9pZCBkcm1fbW9kZV9jb25maWdfcmVzZXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gICBleHRlcm4gdm9pZCBkcm1fbW9kZV9jb25maWdfY2xlYW51cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiBAQCAtMjMxNSwxNCArMjE5MSw2IEBAIHN0YXRpYyBp bmxpbmUgc3RydWN0IGRybV9jcnRjICpkcm1fY3J0Y19maW5kKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gICAJcmV0dXJuIG1vID8gb2JqX3RvX2NydGMobW8pIDogTlVMTDsKPiAgIH0KPgo+IC1z dGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuY29kZXJfZmluZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+IC0JdWludDMyX3QgaWQpCj4gLXsKPiAtCXN0cnVjdCBkcm1fbW9k ZV9vYmplY3QgKm1vOwo+IC0JbW8gPSBkcm1fbW9kZV9vYmplY3RfZmluZChkZXYsIGlkLCBEUk1f TU9ERV9PQkpFQ1RfRU5DT0RFUik7Cj4gLQlyZXR1cm4gbW8gPyBvYmpfdG9fZW5jb2Rlcihtbykg OiBOVUxMOwo+IC19Cj4gLQo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpk cm1fcHJvcGVydHlfZmluZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQl1aW50MzJfdCBp ZCkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2VuY29kZXIuaCBiL2luY2x1 ZGUvZHJtL2RybV9lbmNvZGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAwMDAwMC4uMjcxMmZkMWE2ODZiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9lbmNvZGVyLmgKPiBAQCAtMCwwICsxLDE2NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiB0byB1c2Us IGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRz Cj4gKyAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdp dGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0Cj4gKyAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQKPiArICog bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRv Y3VtZW50YXRpb24sIGFuZAo+ICsgKiB0aGF0IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9s ZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvcgo+ICsgKiBwdWJsaWNpdHkgcGVydGFp bmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCj4g KyAqIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBtYWtl IG5vIHJlcHJlc2VudGF0aW9ucwo+ICsgKiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBz b2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMKPiArICogaXMiIHdp dGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Lgo+ICsgKgo+ICsgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBT T0ZUV0FSRSwKPiArICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwo+ICsgKiBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKPiArICog Q09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5H IEZST00gTE9TUyBPRiBVU0UsCj4gKyAqIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKPiArICogVE9SVElPVVMgQUNU SU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJG T1JNQU5DRQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19E Uk1fRU5DT0RFUl9IX18KPiArI2RlZmluZSBfX0RSTV9FTkNPREVSX0hfXwo+ICsKPiArI2luY2x1 ZGUgPGxpbnV4L2xpc3QuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX21vZGVzZXQuaD4KPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2VuY29kZXJf ZnVuY3MgLSBlbmNvZGVyIGNvbnRyb2xzCj4gKyAqCj4gKyAqIEVuY29kZXJzIHNpdCBiZXR3ZWVu IENSVENzIGFuZCBjb25uZWN0b3JzLgo+ICsgKi8KPiArc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNz IHsKPiArCS8qKgo+ICsJICogQHJlc2V0Ogo+ICsJICoKPiArCSAqIFJlc2V0IGVuY29kZXIgaGFy ZHdhcmUgYW5kIHNvZnR3YXJlIHN0YXRlIHRvIG9mZi4gVGhpcyBmdW5jdGlvbiBpc24ndAo+ICsJ ICogY2FsbGVkIGJ5IHRoZSBjb3JlIGRpcmVjdGx5LCBvbmx5IHRocm91Z2ggZHJtX21vZGVfY29u ZmlnX3Jlc2V0KCkuCj4gKwkgKiBJdCdzIG5vdCBhIGhlbHBlciBob29rIG9ubHkgZm9yIGhpc3Rv cmljYWwgcmVhc29ucy4KPiArCSAqLwo+ICsJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpOwo+ICsKPiArCS8qKgo+ICsJICogQGRlc3Ryb3k6Cj4gKwkgKgo+ICsJICog Q2xlYW4gdXAgZW5jb2RlciByZXNvdXJjZXMuIFRoaXMgaXMgb25seSBjYWxsZWQgYXQgZHJpdmVy IHVubG9hZCB0aW1lCj4gKwkgKiB0aHJvdWdoIGRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKCkgc2lu Y2UgYW4gZW5jb2RlciBjYW5ub3QgYmUKPiArCSAqIGhvdHBsdWdnZWQgaW4gRFJNLgo+ICsJICov Cj4gKwl2b2lkICgqZGVzdHJveSkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiArCj4g KwkvKioKPiArCSAqIEBsYXRlX3JlZ2lzdGVyOgo+ICsJICoKPiArCSAqIFRoaXMgb3B0aW9uYWwg aG9vayBjYW4gYmUgdXNlZCB0byByZWdpc3RlciBhZGRpdGlvbmFsIHVzZXJzcGFjZQo+ICsJICog aW50ZXJmYWNlcyBhdHRhY2hlZCB0byB0aGUgZW5jb2RlciBsaWtlIGRlYnVnZnMgaW50ZXJmYWNl cy4KPiArCSAqIEl0IGlzIGNhbGxlZCBsYXRlIGluIHRoZSBkcml2ZXIgbG9hZCBzZXF1ZW5jZSBm cm9tIGRybV9kZXZfcmVnaXN0ZXIoKS4KPiArCSAqIEV2ZXJ5dGhpbmcgYWRkZWQgZnJvbSB0aGlz IGNhbGxiYWNrIHNob3VsZCBiZSB1bnJlZ2lzdGVyZWQgaW4KPiArCSAqIHRoZSBlYXJseV91bnJl Z2lzdGVyIGNhbGxiYWNrLgo+ICsJICoKPiArCSAqIFJldHVybnM6Cj4gKwkgKgo+ICsJICogMCBv biBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArCSAqLwo+ ICsJaW50ICgqbGF0ZV9yZWdpc3Rlcikoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiAr Cj4gKwkvKioKPiArCSAqIEBlYXJseV91bnJlZ2lzdGVyOgo+ICsJICoKPiArCSAqIFRoaXMgb3B0 aW9uYWwgaG9vayBzaG91bGQgYmUgdXNlZCB0byB1bnJlZ2lzdGVyIHRoZSBhZGRpdGlvbmFsCj4g KwkgKiB1c2Vyc3BhY2UgaW50ZXJmYWNlcyBhdHRhY2hlZCB0byB0aGUgZW5jb2RlciBmcm9tCj4g KwkgKiBsYXRlX3VucmVnaXN0ZXIoKS4gSXQgaXMgY2FsbGVkIGZyb20gZHJtX2Rldl91bnJlZ2lz dGVyKCksCj4gKwkgKiBlYXJseSBpbiB0aGUgZHJpdmVyIHVubG9hZCBzZXF1ZW5jZSB0byBkaXNh YmxlIHVzZXJzcGFjZSBhY2Nlc3MKPiArCSAqIGJlZm9yZSBkYXRhIHN0cnVjdHVyZXMgYXJlIHRv cm5kb3duLgo+ICsJICovCj4gKwl2b2lkICgqZWFybHlfdW5yZWdpc3Rlcikoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKTsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2VuY29k ZXIgLSBjZW50cmFsIERSTSBlbmNvZGVyIHN0cnVjdHVyZQo+ICsgKiBAZGV2OiBwYXJlbnQgRFJN IGRldmljZQo+ICsgKiBAaGVhZDogbGlzdCBtYW5hZ2VtZW50Cj4gKyAqIEBiYXNlOiBiYXNlIEtN UyBvYmplY3QKPiArICogQG5hbWU6IGh1bWFuIHJlYWRhYmxlIG5hbWUsIGNhbiBiZSBvdmVyd3Jp dHRlbiBieSB0aGUgZHJpdmVyCj4gKyAqIEBlbmNvZGVyX3R5cGU6IG9uZSBvZiB0aGUgRFJNX01P REVfRU5DT0RFUl88Zm9vPiB0eXBlcyBpbiBkcm1fbW9kZS5oCj4gKyAqIEBwb3NzaWJsZV9jcnRj czogYml0bWFzayBvZiBwb3RlbnRpYWwgQ1JUQyBiaW5kaW5ncwo+ICsgKiBAcG9zc2libGVfY2xv bmVzOiBiaXRtYXNrIG9mIHBvdGVudGlhbCBzaWJsaW5nIGVuY29kZXJzIGZvciBjbG9uaW5nCj4g KyAqIEBjcnRjOiBjdXJyZW50bHkgYm91bmQgQ1JUQwo+ICsgKiBAYnJpZGdlOiBicmlkZ2UgYXNz b2NpYXRlZCB0byB0aGUgZW5jb2Rlcgo+ICsgKiBAZnVuY3M6IGNvbnRyb2wgZnVuY3Rpb25zCj4g KyAqIEBoZWxwZXJfcHJpdmF0ZTogbWlkLWxheWVyIHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKiBD UlRDcyBkcml2ZSBwaXhlbHMgdG8gZW5jb2RlcnMsIHdoaWNoIGNvbnZlcnQgdGhlbSBpbnRvIHNp Z25hbHMKPiArICogYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gY29ubmVjdG9yIG9yIHNldCBvZiBj b25uZWN0b3JzLgo+ICsgKi8KPiArc3RydWN0IGRybV9lbmNvZGVyIHsKPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7Cj4gKwo+ICsJc3RydWN0IGRy bV9tb2RlX29iamVjdCBiYXNlOwo+ICsJY2hhciAqbmFtZTsKPiArCWludCBlbmNvZGVyX3R5cGU7 Cj4gKwo+ICsJLyoqCj4gKwkgKiBAaW5kZXg6IFBvc2l0aW9uIGluc2lkZSB0aGUgbW9kZV9jb25m aWcubGlzdCwgY2FuIGJlIHVzZWQgYXMgYW4gYXJyYXkKPiArCSAqIGluZGV4LiBJdCBpcyBpbnZh cmlhbnQgb3ZlciB0aGUgbGlmZXRpbWUgb2YgdGhlIGVuY29kZXIuCj4gKwkgKi8KPiArCXVuc2ln bmVkIGluZGV4Owo+ICsKPiArCXVpbnQzMl90IHBvc3NpYmxlX2NydGNzOwo+ICsJdWludDMyX3Qg cG9zc2libGVfY2xvbmVzOwo+ICsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3Mg KmZ1bmNzOwo+ICsJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqaGVscGVy X3ByaXZhdGU7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIG9ial90b19lbmNvZGVyKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgZHJtX2VuY29kZXIsIGJhc2UpCj4gKwo+ICtfX3ByaW50Zig1LCA2KQo+ ICtpbnQgZHJtX2VuY29kZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCSAgICAg c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICsJCSAgICAgY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2Z1bmNzICpmdW5jcywKPiArCQkgICAgIGludCBlbmNvZGVyX3R5cGUsIGNvbnN0IGNo YXIgKm5hbWUsIC4uLik7Cj4gKwo+ICsvKioKPiArICogZHJtX2VuY29kZXJfaW5kZXggLSBmaW5k IHRoZSBpbmRleCBvZiBhIHJlZ2lzdGVyZWQgZW5jb2Rlcgo+ICsgKiBAZW5jb2RlcjogZW5jb2Rl ciB0byBmaW5kIGluZGV4IGZvcgo+ICsgKgo+ICsgKiBHaXZlbiBhIHJlZ2lzdGVyZWQgZW5jb2Rl ciwgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGF0IGVuY29kZXIgd2l0aGluIGEgRFJNCj4gKyAqIGRl dmljZSdzIGxpc3Qgb2YgZW5jb2RlcnMuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludCBkcm1fZW5jb2Rlcl9pbmRleChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sK PiArCXJldHVybiBlbmNvZGVyLT5pbmRleDsKPiArfQo+ICsKPiArLyogRklYTUU6IFdlIGhhdmUg YW4gaW5jbHVkZSBmaWxlIG1lc3Mgc3RpbGwsIGRybV9jcnRjLmggbmVlZHMgdW50YW5nbGluZy4g Ki8KPiArc3RhdGljIGlubGluZSB1aW50MzJfdCBkcm1fY3J0Y19tYXNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2VuY29kZXJfY3J0Y19vayAtIGNhbiBhIGdp dmVuIGNydGMgZHJpdmUgYSBnaXZlbiBlbmNvZGVyPwo+ICsgKiBAZW5jb2RlcjogZW5jb2RlciB0 byB0ZXN0Cj4gKyAqIEBjcnRjOiBjcnRjIHRvIHRlc3QKPiArICoKPiArICogUmV0dXJuIGZhbHNl IGlmIEBlbmNvZGVyIGNhbid0IGJlIGRyaXZlbiBieSBAY3J0YywgdHJ1ZSBvdGhlcndpc2UuCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZHJtX2VuY29kZXJfY3J0Y19vayhzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICt7Cj4gKwlyZXR1cm4gISEoZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgJiBkcm1fY3J0Y19tYXNr KGNydGMpKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmRy bV9lbmNvZGVyX2ZpbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCXVpbnQzMl90IGlkKQoK YW5kIGhlcmUuCgo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICptbzsKPiArCW1vID0g ZHJtX21vZGVfb2JqZWN0X2ZpbmQoZGV2LCBpZCwgRFJNX01PREVfT0JKRUNUX0VOQ09ERVIpOwoK Y2hlY2twYXRjaCAtLXN0cmljdCBhc2tzIGZvciBhIGJsYW5rIGxpbmUgYWJvdmUgdG9vLiBPdGhl cndpc2U6CgpSZXZpZXdlZC1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9y Zz4KClRoYW5rcywKQXJjaGl0Cgo+ICsJcmV0dXJuIG1vID8gb2JqX3RvX2VuY29kZXIobW8pIDog TlVMTDsKPiArfQo+ICsKPiArdm9pZCBkcm1fZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2Rlcik7Cj4gKwo+ICsjZW5kaWYKPgoKLS0gClF1YWxjb21tIElubm92YXRpb24g Q2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZv dW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=