From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 07/12] drm/amdgpu: implement cgs gpu memory callbacks Date: Tue, 29 Sep 2015 14:39:49 +0200 Message-ID: <560A8695.3070506@vodafone.de> References: <1436458871-16358-1-git-send-email-alexander.deucher@amd.com> <1436458871-16358-7-git-send-email-alexander.deucher@amd.com> <20150929114048.GK3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id 71D1B6E703 for ; Tue, 29 Sep 2015 05:39:59 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by pegasos-out.vodafone.de (Rohrpostix2 Daemon) with ESMTP id E24674E05E2 for ; Tue, 29 Sep 2015 14:39:57 +0200 (CEST) Received: from pegasos-out.vodafone.de ([127.0.0.1]) by localhost (rohrpostix2.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GK26o-JYr35O for ; Tue, 29 Sep 2015 14:39:54 +0200 (CEST) In-Reply-To: <20150929114048.GK3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Alex Deucher Cc: Alex Deucher , Maruthi.Bayyavarapu@amd.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMjkuMDkuMjAxNSAxMzo0MCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEp1bCAw OSwgMjAxNSBhdCAxMjoyMTowNlBNIC0wNDAwLCBBbGV4IERldWNoZXIgd3JvdGU6Cj4+IEZyb206 IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+Cj4+Cj4+IFRoaXMgaW1wbGVtZW50 cyB0aGUgY2dzIGludGVyZmFjZSBmb3IgYWxsb2NhdGluZwo+PiBHUFUgbWVtb3J5Lgo+Pgo+PiBS ZXZpZXdlZC1ieTogSmFtbXkgWmhvdSA8SmFtbXkuWmhvdUBhbWQuY29tPgo+IEkgZG9uJ3Qgc2Vl IHRoYXQgcmV2aWV3IGFueXdoZXJlIG9uIGEgbS1sIC4uLiB3aGVyZSBpcyBpdD8KCkphbW15IHJl dmlld2VkIHRoZSBzdHVmZiBpbnRlcm5hbGx5IGJlZm9yZSB3ZSBtYWRlIGl0IHB1YmxpYywgdGhh dCdzIHdoeSAKeW91IGNhbid0IGZpbmQgaXQuCgo+Cj4gSSBzdHVtYmxlZCBvdmVyIHRoaXMgcGF0 Y2ggYmVjYXVzZSBpdCBhZGRzIGEgbmV3IGRldi0+c3RydWN0X211dGV4IHVzZXIKPiAodGhhdCBz aG91bGQgYmUgYSBiaWcgd2FybmluZyBzaWduKSBhbmQgdGhlbiBJIHNvbWVob3cgdW5yb2xsZWQg c29tZSBnaWFudAo+IGNoYWluIG9mIHd0ZnMuIEVpdGhlciBJJ20gY29tcGxldGVseSBtaXNzaW5n IHdoYXQgdGhpcyBpcyB1c2VkIGZvciBvciBpdAo+IHByb2JhYmx5IHNob3VsZCBnZXQgcmV3b3Jr ZWQgYXNhcC4KClRoZSBDR1MgZnVuY3Rpb25zIGFyZW4ndCB1c2VkIGF0IHRoZSBtb21lbnQgYmVj YXVzZSBub25lIG9mIHRoZSAKY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlbSBtYWRlIGl0IGlu dG8gdGhlIGtlcm5lbCwgYnV0IHdlIHdhbnRlZCB0byAKa2VlcCBpdCBzbyB0aGF0IHdlIGNhbiBn ZXQgcmV2aWV3cyBvbiB0aGUgZ2VuZXJhbCBpZGVhIGFuZCBpZiBuZWNlc3NhcnkgCnJld29yayBp dC4KCkluIGdlbmVyYWwgaXQncyBhbiBhYnN0cmFjdGlvbiBsYXllciBvZiBkZXZpY2UgZHJpdmVy IGRlcGVuZGVudCAKZnVuY3Rpb25zIHdoaWNoIGVuYWJsZXMgdXMgdG8gc2hhcmUgbW9yZSBjb2Rl IGludGVybmFsbHkuCgpXZSB3b3JrZWQgcXVpdGUgaGFyZCBvbiB0cnlpbmcgdG8gYXZvaWQgdGhl IE9TIGFic3RyYWN0aW9uIHRyYXAgd2l0aCAKdGhpcywgYnV0IGlmIHlvdSB0aGluayB0aGlzIHN0 aWxsIHdvbid0IHdvcmsgZmVlbCBmcmVlIHRvIG9iamVjdC4KClJlZ2FyZHMsCkNocmlzdGlhbi4K Cj4gLURhbmllbAo+Cj4+IFNpZ25lZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91 QGFtZC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNo ZXJAYW1kLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Nncy5jIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICAgMSBmaWxl IGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYwo+PiBpbmRleCBjMWVlMzllLi5hYzBmMTI0 IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY2dzLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jCj4+IEBAIC0y MSw3ICsyMSwxMSBAQAo+PiAgICAqCj4+ICAgICoKPj4gICAgKi8KPj4gKyNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+PiAgICNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiArI2luY2x1ZGUgPGRybS9hbWRn cHVfZHJtLmg+Cj4+ICAgI2luY2x1ZGUgImFtZGdwdS5oIgo+PiAgICNpbmNsdWRlICJjZ3NfbGlu dXguaCIKPj4gICAjaW5jbHVkZSAiYXRvbS5oIgo+PiBAQCAtMzksNiArNDMsMzAgQEAgc3RhdGlj IGludCBhbWRncHVfY2dzX2dwdV9tZW1faW5mbyh2b2lkICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19n cHVfbWVtX3R5cGUgdHlwZSwKPj4gICAJCQkJICAgdWludDY0X3QgKm1jX3N0YXJ0LCB1aW50NjRf dCAqbWNfc2l6ZSwKPj4gICAJCQkJICAgdWludDY0X3QgKm1lbV9zaXplKQo+PiAgIHsKPj4gKwlD R1NfRlVOQ19BREVWOwo+PiArCXN3aXRjaCh0eXBlKSB7Cj4+ICsJY2FzZSBDR1NfR1BVX01FTV9U WVBFX19WSVNJQkxFX0NPTlRJR19GQjoKPj4gKwljYXNlIENHU19HUFVfTUVNX1RZUEVfX1ZJU0lC TEVfRkI6Cj4+ICsJCSptY19zdGFydCA9IDA7Cj4+ICsJCSptY19zaXplID0gYWRldi0+bWMudmlz aWJsZV92cmFtX3NpemU7Cj4+ICsJCSptZW1fc2l6ZSA9IGFkZXYtPm1jLnZpc2libGVfdnJhbV9z aXplIC0gYWRldi0+dnJhbV9waW5fc2l6ZTsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBDR1NfR1BV X01FTV9UWVBFX19JTlZJU0lCTEVfQ09OVElHX0ZCOgo+PiArCWNhc2UgQ0dTX0dQVV9NRU1fVFlQ RV9fSU5WSVNJQkxFX0ZCOgo+PiArCQkqbWNfc3RhcnQgPSBhZGV2LT5tYy52aXNpYmxlX3ZyYW1f c2l6ZTsKPj4gKwkJKm1jX3NpemUgPSBhZGV2LT5tYy5yZWFsX3ZyYW1fc2l6ZSAtIGFkZXYtPm1j LnZpc2libGVfdnJhbV9zaXplOwo+PiArCQkqbWVtX3NpemUgPSAqbWNfc2l6ZTsKPj4gKwkJYnJl YWs7Cj4+ICsJY2FzZSBDR1NfR1BVX01FTV9UWVBFX19HQVJUX0NBQ0hFQUJMRToKPj4gKwljYXNl IENHU19HUFVfTUVNX1RZUEVfX0dBUlRfV1JJVEVDT01CSU5FOgo+PiArCQkqbWNfc3RhcnQgPSBh ZGV2LT5tYy5ndHRfc3RhcnQ7Cj4+ICsJCSptY19zaXplID0gYWRldi0+bWMuZ3R0X3NpemU7Cj4+ ICsJCSptZW1fc2l6ZSA9IGFkZXYtPm1jLmd0dF9zaXplIC0gYWRldi0+Z2FydF9waW5fc2l6ZTsK Pj4gKwkJYnJlYWs7Cj4+ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+ PiArCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gQEAgLTQ3LDExICs3NSw0MyBAQCBz dGF0aWMgaW50IGFtZGdwdV9jZ3NfZ21hcF9rbWVtKHZvaWQgKmNnc19kZXZpY2UsIHZvaWQgKmtt ZW0sCj4+ICAgCQkJCXVpbnQ2NF90IG1pbl9vZmZzZXQsIHVpbnQ2NF90IG1heF9vZmZzZXQsCj4+ ICAgCQkJCWNnc19oYW5kbGVfdCAqa21lbV9oYW5kbGUsIHVpbnQ2NF90ICptY2FkZHIpCj4+ICAg ewo+PiAtCXJldHVybiAwOwo+PiArCUNHU19GVU5DX0FERVY7Cj4+ICsJaW50IHJldDsKPj4gKwlz dHJ1Y3QgYW1kZ3B1X2JvICpibzsKPj4gKwlzdHJ1Y3QgcGFnZSAqa21lbV9wYWdlID0gdm1hbGxv Y190b19wYWdlKGttZW0pOwo+PiArCWludCBucGFnZXMgPSBBTElHTihzaXplLCBQQUdFX1NJWkUp ID4+IFBBR0VfU0hJRlQ7Cj4+ICsKPj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gZHJtX3ByaW1l X3BhZ2VzX3RvX3NnKCZrbWVtX3BhZ2UsIG5wYWdlcyk7Cj4+ICsJcmV0ID0gYW1kZ3B1X2JvX2Ny ZWF0ZShhZGV2LCBzaXplLCBQQUdFX1NJWkUsIGZhbHNlLAo+PiArCQkJICAgICAgIEFNREdQVV9H RU1fRE9NQUlOX0dUVCwgMCwgc2csICZibyk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJl dDsKPj4gKwlyZXQgPSBhbWRncHVfYm9fcmVzZXJ2ZShibywgZmFsc2UpOwo+PiArCWlmICh1bmxp a2VseShyZXQgIT0gMCkpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkvKiBwaW4gYnVmZmVy IGludG8gR1RUICovCj4+ICsJcmV0ID0gYW1kZ3B1X2JvX3Bpbl9yZXN0cmljdGVkKGJvLCBBTURH UFVfR0VNX0RPTUFJTl9HVFQsCj4+ICsJCQkJICAgICAgIG1pbl9vZmZzZXQsIG1heF9vZmZzZXQs IG1jYWRkcik7Cj4+ICsJYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+ICsKPj4gKwkqa21lbV9o YW5kbGUgPSAoY2dzX2hhbmRsZV90KWJvOwo+PiArCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+ PiAgIHN0YXRpYyBpbnQgYW1kZ3B1X2Nnc19ndW5tYXBfa21lbSh2b2lkICpjZ3NfZGV2aWNlLCBj Z3NfaGFuZGxlX3Qga21lbV9oYW5kbGUpCj4+ICAgewo+PiArCXN0cnVjdCBhbWRncHVfYm8gKm9i aiA9IChzdHJ1Y3QgYW1kZ3B1X2JvICopa21lbV9oYW5kbGU7Cj4+ICsKPj4gKwlpZiAob2JqKSB7 Cj4+ICsJCWludCByID0gYW1kZ3B1X2JvX3Jlc2VydmUob2JqLCBmYWxzZSk7Cj4+ICsJCWlmIChs aWtlbHkociA9PSAwKSkgewo+PiArCQkJYW1kZ3B1X2JvX3VucGluKG9iaik7Cj4+ICsJCQlhbWRn cHVfYm9fdW5yZXNlcnZlKG9iaik7Cj4+ICsJCX0KPj4gKwkJYW1kZ3B1X2JvX3VucmVmKCZvYmop Owo+PiArCj4+ICsJfQo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IEBAIC02MSw0NiAr MTIxLDIwMCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jZ3NfYWxsb2NfZ3B1X21lbSh2b2lkICpjZ3Nf ZGV2aWNlLAo+PiAgIAkJCQkgICAgdWludDY0X3QgbWluX29mZnNldCwgdWludDY0X3QgbWF4X29m ZnNldCwKPj4gICAJCQkJICAgIGNnc19oYW5kbGVfdCAqaGFuZGxlKQo+PiAgIHsKPj4gLQlyZXR1 cm4gMDsKPj4gKwlDR1NfRlVOQ19BREVWOwo+PiArCXVpbnQxNl90IGZsYWdzID0gMDsKPj4gKwlp bnQgcmV0ID0gMDsKPj4gKwl1aW50MzJfdCBkb21haW4gPSAwOwo+PiArCXN0cnVjdCBhbWRncHVf Ym8gKm9iajsKPj4gKwlzdHJ1Y3QgdHRtX3BsYWNlbWVudCBwbGFjZW1lbnQ7Cj4+ICsJc3RydWN0 IHR0bV9wbGFjZSBwbGFjZTsKPj4gKwo+PiArCWlmIChtaW5fb2Zmc2V0ID4gbWF4X29mZnNldCkg ewo+PiArCQlCVUdfT04oMSk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiAr CS8qIGZhaWwgaWYgdGhlIGFsaWdubWVudCBpcyBub3QgYSBwb3dlciBvZiAyICovCj4+ICsJaWYg KCgoYWxpZ24gIT0gMSkgJiYgKGFsaWduICYgKGFsaWduIC0gMSkpKQo+PiArCSAgICB8fCBzaXpl ID09IDAgfHwgYWxpZ24gPT0gMCkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwo+PiAr CXN3aXRjaCh0eXBlKSB7Cj4+ICsJY2FzZSBDR1NfR1BVX01FTV9UWVBFX19WSVNJQkxFX0NPTlRJ R19GQjoKPj4gKwljYXNlIENHU19HUFVfTUVNX1RZUEVfX1ZJU0lCTEVfRkI6Cj4+ICsJCWZsYWdz ID0gQU1ER1BVX0dFTV9DUkVBVEVfQ1BVX0FDQ0VTU19SRVFVSVJFRDsKPj4gKwkJZG9tYWluID0g QU1ER1BVX0dFTV9ET01BSU5fVlJBTTsKPj4gKwkJaWYgKG1heF9vZmZzZXQgPiBhZGV2LT5tYy5y ZWFsX3ZyYW1fc2l6ZSkKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQlwbGFjZS5mcGZuID0g bWluX29mZnNldCA+PiBQQUdFX1NISUZUOwo+PiArCQlwbGFjZS5scGZuID0gbWF4X29mZnNldCA+ PiBQQUdFX1NISUZUOwo+PiArCQlwbGFjZS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwgVFRNX1BM X0ZMQUdfVU5DQUNIRUQgfAo+PiArCQkJVFRNX1BMX0ZMQUdfVlJBTTsKPj4gKwkJYnJlYWs7Cj4+ ICsJY2FzZSBDR1NfR1BVX01FTV9UWVBFX19JTlZJU0lCTEVfQ09OVElHX0ZCOgo+PiArCWNhc2Ug Q0dTX0dQVV9NRU1fVFlQRV9fSU5WSVNJQkxFX0ZCOgo+PiArCQlmbGFncyA9IEFNREdQVV9HRU1f Q1JFQVRFX05PX0NQVV9BQ0NFU1M7Cj4+ICsJCWRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX1ZS QU07Cj4+ICsJCWlmIChhZGV2LT5tYy52aXNpYmxlX3ZyYW1fc2l6ZSA8IGFkZXYtPm1jLnJlYWxf dnJhbV9zaXplKSB7Cj4+ICsJCQlwbGFjZS5mcGZuID0KPj4gKwkJCQltYXgobWluX29mZnNldCwg YWRldi0+bWMudmlzaWJsZV92cmFtX3NpemUpID4+IFBBR0VfU0hJRlQ7Cj4+ICsJCQlwbGFjZS5s cGZuID0KPj4gKwkJCQltaW4obWF4X29mZnNldCwgYWRldi0+bWMucmVhbF92cmFtX3NpemUpID4+ IFBBR0VfU0hJRlQ7Cj4+ICsJCQlwbGFjZS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwgVFRNX1BM X0ZMQUdfVU5DQUNIRUQgfAo+PiArCQkJCVRUTV9QTF9GTEFHX1ZSQU07Cj4+ICsJCX0KPj4gKwo+ PiArCQlicmVhazsKPj4gKwljYXNlIENHU19HUFVfTUVNX1RZUEVfX0dBUlRfQ0FDSEVBQkxFOgo+ PiArCQlkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+ICsJCXBsYWNlLmZwZm4gPSBt aW5fb2Zmc2V0ID4+IFBBR0VfU0hJRlQ7Cj4+ICsJCXBsYWNlLmxwZm4gPSBtYXhfb2Zmc2V0ID4+ IFBBR0VfU0hJRlQ7Cj4+ICsJCXBsYWNlLmZsYWdzID0gVFRNX1BMX0ZMQUdfQ0FDSEVEIHwgVFRN X1BMX0ZMQUdfVFQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgQ0dTX0dQVV9NRU1fVFlQRV9fR0FS VF9XUklURUNPTUJJTkU6Cj4+ICsJCWZsYWdzID0gQU1ER1BVX0dFTV9DUkVBVEVfQ1BVX0dUVF9V U1dDOwo+PiArCQlkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+ICsJCXBsYWNlLmZw Zm4gPSBtaW5fb2Zmc2V0ID4+IFBBR0VfU0hJRlQ7Cj4+ICsJCXBsYWNlLmxwZm4gPSBtYXhfb2Zm c2V0ID4+IFBBR0VfU0hJRlQ7Cj4+ICsJCXBsYWNlLmZsYWdzID0gVFRNX1BMX0ZMQUdfV0MgfCBU VE1fUExfRkxBR19UVCB8Cj4+ICsJCQlUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gKwkJYnJlYWs7 Cj4+ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCj4+ICsKPj4g KwkqaGFuZGxlID0gMDsKPj4gKwo+PiArCXBsYWNlbWVudC5wbGFjZW1lbnQgPSAmcGxhY2U7Cj4+ ICsJcGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgPSAxOwo+PiArCXBsYWNlbWVudC5idXN5X3BsYWNl bWVudCA9ICZwbGFjZTsKPj4gKwlwbGFjZW1lbnQubnVtX2J1c3lfcGxhY2VtZW50ID0gMTsKPj4g Kwo+PiArCXJldCA9IGFtZGdwdV9ib19jcmVhdGVfcmVzdHJpY3RlZChhZGV2LCBzaXplLCBQQUdF X1NJWkUsCj4+ICsJCQkJCSAgdHJ1ZSwgZG9tYWluLCBmbGFncywKPj4gKwkJCQkJICBOVUxMLCAm cGxhY2VtZW50LCAmb2JqKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCURSTV9FUlJPUigiKCVkKSBi byBjcmVhdGUgZmFpbGVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwkq aGFuZGxlID0gKGNnc19oYW5kbGVfdClvYmo7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiAgIH0K Pj4gICAKPj4gICBzdGF0aWMgaW50IGFtZGdwdV9jZ3NfaW1wb3J0X2dwdV9tZW0odm9pZCAqY2dz X2RldmljZSwgaW50IGRtYWJ1Zl9mZCwKPj4gICAJCQkJICAgICBjZ3NfaGFuZGxlX3QgKmhhbmRs ZSkKPj4gICB7Cj4+IC0JLyogVE9ETyAqLwo+PiArCUNHU19GVU5DX0FERVY7Cj4+ICsJaW50IHI7 Cj4+ICsJdWludDMyX3QgZG1hX2hhbmRsZTsKPj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i ajsKPj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gYWRldi0+ZGRldjsKPj4gKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiA9IE5VTEwsICpw cml2Owo+PiArCj4+ICsJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+PiArCWxpc3Rf Zm9yX2VhY2hfZW50cnkocHJpdiwgJmRldi0+ZmlsZWxpc3QsIGxoZWFkKSB7Cj4+ICsJCXJjdV9y ZWFkX2xvY2soKTsKPj4gKwkJaWYgKHByaXYtPnBpZCA9PSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJl bnQpKSkKPj4gKwkJCWZpbGVfcHJpdiA9IHByaXY7Cj4+ICsJCXJjdV9yZWFkX3VubG9jaygpOwo+ PiArCQlpZiAoZmlsZV9wcml2KQo+PiArCQkJYnJlYWs7Cj4+ICsJfQo+PiArCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+PiArCXIgPSBkZXYtPmRyaXZlci0+cHJpbWVfZmRfdG9f aGFuZGxlKGRldiwKPj4gKwkJCQkJICAgIGZpbGVfcHJpdiwgZG1hYnVmX2ZkLAo+PiArCQkJCQkg ICAgJmRtYV9oYW5kbGUpOwo+PiArCXNwaW5fbG9jaygmZmlsZV9wcml2LT50YWJsZV9sb2NrKTsK Pj4gKwo+PiArCS8qIENoZWNrIGlmIHdlIGN1cnJlbnRseSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRo ZSBvYmplY3QgKi8KPj4gKwlvYmogPSBpZHJfZmluZCgmZmlsZV9wcml2LT5vYmplY3RfaWRyLCBk bWFfaGFuZGxlKTsKPj4gKwlpZiAob2JqID09IE5VTEwpIHsKPj4gKwkJc3Bpbl91bmxvY2soJmZp bGVfcHJpdi0+dGFibGVfbG9jayk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwlz cGluX3VubG9jaygmZmlsZV9wcml2LT50YWJsZV9sb2NrKTsKPj4gKwlibyA9IGdlbV90b19hbWRn cHVfYm8ob2JqKTsKPj4gKwkqaGFuZGxlID0gKGNnc19oYW5kbGVfdClibzsKPj4gICAJcmV0dXJu IDA7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBpbnQgYW1kZ3B1X2Nnc19mcmVlX2dwdV9tZW0o dm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IGhhbmRsZSkKPj4gICB7Cj4+IC0JLyogVE9E TyAqLwo+PiArCXN0cnVjdCBhbWRncHVfYm8gKm9iaiA9IChzdHJ1Y3QgYW1kZ3B1X2JvICopaGFu ZGxlOwo+PiArCj4+ICsJaWYgKG9iaikgewo+PiArCQlpbnQgciA9IGFtZGdwdV9ib19yZXNlcnZl KG9iaiwgZmFsc2UpOwo+PiArCQlpZiAobGlrZWx5KHIgPT0gMCkpIHsKPj4gKwkJCWFtZGdwdV9i b19rdW5tYXAob2JqKTsKPj4gKwkJCWFtZGdwdV9ib191bnBpbihvYmopOwo+PiArCQkJYW1kZ3B1 X2JvX3VucmVzZXJ2ZShvYmopOwo+PiArCQl9Cj4+ICsJCWFtZGdwdV9ib191bnJlZigmb2JqKTsK Pj4gKwo+PiArCX0KPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBpbnQg YW1kZ3B1X2Nnc19nbWFwX2dwdV9tZW0odm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IGhh bmRsZSwKPj4gICAJCQkJICAgdWludDY0X3QgKm1jYWRkcikKPj4gICB7Cj4+IC0JLyogVE9ETyAq Lwo+PiAtCXJldHVybiAwOwo+PiArCWludCByOwo+PiArCXU2NCBtaW5fb2Zmc2V0LCBtYXhfb2Zm c2V0Owo+PiArCXN0cnVjdCBhbWRncHVfYm8gKm9iaiA9IChzdHJ1Y3QgYW1kZ3B1X2JvICopaGFu ZGxlOwo+PiArCj4+ICsJV0FSTl9PTl9PTkNFKG9iai0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQg PiAxKTsKPj4gKwo+PiArCW1pbl9vZmZzZXQgPSBvYmotPnBsYWNlbWVudHNbMF0uZnBmbiA8PCBQ QUdFX1NISUZUOwo+PiArCW1heF9vZmZzZXQgPSBvYmotPnBsYWNlbWVudHNbMF0ubHBmbiA8PCBQ QUdFX1NISUZUOwo+PiArCj4+ICsJciA9IGFtZGdwdV9ib19yZXNlcnZlKG9iaiwgZmFsc2UpOwo+ PiArCWlmICh1bmxpa2VseShyICE9IDApKQo+PiArCQlyZXR1cm4gcjsKPj4gKwlyID0gYW1kZ3B1 X2JvX3Bpbl9yZXN0cmljdGVkKG9iaiwgQU1ER1BVX0dFTV9ET01BSU5fR1RULAo+PiArCQkJCSAg ICAgbWluX29mZnNldCwgbWF4X29mZnNldCwgbWNhZGRyKTsKPj4gKwlhbWRncHVfYm9fdW5yZXNl cnZlKG9iaik7Cj4+ICsJcmV0dXJuIHI7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBpbnQgYW1k Z3B1X2Nnc19ndW5tYXBfZ3B1X21lbSh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgaGFu ZGxlKQo+PiAgIHsKPj4gLQkvKiBUT0RPICovCj4+IC0JcmV0dXJuIDA7Cj4+ICsJaW50IHI7Cj4+ ICsJc3RydWN0IGFtZGdwdV9ibyAqb2JqID0gKHN0cnVjdCBhbWRncHVfYm8gKiloYW5kbGU7Cj4+ ICsJciA9IGFtZGdwdV9ib19yZXNlcnZlKG9iaiwgZmFsc2UpOwo+PiArCWlmICh1bmxpa2VseShy ICE9IDApKQo+PiArCQlyZXR1cm4gcjsKPj4gKwlyID0gYW1kZ3B1X2JvX3VucGluKG9iaik7Cj4+ ICsJYW1kZ3B1X2JvX3VucmVzZXJ2ZShvYmopOwo+PiArCXJldHVybiByOwo+PiAgIH0KPj4gICAK Pj4gICBzdGF0aWMgaW50IGFtZGdwdV9jZ3Nfa21hcF9ncHVfbWVtKHZvaWQgKmNnc19kZXZpY2Us IGNnc19oYW5kbGVfdCBoYW5kbGUsCj4+ICAgCQkJCSAgIHZvaWQgKiptYXApCj4+ICAgewo+PiAt CS8qIFRPRE8gKi8KPj4gLQlyZXR1cm4gMDsKPj4gKwlpbnQgcjsKPj4gKwlzdHJ1Y3QgYW1kZ3B1 X2JvICpvYmogPSAoc3RydWN0IGFtZGdwdV9ibyAqKWhhbmRsZTsKPj4gKwlyID0gYW1kZ3B1X2Jv X3Jlc2VydmUob2JqLCBmYWxzZSk7Cj4+ICsJaWYgKHVubGlrZWx5KHIgIT0gMCkpCj4+ICsJCXJl dHVybiByOwo+PiArCXIgPSBhbWRncHVfYm9fa21hcChvYmosIG1hcCk7Cj4+ICsJYW1kZ3B1X2Jv X3VucmVzZXJ2ZShvYmopOwo+PiArCXJldHVybiByOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMg aW50IGFtZGdwdV9jZ3Nfa3VubWFwX2dwdV9tZW0odm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRs ZV90IGhhbmRsZSkKPj4gICB7Cj4+IC0JLyogVE9ETyAqLwo+PiAtCXJldHVybiAwOwo+PiArCWlu dCByOwo+PiArCXN0cnVjdCBhbWRncHVfYm8gKm9iaiA9IChzdHJ1Y3QgYW1kZ3B1X2JvICopaGFu ZGxlOwo+PiArCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZShvYmosIGZhbHNlKTsKPj4gKwlpZiAodW5s aWtlbHkociAhPSAwKSkKPj4gKwkJcmV0dXJuIHI7Cj4+ICsJYW1kZ3B1X2JvX2t1bm1hcChvYmop Owo+PiArCWFtZGdwdV9ib191bnJlc2VydmUob2JqKTsKPj4gKwlyZXR1cm4gcjsKPj4gICB9Cj4+ ICAgCj4+ICAgc3RhdGljIHVpbnQzMl90IGFtZGdwdV9jZ3NfcmVhZF9yZWdpc3Rlcih2b2lkICpj Z3NfZGV2aWNlLCB1bnNpZ25lZCBvZmZzZXQpCj4+IC0tIAo+PiAxLjguMy4xCj4+Cj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=