From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 48D07C10DC3 for ; Thu, 7 Dec 2023 15:50:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nwmmqXBC7nPLWBLFgLQHogc/kM2IQxxCZd+1sC/OMdA=; b=PbvolKifC2dPJP CZKQblnYubl+np0AIaIrlCOs8Ht6Z9JubOeeE7BwSlhxPOyeqG43XOyY8aBNQBCfpDtvjwEbkAy9Q N4pYesxy24PU+fOIKb6cHHhPjM3euC1lDkZiOCTTk3nnLJKMKyBG0h/idarwmpqysiq+6GNts+lQA j/08vJ0MVkK9Cw6tkElx3ztN7mxZG3Wzx8qlJrYjPv49j2OZA+1ke9xxbXo/lx5ajFkvQ73U8L0ob YM5msHHekrkRIH+QR2Z8UX0lM9ftCcM+kaVpXWZ++Bqdo0Srsu7sRs2NMmZG/oedEobRIExLEqTwD Z9avyiHR8qEFXfVAGLpQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rBGde-00DGb7-1s; Thu, 07 Dec 2023 15:50:10 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rBGdR-00DGKN-22; Thu, 07 Dec 2023 15:50:07 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 95541CE2078; Thu, 7 Dec 2023 15:49:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 53E7FC433C8; Thu, 7 Dec 2023 15:49:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701964194; bh=oTR4FpvGwJP4zQ5v7qTnshVqbcaV98xRWqmuBK8FzFc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=st/Wj1H6t7fKa8U00zUa1AwQAXPobwx+78vcQL+MTbFIYC52hfQxyDKJjCF78N6Rj PS+0SEJq364iIbFryH3ulryX3OY2pzLzNO/qGh+uOlEB5kFzs5dxlpVigXQKeo/Aud EptoGTtw5U+CrJ8VtQHJoPNBLSQP1fcAy74GqaxEgWzu6Hx9v3KFf65fBEZbb77Grs 1bRFHB608yq1qG1H0wBQ8flddqRB+1llXIDMsWSQ9lTyKiHV3rrhB6j90n0hF0Db8y JvedK8Vq6czNeIEW/RCUiRgAogpvy6x4xSuaoBVIIUC+jH6XGjHFRn4c+xZa7Uk+fd 9+3DL5pu0pnig== From: Maxime Ripard Date: Thu, 07 Dec 2023 16:49:31 +0100 Subject: [PATCH v5 08/44] drm/connector: hdmi: Add Broadcast RGB property MIME-Version: 1.0 Message-Id: <20231207-kms-hdmi-connector-state-v5-8-6538e19d634d@kernel.org> References: <20231207-kms-hdmi-connector-state-v5-0-6538e19d634d@kernel.org> In-Reply-To: <20231207-kms-hdmi-connector-state-v5-0-6538e19d634d@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Emma Anholt , Jonathan Corbet , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Hans Verkuil , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Maxime Ripard X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=34355; i=mripard@kernel.org; h=from:subject:message-id; bh=oTR4FpvGwJP4zQ5v7qTnshVqbcaV98xRWqmuBK8FzFc=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDKmFL1srld79l9M5JNFZ90L9Iqv6yjWP5689FGOwK7Und FI4h692RykLgxgXg6yYIkuMsPmSuFOzXney8c2DmcPKBDKEgYtTACayfRcjw4ROm9ozp52t/wvq n7csqUp9NjHj+RxrtXP38sV5vOxchRn+u2YqMaeze742OJdmu1tpPY+2a1LkwbfihjPuvLSOst/ JCQA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231207_074958_051398_C102C5B9 X-CRM114-Status: GOOD ( 28.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIGk5MTUgZHJpdmVyIGhhcyBhIHByb3BlcnR5IHRvIGZvcmNlIHRoZSBSR0IgcmFuZ2Ugb2Yg YW4gSERNSSBvdXRwdXQuClRoZSB2YzQgZHJpdmVyIHRoZW4gaW1wbGVtZW50ZWQgdGhlIHNhbWUg cHJvcGVydHkgd2l0aCB0aGUgc2FtZQpzZW1hbnRpY3MuIEtXaW4gaGFzIHN1cHBvcnQgZm9yIGl0 LCBhbmQgYSBQUiBmb3IgbXV0dGVyIGlzIGFsc28gdGhlcmUgdG8Kc3VwcG9ydCBpdC4KCkJvdGgg ZHJpdmVycyBpbXBsZW1lbnRpbmcgdGhlIHNhbWUgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBzZW1h bnRpY3MsCnBsdXMgdGhlIHVzZXJzcGFjZSBoYXZpbmcgc3VwcG9ydCBmb3IgaXQsIGlzIHByb29m IGVub3VnaCB0aGF0IGl0J3MKcHJldHR5IG11Y2ggYSBkZS1mYWN0byBzdGFuZGFyZCBub3cgYW5k IHdlIGNhbiBwcm92aWRlIGhlbHBlcnMgZm9yIGl0LgoKTGV0J3MgcGx1bWIgaXQgaW50byB0aGUg bmV3bHkgY3JlYXRlZCBIRE1JIGNvbm5lY3Rvci4KClNpZ25lZC1vZmYtYnk6IE1heGltZSBSaXBh cmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVy dGllcy5jc3YgICAgICAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pY19zdGF0ZV9oZWxwZXIuYyAgICAgICAgICB8ICAxNyArCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY191YXBpLmMgICAgICAgICAgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2Nvbm5lY3Rvci5jICAgICAgICAgICAgICAgICAgICB8ICA3NiArKysrKwogZHJpdmVycy9n cHUvZHJtL3Rlc3RzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2dw dS9kcm0vdGVzdHMvZHJtX2F0b21pY19zdGF0ZV9oZWxwZXJfdGVzdC5jICAgfCAzNzYgKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2Nvbm5lY3Rvcl90ZXN0 LmMgICAgICAgICB8IDExNyArKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2t1bml0 X2VkaWQuaCAgICAgICAgICAgICB8IDEwNiArKysrKysKIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCA3 MzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0 aW9uL2dwdS9rbXMtcHJvcGVydGllcy5jc3YgYi9Eb2N1bWVudGF0aW9uL2dwdS9rbXMtcHJvcGVy dGllcy5jc3YKaW5kZXggMGY5NTkwODM0ODI5Li5jYWVmMTRjNTMyZDQgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVzLmNzdgorKysgYi9Eb2N1bWVudGF0aW9uL2dw dS9rbXMtcHJvcGVydGllcy5jc3YKQEAgLTE3LDcgKzE3LDYgQEAgT3duZXIgTW9kdWxlL0RyaXZl cnMsR3JvdXAsUHJvcGVydHkgTmFtZSxUeXBlLFByb3BlcnR5IFZhbHVlcyxPYmplY3QgYXR0YWNo ZWQsRGUKICxWaXJ0dWFsIEdQVSzigJxzdWdnZXN0ZWQgWOKAnSxSQU5HRSwiTWluPTAsIE1heD0w eGZmZmZmZmZmIixDb25uZWN0b3IscHJvcGVydHkgdG8gc3VnZ2VzdCBhbiBYIG9mZnNldCBmb3Ig YSBjb25uZWN0b3IKICws4oCcc3VnZ2VzdGVkIFnigJ0sUkFOR0UsIk1pbj0wLCBNYXg9MHhmZmZm ZmZmZiIsQ29ubmVjdG9yLHByb3BlcnR5IHRvIHN1Z2dlc3QgYW4gWSBvZmZzZXQgZm9yIGEgY29u bmVjdG9yCiAsT3B0aW9uYWwsIiIiYXNwZWN0IHJhdGlvIiIiLEVOVU0sInsgIiJOb25lIiIsICIi NDozIiIsICIiMTY6OSIiIH0iLENvbm5lY3RvcixUREIKLWk5MTUsR2VuZXJpYywiIiJCcm9hZGNh c3QgUkdCIiIiLEVOVU0sInsgIiJBdXRvbWF0aWMiIiwgIiJGdWxsIiIsICIiTGltaXRlZCAxNjoy MzUiIiB9IixDb25uZWN0b3IsIldoZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gTGltaXRlZCAx NjoyMzUgYW5kIENUTSBpcyBzZXQsIHRoZSBoYXJkd2FyZSB3aWxsIGJlIHByb2dyYW1tZWQgd2l0 aCB0aGUgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBDVE0gYnkgdGhlIGxpbWl0ZWQg cmFuZ2UgbWF0cml4IHRvIGVuc3VyZSB0aGUgcGl4ZWxzIG5vcm1hbGx5IGluIHRoZSByYW5nZSAw Li4xLjAgYXJlIHJlbWFwcGVkIHRvIHRoZSByYW5nZSAxNi8yNTUuLjIzNS8yNTUuIgogLCzigJxh dWRpb+KAnSxFTlVNLCJ7ICIiZm9yY2UtZHZpIiIsICIib2ZmIiIsICIiYXV0byIiLCAiIm9uIiIg fSIsQ29ubmVjdG9yLFRCRAogLFNEVk8tVFYs4oCcbW9kZeKAnSxFTlVNLCJ7ICIiTlRTQ19NIiIs ICIiTlRTQ19KIiIsICIiTlRTQ180NDMiIiwgIiJQQUxfQiIiIH0gZXRjLiIsQ29ubmVjdG9yLFRC RAogLCwiIiJsZWZ0X21hcmdpbiIiIixSQU5HRSwiTWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQi LENvbm5lY3RvcixUQkQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCmluZGV4IGMzMWZjMGI0OGMzMS4uMTQ2NWE3 ZjA5YTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKQEAgLTExNDIsNiArMTE0MiwxMSBAQCBzdGF0aWMg dm9pZCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIg KnAsCiAJZHJtX3ByaW50ZihwLCAiXHRtYXhfcmVxdWVzdGVkX2JwYz0lZFxuIiwgc3RhdGUtPm1h eF9yZXF1ZXN0ZWRfYnBjKTsKIAlkcm1fcHJpbnRmKHAsICJcdGNvbG9yc3BhY2U9JXNcbiIsIGRy bV9nZXRfY29sb3JzcGFjZV9uYW1lKHN0YXRlLT5jb2xvcnNwYWNlKSk7CiAKKwlpZiAoY29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEgfHwKKwkgICAg Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUIpCisJ CWRybV9wcmludGYocCwgIlx0YnJvYWRjYXN0X3JnYj0lc1xuIiwKKwkJCSAgIGRybV9oZG1pX2Nv bm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1lKHN0YXRlLT5oZG1pLmJyb2FkY2FzdF9yZ2Ip KTsKKwogCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RP Ul9XUklURUJBQ0spCiAJCWlmIChzdGF0ZS0+d3JpdGViYWNrX2pvYiAmJiBzdGF0ZS0+d3JpdGVi YWNrX2pvYi0+ZmIpCiAJCQlkcm1fcHJpbnRmKHAsICJcdGZiPSVkXG4iLCBzdGF0ZS0+d3JpdGVi YWNrX2pvYi0+ZmItPmJhc2UuaWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfc3RhdGVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9o ZWxwZXIuYwppbmRleCBlNjljMGNjMWM2ZGEuLjEwZDk4NjIwYTM1OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKQEAgLTU4Myw2ICs1ODMsNyBAQCBFWFBPUlRf U1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl90dl9yZXNldCk7CiB2b2lkIF9fZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfcmVzZXQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19z dGF0ZSkKIHsKKwluZXdfc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYiA9IERSTV9IRE1JX0JST0FE Q0FTVF9SR0JfQVVUTzsKIH0KIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfaGRtaV9yZXNldCk7CiAKQEAgLTY1MCw2ICs2NTEsMjIgQEAgRVhQT1JUX1NZTUJPTChk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfdHZfY2hlY2spOwogaW50IGRybV9hdG9taWNfaGVs cGVyX2Nvbm5lY3Rvcl9oZG1pX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CiAJCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKKwlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX3N0YXRlID0KKwkJZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5l Y3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqbmV3X3N0YXRlID0KKwkJZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0 ZSwgY29ubmVjdG9yKTsKKworCWlmIChvbGRfc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYiAhPSBu ZXdfc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYikgeworCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSBuZXdfc3RhdGUtPmNydGM7CisJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK KworCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7 CisJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCisJCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRl KTsKKworCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCX0KKwogCXJldHVybiAw OwogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfaGRtaV9jaGVj ayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKaW5kZXggYWVlNGE2NWQ0OTU5Li4zZWI0ZjRi YzhiNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKQEAgLTgxOCw2ICs4MTgsOCBAQCBz dGF0aWMgaW50IGRybV9hdG9taWNfY29ubmVjdG9yX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCQlzdGF0ZS0+bWF4X3JlcXVlc3RlZF9icGMgPSB2YWw7CiAJ fSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPnByaXZhY3lfc2NyZWVuX3N3X3N0YXRl X3Byb3BlcnR5KSB7CiAJCXN0YXRlLT5wcml2YWN5X3NjcmVlbl9zd19zdGF0ZSA9IHZhbDsKKwl9 IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+YnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSkg eworCQlzdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiID0gdmFsOwogCX0gZWxzZSBpZiAoY29ubmVj dG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eSkgewogCQlyZXR1cm4gY29ubmVjdG9yLT5m dW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eShjb25uZWN0b3IsCiAJCQkJc3RhdGUsIHByb3BlcnR5 LCB2YWwpOwpAQCAtOTAxLDYgKzkwMyw4IEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkqdmFsID0gc3RhdGUtPm1h eF9yZXF1ZXN0ZWRfYnBjOwogCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT5wcml2 YWN5X3NjcmVlbl9zd19zdGF0ZV9wcm9wZXJ0eSkgewogCQkqdmFsID0gc3RhdGUtPnByaXZhY3lf c2NyZWVuX3N3X3N0YXRlOworCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT5icm9h ZGNhc3RfcmdiX3Byb3BlcnR5KSB7CisJCSp2YWwgPSBzdGF0ZS0+aGRtaS5icm9hZGNhc3Rfcmdi OwogCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewog CQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3Is CiAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKaW5kZXgg ZDk5NjFjY2U4MjQ1Li45MjliMGE5MTFmNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwpAQCAt MTE4Myw2ICsxMTgzLDI5IEBAIHN0YXRpYyBjb25zdCB1MzIgZHBfY29sb3JzcGFjZXMgPQogCUJJ VChEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBfQ1lDQykgfAogCUJJVChEUk1fTU9ERV9DT0xP UklNRVRSWV9CVDIwMjBfWUNDKTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVt X2xpc3QgYnJvYWRjYXN0X3JnYl9uYW1lc1tdID0geworCXsgRFJNX0hETUlfQlJPQURDQVNUX1JH Ql9BVVRPLCAiQXV0b21hdGljIiB9LAorCXsgRFJNX0hETUlfQlJPQURDQVNUX1JHQl9GVUxMLCAi RnVsbCIgfSwKKwl7IERSTV9IRE1JX0JST0FEQ0FTVF9SR0JfTElNSVRFRCwgIkxpbWl0ZWQgMTY6 MjM1IiB9LAorfTsKKworLyoKKyAqIGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3Jn Yl9uYW1lIC0gUmV0dXJuIGEgc3RyaW5nIGZvciBIRE1JIGNvbm5lY3RvciBSR0IgYnJvYWRjYXN0 IHNlbGVjdGlvbgorICogQGJyb2FkY2FzdF9yZ2I6IEJyb2FkY2FzdCBSR0Igc2VsZWN0aW9uIHRv IGNvbXB1dGUgbmFtZSBvZgorICoKKyAqIFJldHVybnM6IHRoZSBuYW1lIG9mIHRoZSBCcm9hZGNh c3QgUkdCIHNlbGVjdGlvbiwgb3IgTlVMTCBpZiB0aGUgdHlwZQorICogaXMgbm90IHZhbGlkLgor ICovCitjb25zdCBjaGFyICoKK2RybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9u YW1lKGVudW0gZHJtX2hkbWlfYnJvYWRjYXN0X3JnYiBicm9hZGNhc3RfcmdiKQoreworCWlmIChi cm9hZGNhc3RfcmdiID4gRFJNX0hETUlfQlJPQURDQVNUX1JHQl9MSU1JVEVEKQorCQlyZXR1cm4g TlVMTDsKKworCXJldHVybiBicm9hZGNhc3RfcmdiX25hbWVzW2Jyb2FkY2FzdF9yZ2JdLm5hbWU7 Cit9CitFWFBPUlRfU1lNQk9MKGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9u YW1lKTsKKwogLyoqCiAgKiBET0M6IHN0YW5kYXJkIGNvbm5lY3RvciBwcm9wZXJ0aWVzCiAgKgpA QCAtMTY1NSw2ICsxNjc4LDI2IEBAIEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9hdHRhY2hf ZHBfc3ViY29ubmVjdG9yX3Byb3BlcnR5KTsKIC8qKgogICogRE9DOiBIRE1JIGNvbm5lY3RvciBw cm9wZXJ0aWVzCiAgKgorICogQnJvYWRjYXN0IFJHQgorICogICAgICBJbmRpY2F0ZXMgdGhlIFJH QiBRdWFudGl6YXRpb24gUmFuZ2UgKEZ1bGwgdnMgTGltaXRlZCkgdXNlZC4KKyAqICAgICAgSW5m b2ZyYW1lcyB3aWxsIGJlIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8gdGhhdCB2YWx1ZS4KKyAqCisg KiAgICAgIFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxv d2luZzoKKyAqCisgKiAgICAgIEF1dG9tYXRpYzoKKyAqICAgICAgICAgICAgICBSR0IgUmFuZ2Ug aXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgbW9kZQorICogICAgICAgICAg ICAgIGFjY29yZGluZyB0byB0aGUgSERNSSBzcGVjaWZpY2F0aW9ucy4KKyAqCisgKiAgICAgIEZ1 bGw6CisgKiAgICAgICAgICAgICAgRnVsbCBSR0IgUmFuZ2UgaXMgZm9yY2VkLgorICoKKyAqICAg ICAgTGltaXRlZCAxNjoyMzU6CisgKiAgICAgICAgICAgICAgTGltaXRlZCBSR0IgUmFuZ2UgaXMg Zm9yY2VkLiBVbmxpa2UgdGhlIG5hbWUgc3VnZ2VzdHMsCisgKiAgICAgICAgICAgICAgdGhpcyB3 b3JrcyBmb3IgYW55IG51bWJlciBvZiBiaXRzLXBlci1jb21wb25lbnQuCisgKgorICogICAgICBE cml2ZXJzIGNhbiBzZXQgdXAgdGhpcyBwcm9wZXJ0eSBieSBjYWxsaW5nCisgKiAgICAgIGRybV9j b25uZWN0b3JfYXR0YWNoX2Jyb2FkY2FzdF9yZ2JfcHJvcGVydHkoKS4KKyAqCiAgKiBjb250ZW50 IHR5cGUgKEhETUkgc3BlY2lmaWMpOgogICoJSW5kaWNhdGVzIGNvbnRlbnQgdHlwZSBzZXR0aW5n IHRvIGJlIHVzZWQgaW4gSERNSSBpbmZvZnJhbWVzIHRvIGluZGljYXRlCiAgKgljb250ZW50IHR5 cGUgZm9yIHRoZSBleHRlcm5hbCBkZXZpY2UsIHNvIHRoYXQgaXQgYWRqdXN0cyBpdHMgZGlzcGxh eQpAQCAtMjUxNyw2ICsyNTYwLDM5IEBAIGludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9oZHJfb3V0 cHV0X21ldGFkYXRhX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uCiB9CiBFWFBP UlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX2hkcl9vdXRwdXRfbWV0YWRhdGFfcHJvcGVy dHkpOwogCisvKioKKyAqIGRybV9jb25uZWN0b3JfYXR0YWNoX2Jyb2FkY2FzdF9yZ2JfcHJvcGVy dHkgLSBhdHRhY2ggIkJyb2FkY2FzdCBSR0IiIHByb3BlcnR5CisgKiBAY29ubmVjdG9yOiBjb25u ZWN0b3IgdG8gYXR0YWNoIHRoZSBwcm9wZXJ0eSBvbi4KKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8g YWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgdGhlIFJHQiByYW5nZSBvbiBhIGNvbm5lY3RvcgorICoK KyAqIFJldHVybnM6CisgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1 cmUuCisgKi8KK2ludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CisKKwlw cm9wID0gY29ubmVjdG9yLT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5OworCWlmICghcHJvcCkgewor CQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01PREVfUFJPUF9FTlVN LAorCQkJCQkJIkJyb2FkY2FzdCBSR0IiLAorCQkJCQkJYnJvYWRjYXN0X3JnYl9uYW1lcywKKwkJ CQkJCUFSUkFZX1NJWkUoYnJvYWRjYXN0X3JnYl9uYW1lcykpOworCQlpZiAoIXByb3ApCisJCQly ZXR1cm4gLUVJTlZBTDsKKworCQljb25uZWN0b3ItPmJyb2FkY2FzdF9yZ2JfcHJvcGVydHkgPSBw cm9wOworCX0KKworCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2Us IHByb3AsCisJCQkJICAgRFJNX0hETUlfQlJPQURDQVNUX1JHQl9BVVRPKTsKKworCXJldHVybiAw OworfQorRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3By b3BlcnR5KTsKKwogLyoqCiAgKiBkcm1fY29ubmVjdG9yX2F0dGFjaF9jb2xvcnNwYWNlX3Byb3Bl cnR5IC0gYXR0YWNoICJDb2xvcnNwYWNlIiBwcm9wZXJ0eQogICogQGNvbm5lY3RvcjogY29ubmVj dG9yIHRvIGF0dGFjaCB0aGUgcHJvcGVydHkgb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvTWFrZWZpbGUKaW5kZXgg ZDYxODNiM2Q3Njg4Li5iMjlkZGZkOTA1OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZXN0cy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvTWFrZWZpbGUKQEAgLTQs NiArNCw3IEBAIG9iai0kKENPTkZJR19EUk1fS1VOSVRfVEVTVF9IRUxQRVJTKSArPSBcCiAJZHJt X2t1bml0X2hlbHBlcnMubwogCiBvYmotJChDT05GSUdfRFJNX0tVTklUX1RFU1QpICs9IFwKKwlk cm1fYXRvbWljX3N0YXRlX2hlbHBlcl90ZXN0Lm8gXAogCWRybV9idWRkeV90ZXN0Lm8gXAogCWRy bV9jbWRsaW5lX3BhcnNlcl90ZXN0Lm8gXAogCWRybV9jb25uZWN0b3JfdGVzdC5vIFwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZXN0cy9kcm1fYXRvbWljX3N0YXRlX2hlbHBlcl90ZXN0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2F0b21pY19zdGF0ZV9oZWxwZXJfdGVzdC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjFlNmY3OTZlZTEzCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rlc3RzL2RybV9hdG9taWNfc3RhdGVf aGVscGVyX3Rlc3QuYwpAQCAtMCwwICsxLDM3NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKKworLyoKKyAqIEt1bml0IHRlc3QgZm9yIGRybV9hdG9taWNfc3RhdGVfaGVs cGVyIGZ1bmN0aW9ucworICovCisKKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljX3VhcGkuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZWRpZC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9mb3VyY2MuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2t1bml0X2hlbHBlcnMuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX21hbmFnZWQuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0 YWJsZXMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgorCisjaW5jbHVkZSA8 ZHJtL2RybV9wcmludC5oPgorI2luY2x1ZGUgIi4uL2RybV9jcnRjX2ludGVybmFsLmgiCisKKyNp bmNsdWRlIDxrdW5pdC90ZXN0Lmg+CisKKyNpbmNsdWRlICJkcm1fa3VuaXRfZWRpZC5oIgorCitz dHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfcHJpdiB7CisJc3RydWN0IGRy bV9kZXZpY2UgZHJtOworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciBjb25uZWN0b3I7CisKKwljb25zdCBjaGFyICpjdXJyZW50X2VkaWQ7CisJc2l6ZV90IGN1 cnJlbnRfZWRpZF9sZW47Cit9OworCisjZGVmaW5lIGNvbm5lY3Rvcl90b19wcml2KGMpIFwKKwlj b250YWluZXJfb2ZfY29uc3QoYywgc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9o ZG1pX3ByaXYsIGNvbm5lY3RvcikKKworc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpm aW5kX3ByZWZlcnJlZF9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlLCAqcHJlZmVycmVkOworCisJbXV0ZXhfbG9jaygmZHJtLT5tb2RlX2Nv bmZpZy5tdXRleCk7CisJcHJlZmVycmVkID0gbGlzdF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5t b2Rlcywgc3RydWN0IGRybV9kaXNwbGF5X21vZGUsIGhlYWQpOworCWxpc3RfZm9yX2VhY2hfZW50 cnkobW9kZSwgJmNvbm5lY3Rvci0+bW9kZXMsIGhlYWQpCisJCWlmIChtb2RlLT50eXBlICYgRFJN X01PREVfVFlQRV9QUkVGRVJSRUQpCisJCQlwcmVmZXJyZWQgPSBtb2RlOworCW11dGV4X3VubG9j aygmZHJtLT5tb2RlX2NvbmZpZy5tdXRleCk7CisKKwlyZXR1cm4gcHJlZmVycmVkOworfQorCitz dGF0aWMgaW50IGxpZ2h0X3VwX2Nvbm5lY3RvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkgICAg ICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAorCQkJICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRj LAorCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJICAgICAgc3RydWN0IGRybV9tb2Rlc2V0 X2FjcXVpcmVfY3R4ICpjdHgpCit7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgcmV0OworCisJc3RhdGUgPSBkcm1fa3VuaXRfaGVs cGVyX2F0b21pY19zdGF0ZV9hbGxvYyh0ZXN0LCBkcm0sIGN0eCk7CisJS1VOSVRfQVNTRVJUX05P VF9FUlJfT1JfTlVMTCh0ZXN0LCBzdGF0ZSk7CisKKwljb25uX3N0YXRlID0gZHJtX2F0b21pY19n ZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOworCUtVTklUX0FTU0VSVF9OT1Rf RVJSX09SX05VTEwodGVzdCwgY29ubl9zdGF0ZSk7CisKKwlyZXQgPSBkcm1fYXRvbWljX3NldF9j cnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwgY3J0Yyk7CisJS1VOSVRfRVhQRUNUX0VRKHRl c3QsIHJldCwgMCk7CisKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShz dGF0ZSwgY3J0Yyk7CisJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBjcnRjX3N0 YXRlKTsKKworCXJldCA9IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoY3J0Y19zdGF0ZSwg bW9kZSk7CisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHJldCwgMCk7CisKKwljcnRjX3N0YXRlLT5l bmFibGUgPSB0cnVlOworCWNydGNfc3RhdGUtPmFjdGl2ZSA9IHRydWU7CisKKwlyZXQgPSBkcm1f YXRvbWljX2NvbW1pdChzdGF0ZSk7CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfY29ubmVjdG9yX2VkaWQoc3RydWN0IGt1 bml0ICp0ZXN0LCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJICAgICAgY29u c3QgY2hhciAqZWRpZCwgc2l6ZV90IGVkaWRfbGVuKQoreworCXN0cnVjdCBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfaGRtaV9wcml2ICpwcml2ID0KKwkJY29ubmVjdG9yX3RvX3ByaXYoY29u bmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gY29ubmVjdG9yLT5kZXY7CisJaW50 IHJldDsKKworCXByaXYtPmN1cnJlbnRfZWRpZCA9IGVkaWQ7CisJcHJpdi0+Y3VycmVudF9lZGlk X2xlbiA9IGVkaWRfbGVuOworCisJbXV0ZXhfbG9jaygmZHJtLT5tb2RlX2NvbmZpZy5tdXRleCk7 CisJcmV0ID0gY29ubmVjdG9yLT5mdW5jcy0+ZmlsbF9tb2Rlcyhjb25uZWN0b3IsIDQwOTYsIDQw OTYpOworCW11dGV4X3VubG9jaygmZHJtLT5tb2RlX2NvbmZpZy5tdXRleCk7CisJS1VOSVRfQVNT RVJUX0dUKHRlc3QsIHJldCwgMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkdW1t eV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX3ByaXYgKnByaXYgPQor CQljb25uZWN0b3JfdG9fcHJpdihjb25uZWN0b3IpOworCWNvbnN0IHN0cnVjdCBkcm1fZWRpZCAq ZWRpZDsKKwl1bnNpZ25lZCBpbnQgbnVtX21vZGVzOworCisJZWRpZCA9IGRybV9lZGlkX2FsbG9j KHByaXYtPmN1cnJlbnRfZWRpZCwgcHJpdi0+Y3VycmVudF9lZGlkX2xlbik7CisJaWYgKCFlZGlk KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWRybV9lZGlkX2Nvbm5lY3Rvcl91cGRhdGUoY29ubmVj dG9yLCBlZGlkKTsKKwludW1fbW9kZXMgPSBkcm1fZWRpZF9jb25uZWN0b3JfYWRkX21vZGVzKGNv bm5lY3Rvcik7CisKKwlkcm1fZWRpZF9mcmVlKGVkaWQpOworCisJcmV0dXJuIG51bV9tb2RlczsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBkdW1t eV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sJPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfaGRtaV9jaGVjaywKKwkuZ2V0X21vZGVzCT0gZHVtbXlfY29ubmVj dG9yX2dldF9tb2RlcywKK307CisKK3N0YXRpYyB2b2lkIGR1bW15X2hkbWlfY29ubmVjdG9yX3Jl c2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0KGNvbm5lY3Rvcik7CisJX19kcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfaGRtaV9yZXNldChjb25uZWN0b3IsIGNvbm5lY3Rvci0+c3RhdGUpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgZHVtbXlfY29ubmVjdG9yX2Z1bmNz ID0geworCS5hdG9taWNfZGVzdHJveV9zdGF0ZQk9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kZXN0cm95X3N0YXRlLAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlCT0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuZmlsbF9tb2RlcwkJPSBkcm1faGVs cGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLnJlc2V0CQkJPSBkdW1teV9oZG1p X2Nvbm5lY3Rvcl9yZXNldCwKK307CisKK3N0YXRpYworc3RydWN0IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9oZG1pX3ByaXYgKgorZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlf aW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9oZG1pX3ByaXYgKnByaXY7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47CisJ c3RydWN0IGRybV9lbmNvZGVyICplbmM7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlzdHJ1 Y3QgZGV2aWNlICpkZXY7CisJaW50IHJldDsKKworCWRldiA9IGRybV9rdW5pdF9oZWxwZXJfYWxs b2NfZGV2aWNlKHRlc3QpOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZGV2 KTsKKworCXByaXYgPSBkcm1fa3VuaXRfaGVscGVyX2FsbG9jX2RybV9kZXZpY2UodGVzdCwgZGV2 LAorCQkJCQkJIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfaGRtaV9wcml2LCBk cm0sCisJCQkJCQkgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDKTsKKwlLVU5JVF9BU1NF UlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHByaXYpOworCXRlc3QtPnByaXYgPSBwcml2OworCisJ ZHJtID0gJnByaXYtPmRybTsKKwlwcml2LT5wbGFuZSA9IGRybV9rdW5pdF9oZWxwZXJfY3JlYXRl X3ByaW1hcnlfcGxhbmUodGVzdCwgZHJtLAorCQkJCQkJCSAgICBOVUxMLAorCQkJCQkJCSAgICBO VUxMLAorCQkJCQkJCSAgICBOVUxMLCAwLAorCQkJCQkJCSAgICBOVUxMKTsKKwlLVU5JVF9BU1NF UlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHByaXYtPnBsYW5lKTsKKworCXByaXYtPmNydGMgPSBk cm1fa3VuaXRfaGVscGVyX2NyZWF0ZV9jcnRjKHRlc3QsIGRybSwKKwkJCQkJCSAgcHJpdi0+cGxh bmUsIE5VTEwsCisJCQkJCQkgIE5VTEwsCisJCQkJCQkgIE5VTEwpOworCUtVTklUX0FTU0VSVF9O T1RfRVJSX09SX05VTEwodGVzdCwgcHJpdi0+Y3J0Yyk7CisKKwllbmMgPSAmcHJpdi0+ZW5jb2Rl cjsKKwlyZXQgPSBkcm1tX2VuY29kZXJfaW5pdChkcm0sIGVuYywgTlVMTCwgRFJNX01PREVfRU5D T0RFUl9UTURTLCBOVUxMKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsKKworCWVu Yy0+cG9zc2libGVfY3J0Y3MgPSBkcm1fY3J0Y19tYXNrKHByaXYtPmNydGMpOworCisJY29ubiA9 ICZwcml2LT5jb25uZWN0b3I7CisJcmV0ID0gZHJtbV9jb25uZWN0b3JfaGRtaV9pbml0KGRybSwg Y29ubiwKKwkJCQkgICAgICAgJmR1bW15X2Nvbm5lY3Rvcl9mdW5jcywKKwkJCQkgICAgICAgRFJN X01PREVfQ09OTkVDVE9SX0hETUlBLAorCQkJCSAgICAgICBOVUxMKTsKKwlLVU5JVF9BU1NFUlRf RVEodGVzdCwgcmV0LCAwKTsKKworCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uLCAmZHVt bXlfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rl cihjb25uLCBlbmMpOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwlyZXQgPSBz ZXRfY29ubmVjdG9yX2VkaWQodGVzdCwgY29ubiwKKwkJCQkgdGVzdF9lZGlkX2hkbWlfMTA4MHBf cmdiX21heF8yMDBtaHosCisJCQkJIEFSUkFZX1NJWkUodGVzdF9lZGlkX2hkbWlfMTA4MHBfcmdi X21heF8yMDBtaHopKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsKKworCXJldHVy biBwcml2OworfQorCisvKgorICogVGVzdCB0aGF0IGlmIHdlIGNoYW5nZSB0aGUgUkdCIHF1YW50 aXphdGlvbiBwcm9wZXJ0eSB0byBhIGRpZmZlcmVudAorICogdmFsdWUsIHdlIHRyaWdnZXIgYSBt b2RlIGNoYW5nZSBvbiB0aGUgY29ubmVjdG9yJ3MgQ1JUQywgd2hpY2ggd2lsbAorICogaW4gdHVy biBkaXNhYmxlL2VuYWJsZSB0aGUgY29ubmVjdG9yLgorICovCitzdGF0aWMgdm9pZCBkcm1fdGVz dF9jaGVja19icm9hZGNhc3RfcmdiX2NydGNfbW9kZV9jaGFuZ2VkKHN0cnVjdCBrdW5pdCAqdGVz dCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfcHJpdiAqcHJp djsKKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eDsKKwlzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm5ld19jb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK KwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKnByZWZlcnJlZDsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlpbnQgcmV0OworCisJcHJp diA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX2luaXQodGVzdCk7CisJS1VOSVRf QVNTRVJUX05PVF9OVUxMKHRlc3QsIHByaXYpOworCisJY3R4ID0gZHJtX2t1bml0X2hlbHBlcl9h Y3F1aXJlX2N0eF9hbGxvYyh0ZXN0KTsKKwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRl c3QsIGN0eCk7CisKKwljb25uID0gJnByaXYtPmNvbm5lY3RvcjsKKwlwcmVmZXJyZWQgPSBmaW5k X3ByZWZlcnJlZF9tb2RlKGNvbm4pOworCUtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBwcmVm ZXJyZWQpOworCisJZHJtID0gJnByaXYtPmRybTsKKwljcnRjID0gcHJpdi0+Y3J0YzsKKwlyZXQg PSBsaWdodF91cF9jb25uZWN0b3IodGVzdCwgZHJtLCBjcnRjLCBjb25uLCBwcmVmZXJyZWQsIGN0 eCk7CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisKKwlzdGF0ZSA9IGRybV9rdW5p dF9oZWxwZXJfYXRvbWljX3N0YXRlX2FsbG9jKHRlc3QsIGRybSwgY3R4KTsKKwlLVU5JVF9BU1NF UlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHN0YXRlKTsKKworCW5ld19jb25uX3N0YXRlID0gZHJt X2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uKTsKKwlLVU5JVF9BU1NFUlRf Tk9UX0VSUl9PUl9OVUxMKHRlc3QsIG5ld19jb25uX3N0YXRlKTsKKworCW9sZF9jb25uX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubik7CisJS1VO SVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBvbGRfY29ubl9zdGF0ZSk7CisKKwluZXdf Y29ubl9zdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiID0gRFJNX0hETUlfQlJPQURDQVNUX1JHQl9G VUxMOworCisJS1VOSVRfQVNTRVJUX05FKHRlc3QsCisJCQlvbGRfY29ubl9zdGF0ZS0+aGRtaS5i cm9hZGNhc3RfcmdiLAorCQkJbmV3X2Nvbm5fc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYik7CisK KwlyZXQgPSBkcm1fYXRvbWljX2NoZWNrX29ubHkoc3RhdGUpOworCUtVTklUX0FTU0VSVF9FUSh0 ZXN0LCByZXQsIDApOworCisJbmV3X2Nvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY29u bmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uKTsKKwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxM KHRlc3QsIG5ld19jb25uX3N0YXRlKTsKKwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgbmV3X2Nvbm5f c3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYiwgRFJNX0hETUlfQlJPQURDQVNUX1JHQl9GVUxMKTsK KworCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0 Yyk7CisJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBjcnRjX3N0YXRlKTsKKwlL VU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpOworfQorCisv KgorICogVGVzdCB0aGF0IGlmIHdlIHNldCB0aGUgUkdCIHF1YW50aXphdGlvbiBwcm9wZXJ0eSB0 byB0aGUgc2FtZSB2YWx1ZSwKKyAqIHdlIGRvbid0IHRyaWdnZXIgYSBtb2RlIGNoYW5nZSBvbiB0 aGUgY29ubmVjdG9yJ3MgQ1JUQyBhbmQgbGVhdmUgdGhlCisgKiBjb25uZWN0b3IgdW5hZmZlY3Rl ZC4KKyAqLworc3RhdGljIHZvaWQgZHJtX3Rlc3RfY2hlY2tfYnJvYWRjYXN0X3JnYl9jcnRjX21v ZGVfbm90X2NoYW5nZWQoc3RydWN0IGt1bml0ICp0ZXN0KQoreworCXN0cnVjdCBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfaGRtaV9wcml2ICpwcml2OworCXN0cnVjdCBkcm1fbW9kZXNldF9h Y3F1aXJlX2N0eCAqY3R4OworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9z dGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7CisJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqcHJlZmVycmVkOworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJc3RydWN0IGRy bV9jcnRjICpjcnRjOworCWludCByZXQ7CisKKwlwcml2ID0gZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2hkbWlfaW5pdCh0ZXN0KTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcHJp dik7CisKKwljdHggPSBkcm1fa3VuaXRfaGVscGVyX2FjcXVpcmVfY3R4X2FsbG9jKHRlc3QpOwor CUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgY3R4KTsKKworCWNvbm4gPSAmcHJp di0+Y29ubmVjdG9yOworCXByZWZlcnJlZCA9IGZpbmRfcHJlZmVycmVkX21vZGUoY29ubik7CisJ S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIHByZWZlcnJlZCk7CisKKwlkcm0gPSAmcHJpdi0+ ZHJtOworCWNydGMgPSBwcml2LT5jcnRjOworCXJldCA9IGxpZ2h0X3VwX2Nvbm5lY3Rvcih0ZXN0 LCBkcm0sIGNydGMsIGNvbm4sIHByZWZlcnJlZCwgY3R4KTsKKwlLVU5JVF9BU1NFUlRfRVEodGVz dCwgcmV0LCAwKTsKKworCXN0YXRlID0gZHJtX2t1bml0X2hlbHBlcl9hdG9taWNfc3RhdGVfYWxs b2ModGVzdCwgZHJtLCBjdHgpOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwg c3RhdGUpOworCisJbmV3X2Nvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3Rh dGUoc3RhdGUsIGNvbm4pOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgbmV3 X2Nvbm5fc3RhdGUpOworCisJb2xkX2Nvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9vbGRfY29u bmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uKTsKKwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxM KHRlc3QsIG9sZF9jb25uX3N0YXRlKTsKKworCW5ld19jb25uX3N0YXRlLT5oZG1pLmJyb2FkY2Fz dF9yZ2IgPSBvbGRfY29ubl9zdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiOworCisJcmV0ID0gZHJt X2F0b21pY19jaGVja19vbmx5KHN0YXRlKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAw KTsKKworCW9sZF9jb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0 ZShzdGF0ZSwgY29ubik7CisJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBvbGRf Y29ubl9zdGF0ZSk7CisKKwluZXdfY29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jb25u ZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm4pOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwo dGVzdCwgbmV3X2Nvbm5fc3RhdGUpOworCisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsCisJCQlvbGRf Y29ubl9zdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiLAorCQkJbmV3X2Nvbm5fc3RhdGUtPmhkbWku YnJvYWRjYXN0X3JnYik7CisKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNf c3RhdGUoc3RhdGUsIGNydGMpOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwg Y3J0Y19zdGF0ZSk7CisJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGNydGNfc3RhdGUtPm1vZGVf Y2hhbmdlZCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfaGRtaV9jaGVja190ZXN0c1tdID0geworCUtVTklUX0NBU0UoZHJtX3Rlc3Rf Y2hlY2tfYnJvYWRjYXN0X3JnYl9jcnRjX21vZGVfY2hhbmdlZCksCisJS1VOSVRfQ0FTRShkcm1f dGVzdF9jaGVja19icm9hZGNhc3RfcmdiX2NydGNfbW9kZV9ub3RfY2hhbmdlZCksCisJeyB9Cit9 OworCitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9oZG1pX2NoZWNrX3Rlc3Rfc3VpdGUgPSB7CisJLm5hbWUJCT0gImRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9oZG1pX2NoZWNrIiwKKwkudGVzdF9jYXNlcwk9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9oZG1pX2NoZWNrX3Rlc3RzLAorfTsKKworLyoKKyAqIFRlc3QgdGhhdCB0aGUg dmFsdWUgb2YgdGhlIEJyb2FkY2FzdCBSR0IgcHJvcGVydHkgb3V0IG9mIHJlc2V0IGlzIHNldAor ICogdG8gYXV0by4KKyAqLworc3RhdGljIHZvaWQgZHJtX3Rlc3RfY2hlY2tfYnJvYWRjYXN0X3Jn Yl92YWx1ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9oZG1pX3ByaXYgKnByaXY7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47CisKKwlwcml2ID0gZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfaW5pdCh0ZXN0KTsKKwlLVU5JVF9BU1NFUlRf Tk9UX05VTEwodGVzdCwgcHJpdik7CisKKwljb25uID0gJnByaXYtPmNvbm5lY3RvcjsKKwljb25u X3N0YXRlID0gY29ubi0+c3RhdGU7CisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNvbm5fc3RhdGUt PmhkbWkuYnJvYWRjYXN0X3JnYiwgRFJNX0hETUlfQlJPQURDQVNUX1JHQl9BVVRPKTsKK30KKwor c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1p X3Jlc2V0X3Rlc3RzW10gPSB7CisJS1VOSVRfQ0FTRShkcm1fdGVzdF9jaGVja19icm9hZGNhc3Rf cmdiX3ZhbHVlKSwKKwl7IH0KK307CisKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfcmVzZXRfdGVzdF9zdWl0ZSA9IHsKKwkubmFtZQkJ PSAiZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfcmVzZXQiLAorCS50ZXN0X2Nhc2Vz IAk9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX3Jlc2V0X3Rlc3RzLAorfTsKKwor a3VuaXRfdGVzdF9zdWl0ZXMoCisJJmRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX2No ZWNrX3Rlc3Rfc3VpdGUsCisJJmRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX3Jlc2V0 X3Rlc3Rfc3VpdGUsCispOworCitNT0RVTEVfQVVUSE9SKCJNYXhpbWUgUmlwYXJkIDxtcmlwYXJk QGtlcm5lbC5vcmc+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2Nvbm5lY3Rvcl90ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v dGVzdHMvZHJtX2Nvbm5lY3Rvcl90ZXN0LmMKaW5kZXggOGYwNzBjYWNhYjNiLi40MWQzM2RlYTMw YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZXN0cy9kcm1fY29ubmVjdG9yX3Rlc3Qu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2Nvbm5lY3Rvcl90ZXN0LmMKQEAgLTEy LDYgKzEyLDggQEAKIAogI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KIAorI2luY2x1ZGUgIi4uL2Ry bV9jcnRjX2ludGVybmFsLmgiCisKIHN0cnVjdCBkcm1fY29ubmVjdG9yX2luaXRfcHJpdiB7CiAJ c3RydWN0IGRybV9kZXZpY2UgZHJtOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsK QEAgLTM1NywxMCArMzU5LDEyMyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIGRybV9nZXRf dHZfbW9kZV9mcm9tX25hbWVfdGVzdF9zdWl0ZSA9IHsKIAkudGVzdF9jYXNlcyA9IGRybV9nZXRf dHZfbW9kZV9mcm9tX25hbWVfdGVzdHMsCiB9OwogCitzdHJ1Y3QgZHJtX2hkbWlfY29ubmVjdG9y X2dldF9icm9hZGNhc3RfcmdiX25hbWVfdGVzdCB7CisJdW5zaWduZWQgaW50IGtpbmQ7CisJY29u c3QgY2hhciAqZXhwZWN0ZWRfbmFtZTsKK307CisKKyNkZWZpbmUgQlJPQURDQVNUX1JHQl9URVNU KF9raW5kLCBfbmFtZSkJXAorCXsJCQkJCVwKKwkJLmtpbmQgPSBfa2luZCwJCQlcCisJCS5leHBl Y3RlZF9uYW1lID0gX25hbWUsCQlcCisJfQorCitzdGF0aWMgdm9pZCBkcm1fdGVzdF9kcm1faGRt aV9jb25uZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFtZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCit7 CisJY29uc3Qgc3RydWN0IGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1l X3Rlc3QgKnBhcmFtcyA9CisJCXRlc3QtPnBhcmFtX3ZhbHVlOworCisJS1VOSVRfRVhQRUNUX1NU UkVRKHRlc3QsCisJCQkgICBkcm1faGRtaV9jb25uZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFt ZShwYXJhbXMtPmtpbmQpLAorCQkJICAgcGFyYW1zLT5leHBlY3RlZF9uYW1lKTsKK30KKworc3Rh dGljIGNvbnN0CitzdHJ1Y3QgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25h bWVfdGVzdAorZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWVfdmFsaWRf dGVzdHNbXSA9IHsKKwlCUk9BRENBU1RfUkdCX1RFU1QoRFJNX0hETUlfQlJPQURDQVNUX1JHQl9B VVRPLCAiQXV0b21hdGljIiksCisJQlJPQURDQVNUX1JHQl9URVNUKERSTV9IRE1JX0JST0FEQ0FT VF9SR0JfRlVMTCwgIkZ1bGwiKSwKKwlCUk9BRENBU1RfUkdCX1RFU1QoRFJNX0hETUlfQlJPQURD QVNUX1JHQl9MSU1JVEVELCAiTGltaXRlZCAxNjoyMzUiKSwKK307CisKK3N0YXRpYyB2b2lkCitk cm1faGRtaV9jb25uZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFtZV92YWxpZF9kZXNjKGNvbnN0 IHN0cnVjdCBkcm1faGRtaV9jb25uZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFtZV90ZXN0ICp0 LAorCQkJCQkJICAgICBjaGFyICpkZXNjKQoreworCXNwcmludGYoZGVzYywgIiVzIiwgdC0+ZXhw ZWN0ZWRfbmFtZSk7Cit9CisKK0tVTklUX0FSUkFZX1BBUkFNKGRybV9oZG1pX2Nvbm5lY3Rvcl9n ZXRfYnJvYWRjYXN0X3JnYl9uYW1lX3ZhbGlkLAorCQkgIGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRf YnJvYWRjYXN0X3JnYl9uYW1lX3ZhbGlkX3Rlc3RzLAorCQkgIGRybV9oZG1pX2Nvbm5lY3Rvcl9n ZXRfYnJvYWRjYXN0X3JnYl9uYW1lX3ZhbGlkX2Rlc2MpOworCitzdGF0aWMgdm9pZCBkcm1fdGVz dF9kcm1faGRtaV9jb25uZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFtZV9pbnZhbGlkKHN0cnVj dCBrdW5pdCAqdGVzdCkKK3sKKwlLVU5JVF9FWFBFQ1RfTlVMTCh0ZXN0LCBkcm1faGRtaV9jb25u ZWN0b3JfZ2V0X2Jyb2FkY2FzdF9yZ2JfbmFtZSgzKSk7Cit9OworCitzdGF0aWMgc3RydWN0IGt1 bml0X2Nhc2UgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWVfdGVzdHNb XSA9IHsKKwlLVU5JVF9DQVNFX1BBUkFNKGRybV90ZXN0X2RybV9oZG1pX2Nvbm5lY3Rvcl9nZXRf YnJvYWRjYXN0X3JnYl9uYW1lLAorCQkJIGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0 X3JnYl9uYW1lX3ZhbGlkX2dlbl9wYXJhbXMpLAorCUtVTklUX0NBU0UoZHJtX3Rlc3RfZHJtX2hk bWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWVfaW52YWxpZCksCisJeyB9Cit9Owor CitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRj YXN0X3JnYl9uYW1lX3Rlc3Rfc3VpdGUgPSB7CisJLm5hbWUgPSAiZHJtX2hkbWlfY29ubmVjdG9y X2dldF9icm9hZGNhc3RfcmdiX25hbWUiLAorCS50ZXN0X2Nhc2VzID0gZHJtX2hkbWlfY29ubmVj dG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWVfdGVzdHMsCit9OworCitzdGF0aWMgdm9pZCBkcm1f dGVzdF9kcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5KHN0cnVjdCBr dW5pdCAqdGVzdCkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXYgKnByaXYgPSB0 ZXN0LT5wcml2OworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmcHJpdi0+Y29u bmVjdG9yOworCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CisJaW50IHJldDsKKworCXJldCA9 IGRybW1fY29ubmVjdG9yX2luaXQoJnByaXYtPmRybSwgY29ubmVjdG9yLAorCQkJCSAgJmR1bW15 X2Z1bmNzLAorCQkJCSAgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBLAorCQkJCSAgJnByaXYtPmRk Yyk7CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisKKwlyZXQgPSBkcm1fY29ubmVj dG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5KGNvbm5lY3Rvcik7CisJS1VOSVRfQVNT RVJUX0VRKHRlc3QsIHJldCwgMCk7CisKKwlwcm9wID0gY29ubmVjdG9yLT5icm9hZGNhc3Rfcmdi X3Byb3BlcnR5OworCUtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBwcm9wKTsKKwlLVU5JVF9F WFBFQ1RfTk9UX05VTEwodGVzdCwgZHJtX21vZGVfb2JqX2ZpbmRfcHJvcF9pZCgmY29ubmVjdG9y LT5iYXNlLCBwcm9wLT5iYXNlLmlkKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRybV90ZXN0X2RybV9j b25uZWN0b3JfYXR0YWNoX2Jyb2FkY2FzdF9yZ2JfcHJvcGVydHlfaGRtaV9jb25uZWN0b3Ioc3Ry dWN0IGt1bml0ICp0ZXN0KQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yX2luaXRfcHJpdiAqcHJp diA9IHRlc3QtPnByaXY7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZwcml2 LT5jb25uZWN0b3I7CisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKKwlpbnQgcmV0OworCisJ cmV0ID0gZHJtbV9jb25uZWN0b3JfaGRtaV9pbml0KCZwcml2LT5kcm0sIGNvbm5lY3RvciwKKwkJ CQkgICAgICAgJmR1bW15X2Z1bmNzLAorCQkJCSAgICAgICBEUk1fTU9ERV9DT05ORUNUT1JfSERN SUEsCisJCQkJICAgICAgICZwcml2LT5kZGMpOworCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCByZXQs IDApOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9wZXJ0 eShjb25uZWN0b3IpOworCUtVTklUX0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOworCisJcHJvcCA9 IGNvbm5lY3Rvci0+YnJvYWRjYXN0X3JnYl9wcm9wZXJ0eTsKKwlLVU5JVF9BU1NFUlRfTk9UX05V TEwodGVzdCwgcHJvcCk7CisJS1VOSVRfRVhQRUNUX05PVF9OVUxMKHRlc3QsIGRybV9tb2RlX29i al9maW5kX3Byb3BfaWQoJmNvbm5lY3Rvci0+YmFzZSwgcHJvcC0+YmFzZS5pZCkpOworfQorCitz dGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfYnJvYWRjYXN0X3Jn Yl9wcm9wZXJ0eV90ZXN0c1tdID0geworCUtVTklUX0NBU0UoZHJtX3Rlc3RfZHJtX2Nvbm5lY3Rv cl9hdHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSksCisJS1VOSVRfQ0FTRShkcm1fdGVzdF9k cm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5X2hkbWlfY29ubmVjdG9y KSwKKwl7IH0KK307CisKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZHJtX2Nvbm5lY3Rvcl9h dHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eV90ZXN0X3N1aXRlID0geworCS5uYW1lID0gImRy bV9jb25uZWN0b3JfYXR0YWNoX2Jyb2FkY2FzdF9yZ2JfcHJvcGVydHkiLAorCS5pbml0ID0gZHJt X3Rlc3RfY29ubmVjdG9yX2luaXQsCisJLnRlc3RfY2FzZXMgPSBkcm1fY29ubmVjdG9yX2F0dGFj aF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5X3Rlc3RzLAorfTsKKwoga3VuaXRfdGVzdF9zdWl0ZXMo CiAJJmRybW1fY29ubmVjdG9yX2hkbWlfaW5pdF90ZXN0X3N1aXRlLAogCSZkcm1tX2Nvbm5lY3Rv cl9pbml0X3Rlc3Rfc3VpdGUsCi0JJmRybV9nZXRfdHZfbW9kZV9mcm9tX25hbWVfdGVzdF9zdWl0 ZQorCSZkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5X3Rlc3Rfc3Vp dGUsCisJJmRybV9nZXRfdHZfbW9kZV9mcm9tX25hbWVfdGVzdF9zdWl0ZSwKKwkmZHJtX2hkbWlf Y29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWVfdGVzdF9zdWl0ZQogKTsKIAogTU9EVUxF X0FVVEhPUigiTWF4aW1lIFJpcGFyZCA8bWF4aW1lQGNlcm5vLnRlY2g+Iik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2t1bml0X2VkaWQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS90ZXN0cy9kcm1fa3VuaXRfZWRpZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMmJiYTMxNmRlMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L3Rlc3RzL2RybV9rdW5pdF9lZGlkLmgKQEAgLTAsMCArMSwxMDYgQEAKKyNpZm5kZWYgRFJNX0tV TklUX0VESURfSF8KKyNkZWZpbmUgRFJNX0tVTklUX0VESURfSF8KKworLyoKKyAqIGVkaWQtZGVj b2RlIChoZXgpOgorICoKKyAqIDAwIGZmIGZmIGZmIGZmIGZmIGZmIDAwIDMxIGQ4IDJhIDAwIDAw IDAwIDAwIDAwCisgKiAwMCAyMSAwMSAwMyA4MSBhMCA1YSA3OCAwMiAwMCAwMCAwMCAwMCAwMCAw MCAwMAorICogMDAgMDAgMDAgMjAgMDAgMDAgMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEK KyAqIDAxIDAxIDAxIDAxIDAxIDAxIDAyIDNhIDgwIDE4IDcxIDM4IDJkIDQwIDU4IDJjCisgKiA0 NSAwMCA0MCA4NCA2MyAwMCAwMCAxZSAwMCAwMCAwMCBmYyAwMCA1NCA2NSA3MworICogNzQgMjAg NDUgNDQgNDkgNDQgMGEgMjAgMjAgMjAgMDAgMDAgMDAgZmQgMDAgMzIKKyAqIDQ2IDFlIDQ2IDBm IDAwIDBhIDIwIDIwIDIwIDIwIDIwIDIwIDAwIDAwIDAwIDEwCisgKiAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSA5MgorICoKKyAqIDAyIDAzIDFiIDgxIGUzIDA1 IDAwIDIwIDQxIDEwIGUyIDAwIDRhIDZkIDAzIDBjCisgKiAwMCAxMiAzNCAwMCAyOCAyMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMAorICogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAKKyAqIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwCisgKiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMAorICogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAKKyAqIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw CisgKiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBkMAorICoK KyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBCbG9jayAwLCBCYXNlIEVESUQ6CisgKiAgIEVE SUQgU3RydWN0dXJlIFZlcnNpb24gJiBSZXZpc2lvbjogMS4zCisgKiAgIFZlbmRvciAmIFByb2R1 Y3QgSWRlbnRpZmljYXRpb246CisgKiAgICAgTWFudWZhY3R1cmVyOiBMTlgKKyAqICAgICBNb2Rl bDogNDIKKyAqICAgICBNYWRlIGluOiAyMDIzCisgKiAgIEJhc2ljIERpc3BsYXkgUGFyYW1ldGVy cyAmIEZlYXR1cmVzOgorICogICAgIERpZ2l0YWwgZGlzcGxheQorICogICAgIERGUCAxLnggY29t cGF0aWJsZSBUTURTCisgKiAgICAgTWF4aW11bSBpbWFnZSBzaXplOiAxNjAgY20geCA5MCBjbQor ICogICAgIEdhbW1hOiAyLjIwCisgKiAgICAgTW9ub2Nocm9tZSBvciBncmF5c2NhbGUgZGlzcGxh eQorICogICAgIEZpcnN0IGRldGFpbGVkIHRpbWluZyBpcyB0aGUgcHJlZmVycmVkIHRpbWluZwor ICogICBDb2xvciBDaGFyYWN0ZXJpc3RpY3M6CisgKiAgICAgUmVkICA6IDAuMDAwMCwgMC4wMDAw CisgKiAgICAgR3JlZW46IDAuMDAwMCwgMC4wMDAwCisgKiAgICAgQmx1ZSA6IDAuMDAwMCwgMC4w MDAwCisgKiAgICAgV2hpdGU6IDAuMDAwMCwgMC4wMDAwCisgKiAgIEVzdGFibGlzaGVkIFRpbWlu Z3MgSSAmIElJOgorICogICAgIERNVCAweDA0OiAgIDY0MHg0ODAgICAgNTkuOTQwNDc2IEh6ICAg NDozICAgICAzMS40Njkga0h6ICAgICAyNS4xNzUwMDAgTUh6CisgKiAgIFN0YW5kYXJkIFRpbWlu Z3M6IG5vbmUKKyAqICAgRGV0YWlsZWQgVGltaW5nIERlc2NyaXB0b3JzOgorICogICAgIERURCAx OiAgMTkyMHgxMDgwICAgNjAuMDAwMDAwIEh6ICAxNjo5ICAgICA2Ny41MDAga0h6ICAgIDE0OC41 MDAwMDAgTUh6ICgxNjAwIG1tIHggOTAwIG1tKQorICogICAgICAgICAgICAgICAgICBIZnJvbnQg ICA4OCBIc3luYyAgNDQgSGJhY2sgIDE0OCBIcG9sIFAKKyAqICAgICAgICAgICAgICAgICAgVmZy b250ICAgIDQgVnN5bmMgICA1IFZiYWNrICAgMzYgVnBvbCBQCisgKiAgICAgRGlzcGxheSBQcm9k dWN0IE5hbWU6ICdUZXN0IEVESUQnCisgKiAgICAgRGlzcGxheSBSYW5nZSBMaW1pdHM6CisgKiAg ICAgICBNb25pdG9yIHJhbmdlcyAoR1RGKTogNTAtNzAgSHogViwgMzAtNzAga0h6IEgsIG1heCBk b3RjbG9jayAxNTAgTUh6CisgKiAgICAgRHVtbXkgRGVzY3JpcHRvcjoKKyAqICAgRXh0ZW5zaW9u IGJsb2NrczogMQorICogQ2hlY2tzdW06IDB4OTIKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tCisg KgorICogQmxvY2sgMSwgQ1RBLTg2MSBFeHRlbnNpb24gQmxvY2s6CisgKiAgIFJldmlzaW9uOiAz CisgKiAgIFVuZGVyc2NhbnMgSVQgVmlkZW8gRm9ybWF0cyBieSBkZWZhdWx0CisgKiAgIE5hdGl2 ZSBkZXRhaWxlZCBtb2RlczogMQorICogICBDb2xvcmltZXRyeSBEYXRhIEJsb2NrOgorICogICAg IHNSR0IKKyAqICAgVmlkZW8gRGF0YSBCbG9jazoKKyAqICAgICBWSUMgIDE2OiAgMTkyMHgxMDgw ICAgNjAuMDAwMDAwIEh6ICAxNjo5ICAgICA2Ny41MDAga0h6ICAgIDE0OC41MDAwMDAgTUh6Cisg KiAgIFZpZGVvIENhcGFiaWxpdHkgRGF0YSBCbG9jazoKKyAqICAgICBZQ2JDciBxdWFudGl6YXRp b246IE5vIERhdGEKKyAqICAgICBSR0IgcXVhbnRpemF0aW9uOiBTZWxlY3RhYmxlICh2aWEgQVZJ IFEpCisgKiAgICAgUFQgc2NhbiBiZWhhdmlvcjogTm8gRGF0YQorICogICAgIElUIHNjYW4gYmVo YXZpb3I6IEFsd2F5cyBVbmRlcnNjYW5uZWQKKyAqICAgICBDRSBzY2FuIGJlaGF2aW9yOiBBbHdh eXMgVW5kZXJzY2FubmVkCisgKiAgIFZlbmRvci1TcGVjaWZpYyBEYXRhIEJsb2NrIChIRE1JKSwg T1VJIDAwLTBDLTAzOgorICogICAgIFNvdXJjZSBwaHlzaWNhbCBhZGRyZXNzOiAxLjIuMy40Cisg KiAgICAgTWF4aW11bSBUTURTIGNsb2NrOiAyMDAgTUh6CisgKiAgICAgRXh0ZW5kZWQgSERNSSB2 aWRlbyBkZXRhaWxzOgorICogQ2hlY2tzdW06IDB4ZDAgIFVudXNlZCBzcGFjZSBpbiBFeHRlbnNp b24gQmxvY2s6IDEwMCBieXRlcworICovCitjb25zdCB1bnNpZ25lZCBjaGFyIHRlc3RfZWRpZF9o ZG1pXzEwODBwX3JnYl9tYXhfMjAwbWh6W10gPSB7CisgIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MzEsIDB4ZDgsIDB4MmEsIDB4MDAsCisgIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDEsIDB4MDMsIDB4ODEsIDB4YTAsIDB4 NWEsIDB4NzgsCisgIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisgIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4 MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsCisgIDB4MDEsIDB4 MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDIsIDB4M2EsIDB4ODAsIDB4MTgsIDB4NzEs IDB4MzgsCisgIDB4MmQsIDB4NDAsIDB4NTgsIDB4MmMsIDB4NDUsIDB4MDAsIDB4NDAsIDB4ODQs IDB4NjMsIDB4MDAsIDB4MDAsIDB4MWUsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4MDAs IDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MjAsIDB4NDUsIDB4NDQsCisgIDB4NDksIDB4NDQs IDB4MGEsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4MDAsIDB4 MzIsCisgIDB4NDYsIDB4MDAsIDB4MDAsIDB4YzQsIDB4MDAsIDB4MGEsIDB4MjAsIDB4MjAsIDB4 MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4MDIsIDB4MDMsIDB4MWIsIDB4ODEs CisgIDB4ZTMsIDB4MDUsIDB4MDAsIDB4MjAsIDB4NDEsIDB4MTAsIDB4ZTIsIDB4MDAsIDB4NGEs IDB4NmQsIDB4MDMsIDB4MGMsCisgIDB4MDAsIDB4MTIsIDB4MzQsIDB4MDAsIDB4MjgsIDB4MjAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisg IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAKK307CisKKyNlbmRpZiAvLyBEUk1f S1VOSVRfRURJRF9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIv aW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCmluZGV4IDAwMGEyYTE1NjYxOS4uMzg2N2E0YzAx Yjc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCkBAIC0zNjgsNiArMzY4LDMwIEBAIGVudW0gZHJtX3BhbmVs X29yaWVudGF0aW9uIHsKIAlEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9SSUdIVF9VUCwKIH07 CiAKKy8qKgorICogZW51bSBkcm1faGRtaV9icm9hZGNhc3RfcmdiIC0gQnJvYWRjYXN0IFJHQiBT ZWxlY3Rpb24gZm9yIGFuIEhETUkgQGRybV9jb25uZWN0b3IKKyAqLworZW51bSBkcm1faGRtaV9i cm9hZGNhc3RfcmdiIHsKKwkvKioKKwkgKiBARFJNX0hETUlfQlJPQURDQVNUX1JHQl9BVVRPOiBU aGUgUkdCIHJhbmdlIGlzIHNlbGVjdGVkCisJICogYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUg bW9kZS4KKwkgKi8KKwlEUk1fSERNSV9CUk9BRENBU1RfUkdCX0FVVE8sCisKKwkvKioKKwkgKiBA RFJNX0hETUlfQlJPQURDQVNUX1JHQl9GVUxMOiBGdWxsIHJhbmdlIFJHQiBpcyBmb3JjZWQuCisJ ICovCisJRFJNX0hETUlfQlJPQURDQVNUX1JHQl9GVUxMLAorCisJLyoqCisJICogQERSTV9IRE1J X0JST0FEQ0FTVF9SR0JfTElNSVRFRDogTGltaXRlZCByYW5nZSBSR0IgaXMgZm9yY2VkLgorCSAq LworCURSTV9IRE1JX0JST0FEQ0FTVF9SR0JfTElNSVRFRCwKK307CisKK2NvbnN0IGNoYXIgKgor ZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWUoZW51bSBkcm1faGRtaV9i cm9hZGNhc3RfcmdiIGJyb2FkY2FzdF9yZ2IpOworCiAvKioKICAqIHN0cnVjdCBkcm1fbW9uaXRv cl9yYW5nZV9pbmZvIC0gUGFuZWwncyBNb25pdG9yIHJhbmdlIGluIEVESUQgZm9yCiAgKiAmZHJt X2Rpc3BsYXlfaW5mbwpAQCAtMTAzNyw2ICsxMDYxLDExIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlIHsKIAkgKiBAZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfY2hlY2soKS4K IAkgKi8KIAlzdHJ1Y3QgeworCQkvKioKKwkJICogQGJyb2FkY2FzdF9yZ2I6IENvbm5lY3RvciBw cm9wZXJ0eSB0byBwYXNzIHRoZQorCQkgKiBCcm9hZGNhc3QgUkdCIHNlbGVjdGlvbiB2YWx1ZS4K KwkJICovCisJCWVudW0gZHJtX2hkbWlfYnJvYWRjYXN0X3JnYiBicm9hZGNhc3RfcmdiOwogCX0g aGRtaTsKIH07CiAKQEAgLTE3MDYsNiArMTczNSwxMiBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciB7 CiAJICovCiAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJpdmFjeV9zY3JlZW5faHdfc3RhdGVfcHJv cGVydHk7CiAKKwkvKioKKwkgKiBAYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eTogQ29ubmVjdG9yIHBy b3BlcnR5IHRvIHNldCB0aGUKKwkgKiBCcm9hZGNhc3QgUkdCIHNlbGVjdGlvbiB0byBvdXRwdXQg d2l0aC4KKwkgKi8KKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpicm9hZGNhc3RfcmdiX3Byb3BlcnR5 OworCiAjZGVmaW5lIERSTV9DT05ORUNUT1JfUE9MTF9IUEQgKDEgPDwgMCkKICNkZWZpbmUgRFJN X0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1QgKDEgPDwgMSkKICNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9Q T0xMX0RJU0NPTk5FQ1QgKDEgPDwgMikKQEAgLTIwMjYsNiArMjA2MSw3IEBAIGludCBkcm1fY29u bmVjdG9yX2F0dGFjaF9zY2FsaW5nX21vZGVfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJCQkJICAgICAgIHUzMiBzY2FsaW5nX21vZGVfbWFzayk7CiBpbnQgZHJt X2Nvbm5lY3Rvcl9hdHRhY2hfdnJyX2NhcGFibGVfcHJvcGVydHkoCiAJCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpOworaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2Jyb2FkY2FzdF9y Z2JfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiBpbnQgZHJtX2Nv bm5lY3Rvcl9hdHRhY2hfY29sb3JzcGFjZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKIGludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9oZHJfb3V0cHV0X21ldGFkYXRh X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwogYm9vbCBkcm1fY29u bmVjdG9yX2F0b21pY19oZHJfbWV0YWRhdGFfZXF1YWwoc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9zdGF0ZSwKCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==