From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/4] components: multiple components for a device Date: Fri, 8 Feb 2019 16:23:25 +0100 Message-ID: <20190208152325.GL23159@phenom.ffwll.local> References: <20190207232759.14553-1-daniel.vetter@ffwll.ch> <20190207232759.14553-2-daniel.vetter@ffwll.ch> <20190208102849.qpozfixt77727ojx@shell.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190208102849.qpozfixt77727ojx@shell.armlinux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux admin Cc: "Rafael J . Wysocki" , Daniel Vetter , Intel Graphics Development , Takashi Iwai , LKML , DRI Development , Jaroslav Kysela , Rodrigo Vivi , Greg Kroah-Hartman List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBGZWIgMDgsIDIwMTkgYXQgMTA6Mjg6NDlBTSArMDAwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IGFkbWluIHdyb3RlOgo+IE9uIEZyaSwgRmViIDA4LCAyMDE5IGF0IDEyOjI3OjU3 QU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBDb21wb25lbnQgZnJhbWV3b3JrIGlz IGV4dGVuZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29tcG9uZW50cyBmb3IKPiA+IGEgc3RydWN0 IGRldmljZS4gVGhlc2Ugd2lsbCBiZSBtYXRjaGVkIHdpdGggZGlmZmVyZW50IG1hc3RlcnMgYmFz ZWQgb24KPiA+IGl0cyBzdWIgY29tcG9uZW50IHZhbHVlLgo+ID4gCj4gPiBXZSBhcmUgaW50cm9k dWNpbmcgdGhpcywgYXMgSTkxNSBuZWVkcyB0d28gZGlmZmVyZW50IGNvbXBvbmVudHMKPiA+IHdp dGggZGlmZmVyZW50IHN1YmNvbXBvbmVudCB2YWx1ZSwgd2hpY2ggd2lsbCBiZSBtYXRjaGVkIHRv IHR3bwo+ID4gZGlmZmVyZW50IGNvbXBvbmVudCBtYXN0ZXJzKEF1ZGlvIGFuZCBIRENQKSBiYXNl ZCBvbiB0aGUgc3ViY29tcG9uZW50Cj4gPiB2YWx1ZXMuCj4gPiAKPiA+IHYyOiBBZGQgZG9jdW1l bmF0aW9uLgo+ID4gCj4gPiB2MzogUmViYXNlIG9uIHRvcCBvZiB1cGRhdGVkIGRvY3VtZW5hdGlv bi4KPiA+IAo+ID4gdjQ6IFJldmlldyBmcm9tIFJhZmFlbDoKPiA+IC0gUmVtb3ZlIHJlZHVuZGFu dCAiVGhpcyIgZnJvbSBrZXJuZWxkb2MgKGFsc28gaW4gdGhlIHByZXZpb3VzIHBhdGNoKQo+ID4g LSBTdHJlYW1saW5lIHRoZSBsb2dpYyBpbiBmaW5kX2NvbXBvbmVudCgpIGEgYml0Lgo+ID4gCj4g PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPiAo djEgY29kZSkKPiA+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGlu dGVsLmNvbT4gKHYxIGNvbW1pdCBtZXNzYWdlKQo+ID4gQ2M6IFJhbWFsaW5nYW0gQyA8cmFtYWxp bmdhbS5jQGludGVsLmNvbT4KPiA+IENjOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51 eGZvdW5kYXRpb24ub3JnPgo+ID4gQ2M6IFJ1c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBhcm0ubGlu dXgub3JnLnVrPgo+ID4gQ2M6IFJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWxAa2VybmVsLm9yZz4K PiA+IENjOiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6Pgo+ID4gQ2M6IFRha2FzaGkg SXdhaSA8dGl3YWlAc3VzZS5jb20+Cj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlA aW50ZWwuY29tPgo+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5j b20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xs LmNoPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9iYXNlL2NvbXBvbmVudC5jICB8IDE1OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gIGluY2x1ZGUvbGludXgvY29tcG9u ZW50LmggfCAgMTAgKystCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwg MzkgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29tcG9u ZW50LmMgYi9kcml2ZXJzL2Jhc2UvY29tcG9uZW50LmMKPiA+IGluZGV4IDE2MjRjMmE4OTJhNS4u N2RiYzQxY2NjZDU4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9iYXNlL2NvbXBvbmVudC5jCj4g PiArKysgYi9kcml2ZXJzL2Jhc2UvY29tcG9uZW50LmMKPiA+IEBAIC00Nyw2ICs0Nyw3IEBAIHN0 cnVjdCBjb21wb25lbnQ7Cj4gPiAgc3RydWN0IGNvbXBvbmVudF9tYXRjaF9hcnJheSB7Cj4gPiAg CXZvaWQgKmRhdGE7Cj4gPiAgCWludCAoKmNvbXBhcmUpKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAq KTsKPiA+ICsJaW50ICgqY29tcGFyZV90eXBlZCkoc3RydWN0IGRldmljZSAqLCBpbnQsIHZvaWQg Kik7Cj4gPiAgCXZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKik7Cj4gPiAg CXN0cnVjdCBjb21wb25lbnQgKmNvbXBvbmVudDsKPiA+ICAJYm9vbCBkdXBsaWNhdGU7Cj4gPiBA QCAtNzQsNiArNzUsNyBAQCBzdHJ1Y3QgY29tcG9uZW50IHsKPiA+ICAJYm9vbCBib3VuZDsKPiA+ ICAKPiA+ICAJY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgKm9wczsKPiA+ICsJaW50IHN1YmNv bXBvbmVudDsKPiA+ICAJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gIH07Cj4gPiAgCj4gPiBAQCAt MTU4LDcgKzE2MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWFzdGVyICpfX21hc3Rlcl9maW5kKHN0cnVj dCBkZXZpY2UgKmRldiwKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHN0cnVjdCBjb21wb25lbnQg KmZpbmRfY29tcG9uZW50KHN0cnVjdCBtYXN0ZXIgKm1hc3RlciwKPiA+IC0JaW50ICgqY29tcGFy ZSkoc3RydWN0IGRldmljZSAqLCB2b2lkICopLCB2b2lkICpjb21wYXJlX2RhdGEpCj4gPiArCXN0 cnVjdCBjb21wb25lbnRfbWF0Y2hfYXJyYXkgKm1jKQo+ID4gIHsKPiA+ICAJc3RydWN0IGNvbXBv bmVudCAqYzsKPiA+ICAKPiA+IEBAIC0xNjYsNyArMTY4LDExIEBAIHN0YXRpYyBzdHJ1Y3QgY29t cG9uZW50ICpmaW5kX2NvbXBvbmVudChzdHJ1Y3QgbWFzdGVyICptYXN0ZXIsCj4gPiAgCQlpZiAo Yy0+bWFzdGVyICYmIGMtPm1hc3RlciAhPSBtYXN0ZXIpCj4gPiAgCQkJY29udGludWU7Cj4gPiAg Cj4gPiAtCQlpZiAoY29tcGFyZShjLT5kZXYsIGNvbXBhcmVfZGF0YSkpCj4gPiArCQlpZiAobWMt PmNvbXBhcmUgJiYgbWMtPmNvbXBhcmUoYy0+ZGV2LCBtYy0+ZGF0YSkpCj4gPiArCQkJcmV0dXJu IGM7Cj4gPiArCj4gPiArCQlpZiAobWMtPmNvbXBhcmVfdHlwZWQgJiYKPiA+ICsJCSAgICBtYy0+ Y29tcGFyZV90eXBlZChjLT5kZXYsIGMtPnN1YmNvbXBvbmVudCwgbWMtPmRhdGEpKQo+ID4gIAkJ CXJldHVybiBjOwo+ID4gIAl9Cj4gPiAgCj4gPiBAQCAtMTkyLDcgKzE5OCw3IEBAIHN0YXRpYyBp bnQgZmluZF9jb21wb25lbnRzKHN0cnVjdCBtYXN0ZXIgKm1hc3RlcikKPiA+ICAJCWlmIChtYXRj aC0+Y29tcGFyZVtpXS5jb21wb25lbnQpCj4gPiAgCQkJY29udGludWU7Cj4gPiAgCj4gPiAtCQlj ID0gZmluZF9jb21wb25lbnQobWFzdGVyLCBtYy0+Y29tcGFyZSwgbWMtPmRhdGEpOwo+ID4gKwkJ YyA9IGZpbmRfY29tcG9uZW50KG1hc3RlciwgbWMpOwo+ID4gIAkJaWYgKCFjKSB7Cj4gPiAgCQkJ cmV0ID0gLUVOWElPOwo+ID4gIAkJCWJyZWFrOwo+ID4gQEAgLTMyNywyOSArMzMzLDEyIEBAIHN0 YXRpYyBpbnQgY29tcG9uZW50X21hdGNoX3JlYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LAo+ID4g IAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAtLyoqCj4gPiAtICogY29tcG9uZW50X21hdGNo X2FkZF9yZWxlYXNlIC0gYWRkIGEgY29tcG9uZW50IG1hdGNoIHdpdGggcmVsZWFzZSBjYWxsYmFj awo+ID4gLSAqIEBtYXN0ZXI6IGRldmljZSB3aXRoIHRoZSBhZ2dyZWdhdGUgZHJpdmVyCj4gPiAt ICogQG1hdGNocHRyOiBwb2ludGVyIHRvIHRoZSBsaXN0IG9mIGNvbXBvbmVudCBtYXRjaGVzCj4g PiAtICogQHJlbGVhc2U6IHJlbGVhc2UgZnVuY3Rpb24gZm9yIEBjb21wYXJlX2RhdGEKPiA+IC0g KiBAY29tcGFyZTogY29tcGFyZSBmdW5jdGlvbiB0byBtYXRjaCBhZ2FpbnN0IGFsbCBjb21wb25l bnRzCj4gPiAtICogQGNvbXBhcmVfZGF0YTogb3BhcXVlIHBvaW50ZXIgcGFzc2VkIHRvIHRoZSBA Y29tcGFyZSBmdW5jdGlvbgo+ID4gLSAqCj4gPiAtICogQWRkcyBhIG5ldyBjb21wb25lbnQgbWF0 Y2ggdG8gdGhlIGxpc3Qgc3RvcmVkIGluIEBtYXRjaHB0ciwgd2hpY2ggdGhlIEBtYXN0ZXIKPiA+ IC0gKiBhZ2dyZWdhdGUgZHJpdmVyIG5lZWRzIHRvIGZ1bmN0aW9uLiBUaGUgbGlzdCBvZiBjb21w b25lbnQgbWF0Y2hlcyBwb2ludGVkIHRvCj4gPiAtICogYnkgQG1hdGNocHRyIG11c3QgYmUgaW5p dGlhbGl6ZWQgdG8gTlVMTCBiZWZvcmUgYWRkaW5nIHRoZSBmaXJzdCBtYXRjaC4KPiA+IC0gKgo+ ID4gLSAqIFRoZSBhbGxvY2F0ZWQgbWF0Y2ggbGlzdCBpbiBAbWF0Y2hwdHIgaXMgYXV0b21hdGlj YWxseSByZWxlYXNlZCB1c2luZyBkZXZtCj4gPiAtICogYWN0aW9ucywgd2hlcmUgdXBvbiBAcmVs ZWFzZSB3aWxsIGJlIGNhbGxlZCB0byBmcmVlIGFueSByZWZlcmVuY2VzIGhlbGQgYnkKPiA+IC0g KiBAY29tcGFyZV9kYXRhLCBlLmcuIHdoZW4gQGNvbXBhcmVfZGF0YSBpcyBhICZkZXZpY2Vfbm9k ZSB0aGF0IG11c3QgYmUKPiA+IC0gKiByZWxlYXNlZCB3aXRoIG9mX25vZGVfcHV0KCkuCj4gPiAt ICoKPiA+IC0gKiBTZWUgYWxzbyBjb21wb25lbnRfbWF0Y2hfYWRkKCkuCj4gPiAtICovCj4gPiAt dm9pZCBjb21wb25lbnRfbWF0Y2hfYWRkX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ ID4gK3N0YXRpYyB2b2lkIF9fY29tcG9uZW50X21hdGNoX2FkZChzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCj4gPiAgCXN0cnVjdCBjb21wb25lbnRfbWF0Y2ggKiptYXRjaHB0ciwKPiA+ICAJdm9pZCAo KnJlbGVhc2UpKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSwKPiA+IC0JaW50ICgqY29tcGFyZSko c3RydWN0IGRldmljZSAqLCB2b2lkICopLCB2b2lkICpjb21wYXJlX2RhdGEpCj4gPiArCWludCAo KmNvbXBhcmUpKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSwKPiA+ICsJaW50ICgqY29tcGFyZV90 eXBlZCkoc3RydWN0IGRldmljZSAqLCBpbnQsIHZvaWQgKiksCj4gPiArCXZvaWQgKmNvbXBhcmVf ZGF0YSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBjb21wb25lbnRfbWF0Y2ggKm1hdGNoID0gKm1hdGNo cHRyOwo+ID4gIAo+ID4gQEAgLTM4MSwxMyArMzcwLDY5IEBAIHZvaWQgY29tcG9uZW50X21hdGNo X2FkZF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICAJfQo+ID4gIAo+ID4gIAlt YXRjaC0+Y29tcGFyZVttYXRjaC0+bnVtXS5jb21wYXJlID0gY29tcGFyZTsKPiA+ICsJbWF0Y2gt PmNvbXBhcmVbbWF0Y2gtPm51bV0uY29tcGFyZV90eXBlZCA9IGNvbXBhcmVfdHlwZWQ7Cj4gPiAg CW1hdGNoLT5jb21wYXJlW21hdGNoLT5udW1dLnJlbGVhc2UgPSByZWxlYXNlOwo+ID4gIAltYXRj aC0+Y29tcGFyZVttYXRjaC0+bnVtXS5kYXRhID0gY29tcGFyZV9kYXRhOwo+ID4gIAltYXRjaC0+ Y29tcGFyZVttYXRjaC0+bnVtXS5jb21wb25lbnQgPSBOVUxMOwo+ID4gIAltYXRjaC0+bnVtKys7 Cj4gPiAgfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGNvbXBvbmVudF9tYXRjaF9hZGRfcmVsZWFz ZSAtIGFkZCBhIGNvbXBvbmVudCBtYXRjaCB3aXRoIHJlbGVhc2UgY2FsbGJhY2sKPiA+ICsgKiBA bWFzdGVyOiBkZXZpY2Ugd2l0aCB0aGUgYWdncmVnYXRlIGRyaXZlcgo+ID4gKyAqIEBtYXRjaHB0 cjogcG9pbnRlciB0byB0aGUgbGlzdCBvZiBjb21wb25lbnQgbWF0Y2hlcwo+ID4gKyAqIEByZWxl YXNlOiByZWxlYXNlIGZ1bmN0aW9uIGZvciBAY29tcGFyZV9kYXRhCj4gPiArICogQGNvbXBhcmU6 IGNvbXBhcmUgZnVuY3Rpb24gdG8gbWF0Y2ggYWdhaW5zdCBhbGwgY29tcG9uZW50cwo+ID4gKyAq IEBjb21wYXJlX2RhdGE6IG9wYXF1ZSBwb2ludGVyIHBhc3NlZCB0byB0aGUgQGNvbXBhcmUgZnVu Y3Rpb24KPiA+ICsgKgo+ID4gKyAqIEFkZHMgYSBuZXcgY29tcG9uZW50IG1hdGNoIHRvIHRoZSBs aXN0IHN0b3JlZCBpbiBAbWF0Y2hwdHIsIHdoaWNoIHRoZSBAbWFzdGVyCj4gPiArICogYWdncmVn YXRlIGRyaXZlciBuZWVkcyB0byBmdW5jdGlvbi4gVGhlIGxpc3Qgb2YgY29tcG9uZW50IG1hdGNo ZXMgcG9pbnRlZCB0bwo+ID4gKyAqIGJ5IEBtYXRjaHB0ciBtdXN0IGJlIGluaXRpYWxpemVkIHRv IE5VTEwgYmVmb3JlIGFkZGluZyB0aGUgZmlyc3QgbWF0Y2guIFRoaXMKPiA+ICsgKiBvbmx5IG1h dGNoZXMgYWdhaW5zdCBjb21wb25lbnRzIGFkZGVkIHdpdGggY29tcG9uZW50X2FkZCgpLgo+ID4g KyAqCj4gPiArICogVGhlIGFsbG9jYXRlZCBtYXRjaCBsaXN0IGluIEBtYXRjaHB0ciBpcyBhdXRv bWF0aWNhbGx5IHJlbGVhc2VkIHVzaW5nIGRldm0KPiA+ICsgKiBhY3Rpb25zLCB3aGVyZSB1cG9u IEByZWxlYXNlIHdpbGwgYmUgY2FsbGVkIHRvIGZyZWUgYW55IHJlZmVyZW5jZXMgaGVsZCBieQo+ ID4gKyAqIEBjb21wYXJlX2RhdGEsIGUuZy4gd2hlbiBAY29tcGFyZV9kYXRhIGlzIGEgJmRldmlj ZV9ub2RlIHRoYXQgbXVzdCBiZQo+ID4gKyAqIHJlbGVhc2VkIHdpdGggb2Zfbm9kZV9wdXQoKS4K PiA+ICsgKgo+ID4gKyAqIFNlZSBhbHNvIGNvbXBvbmVudF9tYXRjaF9hZGQoKSBhbmQgY29tcG9u ZW50X21hdGNoX2FkZF90eXBlZCgpLgo+ID4gKyAqLwo+ID4gK3ZvaWQgY29tcG9uZW50X21hdGNo X2FkZF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICsJc3RydWN0IGNvbXBvbmVu dF9tYXRjaCAqKm1hdGNocHRyLAo+ID4gKwl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGRldmljZSAq LCB2b2lkICopLAo+ID4gKwlpbnQgKCpjb21wYXJlKShzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKiks IHZvaWQgKmNvbXBhcmVfZGF0YSkKPiA+ICt7Cj4gPiArCV9fY29tcG9uZW50X21hdGNoX2FkZCht YXN0ZXIsIG1hdGNocHRyLCByZWxlYXNlLCBjb21wYXJlLCBOVUxMLAo+ID4gKwkJCSAgICAgIGNv bXBhcmVfZGF0YSk7Cj4gPiArfQo+ID4gIEVYUE9SVF9TWU1CT0woY29tcG9uZW50X21hdGNoX2Fk ZF9yZWxlYXNlKTsKPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBjb21wb25lbnRfbWF0Y2hfYWRkX3R5 cGVkIC0gYWRkIGEgY29tcGVudCBtYXRjaCBmb3IgYSB0eXBlZCBjb21wb25lbnQKPiA+ICsgKiBA bWFzdGVyOiBkZXZpY2Ugd2l0aCB0aGUgYWdncmVnYXRlIGRyaXZlcgo+ID4gKyAqIEBtYXRjaHB0 cjogcG9pbnRlciB0byB0aGUgbGlzdCBvZiBjb21wb25lbnQgbWF0Y2hlcwo+ID4gKyAqIEBjb21w YXJlX3R5cGVkOiBjb21wYXJlIGZ1bmN0aW9uIHRvIG1hdGNoIGFnYWluc3QgYWxsIHR5cGVkIGNv bXBvbmVudHMKPiA+ICsgKiBAY29tcGFyZV9kYXRhOiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgdG8g dGhlIEBjb21wYXJlIGZ1bmN0aW9uCj4gPiArICoKPiA+ICsgKiBBZGRzIGEgbmV3IGNvbXBvbmVu dCBtYXRjaCB0byB0aGUgbGlzdCBzdG9yZWQgaW4gQG1hdGNocHRyLCB3aGljaCB0aGUgQG1hc3Rl cgo+ID4gKyAqIGFnZ3JlZ2F0ZSBkcml2ZXIgbmVlZHMgdG8gZnVuY3Rpb24uIFRoZSBsaXN0IG9m IGNvbXBvbmVudCBtYXRjaGVzIHBvaW50ZWQgdG8KPiA+ICsgKiBieSBAbWF0Y2hwdHIgbXVzdCBi ZSBpbml0aWFsaXplZCB0byBOVUxMIGJlZm9yZSBhZGRpbmcgdGhlIGZpcnN0IG1hdGNoLiBUaGlz Cj4gPiArICogb25seSBtYXRjaGVzIGFnYWluc3QgY29tcG9uZW50cyBhZGRlZCB3aXRoIGNvbXBv bmVudF9hZGRfdHlwZWQoKS4KPiA+ICsgKgo+ID4gKyAqIFRoZSBhbGxvY2F0ZWQgbWF0Y2ggbGlz dCBpbiBAbWF0Y2hwdHIgaXMgYXV0b21hdGljYWxseSByZWxlYXNlZCB1c2luZyBkZXZtCj4gPiAr ICogYWN0aW9ucy4KPiA+ICsgKgo+ID4gKyAqIFNlZSBhbHNvIGNvbXBvbmVudF9tYXRjaF9hZGRf cmVsZWFzZSgpIGFuZCBjb21wb25lbnRfbWF0Y2hfYWRkX3R5cGVkKCkuCj4gPiArICovCj4gPiAr dm9pZCBjb21wb25lbnRfbWF0Y2hfYWRkX3R5cGVkKHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqKm1hdGNocHRyLAo+ID4gKwlpbnQgKCpjb21wYXJl X3R5cGVkKShzdHJ1Y3QgZGV2aWNlICosIGludCwgdm9pZCAqKSwgdm9pZCAqY29tcGFyZV9kYXRh KQo+ID4gK3sKPiA+ICsJX19jb21wb25lbnRfbWF0Y2hfYWRkKG1hc3RlciwgbWF0Y2hwdHIsIE5V TEwsIE5VTEwsIGNvbXBhcmVfdHlwZWQsCj4gPiArCQkJICAgICAgY29tcGFyZV9kYXRhKTsKPiAK PiBZb3UncmUgc3RpbGwgcGFzc2luZyBzb21lIGNvbXBhcmUgZGF0YSBpbiB0aGF0IG1heSBuZWVk IHRvIGJlIHJlbGVhc2VkLAo+IGJ1dCB5b3UgYXJlIGV4cGxpY2l0bHkgZGVueWluZyB0aGUgYWJp bGl0eSB0byBwcm92aWRlIGEgcmVsZWFzZQo+IGZ1bmN0aW9uIHBvaW50ZXIgaGVyZS4gIFdoYXQg d2FzIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoYXQgZGVjaXNpb24/Cj4gSWYgc29tZW9uZSB3YW50 ZWQgdG8gdXNlIHRoaXMgd2l0aCBjb21wYXJlX2RhdGEgYmVpbmcgYSBkZXZpY2Vfbm9kZSwKPiBo b3cgc2hvdWxkIHRoYXQgYmUgaGFuZGxlZD8KClNhbWUgd2F5IHdlJ3ZlIGhhbmRsZWQgaXQgb3Jp Z2luYWxseSwgYWRkaW5nIHRoZSBuZXcgdmFyaWFudC4gSSdtIG5vdCBhCmh1Z2UgZmFuIG9mIGFk ZGluZyBhcGkgcHJlZW1wdGl2ZWx5LCB3aXRob3V0IGEgdXNlci4gQW5kIHRoZSBkYXRhIHBvaW50 ZXIKd2UgcGFzcyBhcm91bmQgaW4gaTkxNSBmb3IgbWVpX2hkY3AgYW5kIHNuZC1oZGEtaW50ZWwg ZG9uJ3QgaG9sZApyZWZlcmVuY2VzICh3ZSBkb24ndCBldmVuIHVzZSB0aGVtLCB3ZSBqdXN0IGNv bXBhcmUgdGhlIGRldmljZSBhZ2FpbnN0CmhhcmRjb2RlZCBleHBlY3RhdGlvbnMpLiBTaW5jZSB0 aGUgbmV3IGNvbXBhcmVfdHlwZWQgaXMgZW50aXJlbHkKb3J0aG9nb25hbCB0byB3aGV0aGVyIHlv dSBoYXZlIGEgcmVsZWFzZSBmdW5jdGlvbiBvciBub3QsIHRoYXQgc2hvdWxkIGJlCnNpbXBsZSB0 byBkby4KLURhbmllbAoKPiAKPiBUaGFua3MuCj4gCj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0wo Y29tcG9uZW50X21hdGNoX2FkZF90eXBlZCk7Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgZnJlZV9t YXN0ZXIoc3RydWN0IG1hc3RlciAqbWFzdGVyKQo+ID4gIHsKPiA+ICAJc3RydWN0IGNvbXBvbmVu dF9tYXRjaCAqbWF0Y2ggPSBtYXN0ZXItPm1hdGNoOwo+ID4gQEAgLTYxNiwxOSArNjYxLDggQEAg aW50IGNvbXBvbmVudF9iaW5kX2FsbChzdHJ1Y3QgZGV2aWNlICptYXN0ZXJfZGV2LCB2b2lkICpk YXRhKQo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChjb21wb25lbnRfYmluZF9hbGwpOwo+ ID4gIAo+ID4gLS8qKgo+ID4gLSAqIGNvbXBvbmVudF9hZGQgLSByZWdpc3RlciBhIGNvbXBvbmVu dAo+ID4gLSAqIEBkZXY6IGNvbXBvbmVudCBkZXZpY2UKPiA+IC0gKiBAb3BzOiBjb21wb25lbnQg Y2FsbGJhY2tzCj4gPiAtICoKPiA+IC0gKiBSZWdpc3RlciBhIG5ldyBjb21wb25lbnQgZm9yIEBk ZXYuIEZ1bmN0aW9ucyBpbiBAb3BzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlCj4gPiAtICogYWdn cmVnYXRlIGRyaXZlciBpcyByZWFkeSB0byBiaW5kIHRoZSBvdmVyYWxsIGRyaXZlciBieSBjYWxs aW5nCj4gPiAtICogY29tcG9uZW50X2JpbmRfYWxsKCkuIFNlZSBhbHNvICZzdHJ1Y3QgY29tcG9u ZW50X29wcy4KPiA+IC0gKgo+ID4gLSAqIFRoZSBjb21wb25lbnQgbmVlZHMgdG8gYmUgdW5yZWdp c3RlcmVkIGF0IGRyaXZlciB1bmxvYWQvZGlzY29ubmVjdCBieSBjYWxsaW5nCj4gPiAtICogY29t cG9uZW50X2RlbCgpLgo+ID4gLSAqLwo+ID4gLWludCBjb21wb25lbnRfYWRkKHN0cnVjdCBkZXZp Y2UgKmRldiwgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgKm9wcykKPiA+ICtzdGF0aWMgaW50 IF9fY29tcG9uZW50X2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfb3BzICpvcHMsCj4gPiArCWludCBzdWJjb21wb25lbnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qg Y29tcG9uZW50ICpjb21wb25lbnQ7Cj4gPiAgCWludCByZXQ7Cj4gPiBAQCAtNjM5LDYgKzY3Myw3 IEBAIGludCBjb21wb25lbnRfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGNv bXBvbmVudF9vcHMgKm9wcykKPiA+ICAKPiA+ICAJY29tcG9uZW50LT5vcHMgPSBvcHM7Cj4gPiAg CWNvbXBvbmVudC0+ZGV2ID0gZGV2Owo+ID4gKwljb21wb25lbnQtPnN1YmNvbXBvbmVudCA9IHN1 YmNvbXBvbmVudDsKPiA+ICAKPiA+ICAJZGV2X2RiZyhkZXYsICJhZGRpbmcgY29tcG9uZW50IChv cHMgJXBzKVxuIiwgb3BzKTsKPiA+ICAKPiA+IEBAIC02NTcsNiArNjkyLDU1IEBAIGludCBjb21w b25lbnRfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMg Km9wcykKPiA+ICAKPiA+ICAJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOwo+ID4gIH0KPiA+ICsK PiA+ICsvKioKPiA+ICsgKiBjb21wb25lbnRfYWRkX3R5cGVkIC0gcmVnaXN0ZXIgYSBjb21wb25l bnQKPiA+ICsgKiBAZGV2OiBjb21wb25lbnQgZGV2aWNlCj4gPiArICogQG9wczogY29tcG9uZW50 IGNhbGxiYWNrcwo+ID4gKyAqIEBzdWJjb21wb25lbnQ6IG5vbnplcm8gaWRlbnRpZmllciBmb3Ig c3ViY29tcG9uZW50cwo+ID4gKyAqCj4gPiArICogUmVnaXN0ZXIgYSBuZXcgY29tcG9uZW50IGZv ciBAZGV2LiBGdW5jdGlvbnMgaW4gQG9wcyB3aWxsIGJlIGNhbGwgd2hlbiB0aGUKPiA+ICsgKiBh Z2dyZWdhdGUgZHJpdmVyIGlzIHJlYWR5IHRvIGJpbmQgdGhlIG92ZXJhbGwgZHJpdmVyIGJ5IGNh bGxpbmcKPiA+ICsgKiBjb21wb25lbnRfYmluZF9hbGwoKS4gU2VlIGFsc28gJnN0cnVjdCBjb21w b25lbnRfb3BzLgo+ID4gKyAqCj4gPiArICogQHN1YmNvbXBvbmVudCBtdXN0IGJlIG5vbnplcm8g YW5kIGlzIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIG11bHRpcGxlCj4gPiArICogY29t cG9uZW50cyByZWdpc3RlcmQgb24gdGhlIHNhbWUgZGV2aWNlIEBkZXYuIFRoZXNlIGNvbXBvbmVu dHMgYXJlIG1hdGNoCj4gPiArICogdXNpbmcgY29tcG9uZW50X21hdGNoX2FkZF90eXBlZCgpLgo+ ID4gKyAqCj4gPiArICogVGhlIGNvbXBvbmVudCBuZWVkcyB0byBiZSB1bnJlZ2lzdGVyZWQgYXQg ZHJpdmVyIHVubG9hZC9kaXNjb25uZWN0IGJ5Cj4gPiArICogY2FsbGluZyBjb21wb25lbnRfZGVs KCkuCj4gPiArICoKPiA+ICsgKiBTZWUgYWxzbyBjb21wb25lbnRfYWRkKCkuCj4gPiArICovCj4g PiAraW50IGNvbXBvbmVudF9hZGRfdHlwZWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1 Y3QgY29tcG9uZW50X29wcyAqb3BzLAo+ID4gKwlpbnQgc3ViY29tcG9uZW50KQo+ID4gK3sKPiA+ ICsJaWYgKFdBUk5fT04oc3ViY29tcG9uZW50ID09IDApKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiArCj4gPiArCXJldHVybiBfX2NvbXBvbmVudF9hZGQoZGV2LCBvcHMsIHN1YmNvbXBvbmVu dCk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGNvbXBvbmVudF9hZGRfdHlwZWQpOwo+ ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGNvbXBvbmVudF9hZGQgLSByZWdpc3RlciBhIGNvbXBvbmVu dAo+ID4gKyAqIEBkZXY6IGNvbXBvbmVudCBkZXZpY2UKPiA+ICsgKiBAb3BzOiBjb21wb25lbnQg Y2FsbGJhY2tzCj4gPiArICoKPiA+ICsgKiBSZWdpc3RlciBhIG5ldyBjb21wb25lbnQgZm9yIEBk ZXYuIEZ1bmN0aW9ucyBpbiBAb3BzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlCj4gPiArICogYWdn cmVnYXRlIGRyaXZlciBpcyByZWFkeSB0byBiaW5kIHRoZSBvdmVyYWxsIGRyaXZlciBieSBjYWxs aW5nCj4gPiArICogY29tcG9uZW50X2JpbmRfYWxsKCkuIFNlZSBhbHNvICZzdHJ1Y3QgY29tcG9u ZW50X29wcy4KPiA+ICsgKgo+ID4gKyAqIFRoZSBjb21wb25lbnQgbmVlZHMgdG8gYmUgdW5yZWdp c3RlcmVkIGF0IGRyaXZlciB1bmxvYWQvZGlzY29ubmVjdCBieQo+ID4gKyAqIGNhbGxpbmcgY29t cG9uZW50X2RlbCgpLgo+ID4gKyAqCj4gPiArICogU2VlIGFsc28gY29tcG9uZW50X2FkZF90eXBl ZCgpIGZvciBhIHZhcmlhbnQgdGhhdCBhbGxvd3MgbXVsdGlwbGVkIGRpZmZlcmVudAo+ID4gKyAq IGNvbXBvbmVudHMgb24gdGhlIHNhbWUgZGV2aWNlLgo+ID4gKyAqLwo+ID4gK2ludCBjb21wb25l bnRfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgKm9w cykKPiA+ICt7Cj4gPiArCXJldHVybiBfX2NvbXBvbmVudF9hZGQoZGV2LCBvcHMsIDApOwo+ID4g K30KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChjb21wb25lbnRfYWRkKTsKPiA+ICAKPiA+ICAvKioK PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBvbmVudC5oIGIvaW5jbHVkZS9saW51 eC9jb21wb25lbnQuaAo+ID4gaW5kZXggODNkYTI1YmRmNTljLi4zMGJjYzdlNTkwZWIgMTAwNjQ0 Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBvbmVudC5oCj4gPiArKysgYi9pbmNsdWRlL2xp bnV4L2NvbXBvbmVudC5oCj4gPiBAQCAtMzQsNiArMzQsOCBAQCBzdHJ1Y3QgY29tcG9uZW50X29w cyB7Cj4gPiAgfTsKPiA+ICAKPiA+ICBpbnQgY29tcG9uZW50X2FkZChzdHJ1Y3QgZGV2aWNlICos IGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzICopOwo+ID4gK2ludCBjb21wb25lbnRfYWRkX3R5 cGVkKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgKm9wcywK PiA+ICsJaW50IHN1YmNvbXBvbmVudCk7Cj4gPiAgdm9pZCBjb21wb25lbnRfZGVsKHN0cnVjdCBk ZXZpY2UgKiwgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgKik7Cj4gPiAgCj4gPiAgaW50IGNv bXBvbmVudF9iaW5kX2FsbChzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKm1hc3Rlcl9kYXRh KTsKPiA+IEBAIC05MSw2ICs5Myw5IEBAIHZvaWQgY29tcG9uZW50X21hdGNoX2FkZF9yZWxlYXNl KHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICAJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqKm1h dGNocHRyLAo+ID4gIAl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGRldmljZSAqLCB2b2lkICopLAo+ ID4gIAlpbnQgKCpjb21wYXJlKShzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKiksIHZvaWQgKmNvbXBh cmVfZGF0YSk7Cj4gPiArdm9pZCBjb21wb25lbnRfbWF0Y2hfYWRkX3R5cGVkKHN0cnVjdCBkZXZp Y2UgKm1hc3RlciwKPiA+ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqKm1hdGNocHRyLAo+ID4g KwlpbnQgKCpjb21wYXJlX3R5cGVkKShzdHJ1Y3QgZGV2aWNlICosIGludCwgdm9pZCAqKSwgdm9p ZCAqY29tcGFyZV9kYXRhKTsKPiA+ICAKPiA+ICAvKioKPiA+ICAgKiBjb21wb25lbnRfbWF0Y2hf YWRkIC0gYWRkIGEgY29tcGVudCBtYXRjaAo+ID4gQEAgLTEwMSwxMiArMTA2LDEzIEBAIHZvaWQg Y29tcG9uZW50X21hdGNoX2FkZF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICAg Kgo+ID4gICAqIEFkZHMgYSBuZXcgY29tcG9uZW50IG1hdGNoIHRvIHRoZSBsaXN0IHN0b3JlZCBp biBAbWF0Y2hwdHIsIHdoaWNoIHRoZSBAbWFzdGVyCj4gPiAgICogYWdncmVnYXRlIGRyaXZlciBu ZWVkcyB0byBmdW5jdGlvbi4gVGhlIGxpc3Qgb2YgY29tcG9uZW50IG1hdGNoZXMgcG9pbnRlZCB0 bwo+ID4gLSAqIGJ5IEBtYXRjaHB0ciBtdXN0IGJlIGluaXRpYWxpemVkIHRvIE5VTEwgYmVmb3Jl IGFkZGluZyB0aGUgZmlyc3QgbWF0Y2guCj4gPiArICogYnkgQG1hdGNocHRyIG11c3QgYmUgaW5p dGlhbGl6ZWQgdG8gTlVMTCBiZWZvcmUgYWRkaW5nIHRoZSBmaXJzdCBtYXRjaC4gVGhpcwo+ID4g KyAqIG9ubHkgbWF0Y2hlcyBhZ2FpbnN0IGNvbXBvbmVudHMgYWRkZWQgd2l0aCBjb21wb25lbnRf YWRkKCkuCj4gPiAgICoKPiA+ICAgKiBUaGUgYWxsb2NhdGVkIG1hdGNoIGxpc3QgaW4gQG1hdGNo cHRyIGlzIGF1dG9tYXRpY2FsbHkgcmVsZWFzZWQgdXNpbmcgZGV2bQo+ID4gICAqIGFjdGlvbnMu Cj4gPiAgICoKPiA+IC0gKiBTZWUgYWxzbyBjb21wb25lbnRfbWF0Y2hfYWRkX3JlbGVhc2UoKS4K PiA+ICsgKiBTZWUgYWxzbyBjb21wb25lbnRfbWF0Y2hfYWRkX3JlbGVhc2UoKSBhbmQgY29tcG9u ZW50X21hdGNoX2FkZF90eXBlZCgpLgo+ID4gICAqLwo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBj b21wb25lbnRfbWF0Y2hfYWRkKHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICAJc3RydWN0IGNv bXBvbmVudF9tYXRjaCAqKm1hdGNocHRyLAo+ID4gLS0gCj4gPiAyLjIwLjEKPiA+IAo+ID4gCj4g Cj4gLS0gCj4gUk1LJ3MgUGF0Y2ggc3lzdGVtOiBodHRwczovL3d3dy5hcm1saW51eC5vcmcudWsv ZGV2ZWxvcGVyL3BhdGNoZXMvCj4gRlRUQyBicm9hZGJhbmQgZm9yIDAuOG1pbGUgbGluZSBpbiBz dWJ1cmJpYTogc3luYyBhdCAxMi4xTWJwcyBkb3duIDYyMmticHMgdXAKPiBBY2NvcmRpbmcgdG8g c3BlZWR0ZXN0Lm5ldDogMTEuOU1icHMgZG93biA1MDBrYnBzIHVwCgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==