From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 5/9] drm/fb-helper: Add generic fbdev emulation .fb_probe function Date: Fri, 28 Dec 2018 21:38:42 +0100 Message-ID: References: <20180523143411.64070-1-noralf@tronnes.org> <20180523143411.64070-6-noralf@tronnes.org> <20180524091605.GH3438@phenom.ffwll.local> <8c876daa-5150-009f-af3a-01573144d452@tronnes.org> <20180529075456.GA3438@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-it1-x141.google.com (mail-it1-x141.google.com [IPv6:2607:f8b0:4864:20::141]) by gabe.freedesktop.org (Postfix) with ESMTPS id AFF7F897C5 for ; Fri, 28 Dec 2018 20:38:55 +0000 (UTC) Received: by mail-it1-x141.google.com with SMTP id h65so28218873ith.3 for ; Fri, 28 Dec 2018 12:38:55 -0800 (PST) In-Reply-To: <20180529075456.GA3438@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: =?UTF-8?Q?Noralf_Tr=C3=B8nnes?= Cc: intel-gfx , Laurent Pinchart , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMjksIDIwMTggYXQgOTo1NCBBTSBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3 bGwuY2g+IHdyb3RlOgo+Cj4gT24gRnJpLCBNYXkgMjUsIDIwMTggYXQgMDI6NDI6MDJQTSArMDIw MCwgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+ID4KPiA+IERlbiAyNC4wNS4yMDE4IDExLjE2LCBz a3JldiBEYW5pZWwgVmV0dGVyOgo+ID4gPiBPbiBXZWQsIE1heSAyMywgMjAxOCBhdCAwNDozNDow N1BNICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPiA+ID4gVGhpcyBpcyB0aGUgZmly c3Qgc3RlcCBpbiBnZXR0aW5nIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uLgo+ID4gPiA+IEEgZHJt X2ZiX2hlbHBlcl9mdW5jcy5mYl9wcm9iZSBmdW5jdGlvbiBpcyBhZGRlZCB3aGljaCB1c2VzIHRo ZQo+ID4gPiA+IERSTSBjbGllbnQgQVBJIHRvIGdldCBhIGZyYW1lYnVmZmVyIGJhY2tlZCBieSBh IGR1bWIgYnVmZmVyLgo+ID4gPiA+Cj4gPiA+ID4gQSB0cmFuc2l0aW9uYWwgaGFjayBmb3IgdGlu eWRybSBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gc3dpdGNoIG92ZXIgYWxsCj4gPiA+ID4gQ01BIGhl bHBlciBkcml2ZXJzIGluIGEgbGF0ZXIgcGF0Y2guIFRoaXMgaGFjayB3aWxsIGJlIHJlbW92ZWQg d2hlbgo+ID4gPiA+IHRpbnlkcm0gbW92ZXMgdG8gdm1hbGxvYyBidWZmZXJzLgo+ID4gPiA+Cj4g PiA+ID4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ Cj4gPiA+ID4gLS0tCj4gPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwg MTY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgIGlu Y2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAgMjYgKysrKysrKwo+ID4gPiA+ICAgMiBm aWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKQo+ID4gPiA+Cj4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZiX2hlbHBlci5jCj4gPiA+ID4gaW5kZXggMmVlMWVhYTY2MTg4Li40NDRjMmI0MDQwZWEgMTAw NjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiA+ID4gPiBAQCAtMzAsMTEg KzMwLDEzIEBACj4gPiA+ID4gICAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6 ICIgZm10Cj4gPiA+ID4gICAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgo+ID4gPiA+ICsjaW5j bHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ID4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pgo+ID4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L3N5c3JxLmg+Cj4gPiA+ID4gICAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ID4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+ ICAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVu dC5oPgo+ID4gPiA+ICAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ID4gPiA+ICAgI2luY2x1 ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gPiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPgo+ID4gPiA+IEBAIC0yOTI4LDYgKzI5MzAsMTY4IEBAIHZvaWQgZHJtX2ZiX2hl bHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ID4g ICB9Cj4gPiA+ID4gICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hh bmdlZCk7Cj4gPiA+ID4gKy8qIEB1c2VyOiAxPXVzZXJzcGFjZSwgMD1mYmNvbiAqLwo+ID4gPiA+ ICtzdGF0aWMgaW50IGRybV9mYmRldl9mYl9vcGVuKHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQg dXNlcikKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciA9IGluZm8tPnBhcjsKPiA+ID4gPiArCj4gPiA+ID4gKyBpZiAoIXRyeV9tb2R1bGVfZ2V0KGZi X2hlbHBlci0+ZGV2LT5kcml2ZXItPmZvcHMtPm93bmVyKSkKPiA+ID4gPiArICAgICAgICAgcmV0 dXJuIC1FTk9ERVY7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgZHJtX2ZiZGV2X2ZiX3JlbGVhc2Uoc3RydWN0IGZi X2luZm8gKmluZm8sIGludCB1c2VyKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ID4gPiA+ICsKPiA+ID4gPiArIG1vZHVs ZV9wdXQoZmJfaGVscGVyLT5kZXYtPmRyaXZlci0+Zm9wcy0+b3duZXIpOwo+ID4gPiA+ICsKPiA+ ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+IEhtLCBJIHRob3VnaHQgZWFybGllciB2 ZXJzaW9ucyBvZiB5b3VyIHBhdGNoIHNlcmllcyBoYWQgdGhpcyBzZXBhcmF0ZWx5LAo+ID4gPiBm b3IgZXZlcnlvbmUuIFdoYXQncyB0aGUgcmVhc29ucyBmb3IgbWVyZ2luZyB0aGlzIGludG8gdGhl IGZiX3Byb2JlCj4gPiA+IGltcGxlbWVudGF0aW9uLgo+ID4KPiA+IFRoaXMgaXMgb25seSBuZWNl c3Nhcnkgd2hlbiBzdHJ1Y3QgZmJfb3BzIGlzIGRlZmluZWQgaW4gYSBsaWJyYXJ5IHdoZXJlCj4g PiB0aGUgb3duZXIgZmllbGQgaXMgdGhlIGxpYnJhcnkgbW9kdWxlIGFuZCBub3QgdGhlIGRyaXZl ciBtb2R1bGUuCj4gPiBJIHJlYWxpc2VkIHRoYXQgd2l0aCB0aGlzIGdlbmVyaWMgdmVyc2lvbiBp dCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlCj4gPiBnZXQgYW5vdGhlciBsaWJyYXJ5IHRoYXQg ZGVmaW5lcyBzdHJ1Y3QgZmJfb3BzLCBzbyBpdCdzIG9ubHkgbmVlZGVkIGhlcmUuCj4KPiBIbSwg SSdtIHN0aWxsIG5vdCAxMDAlIGNvbnZpbmNlZCB3ZSBjYW4gZnVsbHkgc3Vic3VtZSB0aGUgdGlu eWRybSBmYmRldgo+IGNvZGUgd2l0aCB0aGUgZ2VuZXJpYyBvbmUsIGR1ZSB0byB0aGUgdmFyaW9z IHNsaWdodCBpc3N1ZXMgYXJvdW5kIGRlZmlvCj4gdHJhY2tpbmcgdGhhdCB3ZSBzdGlsbCBoYXZl LgoKSSBoYXZlIGEgbmV3IGlkZWEgZm9yIDEwMCUgZ2VuZXJpYyBkZWZpbyBzdXBwb3J0IGluIHRo ZSBmYmRldiBoZWxwZXJzLgpIYXZlbid0IHRyaWVkIGl0IHRob3VnaHQsIGJ1dCBJIHRoaW5rIHRo aXMgY291bGQgd29yayBhcm91bmQgdGhlCnByb2JsZW0gaWYgeW91ciBtbWFwIGlzbid0IHN0cnVj dCBwYWdlIGJhY2tlZDoKCi0gSW4gdGhlIGRybV9mYmRldl9mYl9tbWFwIGhlbHBlciwgaWYgd2Ug bmVlZCBkZWZpbywgY2hhbmdlIHRoZQpkZWZhdWx0IHBhZ2UgcHJvdHMgdG8gd3JpdGUtcHJvdGVj dGVkIHdpdGggc29tZXRoaW5nIGxpa2UgdGhpczoKCnZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90 X3dycHJvdGVjdCh2bWEtPnZtX3BhZ2VfcHJvdCk7CgotIEFmdGVyIHRoZSBkcml2ZXIncyBtbWFw IGZ1bmN0aW9uIGNvbXBsZXRlZCwgY29weSB0aGUgdm1fb3BzCnN0cnVjdHVyZSBhbmQgV0FSTl9P TiBpZiBpdCBoYXMgYW4gbWt3cml0ZSBhbmQgc3luYyBjYWxsYmFjayBzZXQuClRoZXJlJ3Mgbm8g cmVhbCByYWNlIGhlcmUgYXMgbG9uZyBhcyB3ZSBkbyBhbGwgdGhpcyBiZWZvcmUgd2UgcmV0dXJu CnRvIHVzZXJzcGFjZS4KCi0gU2V0IHRoZSBta3dyaXRlIGFuZCBmc3luYyBjYWxsYmFja3Mgd2l0 aCBzaW1pbGFyIGltcGxlbWVudGlvbnMgdG8KdGhlIGNvcmUgZmJkZXYgZGVmaW8gc3R1ZmYuIFRo ZXNlIHNob3VsZCBhbGwgd29yayBvbiBwbGFpbiBwdGVzLCB0aGV5CmRvbid0IGFjdHVhbGx5IHJl cXVpcmUgYSBzdHJ1Y3QgcGFnZS4KdWZmLiBUaGVzZSBzaG91bGQgYWxsIHdvcmsgb24gcGxhaW4g cHRlcywgdGhleSBkb24ndCBhY3R1YWxseSByZXF1aXJlCmEgc3RydWN0IHBhZ2UuCgotIFdlIG1p Z2h0IGFsc28gbmVlZCB0byBvdmVyd3JpdGUgdGhlIHZtYV9vcHMgZmF1bHQgY2FsbGJhY2ssIGp1 c3QKZm9yd2FyZGluZyB0byB0aGUgdW5kZXJseWluZyB2bWFfb3BzIGluc3RlYWQgb2YgY29weWlu ZyB0aGVtIHdvdWxkIGJlCmNsZWFuZXIuIFRoZSBvdmVyaGVhZCB3b24ndCBtYXR0ZXIsIGVzcGVj aWFsbHkgbm90IGZvciBkZWZpbyBkcml2ZXJzLgoKLSBBbHNvIGNvcHlwYXN0ZSBhbGwgdGhlIG90 aGVyIGJpdHMgb2YgdGhlIGNvcmUgZmJkZXYgZGVmaW8gY29kZSB3ZSdsbApuZWVkLCB0aGF0IHdv dWxkIGFsbG93IHVzIHRvIGFsc28gY2xlYW4gdXAgdGhlIGNsZWFudXAoKSB3YXJ0cyAuLi4KCkFs bCBvZiB0aGlzIHdvdWxkIG9mYyBvbmx5IGJlIGRvbmUgaWYgdGhlIGZiIGhhcyBhIC0+ZGlydHkg Y2FsbGJhY2suCgpXZSBjYW4gYWxzbyBqdXN0IHN0dWZmIHRoaXMgaW50byB0b2RvLnJzdC4KCkNo ZWVycywgRGFuaWVsCgoKPgo+IEJ1dCBpdCdzIGFsc28gZWFzeSB0byBleHBvcnQgdGhpcyBsYXRl ciBvbi4gSWYgeW91IGFkZCBhIGNvbW1lbnQKPiBleHBsYWluaW5nIHdoYXQgeW91IGV4cGxhaW5l ZCBoZXJlIHRvIHRoZSBjb21taXQgbWVzc2FnZSBJIHRoaW5rIHRoaXMgaXMKPiBhbGwgZmluZSB3 aXRoIG1lIGFzLWlzLgo+IC1EYW5pZWwKPgo+ID4KPiA+IE5vcmFsZi4KPiA+Cj4gPiA+ID4gKwo+ ID4gPiA+ICsvKgo+ID4gPiA+ICsgKiBmYl9vcHMuZmJfZGVzdHJveSBpcyBjYWxsZWQgYnkgdGhl IGxhc3QgcHV0X2ZiX2luZm8oKSBjYWxsIGF0IHRoZSBlbmQgb2YKPiA+ID4gPiArICogdW5yZWdp c3Rlcl9mcmFtZWJ1ZmZlcigpIG9yIGZiX3JlbGVhc2UoKS4KPiA+ID4gPiArICovCj4gPiA+ID4g K3N0YXRpYyB2b2lkIGRybV9mYmRldl9mYl9kZXN0cm95KHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5m by0+cGFyOwo+ID4gPiA+ICsgc3RydWN0IGZiX29wcyAqZmJvcHMgPSBOVUxMOwo+ID4gPiA+ICsK PiA+ID4gPiArIERSTV9ERUJVRygiXG4iKTsKPiA+ID4gPiArCj4gPiA+ID4gKyBpZiAoZmJfaGVs cGVyLT5mYmRldi0+ZmJkZWZpbykgewo+ID4gPiA+ICsgICAgICAgICBmYl9kZWZlcnJlZF9pb19j bGVhbnVwKGZiX2hlbHBlci0+ZmJkZXYpOwo+ID4gPiA+ICsgICAgICAgICBmYm9wcyA9IGZiX2hl bHBlci0+ZmJkZXYtPmZib3BzOwo+ID4gPiA+ICsgfQo+ID4gPiA+ICsKPiA+ID4gPiArIGRybV9m Yl9oZWxwZXJfZmluaShmYl9oZWxwZXIpOwo+ID4gPiA+ICsgZHJtX2NsaWVudF9mcmFtZWJ1ZmZl cl9kZWxldGUoZmJfaGVscGVyLT5idWZmZXIpOwo+ID4gPiA+ICsgZHJtX2NsaWVudF9mcmVlKGZi X2hlbHBlci0+Y2xpZW50KTsKPiA+ID4gPiArIGtmcmVlKGZiX2hlbHBlcik7Cj4gPiA+ID4gKyBr ZnJlZShmYm9wcyk7Cj4gPiA+ID4gK30KPiA+ID4gSG0sIGlmIHdlIGdvIHdpdGggdGhlIGlkZWEg dGhhdCBkcm1fY2xpZW50cyBjb3VsZCBhdXRvLXVucmVnaXN0ZXIgdGhyb3VnaAo+ID4gPiBhIGNh bGxiYWNrLCB0aGVuIEkgZXhwZWN0IHRoaXMgd2lsbCBsZWFkIHRvIHNvbWUgY29udHJvbCBpbnZl cnNpb24uIEJ1dCB3ZQo+ID4gPiBjYW4gZml4IHRoYXQgbGF0ZXIgb24uCj4gPiA+Cj4gPiA+ID4g Kwo+ID4gPiA+ICtzdGF0aWMgaW50IGRybV9mYmRldl9mYl9tbWFwKHN0cnVjdCBmYl9pbmZvICpp bmZvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+ID4gPiArCj4gPiA+ ID4gKyBpZiAoZmJfaGVscGVyLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX21tYXApCj4gPiA+ID4g KyAgICAgICAgIHJldHVybiBmYl9oZWxwZXItPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfbW1hcChm Yl9oZWxwZXItPmJ1ZmZlci0+Z2VtLCB2bWEpOwo+ID4gPiA+ICsgZWxzZQo+ID4gPiA+ICsgICAg ICAgICByZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGlj IHN0cnVjdCBmYl9vcHMgZHJtX2ZiZGV2X2ZiX29wcyA9IHsKPiA+ID4gPiArIC8qIE5vIG5lZWQg dG8gc2V0IG93bmVyLCB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5IHBpbm5lZCBieSB0aGUgZHJpdmVy LiAqLwo+ID4gPiBJJ2Qgc3RpbGwgc2V0IGl0LCBtZWFucyBsZXNzIHRoaW5raW5nIHNpbmNlIG1v cmUgb2J2aW91c2x5IGNvcnJlY3QuCj4gPiA+Cj4gPiA+ID4gKyBEUk1fRkJfSEVMUEVSX0RFRkFV TFRfT1BTLAo+ID4gPiA+ICsgLmZiX29wZW4gICAgICAgID0gZHJtX2ZiZGV2X2ZiX29wZW4sCj4g PiA+ID4gKyAuZmJfcmVsZWFzZSAgICAgPSBkcm1fZmJkZXZfZmJfcmVsZWFzZSwKPiA+ID4gPiAr IC5mYl9kZXN0cm95ICAgICA9IGRybV9mYmRldl9mYl9kZXN0cm95LAo+ID4gPiA+ICsgLmZiX21t YXAgICAgICAgID0gZHJtX2ZiZGV2X2ZiX21tYXAsCj4gPiA+ID4gKyAuZmJfcmVhZCAgICAgICAg PSBkcm1fZmJfaGVscGVyX3N5c19yZWFkLAo+ID4gPiA+ICsgLmZiX3dyaXRlICAgICAgID0gZHJt X2ZiX2hlbHBlcl9zeXNfd3JpdGUsCj4gPiA+ID4gKyAuZmJfZmlsbHJlY3QgICAgPSBkcm1fZmJf aGVscGVyX3N5c19maWxscmVjdCwKPiA+ID4gPiArIC5mYl9jb3B5YXJlYSAgICA9IGRybV9mYl9o ZWxwZXJfc3lzX2NvcHlhcmVhLAo+ID4gPiA+ICsgLmZiX2ltYWdlYmxpdCAgID0gZHJtX2ZiX2hl bHBlcl9zeXNfaW1hZ2VibGl0LAo+ID4gPiBIbSwgc29tZSBkcml2ZXJzIHJlcXVpcmUgdGhlIGNm YiB2ZXJzaW9ucyBvZiB0aGVzZS4gSW4gcHJhY3RpY2UgSSBndWVzcwo+ID4gPiB0aGVyZSdzIG5v dCBtdWNoIG9mIGEgZGlmZmVyZW5jZSByZWFsbHksIGF0IGxlYXN0IG9uIHg4NiBhbmQgYXJtLgo+ ID4gPgo+ID4gPiBXZSBtaWdodCB3YW50IHRvIGRvY3VtZW50IHRoYXQgdGhvdWdoLgo+ID4gPgo+ ID4gPiA+ICt9Owo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHN0cnVjdCBmYl9kZWZlcnJlZF9p byBkcm1fZmJkZXZfZGVmaW8gPSB7Cj4gPiA+ID4gKyAuZGVsYXkgICAgICAgICAgPSBIWiAvIDIw LAo+ID4gPiA+ICsgLmRlZmVycmVkX2lvICAgID0gZHJtX2ZiX2hlbHBlcl9kZWZlcnJlZF9pbywK PiA+ID4gPiArfTsKPiA+ID4gPiArCj4gPiA+ID4gKy8qCj4gPiA+ID4gKyAqIFRPRE86IFJlbW92 ZSB0aGlzIHdoZW4gdGlueWRybSBpcyBjb252ZXJ0ZWQgdG8gdm1hbGxvYyBidWZmZXJzLgo+ID4g PiA+ICsgKi8KPiA+ID4gPiArc3RhdGljIGludCBkcm1fZmJkZXZfY21hX2RlZmVycmVkX2lvX21t YXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPiA+ID4gK3sKPiA+ID4g PiArIGZiX2RlZmVycmVkX2lvX21tYXAoaW5mbywgdm1hKTsKPiA+ID4gPiArIHZtYS0+dm1fcGFn ZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bWEtPnZtX3BhZ2VfcHJvdCk7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+IE5lZWRzIGtl cm5lbGRvYyBoZXJlLgo+ID4gPgo+ID4gPiA+ICtpbnQgZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3By b2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKQo+ ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCA9IGZiX2hl bHBlci0+Y2xpZW50Owo+ID4gPiA+ICsgc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXI7 Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiA+ID4gPiArIHN0cnVjdCBm Yl9pbmZvICpmYmk7Cj4gPiA+ID4gKyB1MzIgZm9ybWF0Owo+ID4gPiA+ICsgaW50IHJldDsKPiA+ ID4gPiArCj4gPiA+ID4gKyBEUk1fREVCVUdfS01TKCJzdXJmYWNlIHdpZHRoKCVkKSwgaGVpZ2h0 KCVkKSBhbmQgYnBwKCVkKVxuIiwKPiA+ID4gPiArICAgICAgICAgICAgICAgc2l6ZXMtPnN1cmZh Y2Vfd2lkdGgsIHNpemVzLT5zdXJmYWNlX2hlaWdodCwKPiA+ID4gPiArICAgICAgICAgICAgICAg c2l6ZXMtPnN1cmZhY2VfYnBwKTsKPiA+ID4gPiArCj4gPiA+ID4gKyBmb3JtYXQgPSBkcm1fbW9k ZV9sZWdhY3lfZmJfZm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwgc2l6ZXMtPnN1cmZhY2VfZGVw dGgpOwo+ID4gPiA+ICsgYnVmZmVyID0gZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVhdGUoY2xp ZW50LCBzaXplcy0+c3VyZmFjZV93aWR0aCwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVzLT5zdXJmYWNlX2hlaWdodCwgZm9ybWF0KTsKPiA+ID4g PiArIGlmIChJU19FUlIoYnVmZmVyKSkKPiA+ID4gPiArICAgICAgICAgcmV0dXJuIFBUUl9FUlIo YnVmZmVyKTsKPiA+ID4gPiArCj4gPiA+ID4gKyBmYl9oZWxwZXItPmJ1ZmZlciA9IGJ1ZmZlcjsK PiA+ID4gPiArIGZiX2hlbHBlci0+ZmIgPSBidWZmZXItPmZiOwo+ID4gPiA+ICsgZmIgPSBidWZm ZXItPmZiOwo+ID4gPiA+ICsKPiA+ID4gPiArIGZiaSA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJp KGZiX2hlbHBlcik7Cj4gPiA+ID4gKyBpZiAoSVNfRVJSKGZiaSkpIHsKPiA+ID4gPiArICAgICAg ICAgcmV0ID0gUFRSX0VSUihmYmkpOwo+ID4gPiA+ICsgICAgICAgICBnb3RvIGVycl9mcmVlX2J1 ZmZlcjsKPiA+ID4gPiArIH0KPiA+ID4gPiArCj4gPiA+ID4gKyBmYmktPnBhciA9IGZiX2hlbHBl cjsKPiA+ID4gPiArIGZiaS0+ZmJvcHMgPSAmZHJtX2ZiZGV2X2ZiX29wczsKPiA+ID4gPiArIGZi aS0+c2NyZWVuX3NpemUgPSBmYi0+aGVpZ2h0ICogZmItPnBpdGNoZXNbMF07Cj4gPiA+ID4gKyBm YmktPmZpeC5zbWVtX2xlbiA9IGZiaS0+c2NyZWVuX3NpemU7Cj4gPiA+ID4gKyBmYmktPnNjcmVl bl9idWZmZXIgPSBidWZmZXItPnZhZGRyOwo+ID4gPiA+ICsgc3RyY3B5KGZiaS0+Zml4LmlkLCAi RFJNIGVtdWxhdGVkIik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgZHJtX2ZiX2hlbHBlcl9maWxsX2Zp eChmYmksIGZiLT5waXRjaGVzWzBdLCBmYi0+Zm9ybWF0LT5kZXB0aCk7Cj4gPiA+ID4gKyBkcm1f ZmJfaGVscGVyX2ZpbGxfdmFyKGZiaSwgZmJfaGVscGVyLCBzaXplcy0+ZmJfd2lkdGgsIHNpemVz LT5mYl9oZWlnaHQpOwo+ID4gPiA+ICsKPiA+ID4gPiArIGlmIChmYi0+ZnVuY3MtPmRpcnR5KSB7 Cj4gPiA+ID4gKyAgICAgICAgIHN0cnVjdCBmYl9vcHMgKmZib3BzOwo+ID4gPiA+ICsKPiA+ID4g PiArICAgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAgICogZmJfZGVmZXJyZWRfaW9fY2xlYW51 cCgpIGNsZWFycyAmZmJvcHMtPmZiX21tYXAgc28gYSBwZXIKPiA+ID4gPiArICAgICAgICAgICog aW5zdGFuY2UgdmVyc2lvbiBpcyBuZWNlc3NhcnkuCj4gPiA+ID4gKyAgICAgICAgICAqLwo+ID4g PiA+ICsgICAgICAgICBmYm9wcyA9IGt6YWxsb2Moc2l6ZW9mKCpmYm9wcyksIEdGUF9LRVJORUwp Owo+ID4gPiA+ICsgICAgICAgICBpZiAoIWZib3BzKSB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgcmV0ID0gLUVOT01FTTsKPiA+ID4gPiArICAgICAgICAgICAgICAgICBnb3RvIGVycl9mYl9p bmZvX2Rlc3Ryb3k7Cj4gPiA+ID4gKyAgICAgICAgIH0KPiA+ID4gPiArCj4gPiA+ID4gKyAgICAg ICAgICpmYm9wcyA9ICpmYmktPmZib3BzOwo+ID4gPiA+ICsgICAgICAgICBmYmktPmZib3BzID0g ZmJvcHM7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICBmYmktPmZiZGVmaW8gPSAmZHJtX2Zi ZGV2X2RlZmlvOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgLyogVE9ETzogUmVtb3ZlIHRo aXMgd2hlbiB0aW55ZHJtIGlzIGNvbnZlcnRlZCB0byB2bWFsbG9jIGJ1ZmZlcnMuICovCj4gPiA+ ID4gKyAgICAgICAgIGZiaS0+Zml4LnNtZW1fc3RhcnQgPSBwYWdlX3RvX3BoeXModmlydF90b19w YWdlKGJ1ZmZlci0+dmFkZHIpKTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICAgIGZiX2RlZmVy cmVkX2lvX2luaXQoZmJpKTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICAgIC8qIFRPRE86IFJl bW92ZSB0aGlzIHdoZW4gdGlueWRybSBpcyBjb252ZXJ0ZWQgdG8gdm1hbGxvYyBidWZmZXJzLiAq Lwo+ID4gPiA+ICsgICAgICAgICBmYmktPmZib3BzLT5mYl9tbWFwID0gZHJtX2ZiZGV2X2NtYV9k ZWZlcnJlZF9pb19tbWFwOwo+ID4gPiA+ICsgfQo+ID4gPiBVZ2guIFllYWggZGVmaW8gYW5kIGdl bmVyaWMgYWxsb2NhdG9yIHRocm91Z2ggZHVtYiBidWZmZXJzIGRvbid0IG1peCB3ZWxsLgo+ID4g PiBUaGUgb25seSB0cnVlIGdlbmVyaWMgc29sdXRpb24gZm9yIHRoaXMgd291bGQgYmUgdG8gZ2l2 ZSB1c2Vyc3BhY2UgKGFuZAo+ID4gPiBvbmx5IHVzZXJzcGFjZSwgZm9yIGZiY29uIHdlIGNhbiBp bnRlcmNlcHQgZXZlcnl0aGluZykgYSBzdGFnaW5nIGJ1ZmZlciwKPiA+ID4gYW5kIHRoZW4gdXBs b2FkIHRoaW5ncyB1c2luZyB0aGUgZGlydHkgY2FsbGJhY2suCj4gPiA+Cj4gPiA+IEJ1dCB0aGF0 IGludHJvZHVjZXMgYW5vdGhlciBjb3B5IHN0ZXAsIHNvIGlzbid0IGNvb2wuCj4gPiA+Cj4gPiA+ IEkgdGhpbmsgYSBjaGVjayBmb3IgaXNfdm1hbGxvY19hZGRyIGFuZCBpZiB0aGF0J3MgZmFsc2Us IG5vdCBkb2luZyBhbnkgb2YKPiA+ID4gdGhlIGRlZmlvIG1tYXAgc2V0dXAgd291bGQgYmUgZ29v ZC4gVW50aWwgd2UgaGF2ZSBhIGJldHRlciBpZGVhLiBBbmQgeWVzCj4gPiA+IHRoYXQgd291bGQg bmVlZCB0byBiZSBkb25lIGFmdGVyIHRpbnlkcm0gaXMgbW92ZWQgb3Zlci4KPiA+ID4KPiA+ID4g PiArCj4gPiA+ID4gKyByZXR1cm4gMDsKPiA+ID4gPiArCj4gPiA+ID4gK2Vycl9mYl9pbmZvX2Rl c3Ryb3k6Cj4gPiA+ID4gKyBkcm1fZmJfaGVscGVyX2ZpbmkoZmJfaGVscGVyKTsKPiA+ID4gPiAr ZXJyX2ZyZWVfYnVmZmVyOgo+ID4gPiA+ICsgZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUo YnVmZmVyKTsKPiA+ID4gPiArCj4gPiA+ID4gKyByZXR1cm4gcmV0Owo+ID4gPiA+ICt9Cj4gPiA+ ID4gK0VYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKTsKPiA+ID4gPiAr Cj4gPiA+ID4gICAvKiBUaGUgS2NvbmZpZyBEUk1fS01TX0hFTFBFUiBzZWxlY3RzIEZSQU1FQlVG RkVSX0NPTlNPTEUgKGlmICFFWFBFUlQpCj4gPiA+ID4gICAgKiBidXQgdGhlIG1vZHVsZSBkb2Vz bid0IGRlcGVuZCBvbiBhbnkgZmIgY29uc29sZSBzeW1ib2xzLiAgQXQgbGVhc3QKPiA+ID4gPiAg ICAqIGF0dGVtcHQgdG8gbG9hZCBmYmNvbiB0byBhdm9pZCBsZWF2aW5nIHRoZSBzeXN0ZW0gd2l0 aG91dCBhIHVzYWJsZSBjb25zb2xlLgo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKPiA+ID4gPiBpbmRl eCBiMDY5NDMzZTdmYzEuLmJiMzg0NjlhOTUwMiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fZmJfaGVscGVyLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVs cGVyLmgKPiA+ID4gPiBAQCAtMzAsNiArMzAsOCBAQAo+ID4gPiA+ICAgI2lmbmRlZiBEUk1fRkJf SEVMUEVSX0gKPiA+ID4gPiAgICNkZWZpbmUgRFJNX0ZCX0hFTFBFUl9ICj4gPiA+ID4gK3N0cnVj dCBkcm1fY2xpZW50X2J1ZmZlcjsKPiA+ID4gPiArc3RydWN0IGRybV9jbGllbnRfZGV2Owo+ID4g PiA+ICAgc3RydWN0IGRybV9mYl9oZWxwZXI7Cj4gPiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+Cj4gPiA+ID4gQEAgLTIzMiw2ICsyMzQsMjAgQEAgc3RydWN0IGRybV9mYl9oZWxwZXIg ewo+ID4gPiA+ICAgICAgICAgICAgKiBTZWUgYWxzbzogQGRlZmVycmVkX3NldHVwCj4gPiA+ID4g ICAgICAgICAgICAqLwo+ID4gPiA+ICAgICAgICAgICBpbnQgcHJlZmVycmVkX2JwcDsKPiA+ID4g PiArCj4gPiA+ID4gKyAvKioKPiA+ID4gPiArICAqIEBjbGllbnQ6Cj4gPiA+ID4gKyAgKgo+ID4g PiA+ICsgICogRFJNIGNsaWVudCB1c2VkIGJ5IHRoZSBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbi4K PiA+ID4gPiArICAqLwo+ID4gPiA+ICsgc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgLyoqCj4gPiA+ID4gKyAgKiBAYnVmZmVyOgo+ID4gPiA+ICsgICoK PiA+ID4gPiArICAqIEZyYW1lYnVmZmVyIHVzZWQgYnkgdGhlIGdlbmVyaWMgZmJkZXYgZW11bGF0 aW9uLgo+ID4gPiA+ICsgICovCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1 ZmZlcjsKPiA+ID4gPiAgIH07Cj4gPiA+ID4gICAvKioKPiA+ID4gPiBAQCAtMzMwLDYgKzM0Niw5 IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9mYmRldl90ZWFyZG93bihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiA+ID4gPiAgIHZvaWQgZHJtX2ZiX2hlbHBlcl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gPiA+ID4gICB2b2lkIGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hh bmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gPiArCj4gPiA+ID4gK2ludCBkcm1f ZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1 cmZhY2Vfc2l6ZSAqc2l6ZXMpOwo+ID4gPiA+ICAgI2Vsc2UKPiA+ID4gPiAgIHN0YXRpYyBpbmxp bmUgdm9pZCBkcm1fZmJfaGVscGVyX3ByZXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqaGVscGVyLAo+ID4gPiA+IEBAIC01NjQsNiArNTgzLDEzIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiA+ID4gPiAgIHsKPiA+ID4gPiAgIH0KPiA+ID4gPiArc3RhdGljIGlubGlu ZSBpbnQKPiA+ID4gPiArZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpCj4gPiA+ID4gK3sKPiA+ID4gPiArIHJl dHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+IE9rLCBJIHRoaW5rIHRoaXMgcGF0Y2ggbG9va3Mgb2su IFdpdGggdGhlIG1pc3Npbmcga2VybmVsZG9jIGFkZGVkICh3aGljaAo+ID4gPiBhbHNvIGV4cGxh aW5zIHRoZSBjdXJyZW50IGxpbWl0YXRpb25zKSB0aGlzIGlzCj4gPiA+Cj4gPiA+IFJldmlld2Vk LWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPgo+ID4gPiA+ ICsKPiA+ID4gPiAgICNlbmRpZgo+ID4gPiA+ICAgc3RhdGljIGlubGluZSBpbnQKPiA+ID4gPiAt LQo+ID4gPiA+IDIuMTUuMQo+ID4gPiA+Cj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4g PiA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gPgo+Cj4gLS0K PiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4g aHR0cDovL2Jsb2cuZmZ3bGwuY2gKCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==