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 E0D2C10D14AB for ; Tue, 31 Mar 2026 12:36:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9AFE210EB04; Tue, 31 Mar 2026 12:36:31 +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="HeTYiS0e"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id ED56610EA6F for ; Tue, 31 Mar 2026 12:36:29 +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=9olmXg70Y1ZkqUJhf2AdOcHUjhZMKbqpPn3y4GnksDI=; b=HeTYiS0e0xVitJ0VYlH85k4Crj M2aBlisWFctGuIztdiaVgggrzkVdmo2itJZVuwgtdP0GssJDb+1f0MMMufGJ6qcZ7Fv3Emcd9dhGS URerUdM0+XkeI3RpfLExzO7DCf6AiLq1d83IYCpdjIoldwmZejUAtCaIc30nYbcUM+aJxJPOVFQv7 C9LjeCSqmur+2M+pXKXxdyD/NohTCa9oKbCKUrRtO4vaN0m2NjI9k/OGCrTcj1D2ujI11AMO3rUXP OJ2Wa/tN/LHxU/exJK7XMZLmGa1II/EXVOLzAzAZEHaUdFgl8BE5FO6rBLzEMP+vDYuh6RpiI7gVQ 8End+hSA==; 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 1w7YKa-009RtV-0w; Tue, 31 Mar 2026 14:36:28 +0200 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Tue, 31 Mar 2026 09:35:53 -0300 Subject: [PATCH v9 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: <20260331-v3d-power-management-v9-3-f52ff87bfd36@igalia.com> References: <20260331-v3d-power-management-v9-0-f52ff87bfd36@igalia.com> In-Reply-To: <20260331-v3d-power-management-v9-0-f52ff87bfd36@igalia.com> To: Stefan Wahren , Maxime Ripard , Melissa Wen , Iago Toral Quiroga , Dave Stevenson , Florian Fainelli 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=15448; i=mcanal@igalia.com; h=from:subject:message-id; bh=WogKccn/ROK/hGUdwbJVilDTUSh0FvTMjKpkhbqUBRU=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBpy7+8WGW1OydFcknqlNjuG1/54G66NY/fJHGW+ 3/YBD3dp7qJATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCacu/vAAKCRA/8w6Kdoj6 qm8iCACrnygmgUoZ+ysUbXfSYY09SCUFONBqcKu8h/wVHFJceb7CIJexXNy1XOZg673k+5FN2JN vZ+WTIx5ybDbZrmPuGYob36B5yAzMTZdwbNbzNyX9AJvUI2uh4PER0o2Qmontr5JaHumcwhV+Ju SzI31zEiQ5U+mjMVfhNZrskcKrxfF4X3YZtyCr5A3bcAInIl62pYN9Tsq/WkyzVFrDiWfXPg+BV k42z5SYsj3ON1GmjSwnkwxpQZ5igp/q1UvqbGfjbpEKxDTTxgQoudF2ytjHj5BxYfmkognO6URD YprH2dn/CCJXCa9cb7ULOgs0MosW8e84KduPM6ACkzqWVm/L 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 KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaCAg ICAgfCAxNyArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfbW11LmMgICAgIHwgMTAg KysrKy0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3BlcmZtb24uYyB8IDE4ICsrKysrKy0tCiBk cml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jICAgfCA4NyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1pdC5jICB8 IDE5ICsrKysrKystLQogOCBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygrKSwgNTkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS92M2QvTWFrZWZpbGUKaW5kZXggYjdkNjczZjExNTNiZWYxNmRiMzgwMGU1 MGIyYmZhZjM2YmY4ODcxYi4uNjAxYjgzNGUzNzdlODM0MmM2NjY4NjQ1MTEyMzQ3Y2NhNDIxNDAy NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vdjNkL01ha2VmaWxlCkBAIC0xMCw2ICsxMCw3IEBAIHYzZC15IDo9IFwKIAl2M2Rf aXJxLm8gXAogCXYzZF9tbXUubyBcCiAJdjNkX3BlcmZtb24ubyBcCisJdjNkX3Bvd2VyLm8gXAog CXYzZF90cmFjZV9wb2ludHMubyBcCiAJdjNkX3NjaGVkLm8gXAogCXYzZF9zeXNmcy5vIFwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX2RlYnVnZnMuYwppbmRleCA4OWYyNGVlYzYyYTc0ZWM0OWIyOGYwYjIyZGJm NjI2YmE3YTM1MjA2Li42MzRjYzc5NmJhMjMyNGRjNDk3Njk0YzA3MGYyY2ZmZmNjNDQyNGM5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3YzZC92M2RfZGVidWdmcy5jCkBAIC05Nyw3ICs5NywxMSBAQCBzdGF0aWMgaW50 IHYzZF92M2RfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQog CXN0cnVjdCBkcm1fZGVidWdmc19lbnRyeSAqZW50cnkgPSBtLT5wcml2YXRlOwogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbnRyeS0+ZGV2OwogCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSB0b192 M2RfZGV2KGRldik7Ci0JaW50IGksIGNvcmU7CisJaW50IGksIGNvcmUsIHJldDsKKworCXJldCA9 IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKIAlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2M2RfaHViX3JlZ19kZWZzKTsgaSsrKSB7CiAJCWNv bnN0IHN0cnVjdCB2M2RfcmVnX2RlZiAqZGVmID0gJnYzZF9odWJfcmVnX2RlZnNbaV07CkBAIC0x MzksNiArMTQzLDggQEAgc3RhdGljIGludCB2M2RfdjNkX2RlYnVnZnNfcmVncyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJfQogCX0KIAorCXYzZF9wbV9ydW50aW1lX3B1dCh2 M2QpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE0OCw3ICsxNTQsMTEgQEAgc3RhdGljIGludCB2 M2RfdjNkX2RlYnVnZnNfaWRlbnQoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVudHJ5LT5kZXY7CiAJc3RydWN0IHYzZF9kZXYgKnYz ZCA9IHRvX3YzZF9kZXYoZGV2KTsKIAl1MzIgaWRlbnQwLCBpZGVudDEsIGlkZW50MiwgaWRlbnQz LCBjb3JlczsKLQlpbnQgY29yZTsKKwlpbnQgY29yZSwgcmV0OworCisJcmV0ID0gdjNkX3BtX3J1 bnRpbWVfZ2V0KHYzZCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAogCWlkZW50MCA9IFYz RF9SRUFEKFYzRF9IVUJfSURFTlQwKTsKIAlpZGVudDEgPSBWM0RfUkVBRChWM0RfSFVCX0lERU5U MSk7CkBAIC0yMDcsNiArMjE3LDggQEAgc3RhdGljIGludCB2M2RfdjNkX2RlYnVnZnNfaWRlbnQo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCX0KIAl9CiAKKwl2M2RfcG1fcnVu dGltZV9wdXQodjNkKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0yMzQsNiArMjQ2LDExIEBAIHN0 YXRpYyBpbnQgdjNkX21lYXN1cmVfY2xvY2soc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCiAJdWludDMyX3QgY3ljbGVzOwogCWludCBjb3JlID0gMDsKIAlpbnQgbWVhc3VyZV9tcyA9 IDEwMDA7CisJaW50IHJldDsKKworCXJldCA9IHYzZF9wbV9ydW50aW1lX2dldCh2M2QpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CiAKIAlpZiAodjNkLT52ZXIgPj0gVjNEX0dFTl80MSkgewog CQlpbnQgY3ljbGVfY291bnRfcmVnID0gVjNEX1BDVFJfQ1lDTEVfQ09VTlQodjNkLT52ZXIpOwpA QCAtMjUzLDYgKzI3MCw4IEBAIHN0YXRpYyBpbnQgdjNkX21lYXN1cmVfY2xvY2soc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJbXNsZWVwKG1lYXN1cmVfbXMpOwogCWN5Y2xlcyA9 IFYzRF9DT1JFX1JFQUQoY29yZSwgVjNEX1BDVFJfMF9QQ1RSMCk7CiAKKwl2M2RfcG1fcnVudGlt ZV9wdXQodjNkKTsKKwogCXNlcV9wcmludGYobSwgImN5Y2xlczogJWQgKCVkLiVkIE1oeilcbiIs CiAJCSAgIGN5Y2xlcywKIAkJICAgY3ljbGVzIC8gKG1lYXN1cmVfbXMgKiAxMDAwKSwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2RfZHJ2LmMKaW5kZXggZTU3YjM2ZjRkODFhNTlkMTVhMjIzYWZkYzQwNzhhZTY0NTZkZTlh OS4uZmM4MWRkMTI0N2UzM2UxNWNkODM4Y2YxMWFlNDZkNzlhYWYwMzk3NiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfZHJ2LmMKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGludCB2M2RfZ2V0X3BhcmFtX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCVtEUk1fVjNEX1BBUkFNX1Yz RF9DT1JFMF9JREVOVDFdID0gVjNEX0NUTF9JREVOVDEsCiAJCVtEUk1fVjNEX1BBUkFNX1YzRF9D T1JFMF9JREVOVDJdID0gVjNEX0NUTF9JREVOVDIsCiAJfTsKKwlpbnQgcmV0OwogCiAJaWYgKGFy Z3MtPnBhZCAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTc1LDEyICs3NiwxOSBAQCBzdGF0 aWMgaW50IHYzZF9nZXRfcGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJaWYgKGFyZ3MtPnZhbHVlICE9IDApCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAorCQly ZXQgPSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7 CisKIAkJaWYgKGFyZ3MtPnBhcmFtID49IERSTV9WM0RfUEFSQU1fVjNEX0NPUkUwX0lERU5UMCAm JgogCQkgICAgYXJncy0+cGFyYW0gPD0gRFJNX1YzRF9QQVJBTV9WM0RfQ09SRTBfSURFTlQyKSB7 CiAJCQlhcmdzLT52YWx1ZSA9IFYzRF9DT1JFX1JFQUQoMCwgb2Zmc2V0KTsKIAkJfSBlbHNlIHsK IAkJCWFyZ3MtPnZhbHVlID0gVjNEX1JFQUQob2Zmc2V0KTsKIAkJfQorCisJCXYzZF9wbV9ydW50 aW1lX3B1dCh2M2QpOworCiAJCXJldHVybiAwOwogCX0KIApAQCAtMjkwLDM2ICsyOTgsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB2M2Rfb2ZfbWF0Y2hbXSA9IHsKIH07CiBN T0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2M2Rfb2ZfbWF0Y2gpOwogCi1zdGF0aWMgdm9pZAotdjNk X2lkbGVfc21zKHN0cnVjdCB2M2RfZGV2ICp2M2QpCi17Ci0JaWYgKHYzZC0+dmVyIDwgVjNEX0dF Tl83MSkKLQkJcmV0dXJuOwotCi0JVjNEX1NNU19XUklURShWM0RfU01TX1RFRV9DUywgVjNEX1NN U19DTEVBUl9QT1dFUl9PRkYpOwotCi0JaWYgKHdhaXRfZm9yKChWM0RfR0VUX0ZJRUxEKFYzRF9T TVNfUkVBRChWM0RfU01TX1RFRV9DUyksCi0JCQkJICAgIFYzRF9TTVNfU1RBVEUpID09IFYzRF9T TVNfSURMRSksIDEwMCkpIHsKLQkJZHJtX2VycigmdjNkLT5kcm0sICJGYWlsZWQgdG8gcG93ZXIg dXAgU01TXG4iKTsKLQl9Ci0KLQl2M2RfcmVzZXRfc21zKHYzZCk7Ci19Ci0KLXN0YXRpYyB2b2lk Ci12M2RfcG93ZXJfb2ZmX3NtcyhzdHJ1Y3QgdjNkX2RldiAqdjNkKQotewotCWlmICh2M2QtPnZl ciA8IFYzRF9HRU5fNzEpCi0JCXJldHVybjsKLQotCVYzRF9TTVNfV1JJVEUoVjNEX1NNU19URUVf Q1MsIFYzRF9TTVNfUE9XRVJfT0ZGKTsKLQotCWlmICh3YWl0X2ZvcigoVjNEX0dFVF9GSUVMRChW M0RfU01TX1JFQUQoVjNEX1NNU19URUVfQ1MpLAotCQkJCSAgICBWM0RfU01TX1NUQVRFKSA9PSBW M0RfU01TX1BPV0VSX09GRl9TVEFURSksIDEwMCkpIHsKLQkJZHJtX2VycigmdjNkLT5kcm0sICJG YWlsZWQgdG8gcG93ZXIgb2ZmIFNNU1xuIik7Ci0JfQotfQotCiBzdGF0aWMgaW50CiBtYXBfcmVn cyhzdHJ1Y3QgdjNkX2RldiAqdjNkLCB2b2lkIF9faW9tZW0gKipyZWdzLCBjb25zdCBjaGFyICpu YW1lKQogewpAQCAtNDAzLDE5ICszODEsMjYgQEAgc3RhdGljIGludCB2M2RfcGxhdGZvcm1fZHJt X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCkKIAkJZ290byBk bWFfZnJlZTsKIAotCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSh2M2QtPmNsayk7Ci0JaWYgKHJl dCkgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDb3VsZG4ndCBlbmFibGUgdGhlIFYzRCBjbG9j a1xuIik7CisJcmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpOworCWlmIChyZXQpCiAJ CWdvdG8gZ2VtX2Rlc3Ryb3k7Ci0JfQogCi0JdjNkX2lkbGVfc21zKHYzZCk7CisJcmV0ID0gcG1f cnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOworCWlmIChyZXQpCisJCWdvdG8gZ2VtX2Rlc3Ry b3k7CisKKwkvKiBJZiBQTSBpcyBkaXNhYmxlZCwgd2UgbmVlZCB0byBjYWxsIHYzZF9wb3dlcl9y ZXN1bWUoKSBtYW51YWxseS4gKi8KKwlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BNKSkgeworCQly ZXQgPSB2M2RfcG93ZXJfcmVzdW1lKGRldik7CisJCWlmIChyZXQpCisJCQlnb3RvIGdlbV9kZXN0 cm95OworCX0KIAogCW1tdV9kZWJ1ZyA9IFYzRF9SRUFEKFYzRF9NTVVfREVCVUdfSU5GTyk7CiAJ bWFzayA9IERNQV9CSVRfTUFTSygzMCArIFYzRF9HRVRfRklFTEQobW11X2RlYnVnLCBWM0RfTU1V X1BBX1dJRFRIKSk7CiAJcmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIG1hc2sp OwogCWlmIChyZXQpCi0JCWdvdG8gY2xrX2Rpc2FibGU7CisJCWdvdG8gcnVudGltZV9wbV9wdXQ7 CiAKIAlkbWFfc2V0X21heF9zZWdfc2l6ZSgmcGRldi0+ZGV2LCBVSU5UX01BWCk7CiAKQEAgLTQz NSwyNyArNDIwLDI2IEBAIHN0YXRpYyBpbnQgdjNkX3BsYXRmb3JtX2RybV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlkZW50MyA9IFYzRF9SRUFEKFYzRF9IVUJfSURFTlQz KTsKIAl2M2QtPnJldiA9IFYzRF9HRVRfRklFTEQoaWRlbnQzLCBWM0RfSFVCX0lERU5UM19JUFJF Vik7CiAKLQl2M2RfaW5pdF9od19zdGF0ZSh2M2QpOwotCXYzZF9tbXVfc2V0X3BhZ2VfdGFibGUo djNkKTsKLQl2M2RfaXJxX2VuYWJsZSh2M2QpOworCXBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5k X2RlbGF5KGRldiwgMTAwKTsKKwlwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYpOwogCiAJ cmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOwogCWlmIChyZXQpCi0JCWdvdG8gaXJxX2Rp c2FibGU7CisJCWdvdG8gcnVudGltZV9wbV9wdXQ7CiAKIAlyZXQgPSB2M2Rfc3lzZnNfaW5pdChk ZXYpOwogCWlmIChyZXQpCiAJCWdvdG8gZHJtX3VucmVnaXN0ZXI7CiAKKwlwbV9ydW50aW1lX21h cmtfbGFzdF9idXN5KGRldik7CisJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZGV2KTsKKwog CXJldHVybiAwOwogCiBkcm1fdW5yZWdpc3RlcjoKIAlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsK LWlycV9kaXNhYmxlOgotCXYzZF9pcnFfZGlzYWJsZSh2M2QpOwotY2xrX2Rpc2FibGU6Ci0JdjNk X3Bvd2VyX29mZl9zbXModjNkKTsKLQljbGtfZGlzYWJsZV91bnByZXBhcmUodjNkLT5jbGspOwor cnVudGltZV9wbV9wdXQ6CisJcG1fcnVudGltZV9wdXRfc3luY19zdXNwZW5kKGRldik7CiBnZW1f ZGVzdHJveToKIAl2M2RfZ2VtX2Rlc3Ryb3koZHJtKTsKIGRtYV9mcmVlOgpAQCAtNDczLDIxICs0 NTcsMjcgQEAgc3RhdGljIHZvaWQgdjNkX3BsYXRmb3JtX2RybV9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIAogCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOwogCi0JdjNkX3Bv d2VyX29mZl9zbXModjNkKTsKKwlwbV9ydW50aW1lX3N1c3BlbmQoZGV2KTsKIAotCWNsa19kaXNh YmxlX3VucHJlcGFyZSh2M2QtPmNsayk7CisJLyogSWYgUE0gaXMgZGlzYWJsZWQsIHdlIG5lZWQg dG8gY2FsbCB2M2RfcG93ZXJfc3VzcGVuZCgpIG1hbnVhbGx5LiAqLworCWlmICghSVNfRU5BQkxF RChDT05GSUdfUE0pKQorCQl2M2RfcG93ZXJfc3VzcGVuZChkZXYpOwogCiAJdjNkX2dlbV9kZXN0 cm95KGRybSk7CiAKIAlkbWFfZnJlZV93YyhkZXYsIDQwOTYsIHYzZC0+bW11X3NjcmF0Y2gsIHYz ZC0+bW11X3NjcmF0Y2hfcGFkZHIpOwogfQogCitzdGF0aWMgREVGSU5FX1JVTlRJTUVfREVWX1BN X09QUyh2M2RfcG1fb3BzLCB2M2RfcG93ZXJfc3VzcGVuZCwKKwkJCQkgdjNkX3Bvd2VyX3Jlc3Vt ZSwgTlVMTCk7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHYzZF9wbGF0Zm9ybV9k cml2ZXIgPSB7CiAJLnByb2JlCQk9IHYzZF9wbGF0Zm9ybV9kcm1fcHJvYmUsCiAJLnJlbW92ZQkJ PSB2M2RfcGxhdGZvcm1fZHJtX3JlbW92ZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAidjNk IiwKIAkJLm9mX21hdGNoX3RhYmxlID0gdjNkX29mX21hdGNoLAorCQkucG0gPSBwbV9wdHIoJnYz ZF9wbV9vcHMpLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3Yz ZF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oCmluZGV4IGViZjQwNmI2MTVi YjUyZGU5Y2I5OGVhOGVmZTk0MWE1Nzg3ZmI0YmQuLjRlYmUxNzVhOGM2YjAwMTZkMDg3Mzg4Y2Uw MmNkMzVhOGFlNjVhMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oCkBAIC0zLDYgKzMsNyBAQAogCiAj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1 ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KICNpbmNsdWRlIDxsaW51eC9zcGlubG9ja190eXBlcy5o PgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgogCkBAIC0zMjQsNiArMzI1LDggQEAgc3Ry dWN0IHYzZF9qb2IgewogCiAJLyogQ2FsbGJhY2sgZm9yIHRoZSBmcmVlaW5nIG9mIHRoZSBqb2Ig b24gcmVmY291bnQgZ29pbmcgdG8gMC4gKi8KIAl2b2lkICgqZnJlZSkoc3RydWN0IGtyZWYgKnJl Zik7CisKKwlib29sIGhhc19wbV9yZWY7CiB9OwogCiBzdHJ1Y3QgdjNkX2Jpbl9qb2IgewpAQCAt NTk3LDYgKzYwMCwyMCBAQCBpbnQgdjNkX21tdV9zZXRfcGFnZV90YWJsZShzdHJ1Y3QgdjNkX2Rl diAqdjNkKTsKIHZvaWQgdjNkX21tdV9pbnNlcnRfcHRlcyhzdHJ1Y3QgdjNkX2JvICpibyk7CiB2 b2lkIHYzZF9tbXVfcmVtb3ZlX3B0ZXMoc3RydWN0IHYzZF9ibyAqYm8pOwogCisvKiB2M2RfcG93 ZXIuYyAqLworaW50IHYzZF9wb3dlcl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CitpbnQg djNkX3Bvd2VyX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCitzdGF0aWMgX19hbHdheXNf aW5saW5lIGludCB2M2RfcG1fcnVudGltZV9nZXQoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwly ZXR1cm4gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCh2M2QtPmRybS5kZXYpOworfQorCitzdGF0 aWMgX19hbHdheXNfaW5saW5lIGludCB2M2RfcG1fcnVudGltZV9wdXQoc3RydWN0IHYzZF9kZXYg KnYzZCkKK3sKKwlyZXR1cm4gcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQodjNkLT5kcm0uZGV2 KTsKK30KKwogLyogdjNkX3NjaGVkLmMgKi8KIHZvaWQgdjNkX3RpbWVzdGFtcF9xdWVyeV9pbmZv X2ZyZWUoc3RydWN0IHYzZF90aW1lc3RhbXBfcXVlcnlfaW5mbyAqcXVlcnlfaW5mbywKIAkJCQkg ICB1bnNpZ25lZCBpbnQgY291bnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfbW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9tbXUuYwppbmRleCBjNTEzYTM5M2Mw MzEzNzcyNjUwZmQ2ZDcyMzYxMjdiMmRjNDEwMWQ5Li42MzBjNjRlNTFkMmYyYWQzMGU1OWZhMmIx NzU0ODdlZmUwYmZiYTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9tbXUu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9tbXUuYwpAQCAtMzksNyArMzksMTEgQEAg c3RhdGljIGJvb2wgdjNkX21tdV9pc19hbGlnbmVkKHUzMiBwYWdlLCB1MzIgcGFnZV9hZGRyZXNz LCBzaXplX3QgYWxpZ25tZW50KQogCiBpbnQgdjNkX21tdV9mbHVzaF9hbGwoc3RydWN0IHYzZF9k ZXYgKnYzZCkKIHsKLQlpbnQgcmV0OworCWludCByZXQgPSAwOworCisJLyogRmx1c2ggdGhlIFBU cyBvbmx5IGlmIHdlJ3JlIGFscmVhZHkgYXdha2UgKi8KKwlpZiAoIXBtX3J1bnRpbWVfZ2V0X2lm X2FjdGl2ZSh2M2QtPmRybS5kZXYpKQorCQlyZXR1cm4gMDsKIAogCVYzRF9XUklURShWM0RfTU1V Q19DT05UUk9MLCBWM0RfTU1VQ19DT05UUk9MX0ZMVVNIIHwKIAkJICBWM0RfTU1VQ19DT05UUk9M X0VOQUJMRSk7CkBAIC00OCw3ICs1Miw3IEBAIGludCB2M2RfbW11X2ZsdXNoX2FsbChzdHJ1Y3Qg djNkX2RldiAqdjNkKQogCQkJIFYzRF9NTVVDX0NPTlRST0xfRkxVU0hJTkcpLCAxMDApOwogCWlm IChyZXQpIHsKIAkJZGV2X2Vycih2M2QtPmRybS5kZXYsICJNTVVDIGZsdXNoIHdhaXQgaWRsZSBm YWlsZWRcbiIpOwotCQlyZXR1cm4gcmV0OworCQlnb3RvIHBtX3B1dDsKIAl9CiAKIAlWM0RfV1JJ VEUoVjNEX01NVV9DVEwsIFYzRF9SRUFEKFYzRF9NTVVfQ1RMKSB8CkBAIC01OSw2ICs2Myw4IEBA IGludCB2M2RfbW11X2ZsdXNoX2FsbChzdHJ1Y3QgdjNkX2RldiAqdjNkKQogCWlmIChyZXQpCiAJ CWRldl9lcnIodjNkLT5kcm0uZGV2LCAiTU1VIFRMQiBjbGVhciB3YWl0IGlkbGUgZmFpbGVkXG4i KTsKIAorcG1fcHV0OgorCXYzZF9wbV9ydW50aW1lX3B1dCh2M2QpOwogCXJldHVybiByZXQ7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3BlcmZtb24uYyBiL2RyaXZl cnMvZ3B1L2RybS92M2QvdjNkX3BlcmZtb24uYwppbmRleCA4ZTAyNDk1ODBiYmFjYWM1MDdiMmQ3 YzBiY2FjMzdlZjE5YzFhNTRlLi4wMjQ1MWZjMDlkYmJmNmQzMzY0MDAwMDI0OTc4NmUyODM2NzMy NjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jCkBAIC0yMzIsNiArMjMyLDkgQEAgdm9p ZCB2M2RfcGVyZm1vbl9zdGFydChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgdjNkX3BlcmZt b24gKnBlcmZtb24pCiAJaWYgKFdBUk5fT05fT05DRSghcGVyZm1vbiB8fCB2M2QtPmFjdGl2ZV9w ZXJmbW9uKSkKIAkJcmV0dXJuOwogCisJaWYgKCFwbV9ydW50aW1lX2dldF9pZl9hY3RpdmUodjNk LT5kcm0uZGV2KSkKKwkJcmV0dXJuOworCiAJbmNvdW50ZXJzID0gcGVyZm1vbi0+bmNvdW50ZXJz OwogCW1hc2sgPSBHRU5NQVNLKG5jb3VudGVycyAtIDEsIDApOwogCkBAIC0yNTcsNiArMjYwLDgg QEAgdm9pZCB2M2RfcGVyZm1vbl9zdGFydChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgdjNk X3BlcmZtb24gKnBlcmZtb24pCiAJVjNEX0NPUkVfV1JJVEUoMCwgVjNEX1BDVFJfMF9PVkVSRkxP VywgbWFzayk7CiAKIAl2M2QtPmFjdGl2ZV9wZXJmbW9uID0gcGVyZm1vbjsKKworCXYzZF9wbV9y dW50aW1lX3B1dCh2M2QpOwogfQogCiB2b2lkIHYzZF9wZXJmbW9uX3N0b3Aoc3RydWN0IHYzZF9k ZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uLApAQCAtMjY4LDEwICsyNzMsMTEg QEAgdm9pZCB2M2RfcGVyZm1vbl9zdG9wKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2Rf cGVyZm1vbiAqcGVyZm1vbiwKIAkJcmV0dXJuOwogCiAJbXV0ZXhfbG9jaygmcGVyZm1vbi0+bG9j ayk7Ci0JaWYgKHBlcmZtb24gIT0gdjNkLT5hY3RpdmVfcGVyZm1vbikgewotCQltdXRleF91bmxv Y2soJnBlcmZtb24tPmxvY2spOwotCQlyZXR1cm47Ci0JfQorCWlmIChwZXJmbW9uICE9IHYzZC0+ YWN0aXZlX3BlcmZtb24pCisJCWdvdG8gb3V0OworCisJaWYgKCFwbV9ydW50aW1lX2dldF9pZl9h Y3RpdmUodjNkLT5kcm0uZGV2KSkKKwkJZ290byBvdXRfY2xlYXI7CiAKIAlpZiAoY2FwdHVyZSkK IAkJZm9yIChpID0gMDsgaSA8IHBlcmZtb24tPm5jb3VudGVyczsgaSsrKQpAQCAtMjc5LDcgKzI4 NSwxMSBAQCB2b2lkIHYzZF9wZXJmbW9uX3N0b3Aoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0 IHYzZF9wZXJmbW9uICpwZXJmbW9uLAogCiAJVjNEX0NPUkVfV1JJVEUoMCwgVjNEX1Y0X1BDVFJf MF9FTiwgMCk7CiAKKwl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKKworb3V0X2NsZWFyOgogCXYz ZC0+YWN0aXZlX3BlcmZtb24gPSBOVUxMOworb3V0OgogCW11dGV4X3VubG9jaygmcGVyZm1vbi0+ bG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3Bvd2VyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2OWU5MDAzMmIw NDJhYjM0NzEyNTlkM2YwZGRkN2M4YTNmM2Y3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jCkBAIC0wLDAgKzEsODcgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wKworLyogQ29weXJpZ2h0IChDKSAyMDI2IFJhc3BiZXJyeSBQ aSAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50 Lmg+CisKKyNpbmNsdWRlICJ2M2RfZHJ2LmgiCisjaW5jbHVkZSAidjNkX3JlZ3MuaCIKKworc3Rh dGljIGludAordjNkX3Jlc3VtZV9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlpZiAodjNk LT52ZXIgPCBWM0RfR0VOXzcxKQorCQlyZXR1cm4gMDsKKworCVYzRF9TTVNfV1JJVEUoVjNEX1NN U19URUVfQ1MsIFYzRF9TTVNfQ0xFQVJfUE9XRVJfT0ZGKTsKKworCWlmICh3YWl0X2ZvcigoVjNE X0dFVF9GSUVMRChWM0RfU01TX1JFQUQoVjNEX1NNU19URUVfQ1MpLAorCQkJCSAgICBWM0RfU01T X1NUQVRFKSA9PSBWM0RfU01TX0lETEUpLCAxMDApKSB7CisJCWRybV9lcnIoJnYzZC0+ZHJtLCAi RmFpbGVkIHRvIHBvd2VyIHVwIFNNU1xuIik7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKwor CXYzZF9yZXNldF9zbXModjNkKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit2M2Rf c3VzcGVuZF9zbXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sKKwlpZiAodjNkLT52ZXIgPCBWM0Rf R0VOXzcxKQorCQlyZXR1cm4gMDsKKworCVYzRF9TTVNfV1JJVEUoVjNEX1NNU19URUVfQ1MsIFYz RF9TTVNfUE9XRVJfT0ZGKTsKKworCWlmICh3YWl0X2ZvcigoVjNEX0dFVF9GSUVMRChWM0RfU01T X1JFQUQoVjNEX1NNU19URUVfQ1MpLAorCQkJCSAgICBWM0RfU01TX1NUQVRFKSA9PSBWM0RfU01T X1BPV0VSX09GRl9TVEFURSksIDEwMCkpIHsKKwkJZHJtX2VycigmdjNkLT5kcm0sICJGYWlsZWQg dG8gcG93ZXIgb2ZmIFNNU1xuIik7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKworCXJldHVy biAwOworfQorCitpbnQgdjNkX3Bvd2VyX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQorewor CXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3Qg djNkX2RldiAqdjNkID0gdG9fdjNkX2Rldihkcm0pOworCWludCByZXQ7CisKKwl2M2RfaXJxX2Rp c2FibGUodjNkKTsKKworCXJldCA9IHYzZF9zdXNwZW5kX3Ntcyh2M2QpOworCWlmIChyZXQpIHsK KwkJdjNkX2lycV9lbmFibGUodjNkKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwljbGtfZGlzYWJs ZV91bnByZXBhcmUodjNkLT5jbGspOworCisJcmV0dXJuIDA7Cit9CisKK2ludCB2M2RfcG93ZXJf cmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYo ZHJtKTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHYzZC0+Y2xrKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gdjNkX3Jlc3VtZV9zbXModjNkKTsK KwlpZiAocmV0KSB7CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2M2QtPmNsayk7CisJCXJldHVy biByZXQ7CisJfQorCisJdjNkX2luaXRfaHdfc3RhdGUodjNkKTsKKwl2M2RfbW11X3NldF9wYWdl X3RhYmxlKHYzZCk7CisJdjNkX2lycV9lbmFibGUodjNkKTsKKworCXJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9k cm0vdjNkL3YzZF9zdWJtaXQuYwppbmRleCA4ZjA2MWI2YTA1YzZhYTc2ZWE1NTEzNDA3ZWJmM2Mw Y2U4MGI4MjU2Li5mNzVkYTJlMzUzM2UyMzY4MjE4MTg5MjRmOTFlYzYwMjk1MGFmODVhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdjNkL3YzZF9zdWJtaXQuYwpAQCAtMTA2LDYgKzEwNiw5IEBAIHYzZF9qb2JfZnJlZShz dHJ1Y3Qga3JlZiAqcmVmKQogCXYzZF9zdGF0c19wdXQoam9iLT5jbGllbnRfc3RhdHMpOwogCXYz ZF9zdGF0c19wdXQoam9iLT5nbG9iYWxfc3RhdHMpOwogCisJaWYgKGpvYi0+aGFzX3BtX3JlZikK KwkJdjNkX3BtX3J1bnRpbWVfcHV0KGpvYi0+djNkKTsKKwogCWtmcmVlKGpvYik7CiB9CiAKQEAg LTE4NywxMyArMTkwLDEzIEBAIHYzZF9qb2JfaW5pdChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCQlpZiAoY29weV9mcm9tX3VzZXIoJmluLCBoYW5k bGUrKywgc2l6ZW9mKGluKSkpIHsKIAkJCQkJcmV0ID0gLUVGQVVMVDsKIAkJCQkJZHJtX2RiZygm djNkLT5kcm0sICJGYWlsZWQgdG8gY29weSB3YWl0IGRlcCBoYW5kbGUuXG4iKTsKLQkJCQkJZ290 byBmYWlsX2RlcHM7CisJCQkJCWdvdG8gZmFpbF9qb2JfaW5pdDsKIAkJCQl9CiAJCQkJcmV0ID0g ZHJtX3NjaGVkX2pvYl9hZGRfc3luY29ial9kZXBlbmRlbmN5KCZqb2ItPmJhc2UsIGZpbGVfcHJp diwgaW4uaGFuZGxlLCAwKTsKIAogCQkJCS8vIFRPRE86IEludmVzdGlnYXRlIHdoeSB0aGlzIHdh cyBmaWx0ZXJlZCBvdXQgZm9yIHRoZSBJT0NUTC4KIAkJCQlpZiAocmV0ICYmIHJldCAhPSAtRU5P RU5UKQotCQkJCQlnb3RvIGZhaWxfZGVwczsKKwkJCQkJZ290byBmYWlsX2pvYl9pbml0OwogCQkJ fQogCQl9CiAJfSBlbHNlIHsKQEAgLTIwMSw3ICsyMDQsMTUgQEAgdjNkX2pvYl9pbml0KHN0cnVj dCB2M2RfZGV2ICp2M2QsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCiAJCS8vIFRPRE86 IEludmVzdGlnYXRlIHdoeSB0aGlzIHdhcyBmaWx0ZXJlZCBvdXQgZm9yIHRoZSBJT0NUTC4KIAkJ aWYgKHJldCAmJiByZXQgIT0gLUVOT0VOVCkKLQkJCWdvdG8gZmFpbF9kZXBzOworCQkJZ290byBm YWlsX2pvYl9pbml0OworCX0KKworCS8qIENQVSBqb2JzIGRvbid0IHJlcXVpcmUgaGFyZHdhcmUg cmVzb3VyY2VzICovCisJaWYgKHF1ZXVlICE9IFYzRF9DUFUpIHsKKwkJcmV0ID0gdjNkX3BtX3J1 bnRpbWVfZ2V0KHYzZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGZhaWxfam9iX2luaXQ7CisJCWpv Yi0+aGFzX3BtX3JlZiA9IHRydWU7CiAJfQogCiAJa3JlZl9pbml0KCZqb2ItPnJlZmNvdW50KTsK QEAgLTIxMSw3ICsyMjIsNyBAQCB2M2Rfam9iX2luaXQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAKIAlyZXR1cm4gMDsKIAotZmFpbF9kZXBzOgorZmFp bF9qb2JfaW5pdDoKIAlkcm1fc2NoZWRfam9iX2NsZWFudXAoJmpvYi0+YmFzZSk7CiAJcmV0dXJu IHJldDsKIH0KCi0tIAoyLjUzLjAKCg==