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 E9330106ACEC for ; Thu, 12 Mar 2026 21:35:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5AB4E10EABC; Thu, 12 Mar 2026 21:35:26 +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="OyRrRqt2"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F1CC10EABC for ; Thu, 12 Mar 2026 21:35: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=FMhYMUIA+rmmjTC9cc5lkS2wNpG0dblTLtbRm2ExL8k=; b=OyRrRqt2c5KEiPyHGuri9bvr4J lWtIxUgtrqQV1GC4ILIeR4sKTVvTPEq6535JUmUI0HK88u5qW7Vb3yG2UDIFwkCKxxyKz7iMdhUiS 5ZCP9ccMtBoGInYYTN7S3L/dUEIDWmRtH4krxmLeoylVWOdV14iTEMNw+xoUqHQ9Cts1QowNdNFcr nsI/5HJy9jh1mmI2lWVbckkJMVfzC229ldPoN01TZ6k5t3u+4wuow5WXw/NFWin65LWiKUy4F5OdX bTurjnH9A4eDgyFqLZxTNx9ylkTpQtnZHLB+uqyQfssgWJYjDpw5niotVZ7UzXUyXbiUd/s5b8W2S 06+O8PsA==; Received: from [189.7.87.203] (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 1w0ngZ-00ElyQ-GY; Thu, 12 Mar 2026 22:35:15 +0100 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Thu, 12 Mar 2026 18:34:27 -0300 Subject: [PATCH v7 5/5] drm/v3d: Introduce Runtime Power Management MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260312-v3d-power-management-v7-5-9f006a1d4c55@igalia.com> References: <20260312-v3d-power-management-v7-0-9f006a1d4c55@igalia.com> In-Reply-To: <20260312-v3d-power-management-v7-0-9f006a1d4c55@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, 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=15376; i=mcanal@igalia.com; h=from:subject:message-id; bh=IOrErYweIQyMY7Bvr5rM7vBZu0GA8XG7a98tHPh6Pm4=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBpszFsCXNamHQWzSaZgs58hmMXMLGKNMuJEqT9+ /DoJ3ulx86JATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCabMxbAAKCRA/8w6Kdoj6 qi/HB/9ZF3qiS0c7R9g/TVfni/CYSOumLjwnSFuxtQ9sRFpcCCqvnCrdqZlLbqvme7Jcp73jmGU 37q9Ue39HBMguUW1Eu6i/PL7BOszllmE5Hb8G/MQM9u4Lj3gkG0ttYfbtSTYc+aW9Je6UvfGHCa l1CoDTEXMEW/0IV1c8wXAE8dbEPJVKaBCa3QarCnCPydb5kmRxeNpzVUaiC+jSvbIRbGxlDcSvC 9gUrx94pyYRiCYC+vAohVo8riY77l7rQJ80DxdnvM3+GfOo1yl1nEHOJqCSyFsNbZPkC5lV5cXS LwcDP/D95Jy/nXzSc7FxAOQFjuvuErBED7kHSPlk4K7abMxC 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 ZC9NYWtlZmlsZSAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZGVidWdmcy5j IHwgMjMgKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmMgICAgIHwgODQg KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2RfZHJ2LmggICAgIHwgMTcgKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21t dS5jICAgICB8IDEwICsrKystCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMgfCAx OCArKysrKystLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIuYyAgIHwgODggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3Yz ZF9zdWJtaXQuYyAgfCAxOSArKysrKysrLS0KIDggZmlsZXMgY2hhbmdlZCwgMjAyIGluc2VydGlv bnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2Qv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL01ha2VmaWxlCmluZGV4IGI3ZDY3M2YxMTUz YmVmMTZkYjM4MDBlNTBiMmJmYWYzNmJmODg3MWIuLjYwMWI4MzRlMzc3ZTgzNDJjNjY2ODY0NTEx MjM0N2NjYTQyMTQwMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC9NYWtlZmlsZQpAQCAtMTAsNiArMTAsNyBAQCB2M2Qt eSA6PSBcCiAJdjNkX2lycS5vIFwKIAl2M2RfbW11Lm8gXAogCXYzZF9wZXJmbW9uLm8gXAorCXYz ZF9wb3dlci5vIFwKIAl2M2RfdHJhY2VfcG9pbnRzLm8gXAogCXYzZF9zY2hlZC5vIFwKIAl2M2Rf c3lzZnMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKaW5kZXggODlmMjRlZWM2MmE3NGVj NDliMjhmMGIyMmRiZjYyNmJhN2EzNTIwNi4uNjM0Y2M3OTZiYTIzMjRkYzQ5NzY5NGMwNzBmMmNm ZmZjYzQ0MjRjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZGVidWdmcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMuYwpAQCAtOTcsNyArOTcsMTEg QEAgc3RhdGljIGludCB2M2RfdjNkX2RlYnVnZnNfcmVncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKIAlzdHJ1Y3QgZHJtX2RlYnVnZnNfZW50cnkgKmVudHJ5ID0gbS0+cHJpdmF0 ZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW50cnktPmRldjsKIAlzdHJ1Y3QgdjNkX2Rl diAqdjNkID0gdG9fdjNkX2RldihkZXYpOwotCWludCBpLCBjb3JlOworCWludCBpLCBjb3JlLCBy ZXQ7CisKKwlyZXQgPSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OwogCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodjNkX2h1Yl9yZWdfZGVmcyk7 IGkrKykgewogCQljb25zdCBzdHJ1Y3QgdjNkX3JlZ19kZWYgKmRlZiA9ICZ2M2RfaHViX3JlZ19k ZWZzW2ldOwpAQCAtMTM5LDYgKzE0Myw4IEBAIHN0YXRpYyBpbnQgdjNkX3YzZF9kZWJ1Z2ZzX3Jl Z3Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCX0KIAl9CiAKKwl2M2RfcG1f cnVudGltZV9wdXQodjNkKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xNDgsNyArMTU0LDExIEBA IHN0YXRpYyBpbnQgdjNkX3YzZF9kZWJ1Z2ZzX2lkZW50KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbnRyeS0+ZGV2OwogCXN0cnVj dCB2M2RfZGV2ICp2M2QgPSB0b192M2RfZGV2KGRldik7CiAJdTMyIGlkZW50MCwgaWRlbnQxLCBp ZGVudDIsIGlkZW50MywgY29yZXM7Ci0JaW50IGNvcmU7CisJaW50IGNvcmUsIHJldDsKKworCXJl dCA9IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAK IAlpZGVudDAgPSBWM0RfUkVBRChWM0RfSFVCX0lERU5UMCk7CiAJaWRlbnQxID0gVjNEX1JFQUQo VjNEX0hVQl9JREVOVDEpOwpAQCAtMjA3LDYgKzIxNyw4IEBAIHN0YXRpYyBpbnQgdjNkX3YzZF9k ZWJ1Z2ZzX2lkZW50KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQl9CiAJfQog CisJdjNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjM0LDYg KzI0NiwxMSBAQCBzdGF0aWMgaW50IHYzZF9tZWFzdXJlX2Nsb2NrKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqdW51c2VkKQogCXVpbnQzMl90IGN5Y2xlczsKIAlpbnQgY29yZSA9IDA7CiAJaW50 IG1lYXN1cmVfbXMgPSAxMDAwOworCWludCByZXQ7CisKKwlyZXQgPSB2M2RfcG1fcnVudGltZV9n ZXQodjNkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJaWYgKHYzZC0+dmVyID49IFYz RF9HRU5fNDEpIHsKIAkJaW50IGN5Y2xlX2NvdW50X3JlZyA9IFYzRF9QQ1RSX0NZQ0xFX0NPVU5U KHYzZC0+dmVyKTsKQEAgLTI1Myw2ICsyNzAsOCBAQCBzdGF0aWMgaW50IHYzZF9tZWFzdXJlX2Ns b2NrKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCW1zbGVlcChtZWFzdXJlX21z KTsKIAljeWNsZXMgPSBWM0RfQ09SRV9SRUFEKGNvcmUsIFYzRF9QQ1RSXzBfUENUUjApOwogCisJ djNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisKIAlzZXFfcHJpbnRmKG0sICJjeWNsZXM6ICVkICgl ZC4lZCBNaHopXG4iLAogCQkgICBjeWNsZXMsCiAJCSAgIGN5Y2xlcyAvIChtZWFzdXJlX21zICog MTAwMCksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jCmluZGV4IDZkNjk2NjljZjc3NjA5M2Y3NGM2Nzk4NWE5 NTc2MTdmMzEzNWJiYzEuLjY0MzRlMDE3NmEwN2QyYzExM2I2Y2ZlMzhjNjQwODMyNTcyZmQzYjIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS92M2QvdjNkX2Rydi5jCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBpbnQgdjNkX2dl dF9wYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlbRFJN X1YzRF9QQVJBTV9WM0RfQ09SRTBfSURFTlQxXSA9IFYzRF9DVExfSURFTlQxLAogCQlbRFJNX1Yz RF9QQVJBTV9WM0RfQ09SRTBfSURFTlQyXSA9IFYzRF9DVExfSURFTlQyLAogCX07CisJaW50IHJl dDsKIAogCWlmIChhcmdzLT5wYWQgIT0gMCkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NSwxMiAr NzYsMTkgQEAgc3RhdGljIGludCB2M2RfZ2V0X3BhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCWlmIChhcmdzLT52YWx1ZSAhPSAwKQogCQkJcmV0dXJuIC1F SU5WQUw7CiAKKwkJcmV0ID0gdjNkX3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJCWlmIChyZXQpCisJ CQlyZXR1cm4gcmV0OworCiAJCWlmIChhcmdzLT5wYXJhbSA+PSBEUk1fVjNEX1BBUkFNX1YzRF9D T1JFMF9JREVOVDAgJiYKIAkJICAgIGFyZ3MtPnBhcmFtIDw9IERSTV9WM0RfUEFSQU1fVjNEX0NP UkUwX0lERU5UMikgewogCQkJYXJncy0+dmFsdWUgPSBWM0RfQ09SRV9SRUFEKDAsIG9mZnNldCk7 CiAJCX0gZWxzZSB7CiAJCQlhcmdzLT52YWx1ZSA9IFYzRF9SRUFEKG9mZnNldCk7CiAJCX0KKwor CQl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKKwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTI4Nywz NiArMjk1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdjNkX29mX21hdGNo W10gPSB7CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdjNkX29mX21hdGNoKTsKIAotc3Rh dGljIHZvaWQKLXYzZF9pZGxlX3NtcyhzdHJ1Y3QgdjNkX2RldiAqdjNkKQotewotCWlmICh2M2Qt PnZlciA8IFYzRF9HRU5fNzEpCi0JCXJldHVybjsKLQotCVYzRF9TTVNfV1JJVEUoVjNEX1NNU19U RUVfQ1MsIFYzRF9TTVNfQ0xFQVJfUE9XRVJfT0ZGKTsKLQotCWlmICh3YWl0X2ZvcigoVjNEX0dF VF9GSUVMRChWM0RfU01TX1JFQUQoVjNEX1NNU19URUVfQ1MpLAotCQkJCSAgICBWM0RfU01TX1NU QVRFKSA9PSBWM0RfU01TX0lETEUpLCAxMDApKSB7Ci0JCWRybV9lcnIoJnYzZC0+ZHJtLCAiRmFp bGVkIHRvIHBvd2VyIHVwIFNNU1xuIik7Ci0JfQotCi0JdjNkX3Jlc2V0X3Ntcyh2M2QpOwotfQot Ci1zdGF0aWMgdm9pZAotdjNkX3Bvd2VyX29mZl9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKLXsK LQlpZiAodjNkLT52ZXIgPCBWM0RfR0VOXzcxKQotCQlyZXR1cm47Ci0KLQlWM0RfU01TX1dSSVRF KFYzRF9TTVNfVEVFX0NTLCBWM0RfU01TX1BPV0VSX09GRik7Ci0KLQlpZiAod2FpdF9mb3IoKFYz RF9HRVRfRklFTEQoVjNEX1NNU19SRUFEKFYzRF9TTVNfVEVFX0NTKSwKLQkJCQkgICAgVjNEX1NN U19TVEFURSkgPT0gVjNEX1NNU19QT1dFUl9PRkZfU1RBVEUpLCAxMDApKSB7Ci0JCWRybV9lcnIo JnYzZC0+ZHJtLCAiRmFpbGVkIHRvIHBvd2VyIG9mZiBTTVNcbiIpOwotCX0KLX0KLQogc3RhdGlj IGludAogbWFwX3JlZ3Moc3RydWN0IHYzZF9kZXYgKnYzZCwgdm9pZCBfX2lvbWVtICoqcmVncywg Y29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTQwMCwxOSArMzc4LDI2IEBAIHN0YXRpYyBpbnQgdjNk X3BsYXRmb3JtX2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChy ZXQpCiAJCWdvdG8gZG1hX2ZyZWU7CiAKLQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUodjNkLT5j bGspOwotCWlmIChyZXQpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiQ291bGRuJ3QgZW5hYmxl IHRoZSBWM0QgY2xvY2tcbiIpOworCXJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTsK KwlpZiAocmV0KQogCQlnb3RvIGdlbV9kZXN0cm95OwotCX0KIAotCXYzZF9pZGxlX3Ntcyh2M2Qp OworCXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoZGV2KTsKKwlpZiAocmV0KQorCQln b3RvIGdlbV9kZXN0cm95OworCisJLyogSWYgUE0gaXMgZGlzYWJsZWQsIHdlIG5lZWQgdG8gY2Fs bCB2M2RfcG93ZXJfcmVzdW1lKCkgbWFudWFsbHkuICovCisJaWYgKCFJU19FTkFCTEVEKENPTkZJ R19QTSkpIHsKKwkJcmV0ID0gdjNkX3Bvd2VyX3Jlc3VtZShkZXYpOworCQlpZiAocmV0KQorCQkJ Z290byBnZW1fZGVzdHJveTsKKwl9CiAKIAltbXVfZGVidWcgPSBWM0RfUkVBRChWM0RfTU1VX0RF QlVHX0lORk8pOwogCW1hc2sgPSBETUFfQklUX01BU0soMzAgKyBWM0RfR0VUX0ZJRUxEKG1tdV9k ZWJ1ZywgVjNEX01NVV9QQV9XSURUSCkpOwogCXJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJl bnQoZGV2LCBtYXNrKTsKIAlpZiAocmV0KQotCQlnb3RvIGNsa19kaXNhYmxlOworCQlnb3RvIHJ1 bnRpbWVfcG1fcHV0OwogCiAJZG1hX3NldF9tYXhfc2VnX3NpemUoJnBkZXYtPmRldiwgVUlOVF9N QVgpOwogCkBAIC00MzMsMjYgKzQxOCwyNyBAQCBzdGF0aWMgaW50IHYzZF9wbGF0Zm9ybV9kcm1f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl2M2QtPnJldiA9IFYzRF9HRVRf RklFTEQoaWRlbnQzLCBWM0RfSFVCX0lERU5UM19JUFJFVik7CiAKIAl2M2RfaW5pdF9od19zdGF0 ZSh2M2QpOwotCXYzZF9tbXVfc2V0X3BhZ2VfdGFibGUodjNkKTsKLQl2M2RfaXJxX2VuYWJsZSh2 M2QpOworCisJcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCA1MCk7CisJcG1f cnVudGltZV91c2VfYXV0b3N1c3BlbmQoZGV2KTsKIAogCXJldCA9IGRybV9kZXZfcmVnaXN0ZXIo ZHJtLCAwKTsKIAlpZiAocmV0KQotCQlnb3RvIGlycV9kaXNhYmxlOworCQlnb3RvIHJ1bnRpbWVf cG1fcHV0OwogCiAJcmV0ID0gdjNkX3N5c2ZzX2luaXQoZGV2KTsKIAlpZiAocmV0KQogCQlnb3Rv IGRybV91bnJlZ2lzdGVyOwogCisJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShkZXYpOworCXBt X3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7CisKIAlyZXR1cm4gMDsKIAogZHJtX3VucmVn aXN0ZXI6CiAJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7Ci1pcnFfZGlzYWJsZToKLQl2M2RfaXJx X2Rpc2FibGUodjNkKTsKLWNsa19kaXNhYmxlOgotCXYzZF9wb3dlcl9vZmZfc21zKHYzZCk7Ci0J Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHYzZC0+Y2xrKTsKK3J1bnRpbWVfcG1fcHV0OgorCXBtX3J1 bnRpbWVfcHV0X3N5bmNfc3VzcGVuZChkZXYpOwogZ2VtX2Rlc3Ryb3k6CiAJdjNkX2dlbV9kZXN0 cm95KGRybSk7CiBkbWFfZnJlZToKQEAgLTQ3MCwyMSArNDU2LDI3IEBAIHN0YXRpYyB2b2lkIHYz ZF9wbGF0Zm9ybV9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAlk cm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsKIAotCXYzZF9wb3dlcl9vZmZfc21zKHYzZCk7CisJcG1f cnVudGltZV9zdXNwZW5kKGRldik7CiAKLQljbGtfZGlzYWJsZV91bnByZXBhcmUodjNkLT5jbGsp OworCS8qIElmIFBNIGlzIGRpc2FibGVkLCB3ZSBuZWVkIHRvIGNhbGwgdjNkX3Bvd2VyX3N1c3Bl bmQoKSBtYW51YWxseS4gKi8KKwlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BNKSkKKwkJdjNkX3Bv d2VyX3N1c3BlbmQoZGV2KTsKIAogCXYzZF9nZW1fZGVzdHJveShkcm0pOwogCiAJZG1hX2ZyZWVf d2MoZGV2LCA0MDk2LCB2M2QtPm1tdV9zY3JhdGNoLCB2M2QtPm1tdV9zY3JhdGNoX3BhZGRyKTsK IH0KIAorc3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFModjNkX3BtX29wcywgdjNkX3Bv d2VyX3N1c3BlbmQsCisJCQkJIHYzZF9wb3dlcl9yZXN1bWUsIE5VTEwpOworCiBzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciB2M2RfcGxhdGZvcm1fZHJpdmVyID0gewogCS5wcm9iZQkJPSB2 M2RfcGxhdGZvcm1fZHJtX3Byb2JlLAogCS5yZW1vdmUJCT0gdjNkX3BsYXRmb3JtX2RybV9yZW1v dmUsCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gInYzZCIsCiAJCS5vZl9tYXRjaF90YWJsZSA9 IHYzZF9vZl9tYXRjaCwKKwkJLnBtID0gcG1fcHRyKCZ2M2RfcG1fb3BzKSwKIAl9LAogfTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vdjNkL3YzZF9kcnYuaAppbmRleCBmZjkwZWY2ODc2ZDY1MjQxOTc1ZjI1OWI0NGM2ZjA5OTQx ZDEyZWNiLi5mZjYxYTI1MTA3NDJlNDZmMjQ2ZjM5MzVkMmQwNDg3ZDcyMDJiMjAxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v djNkL3YzZF9kcnYuaApAQCAtMyw2ICszLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+ CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+ CiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2tfdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC93b3Jr cXVldWUuaD4KIApAQCAtMzIxLDYgKzMyMiw4IEBAIHN0cnVjdCB2M2Rfam9iIHsKIAogCS8qIENh bGxiYWNrIGZvciB0aGUgZnJlZWluZyBvZiB0aGUgam9iIG9uIHJlZmNvdW50IGdvaW5nIHRvIDAu ICovCiAJdm9pZCAoKmZyZWUpKHN0cnVjdCBrcmVmICpyZWYpOworCisJYm9vbCBoYXNfcG1fcmVm OwogfTsKIAogc3RydWN0IHYzZF9iaW5fam9iIHsKQEAgLTU5NCw2ICs1OTcsMjAgQEAgaW50IHYz ZF9tbXVfc2V0X3BhZ2VfdGFibGUoc3RydWN0IHYzZF9kZXYgKnYzZCk7CiB2b2lkIHYzZF9tbXVf aW5zZXJ0X3B0ZXMoc3RydWN0IHYzZF9ibyAqYm8pOwogdm9pZCB2M2RfbW11X3JlbW92ZV9wdGVz KHN0cnVjdCB2M2RfYm8gKmJvKTsKIAorLyogdjNkX3Bvd2VyLmMgKi8KK2ludCB2M2RfcG93ZXJf c3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOworaW50IHYzZF9wb3dlcl9yZXN1bWUoc3RydWN0 IGRldmljZSAqZGV2KTsKKworc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgdjNkX3BtX3J1bnRp bWVfZ2V0KHN0cnVjdCB2M2RfZGV2ICp2M2QpCit7CisJcmV0dXJuIHBtX3J1bnRpbWVfcmVzdW1l X2FuZF9nZXQodjNkLT5kcm0uZGV2KTsKK30KKworc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQg djNkX3BtX3J1bnRpbWVfcHV0KHN0cnVjdCB2M2RfZGV2ICp2M2QpCit7CisJcmV0dXJuIHBtX3J1 bnRpbWVfcHV0X2F1dG9zdXNwZW5kKHYzZC0+ZHJtLmRldik7Cit9CisKIC8qIHYzZF9zY2hlZC5j ICovCiB2b2lkIHYzZF90aW1lc3RhbXBfcXVlcnlfaW5mb19mcmVlKHN0cnVjdCB2M2RfdGltZXN0 YW1wX3F1ZXJ5X2luZm8gKnF1ZXJ5X2luZm8sCiAJCQkJICAgdW5zaWduZWQgaW50IGNvdW50KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jIGIvZHJpdmVycy9ncHUv ZHJtL3YzZC92M2RfbW11LmMKaW5kZXggYzUxM2EzOTNjMDMxMzc3MjY1MGZkNmQ3MjM2MTI3YjJk YzQxMDFkOS4uNjMwYzY0ZTUxZDJmMmFkMzBlNTlmYTJiMTc1NDg3ZWZlMGJmYmE0OSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3YzZC92M2RfbW11LmMKQEAgLTM5LDcgKzM5LDExIEBAIHN0YXRpYyBib29sIHYzZF9tbXVfaXNf YWxpZ25lZCh1MzIgcGFnZSwgdTMyIHBhZ2VfYWRkcmVzcywgc2l6ZV90IGFsaWdubWVudCkKIAog aW50IHYzZF9tbXVfZmx1c2hfYWxsKHN0cnVjdCB2M2RfZGV2ICp2M2QpCiB7Ci0JaW50IHJldDsK KwlpbnQgcmV0ID0gMDsKKworCS8qIEZsdXNoIHRoZSBQVHMgb25seSBpZiB3ZSdyZSBhbHJlYWR5 IGF3YWtlICovCisJaWYgKCFwbV9ydW50aW1lX2dldF9pZl9hY3RpdmUodjNkLT5kcm0uZGV2KSkK KwkJcmV0dXJuIDA7CiAKIAlWM0RfV1JJVEUoVjNEX01NVUNfQ09OVFJPTCwgVjNEX01NVUNfQ09O VFJPTF9GTFVTSCB8CiAJCSAgVjNEX01NVUNfQ09OVFJPTF9FTkFCTEUpOwpAQCAtNDgsNyArNTIs NyBAQCBpbnQgdjNkX21tdV9mbHVzaF9hbGwoc3RydWN0IHYzZF9kZXYgKnYzZCkKIAkJCSBWM0Rf TU1VQ19DT05UUk9MX0ZMVVNISU5HKSwgMTAwKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIodjNk LT5kcm0uZGV2LCAiTU1VQyBmbHVzaCB3YWl0IGlkbGUgZmFpbGVkXG4iKTsKLQkJcmV0dXJuIHJl dDsKKwkJZ290byBwbV9wdXQ7CiAJfQogCiAJVjNEX1dSSVRFKFYzRF9NTVVfQ1RMLCBWM0RfUkVB RChWM0RfTU1VX0NUTCkgfApAQCAtNTksNiArNjMsOCBAQCBpbnQgdjNkX21tdV9mbHVzaF9hbGwo c3RydWN0IHYzZF9kZXYgKnYzZCkKIAlpZiAocmV0KQogCQlkZXZfZXJyKHYzZC0+ZHJtLmRldiwg Ik1NVSBUTEIgY2xlYXIgd2FpdCBpZGxlIGZhaWxlZFxuIik7CiAKK3BtX3B1dDoKKwl2M2RfcG1f cnVudGltZV9wdXQodjNkKTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJm bW9uLmMKaW5kZXggOGUwMjQ5NTgwYmJhY2FjNTA3YjJkN2MwYmNhYzM3ZWYxOWMxYTU0ZS4uMDI0 NTFmYzA5ZGJiZjZkMzM2NDAwMDAyNDk3ODZlMjgzNjczMjY0NyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNk X3BlcmZtb24uYwpAQCAtMjMyLDYgKzIzMiw5IEBAIHZvaWQgdjNkX3BlcmZtb25fc3RhcnQoc3Ry dWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQogCWlmIChXQVJO X09OX09OQ0UoIXBlcmZtb24gfHwgdjNkLT5hY3RpdmVfcGVyZm1vbikpCiAJCXJldHVybjsKIAor CWlmICghcG1fcnVudGltZV9nZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCisJCXJldHVybjsK KwogCW5jb3VudGVycyA9IHBlcmZtb24tPm5jb3VudGVyczsKIAltYXNrID0gR0VOTUFTSyhuY291 bnRlcnMgLSAxLCAwKTsKIApAQCAtMjU3LDYgKzI2MCw4IEBAIHZvaWQgdjNkX3BlcmZtb25fc3Rh cnQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQogCVYz RF9DT1JFX1dSSVRFKDAsIFYzRF9QQ1RSXzBfT1ZFUkZMT1csIG1hc2spOwogCiAJdjNkLT5hY3Rp dmVfcGVyZm1vbiA9IHBlcmZtb247CisKKwl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKIH0KIAog dm9pZCB2M2RfcGVyZm1vbl9zdG9wKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVy Zm1vbiAqcGVyZm1vbiwKQEAgLTI2OCwxMCArMjczLDExIEBAIHZvaWQgdjNkX3BlcmZtb25fc3Rv cChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCiAJCXJl dHVybjsKIAogCW11dGV4X2xvY2soJnBlcmZtb24tPmxvY2spOwotCWlmIChwZXJmbW9uICE9IHYz ZC0+YWN0aXZlX3BlcmZtb24pIHsKLQkJbXV0ZXhfdW5sb2NrKCZwZXJmbW9uLT5sb2NrKTsKLQkJ cmV0dXJuOwotCX0KKwlpZiAocGVyZm1vbiAhPSB2M2QtPmFjdGl2ZV9wZXJmbW9uKQorCQlnb3Rv IG91dDsKKworCWlmICghcG1fcnVudGltZV9nZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCisJ CWdvdG8gb3V0X2NsZWFyOwogCiAJaWYgKGNhcHR1cmUpCiAJCWZvciAoaSA9IDA7IGkgPCBwZXJm bW9uLT5uY291bnRlcnM7IGkrKykKQEAgLTI3OSw3ICsyODUsMTEgQEAgdm9pZCB2M2RfcGVyZm1v bl9zdG9wKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbiwK IAogCVYzRF9DT1JFX1dSSVRFKDAsIFYzRF9WNF9QQ1RSXzBfRU4sIDApOwogCisJdjNkX3BtX3J1 bnRpbWVfcHV0KHYzZCk7CisKK291dF9jbGVhcjoKIAl2M2QtPmFjdGl2ZV9wZXJmbW9uID0gTlVM TDsKK291dDoKIAltdXRleF91bmxvY2soJnBlcmZtb24tPmxvY2spOwogfQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfcG93ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU3ZWM4YzhlZTBiYjE3NDQyMGU1MTdiNWExNTc3NDhj ODRhZGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcG93ZXIu YwpAQCAtMCwwICsxLDg4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsK Ky8qIENvcHlyaWdodCAoQykgMjAyNiBSYXNwYmVycnkgUGkgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX3By aW50Lmg+CisKKyNpbmNsdWRlICJ2M2RfZHJ2LmgiCisjaW5jbHVkZSAidjNkX3JlZ3MuaCIKKwor c3RhdGljIHZvaWQKK3YzZF9yZXN1bWVfc21zKHN0cnVjdCB2M2RfZGV2ICp2M2QpCit7CisJaWYg KHYzZC0+dmVyIDwgVjNEX0dFTl83MSkKKwkJcmV0dXJuOworCisJVjNEX1NNU19XUklURShWM0Rf U01TX1RFRV9DUywgVjNEX1NNU19DTEVBUl9QT1dFUl9PRkYpOworCisJaWYgKHdhaXRfZm9yKChW M0RfR0VUX0ZJRUxEKFYzRF9TTVNfUkVBRChWM0RfU01TX1RFRV9DUyksCisJCQkJICAgIFYzRF9T TVNfU1RBVEUpID09IFYzRF9TTVNfSURMRSksIDEwMCkpIHsKKwkJZHJtX2VycigmdjNkLT5kcm0s ICJGYWlsZWQgdG8gcG93ZXIgdXAgU01TXG4iKTsKKwl9CisKKwl2M2RfcmVzZXRfc21zKHYzZCk7 Cit9CisKK3N0YXRpYyB2b2lkCit2M2Rfc3VzcGVuZF9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkK K3sKKwlpZiAodjNkLT52ZXIgPCBWM0RfR0VOXzcxKQorCQlyZXR1cm47CisKKwlWM0RfU01TX1dS SVRFKFYzRF9TTVNfVEVFX0NTLCBWM0RfU01TX1BPV0VSX09GRik7CisKKwlpZiAod2FpdF9mb3Io KFYzRF9HRVRfRklFTEQoVjNEX1NNU19SRUFEKFYzRF9TTVNfVEVFX0NTKSwKKwkJCQkgICAgVjNE X1NNU19TVEFURSkgPT0gVjNEX1NNU19QT1dFUl9PRkZfU1RBVEUpLCAxMDApKSB7CisJCWRybV9l cnIoJnYzZC0+ZHJtLCAiRmFpbGVkIHRvIHBvd2VyIG9mZiBTTVNcbiIpOworCX0KK30KKworaW50 IHYzZF9wb3dlcl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9 IHRvX3YzZF9kZXYoZHJtKTsKKwlpbnQgcmV0ID0gMDsKKworCXYzZF9pcnFfZGlzYWJsZSh2M2Qp OworCisJdjNkX3BlcmZtb25fc3RvcCh2M2QsIHYzZC0+YWN0aXZlX3BlcmZtb24sIGZhbHNlKTsK KworCXYzZF9zdXNwZW5kX3Ntcyh2M2QpOworCisJaWYgKHYzZC0+cmVzZXQpCisJCXJldCA9IHJl c2V0X2NvbnRyb2xfYXNzZXJ0KHYzZC0+cmVzZXQpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KHYzZC0+Y2xrKTsKKworCXJldHVybiByZXQ7Cit9CisKK2ludCB2M2RfcG93ZXJfcmVzdW1lKHN0 cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGV2X2dldF9k cnZkYXRhKGRldik7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoZHJtKTsKKwlp bnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHYzZC0+Y2xrKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJaWYgKHYzZC0+cmVzZXQpIHsKKwkJcmV0ID0gcmVzZXRfY29u dHJvbF9kZWFzc2VydCh2M2QtPnJlc2V0KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gY2xrX2Rpc2Fi bGU7CisJfQorCisJdjNkX3Jlc3VtZV9zbXModjNkKTsKKwl2M2RfaW5pdF9od19zdGF0ZSh2M2Qp OworCXYzZF9tbXVfc2V0X3BhZ2VfdGFibGUodjNkKTsKKwl2M2RfaXJxX2VuYWJsZSh2M2QpOwor CisJcmV0dXJuIDA7CisKK2Nsa19kaXNhYmxlOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2M2Qt PmNsayk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2Qv djNkX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMKaW5kZXggMThm MmJmMWZlODlmYWNlNmVkZTNkZTQ2NWM4MGI2M2E2NjM1NTExZS4uNGZiZTA4NGNhY2QzMWI5ZTc1 NWIwZWZjYjIxYWQzYjM2MTU1ODIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2Rfc3VibWl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMKQEAgLTEw Myw2ICsxMDMsOSBAQCB2M2Rfam9iX2ZyZWUoc3RydWN0IGtyZWYgKnJlZikKIAlpZiAoam9iLT5w ZXJmbW9uKQogCQl2M2RfcGVyZm1vbl9wdXQoam9iLT5wZXJmbW9uKTsKIAorCWlmIChqb2ItPmhh c19wbV9yZWYpCisJCXYzZF9wbV9ydW50aW1lX3B1dChqb2ItPnYzZCk7CisKIAlrZnJlZShqb2Ip OwogfQogCkBAIC0xODQsMTMgKzE4NywxMyBAQCB2M2Rfam9iX2luaXQoc3RydWN0IHYzZF9kZXYg KnYzZCwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCQkJaWYgKGNvcHlfZnJvbV91c2Vy KCZpbiwgaGFuZGxlKyssIHNpemVvZihpbikpKSB7CiAJCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJ CWRybV9kYmcoJnYzZC0+ZHJtLCAiRmFpbGVkIHRvIGNvcHkgd2FpdCBkZXAgaGFuZGxlLlxuIik7 Ci0JCQkJCWdvdG8gZmFpbF9kZXBzOworCQkJCQlnb3RvIGZhaWxfam9iX2luaXQ7CiAJCQkJfQog CQkJCXJldCA9IGRybV9zY2hlZF9qb2JfYWRkX3N5bmNvYmpfZGVwZW5kZW5jeSgmam9iLT5iYXNl LCBmaWxlX3ByaXYsIGluLmhhbmRsZSwgMCk7CiAKIAkJCQkvLyBUT0RPOiBJbnZlc3RpZ2F0ZSB3 aHkgdGhpcyB3YXMgZmlsdGVyZWQgb3V0IGZvciB0aGUgSU9DVEwuCiAJCQkJaWYgKHJldCAmJiBy ZXQgIT0gLUVOT0VOVCkKLQkJCQkJZ290byBmYWlsX2RlcHM7CisJCQkJCWdvdG8gZmFpbF9qb2Jf aW5pdDsKIAkJCX0KIAkJfQogCX0gZWxzZSB7CkBAIC0xOTgsMTQgKzIwMSwyMiBAQCB2M2Rfam9i X2luaXQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAK IAkJLy8gVE9ETzogSW52ZXN0aWdhdGUgd2h5IHRoaXMgd2FzIGZpbHRlcmVkIG91dCBmb3IgdGhl IElPQ1RMLgogCQlpZiAocmV0ICYmIHJldCAhPSAtRU5PRU5UKQotCQkJZ290byBmYWlsX2RlcHM7 CisJCQlnb3RvIGZhaWxfam9iX2luaXQ7CisJfQorCisJLyogQ1BVIGpvYnMgZG9uJ3QgcmVxdWly ZSBoYXJkd2FyZSByZXNvdXJjZXMgKi8KKwlpZiAocXVldWUgIT0gVjNEX0NQVSkgeworCQlyZXQg PSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZmFpbF9qb2Jf aW5pdDsKKwkJam9iLT5oYXNfcG1fcmVmID0gdHJ1ZTsKIAl9CiAKIAlrcmVmX2luaXQoJmpvYi0+ cmVmY291bnQpOwogCiAJcmV0dXJuIDA7CiAKLWZhaWxfZGVwczoKK2ZhaWxfam9iX2luaXQ6CiAJ ZHJtX3NjaGVkX2pvYl9jbGVhbnVwKCZqb2ItPmJhc2UpOwogCXJldHVybiByZXQ7CiB9CgotLSAK Mi41My4wCgo=