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: Tue, 29 May 2018 09:54:56 +0200 Message-ID: <20180529075456.GA3438@phenom.ffwll.local> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <8c876daa-5150-009f-af3a-01573144d452@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXkgMjUsIDIwMTggYXQgMDI6NDI6MDJQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAyNC4wNS4yMDE4IDExLjE2LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ ID4gT24gV2VkLCBNYXkgMjMsIDIwMTggYXQgMDQ6MzQ6MDdQTSArMDIwMCwgTm9yYWxmIFRyw7hu bmVzIHdyb3RlOgo+ID4gPiBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIGluIGdldHRpbmcgZ2VuZXJp YyBmYmRldiBlbXVsYXRpb24uCj4gPiA+IEEgZHJtX2ZiX2hlbHBlcl9mdW5jcy5mYl9wcm9iZSBm dW5jdGlvbiBpcyBhZGRlZCB3aGljaCB1c2VzIHRoZQo+ID4gPiBEUk0gY2xpZW50IEFQSSB0byBn ZXQgYSBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgYSBkdW1iIGJ1ZmZlci4KPiA+ID4gCj4gPiA+IEEg dHJhbnNpdGlvbmFsIGhhY2sgZm9yIHRpbnlkcm0gaXMgbmVlZGVkIGluIG9yZGVyIHRvIHN3aXRj aCBvdmVyIGFsbAo+ID4gPiBDTUEgaGVscGVyIGRyaXZlcnMgaW4gYSBsYXRlciBwYXRjaC4gVGhp cyBoYWNrIHdpbGwgYmUgcmVtb3ZlZCB3aGVuCj4gPiA+IHRpbnlkcm0gbW92ZXMgdG8gdm1hbGxv YyBidWZmZXJzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxu b3JhbGZAdHJvbm5lcy5vcmc+Cj4gPiA+IC0tLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ID4gPiAgIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAgMjYgKysrKysrKwo+ ID4gPiAgIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKykKPiA+ID4gCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4gPiBpbmRleCAyZWUxZWFhNjYxODguLjQ0NGMyYjQwNDBl YSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPiA+IEBAIC0zMCwxMSAr MzAsMTMgQEAKPiA+ID4gICAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6ICIg Zm10Cj4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLmg+Cj4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4gPiAg ICNpbmNsdWRlIDxsaW51eC9zeXNycS5oPgo+ID4gPiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ Cj4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiAgICNpbmNsdWRlIDxkcm0v ZHJtUC5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+Cj4gPiA+ICAgI2luY2x1 ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ID4gPiAgICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5o Pgo+ID4gPiAgICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gPiA+IEBAIC0yOTI4 LDYgKzI5MzAsMTY4IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICAgfQo+ID4gPiAgIEVYUE9SVF9TWU1CT0woZHJt X2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKTsKPiA+ID4gKy8qIEB1c2VyOiAxPXVzZXJz cGFjZSwgMD1mYmNvbiAqLwo+ID4gPiArc3RhdGljIGludCBkcm1fZmJkZXZfZmJfb3BlbihzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+ID4gKwo+ID4gPiArCWlmICghdHJ5 X21vZHVsZV9nZXQoZmJfaGVscGVyLT5kZXYtPmRyaXZlci0+Zm9wcy0+b3duZXIpKQo+ID4gPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgaW50IGRybV9mYmRldl9mYl9yZWxlYXNlKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBpbnQgdXNlcikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ID4gPiArCj4gPiA+ICsJbW9kdWxlX3B1dChmYl9oZWxw ZXItPmRldi0+ZHJpdmVyLT5mb3BzLT5vd25lcik7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsK PiA+ID4gK30KPiA+IEhtLCBJIHRob3VnaHQgZWFybGllciB2ZXJzaW9ucyBvZiB5b3VyIHBhdGNo IHNlcmllcyBoYWQgdGhpcyBzZXBhcmF0ZWx5LAo+ID4gZm9yIGV2ZXJ5b25lLiBXaGF0J3MgdGhl IHJlYXNvbnMgZm9yIG1lcmdpbmcgdGhpcyBpbnRvIHRoZSBmYl9wcm9iZQo+ID4gaW1wbGVtZW50 YXRpb24uCj4gCj4gVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHN0cnVjdCBmYl9vcHMgaXMg ZGVmaW5lZCBpbiBhIGxpYnJhcnkgd2hlcmUKPiB0aGUgb3duZXIgZmllbGQgaXMgdGhlIGxpYnJh cnkgbW9kdWxlIGFuZCBub3QgdGhlIGRyaXZlciBtb2R1bGUuCj4gSSByZWFsaXNlZCB0aGF0IHdp dGggdGhpcyBnZW5lcmljIHZlcnNpb24gaXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZQo+IGdl dCBhbm90aGVyIGxpYnJhcnkgdGhhdCBkZWZpbmVzIHN0cnVjdCBmYl9vcHMsIHNvIGl0J3Mgb25s eSBuZWVkZWQgaGVyZS4KCkhtLCBJJ20gc3RpbGwgbm90IDEwMCUgY29udmluY2VkIHdlIGNhbiBm dWxseSBzdWJzdW1lIHRoZSB0aW55ZHJtIGZiZGV2CmNvZGUgd2l0aCB0aGUgZ2VuZXJpYyBvbmUs IGR1ZSB0byB0aGUgdmFyaW9zIHNsaWdodCBpc3N1ZXMgYXJvdW5kIGRlZmlvCnRyYWNraW5nIHRo YXQgd2Ugc3RpbGwgaGF2ZS4KCkJ1dCBpdCdzIGFsc28gZWFzeSB0byBleHBvcnQgdGhpcyBsYXRl ciBvbi4gSWYgeW91IGFkZCBhIGNvbW1lbnQKZXhwbGFpbmluZyB3aGF0IHlvdSBleHBsYWluZWQg aGVyZSB0byB0aGUgY29tbWl0IG1lc3NhZ2UgSSB0aGluayB0aGlzIGlzCmFsbCBmaW5lIHdpdGgg bWUgYXMtaXMuCi1EYW5pZWwKCj4gCj4gTm9yYWxmLgo+IAo+ID4gPiArCj4gPiA+ICsvKgo+ID4g PiArICogZmJfb3BzLmZiX2Rlc3Ryb3kgaXMgY2FsbGVkIGJ5IHRoZSBsYXN0IHB1dF9mYl9pbmZv KCkgY2FsbCBhdCB0aGUgZW5kIG9mCj4gPiA+ICsgKiB1bnJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkg b3IgZmJfcmVsZWFzZSgpLgo+ID4gPiArICovCj4gPiA+ICtzdGF0aWMgdm9pZCBkcm1fZmJkZXZf ZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ID4gPiArCXN0cnVjdCBmYl9v cHMgKmZib3BzID0gTlVMTDsKPiA+ID4gKwo+ID4gPiArCURSTV9ERUJVRygiXG4iKTsKPiA+ID4g Kwo+ID4gPiArCWlmIChmYl9oZWxwZXItPmZiZGV2LT5mYmRlZmlvKSB7Cj4gPiA+ICsJCWZiX2Rl ZmVycmVkX2lvX2NsZWFudXAoZmJfaGVscGVyLT5mYmRldik7Cj4gPiA+ICsJCWZib3BzID0gZmJf aGVscGVyLT5mYmRldi0+ZmJvcHM7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZHJtX2ZiX2hl bHBlcl9maW5pKGZiX2hlbHBlcik7Cj4gPiA+ICsJZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxl dGUoZmJfaGVscGVyLT5idWZmZXIpOwo+ID4gPiArCWRybV9jbGllbnRfZnJlZShmYl9oZWxwZXIt PmNsaWVudCk7Cj4gPiA+ICsJa2ZyZWUoZmJfaGVscGVyKTsKPiA+ID4gKwlrZnJlZShmYm9wcyk7 Cj4gPiA+ICt9Cj4gPiBIbSwgaWYgd2UgZ28gd2l0aCB0aGUgaWRlYSB0aGF0IGRybV9jbGllbnRz IGNvdWxkIGF1dG8tdW5yZWdpc3RlciB0aHJvdWdoCj4gPiBhIGNhbGxiYWNrLCB0aGVuIEkgZXhw ZWN0IHRoaXMgd2lsbCBsZWFkIHRvIHNvbWUgY29udHJvbCBpbnZlcnNpb24uIEJ1dCB3ZQo+ID4g Y2FuIGZpeCB0aGF0IGxhdGVyIG9uLgo+ID4gCj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZHJt X2ZiZGV2X2ZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIg PSBpbmZvLT5wYXI7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZmJfaGVscGVyLT5kZXYtPmRyaXZlci0+ Z2VtX3ByaW1lX21tYXApCj4gPiA+ICsJCXJldHVybiBmYl9oZWxwZXItPmRldi0+ZHJpdmVyLT5n ZW1fcHJpbWVfbW1hcChmYl9oZWxwZXItPmJ1ZmZlci0+Z2VtLCB2bWEpOwo+ID4gPiArCWVsc2UK PiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBz dHJ1Y3QgZmJfb3BzIGRybV9mYmRldl9mYl9vcHMgPSB7Cj4gPiA+ICsJLyogTm8gbmVlZCB0byBz ZXQgb3duZXIsIHRoaXMgbW9kdWxlIGlzIGFscmVhZHkgcGlubmVkIGJ5IHRoZSBkcml2ZXIuICov Cj4gPiBJJ2Qgc3RpbGwgc2V0IGl0LCBtZWFucyBsZXNzIHRoaW5raW5nIHNpbmNlIG1vcmUgb2J2 aW91c2x5IGNvcnJlY3QuCj4gPiAKPiA+ID4gKwlEUk1fRkJfSEVMUEVSX0RFRkFVTFRfT1BTLAo+ ID4gPiArCS5mYl9vcGVuCT0gZHJtX2ZiZGV2X2ZiX29wZW4sCj4gPiA+ICsJLmZiX3JlbGVhc2UJ PSBkcm1fZmJkZXZfZmJfcmVsZWFzZSwKPiA+ID4gKwkuZmJfZGVzdHJveQk9IGRybV9mYmRldl9m Yl9kZXN0cm95LAo+ID4gPiArCS5mYl9tbWFwCT0gZHJtX2ZiZGV2X2ZiX21tYXAsCj4gPiA+ICsJ LmZiX3JlYWQJPSBkcm1fZmJfaGVscGVyX3N5c19yZWFkLAo+ID4gPiArCS5mYl93cml0ZQk9IGRy bV9mYl9oZWxwZXJfc3lzX3dyaXRlLAo+ID4gPiArCS5mYl9maWxscmVjdAk9IGRybV9mYl9oZWxw ZXJfc3lzX2ZpbGxyZWN0LAo+ID4gPiArCS5mYl9jb3B5YXJlYQk9IGRybV9mYl9oZWxwZXJfc3lz X2NvcHlhcmVhLAo+ID4gPiArCS5mYl9pbWFnZWJsaXQJPSBkcm1fZmJfaGVscGVyX3N5c19pbWFn ZWJsaXQsCj4gPiBIbSwgc29tZSBkcml2ZXJzIHJlcXVpcmUgdGhlIGNmYiB2ZXJzaW9ucyBvZiB0 aGVzZS4gSW4gcHJhY3RpY2UgSSBndWVzcwo+ID4gdGhlcmUncyBub3QgbXVjaCBvZiBhIGRpZmZl cmVuY2UgcmVhbGx5LCBhdCBsZWFzdCBvbiB4ODYgYW5kIGFybS4KPiA+IAo+ID4gV2UgbWlnaHQg d2FudCB0byBkb2N1bWVudCB0aGF0IHRob3VnaC4KPiA+IAo+ID4gPiArfTsKPiA+ID4gKwo+ID4g PiArc3RhdGljIHN0cnVjdCBmYl9kZWZlcnJlZF9pbyBkcm1fZmJkZXZfZGVmaW8gPSB7Cj4gPiA+ ICsJLmRlbGF5CQk9IEhaIC8gMjAsCj4gPiA+ICsJLmRlZmVycmVkX2lvCT0gZHJtX2ZiX2hlbHBl cl9kZWZlcnJlZF9pbywKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBUT0RP OiBSZW1vdmUgdGhpcyB3aGVuIHRpbnlkcm0gaXMgY29udmVydGVkIHRvIHZtYWxsb2MgYnVmZmVy cy4KPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGludCBkcm1fZmJkZXZfY21hX2RlZmVycmVkX2lv X21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gPiA+ICsJCQkJCSAgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpCj4gPiA+ICt7Cj4gPiA+ICsJZmJfZGVmZXJyZWRfaW9fbW1hcChpbmZvLCB2 bWEpOwo+ID4gPiArCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bWEt PnZtX3BhZ2VfcHJvdCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gTmVlZHMga2VybmVsZG9jIGhlcmUuCj4gPiAKPiA+ID4gK2ludCBkcm1fZmJfaGVscGVy X2dlbmVyaWNfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiA+ID4gKwkJ CQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKQo+ID4gPiArewo+ID4g PiArCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gZmJfaGVscGVyLT5jbGllbnQ7Cj4g PiA+ICsJc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXI7Cj4gPiA+ICsJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPiA+ICsJc3RydWN0IGZiX2luZm8gKmZiaTsKPiA+ID4gKwl1 MzIgZm9ybWF0Owo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlEUk1fREVCVUdfS01T KCJzdXJmYWNlIHdpZHRoKCVkKSwgaGVpZ2h0KCVkKSBhbmQgYnBwKCVkKVxuIiwKPiA+ID4gKwkJ ICAgICAgc2l6ZXMtPnN1cmZhY2Vfd2lkdGgsIHNpemVzLT5zdXJmYWNlX2hlaWdodCwKPiA+ID4g KwkJICAgICAgc2l6ZXMtPnN1cmZhY2VfYnBwKTsKPiA+ID4gKwo+ID4gPiArCWZvcm1hdCA9IGRy bV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQoc2l6ZXMtPnN1cmZhY2VfYnBwLCBzaXplcy0+c3VyZmFj ZV9kZXB0aCk7Cj4gPiA+ICsJYnVmZmVyID0gZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVhdGUo Y2xpZW50LCBzaXplcy0+c3VyZmFjZV93aWR0aCwKPiA+ID4gKwkJCQkJICAgICAgIHNpemVzLT5z dXJmYWNlX2hlaWdodCwgZm9ybWF0KTsKPiA+ID4gKwlpZiAoSVNfRVJSKGJ1ZmZlcikpCj4gPiA+ ICsJCXJldHVybiBQVFJfRVJSKGJ1ZmZlcik7Cj4gPiA+ICsKPiA+ID4gKwlmYl9oZWxwZXItPmJ1 ZmZlciA9IGJ1ZmZlcjsKPiA+ID4gKwlmYl9oZWxwZXItPmZiID0gYnVmZmVyLT5mYjsKPiA+ID4g KwlmYiA9IGJ1ZmZlci0+ZmI7Cj4gPiA+ICsKPiA+ID4gKwlmYmkgPSBkcm1fZmJfaGVscGVyX2Fs bG9jX2ZiaShmYl9oZWxwZXIpOwo+ID4gPiArCWlmIChJU19FUlIoZmJpKSkgewo+ID4gPiArCQly ZXQgPSBQVFJfRVJSKGZiaSk7Cj4gPiA+ICsJCWdvdG8gZXJyX2ZyZWVfYnVmZmVyOwo+ID4gPiAr CX0KPiA+ID4gKwo+ID4gPiArCWZiaS0+cGFyID0gZmJfaGVscGVyOwo+ID4gPiArCWZiaS0+ZmJv cHMgPSAmZHJtX2ZiZGV2X2ZiX29wczsKPiA+ID4gKwlmYmktPnNjcmVlbl9zaXplID0gZmItPmhl aWdodCAqIGZiLT5waXRjaGVzWzBdOwo+ID4gPiArCWZiaS0+Zml4LnNtZW1fbGVuID0gZmJpLT5z Y3JlZW5fc2l6ZTsKPiA+ID4gKwlmYmktPnNjcmVlbl9idWZmZXIgPSBidWZmZXItPnZhZGRyOwo+ ID4gPiArCXN0cmNweShmYmktPmZpeC5pZCwgIkRSTSBlbXVsYXRlZCIpOwo+ID4gPiArCj4gPiA+ ICsJZHJtX2ZiX2hlbHBlcl9maWxsX2ZpeChmYmksIGZiLT5waXRjaGVzWzBdLCBmYi0+Zm9ybWF0 LT5kZXB0aCk7Cj4gPiA+ICsJZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihmYmksIGZiX2hlbHBlciwg c2l6ZXMtPmZiX3dpZHRoLCBzaXplcy0+ZmJfaGVpZ2h0KTsKPiA+ID4gKwo+ID4gPiArCWlmIChm Yi0+ZnVuY3MtPmRpcnR5KSB7Cj4gPiA+ICsJCXN0cnVjdCBmYl9vcHMgKmZib3BzOwo+ID4gPiAr Cj4gPiA+ICsJCS8qCj4gPiA+ICsJCSAqIGZiX2RlZmVycmVkX2lvX2NsZWFudXAoKSBjbGVhcnMg JmZib3BzLT5mYl9tbWFwIHNvIGEgcGVyCj4gPiA+ICsJCSAqIGluc3RhbmNlIHZlcnNpb24gaXMg bmVjZXNzYXJ5Lgo+ID4gPiArCQkgKi8KPiA+ID4gKwkJZmJvcHMgPSBremFsbG9jKHNpemVvZigq ZmJvcHMpLCBHRlBfS0VSTkVMKTsKPiA+ID4gKwkJaWYgKCFmYm9wcykgewo+ID4gPiArCQkJcmV0 ID0gLUVOT01FTTsKPiA+ID4gKwkJCWdvdG8gZXJyX2ZiX2luZm9fZGVzdHJveTsKPiA+ID4gKwkJ fQo+ID4gPiArCj4gPiA+ICsJCSpmYm9wcyA9ICpmYmktPmZib3BzOwo+ID4gPiArCQlmYmktPmZi b3BzID0gZmJvcHM7Cj4gPiA+ICsKPiA+ID4gKwkJZmJpLT5mYmRlZmlvID0gJmRybV9mYmRldl9k ZWZpbzsKPiA+ID4gKwo+ID4gPiArCQkvKiBUT0RPOiBSZW1vdmUgdGhpcyB3aGVuIHRpbnlkcm0g aXMgY29udmVydGVkIHRvIHZtYWxsb2MgYnVmZmVycy4gKi8KPiA+ID4gKwkJZmJpLT5maXguc21l bV9zdGFydCA9IHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2UoYnVmZmVyLT52YWRkcikpOwo+ID4g PiArCj4gPiA+ICsJCWZiX2RlZmVycmVkX2lvX2luaXQoZmJpKTsKPiA+ID4gKwo+ID4gPiArCQkv KiBUT0RPOiBSZW1vdmUgdGhpcyB3aGVuIHRpbnlkcm0gaXMgY29udmVydGVkIHRvIHZtYWxsb2Mg YnVmZmVycy4gKi8KPiA+ID4gKwkJZmJpLT5mYm9wcy0+ZmJfbW1hcCA9IGRybV9mYmRldl9jbWFf ZGVmZXJyZWRfaW9fbW1hcDsKPiA+ID4gKwl9Cj4gPiBVZ2guIFllYWggZGVmaW8gYW5kIGdlbmVy aWMgYWxsb2NhdG9yIHRocm91Z2ggZHVtYiBidWZmZXJzIGRvbid0IG1peCB3ZWxsLgo+ID4gVGhl IG9ubHkgdHJ1ZSBnZW5lcmljIHNvbHV0aW9uIGZvciB0aGlzIHdvdWxkIGJlIHRvIGdpdmUgdXNl cnNwYWNlIChhbmQKPiA+IG9ubHkgdXNlcnNwYWNlLCBmb3IgZmJjb24gd2UgY2FuIGludGVyY2Vw dCBldmVyeXRoaW5nKSBhIHN0YWdpbmcgYnVmZmVyLAo+ID4gYW5kIHRoZW4gdXBsb2FkIHRoaW5n cyB1c2luZyB0aGUgZGlydHkgY2FsbGJhY2suCj4gPiAKPiA+IEJ1dCB0aGF0IGludHJvZHVjZXMg YW5vdGhlciBjb3B5IHN0ZXAsIHNvIGlzbid0IGNvb2wuCj4gPiAKPiA+IEkgdGhpbmsgYSBjaGVj ayBmb3IgaXNfdm1hbGxvY19hZGRyIGFuZCBpZiB0aGF0J3MgZmFsc2UsIG5vdCBkb2luZyBhbnkg b2YKPiA+IHRoZSBkZWZpbyBtbWFwIHNldHVwIHdvdWxkIGJlIGdvb2QuIFVudGlsIHdlIGhhdmUg YSBiZXR0ZXIgaWRlYS4gQW5kIHllcwo+ID4gdGhhdCB3b3VsZCBuZWVkIHRvIGJlIGRvbmUgYWZ0 ZXIgdGlueWRybSBpcyBtb3ZlZCBvdmVyLgo+ID4gCj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsK PiA+ID4gKwo+ID4gPiArZXJyX2ZiX2luZm9fZGVzdHJveToKPiA+ID4gKwlkcm1fZmJfaGVscGVy X2ZpbmkoZmJfaGVscGVyKTsKPiA+ID4gK2Vycl9mcmVlX2J1ZmZlcjoKPiA+ID4gKwlkcm1fY2xp ZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShidWZmZXIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJl dDsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3By b2JlKTsKPiA+ID4gKwo+ID4gPiAgIC8qIFRoZSBLY29uZmlnIERSTV9LTVNfSEVMUEVSIHNlbGVj dHMgRlJBTUVCVUZGRVJfQ09OU09MRSAoaWYgIUVYUEVSVCkKPiA+ID4gICAgKiBidXQgdGhlIG1v ZHVsZSBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgZmIgY29uc29sZSBzeW1ib2xzLiAgQXQgbGVhc3QK PiA+ID4gICAgKiBhdHRlbXB0IHRvIGxvYWQgZmJjb24gdG8gYXZvaWQgbGVhdmluZyB0aGUgc3lz dGVtIHdpdGhvdXQgYSB1c2FibGUgY29uc29sZS4KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ID4gPiBp bmRleCBiMDY5NDMzZTdmYzEuLmJiMzg0NjlhOTUwMiAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaAo+ID4gPiBAQCAtMzAsNiArMzAsOCBAQAo+ID4gPiAgICNpZm5kZWYgRFJNX0ZCX0hFTFBF Ul9ICj4gPiA+ICAgI2RlZmluZSBEUk1fRkJfSEVMUEVSX0gKPiA+ID4gK3N0cnVjdCBkcm1fY2xp ZW50X2J1ZmZlcjsKPiA+ID4gK3N0cnVjdCBkcm1fY2xpZW50X2RldjsKPiA+ID4gICBzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlcjsKPiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gPiA+IEBA IC0yMzIsNiArMjM0LDIwIEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKPiA+ID4gICAJICogU2Vl IGFsc286IEBkZWZlcnJlZF9zZXR1cAo+ID4gPiAgIAkgKi8KPiA+ID4gICAJaW50IHByZWZlcnJl ZF9icHA7Cj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAY2xpZW50Ogo+ID4gPiArCSAq Cj4gPiA+ICsJICogRFJNIGNsaWVudCB1c2VkIGJ5IHRoZSBnZW5lcmljIGZiZGV2IGVtdWxhdGlv bi4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKPiA+ ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBidWZmZXI6Cj4gPiA+ICsJICoKPiA+ID4gKwkg KiBGcmFtZWJ1ZmZlciB1c2VkIGJ5IHRoZSBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbi4KPiA+ID4g KwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcjsKPiA+ID4gICB9 Owo+ID4gPiAgIC8qKgo+ID4gPiBAQCAtMzMwLDYgKzM0Niw5IEBAIHZvaWQgZHJtX2ZiX2hlbHBl cl9mYmRldl90ZWFyZG93bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gICB2b2lkIGRy bV9mYl9oZWxwZXJfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gPiAgIHZv aWQgZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+ID4gPiArCj4gPiA+ICtpbnQgZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gPiA+ICsJCQkJc3RydWN0IGRybV9mYl9oZWxw ZXJfc3VyZmFjZV9zaXplICpzaXplcyk7Cj4gPiA+ICAgI2Vsc2UKPiA+ID4gICBzdGF0aWMgaW5s aW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g PiA+ICAgCQkJCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+ID4gPiBAQCAtNTY0LDYg KzU4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9j aGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICAgewo+ID4gPiAgIH0KPiA+ID4g K3N0YXRpYyBpbmxpbmUgaW50Cj4gPiA+ICtkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiA+ID4gKwkJCSAgICBzdHJ1Y3QgZHJtX2Zi X2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ ID4gPiArfQo+ID4gT2ssIEkgdGhpbmsgdGhpcyBwYXRjaCBsb29rcyBvay4gV2l0aCB0aGUgbWlz c2luZyBrZXJuZWxkb2MgYWRkZWQgKHdoaWNoCj4gPiBhbHNvIGV4cGxhaW5zIHRoZSBjdXJyZW50 IGxpbWl0YXRpb25zKSB0aGlzIGlzCj4gPiAKPiA+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gCj4gPiA+ICsKPiA+ID4gICAjZW5kaWYKPiA+ ID4gICBzdGF0aWMgaW5saW5lIGludAo+ID4gPiAtLSAKPiA+ID4gMi4xNS4xCj4gPiA+IAo+ID4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK