From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/connector: Add generic underscan properties Date: Mon, 7 May 2018 17:25:30 +0200 Message-ID: <20180507152530.GF28661@phenom.ffwll.local> References: <20180507144434.20466-1-boris.brezillon@bootlin.com> <20180507144434.20466-2-boris.brezillon@bootlin.com> <20180507151533.GD28661@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180507151533.GD28661-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Boris Brezillon 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, Daniel Vetter , Alex Deucher , Christian =?iso-8859-1?Q?K=F6nig?= , Ben Skeggs T24gTW9uLCBNYXkgMDcsIDIwMTggYXQgMDU6MTU6MzNQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBNb24sIE1heSAwNywgMjAxOCBhdCAwNDo0NDozMlBNICswMjAwLCBCb3JpcyBC cmV6aWxsb24gd3JvdGU6Cj4gPiBXZSBoYXZlIDMgZHJpdmVycyBkZWZpbmluZyB0aGUgInVuZGVy c2NhbiIsICJ1bmRlcnNjYW4gaGJvcmRlciIgYW5kCj4gPiAidW5kZXJzY2FuIHZib3JkZXIiIHBy b3BlcnRpZXMgKHJhZGVvbiwgYW1kIGFuZCBub3V2ZWF1KSBhbmQgd2UgYXJlCj4gPiBhYm91dCB0 byBhZGQgdGhlIHNhbWUga2luZCBvZiB0aGluZyBpbiBWQzQuCj4gPiAKPiA+IERlZmluZSBnZW5l cmljIHVuZGVyc2NhbiBwcm9wcyBhbmQgYWRkIG5ldyBmaWVsZHMgdG8gdGhlIGRybV9jb25uZWN0 b3IKPiA+IHN0YXRlIHNvIHRoYXQgdGhlIHByb3BlcnR5IHBhcnNpbmcgbG9naWMgY2FuIGJlIHNo YXJlZCBieSBhbGwgRFJNCj4gPiBkcml2ZXJzLgo+ID4gCj4gPiBBIGRyaXZlciBjYW4gbm93IGF0 dGFjaCB1bmRlcnNjYW4gcHJvcGVydGllcyB0byBpdHMgY29ubmVjdG9yIHRocm91Z2gKPiA+IHRo ZSBkcm1fY29ubmVjdG9yX2F0dGFjaF91bmRlcnNjYW5fcHJvcGVydGllcygpIGhlbHBlciwgYW5k IGNhbgo+ID4gY2hlY2svYXBwbHkgdGhlIHVuZGVyc2NhbiBzZXR1cCBiYXNlZCBvbiB0aGUKPiA+ IGRybV9jb25uZWN0b3Jfc3RhdGUtPnVuZGVyc2NhbiBmaWVsZHMuCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPgo+ID4g LS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICB8ICAxMiArKysrCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyB8IDEyMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAg ICB8ICA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwg MjEwIGluc2VydGlvbnMoKykKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiBpbmRleCBkYzg1 MGI0YjZlMjEuLmI3MzEyYmQxNzJjOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+IEBA IC0xMjc4LDYgKzEyNzgsMTIgQEAgc3RhdGljIGludCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9zZXRf cHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAJCQlyZXR1cm4g LUVJTlZBTDsKPiA+ICAJCX0KPiA+ICAJCXN0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gPSB2YWw7 Cj4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9w cm9wZXJ0eSkgewo+ID4gKwkJc3RhdGUtPnVuZGVyc2Nhbi5tb2RlID0gdmFsOwo+ID4gKwl9IGVs c2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+dW5kZXJzY2FuX2hib3JkZXJfcHJvcGVydHkp IHsKPiA+ICsJCXN0YXRlLT51bmRlcnNjYW4uaGJvcmRlciA9IHZhbDsKPiA+ICsJfSBlbHNlIGlm IChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPnVuZGVyc2Nhbl92Ym9yZGVyX3Byb3BlcnR5KSB7Cj4g PiArCQlzdGF0ZS0+dW5kZXJzY2FuLnZib3JkZXIgPSB2YWw7Cj4gPiAgCX0gZWxzZSBpZiAoY29u bmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eSkgewo+ID4gIAkJcmV0dXJuIGNvbm5l Y3Rvci0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkoY29ubmVjdG9yLAo+ID4gIAkJCQlzdGF0 ZSwgcHJvcGVydHksIHZhbCk7Cj4gPiBAQCAtMTM1OSw2ICsxMzY1LDEyIEBAIGRybV9hdG9taWNf Y29ubmVjdG9yX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ID4gIAkJKnZhbCA9IHN0YXRlLT5zY2FsaW5nX21vZGU7Cj4gPiAgCX0gZWxzZSBpZiAocHJvcGVy dHkgPT0gY29ubmVjdG9yLT5jb250ZW50X3Byb3RlY3Rpb25fcHJvcGVydHkpIHsKPiA+ICAJCSp2 YWwgPSBzdGF0ZS0+Y29udGVudF9wcm90ZWN0aW9uOwo+ID4gKwl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IGNvbm5lY3Rvci0+dW5kZXJzY2FuX21vZGVfcHJvcGVydHkpIHsKPiA+ICsJCSp2YWwgPSBz dGF0ZS0+dW5kZXJzY2FuLm1vZGU7Cj4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVj dG9yLT51bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSkgewo+ID4gKwkJKnZhbCA9IHN0YXRlLT51 bmRlcnNjYW4uaGJvcmRlcjsKPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3It PnVuZGVyc2Nhbl92Ym9yZGVyX3Byb3BlcnR5KSB7Cj4gPiArCQkqdmFsID0gc3RhdGUtPnVuZGVy c2Nhbi52Ym9yZGVyOwo+ID4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19n ZXRfcHJvcGVydHkpIHsKPiA+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfZ2V0 X3Byb3BlcnR5KGNvbm5lY3RvciwKPiA+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPiBpbmRleCBkZmM4Y2ExZTk0MTMuLjk5MzczOTBiOGEy NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+IEBAIC05MTQsNiArOTE0LDMx IEBAIERSTV9FTlVNX05BTUVfRk4oZHJtX2dldF9jb250ZW50X3Byb3RlY3Rpb25fbmFtZSwgZHJt X2NwX2VudW1fbGlzdCkKPiA+ICAgKgljYW4gYWxzbyBleHBvc2UgdGhpcyBwcm9wZXJ0eSB0byBl eHRlcm5hbCBvdXRwdXRzLCBpbiB3aGljaCBjYXNlIHRoZXkKPiA+ICAgKgltdXN0IHN1cHBvcnQg Ik5vbmUiLCB3aGljaCBzaG91bGQgYmUgdGhlIGRlZmF1bHQgKHNpbmNlIGV4dGVybmFsIHNjcmVl bnMKPiA+ICAgKgloYXZlIGEgYnVpbHQtaW4gc2NhbGVyKS4KPiAKPiBJIHRoaW5rIGEgbmV3IHNl Y3Rpb24gaGVyZSB3b3VsZCBiZSBnb29kLCB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGlzIGlz Cj4gYSBncm91cCBvZiBwcm9wZXJ0aWVzLiBQbHVzIGEgcmVmZXJlbmNlIHRvCj4gZHJtX2Nvbm5l Y3Rvcl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoKS4KPiAKPiA+ICsgKgo+ID4gKyAqIHVu ZGVyc2NhbjoKPiA+ICsgKglUaGlzIHByb3BlcnRpZXMgZGVmaW5lcyB3aGV0aGVyIHVuZGVyc2Nh biBpcyBhY3RpdmF0ZWQgb3Igbm90LCBhbmQgd2hlbgo+ID4gKyAqCWl0IGlzIGFjdGl2YXRlZCwg aG93IHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBib3JkZXJzIGFyZSBjYWxjdWxhdGVkOgo+ ID4gKyAqCj4gPiArICoJb2ZmOgo+ID4gKyAqCQlVbmRlcnNjYW4gaXMgZGlzYWJsZWQuIFRoZSBv dXRwdXQgaW1hZ2Ugc2hvdWxkbid0IGJlIHNjYWxlZCB0bwo+ID4gKyAqCQl0YWtlIHNjcmVlbiBi b3JkZXJzIGludG8gYWNjb3VudC4KPiA+ICsgKglvbjoKPiA+ICsgKgkJVW5kZXJzY2FuIGlzIGFj dGl2YXRlZCBhbmQgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYm9yZGVycyBhcmUKPiA+ICsgKgkJ c3BlY2lmaWVkIHRocm91Z2ggdGhlICJ1bmRlcnNjYW4gaGJvcmRlciIgYW5kCj4gPiArICoJCSJ1 bmRlcnNjYW4gdmJvcmRlciIgcHJvcGVydGllcy4KPiA+ICsgKglhdXRvOgo+ID4gKyAqCQlVbmRl cnNjYW4gaXMgYWN0aXZhdGVkIGFuZCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBib3JkZXJzIGFy ZQo+ID4gKyAqCQlhdXRvbWF0aWNhbGx5IGNob3NlbiBieSB0aGUgZHJpdmVyLgo+ID4gKyAqCj4g PiArICogdW5kZXJzY2FuIGhib3JkZXI6Cj4gPiArICoJSG9yaXpvbnRhbCBib3JkZXIgZXhwcmVz c2VkIGluIHBpeGVscy4gVGhlIGJvcmRlciBpcyBzeW1tZXRyaWMsIHdoaWNoCj4gPiArICoJbWVh bnMgeW91J2xsIGhhdmUgaGFsZiBvZiB0aGlzIHZhbHVlIHBsYWNlZCBvbiB0aGUgbGVmdCBhbmQg dGhlIG90aGVyCj4gPiArICoJaGFsZiBvbiB0aGUgcmlnaHQuCj4gPiArICoKPiA+ICsgKiB1bmRl cnNjYW4gdmJvcmRlcjoKPiA+ICsgKglWZXJ0aWNhbCBib3JkZXIgZXhwcmVzc2VkIGluIHBpeGVs cy4gVGhlIGJvcmRlciBpcyBzeW1tZXRyaWMsIHdoaWNoCj4gPiArICoJbWVhbnMgeW91J2xsIGhh dmUgaGFsZiBvZiB0aGlzIHZhbHVlIHBsYWNlZCBvbiB0aGUgdG9wIGFuZCB0aGUgb3RoZXIKPiA+ ICsgKgloYWxmIG9uIHRoZSBib3R0b20uCj4gPiAgICovCj4gPiAgCj4gPiAgaW50IGRybV9jb25u ZWN0b3JfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiA+IEBAIC0xMTA4LDYgKzExMzMsMTAxIEBAIGludCBkcm1fbW9kZV9jcmVhdGVfdHZfcHJvcGVy dGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MKGRy bV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVzKTsKPiA+ICAKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wcm9wX2VudW1fbGlzdCBkcm1fdW5kZXJzY2FuX21vZGVfZW51bV9saXN0W10gPSB7 Cj4gPiArCXsgRFJNX1VOREVSU0NBTl9PRkYsICJvZmYiIH0sCj4gPiArCXsgRFJNX1VOREVSU0NB Tl9PTiwgIm9uIiB9LAo+ID4gKwl7IERSTV9VTkRFUlNDQU5fQVVUTywgImF1dG8iIH0sCj4gPiAr fTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBkcm1fY29ubmVjdG9yX2F0dGFjaF91bmRlcnNjYW5f cHJvcGVydGllcyAtIGF0dGFjaCBhdG9taWMgdW5kZXJzY2FuCj4gPiArICoJCQkJCSAgICAgICBw cm9wZXJ0aWVzCj4gPiArICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIGF0dGFjaCB1bmRlcnNj YW4gbW9kZSBwcm9wZXJ0aWVzIG9uLgo+ID4gKyAqIEBtb2RlX21hc2s6IGJpdG1hc2sgb2YgJURS TV9VTkRFUlNDQU5fWFggbW9kZXMgZW5jb2RpbmcgdGhlIHN1cHBvcnRlZAo+ID4gKyAqCSAgICAg ICB1bmRlcnNjYW4gbW9kZXMuCj4gPiArICogQG1heF9oYm9yZGVyOiBtYXhpbXVtIHNpemUgb2Yg dGhlIGhvcml6b250YWwgYm9yZGVyIGV4cHJlc3NlZCBpbiBwaXhlbHMuCj4gPiArICoJCSBTaG91 bGQgYmUgPiAwLgo+ID4gKyAqIEBtYXhfdmJvcmRlcjogbWF4aW11bSBzaXplIG9mIHRoZSB2ZXJ0 aWNhbCBib3JkZXIgZXhwcmVzc2VkIGluIHBpeGVscy4KPiA+ICsgKgkJIFNob3VsZCBiZSA+IDAu Cj4gPiArICoKPiA+ICsgKiBUaGlzIGlzIHVzZWQgdG8gYWRkIHN1cHBvcnQgZm9yIHVuZGVyc2Nh biB0byBhdG9taWMgZHJpdmVycy4KPiA+ICsgKiBUaGUgdW5kZXJzY2FuIGNvbmZpZyB3aWxsIGJl IHNldCB0byAmZHJtX2Nvbm5lY3Rvcl9zdGF0ZS51bmRlcnNjYW4KPiA+ICsgKiBhbmQgY2FuIGJl IHVzZWQgZnJvbSAmZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MtPmF0b21pY19jaGVjayBmb3IK PiA+ICsgKiB2YWxpZGF0aW9uLgo+ID4gKyAqCj4gPiArICogUmV0dXJuczoKPiA+ICsgKiBaZXJv IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gPiArICovCj4gPiAraW50 IGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVyc2Nhbl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiArCQkJCQkgICAgICB1MzIgbW9kZV9tYXNrLCB1NjQgbWF4 X2hib3JkZXIsCj4gPiArCQkJCQkgICAgICB1NjQgbWF4X3Zib3JkZXIpCj4gPiArewo+ID4gKwl1 bnNpZ25lZCBpbnQgaSwgbm1vZGVzID0gQVJSQVlfU0laRShkcm1fdW5kZXJzY2FuX21vZGVfZW51 bV9saXN0KTsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4gKwo+ID4gKwlpZiAoIW1heF9oYm9y ZGVyIHx8ICFtYXhfdmJvcmRlcikKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKwlp ZiAoIWh3ZWlnaHQzMihtb2RlX21hc2spIHx8IChtb2RlX21hc2sgJiB+R0VOTUFTSyhubW9kZXMg LSAxLCAwKSkpCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsJcHJvcCA9IGRybV9w cm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0VOVU0sICJ1bmRlcnNjYW4iLAo+ID4g KwkJCQkgICBod2VpZ2h0MzIobW9kZV9tYXNrKSk7Cj4gPiArCWlmICghcHJvcCkKPiA+ICsJCXJl dHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcm1f dW5kZXJzY2FuX21vZGVfZW51bV9saXN0KTsgaSsrKSB7Cj4gPiArCQljb25zdCBzdHJ1Y3QgZHJt X3Byb3BfZW51bV9saXN0ICplbnRyeTsKPiA+ICsJCWludCByZXQ7Cj4gPiArCj4gPiArCQlpZiAo IShCSVQoaSkgJiBtb2RlX21hc2spKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJZW50 cnkgPSAmZHJtX3VuZGVyc2Nhbl9tb2RlX2VudW1fbGlzdFtpXTsKPiA+ICsJCXJldCA9IGRybV9w cm9wZXJ0eV9hZGRfZW51bShwcm9wLCBlbnRyeS0+dHlwZSwgZW50cnktPm5hbWUpOwo+ID4gKwkJ aWYgKHJldCkKPiA+ICsJCQlnb3RvIGVycl9mcmVlX21vZGVfcHJvcDsKPiA+ICsJfQo+ID4gKwo+ ID4gKwljb25uZWN0b3ItPnVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5ID0gcHJvcDsKPiA+ICsKPiA+ ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2LCAwLCAidW5kZXJzY2FuIGhi b3JkZXIiLCAwLAo+ID4gKwkJCQkJIG1heF9oYm9yZGVyKTsKPiA+ICsJaWYgKCFwcm9wKQo+ID4g KwkJZ290byBlcnJfZnJlZV9tb2RlX3Byb3A7Cj4gPiArCj4gPiArCWNvbm5lY3Rvci0+dW5kZXJz Y2FuX2hib3JkZXJfcHJvcGVydHkgPSBwcm9wOwo+ID4gKwo+ID4gKwlwcm9wID0gZHJtX3Byb3Bl cnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICJ1bmRlcnNjYW4gdmJvcmRlciIsIDAsCj4gPiArCQkJ CQkgbWF4X3Zib3JkZXIpOwo+ID4gKwlpZiAoIXByb3ApCj4gPiArCQlnb3RvIGVycl9mcmVlX2hi b3JkZXJfcHJvcDsKPiA+ICsKPiA+ICsJY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9w ZXJ0eSA9IHByb3A7Cj4gPiArCj4gPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25u ZWN0b3ItPmJhc2UsCj4gPiArCQkJCSAgIGNvbm5lY3Rvci0+dW5kZXJzY2FuX21vZGVfcHJvcGVy dHksCj4gPiArCQkJCSAgIERSTV9VTkRFUlNDQU5fT0ZGKTsKPiA+ICsJZHJtX29iamVjdF9hdHRh Y2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKPiA+ICsJCQkJICAgY29ubmVjdG9yLT51bmRl cnNjYW5faGJvcmRlcl9wcm9wZXJ0eSwgMCk7Cj4gPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZjb25uZWN0b3ItPmJhc2UsCj4gPiArCQkJCSAgIGNvbm5lY3Rvci0+dW5kZXJzY2FuX3Zi b3JkZXJfcHJvcGVydHksIDApOwo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICsKPiA+ICtlcnJf ZnJlZV9oYm9yZGVyX3Byb3A6Cj4gPiArCWRybV9wcm9wZXJ0eV9kZXN0cm95KGRldiwgY29ubmVj dG9yLT51bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSk7Cj4gPiArCWNvbm5lY3Rvci0+dW5kZXJz Y2FuX2hib3JkZXJfcHJvcGVydHkgPSBOVUxMOwo+ID4gKwo+ID4gK2Vycl9mcmVlX21vZGVfcHJv cDoKPiA+ICsJZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBjb25uZWN0b3ItPnVuZGVyc2Nhbl9t b2RlX3Byb3BlcnR5KTsKPiA+ICsJY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSA9 IE5VTEw7Cj4gPiArCj4gPiArCXJldHVybiAtRU5PTUVNOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lN Qk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVyc2Nhbl9wcm9wZXJ0aWVzKTsKPiA+ICsKPiA+ ICAvKioKPiA+ICAgKiBkcm1fbW9kZV9jcmVhdGVfc2NhbGluZ19tb2RlX3Byb3BlcnR5IC0gY3Jl YXRlIHNjYWxpbmcgbW9kZSBwcm9wZXJ0eQo+ID4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1f Y29ubmVjdG9yLmgKPiA+IGluZGV4IDY3NWNjM2Y4Y2Y4NS4uNDYzODBlZTZkNGVlIDEwMDY0NAo+ ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmgKPiA+IEBAIC0zNzIsNiArMzcyLDUyIEBAIHN0cnVjdCBkcm1fdHZf Y29ubmVjdG9yX3N0YXRlIHsKPiA+ICAJdW5zaWduZWQgaW50IGh1ZTsKPiA+ICB9Owo+ID4gIAo+ ID4gKy8qKgo+ID4gKyAqIGVudW0gZHJtX3VuZGVyc2Nhbl9tb2RlIC0gVW5kZXJzY2FuIG1vZGUK PiA+ICsgKgo+ID4gKyAqIFRoaXMgZW51bSBpcyB1c2VkIHRvIHRyYWNrIHRoZSB1bmRlcnNjYW4g bW9kZS4KPiA+ICsgKgo+ID4gKyAqIEBEUk1fVU5ERVJTQ0FOX09GRjogTm8gdW5kZXJzY2FuIGFw cGxpZWQsIHRoZSBvdXRwdXQgaW1hZ2Ugd2lsbCBiZSB1bmNoYW5nZWQKPiA+ICsgKiBARFJNX1VO REVSU0NBTl9PTjogVW5kZXJzY2FuIGlzIGVuYWJsZWQsIGFuZCBob3Jpem9udGFsL3ZlcnRpY2Fs IGJvcmRlciBzaXplCj4gPiArICoJCSAgICAgIGFyZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgJnN0 cnVjdF9kcm1fdW5kZXJzY2FuLT5oYm9yZGVyCj4gPiArICoJCSAgICAgIGFuZCAmc3RydWN0X2Ry bV91bmRlcnNjYW4tPnZib3JkZXIgZmllbGRzLgo+ID4gKyAqIEBEUk1fVU5ERVJTQ0FOX0FVVE86 IFVuZGVyc2NhbiBpcyBlbmFibGVkIGFuZCAmc3RydWN0X2RybV91bmRlcnNjYW4tPmhib3JkZXIK PiA+ICsgKgkJCWFuZCAmc3RydWN0X2RybV91bmRlcnNjYW4tPnZib3JkZXIgYXJlIGd1ZXNzZWQg YnkgdGhlCj4gPiArICoJCQlkcml2ZXIuCj4gPiArICovCj4gPiArZW51bSBkcm1fdW5kZXJzY2Fu X21vZGUgewo+ID4gKwlEUk1fVU5ERVJTQ0FOX09GRiwKPiA+ICsJRFJNX1VOREVSU0NBTl9PTiwK PiA+ICsJRFJNX1VOREVSU0NBTl9BVVRPLAo+ID4gK307Cj4gPiArCj4gPiArLyoqCj4gPiArICog c3RydWN0IGRybV91bmRlcnNjYW4gLSBVbmRlcnNjYW4gcHJvcGVydGllcyBhdHRhY2hlZCB0byBh IGNvbm5lY3RvciBzdGF0ZQo+ID4gKyAqCj4gPiArICogVGhpcyBjYW4gYmUgdXNlZCB0byB0ZWxs IHRoZSBDUlRDIGhvdyB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHNjYWxlZC9wbGFjZWQgaW4KPiA+ICsg KiBvcmRlciB0byBjb3ZlciBmaXQgaW4gdGhlIGRpc3BsYXkgY29ubmVjdGVkIHRocm91Z2ggdGhp cyBjb25uZWN0b3IuIE1vc3Qgb2YKPiA+ICsgKiB0aGUgdGltZSB1c2VkIHRvIGFkZHJlc3Mgc2l0 dWF0aW9ucyB3aGVyZSB0aGUgZGlzcGxheSBib3JkZXJzIGFyZSBoaWRkZW4uCj4gPiArICogQ2Fu IGFsc28gYmUgdXNlZCB0byBjb21wZW5zYXRlIG92ZXJzY2FuIGRvbmUgb24gdGhlIGRpc3BsYXkg c2lkZS4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgZHJtX3VuZGVyc2NhbiB7Cj4gCj4gSSdkIGNhbGwg dGhpcyBkcm1fdW5kZXJzY2FuX3N0YXRlLCBzaW1pbGFyIHRvIGhvdyB3ZSBoYXZlCj4gZHJtX3R2 X2Nvbm5lY3Rvcl9zdGF0ZS4KPiAKPiA+ICsJLyoqCj4gPiArCSAqIEBtb2RlOiBVbmRlcnNjYW4g bW9kZS4KPiA+ICsJICovCj4gPiArCWVudW0gZHJtX3VuZGVyc2Nhbl9tb2RlIG1vZGU7Cj4gPiAr Cj4gPiArCS8qKgo+ID4gKwkgKiBAaGJvcmRlcjogSG9yaXpvbnRhbCBib3JkZXIuIFRoaXMgdmFs dWVzIGVuY29kZXMgYm90aCB0aGUgbGVmdCBhbmQKPiA+ICsJICogcmlnaHQgYm9yZGVyczogbGVm dF9ib3JkZXIgPSByaWdodF9ib3JkZXIgPSBoYm9yZGVyIC8gMi4KPiA+ICsJICovCj4gPiArCXVu c2lnbmVkIGludCBoYm9yZGVyOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQHZib3JkZXI6IFZl cnRpY2FsIGJvcmRlci4gVGhpcyB2YWx1ZXMgZW5jb2RlcyBib3RoIHRoZSB0b3AgYW5kCj4gPiAr CSAqIGJvdHRvbSBib3JkZXJzOiB0b3BfYm9yZGVyID0gYm90dG9tX2JvcmRlciA9IHZib3JkZXIg LyAyLgo+ID4gKwkgKi8KPiA+ICsJdW5zaWduZWQgaW50IHZib3JkZXI7Cj4gPiArfTsKPiA+ICsK PiA+ICAvKioKPiA+ICAgKiBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAtIG11dGFibGUgY29u bmVjdG9yIHN0YXRlCj4gPiAgICogQGNvbm5lY3RvcjogYmFja3BvaW50ZXIgdG8gdGhlIGNvbm5l Y3Rvcgo+ID4gQEAgLTQyOSw2ICs0NzUsMTIgQEAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg ewo+ID4gIAkgKiBwcm90ZWN0aW9uLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgdXNlZCBmb3IgSERD UC4KPiA+ICAJICovCj4gPiAgCXVuc2lnbmVkIGludCBjb250ZW50X3Byb3RlY3Rpb247Cj4gPiAr Cj4gPiArCS8qKgo+ID4gKwkgKiBAdW5kZXJzY2FuOiBVbmRlcnNjYW4gaW5mb3JtYXRpb24uIE1v c3QgY29tbW9ubHkgdXNlZCB0byBhZGp1c3QKPiA+ICsJICogaW1hZ2Ugd2hlbiB0aGUgZGlzcGxh eSBpcyBkb2luZyBvdmVyc2Nhbi4KPiA+ICsJICovCj4gPiArCXN0cnVjdCBkcm1fdW5kZXJzY2Fu IHVuZGVyc2NhbjsKPiA+ICB9Owo+ID4gIAo+ID4gIC8qKgo+ID4gQEAgLTg5Miw2ICs5NDQsMjkg QEAgc3RydWN0IGRybV9jb25uZWN0b3Igewo+ID4gIAkgKi8KPiA+ICAJc3RydWN0IGRybV9wcm9w ZXJ0eV9ibG9iICp0aWxlX2Jsb2JfcHRyOwo+ID4gIAo+ID4gKwkvKioKPiA+ICsJICogQHVuZGVy c2Nhbl9tb2RlX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgdW5kZXJzY2FuIG1vZGUuIFVz ZWQgYnkKPiA+ICsJICogdGhlIGRyaXZlciB0byBzY2FsZSB0aGUgb3V0cHV0IGltYWdlIGFuZCBj b21wZW5zYXRlIGFuIG92ZXJzY2FuIGRvbmUKPiA+ICsJICogb24gdGhlIGRpc3BsYXkgc2lkZS4K PiA+ICsJICovCj4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnVuZGVyc2Nhbl9tb2RlX3Byb3Bl cnR5Owo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQHVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5 OiBPcHRpb25hbCBjb25uZWN0b3IgdW5kZXJzY2FuIGhvcml6b250YWwKPiA+ICsJICogYm9yZGVy IChleHByZXNzZWQgaW4gcGl4ZWxzKS4gVXNlZCBieSB0aGUgZHJpdmVyIHRvIGFkanVzdCB0aGUK PiA+ICsJICogb3V0cHV0IGltYWdlIHBvc2l0aW9uIGFuZCBjb21wZW5zYXRlIGFuIG92ZXJzY2Fu IGRvbmUgb24gdGhlIGRpc3BsYXkKPiA+ICsJICogc2lkZS4KPiA+ICsJICovCj4gPiArCXN0cnVj dCBkcm1fcHJvcGVydHkgKnVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5Owo+ID4gKwo+ID4gKwkv KioKPiA+ICsJICogQHVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0 b3IgdW5kZXJzY2FuIHZlcnRpY2FsCj4gPiArCSAqIGJvcmRlciAoZXhwcmVzc2VkIGluIHBpeGVs cykuIFVzZWQgYnkgdGhlIGRyaXZlciB0byBhZGp1c3QgdGhlCj4gPiArCSAqIG91dHB1dCBpbWFn ZSBwb3NpdGlvbiBhbmQgY29tcGVuc2F0ZSBhbiBvdmVyc2NhbiBkb25lIG9uIHRoZSBkaXNwbGF5 Cj4gPiArCSAqIHNpZGUuCj4gPiArCSAqLwo+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp1bmRl cnNjYW5fdmJvcmRlcl9wcm9wZXJ0eTsKPiAKPiBTaW5jZSB5b3UgZG9uJ3QgYWxsb3cgZHJpdmVy cyB0byBoYXZlIGEgcGVyLWNvbm5lY3RvciB2YWx1ZSByYW5nZSBmb3IKPiB0aGVzZSBwcm9wZXJ0 aWVzIHRoZXNlIHNob3VsZCBiZSBpbiBkcm1fbW9kZV9jb25maWcgSSB0aGluay4KPiAKPiBZZXMg dGhlIGNvbnRlbnRfcHJvdGVjdGlvbl9wcm9wZXJ0eSBzaG91bGQgcHJvYmFibHkgaGF2ZSB0aGUg c2FtZQo+IHRyZWF0bWVudC4gTm90ZSB0aGF0IGRybV9wcm9wZXJ0eV9ibG9iIGRvZXMgbm90IGRl cml2ZSBmcm9tIGRybV9wcm9wZXJ0eSwKPiBzbyB0aGF0IG9uZSBpcyBvayB0byBiZSB0aGVyZS4g QW5kIHRoZSBzY2FsaW5nIHByb3BlcnR5IGlzIGdlbmVyYWxseQo+IHBlci1vdXRwdXQuCgpBaCBq dXN0IG5vdGljZWQgdGhhdCB0aGUgdW5kZXJzY2FuX21vZGVfcHJvcGVydHkgaXMgcG90ZW50aWFs bHkKcGVyLWNvbm5lY3Rvci4gSSBndWVzcyB3ZSBjYW4ga2VlcCB0aGVtIGhlcmUgdGhlbi4KLURh bmllbAoKPiAtRGFuaWVsCj4gCj4gPiArCj4gPiAgLyogc2hvdWxkIHdlIHBvbGwgdGhpcyBjb25u ZWN0b3IgZm9yIGNvbm5lY3RzIGFuZCBkaXNjb25uZWN0cyAqLwo+ID4gIC8qIGhvdCBwbHVnIGRl dGVjdGFibGUgKi8KPiA+ICAjZGVmaW5lIERSTV9DT05ORUNUT1JfUE9MTF9IUEQgKDEgPDwgMCkK PiA+IEBAIC0xMDg4LDYgKzExNjMsOSBAQCBpbnQgZHJtX21vZGVfY3JlYXRlX2R2aV9pX3Byb3Bl cnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiAgaW50IGRybV9tb2RlX2NyZWF0ZV90 dl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQkJCSAgdW5zaWduZWQg aW50IG51bV9tb2RlcywKPiA+ICAJCQkJICBjb25zdCBjaGFyICogY29uc3QgbW9kZXNbXSk7Cj4g PiAraW50IGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVyc2Nhbl9wcm9wZXJ0aWVzKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiArCQkJCQkgICAgICB1MzIgbW9kZV9tYXNrLCB1 NjQgbWF4X2hib3JkZXIsCj4gPiArCQkJCQkgICAgICB1NjQgbWF4X3Zib3JkZXIpOwo+ID4gIGlu dCBkcm1fbW9kZV9jcmVhdGVfc2NhbGluZ19tb2RlX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4gIGludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9zY2FsaW5nX21vZGVfcHJvcGVy dHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAJCQkJCSAgICAgICB1MzIg c2NhbGluZ19tb2RlX21hc2spOwo+ID4gLS0gCj4gPiAyLjE0LjEKPiA+IAo+IAo+IC0tIAo+IERh bmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRw Oi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeAo=