From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH 1/3] drm/connector: Add generic underscan properties Date: Fri, 11 May 2018 15:48:12 +0200 Message-ID: <20180511154812.48711aed@bbrezillon> References: <20180507144434.20466-1-boris.brezillon@bootlin.com> <20180507144434.20466-2-boris.brezillon@bootlin.com> <20180507151533.GD28661@phenom.ffwll.local> <20180507152530.GF28661@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180507152530.GF28661-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Daniel Vetter Cc: "David (ChunMing) Zhou" , David Airlie , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Eric Anholt , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Alex Deucher , Christian =?UTF-8?B?S8O2bmln?= , Ben Skeggs List-Id: amd-gfx.lists.freedesktop.org T24gTW9uLCA3IE1heSAyMDE4IDE3OjI1OjMwICswMjAwCkRhbmllbCBWZXR0ZXIgPGRhbmllbEBm ZndsbC5jaD4gd3JvdGU6Cgo+IE9uIE1vbiwgTWF5IDA3LCAyMDE4IGF0IDA1OjE1OjMzUE0gKzAy MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBNb24sIE1heSAwNywgMjAxOCBhdCAwNDo0 NDozMlBNICswMjAwLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6ICAKPiA+ID4gV2UgaGF2ZSAzIGRy aXZlcnMgZGVmaW5pbmcgdGhlICJ1bmRlcnNjYW4iLCAidW5kZXJzY2FuIGhib3JkZXIiIGFuZAo+ ID4gPiAidW5kZXJzY2FuIHZib3JkZXIiIHByb3BlcnRpZXMgKHJhZGVvbiwgYW1kIGFuZCBub3V2 ZWF1KSBhbmQgd2UgYXJlCj4gPiA+IGFib3V0IHRvIGFkZCB0aGUgc2FtZSBraW5kIG9mIHRoaW5n IGluIFZDNC4KPiA+ID4gCj4gPiA+IERlZmluZSBnZW5lcmljIHVuZGVyc2NhbiBwcm9wcyBhbmQg YWRkIG5ldyBmaWVsZHMgdG8gdGhlIGRybV9jb25uZWN0b3IKPiA+ID4gc3RhdGUgc28gdGhhdCB0 aGUgcHJvcGVydHkgcGFyc2luZyBsb2dpYyBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBEUk0KPiA+ID4g ZHJpdmVycy4KPiA+ID4gCj4gPiA+IEEgZHJpdmVyIGNhbiBub3cgYXR0YWNoIHVuZGVyc2NhbiBw cm9wZXJ0aWVzIHRvIGl0cyBjb25uZWN0b3IgdGhyb3VnaAo+ID4gPiB0aGUgZHJtX2Nvbm5lY3Rv cl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoKSBoZWxwZXIsIGFuZCBjYW4KPiA+ID4gY2hl Y2svYXBwbHkgdGhlIHVuZGVyc2NhbiBzZXR1cCBiYXNlZCBvbiB0aGUKPiA+ID4gZHJtX2Nvbm5l Y3Rvcl9zdGF0ZS0+dW5kZXJzY2FuIGZpZWxkcy4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6 IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPgo+ID4gPiAtLS0K PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgfCAgMTIgKysrKwo+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyB8IDEyMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgg ICAgIHwgIDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAzIGZpbGVzIGNoYW5n ZWQsIDIxMCBpbnNlcnRpb25zKCspCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4g aW5kZXggZGM4NTBiNGI2ZTIxLi5iNzMxMmJkMTcyYzkgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYwo+ID4gPiBAQCAtMTI3OCw2ICsxMjc4LDEyIEBAIHN0YXRpYyBpbnQgZHJtX2F0b21p Y19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gPiA+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gIAkJfQo+ID4gPiAgCQlzdGF0ZS0+Y29u dGVudF9wcm90ZWN0aW9uID0gdmFsOwo+ID4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u bmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSkgewo+ID4gPiArCQlzdGF0ZS0+dW5kZXJz Y2FuLm1vZGUgPSB2YWw7Cj4gPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3It PnVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5KSB7Cj4gPiA+ICsJCXN0YXRlLT51bmRlcnNjYW4u aGJvcmRlciA9IHZhbDsKPiA+ID4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+ dW5kZXJzY2FuX3Zib3JkZXJfcHJvcGVydHkpIHsKPiA+ID4gKwkJc3RhdGUtPnVuZGVyc2Nhbi52 Ym9yZGVyID0gdmFsOwo+ID4gPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWlj X3NldF9wcm9wZXJ0eSkgewo+ID4gPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWlj X3NldF9wcm9wZXJ0eShjb25uZWN0b3IsCj4gPiA+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwp Owo+ID4gPiBAQCAtMTM1OSw2ICsxMzY1LDEyIEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiAgCQkqdmFsID0g c3RhdGUtPnNjYWxpbmdfbW9kZTsKPiA+ID4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5l Y3Rvci0+Y29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KSB7Cj4gPiA+ICAJCSp2YWwgPSBzdGF0 ZS0+Y29udGVudF9wcm90ZWN0aW9uOwo+ID4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u bmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSkgewo+ID4gPiArCQkqdmFsID0gc3RhdGUt PnVuZGVyc2Nhbi5tb2RlOwo+ID4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9y LT51bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSkgewo+ID4gPiArCQkqdmFsID0gc3RhdGUtPnVu ZGVyc2Nhbi5oYm9yZGVyOwo+ID4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9y LT51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSkgewo+ID4gPiArCQkqdmFsID0gc3RhdGUtPnVu ZGVyc2Nhbi52Ym9yZGVyOwo+ID4gPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRv bWljX2dldF9wcm9wZXJ0eSkgewo+ID4gPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRv bWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsCj4gPiA+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2 YWwpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ID4gaW5kZXggZGZjOGNhMWU5NDEz Li45OTM3MzkwYjhhMjUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29u bmVjdG9yLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ID4g PiBAQCAtOTE0LDYgKzkxNCwzMSBAQCBEUk1fRU5VTV9OQU1FX0ZOKGRybV9nZXRfY29udGVudF9w cm90ZWN0aW9uX25hbWUsIGRybV9jcF9lbnVtX2xpc3QpCj4gPiA+ICAgKgljYW4gYWxzbyBleHBv c2UgdGhpcyBwcm9wZXJ0eSB0byBleHRlcm5hbCBvdXRwdXRzLCBpbiB3aGljaCBjYXNlIHRoZXkK PiA+ID4gICAqCW11c3Qgc3VwcG9ydCAiTm9uZSIsIHdoaWNoIHNob3VsZCBiZSB0aGUgZGVmYXVs dCAoc2luY2UgZXh0ZXJuYWwgc2NyZWVucwo+ID4gPiAgICoJaGF2ZSBhIGJ1aWx0LWluIHNjYWxl cikuICAKPiA+IAo+ID4gSSB0aGluayBhIG5ldyBzZWN0aW9uIGhlcmUgd291bGQgYmUgZ29vZCwg dG8gbWFrZSBpdCBtb3JlIG9idmlvdXMgdGhpcyBpcwo+ID4gYSBncm91cCBvZiBwcm9wZXJ0aWVz LiBQbHVzIGEgcmVmZXJlbmNlIHRvCj4gPiBkcm1fY29ubmVjdG9yX2F0dGFjaF91bmRlcnNjYW5f cHJvcGVydGllcygpLgo+ID4gICAKPiA+ID4gKyAqCj4gPiA+ICsgKiB1bmRlcnNjYW46Cj4gPiA+ ICsgKglUaGlzIHByb3BlcnRpZXMgZGVmaW5lcyB3aGV0aGVyIHVuZGVyc2NhbiBpcyBhY3RpdmF0 ZWQgb3Igbm90LCBhbmQgd2hlbgo+ID4gPiArICoJaXQgaXMgYWN0aXZhdGVkLCBob3cgdGhlIGhv cml6b250YWwgYW5kIHZlcnRpY2FsIGJvcmRlcnMgYXJlIGNhbGN1bGF0ZWQ6Cj4gPiA+ICsgKgo+ ID4gPiArICoJb2ZmOgo+ID4gPiArICoJCVVuZGVyc2NhbiBpcyBkaXNhYmxlZC4gVGhlIG91dHB1 dCBpbWFnZSBzaG91bGRuJ3QgYmUgc2NhbGVkIHRvCj4gPiA+ICsgKgkJdGFrZSBzY3JlZW4gYm9y ZGVycyBpbnRvIGFjY291bnQuCj4gPiA+ICsgKglvbjoKPiA+ID4gKyAqCQlVbmRlcnNjYW4gaXMg YWN0aXZhdGVkIGFuZCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBib3JkZXJzIGFyZQo+ID4gPiAr ICoJCXNwZWNpZmllZCB0aHJvdWdoIHRoZSAidW5kZXJzY2FuIGhib3JkZXIiIGFuZAo+ID4gPiAr ICoJCSJ1bmRlcnNjYW4gdmJvcmRlciIgcHJvcGVydGllcy4KPiA+ID4gKyAqCWF1dG86Cj4gPiA+ ICsgKgkJVW5kZXJzY2FuIGlzIGFjdGl2YXRlZCBhbmQgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwg Ym9yZGVycyBhcmUKPiA+ID4gKyAqCQlhdXRvbWF0aWNhbGx5IGNob3NlbiBieSB0aGUgZHJpdmVy Lgo+ID4gPiArICoKPiA+ID4gKyAqIHVuZGVyc2NhbiBoYm9yZGVyOgo+ID4gPiArICoJSG9yaXpv bnRhbCBib3JkZXIgZXhwcmVzc2VkIGluIHBpeGVscy4gVGhlIGJvcmRlciBpcyBzeW1tZXRyaWMs IHdoaWNoCj4gPiA+ICsgKgltZWFucyB5b3UnbGwgaGF2ZSBoYWxmIG9mIHRoaXMgdmFsdWUgcGxh Y2VkIG9uIHRoZSBsZWZ0IGFuZCB0aGUgb3RoZXIKPiA+ID4gKyAqCWhhbGYgb24gdGhlIHJpZ2h0 Lgo+ID4gPiArICoKPiA+ID4gKyAqIHVuZGVyc2NhbiB2Ym9yZGVyOgo+ID4gPiArICoJVmVydGlj YWwgYm9yZGVyIGV4cHJlc3NlZCBpbiBwaXhlbHMuIFRoZSBib3JkZXIgaXMgc3ltbWV0cmljLCB3 aGljaAo+ID4gPiArICoJbWVhbnMgeW91J2xsIGhhdmUgaGFsZiBvZiB0aGlzIHZhbHVlIHBsYWNl ZCBvbiB0aGUgdG9wIGFuZCB0aGUgb3RoZXIKPiA+ID4gKyAqCWhhbGYgb24gdGhlIGJvdHRvbS4K PiA+ID4gICAqLwo+ID4gPiAgCj4gPiA+ICBpbnQgZHJtX2Nvbm5lY3Rvcl9jcmVhdGVfc3RhbmRh cmRfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiBAQCAtMTEwOCw2ICsx MTMzLDEwMSBAQCBpbnQgZHJtX21vZGVfY3JlYXRlX3R2X3Byb3BlcnRpZXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1CT0woZHJtX21vZGVfY3JlYXRl X3R2X3Byb3BlcnRpZXMpOwo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w cm9wX2VudW1fbGlzdCBkcm1fdW5kZXJzY2FuX21vZGVfZW51bV9saXN0W10gPSB7Cj4gPiA+ICsJ eyBEUk1fVU5ERVJTQ0FOX09GRiwgIm9mZiIgfSwKPiA+ID4gKwl7IERSTV9VTkRFUlNDQU5fT04s ICJvbiIgfSwKPiA+ID4gKwl7IERSTV9VTkRFUlNDQU5fQVVUTywgImF1dG8iIH0sCj4gPiA+ICt9 Owo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVy c2Nhbl9wcm9wZXJ0aWVzIC0gYXR0YWNoIGF0b21pYyB1bmRlcnNjYW4KPiA+ID4gKyAqCQkJCQkg ICAgICAgcHJvcGVydGllcwo+ID4gPiArICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIGF0dGFj aCB1bmRlcnNjYW4gbW9kZSBwcm9wZXJ0aWVzIG9uLgo+ID4gPiArICogQG1vZGVfbWFzazogYml0 bWFzayBvZiAlRFJNX1VOREVSU0NBTl9YWCBtb2RlcyBlbmNvZGluZyB0aGUgc3VwcG9ydGVkCj4g PiA+ICsgKgkgICAgICAgdW5kZXJzY2FuIG1vZGVzLgo+ID4gPiArICogQG1heF9oYm9yZGVyOiBt YXhpbXVtIHNpemUgb2YgdGhlIGhvcml6b250YWwgYm9yZGVyIGV4cHJlc3NlZCBpbiBwaXhlbHMu Cj4gPiA+ICsgKgkJIFNob3VsZCBiZSA+IDAuCj4gPiA+ICsgKiBAbWF4X3Zib3JkZXI6IG1heGlt dW0gc2l6ZSBvZiB0aGUgdmVydGljYWwgYm9yZGVyIGV4cHJlc3NlZCBpbiBwaXhlbHMuCj4gPiA+ ICsgKgkJIFNob3VsZCBiZSA+IDAuCj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBpcyB1c2VkIHRv IGFkZCBzdXBwb3J0IGZvciB1bmRlcnNjYW4gdG8gYXRvbWljIGRyaXZlcnMuCj4gPiA+ICsgKiBU aGUgdW5kZXJzY2FuIGNvbmZpZyB3aWxsIGJlIHNldCB0byAmZHJtX2Nvbm5lY3Rvcl9zdGF0ZS51 bmRlcnNjYW4KPiA+ID4gKyAqIGFuZCBjYW4gYmUgdXNlZCBmcm9tICZkcm1fY29ubmVjdG9yX2hl bHBlcl9mdW5jcy0+YXRvbWljX2NoZWNrIGZvcgo+ID4gPiArICogdmFsaWRhdGlvbi4KPiA+ID4g KyAqCj4gPiA+ICsgKiBSZXR1cm5zOgo+ID4gPiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2 ZSBlcnJubyBvbiBmYWlsdXJlLgo+ID4gPiArICovCj4gPiA+ICtpbnQgZHJtX2Nvbm5lY3Rvcl9h dHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiA+ID4gKwkJCQkJICAgICAgdTMyIG1vZGVfbWFzaywgdTY0IG1heF9oYm9yZGVyLAo+ID4g PiArCQkJCQkgICAgICB1NjQgbWF4X3Zib3JkZXIpCj4gPiA+ICt7Cj4gPiA+ICsJdW5zaWduZWQg aW50IGksIG5tb2RlcyA9IEFSUkFZX1NJWkUoZHJtX3VuZGVyc2Nhbl9tb2RlX2VudW1fbGlzdCk7 Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiAr CXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIW1heF9oYm9y ZGVyIHx8ICFtYXhfdmJvcmRlcikKPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoIWh3ZWlnaHQzMihtb2RlX21hc2spIHx8IChtb2RlX21hc2sgJiB+R0VOTUFTSyhu bW9kZXMgLSAxLCAwKSkpCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJ cHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0VOVU0sICJ1bmRl cnNjYW4iLAo+ID4gPiArCQkJCSAgIGh3ZWlnaHQzMihtb2RlX21hc2spKTsKPiA+ID4gKwlpZiAo IXByb3ApCj4gPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoZHJtX3VuZGVyc2Nhbl9tb2RlX2VudW1fbGlzdCk7IGkrKykgewo+ ID4gPiArCQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0ICplbnRyeTsKPiA+ID4gKwkJ aW50IHJldDsKPiA+ID4gKwo+ID4gPiArCQlpZiAoIShCSVQoaSkgJiBtb2RlX21hc2spKQo+ID4g PiArCQkJY29udGludWU7Cj4gPiA+ICsKPiA+ID4gKwkJZW50cnkgPSAmZHJtX3VuZGVyc2Nhbl9t b2RlX2VudW1fbGlzdFtpXTsKPiA+ID4gKwkJcmV0ID0gZHJtX3Byb3BlcnR5X2FkZF9lbnVtKHBy b3AsIGVudHJ5LT50eXBlLCBlbnRyeS0+bmFtZSk7Cj4gPiA+ICsJCWlmIChyZXQpCj4gPiA+ICsJ CQlnb3RvIGVycl9mcmVlX21vZGVfcHJvcDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwljb25u ZWN0b3ItPnVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5ID0gcHJvcDsKPiA+ID4gKwo+ID4gPiArCXBy b3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKGRldiwgMCwgInVuZGVyc2NhbiBoYm9yZGVy IiwgMCwKPiA+ID4gKwkJCQkJIG1heF9oYm9yZGVyKTsKPiA+ID4gKwlpZiAoIXByb3ApCj4gPiA+ ICsJCWdvdG8gZXJyX2ZyZWVfbW9kZV9wcm9wOwo+ID4gPiArCj4gPiA+ICsJY29ubmVjdG9yLT51 bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSA9IHByb3A7Cj4gPiA+ICsKPiA+ID4gKwlwcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICJ1bmRlcnNjYW4gdmJvcmRlciIsIDAs Cj4gPiA+ICsJCQkJCSBtYXhfdmJvcmRlcik7Cj4gPiA+ICsJaWYgKCFwcm9wKQo+ID4gPiArCQln b3RvIGVycl9mcmVlX2hib3JkZXJfcHJvcDsKPiA+ID4gKwo+ID4gPiArCWNvbm5lY3Rvci0+dW5k ZXJzY2FuX3Zib3JkZXJfcHJvcGVydHkgPSBwcm9wOwo+ID4gPiArCj4gPiA+ICsJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKPiA+ID4gKwkJCQkgICBjb25uZWN0 b3ItPnVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5LAo+ID4gPiArCQkJCSAgIERSTV9VTkRFUlNDQU5f T0ZGKTsKPiA+ID4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNl LAo+ID4gPiArCQkJCSAgIGNvbm5lY3Rvci0+dW5kZXJzY2FuX2hib3JkZXJfcHJvcGVydHksIDAp Owo+ID4gPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCj4g PiA+ICsJCQkJICAgY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSwgMCk7Cj4g PiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArZXJyX2ZyZWVfaGJvcmRlcl9w cm9wOgo+ID4gPiArCWRybV9wcm9wZXJ0eV9kZXN0cm95KGRldiwgY29ubmVjdG9yLT51bmRlcnNj YW5faGJvcmRlcl9wcm9wZXJ0eSk7Cj4gPiA+ICsJY29ubmVjdG9yLT51bmRlcnNjYW5faGJvcmRl cl9wcm9wZXJ0eSA9IE5VTEw7Cj4gPiA+ICsKPiA+ID4gK2Vycl9mcmVlX21vZGVfcHJvcDoKPiA+ ID4gKwlkcm1fcHJvcGVydHlfZGVzdHJveShkZXYsIGNvbm5lY3Rvci0+dW5kZXJzY2FuX21vZGVf cHJvcGVydHkpOwo+ID4gPiArCWNvbm5lY3Rvci0+dW5kZXJzY2FuX21vZGVfcHJvcGVydHkgPSBO VUxMOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICt9Cj4gPiA+ICtFWFBP UlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVyc2Nhbl9wcm9wZXJ0aWVzKTsKPiA+ ID4gKwo+ID4gPiAgLyoqCj4gPiA+ICAgKiBkcm1fbW9kZV9jcmVhdGVfc2NhbGluZ19tb2RlX3By b3BlcnR5IC0gY3JlYXRlIHNjYWxpbmcgbW9kZSBwcm9wZXJ0eQo+ID4gPiAgICogQGRldjogRFJN IGRldmljZQo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIv aW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+IGluZGV4IDY3NWNjM2Y4Y2Y4NS4uNDYz ODBlZTZkNGVlIDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgK PiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+IEBAIC0zNzIsNiAr MzcyLDUyIEBAIHN0cnVjdCBkcm1fdHZfY29ubmVjdG9yX3N0YXRlIHsKPiA+ID4gIAl1bnNpZ25l ZCBpbnQgaHVlOwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiArLyoqCj4gPiA+ICsgKiBlbnVtIGRy bV91bmRlcnNjYW5fbW9kZSAtIFVuZGVyc2NhbiBtb2RlCj4gPiA+ICsgKgo+ID4gPiArICogVGhp cyBlbnVtIGlzIHVzZWQgdG8gdHJhY2sgdGhlIHVuZGVyc2NhbiBtb2RlLgo+ID4gPiArICoKPiA+ ID4gKyAqIEBEUk1fVU5ERVJTQ0FOX09GRjogTm8gdW5kZXJzY2FuIGFwcGxpZWQsIHRoZSBvdXRw dXQgaW1hZ2Ugd2lsbCBiZSB1bmNoYW5nZWQKPiA+ID4gKyAqIEBEUk1fVU5ERVJTQ0FOX09OOiBV bmRlcnNjYW4gaXMgZW5hYmxlZCwgYW5kIGhvcml6b250YWwvdmVydGljYWwgYm9yZGVyIHNpemUK PiA+ID4gKyAqCQkgICAgICBhcmUgc3BlY2lmaWVkIHRocm91Z2ggdGhlICZzdHJ1Y3RfZHJtX3Vu ZGVyc2Nhbi0+aGJvcmRlcgo+ID4gPiArICoJCSAgICAgIGFuZCAmc3RydWN0X2RybV91bmRlcnNj YW4tPnZib3JkZXIgZmllbGRzLgo+ID4gPiArICogQERSTV9VTkRFUlNDQU5fQVVUTzogVW5kZXJz Y2FuIGlzIGVuYWJsZWQgYW5kICZzdHJ1Y3RfZHJtX3VuZGVyc2Nhbi0+aGJvcmRlcgo+ID4gPiAr ICoJCQlhbmQgJnN0cnVjdF9kcm1fdW5kZXJzY2FuLT52Ym9yZGVyIGFyZSBndWVzc2VkIGJ5IHRo ZQo+ID4gPiArICoJCQlkcml2ZXIuCj4gPiA+ICsgKi8KPiA+ID4gK2VudW0gZHJtX3VuZGVyc2Nh bl9tb2RlIHsKPiA+ID4gKwlEUk1fVU5ERVJTQ0FOX09GRiwKPiA+ID4gKwlEUk1fVU5ERVJTQ0FO X09OLAo+ID4gPiArCURSTV9VTkRFUlNDQU5fQVVUTywKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4g Ky8qKgo+ID4gPiArICogc3RydWN0IGRybV91bmRlcnNjYW4gLSBVbmRlcnNjYW4gcHJvcGVydGll cyBhdHRhY2hlZCB0byBhIGNvbm5lY3RvciBzdGF0ZQo+ID4gPiArICoKPiA+ID4gKyAqIFRoaXMg Y2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgQ1JUQyBob3cgdGhlIGltYWdlIHNob3VsZCBiZSBzY2Fs ZWQvcGxhY2VkIGluCj4gPiA+ICsgKiBvcmRlciB0byBjb3ZlciBmaXQgaW4gdGhlIGRpc3BsYXkg Y29ubmVjdGVkIHRocm91Z2ggdGhpcyBjb25uZWN0b3IuIE1vc3Qgb2YKPiA+ID4gKyAqIHRoZSB0 aW1lIHVzZWQgdG8gYWRkcmVzcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBkaXNwbGF5IGJvcmRlcnMg YXJlIGhpZGRlbi4KPiA+ID4gKyAqIENhbiBhbHNvIGJlIHVzZWQgdG8gY29tcGVuc2F0ZSBvdmVy c2NhbiBkb25lIG9uIHRoZSBkaXNwbGF5IHNpZGUuCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBk cm1fdW5kZXJzY2FuIHsgIAo+ID4gCj4gPiBJJ2QgY2FsbCB0aGlzIGRybV91bmRlcnNjYW5fc3Rh dGUsIHNpbWlsYXIgdG8gaG93IHdlIGhhdmUKPiA+IGRybV90dl9jb25uZWN0b3Jfc3RhdGUuCj4g PiAgIAo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBtb2RlOiBVbmRlcnNjYW4gbW9kZS4KPiA+ID4g KwkgKi8KPiA+ID4gKwllbnVtIGRybV91bmRlcnNjYW5fbW9kZSBtb2RlOwo+ID4gPiArCj4gPiA+ ICsJLyoqCj4gPiA+ICsJICogQGhib3JkZXI6IEhvcml6b250YWwgYm9yZGVyLiBUaGlzIHZhbHVl cyBlbmNvZGVzIGJvdGggdGhlIGxlZnQgYW5kCj4gPiA+ICsJICogcmlnaHQgYm9yZGVyczogbGVm dF9ib3JkZXIgPSByaWdodF9ib3JkZXIgPSBoYm9yZGVyIC8gMi4KPiA+ID4gKwkgKi8KPiA+ID4g Kwl1bnNpZ25lZCBpbnQgaGJvcmRlcjsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEB2 Ym9yZGVyOiBWZXJ0aWNhbCBib3JkZXIuIFRoaXMgdmFsdWVzIGVuY29kZXMgYm90aCB0aGUgdG9w IGFuZAo+ID4gPiArCSAqIGJvdHRvbSBib3JkZXJzOiB0b3BfYm9yZGVyID0gYm90dG9tX2JvcmRl ciA9IHZib3JkZXIgLyAyLgo+ID4gPiArCSAqLwo+ID4gPiArCXVuc2lnbmVkIGludCB2Ym9yZGVy Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiAgLyoqCj4gPiA+ICAgKiBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAtIG11dGFibGUgY29ubmVjdG9yIHN0YXRlCj4gPiA+ICAgKiBAY29ubmVjdG9y OiBiYWNrcG9pbnRlciB0byB0aGUgY29ubmVjdG9yCj4gPiA+IEBAIC00MjksNiArNDc1LDEyIEBA IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiA+ID4gIAkgKiBwcm90ZWN0aW9uLiBUaGlz IGlzIG1vc3QgY29tbW9ubHkgdXNlZCBmb3IgSERDUC4KPiA+ID4gIAkgKi8KPiA+ID4gIAl1bnNp Z25lZCBpbnQgY29udGVudF9wcm90ZWN0aW9uOwo+ID4gPiArCj4gPiA+ICsJLyoqCj4gPiA+ICsJ ICogQHVuZGVyc2NhbjogVW5kZXJzY2FuIGluZm9ybWF0aW9uLiBNb3N0IGNvbW1vbmx5IHVzZWQg dG8gYWRqdXN0Cj4gPiA+ICsJICogaW1hZ2Ugd2hlbiB0aGUgZGlzcGxheSBpcyBkb2luZyBvdmVy c2Nhbi4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3VuZGVyc2NhbiB1bmRlcnNjYW47 Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gQEAgLTg5Miw2ICs5NDQsMjkgQEAg c3RydWN0IGRybV9jb25uZWN0b3Igewo+ID4gPiAgCSAqLwo+ID4gPiAgCXN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqdGlsZV9ibG9iX3B0cjsKPiA+ID4gIAo+ID4gPiArCS8qKgo+ID4gPiArCSAq IEB1bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eTogT3B0aW9uYWwgY29ubmVjdG9yIHVuZGVyc2NhbiBt b2RlLiBVc2VkIGJ5Cj4gPiA+ICsJICogdGhlIGRyaXZlciB0byBzY2FsZSB0aGUgb3V0cHV0IGlt YWdlIGFuZCBjb21wZW5zYXRlIGFuIG92ZXJzY2FuIGRvbmUKPiA+ID4gKwkgKiBvbiB0aGUgZGlz cGxheSBzaWRlLgo+ID4gPiArCSAqLwo+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnVuZGVy c2Nhbl9tb2RlX3Byb3BlcnR5Owo+ID4gPiArCj4gPiA+ICsJLyoqCj4gPiA+ICsJICogQHVuZGVy c2Nhbl9oYm9yZGVyX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgdW5kZXJzY2FuIGhvcml6 b250YWwKPiA+ID4gKwkgKiBib3JkZXIgKGV4cHJlc3NlZCBpbiBwaXhlbHMpLiBVc2VkIGJ5IHRo ZSBkcml2ZXIgdG8gYWRqdXN0IHRoZQo+ID4gPiArCSAqIG91dHB1dCBpbWFnZSBwb3NpdGlvbiBh bmQgY29tcGVuc2F0ZSBhbiBvdmVyc2NhbiBkb25lIG9uIHRoZSBkaXNwbGF5Cj4gPiA+ICsJICog c2lkZS4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp1bmRlcnNjYW5f aGJvcmRlcl9wcm9wZXJ0eTsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEB1bmRlcnNj YW5faGJvcmRlcl9wcm9wZXJ0eTogT3B0aW9uYWwgY29ubmVjdG9yIHVuZGVyc2NhbiB2ZXJ0aWNh bAo+ID4gPiArCSAqIGJvcmRlciAoZXhwcmVzc2VkIGluIHBpeGVscykuIFVzZWQgYnkgdGhlIGRy aXZlciB0byBhZGp1c3QgdGhlCj4gPiA+ICsJICogb3V0cHV0IGltYWdlIHBvc2l0aW9uIGFuZCBj b21wZW5zYXRlIGFuIG92ZXJzY2FuIGRvbmUgb24gdGhlIGRpc3BsYXkKPiA+ID4gKwkgKiBzaWRl Lgo+ID4gPiArCSAqLwo+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnVuZGVyc2Nhbl92Ym9y ZGVyX3Byb3BlcnR5OyAgCj4gPiAKPiA+IFNpbmNlIHlvdSBkb24ndCBhbGxvdyBkcml2ZXJzIHRv IGhhdmUgYSBwZXItY29ubmVjdG9yIHZhbHVlIHJhbmdlIGZvcgo+ID4gdGhlc2UgcHJvcGVydGll cyB0aGVzZSBzaG91bGQgYmUgaW4gZHJtX21vZGVfY29uZmlnIEkgdGhpbmsuCgpJIGRvIGFsbG93 IHRoYXQuIFNlZSB0aGUgbWF4X3Zib3JkZXIsIG1heF9oYm9yZGVyIGFyZ3MgaW4gdGhlIApkcm1f Y29ubmVjdG9yX2F0dGFjaF91bmRlcnNjYW5fcHJvcGVydGllcygpIHByb3RvdHlwZS4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5n IGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==