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 73B0510F3DEE for ; Sat, 28 Mar 2026 18:53:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CF65910E532; Sat, 28 Mar 2026 18:53:30 +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="hO8sc9TD"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4ED310E532 for ; Sat, 28 Mar 2026 18:53:24 +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=fS/cnf2/xwnh/Z3sFD8l5kyfJNNt5x60ewZgTXeTKLY=; b=hO8sc9TDpS369IGffvx8Futnzr 2avMJ3p2rh+atxluo0Z5fqtILn//Q+Ft4G9iEXGbOEabH15NoFum6Yx78Y7QfF2HduiS/aTDW230V 0jzP4wXARkXfsbaFW4WR/sG0kKc66jaI2BzY3dnFpkqnmo6bQ36fX2hip1l4awytgYGmA7buszkgO XBr39rKsKyIysvgJ50xMU2Keo5QWWwqvE/KLgvhHbd4g736EcszL6go4Hs2U/BtyLedoV6AH8kY68 ENd3s4eSru1DCMtVfZ64Z+0Ctn2di0ZK3ZwfoCVzeErS4Q+eJ1s642rVwZ2FcO/e8j+LL/r4t10wT aDjYq+tQ==; Received: from [189.7.87.169] (helo=[10.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1w6Yme-007f3o-0U; Sat, 28 Mar 2026 19:53:20 +0100 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Sat, 28 Mar 2026 15:52:49 -0300 Subject: [PATCH v8 3/3] drm/v3d: Introduce Runtime Power Management MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260328-v3d-power-management-v8-3-94336830df5f@igalia.com> References: <20260328-v3d-power-management-v8-0-94336830df5f@igalia.com> In-Reply-To: <20260328-v3d-power-management-v8-0-94336830df5f@igalia.com> To: Stefan Wahren , Maxime Ripard , Melissa Wen , Iago Toral Quiroga , Dave Stevenson Cc: dri-devel@lists.freedesktop.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.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=15199; i=mcanal@igalia.com; h=from:subject:message-id; bh=Wsmhfb5+8aF0Iq+BbAeHuAGdhgrPsq+bSyLOvx+l6gc=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBpyCORwB8qUgRaY/Nu9eiQ4y9xdT+mzOzUvjkxv +CWSCqEPQCJATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCacgjkQAKCRA/8w6Kdoj6 qg6LCACWCQDr0wMSSPcXuRYS9QNIgBJw6WEayava9fBXpOhVvSx9OdS6DMvRpqXnvhNCZqHir+v yvIhVOVy+mmEYYp8vVv8I0IzSFF51ZHXs9KW7PgKZJKGgqjBfeS3ABmvRe4wkcls3ycLkKkOB6m MDJ1bcrkF2gZuRaB+ZCEOnzc7nlTt5kFfTkCp/NSafDcg+INyizitmpkpR4gCGlGqgKSlgNOCQ8 gBWzvQIGPcr28GA5kNsqU049STOuZ63X9U3q0dWUABUOmgg+/WVEkYg8yKuYkm8gfwn0Zk9qV1H oCGELVkJPWbvyECy9zS5yRQW0XDBXA8UvJAXw7x+FtylbLj0 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 IHVzaW5nIHRoZSBrZXJuZWwncyBSdW50aW1lIFBNCmZyYW1ld29yay4KClJldmlld2VkLWJ5OiBN ZWxpc3NhIFdlbiA8bXdlbkBpZ2FsaWEuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYcOtcmEgQ2FuYWwg PG1jYW5hbEBpZ2FsaWEuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvTWFrZWZpbGUgICAg ICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMuYyB8IDIzICsrKysrKysr KystCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYyAgICAgfCA4NCArKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5o ICAgICB8IDE3ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9tbXUuYyAgICAgfCAx MCArKysrLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jIHwgMTggKysrKysrKy0t CiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jICAgfCA2OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMgIHwgMTkg KysrKysrKy0tCiA4IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL3YzZC9NYWtlZmlsZQppbmRleCBiN2Q2NzNmMTE1M2JlZjE2ZGIzODAwZTUwYjJi ZmFmMzZiZjg4NzFiLi42MDFiODM0ZTM3N2U4MzQyYzY2Njg2NDUxMTIzNDdjY2E0MjE0MDI0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92M2QvTWFrZWZpbGUKQEAgLTEwLDYgKzEwLDcgQEAgdjNkLXkgOj0gXAogCXYzZF9pcnEu byBcCiAJdjNkX21tdS5vIFwKIAl2M2RfcGVyZm1vbi5vIFwKKwl2M2RfcG93ZXIubyBcCiAJdjNk X3RyYWNlX3BvaW50cy5vIFwKIAl2M2Rfc2NoZWQubyBcCiAJdjNkX3N5c2ZzLm8gXApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJt L3YzZC92M2RfZGVidWdmcy5jCmluZGV4IDg5ZjI0ZWVjNjJhNzRlYzQ5YjI4ZjBiMjJkYmY2MjZi YTdhMzUyMDYuLjYzNGNjNzk2YmEyMzI0ZGM0OTc2OTRjMDcwZjJjZmZmY2M0NDI0YzkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKQEAgLTk3LDcgKzk3LDExIEBAIHN0YXRpYyBpbnQgdjNk X3YzZF9kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3Ry dWN0IGRybV9kZWJ1Z2ZzX2VudHJ5ICplbnRyeSA9IG0tPnByaXZhdGU7CiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGVudHJ5LT5kZXY7CiAJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9k ZXYoZGV2KTsKLQlpbnQgaSwgY29yZTsKKwlpbnQgaSwgY29yZSwgcmV0OworCisJcmV0ID0gdjNk X3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAogCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHYzZF9odWJfcmVnX2RlZnMpOyBpKyspIHsKIAkJY29uc3Qg c3RydWN0IHYzZF9yZWdfZGVmICpkZWYgPSAmdjNkX2h1Yl9yZWdfZGVmc1tpXTsKQEAgLTEzOSw2 ICsxNDMsOCBAQCBzdGF0aWMgaW50IHYzZF92M2RfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQogCQl9CiAJfQogCisJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7 CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTQ4LDcgKzE1NCwxMSBAQCBzdGF0aWMgaW50IHYzZF92 M2RfZGVidWdmc19pZGVudChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZW50cnktPmRldjsKIAlzdHJ1Y3QgdjNkX2RldiAqdjNkID0g dG9fdjNkX2RldihkZXYpOwogCXUzMiBpZGVudDAsIGlkZW50MSwgaWRlbnQyLCBpZGVudDMsIGNv cmVzOwotCWludCBjb3JlOworCWludCBjb3JlLCByZXQ7CisKKwlyZXQgPSB2M2RfcG1fcnVudGlt ZV9nZXQodjNkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJaWRlbnQwID0gVjNEX1JF QUQoVjNEX0hVQl9JREVOVDApOwogCWlkZW50MSA9IFYzRF9SRUFEKFYzRF9IVUJfSURFTlQxKTsK QEAgLTIwNyw2ICsyMTcsOCBAQCBzdGF0aWMgaW50IHYzZF92M2RfZGVidWdmc19pZGVudChzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJfQogCX0KIAorCXYzZF9wbV9ydW50aW1l X3B1dCh2M2QpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIzNCw2ICsyNDYsMTEgQEAgc3RhdGlj IGludCB2M2RfbWVhc3VyZV9jbG9jayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK IAl1aW50MzJfdCBjeWNsZXM7CiAJaW50IGNvcmUgPSAwOwogCWludCBtZWFzdXJlX21zID0gMTAw MDsKKwlpbnQgcmV0OworCisJcmV0ID0gdjNkX3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKIAogCWlmICh2M2QtPnZlciA+PSBWM0RfR0VOXzQxKSB7CiAJCWlu dCBjeWNsZV9jb3VudF9yZWcgPSBWM0RfUENUUl9DWUNMRV9DT1VOVCh2M2QtPnZlcik7CkBAIC0y NTMsNiArMjcwLDggQEAgc3RhdGljIGludCB2M2RfbWVhc3VyZV9jbG9jayhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKIAltc2xlZXAobWVhc3VyZV9tcyk7CiAJY3ljbGVzID0gVjNE X0NPUkVfUkVBRChjb3JlLCBWM0RfUENUUl8wX1BDVFIwKTsKIAorCXYzZF9wbV9ydW50aW1lX3B1 dCh2M2QpOworCiAJc2VxX3ByaW50ZihtLCAiY3ljbGVzOiAlZCAoJWQuJWQgTWh6KVxuIiwKIAkJ ICAgY3ljbGVzLAogCQkgICBjeWNsZXMgLyAobWVhc3VyZV9tcyAqIDEwMDApLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3Yz ZF9kcnYuYwppbmRleCBlNTdiMzZmNGQ4MWE1OWQxNWEyMjNhZmRjNDA3OGFlNjQ1NmRlOWE5Li5m YzgxZGQxMjQ3ZTMzZTE1Y2Q4MzhjZjExYWU0NmQ3OWFhZjAzOTc2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9k cnYuYwpAQCAtNTksNiArNTksNyBAQCBzdGF0aWMgaW50IHYzZF9nZXRfcGFyYW1faW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJW0RSTV9WM0RfUEFSQU1fVjNEX0NP UkUwX0lERU5UMV0gPSBWM0RfQ1RMX0lERU5UMSwKIAkJW0RSTV9WM0RfUEFSQU1fVjNEX0NPUkUw X0lERU5UMl0gPSBWM0RfQ1RMX0lERU5UMiwKIAl9OworCWludCByZXQ7CiAKIAlpZiAoYXJncy0+ cGFkICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0YXRpYyBp bnQgdjNkX2dldF9wYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQlpZiAoYXJncy0+dmFsdWUgIT0gMCkKIAkJCXJldHVybiAtRUlOVkFMOwogCisJCXJldCA9 IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwog CQlpZiAoYXJncy0+cGFyYW0gPj0gRFJNX1YzRF9QQVJBTV9WM0RfQ09SRTBfSURFTlQwICYmCiAJ CSAgICBhcmdzLT5wYXJhbSA8PSBEUk1fVjNEX1BBUkFNX1YzRF9DT1JFMF9JREVOVDIpIHsKIAkJ CWFyZ3MtPnZhbHVlID0gVjNEX0NPUkVfUkVBRCgwLCBvZmZzZXQpOwogCQl9IGVsc2UgewogCQkJ YXJncy0+dmFsdWUgPSBWM0RfUkVBRChvZmZzZXQpOwogCQl9CisKKwkJdjNkX3BtX3J1bnRpbWVf cHV0KHYzZCk7CisKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yOTAsMzYgKzI5OCw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHYzZF9vZl9tYXRjaFtdID0gewogfTsKIE1PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIHYzZF9vZl9tYXRjaCk7CiAKLXN0YXRpYyB2b2lkCi12M2RfaWRs ZV9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKLXsKLQlpZiAodjNkLT52ZXIgPCBWM0RfR0VOXzcx KQotCQlyZXR1cm47Ci0KLQlWM0RfU01TX1dSSVRFKFYzRF9TTVNfVEVFX0NTLCBWM0RfU01TX0NM RUFSX1BPV0VSX09GRik7Ci0KLQlpZiAod2FpdF9mb3IoKFYzRF9HRVRfRklFTEQoVjNEX1NNU19S RUFEKFYzRF9TTVNfVEVFX0NTKSwKLQkJCQkgICAgVjNEX1NNU19TVEFURSkgPT0gVjNEX1NNU19J RExFKSwgMTAwKSkgewotCQlkcm1fZXJyKCZ2M2QtPmRybSwgIkZhaWxlZCB0byBwb3dlciB1cCBT TVNcbiIpOwotCX0KLQotCXYzZF9yZXNldF9zbXModjNkKTsKLX0KLQotc3RhdGljIHZvaWQKLXYz ZF9wb3dlcl9vZmZfc21zKHN0cnVjdCB2M2RfZGV2ICp2M2QpCi17Ci0JaWYgKHYzZC0+dmVyIDwg VjNEX0dFTl83MSkKLQkJcmV0dXJuOwotCi0JVjNEX1NNU19XUklURShWM0RfU01TX1RFRV9DUywg VjNEX1NNU19QT1dFUl9PRkYpOwotCi0JaWYgKHdhaXRfZm9yKChWM0RfR0VUX0ZJRUxEKFYzRF9T TVNfUkVBRChWM0RfU01TX1RFRV9DUyksCi0JCQkJICAgIFYzRF9TTVNfU1RBVEUpID09IFYzRF9T TVNfUE9XRVJfT0ZGX1NUQVRFKSwgMTAwKSkgewotCQlkcm1fZXJyKCZ2M2QtPmRybSwgIkZhaWxl ZCB0byBwb3dlciBvZmYgU01TXG4iKTsKLQl9Ci19Ci0KIHN0YXRpYyBpbnQKIG1hcF9yZWdzKHN0 cnVjdCB2M2RfZGV2ICp2M2QsIHZvaWQgX19pb21lbSAqKnJlZ3MsIGNvbnN0IGNoYXIgKm5hbWUp CiB7CkBAIC00MDMsMTkgKzM4MSwyNiBAQCBzdGF0aWMgaW50IHYzZF9wbGF0Zm9ybV9kcm1fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAocmV0KQogCQlnb3RvIGRtYV9m cmVlOwogCi0JcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHYzZC0+Y2xrKTsKLQlpZiAocmV0KSB7 Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgIkNvdWxkbid0IGVuYWJsZSB0aGUgVjNEIGNsb2NrXG4i KTsKKwlyZXQgPSBkZXZtX3BtX3J1bnRpbWVfZW5hYmxlKGRldik7CisJaWYgKHJldCkKIAkJZ290 byBnZW1fZGVzdHJveTsKLQl9CiAKLQl2M2RfaWRsZV9zbXModjNkKTsKKwlyZXQgPSBwbV9ydW50 aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7CisJaWYgKHJldCkKKwkJZ290byBnZW1fZGVzdHJveTsK KworCS8qIElmIFBNIGlzIGRpc2FibGVkLCB3ZSBuZWVkIHRvIGNhbGwgdjNkX3Bvd2VyX3Jlc3Vt ZSgpIG1hbnVhbGx5LiAqLworCWlmICghSVNfRU5BQkxFRChDT05GSUdfUE0pKSB7CisJCXJldCA9 IHYzZF9wb3dlcl9yZXN1bWUoZGV2KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZ2VtX2Rlc3Ryb3k7 CisJfQogCiAJbW11X2RlYnVnID0gVjNEX1JFQUQoVjNEX01NVV9ERUJVR19JTkZPKTsKIAltYXNr ID0gRE1BX0JJVF9NQVNLKDMwICsgVjNEX0dFVF9GSUVMRChtbXVfZGVidWcsIFYzRF9NTVVfUEFf V0lEVEgpKTsKIAlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwgbWFzayk7CiAJ aWYgKHJldCkKLQkJZ290byBjbGtfZGlzYWJsZTsKKwkJZ290byBydW50aW1lX3BtX3B1dDsKIAog CWRtYV9zZXRfbWF4X3NlZ19zaXplKCZwZGV2LT5kZXYsIFVJTlRfTUFYKTsKIApAQCAtNDM1LDI3 ICs0MjAsMjYgQEAgc3RhdGljIGludCB2M2RfcGxhdGZvcm1fZHJtX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWRlbnQzID0gVjNEX1JFQUQoVjNEX0hVQl9JREVOVDMpOwog CXYzZC0+cmV2ID0gVjNEX0dFVF9GSUVMRChpZGVudDMsIFYzRF9IVUJfSURFTlQzX0lQUkVWKTsK IAotCXYzZF9pbml0X2h3X3N0YXRlKHYzZCk7Ci0JdjNkX21tdV9zZXRfcGFnZV90YWJsZSh2M2Qp OwotCXYzZF9pcnFfZW5hYmxlKHYzZCk7CisJcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVs YXkoZGV2LCAxMDApOworCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGRldik7CiAKIAlyZXQg PSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7CiAJaWYgKHJldCkKLQkJZ290byBpcnFfZGlzYWJs ZTsKKwkJZ290byBydW50aW1lX3BtX3B1dDsKIAogCXJldCA9IHYzZF9zeXNmc19pbml0KGRldik7 CiAJaWYgKHJldCkKIAkJZ290byBkcm1fdW5yZWdpc3RlcjsKIAorCXBtX3J1bnRpbWVfbWFya19s YXN0X2J1c3koZGV2KTsKKwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYpOworCiAJcmV0 dXJuIDA7CiAKIGRybV91bnJlZ2lzdGVyOgogCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOwotaXJx X2Rpc2FibGU6Ci0JdjNkX2lycV9kaXNhYmxlKHYzZCk7Ci1jbGtfZGlzYWJsZToKLQl2M2RfcG93 ZXJfb2ZmX3Ntcyh2M2QpOwotCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2M2QtPmNsayk7CitydW50 aW1lX3BtX3B1dDoKKwlwbV9ydW50aW1lX3B1dF9zeW5jX3N1c3BlbmQoZGV2KTsKIGdlbV9kZXN0 cm95OgogCXYzZF9nZW1fZGVzdHJveShkcm0pOwogZG1hX2ZyZWU6CkBAIC00NzMsMjEgKzQ1Nywy NyBAQCBzdGF0aWMgdm9pZCB2M2RfcGxhdGZvcm1fZHJtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogCiAJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7CiAKLQl2M2RfcG93ZXJf b2ZmX3Ntcyh2M2QpOworCXBtX3J1bnRpbWVfc3VzcGVuZChkZXYpOwogCi0JY2xrX2Rpc2FibGVf dW5wcmVwYXJlKHYzZC0+Y2xrKTsKKwkvKiBJZiBQTSBpcyBkaXNhYmxlZCwgd2UgbmVlZCB0byBj YWxsIHYzZF9wb3dlcl9zdXNwZW5kKCkgbWFudWFsbHkuICovCisJaWYgKCFJU19FTkFCTEVEKENP TkZJR19QTSkpCisJCXYzZF9wb3dlcl9zdXNwZW5kKGRldik7CiAKIAl2M2RfZ2VtX2Rlc3Ryb3ko ZHJtKTsKIAogCWRtYV9mcmVlX3djKGRldiwgNDA5NiwgdjNkLT5tbXVfc2NyYXRjaCwgdjNkLT5t bXVfc2NyYXRjaF9wYWRkcik7CiB9CiAKK3N0YXRpYyBERUZJTkVfUlVOVElNRV9ERVZfUE1fT1BT KHYzZF9wbV9vcHMsIHYzZF9wb3dlcl9zdXNwZW5kLAorCQkJCSB2M2RfcG93ZXJfcmVzdW1lLCBO VUxMKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdjNkX3BsYXRmb3JtX2RyaXZl ciA9IHsKIAkucHJvYmUJCT0gdjNkX3BsYXRmb3JtX2RybV9wcm9iZSwKIAkucmVtb3ZlCQk9IHYz ZF9wbGF0Zm9ybV9kcm1fcmVtb3ZlLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJ2M2QiLAog CQkub2ZfbWF0Y2hfdGFibGUgPSB2M2Rfb2ZfbWF0Y2gsCisJCS5wbSA9IHBtX3B0cigmdjNkX3Bt X29wcyksCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKaW5kZXggZWJmNDA2YjYxNWJiNTJk ZTljYjk4ZWE4ZWZlOTQxYTU3ODdmYjRiZC4uNGViZTE3NWE4YzZiMDAxNmQwODczODhjZTAyY2Qz NWE4YWU2NWExMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKQEAgLTMsNiArMyw3IEBACiAKICNpbmNs dWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8 bGludXgvcG1fcnVudGltZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrX3R5cGVzLmg+CiAj aW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAKQEAgLTMyNCw2ICszMjUsOCBAQCBzdHJ1Y3Qg djNkX2pvYiB7CiAKIAkvKiBDYWxsYmFjayBmb3IgdGhlIGZyZWVpbmcgb2YgdGhlIGpvYiBvbiBy ZWZjb3VudCBnb2luZyB0byAwLiAqLwogCXZvaWQgKCpmcmVlKShzdHJ1Y3Qga3JlZiAqcmVmKTsK KworCWJvb2wgaGFzX3BtX3JlZjsKIH07CiAKIHN0cnVjdCB2M2RfYmluX2pvYiB7CkBAIC01OTcs NiArNjAwLDIwIEBAIGludCB2M2RfbW11X3NldF9wYWdlX3RhYmxlKHN0cnVjdCB2M2RfZGV2ICp2 M2QpOwogdm9pZCB2M2RfbW11X2luc2VydF9wdGVzKHN0cnVjdCB2M2RfYm8gKmJvKTsKIHZvaWQg djNkX21tdV9yZW1vdmVfcHRlcyhzdHJ1Y3QgdjNkX2JvICpibyk7CiAKKy8qIHYzZF9wb3dlci5j ICovCitpbnQgdjNkX3Bvd2VyX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsKK2ludCB2M2Rf cG93ZXJfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7CisKK3N0YXRpYyBfX2Fsd2F5c19pbmxp bmUgaW50IHYzZF9wbV9ydW50aW1lX2dldChzdHJ1Y3QgdjNkX2RldiAqdjNkKQoreworCXJldHVy biBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KHYzZC0+ZHJtLmRldik7Cit9CisKK3N0YXRpYyBf X2Fsd2F5c19pbmxpbmUgaW50IHYzZF9wbV9ydW50aW1lX3B1dChzdHJ1Y3QgdjNkX2RldiAqdjNk KQoreworCXJldHVybiBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZCh2M2QtPmRybS5kZXYpOwor fQorCiAvKiB2M2Rfc2NoZWQuYyAqLwogdm9pZCB2M2RfdGltZXN0YW1wX3F1ZXJ5X2luZm9fZnJl ZShzdHJ1Y3QgdjNkX3RpbWVzdGFtcF9xdWVyeV9pbmZvICpxdWVyeV9pbmZvLAogCQkJCSAgIHVu c2lnbmVkIGludCBjb3VudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9t bXUuYyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jCmluZGV4IGM1MTNhMzkzYzAzMTM3 NzI2NTBmZDZkNzIzNjEyN2IyZGM0MTAxZDkuLjYzMGM2NGU1MWQyZjJhZDMwZTU5ZmEyYjE3NTQ4 N2VmZTBiZmJhNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jCkBAIC0zOSw3ICszOSwxMSBAQCBzdGF0 aWMgYm9vbCB2M2RfbW11X2lzX2FsaWduZWQodTMyIHBhZ2UsIHUzMiBwYWdlX2FkZHJlc3MsIHNp emVfdCBhbGlnbm1lbnQpCiAKIGludCB2M2RfbW11X2ZsdXNoX2FsbChzdHJ1Y3QgdjNkX2RldiAq djNkKQogewotCWludCByZXQ7CisJaW50IHJldCA9IDA7CisKKwkvKiBGbHVzaCB0aGUgUFRzIG9u bHkgaWYgd2UncmUgYWxyZWFkeSBhd2FrZSAqLworCWlmICghcG1fcnVudGltZV9nZXRfaWZfYWN0 aXZlKHYzZC0+ZHJtLmRldikpCisJCXJldHVybiAwOwogCiAJVjNEX1dSSVRFKFYzRF9NTVVDX0NP TlRST0wsIFYzRF9NTVVDX0NPTlRST0xfRkxVU0ggfAogCQkgIFYzRF9NTVVDX0NPTlRST0xfRU5B QkxFKTsKQEAgLTQ4LDcgKzUyLDcgQEAgaW50IHYzZF9tbXVfZmx1c2hfYWxsKHN0cnVjdCB2M2Rf ZGV2ICp2M2QpCiAJCQkgVjNEX01NVUNfQ09OVFJPTF9GTFVTSElORyksIDEwMCk7CiAJaWYgKHJl dCkgewogCQlkZXZfZXJyKHYzZC0+ZHJtLmRldiwgIk1NVUMgZmx1c2ggd2FpdCBpZGxlIGZhaWxl ZFxuIik7Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gcG1fcHV0OwogCX0KIAogCVYzRF9XUklURShW M0RfTU1VX0NUTCwgVjNEX1JFQUQoVjNEX01NVV9DVEwpIHwKQEAgLTU5LDYgKzYzLDggQEAgaW50 IHYzZF9tbXVfZmx1c2hfYWxsKHN0cnVjdCB2M2RfZGV2ICp2M2QpCiAJaWYgKHJldCkKIAkJZGV2 X2Vycih2M2QtPmRybS5kZXYsICJNTVUgVExCIGNsZWFyIHdhaXQgaWRsZSBmYWlsZWRcbiIpOwog CitwbV9wdXQ6CisJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CiAJcmV0dXJuIHJldDsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jIGIvZHJpdmVycy9n cHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jCmluZGV4IDhlMDI0OTU4MGJiYWNhYzUwN2IyZDdjMGJj YWMzN2VmMTljMWE1NGUuLjAyNDUxZmMwOWRiYmY2ZDMzNjQwMDAwMjQ5Nzg2ZTI4MzY3MzI2NDcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3BlcmZtb24uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMKQEAgLTIzMiw2ICsyMzIsOSBAQCB2b2lkIHYz ZF9wZXJmbW9uX3N0YXJ0KHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVyZm1vbiAq cGVyZm1vbikKIAlpZiAoV0FSTl9PTl9PTkNFKCFwZXJmbW9uIHx8IHYzZC0+YWN0aXZlX3BlcmZt b24pKQogCQlyZXR1cm47CiAKKwlpZiAoIXBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSh2M2QtPmRy bS5kZXYpKQorCQlyZXR1cm47CisKIAluY291bnRlcnMgPSBwZXJmbW9uLT5uY291bnRlcnM7CiAJ bWFzayA9IEdFTk1BU0sobmNvdW50ZXJzIC0gMSwgMCk7CiAKQEAgLTI1Nyw2ICsyNjAsOCBAQCB2 b2lkIHYzZF9wZXJmbW9uX3N0YXJ0KHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVy Zm1vbiAqcGVyZm1vbikKIAlWM0RfQ09SRV9XUklURSgwLCBWM0RfUENUUl8wX09WRVJGTE9XLCBt YXNrKTsKIAogCXYzZC0+YWN0aXZlX3BlcmZtb24gPSBwZXJmbW9uOworCisJdjNkX3BtX3J1bnRp bWVfcHV0KHYzZCk7CiB9CiAKIHZvaWQgdjNkX3BlcmZtb25fc3RvcChzdHJ1Y3QgdjNkX2RldiAq djNkLCBzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCkBAIC0yNjgsMTAgKzI3MywxMSBAQCB2 b2lkIHYzZF9wZXJmbW9uX3N0b3Aoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJm bW9uICpwZXJmbW9uLAogCQlyZXR1cm47CiAKIAltdXRleF9sb2NrKCZwZXJmbW9uLT5sb2NrKTsK LQlpZiAocGVyZm1vbiAhPSB2M2QtPmFjdGl2ZV9wZXJmbW9uKSB7Ci0JCW11dGV4X3VubG9jaygm cGVyZm1vbi0+bG9jayk7Ci0JCXJldHVybjsKLQl9CisJaWYgKHBlcmZtb24gIT0gdjNkLT5hY3Rp dmVfcGVyZm1vbikKKwkJZ290byBvdXQ7CisKKwlpZiAoIXBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2 ZSh2M2QtPmRybS5kZXYpKQorCQlnb3RvIG91dF9jbGVhcjsKIAogCWlmIChjYXB0dXJlKQogCQlm b3IgKGkgPSAwOyBpIDwgcGVyZm1vbi0+bmNvdW50ZXJzOyBpKyspCkBAIC0yNzksNyArMjg1LDEx IEBAIHZvaWQgdjNkX3BlcmZtb25fc3RvcChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgdjNk X3BlcmZtb24gKnBlcmZtb24sCiAKIAlWM0RfQ09SRV9XUklURSgwLCBWM0RfVjRfUENUUl8wX0VO LCAwKTsKIAorCXYzZF9wbV9ydW50aW1lX3B1dCh2M2QpOworCitvdXRfY2xlYXI6CiAJdjNkLT5h Y3RpdmVfcGVyZm1vbiA9IE5VTEw7CitvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZwZXJmbW9uLT5sb2Nr KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS92M2QvdjNkX3Bvd2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI3ZTYzOWQ1ZGEzMGM3 OThjY2MxMmNjMTU1OWUwMDU5MTVlMmQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3Bvd2VyLmMKQEAgLTAsMCArMSw2OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjArCisvKiBDb3B5cmlnaHQgKEMpIDIwMjYgUmFzcGJlcnJ5IFBpICov CisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4K KworI2luY2x1ZGUgInYzZF9kcnYuaCIKKyNpbmNsdWRlICJ2M2RfcmVncy5oIgorCitzdGF0aWMg dm9pZAordjNkX3Jlc3VtZV9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlpZiAodjNkLT52 ZXIgPCBWM0RfR0VOXzcxKQorCQlyZXR1cm47CisKKwlWM0RfU01TX1dSSVRFKFYzRF9TTVNfVEVF X0NTLCBWM0RfU01TX0NMRUFSX1BPV0VSX09GRik7CisKKwlpZiAod2FpdF9mb3IoKFYzRF9HRVRf RklFTEQoVjNEX1NNU19SRUFEKFYzRF9TTVNfVEVFX0NTKSwKKwkJCQkgICAgVjNEX1NNU19TVEFU RSkgPT0gVjNEX1NNU19JRExFKSwgMTAwKSkgeworCQlkcm1fZXJyKCZ2M2QtPmRybSwgIkZhaWxl ZCB0byBwb3dlciB1cCBTTVNcbiIpOworCX0KKworCXYzZF9yZXNldF9zbXModjNkKTsKK30KKwor c3RhdGljIHZvaWQKK3YzZF9zdXNwZW5kX3NtcyhzdHJ1Y3QgdjNkX2RldiAqdjNkKQoreworCWlm ICh2M2QtPnZlciA8IFYzRF9HRU5fNzEpCisJCXJldHVybjsKKworCVYzRF9TTVNfV1JJVEUoVjNE X1NNU19URUVfQ1MsIFYzRF9TTVNfUE9XRVJfT0ZGKTsKKworCWlmICh3YWl0X2ZvcigoVjNEX0dF VF9GSUVMRChWM0RfU01TX1JFQUQoVjNEX1NNU19URUVfQ1MpLAorCQkJCSAgICBWM0RfU01TX1NU QVRFKSA9PSBWM0RfU01TX1BPV0VSX09GRl9TVEFURSksIDEwMCkpIHsKKwkJZHJtX2VycigmdjNk LT5kcm0sICJGYWlsZWQgdG8gcG93ZXIgb2ZmIFNNU1xuIik7CisJfQorfQorCitpbnQgdjNkX3Bv d2VyX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdG9fdjNk X2Rldihkcm0pOworCisJdjNkX2lycV9kaXNhYmxlKHYzZCk7CisJdjNkX3N1c3BlbmRfc21zKHYz ZCk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHYzZC0+Y2xrKTsKKworCXJldHVybiAwOworfQor CitpbnQgdjNkX3Bvd2VyX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRybSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCB2M2RfZGV2ICp2 M2QgPSB0b192M2RfZGV2KGRybSk7CisJaW50IHJldDsKKworCXJldCA9IGNsa19wcmVwYXJlX2Vu YWJsZSh2M2QtPmNsayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXYzZF9yZXN1bWVf c21zKHYzZCk7CisJdjNkX2luaXRfaHdfc3RhdGUodjNkKTsKKwl2M2RfbW11X3NldF9wYWdlX3Rh YmxlKHYzZCk7CisJdjNkX2lycV9lbmFibGUodjNkKTsKKworCXJldHVybiAwOworfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0v djNkL3YzZF9zdWJtaXQuYwppbmRleCA4ZjA2MWI2YTA1YzZhYTc2ZWE1NTEzNDA3ZWJmM2MwY2U4 MGI4MjU2Li5mNzVkYTJlMzUzM2UyMzY4MjE4MTg5MjRmOTFlYzYwMjk1MGFmODVhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdjNkL3YzZF9zdWJtaXQuYwpAQCAtMTA2LDYgKzEwNiw5IEBAIHYzZF9qb2JfZnJlZShzdHJ1 Y3Qga3JlZiAqcmVmKQogCXYzZF9zdGF0c19wdXQoam9iLT5jbGllbnRfc3RhdHMpOwogCXYzZF9z dGF0c19wdXQoam9iLT5nbG9iYWxfc3RhdHMpOwogCisJaWYgKGpvYi0+aGFzX3BtX3JlZikKKwkJ djNkX3BtX3J1bnRpbWVfcHV0KGpvYi0+djNkKTsKKwogCWtmcmVlKGpvYik7CiB9CiAKQEAgLTE4 NywxMyArMTkwLDEzIEBAIHYzZF9qb2JfaW5pdChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCQlpZiAoY29weV9mcm9tX3VzZXIoJmluLCBoYW5kbGUr Kywgc2l6ZW9mKGluKSkpIHsKIAkJCQkJcmV0ID0gLUVGQVVMVDsKIAkJCQkJZHJtX2RiZygmdjNk LT5kcm0sICJGYWlsZWQgdG8gY29weSB3YWl0IGRlcCBoYW5kbGUuXG4iKTsKLQkJCQkJZ290byBm YWlsX2RlcHM7CisJCQkJCWdvdG8gZmFpbF9qb2JfaW5pdDsKIAkJCQl9CiAJCQkJcmV0ID0gZHJt X3NjaGVkX2pvYl9hZGRfc3luY29ial9kZXBlbmRlbmN5KCZqb2ItPmJhc2UsIGZpbGVfcHJpdiwg aW4uaGFuZGxlLCAwKTsKIAogCQkJCS8vIFRPRE86IEludmVzdGlnYXRlIHdoeSB0aGlzIHdhcyBm aWx0ZXJlZCBvdXQgZm9yIHRoZSBJT0NUTC4KIAkJCQlpZiAocmV0ICYmIHJldCAhPSAtRU5PRU5U KQotCQkJCQlnb3RvIGZhaWxfZGVwczsKKwkJCQkJZ290byBmYWlsX2pvYl9pbml0OwogCQkJfQog CQl9CiAJfSBlbHNlIHsKQEAgLTIwMSw3ICsyMDQsMTUgQEAgdjNkX2pvYl9pbml0KHN0cnVjdCB2 M2RfZGV2ICp2M2QsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCiAJCS8vIFRPRE86IElu dmVzdGlnYXRlIHdoeSB0aGlzIHdhcyBmaWx0ZXJlZCBvdXQgZm9yIHRoZSBJT0NUTC4KIAkJaWYg KHJldCAmJiByZXQgIT0gLUVOT0VOVCkKLQkJCWdvdG8gZmFpbF9kZXBzOworCQkJZ290byBmYWls X2pvYl9pbml0OworCX0KKworCS8qIENQVSBqb2JzIGRvbid0IHJlcXVpcmUgaGFyZHdhcmUgcmVz b3VyY2VzICovCisJaWYgKHF1ZXVlICE9IFYzRF9DUFUpIHsKKwkJcmV0ID0gdjNkX3BtX3J1bnRp bWVfZ2V0KHYzZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGZhaWxfam9iX2luaXQ7CisJCWpvYi0+ aGFzX3BtX3JlZiA9IHRydWU7CiAJfQogCiAJa3JlZl9pbml0KCZqb2ItPnJlZmNvdW50KTsKQEAg LTIxMSw3ICsyMjIsNyBAQCB2M2Rfam9iX2luaXQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYsCiAKIAlyZXR1cm4gMDsKIAotZmFpbF9kZXBzOgorZmFpbF9q b2JfaW5pdDoKIAlkcm1fc2NoZWRfam9iX2NsZWFudXAoJmpvYi0+YmFzZSk7CiAJcmV0dXJuIHJl dDsKIH0KCi0tIAoyLjUzLjAKCg==