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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 7B7B1EF99C9 for ; Fri, 13 Feb 2026 18:54:19 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D542110E316; Fri, 13 Feb 2026 18:54:18 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="npRGMech"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id A2F1610E316 for ; Fri, 13 Feb 2026 18:54:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=+CYAUnK+niRWIHu86Cb3ZRb8xgU+ScOmOZY4dcuRFLQ=; b=npRGMechsKUCXm+XMJQPKqcok1 v/M5qsHFb0rupOQxEbdZx2xWCa1/MmgQiVwlqGmZmh0xQWttAqSTrK6Yp1MIZt/I53zOZVuoLPgHm HXXJX6v3PhKs6fqZgBGqCOQqTBhiIoMD04tzw/T2gp186o1mmMsl2NlZTywmMigVhvdp2COGq0KJ+ TbZLyD7pLZdHN/iIWrddOKDyu+2B/DkEVAOXspD1H35tMzno/y5XxB42KhStxch3jjqRi9FgtDkth 6MTItMRdjgzPyDHjnJyca5Ue4y75NDsm3Hk1sJD9g+WZt42VaAtLU9iupNtMgQhjypd00NJBiFvlG eN6irx0A==; Received: from [187.36.210.68] (helo=janis.local) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1vqyIn-000Sqv-Ig; Fri, 13 Feb 2026 19:54:05 +0100 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Fri, 13 Feb 2026 15:53:00 -0300 Subject: [PATCH v5 7/7] drm/v3d: Introduce Runtime Power Management MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260213-v3d-power-management-v5-7-7a8b381eb379@igalia.com> References: <20260213-v3d-power-management-v5-0-7a8b381eb379@igalia.com> In-Reply-To: <20260213-v3d-power-management-v5-0-7a8b381eb379@igalia.com> To: Michael Turquette , Stephen Boyd , Nicolas Saenz Julienne , Florian Fainelli , Stefan Wahren , Maxime Ripard , Melissa Wen , Iago Toral Quiroga , Chema Casanova , Dave Stevenson , Philipp Zabel Cc: linux-clk@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, Broadcom internal kernel review list , kernel-dev@igalia.com, =?utf-8?q?Ma=C3=ADra_Canal?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=17083; i=mcanal@igalia.com; h=from:subject:message-id; bh=CbLehf9jW/NaFqBxRoiwdpZTMQIQDmqBsKIi4sqI1q0=; b=owEBbQGS/pANAwAIAT/zDop2iPqqAcsmYgBpj3MoBz1Azva369iVUA4wAnU2uZAJxpeyL0Ic8 U7+J8J9NDeJATMEAAEIAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCaY9zKAAKCRA/8w6Kdoj6 qq9FCADcsX9TLKFznPTSBH9PslHGkmhVlExhQNZpAyX3wrWzMkRRz8inJy5acX9hj8Z/8uug2Sn dD4H13kl377S9WiynFYzaVmpGJtqQPmxQVDLVNSOyBCtB43cfgUsER200fXzOOl3TWxGrv03Kfj AGVlpoSRdspOLHN7oz19l22yJfilm12C3N3uSYCmj461wzVcXKHecBPh6zxoO+sS5CCNBwer7/J SA6yYfp04vATMKteMt6uQaM/j2QG2mLTwsYxAzVoimE6/ub5boLO/30iItfIlhyAU7GGUO8AeDz ubIb7b4eZMjuTK1ZRGaj7OJfuXEMJ+suOCkDxJtFoyiDp7zF X-Developer-Key: i=mcanal@igalia.com; a=openpgp; fpr=F8E45D7D0116770729A677D13FF30E8A7688FAAA X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Q29tbWl0IDkwYTY0YWRiMDg3NiAoImRybS92M2Q6IEdldCByaWQgb2YgcG0gY29kZSIpIHJlbW92 ZWQgdGhlIGxhc3QKYml0cyBvZiBwb3dlciBtYW5hZ2VtZW50IGNvZGUgdGhhdCBWM0QgaGFkLCB3 aGljaCB3ZXJlIGFjdHVhbGx5IG5ldmVyCmhvb2tlZC4gVGhlcmVmb3JlLCBjdXJyZW50bHksIHRo ZSBHUFUgY2xvY2sgaXMgZW5hYmxlZCBkdXJpbmcgcHJvYmUKYW5kIG9ubHkgZGlzYWJsZWQgd2hl biByZW1vdmluZyB0aGUgZHJpdmVyLgoKSW1wbGVtZW50IHByb3BlciBwb3dlciBtYW5hZ2VtZW50 IHVzaW5nIHRoZSBrZXJuZWwncyBSdW50aW1lIFBNCmZyYW1ld29yay4KClNpZ25lZC1vZmYtYnk6 IE1hw61yYSBDYW5hbCA8bWNhbmFsQGlnYWxpYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3Yz ZC9NYWtlZmlsZSAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMu YyB8IDIzICsrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jICAgICB8IDg3 ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9kcnYuaCAgICAgfCAxOSArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZ2Vt LmMgICAgIHwgIDcgKysrCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9tbXUuYyAgICAgfCAxMCAr KystCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMgfCAxOCArKysrKystLQogZHJp dmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIuYyAgIHwgOTYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYyAgfCAx OSArKysrKystLQogOSBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS92M2QvTWFrZWZpbGUKaW5kZXggYjdkNjczZjExNTNiZWYxNmRiMzgwMGU1MGIy YmZhZjM2YmY4ODcxYi4uOWNiMWZkNGU0MDkxZGJiNTZlNmE3M2UyYjhhNTFmYTBkMjQyNjk4YiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vdjNkL01ha2VmaWxlCkBAIC0xMyw3ICsxMyw4IEBAIHYzZC15IDo9IFwKIAl2M2RfdHJh Y2VfcG9pbnRzLm8gXAogCXYzZF9zY2hlZC5vIFwKIAl2M2Rfc3lzZnMubyBcCi0JdjNkX3N1Ym1p dC5vCisJdjNkX3N1Ym1pdC5vIFwKKwl2M2RfcG93ZXIubwogCiB2M2QtJChDT05GSUdfREVCVUdf RlMpICs9IHYzZF9kZWJ1Z2ZzLm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZGVidWdmcy5jCmluZGV4IDg5 ZjI0ZWVjNjJhNzRlYzQ5YjI4ZjBiMjJkYmY2MjZiYTdhMzUyMDYuLjYzNGNjNzk2YmEyMzI0ZGM0 OTc2OTRjMDcwZjJjZmZmY2M0NDI0YzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2Qv djNkX2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKQEAg LTk3LDcgKzk3LDExIEBAIHN0YXRpYyBpbnQgdjNkX3YzZF9kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9kZWJ1Z2ZzX2VudHJ5ICplbnRy eSA9IG0tPnByaXZhdGU7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVudHJ5LT5kZXY7CiAJ c3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoZGV2KTsKLQlpbnQgaSwgY29yZTsKKwlp bnQgaSwgY29yZSwgcmV0OworCisJcmV0ID0gdjNkX3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHYzZF9o dWJfcmVnX2RlZnMpOyBpKyspIHsKIAkJY29uc3Qgc3RydWN0IHYzZF9yZWdfZGVmICpkZWYgPSAm djNkX2h1Yl9yZWdfZGVmc1tpXTsKQEAgLTEzOSw2ICsxNDMsOCBAQCBzdGF0aWMgaW50IHYzZF92 M2RfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQl9CiAJ fQogCisJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTQ4 LDcgKzE1NCwxMSBAQCBzdGF0aWMgaW50IHYzZF92M2RfZGVidWdmc19pZGVudChzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW50cnkt PmRldjsKIAlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdG9fdjNkX2RldihkZXYpOwogCXUzMiBpZGVu dDAsIGlkZW50MSwgaWRlbnQyLCBpZGVudDMsIGNvcmVzOwotCWludCBjb3JlOworCWludCBjb3Jl LCByZXQ7CisKKwlyZXQgPSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OwogCiAJaWRlbnQwID0gVjNEX1JFQUQoVjNEX0hVQl9JREVOVDApOwogCWlkZW50 MSA9IFYzRF9SRUFEKFYzRF9IVUJfSURFTlQxKTsKQEAgLTIwNyw2ICsyMTcsOCBAQCBzdGF0aWMg aW50IHYzZF92M2RfZGVidWdmc19pZGVudChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKIAkJfQogCX0KIAorCXYzZF9wbV9ydW50aW1lX3B1dCh2M2QpOworCiAJcmV0dXJuIDA7CiB9 CiAKQEAgLTIzNCw2ICsyNDYsMTEgQEAgc3RhdGljIGludCB2M2RfbWVhc3VyZV9jbG9jayhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAl1aW50MzJfdCBjeWNsZXM7CiAJaW50IGNv cmUgPSAwOwogCWludCBtZWFzdXJlX21zID0gMTAwMDsKKwlpbnQgcmV0OworCisJcmV0ID0gdjNk X3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAogCWlmICh2 M2QtPnZlciA+PSBWM0RfR0VOXzQxKSB7CiAJCWludCBjeWNsZV9jb3VudF9yZWcgPSBWM0RfUENU Ul9DWUNMRV9DT1VOVCh2M2QtPnZlcik7CkBAIC0yNTMsNiArMjcwLDggQEAgc3RhdGljIGludCB2 M2RfbWVhc3VyZV9jbG9jayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAltc2xl ZXAobWVhc3VyZV9tcyk7CiAJY3ljbGVzID0gVjNEX0NPUkVfUkVBRChjb3JlLCBWM0RfUENUUl8w X1BDVFIwKTsKIAorCXYzZF9wbV9ydW50aW1lX3B1dCh2M2QpOworCiAJc2VxX3ByaW50ZihtLCAi Y3ljbGVzOiAlZCAoJWQuJWQgTWh6KVxuIiwKIAkJICAgY3ljbGVzLAogCQkgICBjeWNsZXMgLyAo bWVhc3VyZV9tcyAqIDEwMDApLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYwppbmRleCA1OTJlZjYxMGQ2YTRi YjdkZmU2NGFjZjZmNzI4M2M5NDdlOWQyOTIxLi4wN2E3ZGU1NGRlOTQzMmE5NzBjOTE2NWJlYmVk NTFmNjk4NGZlNDNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYwpAQCAtNTksNiArNTksNyBAQCBzdGF0 aWMgaW50IHYzZF9nZXRfcGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJW0RSTV9WM0RfUEFSQU1fVjNEX0NPUkUwX0lERU5UMV0gPSBWM0RfQ1RMX0lERU5U MSwKIAkJW0RSTV9WM0RfUEFSQU1fVjNEX0NPUkUwX0lERU5UMl0gPSBWM0RfQ1RMX0lERU5UMiwK IAl9OworCWludCByZXQ7CiAKIAlpZiAoYXJncy0+cGFkICE9IDApCiAJCXJldHVybiAtRUlOVkFM OwpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0YXRpYyBpbnQgdjNkX2dldF9wYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlpZiAoYXJncy0+dmFsdWUgIT0gMCkK IAkJCXJldHVybiAtRUlOVkFMOwogCisJCXJldCA9IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwogCQlpZiAoYXJncy0+cGFyYW0gPj0gRFJNX1Yz RF9QQVJBTV9WM0RfQ09SRTBfSURFTlQwICYmCiAJCSAgICBhcmdzLT5wYXJhbSA8PSBEUk1fVjNE X1BBUkFNX1YzRF9DT1JFMF9JREVOVDIpIHsKIAkJCWFyZ3MtPnZhbHVlID0gVjNEX0NPUkVfUkVB RCgwLCBvZmZzZXQpOwogCQl9IGVsc2UgewogCQkJYXJncy0+dmFsdWUgPSBWM0RfUkVBRChvZmZz ZXQpOwogCQl9CisKKwkJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisKIAkJcmV0dXJuIDA7CiAJ fQogCkBAIC0yODcsMzYgKzI5NSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHYzZF9vZl9tYXRjaFtdID0gewogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHYzZF9vZl9t YXRjaCk7CiAKLXN0YXRpYyB2b2lkCi12M2RfaWRsZV9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkK LXsKLQlpZiAodjNkLT52ZXIgPCBWM0RfR0VOXzcxKQotCQlyZXR1cm47Ci0KLQlWM0RfU01TX1dS SVRFKFYzRF9TTVNfVEVFX0NTLCBWM0RfU01TX0NMRUFSX1BPV0VSX09GRik7Ci0KLQlpZiAod2Fp dF9mb3IoKFYzRF9HRVRfRklFTEQoVjNEX1NNU19SRUFEKFYzRF9TTVNfVEVFX0NTKSwKLQkJCQkg ICAgVjNEX1NNU19TVEFURSkgPT0gVjNEX1NNU19JRExFKSwgMTAwKSkgewotCQlkcm1fZXJyKCZ2 M2QtPmRybSwgIkZhaWxlZCB0byBwb3dlciB1cCBTTVNcbiIpOwotCX0KLQotCXYzZF9yZXNldF9z bXModjNkKTsKLX0KLQotc3RhdGljIHZvaWQKLXYzZF9wb3dlcl9vZmZfc21zKHN0cnVjdCB2M2Rf ZGV2ICp2M2QpCi17Ci0JaWYgKHYzZC0+dmVyIDwgVjNEX0dFTl83MSkKLQkJcmV0dXJuOwotCi0J VjNEX1NNU19XUklURShWM0RfU01TX1RFRV9DUywgVjNEX1NNU19QT1dFUl9PRkYpOwotCi0JaWYg KHdhaXRfZm9yKChWM0RfR0VUX0ZJRUxEKFYzRF9TTVNfUkVBRChWM0RfU01TX1RFRV9DUyksCi0J CQkJICAgIFYzRF9TTVNfU1RBVEUpID09IFYzRF9TTVNfUE9XRVJfT0ZGX1NUQVRFKSwgMTAwKSkg ewotCQlkcm1fZXJyKCZ2M2QtPmRybSwgIkZhaWxlZCB0byBwb3dlciBvZmYgU01TXG4iKTsKLQl9 Ci19Ci0KIHN0YXRpYyBpbnQKIG1hcF9yZWdzKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHZvaWQgX19p b21lbSAqKnJlZ3MsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC0zODMsNiArMzYxLDkgQEAgc3Rh dGljIGludCB2M2RfcGxhdGZvcm1fZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJaWYgKElTX0VSUih2M2QtPmNsaykpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwg UFRSX0VSUih2M2QtPmNsayksICJGYWlsZWQgdG8gZ2V0IFYzRCBjbG9ja1xuIik7CiAKKwlpZiAo djNkLT5jbGspCisJCXYzZC0+bWF4X2Nsa19yYXRlID0gY2xrX3JvdW5kX3JhdGUodjNkLT5jbGss IFVMT05HX01BWCk7CisKIAlyZXQgPSB2M2RfaXJxX2luaXQodjNkKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwpAQCAtNDAwLDE5ICszODEsMjYgQEAgc3RhdGljIGludCB2M2RfcGxhdGZvcm1f ZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCkKIAkJZ290 byBkbWFfZnJlZTsKIAotCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSh2M2QtPmNsayk7Ci0JaWYg KHJldCkgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDb3VsZG4ndCBlbmFibGUgdGhlIFYzRCBj bG9ja1xuIik7CisJcmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpOworCWlmIChyZXQp CiAJCWdvdG8gZ2VtX2Rlc3Ryb3k7Ci0JfQogCi0JdjNkX2lkbGVfc21zKHYzZCk7CisJcmV0ID0g cG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOworCWlmIChyZXQpCisJCWdvdG8gZ2VtX2Rl c3Ryb3k7CisKKwkvKiBJZiBQTSBpcyBkaXNhYmxlZCwgd2UgbmVlZCB0byBjYWxsIHYzZF9wb3dl cl9yZXN1bWUoKSBtYW51YWxseS4gKi8KKwlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BNKSkgewor CQlyZXQgPSB2M2RfcG93ZXJfcmVzdW1lKGRldik7CisJCWlmIChyZXQpCisJCQlnb3RvIGdlbV9k ZXN0cm95OworCX0KIAogCW1tdV9kZWJ1ZyA9IFYzRF9SRUFEKFYzRF9NTVVfREVCVUdfSU5GTyk7 CiAJbWFzayA9IERNQV9CSVRfTUFTSygzMCArIFYzRF9HRVRfRklFTEQobW11X2RlYnVnLCBWM0Rf TU1VX1BBX1dJRFRIKSk7CiAJcmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIG1h c2spOwogCWlmIChyZXQpCi0JCWdvdG8gY2xrX2Rpc2FibGU7CisJCWdvdG8gcnVudGltZV9wbV9w dXQ7CiAKIAlkbWFfc2V0X21heF9zZWdfc2l6ZSgmcGRldi0+ZGV2LCBVSU5UX01BWCk7CiAKQEAg LTQzMywyNiArNDIxLDI3IEBAIHN0YXRpYyBpbnQgdjNkX3BsYXRmb3JtX2RybV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXYzZC0+cmV2ID0gVjNEX0dFVF9GSUVMRChpZGVu dDMsIFYzRF9IVUJfSURFTlQzX0lQUkVWKTsKIAogCXYzZF9pbml0X2h3X3N0YXRlKHYzZCk7Ci0J djNkX21tdV9zZXRfcGFnZV90YWJsZSh2M2QpOwotCXYzZF9pcnFfZW5hYmxlKHYzZCk7CisKKwlw bV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShkZXYsIDUwKTsKKwlwbV9ydW50aW1lX3Vz ZV9hdXRvc3VzcGVuZChkZXYpOwogCiAJcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOwog CWlmIChyZXQpCi0JCWdvdG8gaXJxX2Rpc2FibGU7CisJCWdvdG8gcnVudGltZV9wbV9wdXQ7CiAK IAlyZXQgPSB2M2Rfc3lzZnNfaW5pdChkZXYpOwogCWlmIChyZXQpCiAJCWdvdG8gZHJtX3VucmVn aXN0ZXI7CiAKKwlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldik7CisJcG1fcnVudGltZV9w dXRfYXV0b3N1c3BlbmQoZGV2KTsKKwogCXJldHVybiAwOwogCiBkcm1fdW5yZWdpc3RlcjoKIAlk cm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsKLWlycV9kaXNhYmxlOgotCXYzZF9pcnFfZGlzYWJsZSh2 M2QpOwotY2xrX2Rpc2FibGU6Ci0JdjNkX3Bvd2VyX29mZl9zbXModjNkKTsKLQljbGtfZGlzYWJs ZV91bnByZXBhcmUodjNkLT5jbGspOworcnVudGltZV9wbV9wdXQ6CisJcG1fcnVudGltZV9wdXRf c3luY19zdXNwZW5kKGRldik7CiBnZW1fZGVzdHJveToKIAl2M2RfZ2VtX2Rlc3Ryb3koZHJtKTsK IGRtYV9mcmVlOgpAQCAtNDcwLDIxICs0NTksMjcgQEAgc3RhdGljIHZvaWQgdjNkX3BsYXRmb3Jt X2RybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCWRybV9kZXZfdW5y ZWdpc3Rlcihkcm0pOwogCi0JdjNkX3Bvd2VyX29mZl9zbXModjNkKTsKKwlwbV9ydW50aW1lX3N1 c3BlbmQoZGV2KTsKIAotCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2M2QtPmNsayk7CisJLyogSWYg UE0gaXMgZGlzYWJsZWQsIHdlIG5lZWQgdG8gY2FsbCB2M2RfcG93ZXJfc3VzcGVuZCgpIG1hbnVh bGx5LiAqLworCWlmICghSVNfRU5BQkxFRChDT05GSUdfUE0pKQorCQl2M2RfcG93ZXJfc3VzcGVu ZChkZXYpOwogCiAJdjNkX2dlbV9kZXN0cm95KGRybSk7CiAKIAlkbWFfZnJlZV93YyhkZXYsIDQw OTYsIHYzZC0+bW11X3NjcmF0Y2gsIHYzZC0+bW11X3NjcmF0Y2hfcGFkZHIpOwogfQogCitzdGF0 aWMgREVGSU5FX1JVTlRJTUVfREVWX1BNX09QUyh2M2RfcG1fb3BzLCB2M2RfcG93ZXJfc3VzcGVu ZCwKKwkJCQkgdjNkX3Bvd2VyX3Jlc3VtZSwgTlVMTCk7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIHYzZF9wbGF0Zm9ybV9kcml2ZXIgPSB7CiAJLnByb2JlCQk9IHYzZF9wbGF0Zm9y bV9kcm1fcHJvYmUsCiAJLnJlbW92ZQkJPSB2M2RfcGxhdGZvcm1fZHJtX3JlbW92ZSwKIAkuZHJp dmVyCQk9IHsKIAkJLm5hbWUJPSAidjNkIiwKIAkJLm9mX21hdGNoX3RhYmxlID0gdjNkX29mX21h dGNoLAorCQkucG0gPSBwbV9wdHIoJnYzZF9wbV9vcHMpLAogCX0sCiB9OwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNk X2Rydi5oCmluZGV4IGZmOTBlZjY4NzZkNjUyNDE5NzVmMjU5YjQ0YzZmMDk5NDFkMTJlY2IuLjcy NGZhZDQzMTFhNmMzNjEyNGI1NGIwN2E4NTdkMzI2ODQzOTg4ODYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Ry di5oCkBAIC0zLDYgKzMsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRl IDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KICNpbmNsdWRl IDxsaW51eC9zcGlubG9ja190eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgog CkBAIC0xMzQsNiArMTM1LDggQEAgc3RydWN0IHYzZF9kZXYgewogCXZvaWQgX19pb21lbSAqZ2Nh X3JlZ3M7CiAJdm9pZCBfX2lvbWVtICpzbXNfcmVnczsKIAlzdHJ1Y3QgY2xrICpjbGs7CisJdW5z aWduZWQgbG9uZyBtYXhfY2xrX3JhdGU7CisKIAlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7 CiAKIAkvKiBWaXJ0dWFsIGFuZCBETUEgYWRkcmVzc2VzIG9mIHRoZSBzaW5nbGUgc2hhcmVkIHBh Z2UgdGFibGUuICovCkBAIC0zMjEsNiArMzI0LDggQEAgc3RydWN0IHYzZF9qb2IgewogCiAJLyog Q2FsbGJhY2sgZm9yIHRoZSBmcmVlaW5nIG9mIHRoZSBqb2Igb24gcmVmY291bnQgZ29pbmcgdG8g MC4gKi8KIAl2b2lkICgqZnJlZSkoc3RydWN0IGtyZWYgKnJlZik7CisKKwlib29sIGhhc19wbV9y ZWY7CiB9OwogCiBzdHJ1Y3QgdjNkX2Jpbl9qb2IgewpAQCAtNTk0LDYgKzU5OSwyMCBAQCBpbnQg djNkX21tdV9zZXRfcGFnZV90YWJsZShzdHJ1Y3QgdjNkX2RldiAqdjNkKTsKIHZvaWQgdjNkX21t dV9pbnNlcnRfcHRlcyhzdHJ1Y3QgdjNkX2JvICpibyk7CiB2b2lkIHYzZF9tbXVfcmVtb3ZlX3B0 ZXMoc3RydWN0IHYzZF9ibyAqYm8pOwogCisvKiB2M2RfcG93ZXIuYyAqLworaW50IHYzZF9wb3dl cl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CitpbnQgdjNkX3Bvd2VyX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOworCitzdGF0aWMgX19hbHdheXNfaW5saW5lIGludCB2M2RfcG1fcnVu dGltZV9nZXQoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlyZXR1cm4gcG1fcnVudGltZV9yZXN1 bWVfYW5kX2dldCh2M2QtPmRybS5kZXYpOworfQorCitzdGF0aWMgX19hbHdheXNfaW5saW5lIGlu dCB2M2RfcG1fcnVudGltZV9wdXQoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlyZXR1cm4gcG1f cnVudGltZV9wdXRfYXV0b3N1c3BlbmQodjNkLT5kcm0uZGV2KTsKK30KKwogLyogdjNkX3NjaGVk LmMgKi8KIHZvaWQgdjNkX3RpbWVzdGFtcF9xdWVyeV9pbmZvX2ZyZWUoc3RydWN0IHYzZF90aW1l c3RhbXBfcXVlcnlfaW5mbyAqcXVlcnlfaW5mbywKIAkJCQkgICB1bnNpZ25lZCBpbnQgY291bnQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vdjNkL3YzZF9nZW0uYwppbmRleCBkZDRhYzg5OWE0ODlmYjczNDE4MTU1OTIxMTRjYzRm MTY1MmYzNWU4Li4xN2Y1MGUxNDVkNGI3YjIwNmI3MjliZmUzNGI5M2QwMGE3ZmE4MGU2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdjNkL3YzZF9nZW0uYwpAQCAtMTE4LDYgKzExOCwxMSBAQCB2b2lkCiB2M2RfcmVzZXQoc3Ry dWN0IHYzZF9kZXYgKnYzZCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJnYzZC0+ZHJt OworCWludCByZXQ7CisKKwlyZXQgPSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKKwlpZiAocmV0 KQorCQlyZXR1cm47CiAKIAlkcm1fZXJyKGRldiwgIlJlc2V0dGluZyBHUFUgZm9yIGhhbmcuXG4i KTsKIAlkcm1fZXJyKGRldiwgIlYzRF9FUlJfU1RBVDogMHglMDh4XG4iLCBWM0RfQ09SRV9SRUFE KDAsIFYzRF9FUlJfU1RBVCkpOwpAQCAtMTQwLDYgKzE0NSw4IEBAIHYzZF9yZXNldChzdHJ1Y3Qg djNkX2RldiAqdjNkKQogCXYzZF9wZXJmbW9uX3N0b3AodjNkLCB2M2QtPmFjdGl2ZV9wZXJmbW9u LCBmYWxzZSk7CiAKIAl0cmFjZV92M2RfcmVzZXRfZW5kKGRldik7CisKKwl2M2RfcG1fcnVudGlt ZV9wdXQodjNkKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92M2QvdjNkX21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfbW11LmMKaW5kZXggYzUx M2EzOTNjMDMxMzc3MjY1MGZkNmQ3MjM2MTI3YjJkYzQxMDFkOS4uNjMwYzY0ZTUxZDJmMmFkMzBl NTlmYTJiMTc1NDg3ZWZlMGJmYmE0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfbW11LmMKQEAgLTM5LDcgKzM5 LDExIEBAIHN0YXRpYyBib29sIHYzZF9tbXVfaXNfYWxpZ25lZCh1MzIgcGFnZSwgdTMyIHBhZ2Vf YWRkcmVzcywgc2l6ZV90IGFsaWdubWVudCkKIAogaW50IHYzZF9tbXVfZmx1c2hfYWxsKHN0cnVj dCB2M2RfZGV2ICp2M2QpCiB7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsKKworCS8qIEZsdXNo IHRoZSBQVHMgb25seSBpZiB3ZSdyZSBhbHJlYWR5IGF3YWtlICovCisJaWYgKCFwbV9ydW50aW1l X2dldF9pZl9hY3RpdmUodjNkLT5kcm0uZGV2KSkKKwkJcmV0dXJuIDA7CiAKIAlWM0RfV1JJVEUo VjNEX01NVUNfQ09OVFJPTCwgVjNEX01NVUNfQ09OVFJPTF9GTFVTSCB8CiAJCSAgVjNEX01NVUNf Q09OVFJPTF9FTkFCTEUpOwpAQCAtNDgsNyArNTIsNyBAQCBpbnQgdjNkX21tdV9mbHVzaF9hbGwo c3RydWN0IHYzZF9kZXYgKnYzZCkKIAkJCSBWM0RfTU1VQ19DT05UUk9MX0ZMVVNISU5HKSwgMTAw KTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIodjNkLT5kcm0uZGV2LCAiTU1VQyBmbHVzaCB3YWl0 IGlkbGUgZmFpbGVkXG4iKTsKLQkJcmV0dXJuIHJldDsKKwkJZ290byBwbV9wdXQ7CiAJfQogCiAJ VjNEX1dSSVRFKFYzRF9NTVVfQ1RMLCBWM0RfUkVBRChWM0RfTU1VX0NUTCkgfApAQCAtNTksNiAr NjMsOCBAQCBpbnQgdjNkX21tdV9mbHVzaF9hbGwoc3RydWN0IHYzZF9kZXYgKnYzZCkKIAlpZiAo cmV0KQogCQlkZXZfZXJyKHYzZC0+ZHJtLmRldiwgIk1NVSBUTEIgY2xlYXIgd2FpdCBpZGxlIGZh aWxlZFxuIik7CiAKK3BtX3B1dDoKKwl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKIAlyZXR1cm4g cmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMKaW5kZXggYzA5MGZjMzBiYTRiMmM1 MDJjYmRjNDMxMGVlMGMzNWY2YzhhZWZiMC4uMWMzYzBiOGM0NmI4ZmNiNzY5Nzc0MjAxMWJiZDgz MTFkYzhjZGRiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3BlcmZtb24uYwpAQCAtMjMyLDYgKzIzMiw5 IEBAIHZvaWQgdjNkX3BlcmZtb25fc3RhcnQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYz ZF9wZXJmbW9uICpwZXJmbW9uKQogCWlmIChXQVJOX09OX09OQ0UoIXBlcmZtb24gfHwgdjNkLT5h Y3RpdmVfcGVyZm1vbikpCiAJCXJldHVybjsKIAorCWlmICghcG1fcnVudGltZV9nZXRfaWZfYWN0 aXZlKHYzZC0+ZHJtLmRldikpCisJCXJldHVybjsKKwogCW5jb3VudGVycyA9IHBlcmZtb24tPm5j b3VudGVyczsKIAltYXNrID0gR0VOTUFTSyhuY291bnRlcnMgLSAxLCAwKTsKIApAQCAtMjU3LDYg KzI2MCw4IEBAIHZvaWQgdjNkX3BlcmZtb25fc3RhcnQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3Ry dWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQogCVYzRF9DT1JFX1dSSVRFKDAsIFYzRF9QQ1RSXzBf T1ZFUkZMT1csIG1hc2spOwogCiAJdjNkLT5hY3RpdmVfcGVyZm1vbiA9IHBlcmZtb247CisKKwl2 M2RfcG1fcnVudGltZV9wdXQodjNkKTsKIH0KIAogdm9pZCB2M2RfcGVyZm1vbl9zdG9wKHN0cnVj dCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbiwKQEAgLTI2OCwxMCAr MjczLDExIEBAIHZvaWQgdjNkX3BlcmZtb25fc3RvcChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1 Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCiAJCXJldHVybjsKIAogCW11dGV4X2xvY2soJnBlcmZt b24tPmxvY2spOwotCWlmIChwZXJmbW9uICE9IHYzZC0+YWN0aXZlX3BlcmZtb24pIHsKLQkJbXV0 ZXhfdW5sb2NrKCZwZXJmbW9uLT5sb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAocGVyZm1vbiAh PSB2M2QtPmFjdGl2ZV9wZXJmbW9uKQorCQlnb3RvIG91dDsKKworCWlmICghcG1fcnVudGltZV9n ZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCisJCWdvdG8gb3V0X2NsZWFyOwogCiAJaWYgKGNh cHR1cmUpCiAJCWZvciAoaSA9IDA7IGkgPCBwZXJmbW9uLT5uY291bnRlcnM7IGkrKykKQEAgLTI3 OSw3ICsyODUsMTEgQEAgdm9pZCB2M2RfcGVyZm1vbl9zdG9wKHN0cnVjdCB2M2RfZGV2ICp2M2Qs IHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbiwKIAogCVYzRF9DT1JFX1dSSVRFKDAsIFYzRF9W NF9QQ1RSXzBfRU4sIDApOwogCisJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisKK291dF9jbGVh cjoKIAl2M2QtPmFjdGl2ZV9wZXJmbW9uID0gTlVMTDsKK291dDoKIAltdXRleF91bmxvY2soJnBl cmZtb24tPmxvY2spOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9w b3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODVm NTZhY2Y1NDRiYmZkM2Q5ODQ4MjUzZTc4OGExMzhhYWNmMmFmCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIuYwpAQCAtMCwwICsxLDk2IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKy8qIENvcHlyaWdodCAoQykgMjAyNiBSYXNw YmVycnkgUGkgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L3Jl c2V0Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CisKKyNpbmNsdWRlICJ2M2RfZHJ2 LmgiCisjaW5jbHVkZSAidjNkX3JlZ3MuaCIKKworc3RhdGljIHZvaWQKK3YzZF9yZXN1bWVfc21z KHN0cnVjdCB2M2RfZGV2ICp2M2QpCit7CisJaWYgKHYzZC0+dmVyIDwgVjNEX0dFTl83MSkKKwkJ cmV0dXJuOworCisJVjNEX1NNU19XUklURShWM0RfU01TX1RFRV9DUywgVjNEX1NNU19DTEVBUl9Q T1dFUl9PRkYpOworCisJaWYgKHdhaXRfZm9yKChWM0RfR0VUX0ZJRUxEKFYzRF9TTVNfUkVBRChW M0RfU01TX1RFRV9DUyksCisJCQkJICAgIFYzRF9TTVNfU1RBVEUpID09IFYzRF9TTVNfSURMRSks IDEwMCkpIHsKKwkJZHJtX2VycigmdjNkLT5kcm0sICJGYWlsZWQgdG8gcG93ZXIgdXAgU01TXG4i KTsKKwl9CisKKwl2M2RfcmVzZXRfc21zKHYzZCk7Cit9CisKK3N0YXRpYyB2b2lkCit2M2Rfc3Vz cGVuZF9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlpZiAodjNkLT52ZXIgPCBWM0RfR0VO XzcxKQorCQlyZXR1cm47CisKKwlWM0RfU01TX1dSSVRFKFYzRF9TTVNfVEVFX0NTLCBWM0RfU01T X1BPV0VSX09GRik7CisKKwlpZiAod2FpdF9mb3IoKFYzRF9HRVRfRklFTEQoVjNEX1NNU19SRUFE KFYzRF9TTVNfVEVFX0NTKSwKKwkJCQkgICAgVjNEX1NNU19TVEFURSkgPT0gVjNEX1NNU19QT1dF Ul9PRkZfU1RBVEUpLCAxMDApKSB7CisJCWRybV9lcnIoJnYzZC0+ZHJtLCAiRmFpbGVkIHRvIHBv d2VyIG9mZiBTTVNcbiIpOworCX0KK30KKworaW50IHYzZF9wb3dlcl9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoZHJtKTsKKworCXYzZF9p cnFfZGlzYWJsZSh2M2QpOworCXYzZF9zdXNwZW5kX3Ntcyh2M2QpOworCisJaWYgKHYzZC0+cmVz ZXQpCisJCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHYzZC0+cmVzZXQpOworCisJLyogU29tZSBmaXJt d2FyZSB2ZXJzaW9ucyBtaWdodCBub3QgYWN0dWFsbHkgcG93ZXIgb2ZmIHRoZSBjbG9jaworCSAq IHdoZW4gd2Ugc2V0IHRoZSBjbG9jayBzdGF0ZSB0byBvZmYuIFRoZXJlZm9yZSwgc2V0IHRoZSBj bG9jaworCSAqIHJhdGUgdG8gMCB0byBlbnN1cmUgaXQgaXMgcnVubmluZyBpbiB0aGUgbWluaW11 bSByYXRlLgorCSAqLworCWlmICh2M2QtPmNsaykKKwkJY2xrX3NldF9yYXRlKHYzZC0+Y2xrLCAw KTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2M2QtPmNsayk7CisKKwlyZXR1cm4gMDsKK30K KworaW50IHYzZF9wb3dlcl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgdjNkX2RldiAq djNkID0gdG9fdjNkX2Rldihkcm0pOworCWludCByZXQ7CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUodjNkLT5jbGspOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBTZXQgdGhl IGNsb2NrIHRvIHRoZSBtYXhpbXVtIHJhdGUgYW5kIGxldCB0aGUgZmlybXdhcmUgZGVjaWRlCisJ ICogaWYgd2UgY2FuIGFjdHVhbGx5IGtlZXAgaXQuCisJICovCisJaWYgKHYzZC0+Y2xrKQorCQlj bGtfc2V0X3JhdGUodjNkLT5jbGssIHYzZC0+bWF4X2Nsa19yYXRlKTsKKworCWlmICh2M2QtPnJl c2V0KSB7CisJCXJldCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQodjNkLT5yZXNldCk7CisJCWlm IChyZXQpCisJCQlnb3RvIGNsa19kaXNhYmxlOworCX0KKworCXYzZF9yZXN1bWVfc21zKHYzZCk7 CisJdjNkX21tdV9zZXRfcGFnZV90YWJsZSh2M2QpOworCXYzZF9pcnFfZW5hYmxlKHYzZCk7CisK KwlyZXR1cm4gMDsKKworY2xrX2Rpc2FibGU6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHYzZC0+ Y2xrKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2Rfc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYwppbmRleCA3OTRj MzU3MTY2MmRlN2ViNTY2YmY0YzA1NjE1NzFkNzYxOGRkMjM0Li5mZWE3NTczNTA1Y2QwZDJiODRk MjFlZmRhODhlZDRkYTY1N2QxOGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3Yz ZF9zdWJtaXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYwpAQCAtMTAz LDYgKzEwMyw5IEBAIHYzZF9qb2JfZnJlZShzdHJ1Y3Qga3JlZiAqcmVmKQogCWlmIChqb2ItPnBl cmZtb24pCiAJCXYzZF9wZXJmbW9uX3B1dChqb2ItPnBlcmZtb24pOwogCisJaWYgKGpvYi0+aGFz X3BtX3JlZikKKwkJdjNkX3BtX3J1bnRpbWVfcHV0KGpvYi0+djNkKTsKKwogCWtmcmVlKGpvYik7 CiB9CiAKQEAgLTE4NCwxMyArMTg3LDEzIEBAIHYzZF9qb2JfaW5pdChzdHJ1Y3QgdjNkX2RldiAq djNkLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCQlpZiAoY29weV9mcm9tX3VzZXIo JmluLCBoYW5kbGUrKywgc2l6ZW9mKGluKSkpIHsKIAkJCQkJcmV0ID0gLUVGQVVMVDsKIAkJCQkJ ZHJtX2RiZygmdjNkLT5kcm0sICJGYWlsZWQgdG8gY29weSB3YWl0IGRlcCBoYW5kbGUuXG4iKTsK LQkJCQkJZ290byBmYWlsX2RlcHM7CisJCQkJCWdvdG8gZmFpbF9qb2JfaW5pdDsKIAkJCQl9CiAJ CQkJcmV0ID0gZHJtX3NjaGVkX2pvYl9hZGRfc3luY29ial9kZXBlbmRlbmN5KCZqb2ItPmJhc2Us IGZpbGVfcHJpdiwgaW4uaGFuZGxlLCAwKTsKIAogCQkJCS8vIFRPRE86IEludmVzdGlnYXRlIHdo eSB0aGlzIHdhcyBmaWx0ZXJlZCBvdXQgZm9yIHRoZSBJT0NUTC4KIAkJCQlpZiAocmV0ICYmIHJl dCAhPSAtRU5PRU5UKQotCQkJCQlnb3RvIGZhaWxfZGVwczsKKwkJCQkJZ290byBmYWlsX2pvYl9p bml0OwogCQkJfQogCQl9CiAJfSBlbHNlIHsKQEAgLTE5OCwxNCArMjAxLDIyIEBAIHYzZF9qb2Jf aW5pdChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAog CQkvLyBUT0RPOiBJbnZlc3RpZ2F0ZSB3aHkgdGhpcyB3YXMgZmlsdGVyZWQgb3V0IGZvciB0aGUg SU9DVEwuCiAJCWlmIChyZXQgJiYgcmV0ICE9IC1FTk9FTlQpCi0JCQlnb3RvIGZhaWxfZGVwczsK KwkJCWdvdG8gZmFpbF9qb2JfaW5pdDsKKwl9CisKKwkvKiBDUFUgam9icyBkb24ndCByZXF1aXJl IGhhcmR3YXJlIHJlc291cmNlcyAqLworCWlmIChxdWV1ZSAhPSBWM0RfQ1BVKSB7CisJCXJldCA9 IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOworCQlpZiAocmV0KQorCQkJZ290byBmYWlsX2pvYl9p bml0OworCQlqb2ItPmhhc19wbV9yZWYgPSB0cnVlOwogCX0KIAogCWtyZWZfaW5pdCgmam9iLT5y ZWZjb3VudCk7CiAKIAlyZXR1cm4gMDsKIAotZmFpbF9kZXBzOgorZmFpbF9qb2JfaW5pdDoKIAlk cm1fc2NoZWRfam9iX2NsZWFudXAoJmpvYi0+YmFzZSk7CiAJcmV0dXJuIHJldDsKIH0KCi0tIAoy LjUyLjAKCg==