From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 57D9CC25B78 for ; Tue, 4 Jun 2024 12:47:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6fHYMfX3eNxBam9bnuq5zc3pr6EMuXsdNw0lQbg6zhk=; b=bVsZCee4aU3kPs 9FcFcetDcQQhyH0XbPyudb1E30TFqRT1B5KxTK6bwXZkEyqMa0rmsnRyH+f4BIbVs3KhPKPDNsh+p /zug51L+viK6b8ikveIw1oNZ+2B0FLZCGdQGJSBMOG5wGrmxbidX1OFQCTBsjkPs9Pz7684Ninjdn /jdITviEZAniMq5QAzqI0PAu8BnhCoo4wgvnYskT6wcWwKGvvWfrIM7swhYEd21uaY4vk8Wn4HlOu ievlI5ZwbmuWSjW+AJq1ypNNXwsBskT9UjRSU5r9XKneozUqDuCt2Eui2mdLYc1ttivXCGd8Hlu3g HLAOHDjLSEMRDYdbCoqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sETZf-00000002M1a-1xGi; Tue, 04 Jun 2024 12:47:35 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sETZc-00000002Lxq-0d9p for linux-riscv@lists.infradead.org; Tue, 04 Jun 2024 12:47:33 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1f63b38e0b7so955355ad.0 for ; Tue, 04 Jun 2024 05:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1717505250; x=1718110050; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x+CSuJDThn+PB5fFUO+TXaSj7k0OUg7Xto567Lc3KzY=; b=ZBoooQxbQ1N1Bzvvww3ysO3sM3tjxgGlxDD7+kBRrS+Wijo5rwuYNjGFi2nE8WHg5+ s5oMWMxIwD25RX4H4XxH5yQlwEbLw6Hzo2nYqRS25eWxdIQRGNZ/drBU/AJztHDDeo2P aBD1oWxBJ74CDOUOcOpSu7ZbUTcXX5CKWrRsvFSqZ9IO8jZy25+WcZBPjUhxrsLMCLiS Lj/kvPfba1LmnngjvtJbz+KTYjWUCcIbpR6DDEki9YWuNkPfz/gIEsKcBjogB7bEVl1D XkzLwSKnLUlXEDIxIpL780vAmr2dj0QhMp27VB9tmkAwUyAVWkvjoes8yEF3UX7Tex2F MDfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717505250; x=1718110050; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x+CSuJDThn+PB5fFUO+TXaSj7k0OUg7Xto567Lc3KzY=; b=Qd2Try9Mykfq5q9kbQHIasKPohNBE7sVtIzTc3FxDD/1vQPNi3Y/39VmbtvPV6vHXL 1U1Iu5TNMTjiso89cfswO2Kal6QS2+V25wRZqVTHcEGuNjQJ2i95x+8UH+B/F+W6Kxk+ njvJqbHgj0gxISbPd3Eiz9v4Y5qrdw9l3pMlJZpBdzW8IRK5rV9U1EdsW8kI6OIRMo8B qlA6mETfT7ivWhmj/+jM0kyuNC3KGyKe+ZY6KXiHnnixeziEc72LIHCVAFO+/iV3oD+1 C4dgz/1UH2KrMpeZ8fdT/NNvBz/0KzNXegbGUTeb+Xtm3C3TE6q6Xea3PGPjHCYTANpD Z8xQ== X-Forwarded-Encrypted: i=1; AJvYcCW3najJMWcHSDNNgiINQXnSVo4TJLNKsASF9B2svKIA6GxTnjo6KK10Z1cn2Ptbayq19GHvsxAda/3dwrkpLMe8SE8mONVBd56a4RSL8R4t X-Gm-Message-State: AOJu0Yxbm943yPCveB5b2262nzt4MYzXZczBbadm/yw7J/1IdAPqI4vw se40eCsiseS4g5mysa1zYViGrc7pOkcZaOSKeOeyCV9p7Z80pyu8kv3WFzsXxdA= X-Google-Smtp-Source: AGHT+IEy/LhwmIRZMH6aWZXrXK2uhRFHFVKmWf3P2U0Efxg286NPvZUcvjcoIBkiD+YHR73bgi+W9w== X-Received: by 2002:a17:902:f68b:b0:1f6:39cc:46cb with SMTP id d9443c01a7336-1f639cc52ccmr132729485ad.5.1717505249853; Tue, 04 Jun 2024 05:47:29 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:327b:5ba3:8154:37ed]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f6323ebc69sm83042885ad.211.2024.06.04.05.47.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jun 2024 05:47:29 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Jonathan Corbet , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Anup Patel , Shuah Khan Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Atish Patra , linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Conor Dooley Subject: [PATCH v6 07/16] riscv: add ISA extensions validation callback Date: Tue, 4 Jun 2024 14:45:39 +0200 Message-ID: <20240604124550.3214710-8-cleger@rivosinc.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240604124550.3214710-1-cleger@rivosinc.com> References: <20240604124550.3214710-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240604_054732_297978_37DD4141 X-CRM114-Status: GOOD ( 29.34 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org U2luY2UgYSBmZXcgZXh0ZW5zaW9ucyAoWmljYm9tL1ppY2JveikgYWxyZWFkeSBuZWVkcyB2YWxp ZGF0aW9uIGFuZApmdXR1cmUgb25lcyB3aWxsIG5lZWQgaXQgYXMgd2VsbCAoWmMqKSBhZGQgYSB2 YWxpZGF0ZSgpIGNhbGxiYWNrIHRvCnN0cnVjdCByaXNjdl9pc2FfZXh0X2RhdGEuIFRoaXMgcmVx dWlyZSB0byByZXdvcmsgdGhlIHdheSBleHRlbnNpb25zIGFyZQpwYXJzZWQgYW5kIHNwbGl0IGl0 IGluIHR3byBwaGFzZXMuIEZpcnN0IHBoYXNlIGlzIGlzYSBzdHJpbmcgb3IgaXNhCmV4dGVuc2lv biBsaXN0IHBhcnNpbmcgYW5kIGNvbnNpc3RzIGluIGVuYWJsaW5nIGFsbCB0aGUgZXh0ZW5zaW9u cyBpbiBhCnRlbXBvcmFyeSBiaXRtYXNrIChzb3VyY2UgaXNhKSB3aXRob3V0IGFueSB2YWxpZGF0 aW9uLiBUaGUgc2Vjb25kIHN0ZXAKInJlc29sdmVzIiB0aGUgZmluYWwgaXNhIGJpdG1hcCwgaGFu ZGxpbmcgcG90ZW50aWFsIG1pc3NpbmcgZGVwZW5kZW5jaWVzLgpUaGUgbWVjaGFuaXNtIGlzIHF1 aXRlIHNpbXBsZSBhbmQgc2ltcGx5IHZhbGlkYXRlIGVhY2ggZXh0ZW5zaW9uCmRlc2NyaWJlZCBp biB0aGUgc291cmNlIGJpdG1hcCBiZWZvcmUgZW5hYmxpbmcgaXQgaW4gdGhlIHJlc29sdmVkIGlz YQpiaXRtYXAuIHZhbGlkYXRlKCkgY2FsbGJhY2tzIGNhbiByZXR1cm4gZWl0aGVyIDAgZm9yIHN1 Y2Nlc3MsCi1FUFJPQkVERUZFUiBpZiBleHRlbnNpb24gbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGFn YWluIGF0IG5leHQgbG9vcC4gQQpwcmV2aW91cyBJU0EgYml0bWFwIGlzIGtlcHQgdG8gYXZvaWQg bG9vcGluZyBtdWx0aXBsZSB0aW1lcyBpZiBhbgpleHRlbnNpb24gZGVwZW5kZW5jaWVzIGFyZSBu ZXZlciBzYXRpc2ZpZWQgdW50aWwgd2UgcmVhY2ggYSBzdGFibGUKc3RhdGUuIEluIG9yZGVyIHRv IGF2b2lkIGFueSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcGluZywgYWxsb3cgbG9vcGluZwphIG1h eGltdW0gb2YgdGhlIG51bWJlciBvZiBleHRlbnNpb24gd2UgaGFuZGxlLiBaaWNib3ogYW5kIFpp Y2JvbQpleHRlbnNpb25zIGFyZSBtb2RpZmllZCB0byB1c2UgdGhpcyB2YWxpZGF0aW9uIG1lY2hh bmlzbS4KClNpZ25lZC1vZmYtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNv bT4KUmV2aWV3ZWQtYnk6IENvbm9yIERvb2xleSA8Y29ub3IuZG9vbGV5QG1pY3JvY2hpcC5jb20+ Ci0tLQogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmggfCAgIDEgKwogYXJjaC9y aXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jICAgICAgfCAyMjEgKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMzYgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmggYi9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaAppbmRleCAzNDc4MDU0NDYxNTEuLjAw MDc5NmMyZDBiMSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jcHVmZWF0dXJl LmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgKQEAgLTcwLDYgKzcw LDcgQEAgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0YSB7CiAJY29uc3QgY2hhciAqcHJvcGVydHk7 CiAJY29uc3QgdW5zaWduZWQgaW50ICpzdWJzZXRfZXh0X2lkczsKIAljb25zdCB1bnNpZ25lZCBp bnQgc3Vic2V0X2V4dF9zaXplOworCWludCAoKnZhbGlkYXRlKShjb25zdCBzdHJ1Y3QgcmlzY3Zf aXNhX2V4dF9kYXRhICpkYXRhLCBjb25zdCB1bnNpZ25lZCBsb25nICppc2FfYml0bWFwKTsKIH07 CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhIHJpc2N2X2lzYV9leHRb XTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2NwdWZlYXR1cmUuYyBiL2FyY2gvcmlz Y3Yva2VybmVsL2NwdWZlYXR1cmUuYwppbmRleCBiZDE1OTc1NzhmYmMuLmQyMGUyMzZjZWM4YiAx MDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jCisrKyBiL2FyY2gvcmlz Y3Yva2VybmVsL2NwdWZlYXR1cmUuYwpAQCAtNzIsNTEgKzcyLDU1IEBAIGJvb2wgX19yaXNjdl9p c2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShjb25zdCB1bnNpZ25lZCBsb25nICppc2FfYml0bWFwLCB1 bnNpZ25lZCBpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZh aWxhYmxlKTsKIAotc3RhdGljIGJvb2wgcmlzY3ZfaXNhX2V4dGVuc2lvbl9jaGVjayhpbnQgaWQp CitzdGF0aWMgaW50IHJpc2N2X2V4dF96aWNib21fdmFsaWRhdGUoY29uc3Qgc3RydWN0IHJpc2N2 X2lzYV9leHRfZGF0YSAqZGF0YSwKKwkJCQkgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmlzYV9i aXRtYXApCiB7Ci0Jc3dpdGNoIChpZCkgewotCWNhc2UgUklTQ1ZfSVNBX0VYVF9aSUNCT006Ci0J CWlmICghcmlzY3ZfY2JvbV9ibG9ja19zaXplKSB7Ci0JCQlwcl9lcnIoIlppY2JvbSBkZXRlY3Rl ZCBpbiBJU0Egc3RyaW5nLCBkaXNhYmxpbmcgYXMgbm8gY2JvbS1ibG9jay1zaXplIGZvdW5kXG4i KTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfSBlbHNlIGlmICghaXNfcG93ZXJfb2ZfMihyaXNjdl9j Ym9tX2Jsb2NrX3NpemUpKSB7Ci0JCQlwcl9lcnIoIlppY2JvbSBkaXNhYmxlZCBhcyBjYm9tLWJs b2NrLXNpemUgcHJlc2VudCwgYnV0IGlzIG5vdCBhIHBvd2VyLW9mLTJcbiIpOwotCQkJcmV0dXJu IGZhbHNlOwotCQl9Ci0JCXJldHVybiB0cnVlOwotCWNhc2UgUklTQ1ZfSVNBX0VYVF9aSUNCT1o6 Ci0JCWlmICghcmlzY3ZfY2Jvel9ibG9ja19zaXplKSB7Ci0JCQlwcl9lcnIoIlppY2JveiBkZXRl Y3RlZCBpbiBJU0Egc3RyaW5nLCBkaXNhYmxpbmcgYXMgbm8gY2Jvei1ibG9jay1zaXplIGZvdW5k XG4iKTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfSBlbHNlIGlmICghaXNfcG93ZXJfb2ZfMihyaXNj dl9jYm96X2Jsb2NrX3NpemUpKSB7Ci0JCQlwcl9lcnIoIlppY2JveiBkaXNhYmxlZCBhcyBjYm96 LWJsb2NrLXNpemUgcHJlc2VudCwgYnV0IGlzIG5vdCBhIHBvd2VyLW9mLTJcbiIpOwotCQkJcmV0 dXJuIGZhbHNlOwotCQl9Ci0JCXJldHVybiB0cnVlOwotCWNhc2UgUklTQ1ZfSVNBX0VYVF9JTlZB TElEOgotCQlyZXR1cm4gZmFsc2U7CisJaWYgKCFyaXNjdl9jYm9tX2Jsb2NrX3NpemUpIHsKKwkJ cHJfZXJyKCJaaWNib20gZGV0ZWN0ZWQgaW4gSVNBIHN0cmluZywgZGlzYWJsaW5nIGFzIG5vIGNi b20tYmxvY2stc2l6ZSBmb3VuZFxuIik7CisJCXJldHVybiAtRUlOVkFMOwogCX0KKwlpZiAoIWlz X3Bvd2VyX29mXzIocmlzY3ZfY2JvbV9ibG9ja19zaXplKSkgeworCQlwcl9lcnIoIlppY2JvbSBk aXNhYmxlZCBhcyBjYm9tLWJsb2NrLXNpemUgcHJlc2VudCwgYnV0IGlzIG5vdCBhIHBvd2VyLW9m LTJcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcmV0dXJuIDA7Cit9CiAKLQlyZXR1cm4g dHJ1ZTsKK3N0YXRpYyBpbnQgcmlzY3ZfZXh0X3ppY2Jvel92YWxpZGF0ZShjb25zdCBzdHJ1Y3Qg cmlzY3ZfaXNhX2V4dF9kYXRhICpkYXRhLAorCQkJCSAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAq aXNhX2JpdG1hcCkKK3sKKwlpZiAoIXJpc2N2X2Nib3pfYmxvY2tfc2l6ZSkgeworCQlwcl9lcnIo IlppY2JveiBkZXRlY3RlZCBpbiBJU0Egc3RyaW5nLCBkaXNhYmxpbmcgYXMgbm8gY2Jvei1ibG9j ay1zaXplIGZvdW5kXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICghaXNfcG93ZXJf b2ZfMihyaXNjdl9jYm96X2Jsb2NrX3NpemUpKSB7CisJCXByX2VycigiWmljYm96IGRpc2FibGVk IGFzIGNib3otYmxvY2stc2l6ZSBwcmVzZW50LCBidXQgaXMgbm90IGEgcG93ZXItb2YtMlxuIik7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBfUklTQ1Zf SVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIF9zdWJzZXRfZXh0cywgX3N1YnNldF9leHRzX3NpemUp IHsJXAotCS5uYW1lID0gI19uYW1lLAkJCQkJCQkJXAotCS5wcm9wZXJ0eSA9ICNfbmFtZSwJCQkJ CQkJXAotCS5pZCA9IF9pZCwJCQkJCQkJCVwKLQkuc3Vic2V0X2V4dF9pZHMgPSBfc3Vic2V0X2V4 dHMsCQkJCQkJXAotCS5zdWJzZXRfZXh0X3NpemUgPSBfc3Vic2V0X2V4dHNfc2l6ZQkJCQkJXAor I2RlZmluZSBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIF9zdWJzZXRfZXh0cywgX3N1 YnNldF9leHRzX3NpemUsIF92YWxpZGF0ZSkgewlcCisJLm5hbWUgPSAjX25hbWUsCQkJCQkJCQkJ XAorCS5wcm9wZXJ0eSA9ICNfbmFtZSwJCQkJCQkJCVwKKwkuaWQgPSBfaWQsCQkJCQkJCQkJXAor CS5zdWJzZXRfZXh0X2lkcyA9IF9zdWJzZXRfZXh0cywJCQkJCQkJXAorCS5zdWJzZXRfZXh0X3Np emUgPSBfc3Vic2V0X2V4dHNfc2l6ZSwJCQkJCQlcCisJLnZhbGlkYXRlID0gX3ZhbGlkYXRlCQkJ CQkJCQlcCiB9CiAKLSNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIF9pZCkgX1JJ U0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBOVUxMLCAwKQorI2RlZmluZSBfX1JJU0NWX0lT QV9FWFRfREFUQShfbmFtZSwgX2lkKSBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIE5V TEwsIDAsIE5VTEwpCiAKIC8qIFVzZWQgdG8gZGVjbGFyZSBwdXJlICJsYXNzbyIgZXh0ZW5zaW9u IChaayBmb3IgaW5zdGFuY2UpICovCiAjZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9CVU5ETEUoX25h bWUsIF9idW5kbGVkX2V4dHMpIFwKLQlfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBSSVNDVl9J U0FfRVhUX0lOVkFMSUQsIF9idW5kbGVkX2V4dHMsIEFSUkFZX1NJWkUoX2J1bmRsZWRfZXh0cykp CisJX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgUklTQ1ZfSVNBX0VYVF9JTlZBTElELCBfYnVu ZGxlZF9leHRzLCBcCisJCQkgICAgQVJSQVlfU0laRShfYnVuZGxlZF9leHRzKSwgTlVMTCkKIAog LyogVXNlZCB0byBkZWNsYXJlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYSBzdXBlcnNldCBvZiBvdGhl ciBleHRlbnNpb25zIChadmJiIGZvciBpbnN0YW5jZSkgKi8KICNkZWZpbmUgX19SSVNDVl9JU0Ff RVhUX1NVUEVSU0VUKF9uYW1lLCBfaWQsIF9zdWJfZXh0cykgXAotCV9SSVNDVl9JU0FfRVhUX0RB VEEoX25hbWUsIF9pZCwgX3N1Yl9leHRzLCBBUlJBWV9TSVpFKF9zdWJfZXh0cykpCisJX1JJU0NW X0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3ViX2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRz KSwgTlVMTCkKKyNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX1NVUEVSU0VUX1ZBTElEQVRFKF9uYW1l LCBfaWQsIF9zdWJfZXh0cywgX3ZhbGlkYXRlKSBcCisJX1JJU0NWX0lTQV9FWFRfREFUQShfbmFt ZSwgX2lkLCBfc3ViX2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRzKSwgX3ZhbGlkYXRlKQogCiBz dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJpc2N2X3prX2J1bmRsZWRfZXh0c1tdID0gewogCVJJ U0NWX0lTQV9FWFRfWkJLQiwKQEAgLTI0Nyw4ICsyNTEsMTAgQEAgY29uc3Qgc3RydWN0IHJpc2N2 X2lzYV9leHRfZGF0YSByaXNjdl9pc2FfZXh0W10gPSB7CiAJX19SSVNDVl9JU0FfRVhUX0RBVEEo YywgUklTQ1ZfSVNBX0VYVF9jKSwKIAlfX1JJU0NWX0lTQV9FWFRfREFUQSh2LCBSSVNDVl9JU0Ff RVhUX3YpLAogCV9fUklTQ1ZfSVNBX0VYVF9EQVRBKGgsIFJJU0NWX0lTQV9FWFRfaCksCi0JX19S SVNDVl9JU0FfRVhUX1NVUEVSU0VUKHppY2JvbSwgUklTQ1ZfSVNBX0VYVF9aSUNCT00sIHJpc2N2 X3hsaW51eGVudmNmZ19leHRzKSwKLQlfX1JJU0NWX0lTQV9FWFRfU1VQRVJTRVQoemljYm96LCBS SVNDVl9JU0FfRVhUX1pJQ0JPWiwgcmlzY3ZfeGxpbnV4ZW52Y2ZnX2V4dHMpLAorCV9fUklTQ1Zf SVNBX0VYVF9TVVBFUlNFVF9WQUxJREFURSh6aWNib20sIFJJU0NWX0lTQV9FWFRfWklDQk9NLCBy aXNjdl94bGludXhlbnZjZmdfZXh0cywKKwkJCQkJICByaXNjdl9leHRfemljYm9tX3ZhbGlkYXRl KSwKKwlfX1JJU0NWX0lTQV9FWFRfU1VQRVJTRVRfVkFMSURBVEUoemljYm96LCBSSVNDVl9JU0Ff RVhUX1pJQ0JPWiwgcmlzY3ZfeGxpbnV4ZW52Y2ZnX2V4dHMsCisJCQkJCSAgcmlzY3ZfZXh0X3pp Y2Jvel92YWxpZGF0ZSksCiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoemljbnRyLCBSSVNDVl9JU0Ff RVhUX1pJQ05UUiksCiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoemljb25kLCBSSVNDVl9JU0FfRVhU X1pJQ09ORCksCiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoemljc3IsIFJJU0NWX0lTQV9FWFRfWklD U1IpLApAQCAtMzEwLDMzICszMTYsOTMgQEAgY29uc3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0 YSByaXNjdl9pc2FfZXh0W10gPSB7CiAKIGNvbnN0IHNpemVfdCByaXNjdl9pc2FfZXh0X2NvdW50 ID0gQVJSQVlfU0laRShyaXNjdl9pc2FfZXh0KTsKIAotc3RhdGljIHZvaWQgX19pbml0IG1hdGNo X2lzYV9leHQoY29uc3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0YSAqZXh0LCBjb25zdCBjaGFy ICpuYW1lLAotCQkJCSBjb25zdCBjaGFyICpuYW1lX2VuZCwgc3RydWN0IHJpc2N2X2lzYWluZm8g KmlzYWluZm8pCitzdGF0aWMgdm9pZCByaXNjdl9pc2Ffc2V0X2V4dChjb25zdCBzdHJ1Y3Qgcmlz Y3ZfaXNhX2V4dF9kYXRhICpleHQsIHVuc2lnbmVkIGxvbmcgKmJpdG1hcCkKIHsKLQlpZiAoKG5h bWVfZW5kIC0gbmFtZSA9PSBzdHJsZW4oZXh0LT5uYW1lKSkgJiYKLQkgICAgICFzdHJuY2FzZWNt cChuYW1lLCBleHQtPm5hbWUsIG5hbWVfZW5kIC0gbmFtZSkpIHsKLQkJLyoKLQkJICogSWYgdGhp cyBpcyBhIGJ1bmRsZSwgZW5hYmxlIGFsbCB0aGUgSVNBIGV4dGVuc2lvbnMgdGhhdAotCQkgKiBj b21wcmlzZSB0aGUgYnVuZGxlLgotCQkgKi8KLQkJaWYgKGV4dC0+c3Vic2V0X2V4dF9zaXplKSB7 Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IGV4dC0+c3Vic2V0X2V4dF9zaXplOyBpKyspIHsKLQkJ CQlpZiAocmlzY3ZfaXNhX2V4dGVuc2lvbl9jaGVjayhleHQtPnN1YnNldF9leHRfaWRzW2ldKSkK LQkJCQkJc2V0X2JpdChleHQtPnN1YnNldF9leHRfaWRzW2ldLCBpc2FpbmZvLT5pc2EpOworCWlm IChleHQtPmlkICE9IFJJU0NWX0lTQV9FWFRfSU5WQUxJRCkKKwkJc2V0X2JpdChleHQtPmlkLCBi aXRtYXApOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBleHQtPnN1YnNldF9leHRfc2l6ZTsgaSsr KSB7CisJCWlmIChleHQtPnN1YnNldF9leHRfaWRzW2ldICE9IFJJU0NWX0lTQV9FWFRfSU5WQUxJ RCkKKwkJCXNldF9iaXQoZXh0LT5zdWJzZXRfZXh0X2lkc1tpXSwgYml0bWFwKTsKKwl9Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpyaXNjdl9nZXRfaXNhX2V4 dF9kYXRhKHVuc2lnbmVkIGludCBleHRfaWQpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCByaXNj dl9pc2FfZXh0X2NvdW50OyBpKyspIHsKKwkJaWYgKHJpc2N2X2lzYV9leHRbaV0uaWQgPT0gZXh0 X2lkKQorCQkJcmV0dXJuICZyaXNjdl9pc2FfZXh0W2ldOworCX0KKworCXJldHVybiBOVUxMOwor fQorCisvKgorICogIlJlc29sdmUiIGEgc291cmNlIElTQSBiaXRtYXAgaW50byBvbmUgdGhhdCBt YXRjaGVzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFzCisgKiB3ZWxsIGFzIGNvcnJlY3QgZXh0ZW5z aW9uIGRlcGVuZGVuY2llcy4gU29tZSBleHRlbnNpb25zIGRlcGVuZHMgb24gc3BlY2lmaWMKKyAq IGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGJlIHVzYWJsZSAoViBuZWVkcyBDT05GSUdfUklTQ1Zf SVNBX1YgZm9yIGluc3RhbmNlKQorICogYW5kIHRoaXMgZnVuY3Rpb24gd2lsbCBhY3R1YWxseSB2 YWxpZGF0ZSBhbGwgdGhlIGV4dGVuc2lvbnMgcHJvdmlkZWQgaW4KKyAqIHNvdXJjZV9pc2EgaW50 byB0aGUgcmVzb2x2ZWRfaXNhIGJhc2VkIG9uIGV4dGVuc2lvbnMgdmFsaWRhdGUoKSBjYWxsYmFj a3MuCisgKi8KK3N0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9yZXNvbHZlX2lzYSh1bnNpZ25lZCBs b25nICpzb3VyY2VfaXNhLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqcmVzb2x2ZWRfaXNhLCB1 bnNpZ25lZCBsb25nICp0aGlzX2h3Y2FwLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqaXNhMmh3 Y2FwKQoreworCWJvb2wgbG9vcDsKKwljb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpl eHQ7CisJREVDTEFSRV9CSVRNQVAocHJldl9yZXNvbHZlZF9pc2EsIFJJU0NWX0lTQV9FWFRfTUFY KTsKKwlpbnQgbWF4X2xvb3BfY291bnQgPSByaXNjdl9pc2FfZXh0X2NvdW50LCByZXQ7CisJdW5z aWduZWQgaW50IGJpdDsKKworCWRvIHsKKwkJbG9vcCA9IGZhbHNlOworCQlpZiAobWF4X2xvb3Bf Y291bnQtLSA8IDApIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIHJlYWNoIGEgc3RhYmxlIElTQSBz dGF0ZVxuIik7CisJCQlyZXR1cm47CisJCX0KKwkJYml0bWFwX2NvcHkocHJldl9yZXNvbHZlZF9p c2EsIHJlc29sdmVkX2lzYSwgUklTQ1ZfSVNBX0VYVF9NQVgpOworCQlmb3JfZWFjaF9zZXRfYml0 KGJpdCwgc291cmNlX2lzYSwgUklTQ1ZfSVNBX0VYVF9NQVgpIHsKKwkJCWV4dCA9IHJpc2N2X2dl dF9pc2FfZXh0X2RhdGEoYml0KTsKKwkJCWlmICghZXh0KQorCQkJCWNvbnRpbnVlOworCisJCQlp ZiAoZXh0LT52YWxpZGF0ZSkgeworCQkJCXJldCA9IGV4dC0+dmFsaWRhdGUoZXh0LCByZXNvbHZl ZF9pc2EpOworCQkJCWlmIChyZXQgPT0gLUVQUk9CRV9ERUZFUikgeworCQkJCQlsb29wID0gdHJ1 ZTsKKwkJCQkJY29udGludWU7CisJCQkJfSBlbHNlIGlmIChyZXQpIHsKKwkJCQkJLyogRGlzYWJs ZSB0aGUgZXh0ZW5zaW9uIGVudGlyZWx5ICovCisJCQkJCWNsZWFyX2JpdChleHQtPmlkLCBzb3Vy Y2VfaXNhKTsKKwkJCQkJY29udGludWU7CisJCQkJfQogCQkJfQorCisJCQlzZXRfYml0KGV4dC0+ aWQsIHJlc29sdmVkX2lzYSk7CisJCQkvKiBObyBuZWVkIHRvIGtlZXAgaXQgaW4gc291cmNlIGlz YSBub3cgdGhhdCBpdCBpcyBlbmFibGVkICovCisJCQljbGVhcl9iaXQoZXh0LT5pZCwgc291cmNl X2lzYSk7CisKKwkJCS8qIFNpbmdsZSBsZXR0ZXIgZXh0ZW5zaW9ucyBnZXQgc2V0IGluIGh3Y2Fw ICovCisJCQlpZiAoZXh0LT5pZCA8IFJJU0NWX0lTQV9FWFRfQkFTRSkKKwkJCQkqdGhpc19od2Nh cCB8PSBpc2EyaHdjYXBbZXh0LT5pZF07CiAJCX0KKwl9IHdoaWxlIChsb29wICYmIG1lbWNtcChw cmV2X3Jlc29sdmVkX2lzYSwgcmVzb2x2ZWRfaXNhLCBzaXplb2YocHJldl9yZXNvbHZlZF9pc2Ep KSk7Cit9CiAKLQkJLyoKLQkJICogVGhpcyBpcyB2YWxpZCBldmVuIGZvciBidW5kbGUgZXh0ZW5z aW9ucyB3aGljaCB1c2VzIHRoZSBSSVNDVl9JU0FfRVhUX0lOVkFMSUQgaWQKLQkJICogKHJlamVj dGVkIGJ5IHJpc2N2X2lzYV9leHRlbnNpb25fY2hlY2soKSkuCi0JCSAqLwotCQlpZiAocmlzY3Zf aXNhX2V4dGVuc2lvbl9jaGVjayhleHQtPmlkKSkKLQkJCXNldF9iaXQoZXh0LT5pZCwgaXNhaW5m by0+aXNhKTsKK3N0YXRpYyB2b2lkIF9faW5pdCBtYXRjaF9pc2FfZXh0KGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKm5hbWVfZW5kLCB1bnNpZ25lZCBsb25nICpiaXRtYXApCit7CisJZm9y IChpbnQgaSA9IDA7IGkgPCByaXNjdl9pc2FfZXh0X2NvdW50OyBpKyspIHsKKwkJY29uc3Qgc3Ry dWN0IHJpc2N2X2lzYV9leHRfZGF0YSAqZXh0ID0gJnJpc2N2X2lzYV9leHRbaV07CisKKwkJaWYg KChuYW1lX2VuZCAtIG5hbWUgPT0gc3RybGVuKGV4dC0+bmFtZSkpICYmCisJCSAgICAhc3RybmNh c2VjbXAobmFtZSwgZXh0LT5uYW1lLCBuYW1lX2VuZCAtIG5hbWUpKSB7CisJCQlyaXNjdl9pc2Ff c2V0X2V4dChleHQsIGJpdG1hcCk7CisJCQlicmVhazsKKwkJfQogCX0KIH0KIAotc3RhdGljIHZv aWQgX19pbml0IHJpc2N2X3BhcnNlX2lzYV9zdHJpbmcodW5zaWduZWQgbG9uZyAqdGhpc19od2Nh cCwgc3RydWN0IHJpc2N2X2lzYWluZm8gKmlzYWluZm8sCi0JCQkJCSAgdW5zaWduZWQgbG9uZyAq aXNhMmh3Y2FwLCBjb25zdCBjaGFyICppc2EpCitzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcGFy c2VfaXNhX3N0cmluZyhjb25zdCBjaGFyICppc2EsIHVuc2lnbmVkIGxvbmcgKmJpdG1hcCkKIHsK IAkvKgogCSAqIEZvciBhbGwgcG9zc2libGUgY3B1cywgd2UgaGF2ZSBhbHJlYWR5IHZhbGlkYXRl ZCBpbgpAQCAtMzQ5LDcgKzQxNSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9wYXJzZV9p c2Ffc3RyaW5nKHVuc2lnbmVkIGxvbmcgKnRoaXNfaHdjYXAsIHN0cnVjdCByaXNjCiAJd2hpbGUg KCppc2EpIHsKIAkJY29uc3QgY2hhciAqZXh0ID0gaXNhKys7CiAJCWNvbnN0IGNoYXIgKmV4dF9l bmQgPSBpc2E7Ci0JCWJvb2wgZXh0X2xvbmcgPSBmYWxzZSwgZXh0X2VyciA9IGZhbHNlOworCQli b29sIGV4dF9lcnIgPSBmYWxzZTsKIAogCQlzd2l0Y2ggKCpleHQpIHsKIAkJY2FzZSAncyc6CkBA IC0zODksNyArNDU1LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3BhcnNlX2lzYV9zdHJp bmcodW5zaWduZWQgbG9uZyAqdGhpc19od2NhcCwgc3RydWN0IHJpc2MKIAkJCSAqIGNoYXJhY3Rl ciBpdHNlbGYgd2hpbGUgZWxpbWluYXRpbmcgdGhlIGV4dGVuc2lvbnMgdmVyc2lvbiBudW1iZXIu CiAJCQkgKiBBIHNpbXBsZSByZS1pbmNyZW1lbnQgc29sdmVzIHRoaXMgcHJvYmxlbS4KIAkJCSAq LwotCQkJZXh0X2xvbmcgPSB0cnVlOwogCQkJZm9yICg7ICppc2EgJiYgKmlzYSAhPSAnXyc7ICsr aXNhKQogCQkJCWlmICh1bmxpa2VseSghaXNhbG51bSgqaXNhKSkpCiAJCQkJCWV4dF9lcnIgPSB0 cnVlOwpAQCAtNDY5LDE3ICs1MzQsOCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcGFyc2Vf aXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICp0aGlzX2h3Y2FwLCBzdHJ1Y3QgcmlzYwogCiAJCWlm ICh1bmxpa2VseShleHRfZXJyKSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoIWV4dF9sb25nKSB7Ci0J CQlpbnQgbnIgPSB0b2xvd2VyKCpleHQpIC0gJ2EnOwogCi0JCQlpZiAocmlzY3ZfaXNhX2V4dGVu c2lvbl9jaGVjayhucikpIHsKLQkJCQkqdGhpc19od2NhcCB8PSBpc2EyaHdjYXBbbnJdOwotCQkJ CXNldF9iaXQobnIsIGlzYWluZm8tPmlzYSk7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlmb3IgKGlu dCBpID0gMDsgaSA8IHJpc2N2X2lzYV9leHRfY291bnQ7IGkrKykKLQkJCQltYXRjaF9pc2FfZXh0 KCZyaXNjdl9pc2FfZXh0W2ldLCBleHQsIGV4dF9lbmQsIGlzYWluZm8pOwotCQl9CisJCW1hdGNo X2lzYV9leHQoZXh0LCBleHRfZW5kLCBiaXRtYXApOwogCX0KIH0KIApAQCAtNTA2LDYgKzU2Miw3 IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9maWxsX2h3Y2FwX2Zyb21faXNhX3N0cmluZyh1 bnNpZ25lZCBsb25nICppc2EyaHdjYXApCiAJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewog CQlzdHJ1Y3QgcmlzY3ZfaXNhaW5mbyAqaXNhaW5mbyA9ICZoYXJ0X2lzYVtjcHVdOwogCQl1bnNp Z25lZCBsb25nIHRoaXNfaHdjYXAgPSAwOworCQlERUNMQVJFX0JJVE1BUChzb3VyY2VfaXNhLCBS SVNDVl9JU0FfRVhUX01BWCkgPSB7IDAgfTsKIAogCQlpZiAoYWNwaV9kaXNhYmxlZCkgewogCQkJ bm9kZSA9IG9mX2NwdV9kZXZpY2Vfbm9kZV9nZXQoY3B1KTsKQEAgLTUyOCw3ICs1ODUsNyBAQCBz dGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9tX2lzYV9zdHJpbmcodW5zaWdu ZWQgbG9uZyAqaXNhMmh3Y2FwKQogCQkJfQogCQl9CiAKLQkJcmlzY3ZfcGFyc2VfaXNhX3N0cmlu ZygmdGhpc19od2NhcCwgaXNhaW5mbywgaXNhMmh3Y2FwLCBpc2EpOworCQlyaXNjdl9wYXJzZV9p c2Ffc3RyaW5nKGlzYSwgc291cmNlX2lzYSk7CiAKIAkJLyoKIAkJICogVGhlc2Ugb25lcyB3ZXJl IGFzIHRoZXkgd2VyZSBwYXJ0IG9mIHRoZSBiYXNlIElTQSB3aGVuIHRoZQpAQCAtNTM2LDEwICs1 OTMsMTAgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9pc2Ffc3Ry aW5nKHVuc2lnbmVkIGxvbmcgKmlzYTJod2NhcCkKIAkJICogdW5jb25kaXRpb25hbGx5IHdoZXJl IGBpYCBpcyBpbiByaXNjdixpc2Egb24gRFQgc3lzdGVtcy4KIAkJICovCiAJCWlmIChhY3BpX2Rp c2FibGVkKSB7Ci0JCQlzZXRfYml0KFJJU0NWX0lTQV9FWFRfWklDU1IsIGlzYWluZm8tPmlzYSk7 Ci0JCQlzZXRfYml0KFJJU0NWX0lTQV9FWFRfWklGRU5DRUksIGlzYWluZm8tPmlzYSk7Ci0JCQlz ZXRfYml0KFJJU0NWX0lTQV9FWFRfWklDTlRSLCBpc2FpbmZvLT5pc2EpOwotCQkJc2V0X2JpdChS SVNDVl9JU0FfRVhUX1pJSFBNLCBpc2FpbmZvLT5pc2EpOworCQkJc2V0X2JpdChSSVNDVl9JU0Ff RVhUX1pJQ1NSLCBzb3VyY2VfaXNhKTsKKwkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9aSUZFTkNF SSwgc291cmNlX2lzYSk7CisJCQlzZXRfYml0KFJJU0NWX0lTQV9FWFRfWklDTlRSLCBzb3VyY2Vf aXNhKTsKKwkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9aSUhQTSwgc291cmNlX2lzYSk7CiAJCX0K IAogCQkvKgpAQCAtNTUyLDkgKzYwOSwxMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfZmls bF9od2NhcF9mcm9tX2lzYV9zdHJpbmcodW5zaWduZWQgbG9uZyAqaXNhMmh3Y2FwKQogCQkgKi8K IAkJaWYgKGFjcGlfZGlzYWJsZWQgJiYgYm9vdF92ZW5kb3JpZCA9PSBUSEVBRF9WRU5ET1JfSUQg JiYgYm9vdF9hcmNoaWQgPT0gMHgwKSB7CiAJCQl0aGlzX2h3Y2FwICY9IH5pc2EyaHdjYXBbUklT Q1ZfSVNBX0VYVF92XTsKLQkJCWNsZWFyX2JpdChSSVNDVl9JU0FfRVhUX3YsIGlzYWluZm8tPmlz YSk7CisJCQljbGVhcl9iaXQoUklTQ1ZfSVNBX0VYVF92LCBzb3VyY2VfaXNhKTsKIAkJfQogCisJ CXJpc2N2X3Jlc29sdmVfaXNhKHNvdXJjZV9pc2EsIGlzYWluZm8tPmlzYSwgJnRoaXNfaHdjYXAs IGlzYTJod2NhcCk7CisKIAkJLyoKIAkJICogQWxsICJva2F5IiBoYXJ0IHNob3VsZCBoYXZlIHNh bWUgaXNhLiBTZXQgSFdDQVAgYmFzZWQgb24KIAkJICogY29tbW9uIGNhcGFiaWxpdGllcyBvZiBl dmVyeSAib2theSIgaGFydCwgaW4gY2FzZSB0aGV5IGRvbid0CkBAIC01ODMsNiArNjQyLDcgQEAg c3RhdGljIGludCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9tX2V4dF9saXN0KHVuc2lnbmVk IGxvbmcgKmlzYTJod2NhcCkKIAkJdW5zaWduZWQgbG9uZyB0aGlzX2h3Y2FwID0gMDsKIAkJc3Ry dWN0IGRldmljZV9ub2RlICpjcHVfbm9kZTsKIAkJc3RydWN0IHJpc2N2X2lzYWluZm8gKmlzYWlu Zm8gPSAmaGFydF9pc2FbY3B1XTsKKwkJREVDTEFSRV9CSVRNQVAoc291cmNlX2lzYSwgUklTQ1Zf SVNBX0VYVF9NQVgpID0geyAwIH07CiAKIAkJY3B1X25vZGUgPSBvZl9jcHVfZGV2aWNlX25vZGVf Z2V0KGNwdSk7CiAJCWlmICghY3B1X25vZGUpIHsKQEAgLTYwMiwyMiArNjYyLDExIEBAIHN0YXRp YyBpbnQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9leHRfbGlzdCh1bnNpZ25lZCBsb25n ICppc2EyaHdjYXApCiAJCQkJCQkgICAgIGV4dC0+cHJvcGVydHkpIDwgMCkKIAkJCQljb250aW51 ZTsKIAotCQkJaWYgKGV4dC0+c3Vic2V0X2V4dF9zaXplKSB7Ci0JCQkJZm9yIChpbnQgaiA9IDA7 IGogPCBleHQtPnN1YnNldF9leHRfc2l6ZTsgaisrKSB7Ci0JCQkJCWlmIChyaXNjdl9pc2FfZXh0 ZW5zaW9uX2NoZWNrKGV4dC0+c3Vic2V0X2V4dF9pZHNbal0pKQotCQkJCQkJc2V0X2JpdChleHQt PnN1YnNldF9leHRfaWRzW2pdLCBpc2FpbmZvLT5pc2EpOwotCQkJCX0KLQkJCX0KLQotCQkJaWYg KHJpc2N2X2lzYV9leHRlbnNpb25fY2hlY2soZXh0LT5pZCkpIHsKLQkJCQlzZXRfYml0KGV4dC0+ aWQsIGlzYWluZm8tPmlzYSk7Ci0KLQkJCQkvKiBPbmx5IHNpbmdsZSBsZXR0ZXIgZXh0ZW5zaW9u cyBnZXQgc2V0IGluIGh3Y2FwICovCi0JCQkJaWYgKHN0cm5sZW4ocmlzY3ZfaXNhX2V4dFtpXS5u YW1lLCAyKSA9PSAxKQotCQkJCQl0aGlzX2h3Y2FwIHw9IGlzYTJod2NhcFtyaXNjdl9pc2FfZXh0 W2ldLmlkXTsKLQkJCX0KKwkJCXJpc2N2X2lzYV9zZXRfZXh0KGV4dCwgc291cmNlX2lzYSk7CiAJ CX0KIAorCQlyaXNjdl9yZXNvbHZlX2lzYShzb3VyY2VfaXNhLCBpc2FpbmZvLT5pc2EsICZ0aGlz X2h3Y2FwLCBpc2EyaHdjYXApOworCiAJCW9mX25vZGVfcHV0KGNwdV9ub2RlKTsKIAogCQkvKgot LSAKMi40NS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNj dgo=