From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH v3 13/13] drm/tegra: Move drm_dp_link helpers to Tegra DRM Date: Mon, 21 Oct 2019 16:34:37 +0200 Message-ID: <20191021143437.1477719-14-thierry.reding@gmail.com> References: <20191021143437.1477719-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id 74F816E130 for ; Mon, 21 Oct 2019 14:35:23 +0000 (UTC) Received: by mail-wm1-x342.google.com with SMTP id b24so13042512wmj.5 for ; Mon, 21 Oct 2019 07:35:23 -0700 (PDT) In-Reply-To: <20191021143437.1477719-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkR1cmluZyB0aGUgZGlz Y3Vzc2lvbiBvZiBwYXRjaGVzIHRoYXQgZW5oYW5jZSB0aGUgZHJtX2RwX2xpbmsgaGVscGVycyBp dAp3YXMgY29uY2x1ZGVkIHRoYXQgdGhlc2UgaGVscGVycyBhcmVuJ3QgdmVyeSB1c2VmdWwgdG8g YmVnaW4gd2l0aC4gQWZ0ZXIKYWxsIG90aGVyIGRyaXZlcnMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBu b3QgdG8gdXNlIHRoZXNlIGhlbHBlcnMgYW55bW9yZSwKbW92ZSB0aGVzZSBoZWxwZXJzIGludG8g dGhlIGxhc3QgcmVtYWluaW5nIHVzZXI6IFRlZ3JhIERSTS4KCklmIGF0IHNvbWUgcG9pbnQgdGhl c2UgaGVscGVycyBhcmUgZGVlbWVkIG1vcmUgd2lkZWx5IHVzZWZ1bCwgdGhleSBjYW4KYmUgbW92 ZWQgb3V0IGludG8gdGhlIERSTSBEUCBoZWxwZXJzIGFnYWluLgoKU2lnbmVkLW9mZi1ieTogVGhp ZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2RwX2hlbHBlci5jIHwgMTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL01ha2VmaWxlICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEv ZHAuYyAgICAgIHwgMTMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vdGVncmEvZHAuaCAgICAgIHwgIDI2ICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS90 ZWdyYS9kcGF1eC5jICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jICAgICB8 ICAgMSArCiBpbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggICAgIHwgIDE2IC0tLS0KIDcgZmls ZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDE0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9kcF9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKaW5kZXgg ZjU2NzE0MWFmZjU0Li4yYzc4NzBhZWY0NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZHBfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwpAQCAt MzUxLDEzNCArMzUxLDYgQEAgaW50IGRybV9kcF9kcGNkX3JlYWRfbGlua19zdGF0dXMoc3RydWN0 IGRybV9kcF9hdXggKmF1eCwKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX2RwY2RfcmVhZF9saW5r X3N0YXR1cyk7CiAKLS8qKgotICogZHJtX2RwX2xpbmtfcHJvYmUoKSAtIHByb2JlIGEgRGlzcGxh eVBvcnQgbGluayBmb3IgY2FwYWJpbGl0aWVzCi0gKiBAYXV4OiBEaXNwbGF5UG9ydCBBVVggY2hh bm5lbAotICogQGxpbms6IHBvaW50ZXIgdG8gc3RydWN0dXJlIGluIHdoaWNoIHRvIHJldHVybiBs aW5rIGNhcGFiaWxpdGllcwotICoKLSAqIFRoZSBzdHJ1Y3R1cmUgZmlsbGVkIGluIGJ5IHRoaXMg ZnVuY3Rpb24gY2FuIHVzdWFsbHkgYmUgcGFzc2VkIGRpcmVjdGx5Ci0gKiBpbnRvIGRybV9kcF9s aW5rX3Bvd2VyX3VwKCkgYW5kIGRybV9kcF9saW5rX2NvbmZpZ3VyZSgpIHRvIHBvd2VyIHVwIGFu ZAotICogY29uZmlndXJlIHRoZSBsaW5rIGJhc2VkIG9uIHRoZSBsaW5rJ3MgY2FwYWJpbGl0aWVz LgotICoKLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBv biBmYWlsdXJlLgotICovCi1pbnQgZHJtX2RwX2xpbmtfcHJvYmUoc3RydWN0IGRybV9kcF9hdXgg KmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQotewotCXU4IHZhbHVlc1szXTsKLQlpbnQg ZXJyOwotCi0JbWVtc2V0KGxpbmssIDAsIHNpemVvZigqbGluaykpOwotCi0JZXJyID0gZHJtX2Rw X2RwY2RfcmVhZChhdXgsIERQX0RQQ0RfUkVWLCB2YWx1ZXMsIHNpemVvZih2YWx1ZXMpKTsKLQlp ZiAoZXJyIDwgMCkKLQkJcmV0dXJuIGVycjsKLQotCWxpbmstPnJldmlzaW9uID0gdmFsdWVzWzBd OwotCWxpbmstPnJhdGUgPSBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUodmFsdWVzWzFdKTsK LQlsaW5rLT5udW1fbGFuZXMgPSB2YWx1ZXNbMl0gJiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOwot Ci0JaWYgKHZhbHVlc1syXSAmIERQX0VOSEFOQ0VEX0ZSQU1FX0NBUCkKLQkJbGluay0+Y2FwYWJp bGl0aWVzIHw9IERQX0xJTktfQ0FQX0VOSEFOQ0VEX0ZSQU1JTkc7Ci0KLQlyZXR1cm4gMDsKLX0K LUVYUE9SVF9TWU1CT0woZHJtX2RwX2xpbmtfcHJvYmUpOwotCi0vKioKLSAqIGRybV9kcF9saW5r X3Bvd2VyX3VwKCkgLSBwb3dlciB1cCBhIERpc3BsYXlQb3J0IGxpbmsKLSAqIEBhdXg6IERpc3Bs YXlQb3J0IEFVWCBjaGFubmVsCi0gKiBAbGluazogcG9pbnRlciB0byBhIHN0cnVjdHVyZSBjb250 YWluaW5nIHRoZSBsaW5rIGNvbmZpZ3VyYXRpb24KLSAqCi0gKiBSZXR1cm5zIDAgb24gc3VjY2Vz cyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KLSAqLwotaW50IGRybV9kcF9s aW5rX3Bvd2VyX3VwKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAq bGluaykKLXsKLQl1OCB2YWx1ZTsKLQlpbnQgZXJyOwotCi0JLyogRFBfU0VUX1BPV0VSIHJlZ2lz dGVyIGlzIG9ubHkgYXZhaWxhYmxlIG9uIERQQ0QgdjEuMSBhbmQgbGF0ZXIgKi8KLQlpZiAobGlu ay0+cmV2aXNpb24gPCAweDExKQotCQlyZXR1cm4gMDsKLQotCWVyciA9IGRybV9kcF9kcGNkX3Jl YWRiKGF1eCwgRFBfU0VUX1BPV0VSLCAmdmFsdWUpOwotCWlmIChlcnIgPCAwKQotCQlyZXR1cm4g ZXJyOwotCi0JdmFsdWUgJj0gfkRQX1NFVF9QT1dFUl9NQVNLOwotCXZhbHVlIHw9IERQX1NFVF9Q T1dFUl9EMDsKLQotCWVyciA9IGRybV9kcF9kcGNkX3dyaXRlYihhdXgsIERQX1NFVF9QT1dFUiwg dmFsdWUpOwotCWlmIChlcnIgPCAwKQotCQlyZXR1cm4gZXJyOwotCi0JLyoKLQkgKiBBY2NvcmRp bmcgdG8gdGhlIERQIDEuMSBzcGVjaWZpY2F0aW9uLCBhICJTaW5rIERldmljZSBtdXN0IGV4aXQg dGhlCi0JICogcG93ZXIgc2F2aW5nIHN0YXRlIHdpdGhpbiAxIG1zIiAoU2VjdGlvbiAyLjUuMy4x LCBUYWJsZSA1LTUyLCAiU2luawotCSAqIENvbnRyb2wgRmllbGQiIChyZWdpc3RlciAweDYwMCku Ci0JICovCi0JdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwotCi0JcmV0dXJuIDA7Ci19Ci1FWFBP UlRfU1lNQk9MKGRybV9kcF9saW5rX3Bvd2VyX3VwKTsKLQotLyoqCi0gKiBkcm1fZHBfbGlua19w b3dlcl9kb3duKCkgLSBwb3dlciBkb3duIGEgRGlzcGxheVBvcnQgbGluawotICogQGF1eDogRGlz cGxheVBvcnQgQVVYIGNoYW5uZWwKLSAqIEBsaW5rOiBwb2ludGVyIHRvIGEgc3RydWN0dXJlIGNv bnRhaW5pbmcgdGhlIGxpbmsgY29uZmlndXJhdGlvbgotICoKLSAqIFJldHVybnMgMCBvbiBzdWNj ZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgotICovCi1pbnQgZHJtX2Rw X2xpbmtfcG93ZXJfZG93bihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xp bmsgKmxpbmspCi17Ci0JdTggdmFsdWU7Ci0JaW50IGVycjsKLQotCS8qIERQX1NFVF9QT1dFUiBy ZWdpc3RlciBpcyBvbmx5IGF2YWlsYWJsZSBvbiBEUENEIHYxLjEgYW5kIGxhdGVyICovCi0JaWYg KGxpbmstPnJldmlzaW9uIDwgMHgxMSkKLQkJcmV0dXJuIDA7Ci0KLQllcnIgPSBkcm1fZHBfZHBj ZF9yZWFkYihhdXgsIERQX1NFVF9QT1dFUiwgJnZhbHVlKTsKLQlpZiAoZXJyIDwgMCkKLQkJcmV0 dXJuIGVycjsKLQotCXZhbHVlICY9IH5EUF9TRVRfUE9XRVJfTUFTSzsKLQl2YWx1ZSB8PSBEUF9T RVRfUE9XRVJfRDM7Ci0KLQllcnIgPSBkcm1fZHBfZHBjZF93cml0ZWIoYXV4LCBEUF9TRVRfUE9X RVIsIHZhbHVlKTsKLQlpZiAoZXJyIDwgMCkKLQkJcmV0dXJuIGVycjsKLQotCXJldHVybiAwOwot fQotRVhQT1JUX1NZTUJPTChkcm1fZHBfbGlua19wb3dlcl9kb3duKTsKLQotLyoqCi0gKiBkcm1f ZHBfbGlua19jb25maWd1cmUoKSAtIGNvbmZpZ3VyZSBhIERpc3BsYXlQb3J0IGxpbmsKLSAqIEBh dXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCi0gKiBAbGluazogcG9pbnRlciB0byBhIHN0cnVj dHVyZSBjb250YWluaW5nIHRoZSBsaW5rIGNvbmZpZ3VyYXRpb24KLSAqCi0gKiBSZXR1cm5zIDAg b24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KLSAqLwotaW50 IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJt X2RwX2xpbmsgKmxpbmspCi17Ci0JdTggdmFsdWVzWzJdOwotCWludCBlcnI7Ci0KLQl2YWx1ZXNb MF0gPSBkcm1fZHBfbGlua19yYXRlX3RvX2J3X2NvZGUobGluay0+cmF0ZSk7Ci0JdmFsdWVzWzFd ID0gbGluay0+bnVtX2xhbmVzOwotCi0JaWYgKGxpbmstPmNhcGFiaWxpdGllcyAmIERQX0xJTktf Q0FQX0VOSEFOQ0VEX0ZSQU1JTkcpCi0JCXZhbHVlc1sxXSB8PSBEUF9MQU5FX0NPVU5UX0VOSEFO Q0VEX0ZSQU1FX0VOOwotCi0JZXJyID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4LCBEUF9MSU5LX0JX X1NFVCwgdmFsdWVzLCBzaXplb2YodmFsdWVzKSk7Ci0JaWYgKGVyciA8IDApCi0JCXJldHVybiBl cnI7Ci0KLQlyZXR1cm4gMDsKLX0KLUVYUE9SVF9TWU1CT0woZHJtX2RwX2xpbmtfY29uZmlndXJl KTsKLQogLyoqCiAgKiBkcm1fZHBfZG93bnN0cmVhbV9tYXhfY2xvY2soKSAtIGV4dHJhY3QgYnJh bmNoIGRldmljZSBtYXgKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWwg cmF0ZSBmb3IgbGVnYWN5IFZHQQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL01ha2VmaWxlCmluZGV4IDMzYzQ2M2U4ZDQ5 Zi4uZDZjZjIwMjQxNGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvTWFrZWZp bGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL01ha2VmaWxlCkBAIC01LDYgKzUsNyBAQCB0 ZWdyYS1kcm0teSA6PSBcCiAJZHJtLm8gXAogCWdlbS5vIFwKIAlmYi5vIFwKKwlkcC5vIFwKIAlo dWIubyBcCiAJcGxhbmUubyBcCiAJZGMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGVncmEvZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTBiYTk2N2ViY2JkCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwLmMKQEAgLTAsMCArMSwxMzMgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBOVklE SUEgQ29ycG9yYXRpb24KKyAqIENvcHlyaWdodCAoQykgMjAxNSBSb2IgQ2xhcmsKKyAqLworCisj aW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KKworI2luY2x1ZGUgImRwLmgiCisKKy8qKgor ICogZHJtX2RwX2xpbmtfcHJvYmUoKSAtIHByb2JlIGEgRGlzcGxheVBvcnQgbGluayBmb3IgY2Fw YWJpbGl0aWVzCisgKiBAYXV4OiBEaXNwbGF5UG9ydCBBVVggY2hhbm5lbAorICogQGxpbms6IHBv aW50ZXIgdG8gc3RydWN0dXJlIGluIHdoaWNoIHRvIHJldHVybiBsaW5rIGNhcGFiaWxpdGllcwor ICoKKyAqIFRoZSBzdHJ1Y3R1cmUgZmlsbGVkIGluIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIHVzdWFs bHkgYmUgcGFzc2VkIGRpcmVjdGx5CisgKiBpbnRvIGRybV9kcF9saW5rX3Bvd2VyX3VwKCkgYW5k IGRybV9kcF9saW5rX2NvbmZpZ3VyZSgpIHRvIHBvd2VyIHVwIGFuZAorICogY29uZmlndXJlIHRo ZSBsaW5rIGJhc2VkIG9uIHRoZSBsaW5rJ3MgY2FwYWJpbGl0aWVzLgorICoKKyAqIFJldHVybnMg MCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitp bnQgZHJtX2RwX2xpbmtfcHJvYmUoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9k cF9saW5rICpsaW5rKQoreworCXU4IHZhbHVlc1szXTsKKwlpbnQgZXJyOworCisJbWVtc2V0KGxp bmssIDAsIHNpemVvZigqbGluaykpOworCisJZXJyID0gZHJtX2RwX2RwY2RfcmVhZChhdXgsIERQ X0RQQ0RfUkVWLCB2YWx1ZXMsIHNpemVvZih2YWx1ZXMpKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0 dXJuIGVycjsKKworCWxpbmstPnJldmlzaW9uID0gdmFsdWVzWzBdOworCWxpbmstPnJhdGUgPSBk cm1fZHBfYndfY29kZV90b19saW5rX3JhdGUodmFsdWVzWzFdKTsKKwlsaW5rLT5udW1fbGFuZXMg PSB2YWx1ZXNbMl0gJiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOworCisJaWYgKHZhbHVlc1syXSAm IERQX0VOSEFOQ0VEX0ZSQU1FX0NBUCkKKwkJbGluay0+Y2FwYWJpbGl0aWVzIHw9IERQX0xJTktf Q0FQX0VOSEFOQ0VEX0ZSQU1JTkc7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBkcm1fZHBf bGlua19wb3dlcl91cCgpIC0gcG93ZXIgdXAgYSBEaXNwbGF5UG9ydCBsaW5rCisgKiBAYXV4OiBE aXNwbGF5UG9ydCBBVVggY2hhbm5lbAorICogQGxpbms6IHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUg Y29udGFpbmluZyB0aGUgbGluayBjb25maWd1cmF0aW9uCisgKgorICogUmV0dXJucyAwIG9uIHN1 Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1f ZHBfbGlua19wb3dlcl91cChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xp bmsgKmxpbmspCit7CisJdTggdmFsdWU7CisJaW50IGVycjsKKworCS8qIERQX1NFVF9QT1dFUiBy ZWdpc3RlciBpcyBvbmx5IGF2YWlsYWJsZSBvbiBEUENEIHYxLjEgYW5kIGxhdGVyICovCisJaWYg KGxpbmstPnJldmlzaW9uIDwgMHgxMSkKKwkJcmV0dXJuIDA7CisKKwllcnIgPSBkcm1fZHBfZHBj ZF9yZWFkYihhdXgsIERQX1NFVF9QT1dFUiwgJnZhbHVlKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0 dXJuIGVycjsKKworCXZhbHVlICY9IH5EUF9TRVRfUE9XRVJfTUFTSzsKKwl2YWx1ZSB8PSBEUF9T RVRfUE9XRVJfRDA7CisKKwllcnIgPSBkcm1fZHBfZHBjZF93cml0ZWIoYXV4LCBEUF9TRVRfUE9X RVIsIHZhbHVlKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCS8qCisJICogQWNj b3JkaW5nIHRvIHRoZSBEUCAxLjEgc3BlY2lmaWNhdGlvbiwgYSAiU2luayBEZXZpY2UgbXVzdCBl eGl0IHRoZQorCSAqIHBvd2VyIHNhdmluZyBzdGF0ZSB3aXRoaW4gMSBtcyIgKFNlY3Rpb24gMi41 LjMuMSwgVGFibGUgNS01MiwgIlNpbmsKKwkgKiBDb250cm9sIEZpZWxkIiAocmVnaXN0ZXIgMHg2 MDApLgorCSAqLworCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKKworCXJldHVybiAwOworfQor CisvKioKKyAqIGRybV9kcF9saW5rX3Bvd2VyX2Rvd24oKSAtIHBvd2VyIGRvd24gYSBEaXNwbGF5 UG9ydCBsaW5rCisgKiBAYXV4OiBEaXNwbGF5UG9ydCBBVVggY2hhbm5lbAorICogQGxpbms6IHBv aW50ZXIgdG8gYSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbGluayBjb25maWd1cmF0aW9uCisg KgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCisgKi8KK2ludCBkcm1fZHBfbGlua19wb3dlcl9kb3duKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKK3sKKwl1OCB2YWx1ZTsKKwlpbnQgZXJy OworCisJLyogRFBfU0VUX1BPV0VSIHJlZ2lzdGVyIGlzIG9ubHkgYXZhaWxhYmxlIG9uIERQQ0Qg djEuMSBhbmQgbGF0ZXIgKi8KKwlpZiAobGluay0+cmV2aXNpb24gPCAweDExKQorCQlyZXR1cm4g MDsKKworCWVyciA9IGRybV9kcF9kcGNkX3JlYWRiKGF1eCwgRFBfU0VUX1BPV0VSLCAmdmFsdWUp OworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJdmFsdWUgJj0gfkRQX1NFVF9QT1dF Ul9NQVNLOworCXZhbHVlIHw9IERQX1NFVF9QT1dFUl9EMzsKKworCWVyciA9IGRybV9kcF9kcGNk X3dyaXRlYihhdXgsIERQX1NFVF9QT1dFUiwgdmFsdWUpOworCWlmIChlcnIgPCAwKQorCQlyZXR1 cm4gZXJyOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX2RwX2xpbmtfY29uZmlndXJl KCkgLSBjb25maWd1cmUgYSBEaXNwbGF5UG9ydCBsaW5rCisgKiBAYXV4OiBEaXNwbGF5UG9ydCBB VVggY2hhbm5lbAorICogQGxpbms6IHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0 aGUgbGluayBjb25maWd1cmF0aW9uCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBu ZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fZHBfbGlua19jb25m aWd1cmUoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQor eworCXU4IHZhbHVlc1syXTsKKwlpbnQgZXJyOworCisJdmFsdWVzWzBdID0gZHJtX2RwX2xpbmtf cmF0ZV90b19id19jb2RlKGxpbmstPnJhdGUpOworCXZhbHVlc1sxXSA9IGxpbmstPm51bV9sYW5l czsKKworCWlmIChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFN SU5HKQorCQl2YWx1ZXNbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9GUkFNRV9FTjsKKwor CWVyciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgRFBfTElOS19CV19TRVQsIHZhbHVlcywgc2l6 ZW9mKHZhbHVlcykpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHAuaCBiL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9kcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u Y2E5OWEyMWQ5Njg2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2Rw LmgKQEAgLTAsMCArMSwyNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoK KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAqIENvcHly aWdodCAoQykgMjAxNSBSb2IgQ2xhcmsKKyAqLworCisjaWZuZGVmIERSTV9URUdSQV9EUF9ICisj ZGVmaW5lIERSTV9URUdSQV9EUF9IIDEKKworc3RydWN0IGRybV9kcF9hdXg7CisKKyNkZWZpbmUg RFBfTElOS19DQVBfRU5IQU5DRURfRlJBTUlORyAoMSA8PCAwKQorCitzdHJ1Y3QgZHJtX2RwX2xp bmsgeworCXVuc2lnbmVkIGNoYXIgcmV2aXNpb247CisJdW5zaWduZWQgaW50IHJhdGU7CisJdW5z aWduZWQgaW50IG51bV9sYW5lczsKKwl1bnNpZ25lZCBsb25nIGNhcGFiaWxpdGllczsKK307CisK K2ludCBkcm1fZHBfbGlua19wcm9iZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJt X2RwX2xpbmsgKmxpbmspOworaW50IGRybV9kcF9saW5rX3Bvd2VyX3VwKHN0cnVjdCBkcm1fZHBf YXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluayk7CitpbnQgZHJtX2RwX2xpbmtfcG93 ZXJfZG93bihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmsp OworaW50IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1 Y3QgZHJtX2RwX2xpbmsgKmxpbmspOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9kcGF1eC5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMKaW5kZXgg YTBmNmY5YjBkMjU4Li4xMTQ0NjA1Yzk3MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9kcGF1eC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcGF1eC5jCkBAIC0yMiw2 ICsyMiw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0v ZHJtX3BhbmVsLmg+CiAKKyNpbmNsdWRlICJkcC5oIgogI2luY2x1ZGUgImRwYXV4LmgiCiAjaW5j bHVkZSAiZHJtLmgiCiAjaW5jbHVkZSAidHJhY2UuaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9zb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYwppbmRleCA1NzY5 MzI2MDI0NWUuLjkxZDVjNTA0MWQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L3Nvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYwpAQCAtMjUsNiArMjUsNyBA QAogI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KIAogI2luY2x1ZGUgImRjLmgiCisj aW5jbHVkZSAiZHAuaCIKICNpbmNsdWRlICJkcm0uaCIKICNpbmNsdWRlICJoZGEuaCIKICNpbmNs dWRlICJzb3IuaCIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAppbmRleCAwNGY2YzBiYjAyNzQuLjUxZWNiNTExMmVm OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCisrKyBiL2luY2x1ZGUv ZHJtL2RybV9kcF9oZWxwZXIuaApAQCAtMTQ1NSwyMiArMTQ1NSw2IEBAIHN0YXRpYyBpbmxpbmUg c3NpemVfdCBkcm1fZHBfZHBjZF93cml0ZWIoc3RydWN0IGRybV9kcF9hdXggKmF1eCwKIGludCBk cm1fZHBfZHBjZF9yZWFkX2xpbmtfc3RhdHVzKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsCiAJCQkJ IHU4IHN0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7CiAKLS8qCi0gKiBEaXNwbGF5UG9ydCBs aW5rCi0gKi8KLSNkZWZpbmUgRFBfTElOS19DQVBfRU5IQU5DRURfRlJBTUlORyAoMSA8PCAwKQot Ci1zdHJ1Y3QgZHJtX2RwX2xpbmsgewotCXVuc2lnbmVkIGNoYXIgcmV2aXNpb247Ci0JdW5zaWdu ZWQgaW50IHJhdGU7Ci0JdW5zaWduZWQgaW50IG51bV9sYW5lczsKLQl1bnNpZ25lZCBsb25nIGNh cGFiaWxpdGllczsKLX07Ci0KLWludCBkcm1fZHBfbGlua19wcm9iZShzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwotaW50IGRybV9kcF9saW5rX3Bvd2Vy X3VwKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluayk7Ci1p bnQgZHJtX2RwX2xpbmtfcG93ZXJfZG93bihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3Qg ZHJtX2RwX2xpbmsgKmxpbmspOwotaW50IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1Y3QgZHJt X2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwogaW50IGRybV9kcF9kb3du c3RyZWFtX21heF9jbG9jayhjb25zdCB1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXSwKIAkJ CQljb25zdCB1OCBwb3J0X2NhcFs0XSk7CiBpbnQgZHJtX2RwX2Rvd25zdHJlYW1fbWF4X2JwYyhj b25zdCB1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXSwKLS0gCjIuMjMuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs