From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 1/2] drm/bridge: Refactor out the panel wrapper from the lvds-encoder bridge. Date: Wed, 03 May 2017 12:32:11 +0300 Message-ID: <21970543.rOK40RzAVr@avalon> References: <20170427163601.7313-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9EB689B96 for ; Wed, 3 May 2017 09:30:57 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Archit Taneja Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yannick Fertre , Thierry Reding List-Id: dri-devel@lists.freedesktop.org SGkgQXJjaGl0LAoKT24gV2VkbmVzZGF5IDAzIE1heSAyMDE3IDE0OjUzOjAwIEFyY2hpdCBUYW5l amEgd3JvdGU6Cj4gT24gMDQvMjcvMjAxNyAxMDowNiBQTSwgRXJpYyBBbmhvbHQgd3JvdGU6Cj4g PiBNYW55IERSTSBkcml2ZXJzIGhhdmUgY29tbW9uIGNvZGUgdG8gbWFrZSBhIHN0dWIgY29ubmVj dG9yCj4gPiBpbXBsZW1lbnRhdGlvbiB0aGF0IHdyYXBzIGEgZHJtX3BhbmVsLiAgQnkgd3JhcHBp bmcgdGhlIHBhbmVsIGluIGEgRFJNCj4gPiBicmlkZ2UsIGFsbCBvZiB0aGUgY29ubmVjdG9yIGNv ZGUgKGluY2x1ZGluZyBjYWxscyBkdXJpbmcgZW5jb2Rlcgo+ID4gZW5hYmxlL2Rpc2FibGUpIGdv ZXMgYXdheS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0 Lm5ldD4KPiA+IC0tLQo+ID4gCj4gPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJz LnJzdCB8ICAgMyArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICAgICAgICB8 ICAxMSArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgfCAgIDEg Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVyLmMgfCAxNTggKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFuZWwu YyAgICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBpbmNsdWRl L2RybS9kcm1fYnJpZGdlLmggICAgICAgICAgICAgIHwgICA4ICsrCj4gPiAgNiBmaWxlcyBjaGFu Z2VkLCAyMjggaW5zZXJ0aW9ucygrKSwgMTQxIGRlbGV0aW9ucygtKQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhbmVsLmMKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKPiA+IGIvRG9jdW1lbnRh dGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBpbmRleCBjMDc1YWFkZDcwNzguLjYwZWIzYjQx NzAyYgo+ID4gMTAwNjQ0Cj4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBl cnMucnN0Cj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4g PiBAQCAtMTQzLDYgKzE0Myw5IEBAIEJyaWRnZSBIZWxwZXIgUmVmZXJlbmNlCj4gPiAgLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+ICAgICA6ZXhwb3J0Ogo+ ID4gCj4gPiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFuZWwuYwo+ ID4gKyAgIDpleHBvcnQ6Cj4gPiArCj4gPiAgLi4gX2RybV9wYW5lbF9oZWxwZXI6Cj4gPiAgUGFu ZWwgSGVscGVyIFJlZmVyZW5jZQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9LY29uZmlnCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBpbmRl eCBmNjk2OGQzYjRiNDEuLmM0ZGFjYTM4NzQzYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29u ZmlnCj4gPiBAQCAtNCw2ICs0LDE0IEBAIGNvbmZpZyBEUk1fQlJJREdFCj4gPiAgCWhlbHAKPiA+ ICAJICBCcmlkZ2UgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgZnJhbWV3b3JrLgo+ID4gCj4gPiAr Y29uZmlnIERSTV9QQU5FTF9CUklER0UKPiA+ICsJZGVmX2Jvb2wgeQo+ID4gKwlkZXBlbmRzIG9u IERSTV9CUklER0UKPiA+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4gPiArCXNlbGVjdCBEUk1f UEFORUwKPiA+ICsJaGVscAo+ID4gKwkgIERSTSBicmlkZ2Ugd3JhcHBlciBvZiBEUk0gcGFuZWxz Cj4gPiArCj4gPiAgbWVudSAiRGlzcGxheSBJbnRlcmZhY2UgQnJpZGdlcyIKPiA+ICAJZGVwZW5k cyBvbiBEUk0gJiYgRFJNX0JSSURHRQo+ID4gCj4gPiBAQCAtMjcsOCArMzUsNyBAQCBjb25maWcg RFJNX0RVTUJfVkdBX0RBQwo+ID4gIGNvbmZpZyBEUk1fTFZEU19FTkNPREVSCj4gPiAgCXRyaXN0 YXRlICJUcmFuc3BhcmVudCBwYXJhbGxlbCB0byBMVkRTIGVuY29kZXIgc3VwcG9ydCIKPiA+ICAJ ZGVwZW5kcyBvbiBPRgo+ID4gLQlzZWxlY3QgRFJNX0tNU19IRUxQRVIKPiA+IC0Jc2VsZWN0IERS TV9QQU5FTAo+ID4gKwlzZWxlY3QgRFJNX1BBTkVMX0JSSURHRQo+ID4gIAloZWxwCj4gPiAgCSAg U3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgcGFyYWxsZWwgdG8gTFZEUyBlbmNvZGVycyB0aGF0IGRv bid0IHJlcXVpcmUKPiA+ICAJICBhbnkgY29uZmlndXJhdGlvbi4KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvTWFrZWZpbGUgaW5kZXggM2ZlMjIyNmVlMmYyLi40MGE0Mzc1MGFkNTUgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gPiBAQCAtNSw2ICs1LDcgQEAgb2JqLSQoQ09ORklHX0RS TV9EVU1CX1ZHQV9EQUMpICs9IGR1bWItdmdhLWRhYy5vCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9M VkRTX0VOQ09ERVIpICs9IGx2ZHMtZW5jb2Rlci5vCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9NRUdB Q0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZXKSArPQo+ID4gIG1lZ2FjaGlwcy1zdGRweHh4eC1n ZS1iODUwdjMtZncubyBvYmotJChDT05GSUdfRFJNX05YUF9QVE4zNDYwKSArPQo+ID4gIG54cC1w dG4zNDYwLm8KPiA+ICtvYmotJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgKz0gcGFuZWwubwo+ ID4gIG9iai0kKENPTkZJR19EUk1fUEFSQURFX1BTODYyMikgKz0gcGFyYWRlLXBzODYyMi5vCj4g PiAgb2JqLSQoQ09ORklHX0RSTV9TSUxfU0lJODYyMCkgKz0gc2lsLXNpaTg2MjAubwo+ID4gIG9i ai0kKENPTkZJR19EUk1fU0lJOTAyWCkgKz0gc2lpOTAyeC5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWVuY29kZXIuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2x2ZHMtZW5jb2Rlci5jIGluZGV4IGYxZjY3YTI3OTQyNi4uMDRlMTUwNGM0ZDhmCj4g PiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVyLmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVyLmMKPiA+IEBAIC04 LDE0NCArOCwxOCBAQAo+ID4gICAqLwo+ID4gIAo+ID4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ID4gLSNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+IC0jaW5jbHVkZSA8ZHJt L2RybV9jb25uZWN0b3IuaD4KPiA+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ ID4gLSNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiA+IC0jaW5jbHVkZSA8ZHJtL2RybV9t b2Rlc2V0X2hlbHBlcl92dGFibGVzLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+ Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiA+ICAKPiA+ICAjaW5jbHVkZSA8bGlu dXgvb2ZfZ3JhcGguaD4KPiA+IAo+ID4gLXN0cnVjdCBsdmRzX2VuY29kZXIgewo+ID4gLQlzdHJ1 Y3QgZGV2aWNlICpkZXY7Cj4gPiAtCj4gPiAtCXN0cnVjdCBkcm1fYnJpZGdlIGJyaWRnZTsKPiA+ IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwo+ID4gLQlzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbDsKPiA+IC19Owo+ID4gLQo+ID4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGx2ZHNfZW5j b2RlciAqCj4gPiAtZHJtX2JyaWRnZV90b19sdmRzX2VuY29kZXIoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKPiA+IC17Cj4gPiAtCXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3Qg bHZkc19lbmNvZGVyLCBicmlkZ2UpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgaW5saW5lIHN0 cnVjdCBsdmRzX2VuY29kZXIgKgo+ID4gLWRybV9jb25uZWN0b3JfdG9fbHZkc19lbmNvZGVyKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAtewo+ID4gLQlyZXR1cm4gY29udGFp bmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IGx2ZHNfZW5jb2RlciwgY29ubmVjdG9yKTsKPiA+IC19 Cj4gPiAtCj4gPiAtc3RhdGljIGludCBsdmRzX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+IC17Cj4gPiAtCXN0cnVjdCBsdmRzX2VuY29kZXIg Kmx2ZHMgPSBkcm1fY29ubmVjdG9yX3RvX2x2ZHNfZW5jb2Rlcihjb25uZWN0b3IpOwo+ID4gLQo+ ID4gLQlyZXR1cm4gZHJtX3BhbmVsX2dldF9tb2RlcyhsdmRzLT5wYW5lbCk7Cj4gPiAtfQo+ID4g LQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKPiA+ IGx2ZHNfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsgLQkuZ2V0X21vZGVzID0gbHZkc19jb25u ZWN0b3JfZ2V0X21vZGVzLAo+ID4gLX07Cj4gPiAtCj4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX2Z1bmNzIGx2ZHNfY29ubmVjdG9yX2Z1bmNzID0gewo+ID4gLQkuZHBtcyA9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAo+ID4gLQkucmVzZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gPiAtCS5maWxsX21vZGVzID0gZHJtX2hlbHBl cl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ID4gLQkuZGVzdHJveSA9IGRybV9jb25u ZWN0b3JfY2xlYW51cCwKPiA+IC0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ID4gLQkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiA+IC19 Owo+ID4gLQo+ID4gLXN0YXRpYyBpbnQgbHZkc19lbmNvZGVyX2F0dGFjaChzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRy bV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IgPSAmbHZkcy0+Y29ubmVjdG9yOwo+ID4gLQlpbnQgcmV0Owo+ID4gLQo+ ID4gLQlpZiAoIWJyaWRnZS0+ZW5jb2Rlcikgewo+ID4gLQkJRFJNX0VSUk9SKCJNaXNzaW5nIGVu Y29kZXJcbiIpOwo+ID4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmx2ZHNfY29ubmVjdG9yX2hlbHBlcl9m dW5jcyk7Cj4gPiAtCj4gPiAtCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwg Y29ubmVjdG9yLCAKJmx2ZHNfY29ubmVjdG9yX2Z1bmNzLAo+ID4gLQkJCQkgRFJNX01PREVfQ09O TkVDVE9SX0xWRFMpOwo+ID4gLQlpZiAocmV0KSB7Cj4gPiAtCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBpbml0aWFsaXplIGNvbm5lY3RvclxuIik7Cj4gPiAtCQlyZXR1cm4gcmV0Owo+ID4gLQl9Cj4g PiAtCj4gPiAtCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmbHZkcy0+Y29ubmVj dG9yLCBicmlkZ2UtPmVuY29kZXIpOwo+ID4gLQo+ID4gLQlyZXQgPSBkcm1fcGFuZWxfYXR0YWNo KGx2ZHMtPnBhbmVsLCAmbHZkcy0+Y29ubmVjdG9yKTsKPiA+IC0JaWYgKHJldCA8IDApCj4gPiAt CQlyZXR1cm4gcmV0Owo+ID4gLQo+ID4gLQlyZXR1cm4gMDsKPiA+IC19Cj4gPiAtCj4gPiAtc3Rh dGljIHZvaWQgbHZkc19lbmNvZGVyX2RldGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZk c19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCj4gPiAtCWRybV9wYW5lbF9kZXRhY2gobHZkcy0+cGFu ZWwpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgdm9pZCBsdmRzX2VuY29kZXJfcHJlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5j b2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCj4g PiAtCWRybV9wYW5lbF9wcmVwYXJlKGx2ZHMtPnBhbmVsKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3Rh dGljIHZvaWQgbHZkc19lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZk c19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCj4gPiAtCWRybV9wYW5lbF9lbmFibGUobHZkcy0+cGFu ZWwpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgdm9pZCBsdmRzX2VuY29kZXJfZGlzYWJsZShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5jb2Rl ciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCj4gPiAt CWRybV9wYW5lbF9kaXNhYmxlKGx2ZHMtPnBhbmVsKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGlj IHZvaWQgbHZkc19lbmNvZGVyX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl KQo+ID4gLXsKPiA+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9f bHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4gPiAtCj4gPiAtCWRybV9wYW5lbF91bnByZXBhcmUobHZk cy0+cGFuZWwpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlk Z2VfZnVuY3MgbHZkc19lbmNvZGVyX2JyaWRnZV9mdW5jcyA9IHsKPiA+IC0JLmF0dGFjaCA9IGx2 ZHNfZW5jb2Rlcl9hdHRhY2gsCj4gPiAtCS5kZXRhY2ggPSBsdmRzX2VuY29kZXJfZGV0YWNoLAo+ ID4gLQkucHJlX2VuYWJsZSA9IGx2ZHNfZW5jb2Rlcl9wcmVfZW5hYmxlLAo+ID4gLQkuZW5hYmxl ID0gbHZkc19lbmNvZGVyX2VuYWJsZSwKPiA+IC0JLmRpc2FibGUgPSBsdmRzX2VuY29kZXJfZGlz YWJsZSwKPiA+IC0JLnBvc3RfZGlzYWJsZSA9IGx2ZHNfZW5jb2Rlcl9wb3N0X2Rpc2FibGUsCj4g PiAtfTsKPiA+IC0KPiA+IAo+ID4gIHN0YXRpYyBpbnQgbHZkc19lbmNvZGVyX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAgewo+ID4gCj4gPiAtCXN0cnVjdCBsdmRzX2Vu Y29kZXIgKmx2ZHM7Cj4gPiAKPiA+ICAJc3RydWN0IGRldmljZV9ub2RlICpwb3J0Owo+ID4gIAlz dHJ1Y3QgZGV2aWNlX25vZGUgKmVuZHBvaW50Owo+ID4gCj4gPiAtCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqcGFuZWw7Cj4gPiAtCj4gPiAtCWx2ZHMgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6 ZW9mKCpsdmRzKSwgR0ZQX0tFUk5FTCk7Cj4gPiAtCWlmICghbHZkcykKPiA+IC0JCXJldHVybiAt RU5PTUVNOwo+ID4gLQo+ID4gLQlsdmRzLT5kZXYgPSAmcGRldi0+ZGV2Owo+ID4gLQlwbGF0Zm9y bV9zZXRfZHJ2ZGF0YShwZGV2LCBsdmRzKTsKPiA+IC0KPiA+IC0JbHZkcy0+YnJpZGdlLmZ1bmNz ID0gJmx2ZHNfZW5jb2Rlcl9icmlkZ2VfZnVuY3M7Cj4gPiAtCWx2ZHMtPmJyaWRnZS5vZl9ub2Rl ID0gcGRldi0+ZGV2Lm9mX25vZGU7Cj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFuZWxfbm9k ZTsKPiA+ICsJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gPiArCXN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2U7Cj4gPiAKPiA+ICAJLyogTG9jYXRlIHRoZSBwYW5lbCBEVCBub2RlLiAqLwo+ID4g IAlwb3J0ID0gb2ZfZ3JhcGhfZ2V0X3BvcnRfYnlfaWQocGRldi0+ZGV2Lm9mX25vZGUsIDEpOwo+ ID4gCj4gPiBAQCAtMTYxLDI5ICszNSwzNSBAQCBzdGF0aWMgaW50IGx2ZHNfZW5jb2Rlcl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCj4gPiAqcGRldik+IAo+ID4gIAkJcmV0dXJuIC1FTlhJ TzsKPiA+ICAJCj4gPiAgCX0KPiA+IAo+ID4gLQlwYW5lbCA9IG9mX2dyYXBoX2dldF9yZW1vdGVf cG9ydF9wYXJlbnQoZW5kcG9pbnQpOwo+ID4gKwlwYW5lbF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X3Jl bW90ZV9wb3J0X3BhcmVudChlbmRwb2ludCk7Cj4gPiAKPiA+ICAJb2Zfbm9kZV9wdXQoZW5kcG9p bnQpOwo+ID4gCj4gPiAtCWlmICghcGFuZWwpIHsKPiA+ICsJaWYgKCFwYW5lbF9ub2RlKSB7Cj4g PiAKPiA+ICAJCWRldl9kYmcoJnBkZXYtPmRldiwgIm5vIHJlbW90ZSBlbmRwb2ludCBmb3IgcG9y dCAxXG4iKTsKPiA+ICAJCXJldHVybiAtRU5YSU87Cj4gPiAgCQo+ID4gIAl9Cj4gPiAKPiA+IC0J bHZkcy0+cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChwYW5lbCk7Cj4gPiAtCW9mX25vZGVfcHV0 KHBhbmVsKTsKPiA+IC0JaWYgKCFsdmRzLT5wYW5lbCkgewo+ID4gKwlwYW5lbCA9IG9mX2RybV9m aW5kX3BhbmVsKHBhbmVsX25vZGUpOwo+ID4gKwlvZl9ub2RlX3B1dChwYW5lbF9ub2RlKTsKPiA+ ICsJaWYgKCFwYW5lbCkgewo+ID4gCj4gPiAgCQlkZXZfZGJnKCZwZGV2LT5kZXYsICJwYW5lbCBu b3QgZm91bmQsIGRlZmVycmluZyBwcm9iZVxuIik7Cj4gPiAgCQlyZXR1cm4gLUVQUk9CRV9ERUZF UjsKPiA+ICAJCj4gPiAgCX0KPiA+IAo+ID4gLQkvKiBSZWdpc3RlciB0aGUgYnJpZGdlLiAqLwo+ ID4gLQlyZXR1cm4gZHJtX2JyaWRnZV9hZGQoJmx2ZHMtPmJyaWRnZSk7Cj4gPiArCWJyaWRnZSA9 IGRybV9wYW5lbF9icmlkZ2VfYWRkKCZwZGV2LT5kZXYsIHBhbmVsLAo+ID4gKwkJCQkgICAgICBE Uk1fTU9ERV9DT05ORUNUT1JfTFZEUyk7Cj4gPiArCWlmIChJU19FUlIoYnJpZGdlKSkKPiA+ICsJ CXJldHVybiBQVFJfRVJSKGJyaWRnZSk7Cj4gPiArCj4gPiArCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIGJyaWRnZSk7Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gCj4gPiAgfQo+ID4gIAo+ ID4gIHN0YXRpYyBpbnQgbHZkc19lbmNvZGVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ID4gIHsKPiA+IAo+ID4gLQlzdHJ1Y3QgbHZkc19lbmNvZGVyICplbmNvZGVyID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiA+IAo+ID4gLQlkcm1fYnJpZGdlX3Jl bW92ZSgmZW5jb2Rlci0+YnJpZGdlKTsKPiA+ICsJZHJtX2JyaWRnZV9yZW1vdmUoYnJpZGdlKTsK PiA+IAo+ID4gIAlyZXR1cm4gMDsKPiA+ICAKPiA+ICB9Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhbmVsLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9wYW5lbC5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjIw ODEyNDU0NTVjNgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9wYW5lbC5jCj4gPiBAQCAtMCwwICsxLDE4OCBAQAo+ID4gKy8qCj4gPiArICogQ29weXJp Z2h0IChDKSAyMDE2IExhdXJlbnQgUGluY2hhcnQKPiA+IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFz b25ib2FyZC5jb20+Cj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3IEJyb2FkY29tCj4gPiArICoK PiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCj4gPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPiA+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+ID4gKyAqIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqLwo+ID4g Kwo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVs Lmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gKyNpbmNsdWRl IDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVy Lmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+ID4gKyNpbmNsdWRlIDxkcm0v ZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgo+ID4gKwo+ID4gK3N0cnVjdCBwYW5lbF9icmlkZ2Ugewo+ID4gKwlzdHJ1Y3QgZHJtX2Jy aWRnZSBicmlkZ2U7Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ICsJc3RydWN0IGRybV9j b25uZWN0b3IgY29ubmVjdG9yOwo+ID4gKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiA+ICsJ dTMyIGNvbm5lY3Rvcl90eXBlOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgcGFuZWxfYnJpZGdlICoKPiA+ICtkcm1fYnJpZGdlX3RvX3BhbmVsX2JyaWRnZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gK3sKPiA+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihicmlk Z2UsIHN0cnVjdCBwYW5lbF9icmlkZ2UsIGJyaWRnZSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IHBhbmVsX2JyaWRnZSAqCj4gPiArZHJtX2Nvbm5lY3Rvcl90b19wYW5l bF9icmlkZ2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICt7Cj4gPiArCXJl dHVybiBjb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgcGFuZWxfYnJpZGdlLCBjb25uZWN0 b3IpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBhbmVsX2JyaWRnZV9jb25uZWN0b3Jf Z2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gPiAqY29ubmVjdG9yKSArewo+ID4gKwlz dHJ1Y3QgcGFuZWxfYnJpZGdlICpwYW5lbF9icmlkZ2UgPQo+ID4gKwkJZHJtX2Nvbm5lY3Rvcl90 b19wYW5lbF9icmlkZ2UoY29ubmVjdG9yKTsKPiA+ICsKPiA+ICsJcmV0dXJuIGRybV9wYW5lbF9n ZXRfbW9kZXMocGFuZWxfYnJpZGdlLT5wYW5lbCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKPiA+IHBhbmVsX2JyaWRnZV9j b25uZWN0b3JfaGVscGVyX2Z1bmNzID0geyArCS5nZXRfbW9kZXMgPQo+ID4gcGFuZWxfYnJpZGdl X2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3JfZnVuY3MgcGFuZWxfYnJpZGdlX2Nvbm5lY3Rvcl9mdW5jcyA9IHsK PiA+ICsJLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKPiA+ICsJLnJl c2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ID4gKwkuZmlsbF9tb2Rl cyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiA+ICsJLmRlc3Ry b3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCj4gPiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPiA+ICsJLmF0 b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lf c3RhdGUsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBhbmVsX2JyaWRnZV9hdHRhY2go c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBwYW5lbF9icmlk Z2UgKnBhbmVsX2JyaWRnZSA9IApkcm1fYnJpZGdlX3RvX3BhbmVsX2JyaWRnZShicmlkZ2UpOwo+ ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJnBhbmVsX2JyaWRnZS0+Y29u bmVjdG9yOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlpZiAoIWJyaWRnZS0+ZW5jb2Rlcikg ewo+ID4gKwkJRFJNX0VSUk9SKCJNaXNzaW5nIGVuY29kZXJcbiIpOwo+ID4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5l Y3RvciwKPiA+ICsJCQkJICZwYW5lbF9icmlkZ2VfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4g PiArCj4gPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwgY29ubmVjdG9y LAo+ID4gKwkJCQkgJnBhbmVsX2JyaWRnZV9jb25uZWN0b3JfZnVuY3MsCj4gPiArCQkJCSBwYW5l bF9icmlkZ2UtPmNvbm5lY3Rvcl90eXBlKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0b3JcbiIpOwo+ID4gKwkJcmV0dXJuIHJl dDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIo JnBhbmVsX2JyaWRnZS0+Y29ubmVjdG9yLAo+ID4gKwkJCQkJICBicmlkZ2UtPmVuY29kZXIpOwo+ ID4gKwo+ID4gKwlyZXQgPSBkcm1fcGFuZWxfYXR0YWNoKHBhbmVsX2JyaWRnZS0+cGFuZWwsICZw YW5lbF9icmlkZ2UtPmNvbm5lY3Rvcik7Cj4gPiArCWlmIChyZXQgPCAwKQo+ID4gKwkJcmV0dXJu IHJldDsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IHBhbmVsX2JyaWRnZV9kZXRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ICt7Cj4g PiArCXN0cnVjdCBwYW5lbF9icmlkZ2UgKnBhbmVsX2JyaWRnZSA9IApkcm1fYnJpZGdlX3RvX3Bh bmVsX2JyaWRnZShicmlkZ2UpOwo+ID4gKwo+ID4gKwlkcm1fcGFuZWxfZGV0YWNoKHBhbmVsX2Jy aWRnZS0+cGFuZWwpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwYW5lbF9icmlkZ2Vf cHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gK3sKPiA+ICsJc3RydWN0 IHBhbmVsX2JyaWRnZSAqcGFuZWxfYnJpZGdlID0gCmRybV9icmlkZ2VfdG9fcGFuZWxfYnJpZGdl KGJyaWRnZSk7Cj4gPiArCj4gPiArCWRybV9wYW5lbF9wcmVwYXJlKHBhbmVsX2JyaWRnZS0+cGFu ZWwpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwYW5lbF9icmlkZ2VfZW5hYmxlKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPiArewo+ID4gKwlzdHJ1Y3QgcGFuZWxfYnJpZGdl ICpwYW5lbF9icmlkZ2UgPSAKZHJtX2JyaWRnZV90b19wYW5lbF9icmlkZ2UoYnJpZGdlKTsKPiA+ ICsKPiA+ICsJZHJtX3BhbmVsX2VuYWJsZShwYW5lbF9icmlkZ2UtPnBhbmVsKTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIHZvaWQgcGFuZWxfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBwYW5lbF9icmlkZ2UgKnBhbmVsX2JyaWRn ZSA9IApkcm1fYnJpZGdlX3RvX3BhbmVsX2JyaWRnZShicmlkZ2UpOwo+ID4gKwo+ID4gKwlkcm1f cGFuZWxfZGlzYWJsZShwYW5lbF9icmlkZ2UtPnBhbmVsKTsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh dGljIHZvaWQgcGFuZWxfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ID4gK3sKPiA+ICsJc3RydWN0IHBhbmVsX2JyaWRnZSAqcGFuZWxfYnJpZGdlID0gCmRy bV9icmlkZ2VfdG9fcGFuZWxfYnJpZGdlKGJyaWRnZSk7Cj4gPiArCj4gPiArCWRybV9wYW5lbF91 bnByZXBhcmUocGFuZWxfYnJpZGdlLT5wYW5lbCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBwYW5lbF9icmlkZ2VfYnJpZGdlX2Z1bmNzID0g ewo+ID4gKwkuYXR0YWNoID0gcGFuZWxfYnJpZGdlX2F0dGFjaCwKPiA+ICsJLmRldGFjaCA9IHBh bmVsX2JyaWRnZV9kZXRhY2gsCj4gPiArCS5wcmVfZW5hYmxlID0gcGFuZWxfYnJpZGdlX3ByZV9l bmFibGUsCj4gPiArCS5lbmFibGUgPSBwYW5lbF9icmlkZ2VfZW5hYmxlLAo+ID4gKwkuZGlzYWJs ZSA9IHBhbmVsX2JyaWRnZV9kaXNhYmxlLAo+ID4gKwkucG9zdF9kaXNhYmxlID0gcGFuZWxfYnJp ZGdlX3Bvc3RfZGlzYWJsZSwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9wYW5l bF9icmlkZ2VfYWRkIC0gQ3JlYXRlcyBhIGRybV9icmlkZ2UgYW5kIGRybV9jb25uZWN0b3IgdGhh dAo+ID4gKyAqIGp1c3QgY2FsbCB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb25zIGZyb20gZHJtX3Bh bmVsLgo+ID4gKyAqCj4gPiArICogQGRldjogVGhlIHN0cnVjdCBkZXZpY2Ugb2YgdGhlIHBhbmVs IGRldmljZS4gIFRoaXMgaXMgdXNlZCBmb3IKPiA+ICsgKiByZWdpc3RlcmluZyB0aGUgZHJtX2Jy aWRnZS4KPiA+ICsgKiBAcGFuZWw6IFRoZSBkcm1fcGFuZWwgYmVpbmcgd3JhcHBlZC4gIE11c3Qg YmUgbm9uLU5VTEwuCj4gPiArICogQGNvbm5lY3Rvcl90eXBlOiBUaGUgRFJNX01PREVfQ09OTkVD VE9SXyogZm9yIHRoZSBjb25uZWN0b3IgdG8gYmUKPiA+ICsgKiBjcmVhdGVkLgo+ID4gKyAqCj4g PiArICogRm9yIGRyaXZlcnMgY29udmVydGluZyBmcm9tIGRpcmVjdGx5IHVzaW5nIGRybV9wYW5l bDogVGhlIGV4cGVjdGVkCj4gPiArICogdXNhZ2UgcGF0dGVybiBpcyB0aGF0IGR1cmluZyBlaXRo ZXIgZW5jb2RlciBtb2R1bGUgcHJvYmUgb3IgRFNJCj4gPiArICogaG9zdCBhdHRhY2gsIGEgZHJt X3BhbmVsIHdpbGwgYmUgbG9va2VkIHVwIHRocm91Z2gKPiA+ICsgKiBkcm1fb2ZfZmluZF9wYW5l bF9vcl9icmlkZ2UoKS4gIGRybV9wYW5lbF9icmlkZ2VfYWRkKCkgaXMgdXNlZCB0bwo+ID4gKyAq IHdyYXAgdGhhdCBwYW5lbCBpbiB0aGUgbmV3IGJyaWRnZSwgYW5kIHRoZSByZXN1bHQgY2FuIHRo ZW4gYmUKPiA+ICsgKiBwYXNzZWQgdG8gZHJtX2JyaWRnZV9hdHRhY2goKS4gIFRoZSBkcm1fcGFu ZWxfcHJlcGFyZSgpIGFuZCByZWxhdGVkCj4gPiArICogZnVuY3Rpb25zIGNhbiBiZSBkcm9wcGVk IGZyb20gdGhlIGVuY29kZXIgZHJpdmVyICh0aGV5J3JlIG5vdwo+ID4gKyAqIGNhbGxlZCBieSB0 aGUgS01TIGhlbHBlcnMgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgZW5jb2RlciksIGFsb25nCj4g PiArICogd2l0aCBjb25uZWN0b3IgY3JlYXRpb24uCj4gCj4gK3BhbmVsL2JyaWRnZSByZXZpZXdl cnMuCgpUaGFuayB5b3UgZm9yIHRoYXQuCgo+IFRoaXMgZG9lcyBtYWtlIHRoaW5ncyBtdWNoIGNs ZWFuZXIsIGJ1dCBpdCBzZWVtcyBhIGJpdCBzdHJhbmdlIHRvIGNyZWF0ZQo+IGEgZHJtX2JyaWRn ZSB3aGVuIHRoZXJlIGlzbid0IHJlYWxseSBhIEhXIGJyaWRnZSBpbiB0aGUgZGlzcGxheSBjaGFp biAoaS5lLAo+IHdoZW4gdGhlIERTSSBlbmNvZGVyIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBh IERTSSBwYW5lbCkuCgpJIGFncmVlIHdpdGggeW91LiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgYSBn b29kIGlkZWEsIGFuZCB3aGF0IEknZCBsaWtlIHRvIHNlZSAKaXMgYSByZWZhY3RvcmluZyBvZiB0 aGUgcGFuZWwgYW5kIGJyaWRnZSBvcHMgdGhhdCB3b3VsZCBtYWtlIHRoZW0gbW9yZSBhbGlrZSwg CmFsbG93aW5nIHRvIGhhbmRsZSBicmlkZ2VzIGFuZCBwYW5lbHMgdGhyb3VnaCBhIGNvbW1vbiBp bnRlcmZhY2UuCgpBbm90aGVyIHJlYXNvbiB0byBnbyBpbiB0aGF0IGRpcmVjdGlvbiBpcyB0aGF0 LCBpZiB3ZSBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgCmNhbiBleHBvc2UgYm90aCBlbmNvZGVyLXJl bGF0ZWQgYW5kIGNvbm5lY3Rvci1yZWxhdGVkIG9wZXJhdGlvbnMgKGJyaWRnZXMgCmJlaW5nIGdl YXJlZCB0b3dhcmRzIHRoZSBmb3JtZXIgYW5kIHBhbmVsIHRoZSBsYXR0ZXIgYXQgdGhlIG1vbWVu dCksIHRoZW4gCndlJ2xsIGJlIGFibGUgdG8gaGFuZGxlIGNvbm5lY3RvciBjcmVhdGlvbiBpbiBh IG11Y2ggZWFzaWVyIGJldHRlciB3YXkuIEFzIApJJ3ZlIGV4cGxhaW5lZCBiZWZvcmUsIGJyaWRn ZXMgc2hvdWxkIG5vdCBjcmVhdGUgY29ubmVjdG9ycywgYXMgdGhleSBoYXZlIG5vIAppZGVhIHdo ZXRoZXIgdGhleSdyZSBjaGFpbmVkIHRvIGFub3RoZXIgYnJpZGdlIG9yIG91dHB1dCBkaXJlY3Rs eSB0byBhIApjb25uZWN0b3IuCgo+IFRoZXJlIGFyZSBrbXMgZHJpdmVycyB0aGF0IHVzZSBkcm1f cGFuZWwsIGJ1dCBkb24ndCBoYXZlIHNpbXBsZSBzdHViCj4gY29ubmVjdG9ycyB0aGF0IHdyYXAg YXJvdW5kIGEgZHJtX3BhbmVsLiBUaGV5IGhhdmUgbW9yZSBjb21wbGljYXRlZAo+IGNvbm5lY3Rv ciBvcHMsIGFuZCBtYXkgY2FsbCBkcm1fcGFuZWxfcHJlcGFyZSgpIGFuZCByZWxhdGVkIGZ1bmN0 aW9ucyBhIGJpdAo+IGRpZmZlcmVudGx5LiBXZSB3b24ndCBiZSBhYmxlIHRvIHVzZSBkcm1fcGFu ZWxfYnJpZGdlIGZvciB0aG9zZSBkcml2ZXJzLgo+IAo+IEZvciBtc20sIHdlIGNoZWNrIHdoZXRo ZXIgdGhlIERTSSBlbmNvZGVyIGlzIGNvbm5lY3RlZCBkaXJlY3RseSB0byBhIHBhbmVsCj4gb3Ig YW4gZXh0ZXJuYWwgYnJpZGdlLiBJZiBpdCdzIGNvbm5lY3RlZCB0byBhbiBleHRlcm5hbCBicmlk Z2UsIHdlIHNraXAgdGhlCj4gY3JlYXRpb24gb2YgdGhlIHN0dWIgY29ubmVjdG9yLCBhbmQgcmVs eSBvbiB0aGUgZXh0ZXJuYWwgYnJpZGdlIGRyaXZlciB0bwo+IGNyZWF0ZSB0aGUgY29ubmVjdG9y Ogo+IAo+IGh0dHA6Ly9seHIuZnJlZS1lbGVjdHJvbnMuY29tL3NvdXJjZS9kcml2ZXJzL2dwdS9k cm0vbXNtL2RzaS9kc2kuYyNMMjI3Cj4gCj4gVGhlIG1zbSBzb2x1dGlvbiBpc24ndCB2ZXJ5IG5l YXQsIGJ1dCBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gY3JlYXRlIGFub3RoZXIKPiBicmlkZ2UgdG8g Z2x1ZSB0aGluZ3MgdG9nZXRoZXIuCj4gCj4gQXJjaGl0Cj4gCj4gPiArICovCj4gPiArc3RydWN0 IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ ICsJCQkJCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAo+ID4gKwkJCQkJdTMyIGNvbm5lY3Rvcl90 eXBlKQo+ID4gK3sKPiA+ICsJc3RydWN0IHBhbmVsX2JyaWRnZSAqcGFuZWxfYnJpZGdlID0KPiA+ ICsJCWRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGFuZWxfYnJpZGdlKSwgR0ZQX0tFUk5FTCk7 Cj4gPiArCWludCByZXQ7dGVncmFfb3V0cHV0X2Nvbm5lY3Rvcl9kZXRlY3QsCj4gPiArCj4gPiAr CWlmICghZGV2IHx8ICFwYW5lbCkKPiA+ICsJCXJldHVybiBFUlJfUFRSKEVJTlZBTCk7Cj4gPiAr Cj4gPiArCXBhbmVsX2JyaWRnZS0+ZGV2ID0gZGV2Owo+ID4gKwlwYW5lbF9icmlkZ2UtPmNvbm5l Y3Rvcl90eXBlID0gY29ubmVjdG9yX3R5cGU7Cj4gPiArCXBhbmVsX2JyaWRnZS0+cGFuZWwgPSBw YW5lbDsKPiA+ICsKPiA+ICsJcGFuZWxfYnJpZGdlLT5icmlkZ2UuZnVuY3MgPSAmcGFuZWxfYnJp ZGdlX2JyaWRnZV9mdW5jczsKPiA+ICsJcGFuZWxfYnJpZGdlLT5icmlkZ2Uub2Zfbm9kZSA9IGRl di0+b2Zfbm9kZTsKPiA+ICsKPiA+ICsJcmV0ID0gZHJtX2JyaWRnZV9hZGQoJnBhbmVsX2JyaWRn ZS0+YnJpZGdlKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4g PiArCj4gPiArCXJldHVybiAmcGFuZWxfYnJpZGdlLT5icmlkZ2U7Cj4gPiArfQo+ID4gK0VYUE9S VF9TWU1CT0woZHJtX3BhbmVsX2JyaWRnZV9hZGQpOwo+ID4gKwo+ID4gK3ZvaWQgZHJtX3BhbmVs X2JyaWRnZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2JyaWRnZQo+ID4g KmJyaWRnZSkgK3sKPiA+ICsJZHJtX2JyaWRnZV9yZW1vdmUoYnJpZGdlKTsKPiA+ICsJZGV2bV9r ZnJlZShkZXYsIGJyaWRnZSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX3BhbmVsX2Jy aWRnZV9yZW1vdmUpOwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBi L2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gaW5kZXggZmRkODJmY2JmMTY4Li5lMDg1NjNl ZTA1NDYgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgKPiA+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gQEAgLTI5LDYgKzI5LDcgQEAKPiA+ICAjaW5j bHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ID4gIAo+ID4gIHN0cnVjdCBkcm1fYnJpZGdlOwo+ID4g K3N0cnVjdCBkcm1fcGFuZWw7Cj4gPiAKPiA+ICAvKioKPiA+ICAgKiBzdHJ1Y3QgZHJtX2JyaWRn ZV9mdW5jcyAtIGRybV9icmlkZ2UgY29udHJvbCBmdW5jdGlvbnMKPiA+IEBAIC0yMjEsNCArMjIy LDExIEBAIHZvaWQgZHJtX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+ID4gIHZvaWQgZHJtX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpOwo+ID4gIHZvaWQgZHJtX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSk7Cj4gPiAKPiA+ICsjaWZkZWYgQ09ORklHX0RSTV9QQU5FTAo+ID4gK3N0cnVjdCBkcm1fYnJp ZGdlICpkcm1fcGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiArCQkJCQlz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPiA+ICsJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7Cj4g PiArdm9pZCBkcm1fcGFuZWxfYnJpZGdlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fYnJpZGdlCj4gPiAqYnJpZGdlKTsKPiA+ICsjZW5kaWYKPiA+ICsKPiA+ICAjZW5kaWYK Ci0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==