From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: [PATCH 1/3] drm/connector: Add generic underscan properties Date: Mon, 7 May 2018 16:44:32 +0200 Message-ID: <20180507144434.20466-2-boris.brezillon@bootlin.com> References: <20180507144434.20466-1-boris.brezillon@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180507144434.20466-1-boris.brezillon-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Eric Anholt Cc: "David (ChunMing) Zhou" , David Airlie , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Boris Brezillon , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ben Skeggs List-Id: dri-devel@lists.freedesktop.org V2UgaGF2ZSAzIGRyaXZlcnMgZGVmaW5pbmcgdGhlICJ1bmRlcnNjYW4iLCAidW5kZXJzY2FuIGhi b3JkZXIiIGFuZAoidW5kZXJzY2FuIHZib3JkZXIiIHByb3BlcnRpZXMgKHJhZGVvbiwgYW1kIGFu ZCBub3V2ZWF1KSBhbmQgd2UgYXJlCmFib3V0IHRvIGFkZCB0aGUgc2FtZSBraW5kIG9mIHRoaW5n IGluIFZDNC4KCkRlZmluZSBnZW5lcmljIHVuZGVyc2NhbiBwcm9wcyBhbmQgYWRkIG5ldyBmaWVs ZHMgdG8gdGhlIGRybV9jb25uZWN0b3IKc3RhdGUgc28gdGhhdCB0aGUgcHJvcGVydHkgcGFyc2lu ZyBsb2dpYyBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBEUk0KZHJpdmVycy4KCkEgZHJpdmVyIGNhbiBu b3cgYXR0YWNoIHVuZGVyc2NhbiBwcm9wZXJ0aWVzIHRvIGl0cyBjb25uZWN0b3IgdGhyb3VnaAp0 aGUgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoKSBoZWxwZXIsIGFu ZCBjYW4KY2hlY2svYXBwbHkgdGhlIHVuZGVyc2NhbiBzZXR1cCBiYXNlZCBvbiB0aGUKZHJtX2Nv bm5lY3Rvcl9zdGF0ZS0+dW5kZXJzY2FuIGZpZWxkcy4KClNpZ25lZC1vZmYtYnk6IEJvcmlzIEJy ZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljLmMgICAgfCAgMTIgKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYyB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmggICAgIHwgIDc4ICsrKysrKysrKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMK aW5kZXggZGM4NTBiNGI2ZTIxLi5iNzMxMmJkMTcyYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwpAQCAt MTI3OCw2ICsxMjc4LDEyIEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3By b3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQlyZXR1cm4gLUVJTlZB TDsKIAkJfQogCQlzdGF0ZS0+Y29udGVudF9wcm90ZWN0aW9uID0gdmFsOworCX0gZWxzZSBpZiAo cHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSkgeworCQlzdGF0 ZS0+dW5kZXJzY2FuLm1vZGUgPSB2YWw7CisJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0 b3ItPnVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5KSB7CisJCXN0YXRlLT51bmRlcnNjYW4uaGJv cmRlciA9IHZhbDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+dW5kZXJzY2Fu X3Zib3JkZXJfcHJvcGVydHkpIHsKKwkJc3RhdGUtPnVuZGVyc2Nhbi52Ym9yZGVyID0gdmFsOwog CX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eSkgewogCQly ZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eShjb25uZWN0b3IsCiAJ CQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwpAQCAtMTM1OSw2ICsxMzY1LDEyIEBAIGRybV9hdG9t aWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAogCQkqdmFsID0gc3RhdGUtPnNjYWxpbmdfbW9kZTsKIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09 IGNvbm5lY3Rvci0+Y29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KSB7CiAJCSp2YWwgPSBzdGF0 ZS0+Y29udGVudF9wcm90ZWN0aW9uOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9y LT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSkgeworCQkqdmFsID0gc3RhdGUtPnVuZGVyc2Nhbi5t b2RlOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5faGJvcmRl cl9wcm9wZXJ0eSkgeworCQkqdmFsID0gc3RhdGUtPnVuZGVyc2Nhbi5oYm9yZGVyOworCX0gZWxz ZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSkg eworCQkqdmFsID0gc3RhdGUtPnVuZGVyc2Nhbi52Ym9yZGVyOwogCX0gZWxzZSBpZiAoY29ubmVj dG9yLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewogCQlyZXR1cm4gY29ubmVjdG9yLT5m dW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsCiAJCQkJc3RhdGUsIHByb3BlcnR5 LCB2YWwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKaW5kZXggZGZjOGNhMWU5NDEzLi45OTM3Mzkw YjhhMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwpAQCAtOTE0LDYgKzkxNCwzMSBAQCBEUk1f RU5VTV9OQU1FX0ZOKGRybV9nZXRfY29udGVudF9wcm90ZWN0aW9uX25hbWUsIGRybV9jcF9lbnVt X2xpc3QpCiAgKgljYW4gYWxzbyBleHBvc2UgdGhpcyBwcm9wZXJ0eSB0byBleHRlcm5hbCBvdXRw dXRzLCBpbiB3aGljaCBjYXNlIHRoZXkKICAqCW11c3Qgc3VwcG9ydCAiTm9uZSIsIHdoaWNoIHNo b3VsZCBiZSB0aGUgZGVmYXVsdCAoc2luY2UgZXh0ZXJuYWwgc2NyZWVucwogICoJaGF2ZSBhIGJ1 aWx0LWluIHNjYWxlcikuCisgKgorICogdW5kZXJzY2FuOgorICoJVGhpcyBwcm9wZXJ0aWVzIGRl ZmluZXMgd2hldGhlciB1bmRlcnNjYW4gaXMgYWN0aXZhdGVkIG9yIG5vdCwgYW5kIHdoZW4KKyAq CWl0IGlzIGFjdGl2YXRlZCwgaG93IHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBib3JkZXJz IGFyZSBjYWxjdWxhdGVkOgorICoKKyAqCW9mZjoKKyAqCQlVbmRlcnNjYW4gaXMgZGlzYWJsZWQu IFRoZSBvdXRwdXQgaW1hZ2Ugc2hvdWxkbid0IGJlIHNjYWxlZCB0bworICoJCXRha2Ugc2NyZWVu IGJvcmRlcnMgaW50byBhY2NvdW50LgorICoJb246CisgKgkJVW5kZXJzY2FuIGlzIGFjdGl2YXRl ZCBhbmQgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYm9yZGVycyBhcmUKKyAqCQlzcGVjaWZpZWQg dGhyb3VnaCB0aGUgInVuZGVyc2NhbiBoYm9yZGVyIiBhbmQKKyAqCQkidW5kZXJzY2FuIHZib3Jk ZXIiIHByb3BlcnRpZXMuCisgKglhdXRvOgorICoJCVVuZGVyc2NhbiBpcyBhY3RpdmF0ZWQgYW5k IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGJvcmRlcnMgYXJlCisgKgkJYXV0b21hdGljYWxseSBj aG9zZW4gYnkgdGhlIGRyaXZlci4KKyAqCisgKiB1bmRlcnNjYW4gaGJvcmRlcjoKKyAqCUhvcml6 b250YWwgYm9yZGVyIGV4cHJlc3NlZCBpbiBwaXhlbHMuIFRoZSBib3JkZXIgaXMgc3ltbWV0cmlj LCB3aGljaAorICoJbWVhbnMgeW91J2xsIGhhdmUgaGFsZiBvZiB0aGlzIHZhbHVlIHBsYWNlZCBv biB0aGUgbGVmdCBhbmQgdGhlIG90aGVyCisgKgloYWxmIG9uIHRoZSByaWdodC4KKyAqCisgKiB1 bmRlcnNjYW4gdmJvcmRlcjoKKyAqCVZlcnRpY2FsIGJvcmRlciBleHByZXNzZWQgaW4gcGl4ZWxz LiBUaGUgYm9yZGVyIGlzIHN5bW1ldHJpYywgd2hpY2gKKyAqCW1lYW5zIHlvdSdsbCBoYXZlIGhh bGYgb2YgdGhpcyB2YWx1ZSBwbGFjZWQgb24gdGhlIHRvcCBhbmQgdGhlIG90aGVyCisgKgloYWxm IG9uIHRoZSBib3R0b20uCiAgKi8KIAogaW50IGRybV9jb25uZWN0b3JfY3JlYXRlX3N0YW5kYXJk X3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKQEAgLTExMDgsNiArMTEzMywxMDEg QEAgaW50IGRybV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVzKTsKIAor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgZHJtX3VuZGVyc2Nhbl9tb2Rl X2VudW1fbGlzdFtdID0geworCXsgRFJNX1VOREVSU0NBTl9PRkYsICJvZmYiIH0sCisJeyBEUk1f VU5ERVJTQ0FOX09OLCAib24iIH0sCisJeyBEUk1fVU5ERVJTQ0FOX0FVVE8sICJhdXRvIiB9LAor fTsKKworLyoqCisgKiBkcm1fY29ubmVjdG9yX2F0dGFjaF91bmRlcnNjYW5fcHJvcGVydGllcyAt IGF0dGFjaCBhdG9taWMgdW5kZXJzY2FuCisgKgkJCQkJICAgICAgIHByb3BlcnRpZXMKKyAqIEBj b25uZWN0b3I6IGNvbm5lY3RvciB0byBhdHRhY2ggdW5kZXJzY2FuIG1vZGUgcHJvcGVydGllcyBv bi4KKyAqIEBtb2RlX21hc2s6IGJpdG1hc2sgb2YgJURSTV9VTkRFUlNDQU5fWFggbW9kZXMgZW5j b2RpbmcgdGhlIHN1cHBvcnRlZAorICoJICAgICAgIHVuZGVyc2NhbiBtb2Rlcy4KKyAqIEBtYXhf aGJvcmRlcjogbWF4aW11bSBzaXplIG9mIHRoZSBob3Jpem9udGFsIGJvcmRlciBleHByZXNzZWQg aW4gcGl4ZWxzLgorICoJCSBTaG91bGQgYmUgPiAwLgorICogQG1heF92Ym9yZGVyOiBtYXhpbXVt IHNpemUgb2YgdGhlIHZlcnRpY2FsIGJvcmRlciBleHByZXNzZWQgaW4gcGl4ZWxzLgorICoJCSBT aG91bGQgYmUgPiAwLgorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBhZGQgc3VwcG9ydCBmb3IgdW5k ZXJzY2FuIHRvIGF0b21pYyBkcml2ZXJzLgorICogVGhlIHVuZGVyc2NhbiBjb25maWcgd2lsbCBi ZSBzZXQgdG8gJmRybV9jb25uZWN0b3Jfc3RhdGUudW5kZXJzY2FuCisgKiBhbmQgY2FuIGJlIHVz ZWQgZnJvbSAmZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MtPmF0b21pY19jaGVjayBmb3IKKyAq IHZhbGlkYXRpb24uCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRp dmUgZXJybm8gb24gZmFpbHVyZS4KKyAqLworaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX3VuZGVy c2Nhbl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCSAg ICAgIHUzMiBtb2RlX21hc2ssIHU2NCBtYXhfaGJvcmRlciwKKwkJCQkJICAgICAgdTY0IG1heF92 Ym9yZGVyKQoreworCXVuc2lnbmVkIGludCBpLCBubW9kZXMgPSBBUlJBWV9TSVpFKGRybV91bmRl cnNjYW5fbW9kZV9lbnVtX2xpc3QpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0 b3ItPmRldjsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOworCisJaWYgKCFtYXhfaGJvcmRl ciB8fCAhbWF4X3Zib3JkZXIpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFod2VpZ2h0MzIo bW9kZV9tYXNrKSB8fCAobW9kZV9tYXNrICYgfkdFTk1BU0sobm1vZGVzIC0gMSwgMCkpKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRldiwgRFJNX01P REVfUFJPUF9FTlVNLCAidW5kZXJzY2FuIiwKKwkJCQkgICBod2VpZ2h0MzIobW9kZV9tYXNrKSk7 CisJaWYgKCFwcm9wKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGRybV91bmRlcnNjYW5fbW9kZV9lbnVtX2xpc3QpOyBpKyspIHsKKwkJY29uc3Qgc3Ry dWN0IGRybV9wcm9wX2VudW1fbGlzdCAqZW50cnk7CisJCWludCByZXQ7CisKKwkJaWYgKCEoQklU KGkpICYgbW9kZV9tYXNrKSkKKwkJCWNvbnRpbnVlOworCisJCWVudHJ5ID0gJmRybV91bmRlcnNj YW5fbW9kZV9lbnVtX2xpc3RbaV07CisJCXJldCA9IGRybV9wcm9wZXJ0eV9hZGRfZW51bShwcm9w LCBlbnRyeS0+dHlwZSwgZW50cnktPm5hbWUpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfZnJl ZV9tb2RlX3Byb3A7CisJfQorCisJY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSA9 IHByb3A7CisKKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIDAsICJ1bmRl cnNjYW4gaGJvcmRlciIsIDAsCisJCQkJCSBtYXhfaGJvcmRlcik7CisJaWYgKCFwcm9wKQorCQln b3RvIGVycl9mcmVlX21vZGVfcHJvcDsKKworCWNvbm5lY3Rvci0+dW5kZXJzY2FuX2hib3JkZXJf cHJvcGVydHkgPSBwcm9wOworCisJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2 LCAwLCAidW5kZXJzY2FuIHZib3JkZXIiLCAwLAorCQkJCQkgbWF4X3Zib3JkZXIpOworCWlmICgh cHJvcCkKKwkJZ290byBlcnJfZnJlZV9oYm9yZGVyX3Byb3A7CisKKwljb25uZWN0b3ItPnVuZGVy c2Nhbl92Ym9yZGVyX3Byb3BlcnR5ID0gcHJvcDsKKworCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZjb25uZWN0b3ItPmJhc2UsCisJCQkJICAgY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9w cm9wZXJ0eSwKKwkJCQkgICBEUk1fVU5ERVJTQ0FOX09GRik7CisJZHJtX29iamVjdF9hdHRhY2hf cHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkgICBjb25uZWN0b3ItPnVuZGVyc2Nhbl9o Ym9yZGVyX3Byb3BlcnR5LCAwKTsKKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVj dG9yLT5iYXNlLAorCQkJCSAgIGNvbm5lY3Rvci0+dW5kZXJzY2FuX3Zib3JkZXJfcHJvcGVydHks IDApOworCisJcmV0dXJuIDA7CisKK2Vycl9mcmVlX2hib3JkZXJfcHJvcDoKKwlkcm1fcHJvcGVy dHlfZGVzdHJveShkZXYsIGNvbm5lY3Rvci0+dW5kZXJzY2FuX2hib3JkZXJfcHJvcGVydHkpOwor CWNvbm5lY3Rvci0+dW5kZXJzY2FuX2hib3JkZXJfcHJvcGVydHkgPSBOVUxMOworCitlcnJfZnJl ZV9tb2RlX3Byb3A6CisJZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBjb25uZWN0b3ItPnVuZGVy c2Nhbl9tb2RlX3Byb3BlcnR5KTsKKwljb25uZWN0b3ItPnVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5 ID0gTlVMTDsKKworCXJldHVybiAtRU5PTUVNOworfQorRVhQT1JUX1NZTUJPTChkcm1fY29ubmVj dG9yX2F0dGFjaF91bmRlcnNjYW5fcHJvcGVydGllcyk7CisKIC8qKgogICogZHJtX21vZGVfY3Jl YXRlX3NjYWxpbmdfbW9kZV9wcm9wZXJ0eSAtIGNyZWF0ZSBzY2FsaW5nIG1vZGUgcHJvcGVydHkK ICAqIEBkZXY6IERSTSBkZXZpY2UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAppbmRleCA2NzVjYzNmOGNmODUuLjQ2 MzgwZWU2ZDRlZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCisrKyBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaApAQCAtMzcyLDYgKzM3Miw1MiBAQCBzdHJ1Y3Qg ZHJtX3R2X2Nvbm5lY3Rvcl9zdGF0ZSB7CiAJdW5zaWduZWQgaW50IGh1ZTsKIH07CiAKKy8qKgor ICogZW51bSBkcm1fdW5kZXJzY2FuX21vZGUgLSBVbmRlcnNjYW4gbW9kZQorICoKKyAqIFRoaXMg ZW51bSBpcyB1c2VkIHRvIHRyYWNrIHRoZSB1bmRlcnNjYW4gbW9kZS4KKyAqCisgKiBARFJNX1VO REVSU0NBTl9PRkY6IE5vIHVuZGVyc2NhbiBhcHBsaWVkLCB0aGUgb3V0cHV0IGltYWdlIHdpbGwg YmUgdW5jaGFuZ2VkCisgKiBARFJNX1VOREVSU0NBTl9PTjogVW5kZXJzY2FuIGlzIGVuYWJsZWQs IGFuZCBob3Jpem9udGFsL3ZlcnRpY2FsIGJvcmRlciBzaXplCisgKgkJICAgICAgYXJlIHNwZWNp ZmllZCB0aHJvdWdoIHRoZSAmc3RydWN0X2RybV91bmRlcnNjYW4tPmhib3JkZXIKKyAqCQkgICAg ICBhbmQgJnN0cnVjdF9kcm1fdW5kZXJzY2FuLT52Ym9yZGVyIGZpZWxkcy4KKyAqIEBEUk1fVU5E RVJTQ0FOX0FVVE86IFVuZGVyc2NhbiBpcyBlbmFibGVkIGFuZCAmc3RydWN0X2RybV91bmRlcnNj YW4tPmhib3JkZXIKKyAqCQkJYW5kICZzdHJ1Y3RfZHJtX3VuZGVyc2Nhbi0+dmJvcmRlciBhcmUg Z3Vlc3NlZCBieSB0aGUKKyAqCQkJZHJpdmVyLgorICovCitlbnVtIGRybV91bmRlcnNjYW5fbW9k ZSB7CisJRFJNX1VOREVSU0NBTl9PRkYsCisJRFJNX1VOREVSU0NBTl9PTiwKKwlEUk1fVU5ERVJT Q0FOX0FVVE8sCit9OworCisvKioKKyAqIHN0cnVjdCBkcm1fdW5kZXJzY2FuIC0gVW5kZXJzY2Fu IHByb3BlcnRpZXMgYXR0YWNoZWQgdG8gYSBjb25uZWN0b3Igc3RhdGUKKyAqCisgKiBUaGlzIGNh biBiZSB1c2VkIHRvIHRlbGwgdGhlIENSVEMgaG93IHRoZSBpbWFnZSBzaG91bGQgYmUgc2NhbGVk L3BsYWNlZCBpbgorICogb3JkZXIgdG8gY292ZXIgZml0IGluIHRoZSBkaXNwbGF5IGNvbm5lY3Rl ZCB0aHJvdWdoIHRoaXMgY29ubmVjdG9yLiBNb3N0IG9mCisgKiB0aGUgdGltZSB1c2VkIHRvIGFk ZHJlc3Mgc2l0dWF0aW9ucyB3aGVyZSB0aGUgZGlzcGxheSBib3JkZXJzIGFyZSBoaWRkZW4uCisg KiBDYW4gYWxzbyBiZSB1c2VkIHRvIGNvbXBlbnNhdGUgb3ZlcnNjYW4gZG9uZSBvbiB0aGUgZGlz cGxheSBzaWRlLgorICovCitzdHJ1Y3QgZHJtX3VuZGVyc2NhbiB7CisJLyoqCisJICogQG1vZGU6 IFVuZGVyc2NhbiBtb2RlLgorCSAqLworCWVudW0gZHJtX3VuZGVyc2Nhbl9tb2RlIG1vZGU7CisK KwkvKioKKwkgKiBAaGJvcmRlcjogSG9yaXpvbnRhbCBib3JkZXIuIFRoaXMgdmFsdWVzIGVuY29k ZXMgYm90aCB0aGUgbGVmdCBhbmQKKwkgKiByaWdodCBib3JkZXJzOiBsZWZ0X2JvcmRlciA9IHJp Z2h0X2JvcmRlciA9IGhib3JkZXIgLyAyLgorCSAqLworCXVuc2lnbmVkIGludCBoYm9yZGVyOwor CisJLyoqCisJICogQHZib3JkZXI6IFZlcnRpY2FsIGJvcmRlci4gVGhpcyB2YWx1ZXMgZW5jb2Rl cyBib3RoIHRoZSB0b3AgYW5kCisJICogYm90dG9tIGJvcmRlcnM6IHRvcF9ib3JkZXIgPSBib3R0 b21fYm9yZGVyID0gdmJvcmRlciAvIDIuCisJICovCisJdW5zaWduZWQgaW50IHZib3JkZXI7Cit9 OworCiAvKioKICAqIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIC0gbXV0YWJsZSBjb25uZWN0 b3Igc3RhdGUKICAqIEBjb25uZWN0b3I6IGJhY2twb2ludGVyIHRvIHRoZSBjb25uZWN0b3IKQEAg LTQyOSw2ICs0NzUsMTIgQEAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewogCSAqIHByb3Rl Y3Rpb24uIFRoaXMgaXMgbW9zdCBjb21tb25seSB1c2VkIGZvciBIRENQLgogCSAqLwogCXVuc2ln bmVkIGludCBjb250ZW50X3Byb3RlY3Rpb247CisKKwkvKioKKwkgKiBAdW5kZXJzY2FuOiBVbmRl cnNjYW4gaW5mb3JtYXRpb24uIE1vc3QgY29tbW9ubHkgdXNlZCB0byBhZGp1c3QKKwkgKiBpbWFn ZSB3aGVuIHRoZSBkaXNwbGF5IGlzIGRvaW5nIG92ZXJzY2FuLgorCSAqLworCXN0cnVjdCBkcm1f dW5kZXJzY2FuIHVuZGVyc2NhbjsKIH07CiAKIC8qKgpAQCAtODkyLDYgKzk0NCwyOSBAQCBzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciB7CiAJICovCiAJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp0aWxl X2Jsb2JfcHRyOwogCisJLyoqCisJICogQHVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5OiBPcHRpb25h bCBjb25uZWN0b3IgdW5kZXJzY2FuIG1vZGUuIFVzZWQgYnkKKwkgKiB0aGUgZHJpdmVyIHRvIHNj YWxlIHRoZSBvdXRwdXQgaW1hZ2UgYW5kIGNvbXBlbnNhdGUgYW4gb3ZlcnNjYW4gZG9uZQorCSAq IG9uIHRoZSBkaXNwbGF5IHNpZGUuCisJICovCisJc3RydWN0IGRybV9wcm9wZXJ0eSAqdW5kZXJz Y2FuX21vZGVfcHJvcGVydHk7CisKKwkvKioKKwkgKiBAdW5kZXJzY2FuX2hib3JkZXJfcHJvcGVy dHk6IE9wdGlvbmFsIGNvbm5lY3RvciB1bmRlcnNjYW4gaG9yaXpvbnRhbAorCSAqIGJvcmRlciAo ZXhwcmVzc2VkIGluIHBpeGVscykuIFVzZWQgYnkgdGhlIGRyaXZlciB0byBhZGp1c3QgdGhlCisJ ICogb3V0cHV0IGltYWdlIHBvc2l0aW9uIGFuZCBjb21wZW5zYXRlIGFuIG92ZXJzY2FuIGRvbmUg b24gdGhlIGRpc3BsYXkKKwkgKiBzaWRlLgorCSAqLworCXN0cnVjdCBkcm1fcHJvcGVydHkgKnVu ZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5OworCisJLyoqCisJICogQHVuZGVyc2Nhbl9oYm9yZGVy X3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgdW5kZXJzY2FuIHZlcnRpY2FsCisJICogYm9y ZGVyIChleHByZXNzZWQgaW4gcGl4ZWxzKS4gVXNlZCBieSB0aGUgZHJpdmVyIHRvIGFkanVzdCB0 aGUKKwkgKiBvdXRwdXQgaW1hZ2UgcG9zaXRpb24gYW5kIGNvbXBlbnNhdGUgYW4gb3ZlcnNjYW4g ZG9uZSBvbiB0aGUgZGlzcGxheQorCSAqIHNpZGUuCisJICovCisJc3RydWN0IGRybV9wcm9wZXJ0 eSAqdW5kZXJzY2FuX3Zib3JkZXJfcHJvcGVydHk7CisKIC8qIHNob3VsZCB3ZSBwb2xsIHRoaXMg Y29ubmVjdG9yIGZvciBjb25uZWN0cyBhbmQgZGlzY29ubmVjdHMgKi8KIC8qIGhvdCBwbHVnIGRl dGVjdGFibGUgKi8KICNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9QT0xMX0hQRCAoMSA8PCAwKQpAQCAt MTA4OCw2ICsxMTYzLDkgQEAgaW50IGRybV9tb2RlX2NyZWF0ZV9kdmlfaV9wcm9wZXJ0aWVzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGRybV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICB1bnNpZ25lZCBpbnQgbnVtX21vZGVzLAog CQkJCSAgY29uc3QgY2hhciAqIGNvbnN0IG1vZGVzW10pOworaW50IGRybV9jb25uZWN0b3JfYXR0 YWNoX3VuZGVyc2Nhbl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkJCSAgICAgIHUzMiBtb2RlX21hc2ssIHU2NCBtYXhfaGJvcmRlciwKKwkJCQkJICAgICAg dTY0IG1heF92Ym9yZGVyKTsKIGludCBkcm1fbW9kZV9jcmVhdGVfc2NhbGluZ19tb2RlX3Byb3Bl cnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX3Nj YWxpbmdfbW9kZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJ CQkgICAgICAgdTMyIHNjYWxpbmdfbW9kZV9tYXNrKTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QK Tm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==