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 ACA22C04FFE for ; Fri, 17 May 2024 14:53:57 +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=pFp0H+ekeN9v/HVEOl3kFL82bt+3XoIe9lW8QAigLnM=; b=Tw9Gvt2KThaGn+ RmE12QQKJLaVgMfCMFA7/MjoafrXPBBzfO9kR4t6Ij8hv4zIFUpDmvpNjfN0rxMmiENDrGoVtLqJj XbBwavtyM3egjMvNk+EPN5g5ju2I6UlAECtInHe6awE1fqLlnjfetSoQhYACn3v+8yF6pz8bX9ci1 pndk4yXgjuyuC91OKCBpGWOvrrq0+VuSVygL7/zsC/c6V90sb9JeS6vAt2rJT9ICCrKkYwuNcp7Ms VgLNnrL94sMX2Q17hhysHAnLKt5hU0Y9HIQrafYVtfnDXh7nyjtK7tBzMgl/Uzxs7ZZtgIIAq0kWx ygAVxIvsttP7IOpay0Zw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s7yxz-000000088Wb-3bS5; Fri, 17 May 2024 14:53:51 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s7yxa-0000000887M-0Zgn for linux-riscv@lists.infradead.org; Fri, 17 May 2024 14:53:30 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-420139ea1c4so351775e9.0 for ; Fri, 17 May 2024 07:53:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1715957604; x=1716562404; 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=NruMqRl+Q4rEB/nYdAHi0xTYPVFbXKC8s/hKlXiCKEs=; b=hY4ZJs+lysi7Z7xNMuuxSYTLVxkxRmK7xJAyVAOH7wEX7hi6C1Iq9QZSznZ+FENT+P eI+RabEYj3T5yE2sjk6eqHwfTBnxx03mcp/hTyaDzlMvaJXxRegXrnlYDi603PwoSxVR npn/dQFpigEuRFc9AEy/sZZeOsxGizM2p18kFMh4x39NbZYskAXcz5PiytZIl+o9LvZR y3BeUbsvDCGhrjOhCdQLJJEuhXY5Yq98xSXXiMO45F/PaFKZkZPIN96gx8C5VzVwhtrn HlITB9ueK6Wuqoc8xF6CauHcMsaayFXi1NOL8svnDayvKRmADeVv2dQhJI7XQ4G51pUs squA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715957604; x=1716562404; 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=NruMqRl+Q4rEB/nYdAHi0xTYPVFbXKC8s/hKlXiCKEs=; b=JZox1tirjrSXzAmNUTnpb9SUK/G4KbEMPk67SeWAGiD1flJAvuI16tEiLn7ZbzVp2Z IwXj7/wz7SfIqgkzM5ZblSn/vOThIhEYAE9SXohdF5HHQM0VVdosh5zIvo1/KzNqbqsv WN8w7je7GPqwS/71wDiLaCPxeceMfqtiVDJMl5XNV26CsoTQr+tVbmdp89x2SGME/E+E M0jHhRqh0IlSdEe2GmjxLldWlSf5jF0XOAS+ONRWbZW4T0W5HXFBpXYauW48SRwaR9JZ 7pajPr/Klnub1oYtkL1stsAt4BioCIZS9hlAigiarRUWQH/gjbPj/QJeFP9SOZotzqIB xo+A== X-Forwarded-Encrypted: i=1; AJvYcCXBAacr22fHbP73aBHAbRx+QFWXGNLWLj7tALrSxhRaGoE9pG2Msliz38Bk5Wp9T2lk9WzyZcovb/H8b4sI4jBQALcFMwZauG1kU33Pk9yb X-Gm-Message-State: AOJu0Yy5OylXJqlr8eQmmrbxDRIltMfOwfDkATBR1eXzp/J+7I0uDQ5Q DKcZepqcOjYosspq/mwhemD4nFpxiK8w249NMzGswfemUHP4GR5TAMeiIjhxx1c= X-Google-Smtp-Source: AGHT+IGsRYLJfvkB/cEvNoQuKq7EA8YLtAY48Ayq9s2PlXtghO2NsJFvpTMxRvdVfBcG2bOWgCnypw== X-Received: by 2002:a05:600c:19c8:b0:419:f68e:118c with SMTP id 5b1f17b1804b1-41feaa2f41fmr162204825e9.1.1715957604608; Fri, 17 May 2024 07:53:24 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:46f0:3724:aa77:c1f8]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-41fccce9431sm301723695e9.28.2024.05.17.07.53.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 May 2024 07:53:24 -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 Subject: [PATCH v5 07/16] riscv: add ISA extensions validation callback Date: Fri, 17 May 2024 16:52:47 +0200 Message-ID: <20240517145302.971019-8-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240517145302.971019-1-cleger@rivosinc.com> References: <20240517145302.971019-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240517_075326_411371_6A3B7CD6 X-CRM114-Status: GOOD ( 28.61 ) 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 bT4KLS0tCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCB8ICAyMyArKy0tCiBh cmNoL3Jpc2N2L2tlcm5lbC9jcHVmZWF0dXJlLmMgICAgICB8IDE5OCArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCA4NiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUu aCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oCmluZGV4IDg4NzIzYWMyZDI2 ZS4uMWExNDhjZDY3ZTBlIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZl YXR1cmUuaAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaApAQCAtMzUs MjMgKzM1LDI3IEBAIGV4dGVybiB1MzIgcmlzY3ZfdmxlbmJfb2Y7CiAKIHZvaWQgcmlzY3ZfdXNl cl9pc2FfZW5hYmxlKHZvaWQpOwogCi0jZGVmaW5lIF9SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUs IF9pZCwgX3N1YnNldF9leHRzLCBfc3Vic2V0X2V4dHNfc2l6ZSkgewlcCi0JLm5hbWUgPSAjX25h bWUsCQkJCQkJCQlcCi0JLnByb3BlcnR5ID0gI19uYW1lLAkJCQkJCQlcCi0JLmlkID0gX2lkLAkJ CQkJCQkJXAotCS5zdWJzZXRfZXh0X2lkcyA9IF9zdWJzZXRfZXh0cywJCQkJCQlcCi0JLnN1YnNl dF9leHRfc2l6ZSA9IF9zdWJzZXRfZXh0c19zaXplCQkJCQlcCisjZGVmaW5lIF9SSVNDVl9JU0Ff RVhUX0RBVEEoX25hbWUsIF9pZCwgX3N1YnNldF9leHRzLCBfc3Vic2V0X2V4dHNfc2l6ZSwgX3Zh bGlkYXRlKSB7CVwKKwkubmFtZSA9ICNfbmFtZSwJCQkJCQkJCQlcCisJLnByb3BlcnR5ID0gI19u YW1lLAkJCQkJCQkJXAorCS5pZCA9IF9pZCwJCQkJCQkJCQlcCisJLnN1YnNldF9leHRfaWRzID0g X3N1YnNldF9leHRzLAkJCQkJCQlcCisJLnN1YnNldF9leHRfc2l6ZSA9IF9zdWJzZXRfZXh0c19z aXplLAkJCQkJCVwKKwkudmFsaWRhdGUgPSBfdmFsaWRhdGUJCQkJCQkJCVwKIH0KIAotI2RlZmlu ZSBfX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkKSBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9u YW1lLCBfaWQsIE5VTEwsIDApCisjZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBf aWQpIF9SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIF9pZCwgTlVMTCwgMCwgTlVMTCkKIAogLyog VXNlZCB0byBkZWNsYXJlIHB1cmUgImxhc3NvIiBleHRlbnNpb24gKFprIGZvciBpbnN0YW5jZSkg Ki8KICNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX0JVTkRMRShfbmFtZSwgX2J1bmRsZWRfZXh0cykg XAotCV9SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIFJJU0NWX0lTQV9FWFRfSU5WQUxJRCwgX2J1 bmRsZWRfZXh0cywgQVJSQVlfU0laRShfYnVuZGxlZF9leHRzKSkKKwlfUklTQ1ZfSVNBX0VYVF9E QVRBKF9uYW1lLCBSSVNDVl9JU0FfRVhUX0lOVkFMSUQsIF9idW5kbGVkX2V4dHMsIFwKKwkJCSAg ICBBUlJBWV9TSVpFKF9idW5kbGVkX2V4dHMpLCBOVUxMKQogCiAvKiBVc2VkIHRvIGRlY2xhcmUg ZXh0ZW5zaW9ucyB0aGF0IGFyZSBhIHN1cGVyc2V0IG9mIG90aGVyIGV4dGVuc2lvbnMgKFp2YmIg Zm9yIGluc3RhbmNlKSAqLwogI2RlZmluZSBfX1JJU0NWX0lTQV9FWFRfU1VQRVJTRVQoX25hbWUs IF9pZCwgX3N1Yl9leHRzKSBcCi0JX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3Vi X2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRzKSkKKwlfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1l LCBfaWQsIF9zdWJfZXh0cywgQVJSQVlfU0laRShfc3ViX2V4dHMpLCBOVUxMKQorI2RlZmluZSBf X1JJU0NWX0lTQV9FWFRfU1VQRVJTRVRfVkFMSURBVEUoX25hbWUsIF9pZCwgX3N1Yl9leHRzLCBf dmFsaWRhdGUpIFwKKwlfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIF9zdWJfZXh0cywg QVJSQVlfU0laRShfc3ViX2V4dHMpLCBfdmFsaWRhdGUpCiAKICNpZiBkZWZpbmVkKENPTkZJR19S SVNDVl9NSVNBTElHTkVEKQogYm9vbCBjaGVja191bmFsaWduZWRfYWNjZXNzX2VtdWxhdGVkX2Fs bF9jcHVzKHZvaWQpOwpAQCAtOTAsNiArOTQsNyBAQCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRh IHsKIAljb25zdCBjaGFyICpwcm9wZXJ0eTsKIAljb25zdCB1bnNpZ25lZCBpbnQgKnN1YnNldF9l eHRfaWRzOwogCWNvbnN0IHVuc2lnbmVkIGludCBzdWJzZXRfZXh0X3NpemU7CisJaW50ICgqdmFs aWRhdGUpKGNvbnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0X2RhdGEgKmRhdGEsIGNvbnN0IHVuc2ln bmVkIGxvbmcgKmlzYV9iaXRtYXApOwogfTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCByaXNjdl9p c2FfZXh0X2RhdGEgcmlzY3ZfaXNhX2V4dFtdOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJu ZWwvY3B1ZmVhdHVyZS5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jCmluZGV4IDQx ZjhhZTIyZTdhMC4uZmE0YWQ3M2I3NzBhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9j cHVmZWF0dXJlLmMKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jCkBAIC03NSwz MiArNzUsMzIgQEAgYm9vbCBfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKGNvbnN0IHVu c2lnbmVkIGxvbmcgKmlzYV9iaXRtYXAsIHVuc2lnbmVkIGkKIH0KIEVYUE9SVF9TWU1CT0xfR1BM KF9fcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUpOwogCi1zdGF0aWMgYm9vbCByaXNjdl9p c2FfZXh0ZW5zaW9uX2NoZWNrKGludCBpZCkKK3N0YXRpYyBpbnQgcmlzY3ZfZXh0X3ppY2JvbV92 YWxpZGF0ZShjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpkYXRhLAorCQkJCSAgICAg Y29uc3QgdW5zaWduZWQgbG9uZyAqaXNhX2JpdG1hcCkKIHsKLQlzd2l0Y2ggKGlkKSB7Ci0JY2Fz ZSBSSVNDVl9JU0FfRVhUX1pJQ0JPTToKLQkJaWYgKCFyaXNjdl9jYm9tX2Jsb2NrX3NpemUpIHsK LQkJCXByX2VycigiWmljYm9tIGRldGVjdGVkIGluIElTQSBzdHJpbmcsIGRpc2FibGluZyBhcyBu byBjYm9tLWJsb2NrLXNpemUgZm91bmRcbiIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9IGVsc2Ug aWYgKCFpc19wb3dlcl9vZl8yKHJpc2N2X2Nib21fYmxvY2tfc2l6ZSkpIHsKLQkJCXByX2Vycigi WmljYm9tIGRpc2FibGVkIGFzIGNib20tYmxvY2stc2l6ZSBwcmVzZW50LCBidXQgaXMgbm90IGEg cG93ZXItb2YtMlxuIik7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJcmV0dXJuIHRydWU7Ci0J Y2FzZSBSSVNDVl9JU0FfRVhUX1pJQ0JPWjoKLQkJaWYgKCFyaXNjdl9jYm96X2Jsb2NrX3NpemUp IHsKLQkJCXByX2VycigiWmljYm96IGRldGVjdGVkIGluIElTQSBzdHJpbmcsIGRpc2FibGluZyBh cyBubyBjYm96LWJsb2NrLXNpemUgZm91bmRcbiIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9IGVs c2UgaWYgKCFpc19wb3dlcl9vZl8yKHJpc2N2X2Nib3pfYmxvY2tfc2l6ZSkpIHsKLQkJCXByX2Vy cigiWmljYm96IGRpc2FibGVkIGFzIGNib3otYmxvY2stc2l6ZSBwcmVzZW50LCBidXQgaXMgbm90 IGEgcG93ZXItb2YtMlxuIik7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJcmV0dXJuIHRydWU7 Ci0JY2FzZSBSSVNDVl9JU0FfRVhUX0lOVkFMSUQ6Ci0JCXJldHVybiBmYWxzZTsKKwlpZiAoIXJp c2N2X2Nib21fYmxvY2tfc2l6ZSkgeworCQlwcl9lcnIoIlppY2JvbSBkZXRlY3RlZCBpbiBJU0Eg c3RyaW5nLCBkaXNhYmxpbmcgYXMgbm8gY2JvbS1ibG9jay1zaXplIGZvdW5kXG4iKTsKKwkJcmV0 dXJuIC1FSU5WQUw7CiAJfQorCWlmICghaXNfcG93ZXJfb2ZfMihyaXNjdl9jYm9tX2Jsb2NrX3Np emUpKSB7CisJCXByX2VycigiWmljYm9tIGRpc2FibGVkIGFzIGNib20tYmxvY2stc2l6ZSBwcmVz ZW50LCBidXQgaXMgbm90IGEgcG93ZXItb2YtMlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0K KwlyZXR1cm4gMDsKK30KIAotCXJldHVybiB0cnVlOworc3RhdGljIGludCByaXNjdl9leHRfemlj Ym96X3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0X2RhdGEgKmRhdGEsCisJCQkJ ICAgICBjb25zdCB1bnNpZ25lZCBsb25nICppc2FfYml0bWFwKQoreworCWlmICghcmlzY3ZfY2Jv el9ibG9ja19zaXplKSB7CisJCXByX2VycigiWmljYm96IGRldGVjdGVkIGluIElTQSBzdHJpbmcs IGRpc2FibGluZyBhcyBubyBjYm96LWJsb2NrLXNpemUgZm91bmRcbiIpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisJaWYgKCFpc19wb3dlcl9vZl8yKHJpc2N2X2Nib3pfYmxvY2tfc2l6ZSkpIHsK KwkJcHJfZXJyKCJaaWNib3ogZGlzYWJsZWQgYXMgY2Jvei1ibG9jay1zaXplIHByZXNlbnQsIGJ1 dCBpcyBub3QgYSBwb3dlci1vZi0yXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCXJldHVy biAwOwogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJpc2N2X3prX2J1bmRsZWRfZXh0 c1tdID0gewpAQCAtMjMyLDggKzIzMiwxMCBAQCBjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9k YXRhIHJpc2N2X2lzYV9leHRbXSA9IHsKIAlfX1JJU0NWX0lTQV9FWFRfREFUQShjLCBSSVNDVl9J U0FfRVhUX2MpLAogCV9fUklTQ1ZfSVNBX0VYVF9EQVRBKHYsIFJJU0NWX0lTQV9FWFRfdiksCiAJ X19SSVNDVl9JU0FfRVhUX0RBVEEoaCwgUklTQ1ZfSVNBX0VYVF9oKSwKLQlfX1JJU0NWX0lTQV9F WFRfU1VQRVJTRVQoemljYm9tLCBSSVNDVl9JU0FfRVhUX1pJQ0JPTSwgcmlzY3ZfeGxpbnV4ZW52 Y2ZnX2V4dHMpLAotCV9fUklTQ1ZfSVNBX0VYVF9TVVBFUlNFVCh6aWNib3osIFJJU0NWX0lTQV9F WFRfWklDQk9aLCByaXNjdl94bGludXhlbnZjZmdfZXh0cyksCisJX19SSVNDVl9JU0FfRVhUX1NV UEVSU0VUX1ZBTElEQVRFKHppY2JvbSwgUklTQ1ZfSVNBX0VYVF9aSUNCT00sIHJpc2N2X3hsaW51 eGVudmNmZ19leHRzLAorCQkJCQkgIHJpc2N2X2V4dF96aWNib21fdmFsaWRhdGUpLAorCV9fUklT Q1ZfSVNBX0VYVF9TVVBFUlNFVF9WQUxJREFURSh6aWNib3osIFJJU0NWX0lTQV9FWFRfWklDQk9a LCByaXNjdl94bGludXhlbnZjZmdfZXh0cywKKwkJCQkJICByaXNjdl9leHRfemljYm96X3ZhbGlk YXRlKSwKIAlfX1JJU0NWX0lTQV9FWFRfREFUQSh6aWNudHIsIFJJU0NWX0lTQV9FWFRfWklDTlRS KSwKIAlfX1JJU0NWX0lTQV9FWFRfREFUQSh6aWNvbmQsIFJJU0NWX0lTQV9FWFRfWklDT05EKSwK IAlfX1JJU0NWX0lTQV9FWFRfREFUQSh6aWNzciwgUklTQ1ZfSVNBX0VYVF9aSUNTUiksCkBAIC0y OTQsMzMgKzI5Niw5MyBAQCBjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhIHJpc2N2X2lz YV9leHRbXSA9IHsKIAogY29uc3Qgc2l6ZV90IHJpc2N2X2lzYV9leHRfY291bnQgPSBBUlJBWV9T SVpFKHJpc2N2X2lzYV9leHQpOwogCi1zdGF0aWMgdm9pZCBfX2luaXQgbWF0Y2hfaXNhX2V4dChj b25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpleHQsIGNvbnN0IGNoYXIgKm5hbWUsCi0J CQkJIGNvbnN0IGNoYXIgKm5hbWVfZW5kLCBzdHJ1Y3QgcmlzY3ZfaXNhaW5mbyAqaXNhaW5mbykK K3N0YXRpYyB2b2lkIHJpc2N2X2lzYV9zZXRfZXh0KGNvbnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0 X2RhdGEgKmV4dCwgdW5zaWduZWQgbG9uZyAqYml0bWFwKQogewotCWlmICgobmFtZV9lbmQgLSBu YW1lID09IHN0cmxlbihleHQtPm5hbWUpKSAmJgotCSAgICAgIXN0cm5jYXNlY21wKG5hbWUsIGV4 dC0+bmFtZSwgbmFtZV9lbmQgLSBuYW1lKSkgewotCQkvKgotCQkgKiBJZiB0aGlzIGlzIGEgYnVu ZGxlLCBlbmFibGUgYWxsIHRoZSBJU0EgZXh0ZW5zaW9ucyB0aGF0Ci0JCSAqIGNvbXByaXNlIHRo ZSBidW5kbGUuCi0JCSAqLwotCQlpZiAoZXh0LT5zdWJzZXRfZXh0X3NpemUpIHsKLQkJCWZvciAo aW50IGkgPSAwOyBpIDwgZXh0LT5zdWJzZXRfZXh0X3NpemU7IGkrKykgewotCQkJCWlmIChyaXNj dl9pc2FfZXh0ZW5zaW9uX2NoZWNrKGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0pKQotCQkJCQlzZXRf Yml0KGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0sIGlzYWluZm8tPmlzYSk7CisJaWYgKGV4dC0+aWQg IT0gUklTQ1ZfSVNBX0VYVF9JTlZBTElEKQorCQlzZXRfYml0KGV4dC0+aWQsIGJpdG1hcCk7CisK Kwlmb3IgKGludCBpID0gMDsgaSA8IGV4dC0+c3Vic2V0X2V4dF9zaXplOyBpKyspIHsKKwkJaWYg KGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0gIT0gUklTQ1ZfSVNBX0VYVF9JTlZBTElEKQorCQkJc2V0 X2JpdChleHQtPnN1YnNldF9leHRfaWRzW2ldLCBiaXRtYXApOworCX0KK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0X2RhdGEgKnJpc2N2X2dldF9pc2FfZXh0X2RhdGEodW5z aWduZWQgaW50IGV4dF9pZCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IHJpc2N2X2lzYV9leHRf Y291bnQ7IGkrKykgeworCQlpZiAocmlzY3ZfaXNhX2V4dFtpXS5pZCA9PSBleHRfaWQpCisJCQly ZXR1cm4gJnJpc2N2X2lzYV9leHRbaV07CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisg KiAiUmVzb2x2ZSIgYSBzb3VyY2UgSVNBIGJpdG1hcCBpbnRvIG9uZSB0aGF0IG1hdGNoZXMga2Vy bmVsIGNvbmZpZ3VyYXRpb24gYXMKKyAqIHdlbGwgYXMgY29ycmVjdCBleHRlbnNpb24gZGVwZW5k ZW5jaWVzLiBTb21lIGV4dGVuc2lvbnMgZGVwZW5kcyBvbiBzcGVjaWZpYworICoga2VybmVsIGNv bmZpZ3VyYXRpb24gdG8gYmUgdXNhYmxlIChWIG5lZWRzIENPTkZJR19SSVNDVl9JU0FfViBmb3Ig aW5zdGFuY2UpCisgKiBhbmQgdGhpcyBmdW5jdGlvbiB3aWxsIGFjdHVhbGx5IHZhbGlkYXRlIGFs bCB0aGUgZXh0ZW5zaW9ucyBwcm92aWRlZCBpbgorICogc291cmNlX2lzYSBpbnRvIHRoZSByZXNv bHZlZF9pc2EgYmFzZWQgb24gZXh0ZW5zaW9ucyB2YWxpZGF0ZSgpIGNhbGxiYWNrcy4KKyAqLwor c3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3Jlc29sdmVfaXNhKHVuc2lnbmVkIGxvbmcgKnNvdXJj ZV9pc2EsCisJCQkJICAgICB1bnNpZ25lZCBsb25nICpyZXNvbHZlZF9pc2EsIHVuc2lnbmVkIGxv bmcgKnRoaXNfaHdjYXAsCisJCQkJICAgICB1bnNpZ25lZCBsb25nICppc2EyaHdjYXApCit7CisJ Ym9vbCBsb29wOworCWNvbnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0X2RhdGEgKmV4dDsKKwlERUNM QVJFX0JJVE1BUChwcmV2X3Jlc29sdmVkX2lzYSwgUklTQ1ZfSVNBX0VYVF9NQVgpOworCWludCBt YXhfbG9vcF9jb3VudCA9IHJpc2N2X2lzYV9leHRfY291bnQsIHJldDsKKwl1bnNpZ25lZCBpbnQg Yml0OworCisJZG8geworCQlsb29wID0gZmFsc2U7CisJCWlmIChtYXhfbG9vcF9jb3VudC0tIDwg MCkgeworCQkJcHJfZXJyKCJGYWlsZWQgdG8gcmVhY2ggYSBzdGFibGUgSVNBIHN0YXRlXG4iKTsK KwkJCXJldHVybjsKKwkJfQorCQliaXRtYXBfY29weShwcmV2X3Jlc29sdmVkX2lzYSwgcmVzb2x2 ZWRfaXNhLCBSSVNDVl9JU0FfRVhUX01BWCk7CisJCWZvcl9lYWNoX3NldF9iaXQoYml0LCBzb3Vy Y2VfaXNhLCBSSVNDVl9JU0FfRVhUX01BWCkgeworCQkJZXh0ID0gcmlzY3ZfZ2V0X2lzYV9leHRf ZGF0YShiaXQpOworCQkJaWYgKCFleHQpCisJCQkJY29udGludWU7CisKKwkJCWlmIChleHQtPnZh bGlkYXRlKSB7CisJCQkJcmV0ID0gZXh0LT52YWxpZGF0ZShleHQsIHJlc29sdmVkX2lzYSk7CisJ CQkJaWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKSB7CisJCQkJCWxvb3AgPSB0cnVlOworCQkJCQlj b250aW51ZTsKKwkJCQl9IGVsc2UgaWYgKHJldCkgeworCQkJCQkvKiBEaXNhYmxlIHRoZSBleHRl bnNpb24gZW50aXJlbHkgKi8KKwkJCQkJY2xlYXJfYml0KGV4dC0+aWQsIHNvdXJjZV9pc2EpOwor CQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQl9CisKKwkJCXNldF9iaXQoZXh0LT5pZCwgcmVzb2x2 ZWRfaXNhKTsKKwkJCS8qIE5vIG5lZWQgdG8ga2VlcCBpdCBpbiBzb3VyY2UgaXNhIG5vdyB0aGF0 IGl0IGlzIGVuYWJsZWQgKi8KKwkJCWNsZWFyX2JpdChleHQtPmlkLCBzb3VyY2VfaXNhKTsKKwor CQkJLyogU2luZ2xlIGxldHRlciBleHRlbnNpb25zIGdldCBzZXQgaW4gaHdjYXAgKi8KKwkJCWlm IChleHQtPmlkIDwgUklTQ1ZfSVNBX0VYVF9CQVNFKQorCQkJCSp0aGlzX2h3Y2FwIHw9IGlzYTJo d2NhcFtleHQtPmlkXTsKIAkJfQorCX0gd2hpbGUgKGxvb3AgJiYgbWVtY21wKHByZXZfcmVzb2x2 ZWRfaXNhLCByZXNvbHZlZF9pc2EsIHNpemVvZihwcmV2X3Jlc29sdmVkX2lzYSkpKTsKK30KIAot CQkvKgotCQkgKiBUaGlzIGlzIHZhbGlkIGV2ZW4gZm9yIGJ1bmRsZSBleHRlbnNpb25zIHdoaWNo IHVzZXMgdGhlIFJJU0NWX0lTQV9FWFRfSU5WQUxJRCBpZAotCQkgKiAocmVqZWN0ZWQgYnkgcmlz Y3ZfaXNhX2V4dGVuc2lvbl9jaGVjaygpKS4KLQkJICovCi0JCWlmIChyaXNjdl9pc2FfZXh0ZW5z aW9uX2NoZWNrKGV4dC0+aWQpKQotCQkJc2V0X2JpdChleHQtPmlkLCBpc2FpbmZvLT5pc2EpOwor c3RhdGljIHZvaWQgX19pbml0IG1hdGNoX2lzYV9leHQoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqbmFtZV9lbmQsIHVuc2lnbmVkIGxvbmcgKmJpdG1hcCkKK3sKKwlmb3IgKGludCBpID0g MDsgaSA8IHJpc2N2X2lzYV9leHRfY291bnQ7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgcmlzY3Zf aXNhX2V4dF9kYXRhICpleHQgPSAmcmlzY3ZfaXNhX2V4dFtpXTsKKworCQlpZiAoKG5hbWVfZW5k IC0gbmFtZSA9PSBzdHJsZW4oZXh0LT5uYW1lKSkgJiYKKwkJICAgICFzdHJuY2FzZWNtcChuYW1l LCBleHQtPm5hbWUsIG5hbWVfZW5kIC0gbmFtZSkpIHsKKwkJCXJpc2N2X2lzYV9zZXRfZXh0KGV4 dCwgYml0bWFwKTsKKwkJCWJyZWFrOworCQl9CiAJfQogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQg cmlzY3ZfcGFyc2VfaXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICp0aGlzX2h3Y2FwLCBzdHJ1Y3Qg cmlzY3ZfaXNhaW5mbyAqaXNhaW5mbywKLQkJCQkJICB1bnNpZ25lZCBsb25nICppc2EyaHdjYXAs IGNvbnN0IGNoYXIgKmlzYSkKK3N0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9wYXJzZV9pc2Ffc3Ry aW5nKGNvbnN0IGNoYXIgKmlzYSwgdW5zaWduZWQgbG9uZyAqYml0bWFwKQogewogCS8qCiAJICog Rm9yIGFsbCBwb3NzaWJsZSBjcHVzLCB3ZSBoYXZlIGFscmVhZHkgdmFsaWRhdGVkIGluCkBAIC0z MzMsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3BhcnNlX2lzYV9zdHJpbmco dW5zaWduZWQgbG9uZyAqdGhpc19od2NhcCwgc3RydWN0IHJpc2MKIAl3aGlsZSAoKmlzYSkgewog CQljb25zdCBjaGFyICpleHQgPSBpc2ErKzsKIAkJY29uc3QgY2hhciAqZXh0X2VuZCA9IGlzYTsK LQkJYm9vbCBleHRfbG9uZyA9IGZhbHNlLCBleHRfZXJyID0gZmFsc2U7CisJCWJvb2wgZXh0X2Vy ciA9IGZhbHNlOwogCiAJCXN3aXRjaCAoKmV4dCkgewogCQljYXNlICd4JzoKQEAgLTM4Niw3ICs0 NDgsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcGFyc2VfaXNhX3N0cmluZyh1bnNpZ25l ZCBsb25nICp0aGlzX2h3Y2FwLCBzdHJ1Y3QgcmlzYwogCQkJICogY2hhcmFjdGVyIGl0c2VsZiB3 aGlsZSBlbGltaW5hdGluZyB0aGUgZXh0ZW5zaW9ucyB2ZXJzaW9uIG51bWJlci4KIAkJCSAqIEEg c2ltcGxlIHJlLWluY3JlbWVudCBzb2x2ZXMgdGhpcyBwcm9ibGVtLgogCQkJICovCi0JCQlleHRf bG9uZyA9IHRydWU7CiAJCQlmb3IgKDsgKmlzYSAmJiAqaXNhICE9ICdfJzsgKytpc2EpCiAJCQkJ aWYgKHVubGlrZWx5KCFpc2FsbnVtKCppc2EpKSkKIAkJCQkJZXh0X2VyciA9IHRydWU7CkBAIC00 NjYsMTcgKzUyNyw4IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9wYXJzZV9pc2Ffc3RyaW5n KHVuc2lnbmVkIGxvbmcgKnRoaXNfaHdjYXAsIHN0cnVjdCByaXNjCiAKIAkJaWYgKHVubGlrZWx5 KGV4dF9lcnIpKQogCQkJY29udGludWU7Ci0JCWlmICghZXh0X2xvbmcpIHsKLQkJCWludCBuciA9 IHRvbG93ZXIoKmV4dCkgLSAnYSc7CiAKLQkJCWlmIChyaXNjdl9pc2FfZXh0ZW5zaW9uX2NoZWNr KG5yKSkgewotCQkJCSp0aGlzX2h3Y2FwIHw9IGlzYTJod2NhcFtucl07Ci0JCQkJc2V0X2JpdChu ciwgaXNhaW5mby0+aXNhKTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCWZvciAoaW50IGkgPSAwOyBp IDwgcmlzY3ZfaXNhX2V4dF9jb3VudDsgaSsrKQotCQkJCW1hdGNoX2lzYV9leHQoJnJpc2N2X2lz YV9leHRbaV0sIGV4dCwgZXh0X2VuZCwgaXNhaW5mbyk7Ci0JCX0KKwkJbWF0Y2hfaXNhX2V4dChl eHQsIGV4dF9lbmQsIGJpdG1hcCk7CiAJfQogfQogCkBAIC00OTgsNiArNTUwLDcgQEAgc3RhdGlj IHZvaWQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9pc2Ffc3RyaW5nKHVuc2lnbmVkIGxv bmcgKmlzYTJod2NhcCkKIAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiAJCXN0cnVjdCBy aXNjdl9pc2FpbmZvICppc2FpbmZvID0gJmhhcnRfaXNhW2NwdV07CiAJCXVuc2lnbmVkIGxvbmcg dGhpc19od2NhcCA9IDA7CisJCURFQ0xBUkVfQklUTUFQKHNvdXJjZV9pc2EsIFJJU0NWX0lTQV9F WFRfTUFYKSA9IHsgMCB9OwogCiAJCWlmIChhY3BpX2Rpc2FibGVkKSB7CiAJCQlub2RlID0gb2Zf Y3B1X2RldmljZV9ub2RlX2dldChjcHUpOwpAQCAtNTIwLDcgKzU3Myw3IEBAIHN0YXRpYyB2b2lk IF9faW5pdCByaXNjdl9maWxsX2h3Y2FwX2Zyb21faXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICpp c2EyaHdjYXApCiAJCQl9CiAJCX0KIAotCQlyaXNjdl9wYXJzZV9pc2Ffc3RyaW5nKCZ0aGlzX2h3 Y2FwLCBpc2FpbmZvLCBpc2EyaHdjYXAsIGlzYSk7CisJCXJpc2N2X3BhcnNlX2lzYV9zdHJpbmco aXNhLCBzb3VyY2VfaXNhKTsKIAogCQkvKgogCQkgKiBUaGVzZSBvbmVzIHdlcmUgYXMgdGhleSB3 ZXJlIHBhcnQgb2YgdGhlIGJhc2UgSVNBIHdoZW4gdGhlCkBAIC01MjgsMTAgKzU4MSwxMCBAQCBz dGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9tX2lzYV9zdHJpbmcodW5zaWdu ZWQgbG9uZyAqaXNhMmh3Y2FwKQogCQkgKiB1bmNvbmRpdGlvbmFsbHkgd2hlcmUgYGlgIGlzIGlu IHJpc2N2LGlzYSBvbiBEVCBzeXN0ZW1zLgogCQkgKi8KIAkJaWYgKGFjcGlfZGlzYWJsZWQpIHsK LQkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9aSUNTUiwgaXNhaW5mby0+aXNhKTsKLQkJCXNldF9i aXQoUklTQ1ZfSVNBX0VYVF9aSUZFTkNFSSwgaXNhaW5mby0+aXNhKTsKLQkJCXNldF9iaXQoUklT Q1ZfSVNBX0VYVF9aSUNOVFIsIGlzYWluZm8tPmlzYSk7Ci0JCQlzZXRfYml0KFJJU0NWX0lTQV9F WFRfWklIUE0sIGlzYWluZm8tPmlzYSk7CisJCQlzZXRfYml0KFJJU0NWX0lTQV9FWFRfWklDU1Is IHNvdXJjZV9pc2EpOworCQkJc2V0X2JpdChSSVNDVl9JU0FfRVhUX1pJRkVOQ0VJLCBzb3VyY2Vf aXNhKTsKKwkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9aSUNOVFIsIHNvdXJjZV9pc2EpOworCQkJ c2V0X2JpdChSSVNDVl9JU0FfRVhUX1pJSFBNLCBzb3VyY2VfaXNhKTsKIAkJfQogCiAJCS8qCkBA IC01NDUsOSArNTk4LDExIEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9maWxsX2h3Y2FwX2Zy b21faXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICppc2EyaHdjYXApCiAJCWlmIChhY3BpX2Rpc2Fi bGVkICYmIHJpc2N2X2NhY2hlZF9tdmVuZG9yaWQoY3B1KSA9PSBUSEVBRF9WRU5ET1JfSUQgJiYK IAkJICAgIHJpc2N2X2NhY2hlZF9tYXJjaGlkKGNwdSkgPT0gMHgwKSB7CiAJCQl0aGlzX2h3Y2Fw ICY9IH5pc2EyaHdjYXBbUklTQ1ZfSVNBX0VYVF92XTsKLQkJCWNsZWFyX2JpdChSSVNDVl9JU0Ff RVhUX3YsIGlzYWluZm8tPmlzYSk7CisJCQljbGVhcl9iaXQoUklTQ1ZfSVNBX0VYVF92LCBzb3Vy Y2VfaXNhKTsKIAkJfQogCisJCXJpc2N2X3Jlc29sdmVfaXNhKHNvdXJjZV9pc2EsIGlzYWluZm8t PmlzYSwgJnRoaXNfaHdjYXAsIGlzYTJod2NhcCk7CisKIAkJLyoKIAkJICogQWxsICJva2F5IiBo YXJ0IHNob3VsZCBoYXZlIHNhbWUgaXNhLiBTZXQgSFdDQVAgYmFzZWQgb24KIAkJICogY29tbW9u IGNhcGFiaWxpdGllcyBvZiBldmVyeSAib2theSIgaGFydCwgaW4gY2FzZSB0aGV5IGRvbid0CkBA IC02MjksNiArNjg0LDcgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9t X2V4dF9saXN0KHVuc2lnbmVkIGxvbmcgKmlzYTJod2NhcCkKIAkJdW5zaWduZWQgbG9uZyB0aGlz X2h3Y2FwID0gMDsKIAkJc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZTsKIAkJc3RydWN0IHJp c2N2X2lzYWluZm8gKmlzYWluZm8gPSAmaGFydF9pc2FbY3B1XTsKKwkJREVDTEFSRV9CSVRNQVAo c291cmNlX2lzYSwgUklTQ1ZfSVNBX0VYVF9NQVgpID0geyAwIH07CiAKIAkJY3B1X25vZGUgPSBv Zl9jcHVfZGV2aWNlX25vZGVfZ2V0KGNwdSk7CiAJCWlmICghY3B1X25vZGUpIHsKQEAgLTY0OCwy MyArNzA0LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9leHRf bGlzdCh1bnNpZ25lZCBsb25nICppc2EyaHdjYXApCiAJCQkJCQkgICAgIGV4dC0+cHJvcGVydHkp IDwgMCkKIAkJCQljb250aW51ZTsKIAotCQkJaWYgKGV4dC0+c3Vic2V0X2V4dF9zaXplKSB7Ci0J CQkJZm9yIChpbnQgaiA9IDA7IGogPCBleHQtPnN1YnNldF9leHRfc2l6ZTsgaisrKSB7Ci0JCQkJ CWlmIChyaXNjdl9pc2FfZXh0ZW5zaW9uX2NoZWNrKGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0pKQot CQkJCQkJc2V0X2JpdChleHQtPnN1YnNldF9leHRfaWRzW2pdLCBpc2FpbmZvLT5pc2EpOwotCQkJ CX0KLQkJCX0KLQotCQkJaWYgKHJpc2N2X2lzYV9leHRlbnNpb25fY2hlY2soZXh0LT5pZCkpIHsK LQkJCQlzZXRfYml0KGV4dC0+aWQsIGlzYWluZm8tPmlzYSk7Ci0KLQkJCQkvKiBPbmx5IHNpbmds ZSBsZXR0ZXIgZXh0ZW5zaW9ucyBnZXQgc2V0IGluIGh3Y2FwICovCi0JCQkJaWYgKHN0cm5sZW4o cmlzY3ZfaXNhX2V4dFtpXS5uYW1lLCAyKSA9PSAxKQotCQkJCQl0aGlzX2h3Y2FwIHw9IGlzYTJo d2NhcFtyaXNjdl9pc2FfZXh0W2ldLmlkXTsKLQkJCX0KKwkJCXJpc2N2X2lzYV9zZXRfZXh0KGV4 dCwgc291cmNlX2lzYSk7CiAJCX0KIAogCQlyaXNjdl9maWxsX2NwdV92ZW5kb3JfZXh0KGNwdV9u b2RlLCBjcHUpOworCQlyaXNjdl9yZXNvbHZlX2lzYShzb3VyY2VfaXNhLCBpc2FpbmZvLT5pc2Es ICZ0aGlzX2h3Y2FwLCBpc2EyaHdjYXApOwogCiAJCW9mX25vZGVfcHV0KGNwdV9ub2RlKTsKIAot LSAKMi40My4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNj dgo=