From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 5/5] drm/udl: Replace fbdev code with generic emulation Date: Fri, 25 Oct 2019 10:00:59 +0200 Message-ID: <20191025080059.GS11828@phenom.ffwll.local> References: <20191024144237.8898-1-tzimmermann@suse.de> <20191024144237.8898-6-tzimmermann@suse.de> <20191025074746.GR11828@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id A009589D83 for ; Fri, 25 Oct 2019 08:01:03 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id 22so855353wms.3 for ; Fri, 25 Oct 2019 01:01:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20191025074746.GR11828@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: Thomas Zimmermann Cc: sean@poorly.run, dri-devel@lists.freedesktop.org, airlied@redhat.com, sam@ravnborg.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBPY3QgMjUsIDIwMTkgYXQgMDk6NDc6NDZBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE9jdCAyNCwgMjAxOSBhdCAwNDo0MjozN1BNICswMjAwLCBUaG9tYXMg WmltbWVybWFubiB3cm90ZToKPiA+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0 emltbWVybWFubkBzdXNlLmRlPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxf ZHJ2LmMgICAgIHwgICAzICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuaCAgICAg fCAgIDQgLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2ZiLmMgICAgICB8IDI2MyArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9t YWluLmMgICAgfCAgIDIgLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYyB8 ICAgMyArLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyNjcgZGVsZXRp b25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5jCj4gPiBpbmRleCAxNWFkN2EzMzhmOWQu LjZiZWFhMTEwOWMyYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Ry di5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuYwo+ID4gQEAgLTcsNiAr Nyw3IEBACj4gPiAgCj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ICAj aW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIu aD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1f aW9jdGwuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4KPiA+IEBAIC02 Miw2ICs2Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7Cj4gPiAgCS5k cml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0sCj4gPiAgCS5yZWxl YXNlID0gdWRsX2RyaXZlcl9yZWxlYXNlLAo+ID4gIAo+ID4gKwkubGFzdGNsb3NlID0gZHJtX2Zi X2hlbHBlcl9sYXN0Y2xvc2UsCj4gPiArCj4gPiAgCS8qIGdlbSBob29rcyAqLwo+ID4gIAkuZ2Vt X2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gdWRsX2dlbV9mcmVlX29iamVjdCwKPiA+ICAJLmdlbV92 bV9vcHMgPSAmdWRsX2dlbV92bV9vcHMsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3VkbC91ZGxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuaAo+ID4gaW5kZXgg MTJhOTcwZmQ5YTg3Li41ZjhhN2FjMDg0ZjYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdWRsL3VkbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZHJ2LmgK PiA+IEBAIC01MCw4ICs1MCw2IEBAIHN0cnVjdCB1cmJfbGlzdCB7Cj4gPiAgCXNpemVfdCBzaXpl Owo+ID4gIH07Cj4gPiAgCj4gPiAtc3RydWN0IHVkbF9mYmRldjsKPiA+IC0KPiA+ICBzdHJ1Y3Qg dWRsX2RldmljZSB7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlIGRybTsKPiA+ICAJc3RydWN0IGRl dmljZSAqZGV2Owo+ID4gQEAgLTY1LDcgKzYzLDYgQEAgc3RydWN0IHVkbF9kZXZpY2Ugewo+ID4g IAlzdHJ1Y3QgdXJiX2xpc3QgdXJiczsKPiA+ICAJYXRvbWljX3QgbG9zdF9waXhlbHM7IC8qIDEg PSBhIHJlbmRlciBvcCBmYWlsZWQuIE5lZWQgc2NyZWVuIHJlZnJlc2ggKi8KPiA+ICAKPiA+IC0J c3RydWN0IHVkbF9mYmRldiAqZmJkZXY7Cj4gPiAgCWNoYXIgbW9kZV9idWZbMTAyNF07Cj4gPiAg CXVpbnQzMl90IG1vZGVfYnVmX2xlbjsKPiA+ICAJYXRvbWljX3QgYnl0ZXNfcmVuZGVyZWQ7IC8q IHJhdyBwaXhlbC1ieXRlcyBkcml2ZXIgYXNrZWQgdG8gcmVuZGVyICovCj4gPiBAQCAtMTExLDcg KzEwOCw2IEBAIGludCB1ZGxfaW5pdChzdHJ1Y3QgdWRsX2RldmljZSAqdWRsKTsKPiA+ICB2b2lk IHVkbF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIAo+ID4gIGludCB1ZGxfZmJk ZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+IC12b2lkIHVkbF9mYmRldl9jbGVh bnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIHZvaWQgdWRsX2ZiZGV2X3VucGx1Zyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKPiA+ ICB1ZGxfZmJfdXNlcl9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfZmIuYwo+ID4gaW5kZXggZWYzNTA0ZDA2MzQzLi40M2ExZGEzYTU2YzMgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9mYi5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9mYi5jCj4gPiBAQCAtMTksMTkgKzE5LDkgQEAKPiA+ICAKPiA+ICAjaW5j bHVkZSAidWRsX2Rydi5oIgo+ID4gIAo+ID4gLSNkZWZpbmUgRExfREVGSU9fV1JJVEVfREVMQVkg ICAgKEhaLzIwKSAvKiBmYl9kZWZlcnJlZF9pby5kZWxheSBpbiBqaWZmaWVzICovCj4gPiAtCj4g PiAtc3RhdGljIGludCBmYl9kZWZpbyA9IDA7ICAvKiBPcHRpb25hbGx5IGVuYWJsZSBleHBlcmlt ZW50YWwgZmJfZGVmaW8gbW1hcCBzdXBwb3J0ICovCgpDb3JyZWN0aW9uIG9uIG15IGVudGh1c2lh c20sIHRoaXMgaGVyZSBpcyBhIHByb2JsZW06CgpUaGUgdWRsIGRlZmlvIHN1cHBvcnQgYXMtaXMg aXMgYnJva2VuLCBmYmRldiBkZWZpbyBhbmQgc2htZW0gYXJlIGZpZ2h0Cm92ZXIgdGhlIHBhZ2Ug ZmxhZ3MuIE5vdCBhIHByb2JsZW0gd2l0aCB0aGUgb2xkIGNvZGUsIHNpbmNlIGRpc2FibGVkIGJ5 CmRlZmF1bHQuIEJ1dCB3aWxsIGJlIGEgcHJvYmxlbSB3aXRoIHRoZSBuZXcgY29kZS4gSSBndWVz cyB5b3UgZGlkbid0IHRlc3QKZmJkZXYgbW1hcD8gV2UgdW5mb3J0dW5hdGVseSBhbHNvIGxhY2sg YW4gZWFzeSBpZ3QgdGVzdGNhc2UgZm9yIHRoaXMgLi4uCgpUaGUgcHJvYmxlbSBpcyBmYWlybHkg dHJpY2t5IHRvIHNvbHZlLCBoZXJlJ3MgYW4gdW50ZXN0ZWQgaWRlYSB0aGF0IG1pZ2h0Cndvcms6 CgpodHRwczovL2RyaS5mcmVlZGVza3RvcC5vcmcvZG9jcy9kcm0vZ3B1L3RvZG8uaHRtbCNnZW5l cmljLWZiZGV2LWRlZmlvLXN1cHBvcnQKCkNoZWVycywgRGFuaWVsCgoKCj4gPiAgc3RhdGljIGlu dCBmYl9icHAgPSAxNjsKPiA+ICAKPiA+ICBtb2R1bGVfcGFyYW0oZmJfYnBwLCBpbnQsIFNfSVdV U1IgfCBTX0lSVVNSIHwgU19JV0dSUCB8IFNfSVJHUlApOwo+ID4gLW1vZHVsZV9wYXJhbShmYl9k ZWZpbywgaW50LCBTX0lXVVNSIHwgU19JUlVTUiB8IFNfSVdHUlAgfCBTX0lSR1JQKTsKPiA+IC0K PiA+IC1zdHJ1Y3QgdWRsX2ZiZGV2IHsKPiA+IC0Jc3RydWN0IGRybV9mYl9oZWxwZXIgaGVscGVy OyAvKiBtdXN0IGJlIGZpcnN0ICovCj4gPiAtCXN0cnVjdCB1ZGxfZnJhbWVidWZmZXIgdWZiOwo+ ID4gLQlpbnQgZmJfY291bnQ7Cj4gPiAtfTsKPiA+ICAKPiA+ICAjZGVmaW5lIERMX0FMSUdOX1VQ KHgsIGEpIEFMSUdOKHgsIGEpCj4gPiAgI2RlZmluZSBETF9BTElHTl9ET1dOKHgsIGEpIEFMSUdO X0RPV04oeCwgYSkKPiA+IEBAIC0xNTcsMTIzICsxNDcsNiBAQCBpbnQgdWRsX2hhbmRsZV9kYW1h Z2Uoc3RydWN0IHVkbF9mcmFtZWJ1ZmZlciAqZmIsIGludCB4LCBpbnQgeSwKPiA+ICAJcmV0dXJu IDA7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBpbnQgdWRsX2ZiX21tYXAoc3RydWN0IGZiX2lu Zm8gKmluZm8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gLXsKPiA+IC0JdW5zaWdu ZWQgbG9uZyBzdGFydCA9IHZtYS0+dm1fc3RhcnQ7Cj4gPiAtCXVuc2lnbmVkIGxvbmcgc2l6ZSA9 IHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydDsKPiA+IC0JdW5zaWduZWQgbG9uZyBvZmZzZXQ7 Cj4gPiAtCXVuc2lnbmVkIGxvbmcgcGFnZSwgcG9zOwo+ID4gLQo+ID4gLQlpZiAodm1hLT52bV9w Z29mZiA+ICh+MFVMID4+IFBBR0VfU0hJRlQpKQo+ID4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAt Cj4gPiAtCW9mZnNldCA9IHZtYS0+dm1fcGdvZmYgPDwgUEFHRV9TSElGVDsKPiA+IC0KPiA+IC0J aWYgKG9mZnNldCA+IGluZm8tPmZpeC5zbWVtX2xlbiB8fCBzaXplID4gaW5mby0+Zml4LnNtZW1f bGVuIC0gb2Zmc2V0KQo+ID4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAtCj4gPiAtCXBvcyA9ICh1 bnNpZ25lZCBsb25nKWluZm8tPmZpeC5zbWVtX3N0YXJ0ICsgb2Zmc2V0Owo+ID4gLQo+ID4gLQlw cl9kZWJ1ZygibW1hcCgpIGZyYW1lYnVmZmVyIGFkZHI6JWx1IHNpemU6JWx1XG4iLAo+ID4gLQkJ ICBwb3MsIHNpemUpOwo+ID4gLQo+ID4gLQkvKiBXZSBkb24ndCB3YW50IHRoZSBmcmFtZWJ1ZmZl ciB0byBiZSBtYXBwZWQgZW5jcnlwdGVkICovCj4gPiAtCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdw cm90X2RlY3J5cHRlZCh2bWEtPnZtX3BhZ2VfcHJvdCk7Cj4gPiAtCj4gPiAtCXdoaWxlIChzaXpl ID4gMCkgewo+ID4gLQkJcGFnZSA9IHZtYWxsb2NfdG9fcGZuKCh2b2lkICopcG9zKTsKPiA+IC0J CWlmIChyZW1hcF9wZm5fcmFuZ2Uodm1hLCBzdGFydCwgcGFnZSwgUEFHRV9TSVpFLCBQQUdFX1NI QVJFRCkpCj4gPiAtCQkJcmV0dXJuIC1FQUdBSU47Cj4gPiAtCj4gPiAtCQlzdGFydCArPSBQQUdF X1NJWkU7Cj4gPiAtCQlwb3MgKz0gUEFHRV9TSVpFOwo+ID4gLQkJaWYgKHNpemUgPiBQQUdFX1NJ WkUpCj4gPiAtCQkJc2l6ZSAtPSBQQUdFX1NJWkU7Cj4gPiAtCQllbHNlCj4gPiAtCQkJc2l6ZSA9 IDA7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JLyogVk1fSU8gfCBWTV9ET05URVhQQU5EIHwgVk1fRE9O VERVTVAgYXJlIHNldCBieSByZW1hcF9wZm5fcmFuZ2UoKSAqLwo+ID4gLQlyZXR1cm4gMDsKPiA+ IC19Cj4gPiAtCj4gPiAtLyoKPiA+IC0gKiBJdCdzIGNvbW1vbiBmb3Igc2V2ZXJhbCBjbGllbnRz IHRvIGhhdmUgZnJhbWVidWZmZXIgb3BlbiBzaW11bHRhbmVvdXNseS4KPiA+IC0gKiBlLmcuIGJv dGggZmJjb24gYW5kIFguIE1ha2VzIHRoaW5ncyBpbnRlcmVzdGluZy4KPiA+IC0gKiBBc3N1bWVz IGNhbGxlciBpcyBob2xkaW5nIGluZm8tPmxvY2sgKGZvciBvcGVuIGFuZCByZWxlYXNlIGF0IGxl YXN0KQo+ID4gLSAqLwo+ID4gLXN0YXRpYyBpbnQgdWRsX2ZiX29wZW4oc3RydWN0IGZiX2luZm8g KmluZm8sIGludCB1c2VyKQo+ID4gLXsKPiA+IC0Jc3RydWN0IHVkbF9mYmRldiAqdWZiZGV2ID0g aW5mby0+cGFyOwo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdWZiZGV2LT51ZmIuYmFz ZS5kZXY7Cj4gPiAtCXN0cnVjdCB1ZGxfZGV2aWNlICp1ZGwgPSB0b191ZGwoZGV2KTsKPiA+IC0K PiA+IC0JLyogSWYgdGhlIFVTQiBkZXZpY2UgaXMgZ29uZSwgd2UgZG9uJ3QgYWNjZXB0IG5ldyBv cGVucyAqLwo+ID4gLQlpZiAoZHJtX2Rldl9pc191bnBsdWdnZWQoJnVkbC0+ZHJtKSkKPiA+IC0J CXJldHVybiAtRU5PREVWOwo+ID4gLQo+ID4gLQl1ZmJkZXYtPmZiX2NvdW50Kys7Cj4gPiAtCj4g PiAtI2lmZGVmIENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OCj4gPiAtCWlmIChmYl9kZWZpbyAm JiAoaW5mby0+ZmJkZWZpbyA9PSBOVUxMKSkgewo+ID4gLQkJLyogZW5hYmxlIGRlZmlvIGF0IGxh c3QgbW9tZW50IGlmIG5vdCBkaXNhYmxlZCBieSBjbGllbnQgKi8KPiA+IC0KPiA+IC0JCXN0cnVj dCBmYl9kZWZlcnJlZF9pbyAqZmJkZWZpbzsKPiA+IC0KPiA+IC0JCWZiZGVmaW8gPSBremFsbG9j KHNpemVvZihzdHJ1Y3QgZmJfZGVmZXJyZWRfaW8pLCBHRlBfS0VSTkVMKTsKPiA+IC0KPiA+IC0J CWlmIChmYmRlZmlvKSB7Cj4gPiAtCQkJZmJkZWZpby0+ZGVsYXkgPSBETF9ERUZJT19XUklURV9E RUxBWTsKPiA+IC0JCQlmYmRlZmlvLT5kZWZlcnJlZF9pbyA9IGRybV9mYl9oZWxwZXJfZGVmZXJy ZWRfaW87Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQlpbmZvLT5mYmRlZmlvID0gZmJkZWZpbzsKPiA+ IC0JCWZiX2RlZmVycmVkX2lvX2luaXQoaW5mbyk7Cj4gPiAtCX0KPiA+IC0jZW5kaWYKPiA+IC0K PiA+IC0JcHJfZGVidWcoIm9wZW4gL2Rldi9mYiVkIHVzZXI9JWQgZmJfaW5mbz0lcCBjb3VudD0l ZFxuIiwKPiA+IC0JCSAgaW5mby0+bm9kZSwgdXNlciwgaW5mbywgdWZiZGV2LT5mYl9jb3VudCk7 Cj4gPiAtCj4gPiAtCXJldHVybiAwOwo+ID4gLX0KPiA+IC0KPiA+IC0KPiA+IC0vKgo+ID4gLSAq IEFzc3VtZXMgY2FsbGVyIGlzIGhvbGRpbmcgaW5mby0+bG9jayBtdXRleCAoZm9yIG9wZW4gYW5k IHJlbGVhc2UgYXQgbGVhc3QpCj4gPiAtICovCj4gPiAtc3RhdGljIGludCB1ZGxfZmJfcmVsZWFz ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgdWRs X2ZiZGV2ICp1ZmJkZXYgPSBpbmZvLT5wYXI7Cj4gPiAtCj4gPiAtCXVmYmRldi0+ZmJfY291bnQt LTsKPiA+IC0KPiA+IC0jaWZkZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04KPiA+IC0JaWYg KCh1ZmJkZXYtPmZiX2NvdW50ID09IDApICYmIChpbmZvLT5mYmRlZmlvKSkgewo+ID4gLQkJZmJf ZGVmZXJyZWRfaW9fY2xlYW51cChpbmZvKTsKPiA+IC0JCWtmcmVlKGluZm8tPmZiZGVmaW8pOwo+ ID4gLQkJaW5mby0+ZmJkZWZpbyA9IE5VTEw7Cj4gPiAtCQlpbmZvLT5mYm9wcy0+ZmJfbW1hcCA9 IHVkbF9mYl9tbWFwOwo+ID4gLQl9Cj4gPiAtI2VuZGlmCj4gPiAtCj4gPiAtCXByX2RlYnVnKCJy ZWxlYXNlZCAvZGV2L2ZiJWQgdXNlcj0lZCBjb3VudD0lZFxuIiwKPiA+IC0JCWluZm8tPm5vZGUs IHVzZXIsIHVmYmRldi0+ZmJfY291bnQpOwo+ID4gLQo+ID4gLQlyZXR1cm4gMDsKPiA+IC19Cj4g PiAtCj4gPiAtc3RhdGljIHN0cnVjdCBmYl9vcHMgdWRsZmJfb3BzID0gewo+ID4gLQkub3duZXIg PSBUSElTX01PRFVMRSwKPiA+IC0JRFJNX0ZCX0hFTFBFUl9ERUZBVUxUX09QUywKPiA+IC0JLmZi X2ZpbGxyZWN0ID0gZHJtX2ZiX2hlbHBlcl9zeXNfZmlsbHJlY3QsCj4gPiAtCS5mYl9jb3B5YXJl YSA9IGRybV9mYl9oZWxwZXJfc3lzX2NvcHlhcmVhLAo+ID4gLQkuZmJfaW1hZ2VibGl0ID0gZHJt X2ZiX2hlbHBlcl9zeXNfaW1hZ2VibGl0LAo+ID4gLQkuZmJfbW1hcCA9IHVkbF9mYl9tbWFwLAo+ ID4gLQkuZmJfb3BlbiA9IHVkbF9mYl9vcGVuLAo+ID4gLQkuZmJfcmVsZWFzZSA9IHVkbF9mYl9y ZWxlYXNlLAo+ID4gLX07Cj4gPiAtCj4gPiAgc3RhdGljIGludCB1ZGxfdXNlcl9mcmFtZWJ1ZmZl cl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ICAJCQkJICAgICAgc3RydWN0 IGRybV9maWxlICpmaWxlLAo+ID4gIAkJCQkgICAgICB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQg Y29sb3IsCj4gPiBAQCAtMzQ2LDE1MCArMjE5LDIwIEBAIHVkbF9mcmFtZWJ1ZmZlcl9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCXJldHVybiByZXQ7Cj4gPiAgfQo+ID4gIAo+ID4g LQo+ID4gLXN0YXRpYyBpbnQgdWRsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIsCj4gPiAtCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcykKPiA+ IC17Cj4gPiAtCXN0cnVjdCB1ZGxfZmJkZXYgKnVmYmRldiA9Cj4gPiAtCQljb250YWluZXJfb2Yo aGVscGVyLCBzdHJ1Y3QgdWRsX2ZiZGV2LCBoZWxwZXIpOwo+ID4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gdWZiZGV2LT5oZWxwZXIuZGV2Owo+ID4gLQlzdHJ1Y3QgZmJfaW5mbyAqaW5mbzsK PiA+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPiAtCXN0cnVjdCBkcm1fbW9kZV9m Yl9jbWQyIG1vZGVfY21kOwo+ID4gLQlzdHJ1Y3QgdWRsX2dlbV9vYmplY3QgKm9iajsKPiA+IC0J dWludDMyX3Qgc2l6ZTsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAtCj4gPiAtCWlmIChzaXplcy0+ c3VyZmFjZV9icHAgPT0gMjQpCj4gPiAtCQlzaXplcy0+c3VyZmFjZV9icHAgPSAzMjsKPiA+IC0K PiA+IC0JbW9kZV9jbWQud2lkdGggPSBzaXplcy0+c3VyZmFjZV93aWR0aDsKPiA+IC0JbW9kZV9j bWQuaGVpZ2h0ID0gc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0Owo+ID4gLQltb2RlX2NtZC5waXRjaGVz WzBdID0gbW9kZV9jbWQud2lkdGggKiAoKHNpemVzLT5zdXJmYWNlX2JwcCArIDcpIC8gOCk7Cj4g PiAtCj4gPiAtCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3Jt YXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAo+ID4gLQkJCQkJCQkgIHNpemVzLT5zdXJmYWNlX2RlcHRo KTsKPiA+IC0KPiA+IC0Jc2l6ZSA9IG1vZGVfY21kLnBpdGNoZXNbMF0gKiBtb2RlX2NtZC5oZWln aHQ7Cj4gPiAtCXNpemUgPSBBTElHTihzaXplLCBQQUdFX1NJWkUpOwo+ID4gLQo+ID4gLQlvYmog PSB1ZGxfZ2VtX2FsbG9jX29iamVjdChkZXYsIHNpemUpOwo+ID4gLQlpZiAoIW9iaikKPiA+IC0J CWdvdG8gb3V0Owo+ID4gLQo+ID4gLQlyZXQgPSB1ZGxfZ2VtX3ZtYXAob2JqKTsKPiA+IC0JaWYg KHJldCkgewo+ID4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gdm1hcCBmYlxuIik7Cj4gPiAtCQln b3RvIG91dF9nZnJlZTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlpbmZvID0gZHJtX2ZiX2hlbHBlcl9h bGxvY19mYmkoaGVscGVyKTsKPiA+IC0JaWYgKElTX0VSUihpbmZvKSkgewo+ID4gLQkJcmV0ID0g UFRSX0VSUihpbmZvKTsKPiA+IC0JCWdvdG8gb3V0X2dmcmVlOwo+ID4gLQl9Cj4gPiAtCj4gPiAt CXJldCA9IHVkbF9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJnVmYmRldi0+dWZiLCAmbW9kZV9jbWQs IG9iaik7Cj4gPiAtCWlmIChyZXQpCj4gPiAtCQlnb3RvIG91dF9nZnJlZTsKPiA+IC0KPiA+IC0J ZmIgPSAmdWZiZGV2LT51ZmIuYmFzZTsKPiA+IC0KPiA+IC0JdWZiZGV2LT5oZWxwZXIuZmIgPSBm YjsKPiA+IC0KPiA+IC0JaW5mby0+c2NyZWVuX2Jhc2UgPSB1ZmJkZXYtPnVmYi5vYmotPnZtYXBw aW5nOwo+ID4gLQlpbmZvLT5maXguc21lbV9sZW4gPSBzaXplOwo+ID4gLQlpbmZvLT5maXguc21l bV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKXVmYmRldi0+dWZiLm9iai0+dm1hcHBpbmc7Cj4gPiAt Cj4gPiAtCWluZm8tPmZib3BzID0gJnVkbGZiX29wczsKPiA+IC0JZHJtX2ZiX2hlbHBlcl9maWxs X2luZm8oaW5mbywgJnVmYmRldi0+aGVscGVyLCBzaXplcyk7Cj4gPiAtCj4gPiAtCURSTV9ERUJV R19LTVMoImFsbG9jYXRlZCAlZHglZCB2bWFsICVwXG4iLAo+ID4gLQkJICAgICAgZmItPndpZHRo LCBmYi0+aGVpZ2h0LAo+ID4gLQkJICAgICAgdWZiZGV2LT51ZmIub2JqLT52bWFwcGluZyk7Cj4g PiAtCj4gPiAtCXJldHVybiByZXQ7Cj4gPiAtb3V0X2dmcmVlOgo+ID4gLQlkcm1fZ2VtX29iamVj dF9wdXRfdW5sb2NrZWQoJnVmYmRldi0+dWZiLm9iai0+YmFzZSk7Cj4gPiAtb3V0Ogo+ID4gLQly ZXR1cm4gcmV0Owo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9o ZWxwZXJfZnVuY3MgdWRsX2ZiX2hlbHBlcl9mdW5jcyA9IHsKPiA+IC0JLmZiX3Byb2JlID0gdWRs ZmJfY3JlYXRlLAo+ID4gLX07Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgdWRsX2ZiZGV2X2Rlc3Ry b3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+IC0JCQkgICAgICBzdHJ1Y3QgdWRsX2ZiZGV2 ICp1ZmJkZXYpCj4gPiAtewo+ID4gLQlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZ1ZmJk ZXYtPmhlbHBlcik7Cj4gPiAtCWRybV9mYl9oZWxwZXJfZmluaSgmdWZiZGV2LT5oZWxwZXIpOwo+ ID4gLQlpZiAodWZiZGV2LT51ZmIub2JqKSB7Cj4gPiAtCQlkcm1fZnJhbWVidWZmZXJfdW5yZWdp c3Rlcl9wcml2YXRlKCZ1ZmJkZXYtPnVmYi5iYXNlKTsKPiA+IC0JCWRybV9mcmFtZWJ1ZmZlcl9j bGVhbnVwKCZ1ZmJkZXYtPnVmYi5iYXNlKTsKPiA+IC0JCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZCgmdWZiZGV2LT51ZmIub2JqLT5iYXNlKTsKPiA+IC0JfQo+ID4gLX0KPiA+IC0KPiA+ICBp bnQgdWRsX2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICB7Cj4gPiAtCXN0 cnVjdCB1ZGxfZGV2aWNlICp1ZGwgPSB0b191ZGwoZGV2KTsKPiA+ICAJaW50IGJwcF9zZWwgPSBm Yl9icHA7Cj4gPiAtCXN0cnVjdCB1ZGxfZmJkZXYgKnVmYmRldjsKPiA+ICAJaW50IHJldDsKPiA+ ICAKPiA+IC0JdWZiZGV2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHVkbF9mYmRldiksIEdGUF9L RVJORUwpOwo+ID4gLQlpZiAoIXVmYmRldikKPiA+IC0JCXJldHVybiAtRU5PTUVNOwo+ID4gLQo+ ID4gLQl1ZGwtPmZiZGV2ID0gdWZiZGV2Owo+ID4gLQo+ID4gLQlkcm1fZmJfaGVscGVyX3ByZXBh cmUoZGV2LCAmdWZiZGV2LT5oZWxwZXIsICZ1ZGxfZmJfaGVscGVyX2Z1bmNzKTsKPiA+IC0KPiA+ IC0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0KGRldiwgJnVmYmRldi0+aGVscGVyLCAxKTsKPiA+ IC0JaWYgKHJldCkKPiA+IC0JCWdvdG8gZnJlZTsKPiA+IC0KPiA+IC0JcmV0ID0gZHJtX2ZiX2hl bHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3JzKCZ1ZmJkZXYtPmhlbHBlcik7Cj4gPiArCXJl dCA9IGRybV9mYmRldl9nZW5lcmljX3NldHVwKGRldiwgYnBwX3NlbCk7Cj4gPiAgCWlmIChyZXQp Cj4gPiAtCQlnb3RvIGZpbmk7Cj4gPiAtCj4gPiAtCS8qIGRpc2FibGUgYWxsIHRoZSBwb3NzaWJs ZSBvdXRwdXRzL2NydGNzIGJlZm9yZSBlbnRlcmluZyBLTVMgbW9kZSAqLwo+ID4gLQlkcm1faGVs cGVyX2Rpc2FibGVfdW51c2VkX2Z1bmN0aW9ucyhkZXYpOwo+ID4gLQo+ID4gLQlyZXQgPSBkcm1f ZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKCZ1ZmJkZXYtPmhlbHBlciwgYnBwX3NlbCk7Cj4gPiAt CWlmIChyZXQpCj4gPiAtCQlnb3RvIGZpbmk7Cj4gPiAtCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4g IAlyZXR1cm4gMDsKPiA+IC0KPiA+IC1maW5pOgo+ID4gLQlkcm1fZmJfaGVscGVyX2ZpbmkoJnVm YmRldi0+aGVscGVyKTsKPiA+IC1mcmVlOgo+ID4gLQlrZnJlZSh1ZmJkZXYpOwo+ID4gLQlyZXR1 cm4gcmV0Owo+ID4gLX0KPiA+IC0KPiA+IC12b2lkIHVkbF9mYmRldl9jbGVhbnVwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgdWRsX2RldmljZSAqdWRsID0gdG9f dWRsKGRldik7Cj4gPiAtCWlmICghdWRsLT5mYmRldikKPiA+IC0JCXJldHVybjsKPiA+IC0KPiA+ IC0JdWRsX2ZiZGV2X2Rlc3Ryb3koZGV2LCB1ZGwtPmZiZGV2KTsKPiA+IC0Ja2ZyZWUodWRsLT5m YmRldik7Cj4gPiAtCXVkbC0+ZmJkZXYgPSBOVUxMOwo+ID4gIH0KPiA+ICAKPiA+ICB2b2lkIHVk bF9mYmRldl91bnBsdWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICB7Cj4gPiAtCXN0cnVj dCB1ZGxfZGV2aWNlICp1ZGwgPSB0b191ZGwoZGV2KTsKPiA+IC0Jc3RydWN0IHVkbF9mYmRldiAq dWZiZGV2Owo+ID4gLQlpZiAoIXVkbC0+ZmJkZXYpCj4gPiAtCQlyZXR1cm47Cj4gPiAtCj4gPiAt CXVmYmRldiA9IHVkbC0+ZmJkZXY7Cj4gPiAtCWRybV9mYl9oZWxwZXJfdW5saW5rX2ZiaSgmdWZi ZGV2LT5oZWxwZXIpOwo+ID4gKwlkcm1fZmJfaGVscGVyX3VubGlua19mYmkoZGV2LT5mYl9oZWxw ZXIpOwo+IAo+IFVoIEkgdGhpbmsgdGhpcyBoZXJlIGNhbiBiZSBhbGwgZ2FyYmFnZS1jb2xsZWN0 ZWQuIFRoZSBnZW5lcmljIGZiZGV2Cj4gYWxyZWFkeSBjYWxscyBkcm1fZmJfaGVscGVyX3VucmVn aXN0ZXJfZmJpLCB3aGljaCBjYWxscwo+IHVucmVnaXN0ZXJfZnJhbWVidWZmZXIsIHdoaWNoIGlz IGEgc3RyaWN0IHN1cGVyc2V0IG9mIHVubGlua19mcmFtZWJ1ZmZlci4KPiBUaGUgbGF0ZXIgaXNu J3QgcmVhbGx5IGVub3VnaCBmb3IgaG90dW5wbHVnLgo+IAo+IFNvIGZvciBnZW5lcmljIGZiZGV2 IHlvdSByZWFsbHkgc2hvdWxkbid0IG5lZWQgYW55IGNsZWFudXAgbm9yIHVucGx1Zwo+IGZ1bmN0 aW9ucyBhbnltb3JlLgo+IAo+IEFsc28gdWRsIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBkcm1fZmJf aGVscGVyX3VubGlua19mYmksIHNvIHdlIGNvdWxkIGRyb3AKPiB0aGF0LiBXaGljaCByZW1vdmVz IHRoZSBvbmx5IGV4dGVybmFsIGNhbGxlciBvZiB1bmxpbmtfZnJhbWVidWZmZXIsIHNvIHdlCj4g Y2FuIGRyb3AgdGhhdCB0b28uIENhcmUgdG8gZm9sbG93IHVwIHdpdGggdGhvc2UgMiBwYXRjaGVz Pwo+IAo+IEFzaWRlIGZyb20gdGhpcyB0aGlzIHBhdGNoIGhlcmUgbG9va3MgZ3JlYXQhCj4gLURh bmllbAo+IAo+ID4gIH0KPiA+ICAKPiA+ICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMgYi9kcml2ZXJzL2dwdS9k cm0vdWRsL3VkbF9tYWluLmMKPiA+IGluZGV4IDRlODU0ZTAxNzM5MC4uMmE2Mzk5MjkwZjA5IDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbWFpbi5jCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMKPiA+IEBAIC0zNjcsNiArMzY3LDQgQEAgdm9p ZCB1ZGxfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAo+ID4gIAlpZiAodWRsLT51 cmJzLmNvdW50KQo+ID4gIAkJdWRsX2ZyZWVfdXJiX2xpc3QoZGV2KTsKPiA+IC0KPiA+IC0JdWRs X2ZiZGV2X2NsZWFudXAoZGV2KTsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3VkbC91ZGxfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5j Cj4gPiBpbmRleCBiYzFhYjYwNjBkYzYuLjE1MTdkNWU4ODFiOCAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3VkbC91ZGxfbW9kZXNldC5jCj4gPiBAQCAtMTAsNiArMTAsNyBAQAo+ID4gICAqLwo+ID4gIAo+ ID4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9k cm1fZmJfaGVscGVyLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRh Ymxlcy5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ID4gIAo+ID4gQEAgLTQy Miw3ICs0MjMsNyBAQCBzdGF0aWMgaW50IHVkbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiA+ICAKPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5j cyB1ZGxfbW9kZV9mdW5jcyA9IHsKPiA+ICAJLmZiX2NyZWF0ZSA9IHVkbF9mYl91c2VyX2ZiX2Ny ZWF0ZSwKPiA+IC0JLm91dHB1dF9wb2xsX2NoYW5nZWQgPSBOVUxMLAo+ID4gKwkub3V0cHV0X3Bv bGxfY2hhbmdlZCA9IGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCwKPiA+ICB9Owo+ ID4gIAo+ID4gIGludCB1ZGxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g PiAtLSAKPiA+IDIuMjMuMAo+ID4gCj4gCj4gLS0gCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs