From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: [PATCH v3 1/3] drm/connector: Add generic underscan properties Date: Thu, 22 Nov 2018 12:23:29 +0100 Message-ID: <20181122112331.17735-2-boris.brezillon@bootlin.com> References: <20181122112331.17735-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: <20181122112331.17735-1-boris.brezillon@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Boris Brezillon , Ben Skeggs , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: amd-gfx.lists.freedesktop.org V2UgaGF2ZSAzIGRyaXZlcnMgZGVmaW5pbmcgdGhlICJ1bmRlcnNjYW4iLCAidW5kZXJzY2FuIGhi b3JkZXIiIGFuZAoidW5kZXJzY2FuIHZib3JkZXIiIHByb3BlcnRpZXMgKHJhZGVvbiwgYW1kIGFu ZCBub3V2ZWF1KSBhbmQgd2UgYXJlCmFib3V0IHRvIGFkZCB0aGUgc2FtZSBraW5kIG9mIHRoaW5n IGluIFZDNC4KCkRlZmluZSBnZW5lcmljIHVuZGVyc2NhbiBwcm9wcyBhbmQgYWRkIG5ldyBmaWVs ZHMgdG8gdGhlIGRybV9jb25uZWN0b3IKc3RhdGUgc28gdGhhdCB0aGUgcHJvcGVydHkgcGFyc2lu ZyBsb2dpYyBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBEUk0KZHJpdmVycy4KCkEgZHJpdmVyIGNhbiBu b3cgYXR0YWNoIHVuZGVyc2NhbiBwcm9wZXJ0aWVzIHRvIGl0cyBjb25uZWN0b3IgdGhyb3VnaAp0 aGUgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoKSBoZWxwZXIsIGFu ZCBjYW4KY2hlY2svYXBwbHkgdGhlIHVuZGVyc2NhbiBzZXR1cCBiYXNlZCBvbiB0aGUKZHJtX2Nv bm5lY3Rvcl9zdGF0ZS0+dW5kZXJzY2FuIGZpZWxkcy4KClNpZ25lZC1vZmYtYnk6IEJvcmlzIEJy ZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPgotLS0KQ2hhbmdlcyBpbiB2MzoK LSBOb25lCgpDaGFuZ2VzIGluIHYyOgotIEFkZCBhIG5ldyBzZWN0aW9uIGluIHRoZSBjb25uZWN0 b3IgcHJvcHMgZG9jIHRvIGRlc2NyaWJlIHVuZGVyc2NhbgogIHByb3BzCi0gRml4IGRlc2NyaXB0 aW9uIG9mIGF1dG8gbW9kZSAoYXV0byBtZWFucyBhcHBseSB1bmRlcnNjYW4gZm9yIEhETUkKICBt b25pdG9ycyBvbmx5KQotIEZpeCBkZXNjcmlwdGlvbiBvZiB2Ym9yZGVyL2hib3JkZXI6CiAgICBy aWdodF9ib3JkZXIgPSBsZWZ0X2JvcmRlciA9IGhib3JkZXIKICAgIHRvcF9ib3JkZXIgPSBib3R0 b21fYm9yZGVyID0gdmJvcmRlcgogIG5vdAogICAgcmlnaHRfYm9yZGVyID0gbGVmdF9ib3JkZXIg PSBoYm9yZGVyIC8gMgogICAgdG9wX2JvcmRlciA9IGJvdHRvbV9ib3JkZXIgPSB2Ym9yZGVyIC8g MgotIFJlbmFtZSBkcm1fdW5kZXJzY2FuIGludG8gZHJtX3VuZGVyc2Nhbl9zdGF0ZQotLS0KIGRy aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyB8ICAxMiArKysKIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fY29ubmVjdG9yLmMgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICB8ICA4MCArKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWNfdWFwaS5jCmluZGV4IGQ1YjdmMzE1MDk4Yy4uMzlkYjZlMzFjNTY1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfdWFwaS5jCkBAIC03NDAsNiArNzQwLDEyIEBAIHN0YXRpYyBpbnQgZHJtX2F0b21p Y19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CiAKIAkJcmV0dXJuIHNldF9vdXRfZmVuY2VfZm9yX2Nvbm5lY3RvcihzdGF0ZS0+c3RhdGUsIGNv bm5lY3RvciwKIAkJCQkJCSAgIGZlbmNlX3B0cik7CisJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBj b25uZWN0b3ItPnVuZGVyc2Nhbl9tb2RlX3Byb3BlcnR5KSB7CisJCXN0YXRlLT51bmRlcnNjYW4u bW9kZSA9IHZhbDsKKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+dW5kZXJzY2Fu X2hib3JkZXJfcHJvcGVydHkpIHsKKwkJc3RhdGUtPnVuZGVyc2Nhbi5oYm9yZGVyID0gdmFsOwor CX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9w ZXJ0eSkgeworCQlzdGF0ZS0+dW5kZXJzY2FuLnZib3JkZXIgPSB2YWw7CiAJfSBlbHNlIGlmIChj b25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7CiAJCXJldHVybiBjb25uZWN0 b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KGNvbm5lY3RvciwKIAkJCQlzdGF0ZSwgcHJv cGVydHksIHZhbCk7CkBAIC03OTksNiArODA1LDEyIEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dl dF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkqdmFsID0gc3Rh dGUtPnNjYWxpbmdfbW9kZTsKIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+Y29u dGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KSB7CiAJCSp2YWwgPSBzdGF0ZS0+Y29udGVudF9wcm90 ZWN0aW9uOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5fbW9k ZV9wcm9wZXJ0eSkgeworCQkqdmFsID0gc3RhdGUtPnVuZGVyc2Nhbi5tb2RlOworCX0gZWxzZSBp ZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT51bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSkgewor CQkqdmFsID0gc3RhdGUtPnVuZGVyc2Nhbi5oYm9yZGVyOworCX0gZWxzZSBpZiAocHJvcGVydHkg PT0gY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSkgeworCQkqdmFsID0gc3Rh dGUtPnVuZGVyc2Nhbi52Ym9yZGVyOwogCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT53 cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkpIHsKIAkJLyogV3JpdGViYWNrIGZyYW1lYnVmZmVyIGlz IG9uZS1zaG90LCB3cml0ZSBhbmQgZm9yZ2V0ICovCiAJCSp2YWwgPSAwOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29u bmVjdG9yLmMKaW5kZXggYzU1NWUxN2FiOGQ3Li4xNzAzMTcyNDhkYTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9j b25uZWN0b3IuYwpAQCAtOTcxLDYgKzk3MSwzOCBAQCBEUk1fRU5VTV9OQU1FX0ZOKGRybV9nZXRf Y29udGVudF9wcm90ZWN0aW9uX25hbWUsIGRybV9jcF9lbnVtX2xpc3QpCiAgKgljYW4gYWxzbyBl eHBvc2UgdGhpcyBwcm9wZXJ0eSB0byBleHRlcm5hbCBvdXRwdXRzLCBpbiB3aGljaCBjYXNlIHRo ZXkKICAqCW11c3Qgc3VwcG9ydCAiTm9uZSIsIHdoaWNoIHNob3VsZCBiZSB0aGUgZGVmYXVsdCAo c2luY2UgZXh0ZXJuYWwgc2NyZWVucwogICoJaGF2ZSBhIGJ1aWx0LWluIHNjYWxlcikuCisgKgor ICogQ29ubmVjdG9ycyBmb3Igbm9uLWFuYWxvZyBvdXRwdXRzIG1heSBhbHNvIGhhdmUgc3RhbmRh cmRpemVkIHVuZGVyc2NhbgorICogcHJvcGVydGllcyAoZHJpdmVycyBjYW4gc2V0IHRoaXMgdXAg YnkgY2FsbGluZworICogZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3By b3BlcnR5KCkgb24gaW5pdGlhbGl6YXRpb24pOgorICoKKyAqIHVuZGVyc2NhbjoKKyAqCVRoaXMg cHJvcGVydGllcyBkZWZpbmVzIHdoZXRoZXIgdW5kZXJzY2FuIGlzIGFjdGl2YXRlZCBvciBub3Qs IGFuZCB3aGVuCisgKglpdCBpcyBhY3RpdmF0ZWQsIGhvdyB0aGUgaG9yaXpvbnRhbCBhbmQgdmVy dGljYWwgYm9yZGVycyBhcmUgY2FsY3VsYXRlZDoKKyAqCisgKglvZmY6CisgKgkJVW5kZXJzY2Fu IGlzIGRpc2FibGVkLiBUaGUgb3V0cHV0IGltYWdlIHNob3VsZG4ndCBiZSBzY2FsZWQgdG8KKyAq CQl0YWtlIHNjcmVlbiBib3JkZXJzIGludG8gYWNjb3VudC4KKyAqCW9uOgorICoJCVVuZGVyc2Nh biBpcyBhY3RpdmF0ZWQgYW5kIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGJvcmRlcnMgYXJlCisg KgkJc3BlY2lmaWVkIHRocm91Z2ggdGhlICJ1bmRlcnNjYW4gaGJvcmRlciIgYW5kCisgKgkJInVu ZGVyc2NhbiB2Ym9yZGVyIiBwcm9wZXJ0aWVzLgorICoJYXV0bzoKKyAqCQlVbmRlcnNjYW4gaXMg YWN0aXZhdGVkIG9ubHkgZm9yIEhETUkgbW9uaXRvcnMuCisgKgorICogdW5kZXJzY2FuIGhib3Jk ZXI6CisgKglIb3Jpem9udGFsIGJvcmRlciBleHByZXNzZWQgaW4gcGl4ZWxzLiBUaGUgYm9yZGVy IGlzIHN5bW1ldHJpYywgd2hpY2gKKyAqCW1lYW5zIHlvdSdsbCBoYXZlIGEgYm9yZGVyIG9mICdo Ym9yZGVyJyBwaXhlbHMgb24gdGhlIGxlZnQgYW5kIG9uIHRoZQorICoJc2FtZSBib3JkZXIgb24g dGhlIHJpZ2h0LgorICoJV2hlbiB0aGlzIHZhbHVlIGlzIDAgYW5kIHVuZGVyc2NhbiBpcyAib24i IG9yICJhdXRvIiwgdGhlIGRyaXZlciB3aWxsCisgKglwaWNrIGEgZGVmYXVsdCB2YWx1ZSAodGhl IGRlZmF1bHQgdmFsdWUgaXMgZHJpdmVyIGRlcGVuZGVudCkuCisgKgorICogdW5kZXJzY2FuIHZi b3JkZXI6CisgKglWZXJ0aWNhbCBib3JkZXIgZXhwcmVzc2VkIGluIHBpeGVscy4gVGhlIGJvcmRl ciBpcyBzeW1tZXRyaWMsIHdoaWNoCisgKgltZWFucyB5b3UnbGwgaGF2ZSBhIGJvcmRlciBvZiAn dmJvcmRlcicgcGl4ZWxzIG9uIHRoZSB0b3AgYW5kIHRoZSBzYW1lCisgKglib3JkZXIgb24gdGhl IGJvdHRvbS4KKyAqCVdoZW4gdGhpcyB2YWx1ZSBpcyAwIGFuZCB1bmRlcnNjYW4gaXMgIm9uIiBv ciAiYXV0byIsIHRoZSBkcml2ZXIgd2lsbAorICoJcGljayBhIGRlZmF1bHQgdmFsdWUgKHRoZSBk ZWZhdWx0IHZhbHVlIGlzIGRyaXZlciBkZXBlbmRlbnQpLgogICovCiAKIGludCBkcm1fY29ubmVj dG9yX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCkBA IC0xMjQxLDYgKzEyNzMsMTAxIEBAIGludCBkcm1fbW9kZV9jcmVhdGVfdHZfcHJvcGVydGllcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9jcmVhdGVf dHZfcHJvcGVydGllcyk7CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0 IGRybV91bmRlcnNjYW5fbW9kZV9lbnVtX2xpc3RbXSA9IHsKKwl7IERSTV9VTkRFUlNDQU5fT0ZG LCAib2ZmIiB9LAorCXsgRFJNX1VOREVSU0NBTl9PTiwgIm9uIiB9LAorCXsgRFJNX1VOREVSU0NB Tl9BVVRPLCAiYXV0byIgfSwKK307CisKKy8qKgorICogZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfdW5k ZXJzY2FuX3Byb3BlcnRpZXMgLSBhdHRhY2ggYXRvbWljIHVuZGVyc2NhbgorICoJCQkJCSAgICAg ICBwcm9wZXJ0aWVzCisgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gYXR0YWNoIHVuZGVyc2Nh biBtb2RlIHByb3BlcnRpZXMgb24uCisgKiBAbW9kZV9tYXNrOiBiaXRtYXNrIG9mICVEUk1fVU5E RVJTQ0FOX1hYIG1vZGVzIGVuY29kaW5nIHRoZSBzdXBwb3J0ZWQKKyAqCSAgICAgICB1bmRlcnNj YW4gbW9kZXMuCisgKiBAbWF4X2hib3JkZXI6IG1heGltdW0gc2l6ZSBvZiB0aGUgaG9yaXpvbnRh bCBib3JkZXIgZXhwcmVzc2VkIGluIHBpeGVscy4KKyAqCQkgU2hvdWxkIGJlID4gMC4KKyAqIEBt YXhfdmJvcmRlcjogbWF4aW11bSBzaXplIG9mIHRoZSB2ZXJ0aWNhbCBib3JkZXIgZXhwcmVzc2Vk IGluIHBpeGVscy4KKyAqCQkgU2hvdWxkIGJlID4gMC4KKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8g YWRkIHN1cHBvcnQgZm9yIHVuZGVyc2NhbiB0byBhdG9taWMgZHJpdmVycy4KKyAqIFRoZSB1bmRl cnNjYW4gY29uZmlnIHdpbGwgYmUgc2V0IHRvICZkcm1fY29ubmVjdG9yX3N0YXRlLnVuZGVyc2Nh bgorICogYW5kIGNhbiBiZSB1c2VkIGZyb20gJmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzLT5h dG9taWNfY2hlY2sgZm9yCisgKiB2YWxpZGF0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiBaZXJv IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fY29u bmVjdG9yX2F0dGFjaF91bmRlcnNjYW5fcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAorCQkJCQkgICAgICB1MzIgbW9kZV9tYXNrLCB1NjQgbWF4X2hib3JkZXIsCisJ CQkJCSAgICAgIHU2NCBtYXhfdmJvcmRlcikKK3sKKwl1bnNpZ25lZCBpbnQgaSwgbm1vZGVzID0g QVJSQVlfU0laRShkcm1fdW5kZXJzY2FuX21vZGVfZW51bV9saXN0KTsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsK KworCWlmICghbWF4X2hib3JkZXIgfHwgIW1heF92Ym9yZGVyKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWlmICghaHdlaWdodDMyKG1vZGVfbWFzaykgfHwgKG1vZGVfbWFzayAmIH5HRU5NQVNLKG5t b2RlcyAtIDEsIDApKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlwcm9wID0gZHJtX3Byb3BlcnR5 X2NyZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfRU5VTSwgInVuZGVyc2NhbiIsCisJCQkJICAgaHdl aWdodDMyKG1vZGVfbWFzaykpOworCWlmICghcHJvcCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcm1fdW5kZXJzY2FuX21vZGVfZW51bV9saXN0KTsg aSsrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgKmVudHJ5OworCQlpbnQg cmV0OworCisJCWlmICghKEJJVChpKSAmIG1vZGVfbWFzaykpCisJCQljb250aW51ZTsKKworCQll bnRyeSA9ICZkcm1fdW5kZXJzY2FuX21vZGVfZW51bV9saXN0W2ldOworCQlyZXQgPSBkcm1fcHJv cGVydHlfYWRkX2VudW0ocHJvcCwgZW50cnktPnR5cGUsIGVudHJ5LT5uYW1lKTsKKwkJaWYgKHJl dCkKKwkJCWdvdG8gZXJyX2ZyZWVfbW9kZV9wcm9wOworCX0KKworCWNvbm5lY3Rvci0+dW5kZXJz Y2FuX21vZGVfcHJvcGVydHkgPSBwcm9wOworCisJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVf cmFuZ2UoZGV2LCAwLCAidW5kZXJzY2FuIGhib3JkZXIiLCAwLAorCQkJCQkgbWF4X2hib3JkZXIp OworCWlmICghcHJvcCkKKwkJZ290byBlcnJfZnJlZV9tb2RlX3Byb3A7CisKKwljb25uZWN0b3It PnVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5ID0gcHJvcDsKKworCXByb3AgPSBkcm1fcHJvcGVy dHlfY3JlYXRlX3JhbmdlKGRldiwgMCwgInVuZGVyc2NhbiB2Ym9yZGVyIiwgMCwKKwkJCQkJIG1h eF92Ym9yZGVyKTsKKwlpZiAoIXByb3ApCisJCWdvdG8gZXJyX2ZyZWVfaGJvcmRlcl9wcm9wOwor CisJY29ubmVjdG9yLT51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSA9IHByb3A7CisKKwlkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCSAgIGNvbm5lY3Rv ci0+dW5kZXJzY2FuX21vZGVfcHJvcGVydHksCisJCQkJICAgRFJNX1VOREVSU0NBTl9PRkYpOwor CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCisJCQkJICAgY29u bmVjdG9yLT51bmRlcnNjYW5faGJvcmRlcl9wcm9wZXJ0eSwgMCk7CisJZHJtX29iamVjdF9hdHRh Y2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkgICBjb25uZWN0b3ItPnVuZGVyc2Nh bl92Ym9yZGVyX3Byb3BlcnR5LCAwKTsKKworCXJldHVybiAwOworCitlcnJfZnJlZV9oYm9yZGVy X3Byb3A6CisJZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBjb25uZWN0b3ItPnVuZGVyc2Nhbl9o Ym9yZGVyX3Byb3BlcnR5KTsKKwljb25uZWN0b3ItPnVuZGVyc2Nhbl9oYm9yZGVyX3Byb3BlcnR5 ID0gTlVMTDsKKworZXJyX2ZyZWVfbW9kZV9wcm9wOgorCWRybV9wcm9wZXJ0eV9kZXN0cm95KGRl diwgY29ubmVjdG9yLT51bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eSk7CisJY29ubmVjdG9yLT51bmRl cnNjYW5fbW9kZV9wcm9wZXJ0eSA9IE5VTEw7CisKKwlyZXR1cm4gLUVOT01FTTsKK30KK0VYUE9S VF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMpOworCiAv KioKICAqIGRybV9tb2RlX2NyZWF0ZV9zY2FsaW5nX21vZGVfcHJvcGVydHkgLSBjcmVhdGUgc2Nh bGluZyBtb2RlIHByb3BlcnR5CiAgKiBAZGV2OiBEUk0gZGV2aWNlCmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKaW5k ZXggNWIzY2Y5MDlmZDVlLi4xNGQ0MjNkYzdhMTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9jb25uZWN0b3IuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKQEAgLTM3Nyw2 ICszNzcsNTMgQEAgc3RydWN0IGRybV90dl9jb25uZWN0b3Jfc3RhdGUgewogCXVuc2lnbmVkIGlu dCBodWU7CiB9OwogCisvKioKKyAqIGVudW0gZHJtX3VuZGVyc2Nhbl9tb2RlIC0gVW5kZXJzY2Fu IG1vZGUKKyAqCisgKiBUaGlzIGVudW0gaXMgdXNlZCB0byB0cmFjayB0aGUgdW5kZXJzY2FuIG1v ZGUuCisgKgorICogQERSTV9VTkRFUlNDQU5fT0ZGOiBObyB1bmRlcnNjYW4gYXBwbGllZCwgdGhl IG91dHB1dCBpbWFnZSB3aWxsIGJlIHVuY2hhbmdlZAorICogQERSTV9VTkRFUlNDQU5fT046IFVu ZGVyc2NhbiBpcyBlbmFibGVkLCBhbmQgaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3JkZXIgc2l6ZQor ICoJCSAgICAgIGFyZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgJnN0cnVjdF9kcm1fdW5kZXJzY2Fu LT5oYm9yZGVyCisgKgkJICAgICAgYW5kICZzdHJ1Y3RfZHJtX3VuZGVyc2Nhbi0+dmJvcmRlciBm aWVsZHMuCisgKiBARFJNX1VOREVSU0NBTl9BVVRPOiBVbmRlcnNjYW4gaXMgZW5hYmxlZCBhbmQg JnN0cnVjdF9kcm1fdW5kZXJzY2FuLT5oYm9yZGVyCisgKgkJCWFuZCAmc3RydWN0X2RybV91bmRl cnNjYW4tPnZib3JkZXIgYXJlIGd1ZXNzZWQgYnkgdGhlCisgKgkJCWRyaXZlci4KKyAqLworZW51 bSBkcm1fdW5kZXJzY2FuX21vZGUgeworCURSTV9VTkRFUlNDQU5fT0ZGLAorCURSTV9VTkRFUlND QU5fT04sCisJRFJNX1VOREVSU0NBTl9BVVRPLAorfTsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Vu ZGVyc2Nhbl9zdGF0ZSAtIFVuZGVyc2NhbiBwcm9wZXJ0aWVzIGF0dGFjaGVkIHRvIGEgY29ubmVj dG9yCisgKgkJCQlzdGF0ZQorICoKKyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgQ1JU QyBob3cgdGhlIGltYWdlIHNob3VsZCBiZSBzY2FsZWQvcGxhY2VkIGluCisgKiBvcmRlciB0byBj b3ZlciBmaXQgaW4gdGhlIGRpc3BsYXkgY29ubmVjdGVkIHRocm91Z2ggdGhpcyBjb25uZWN0b3Iu IE1vc3Qgb2YKKyAqIHRoZSB0aW1lIHVzZWQgdG8gYWRkcmVzcyBzaXR1YXRpb25zIHdoZXJlIHRo ZSBkaXNwbGF5IGJvcmRlcnMgYXJlIGhpZGRlbi4KKyAqIENhbiBhbHNvIGJlIHVzZWQgdG8gY29t cGVuc2F0ZSBvdmVyc2NhbiBkb25lIG9uIHRoZSBkaXNwbGF5IHNpZGUuCisgKi8KK3N0cnVjdCBk cm1fdW5kZXJzY2FuX3N0YXRlIHsKKwkvKioKKwkgKiBAbW9kZTogVW5kZXJzY2FuIG1vZGUuCisJ ICovCisJZW51bSBkcm1fdW5kZXJzY2FuX21vZGUgbW9kZTsKKworCS8qKgorCSAqIEBoYm9yZGVy OiBIb3Jpem9udGFsIGJvcmRlci4gVGhpcyB2YWx1ZXMgZW5jb2RlcyBib3RoIHRoZSBsZWZ0IGFu ZAorCSAqIHJpZ2h0IGJvcmRlcnM6IGxlZnRfYm9yZGVyID0gcmlnaHRfYm9yZGVyID0gaGJvcmRl ciAvIDIuCisJICovCisJdW5zaWduZWQgaW50IGhib3JkZXI7CisKKwkvKioKKwkgKiBAdmJvcmRl cjogVmVydGljYWwgYm9yZGVyLiBUaGlzIHZhbHVlcyBlbmNvZGVzIGJvdGggdGhlIHRvcCBhbmQK KwkgKiBib3R0b20gYm9yZGVyczogdG9wX2JvcmRlciA9IGJvdHRvbV9ib3JkZXIgPSB2Ym9yZGVy IC8gMi4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgdmJvcmRlcjsKK307CisKIC8qKgogICogc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgLSBtdXRhYmxlIGNvbm5lY3RvciBzdGF0ZQogICovCkBAIC00 NjEsNiArNTA4LDEzIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKIAkgKiBkcm1fd3Jp dGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKIAkgKi8KIAlzdHJ1Y3QgZHJtX3dyaXRlYmFja19q b2IgKndyaXRlYmFja19qb2I7CisKKwkvKioKKwkgKiBAdW5kZXJzY2FuOiBVbmRlcnNjYW4gaW5m b3JtYXRpb24uIE1vc3QgY29tbW9ubHkgdXNlZCB0byBhZGp1c3QKKwkgKiBpbWFnZSB3aGVuIHRo ZSBkaXNwbGF5IGhhcyBib3JkZXJzIGNvdmVyaW5nIHBhcnQgb2YgdGhlIGltYWdlIG9mCisJICog d2hlbiBpdCdzIGRvaW5nIG92ZXJzY2FuIG9uIGl0cyBvd24uCisJICovCisJc3RydWN0IGRybV91 bmRlcnNjYW5fc3RhdGUgdW5kZXJzY2FuOwogfTsKIAogLyoqCkBAIC05MjQsNiArOTc4LDI5IEBA IHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKIAkgKi8KIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KnBhdGhfYmxvYl9wdHI7CiAKKwkvKioKKwkgKiBAdW5kZXJzY2FuX21vZGVfcHJvcGVydHk6IE9w dGlvbmFsIGNvbm5lY3RvciB1bmRlcnNjYW4gbW9kZS4gVXNlZCBieQorCSAqIHRoZSBkcml2ZXIg dG8gc2NhbGUgdGhlIG91dHB1dCBpbWFnZSBhbmQgY29tcGVuc2F0ZSBhbiBvdmVyc2NhbiBkb25l CisJICogb24gdGhlIGRpc3BsYXkgc2lkZS4KKwkgKi8KKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp1 bmRlcnNjYW5fbW9kZV9wcm9wZXJ0eTsKKworCS8qKgorCSAqIEB1bmRlcnNjYW5faGJvcmRlcl9w cm9wZXJ0eTogT3B0aW9uYWwgY29ubmVjdG9yIHVuZGVyc2NhbiBob3Jpem9udGFsCisJICogYm9y ZGVyIChleHByZXNzZWQgaW4gcGl4ZWxzKS4gVXNlZCBieSB0aGUgZHJpdmVyIHRvIGFkanVzdCB0 aGUKKwkgKiBvdXRwdXQgaW1hZ2UgcG9zaXRpb24gYW5kIGNvbXBlbnNhdGUgYW4gb3ZlcnNjYW4g ZG9uZSBvbiB0aGUgZGlzcGxheQorCSAqIHNpZGUuCisJICovCisJc3RydWN0IGRybV9wcm9wZXJ0 eSAqdW5kZXJzY2FuX2hib3JkZXJfcHJvcGVydHk7CisKKwkvKioKKwkgKiBAdW5kZXJzY2FuX2hi b3JkZXJfcHJvcGVydHk6IE9wdGlvbmFsIGNvbm5lY3RvciB1bmRlcnNjYW4gdmVydGljYWwKKwkg KiBib3JkZXIgKGV4cHJlc3NlZCBpbiBwaXhlbHMpLiBVc2VkIGJ5IHRoZSBkcml2ZXIgdG8gYWRq dXN0IHRoZQorCSAqIG91dHB1dCBpbWFnZSBwb3NpdGlvbiBhbmQgY29tcGVuc2F0ZSBhbiBvdmVy c2NhbiBkb25lIG9uIHRoZSBkaXNwbGF5CisJICogc2lkZS4KKwkgKi8KKwlzdHJ1Y3QgZHJtX3By b3BlcnR5ICp1bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eTsKKwogI2RlZmluZSBEUk1fQ09OTkVD VE9SX1BPTExfSFBEICgxIDw8IDApCiAjZGVmaW5lIERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNU ICgxIDw8IDEpCiAjZGVmaW5lIERSTV9DT05ORUNUT1JfUE9MTF9ESVNDT05ORUNUICgxIDw8IDIp CkBAIC0xMTgwLDYgKzEyNTcsOSBAQCBpbnQgZHJtX21vZGVfY3JlYXRlX2R2aV9pX3Byb3BlcnRp ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgZHJtX21vZGVfY3JlYXRlX3R2X3Byb3Bl cnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgIHVuc2lnbmVkIGludCBudW1fbW9k ZXMsCiAJCQkJICBjb25zdCBjaGFyICogY29uc3QgbW9kZXNbXSk7CitpbnQgZHJtX2Nvbm5lY3Rv cl9hdHRhY2hfdW5kZXJzY2FuX3Byb3BlcnRpZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKKwkJCQkJICAgICAgdTMyIG1vZGVfbWFzaywgdTY0IG1heF9oYm9yZGVyLAorCQkJCQkg ICAgICB1NjQgbWF4X3Zib3JkZXIpOwogaW50IGRybV9tb2RlX2NyZWF0ZV9zY2FsaW5nX21vZGVf cHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRh Y2hfY29udGVudF90eXBlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpkZXYpOwogaW50 IGRybV9jb25uZWN0b3JfYXR0YWNoX3NjYWxpbmdfbW9kZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK