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 EA842C4345F for ; Tue, 23 Apr 2024 12:44:08 +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=cBbD2jgdPIXWHqV+WutJLGcgCLP1Eg66C2+pyo1J+7g=; b=js/Dd8fvdSYATk /AtuEwi9ArDotTh0lGDmni49GMZEzZB8YaWa5KNpFfI6aH86vgFtL0fbnANQNtFh4+wlXGkTSR+J1 MdmfqUWwzUqADwGNTS4ij9h09ASh1KoDxLc2JzBtgY7akWujo6OdeRrmbqreXl4Rg76roOmqfXRjt wTbPGUdyp0IYFmvGhZ2TjL718erXf64MxhDAsC+rlMEmByUAjRmFJzhNVU/in4wO+FC2T1rUIqHM9 +9EDms23zE0i8M9EsJUafHAScvcuBYqQLem6C4bW+gBmmtAjmQtX8vP1kCvA3yv4Xzx1JftNvzX/k HGmIUSkRrKP8+eFh65mA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzFVD-0000000HSc1-0KM4; Tue, 23 Apr 2024 12:44:03 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzFUu-0000000HSMO-3YBd for linux-riscv@lists.infradead.org; Tue, 23 Apr 2024 12:43:47 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-346a5dea2f4so1223471f8f.1 for ; Tue, 23 Apr 2024 05:43:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1713876223; x=1714481023; 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=HsdoYA/OHWBDv08MRhgCHOKDJWz5fs7YbSsaVblu9P0=; b=btZLodgRmDom71GxsoqCjzHbEe/Zs7FlCOMYzrRhmmMmTSfxHiQlrGT/P+viHYi7P0 VSkQPOWfQa8xi5ci/yz7hqmKap4KO/UeqAZOH93iE8c+9hNtFxXPiOPuM5b6zu1Owlk/ r1XM+HVE5l0XLjccttnDyKrxXH+vL1BtT7PR0yVnxoNDBmZ44MaD3+6FF3FX5DKniRgg J2mykOA+LCPGCFP1px1TGkFmbjdve9x0RvzLJqKo6qECc25VAiycwKHfmSENxxCfp0Gj 1B0C4oPQYt2YBRG5eMVR4XsggCsDWkyrU1+jXqy4cqciFjPkIZVJuYPO8aCeXFlIMyO1 BSYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713876223; x=1714481023; 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=HsdoYA/OHWBDv08MRhgCHOKDJWz5fs7YbSsaVblu9P0=; b=KWyCdvDT7KWXNz7yIxrhOizGicS8lBpUIdA5Urm6zaMuXcLFLPt6dSj6pYDGOkwhVP Jgwcd5uk5OgZmklerrM8zbJBsfpXgYnLohRT065vohFF87HX/tgucW17tAlZC41cbhr2 FeV5xbEjPO+eFUEJLsSj5/FxL1130nqfBMI3G8ype7r1t67fL4HBojitAMv83tSQbyV7 nUDNtsZGzPqXTV3NUiz4A2ZVshMuSgmc23PUIVxMYzT763pONWJpFBZloa/2sLx9V9yW DLB9lFO+CEsxVEbJr4GvsGLwfqj5YgLGHu53UNeGVsSx5SZkEQVVkPb3L1KvBqz6oKKg 9nSQ== X-Forwarded-Encrypted: i=1; AJvYcCW9/QcxV4CcLrwwP6K3dtR/tR9k/l8qtcAWDmUyZMcwHLuD8SO6uxRADEfVM5NgC5mIzxCney+9vCTYk64xVptMSoqRnODkgo4JbdE5Ed06 X-Gm-Message-State: AOJu0YxuBeS8vrSDMbx0wPlqwgw4ec6cS2iRE3psEPH0C2EEm/OUbVtB 72ub9uivcJm33h8n3QQcKHohgQv+5ycYUn6rMUI5aeDp3QwI4thfb55LYHXI9XA= X-Google-Smtp-Source: AGHT+IGFB23sRUNbye0X+w1SWPXym1/kF/MR46maclAGdW8ndAuXPYIIGn9rsEBZcFOpIbfIEMjHmA== X-Received: by 2002:a05:600c:1c27:b0:41a:c4fe:b0a6 with SMTP id j39-20020a05600c1c2700b0041ac4feb0a6mr1112231wms.4.1713876222917; Tue, 23 Apr 2024 05:43:42 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:71cb:1f75:7053:849c]) by smtp.gmail.com with ESMTPSA id v10-20020a05600c470a00b00418a386c059sm19975709wmo.42.2024.04.23.05.43.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 05:43:42 -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 v3 02/11] riscv: add ISA extensions validation Date: Tue, 23 Apr 2024 14:43:16 +0200 Message-ID: <20240423124326.2532796-3-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240423124326.2532796-1-cleger@rivosinc.com> References: <20240423124326.2532796-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240423_054344_980687_91DFFEC5 X-CRM114-Status: GOOD ( 25.72 ) 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 cyBpbiBhCnRlbXBvcmFyeSBiaXRtYXNrIHdpdGhvdXQgYW55IHZhbGlkYXRpb24uIFRoZSBzZWNv bmQgc3RlcCAicmVzb2x2ZXMiIHRoZQpmaW5hbCBpc2EgYml0bWFwLCBoYW5kbGluZyBwb3RlbnRp YWwgbWlzc2luZyBkZXBlbmRlbmNpZXMuIFRoZSBtZWNoYW5pc20KaXMgcXVpdGUgc2ltcGxlIGFu ZCBzaW1wbHkgdmFsaWRhdGUgZWFjaCBleHRlbnNpb24gZGVzY3JpYmVkIGluIHRoZQp0ZW1wb3Jh cnkgYml0bWFwIGJlZm9yZSBlbmFibGluZyBpdCBpbiB0aGUgZmluYWwgaXNhIGJpdG1hcC4gVGhp cwpwcm9jZXNzIHRha2VzIHBsYWNlIHVudGlsIHRoZSBmaW5hbCBpc2EgYml0bWFwIHJlYWNoZXMg YSBzdGFibGUgc3RhdGUuCkluIG9yZGVyIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgaW5maW5pdGUg bG9vcGluZywgYWxsb3cgbG9vcGluZyBhCm1heGltdW0gb2YgdGhlIG51bWJlciBvZiBleHRlbnNp b24gd2UgaGFuZGxlLiBaaWNib3ogYW5kIFppY2JvbQpleHRlbnNpb25zIGFyZSBtb2RpZmllZCB0 byB1c2UgdGhpcyB2YWxpZGF0aW9uIG1lY2hhbmlzbS4KClNpZ25lZC1vZmYtYnk6IENsw6ltZW50 IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KLS0tCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L2NwdWZlYXR1cmUuaCB8ICAgMSArCiBhcmNoL3Jpc2N2L2tlcm5lbC9jcHVmZWF0dXJlLmMgICAg ICB8IDIwMSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEx OCBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY3B1ZmVh dHVyZS5oCmluZGV4IDM0NzgwNTQ0NjE1MS4uMzI4Zjg5NWY2YjhmIDEwMDY0NAotLS0gYS9hcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2NwdWZlYXR1cmUuaApAQCAtNzAsNiArNzAsNyBAQCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9k YXRhIHsKIAljb25zdCBjaGFyICpwcm9wZXJ0eTsKIAljb25zdCB1bnNpZ25lZCBpbnQgKnN1YnNl dF9leHRfaWRzOwogCWNvbnN0IHVuc2lnbmVkIGludCBzdWJzZXRfZXh0X3NpemU7CisJYm9vbCAo KnZhbGlkYXRlKShjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpkYXRhLCBjb25zdCB1 bnNpZ25lZCBsb25nICppc2FfYml0bWFwKTsKIH07CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3Qgcmlz Y3ZfaXNhX2V4dF9kYXRhIHJpc2N2X2lzYV9leHRbXTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv a2VybmVsL2NwdWZlYXR1cmUuYyBiL2FyY2gvcmlzY3Yva2VybmVsL2NwdWZlYXR1cmUuYwppbmRl eCAxMTViYTAwMWYxYmMuLjZkMjM4YzhkYmNjZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rZXJu ZWwvY3B1ZmVhdHVyZS5jCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2NwdWZlYXR1cmUuYwpAQCAt NzIsNTEgKzcyLDYyIEBAIGJvb2wgX19yaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShjb25z dCB1bnNpZ25lZCBsb25nICppc2FfYml0bWFwLCB1bnNpZ25lZCBpCiB9CiBFWFBPUlRfU1lNQk9M X0dQTChfX3Jpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKTsKIAotc3RhdGljIGJvb2wgcmlz Y3ZfaXNhX2V4dGVuc2lvbl9jaGVjayhpbnQgaWQpCitzdGF0aWMgYm9vbCByaXNjdl9pc2FfZXh0 ZW5zaW9uX3ZhbGlkKGludCBpZCkKIHsKLQlzd2l0Y2ggKGlkKSB7Ci0JY2FzZSBSSVNDVl9JU0Ff RVhUX1pJQ0JPTToKLQkJaWYgKCFyaXNjdl9jYm9tX2Jsb2NrX3NpemUpIHsKLQkJCXByX2Vycigi WmljYm9tIGRldGVjdGVkIGluIElTQSBzdHJpbmcsIGRpc2FibGluZyBhcyBubyBjYm9tLWJsb2Nr LXNpemUgZm91bmRcbiIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9IGVsc2UgaWYgKCFpc19wb3dl cl9vZl8yKHJpc2N2X2Nib21fYmxvY2tfc2l6ZSkpIHsKLQkJCXByX2VycigiWmljYm9tIGRpc2Fi bGVkIGFzIGNib20tYmxvY2stc2l6ZSBwcmVzZW50LCBidXQgaXMgbm90IGEgcG93ZXItb2YtMlxu Iik7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJcmV0dXJuIHRydWU7Ci0JY2FzZSBSSVNDVl9J U0FfRVhUX1pJQ0JPWjoKLQkJaWYgKCFyaXNjdl9jYm96X2Jsb2NrX3NpemUpIHsKLQkJCXByX2Vy cigiWmljYm96IGRldGVjdGVkIGluIElTQSBzdHJpbmcsIGRpc2FibGluZyBhcyBubyBjYm96LWJs b2NrLXNpemUgZm91bmRcbiIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9IGVsc2UgaWYgKCFpc19w b3dlcl9vZl8yKHJpc2N2X2Nib3pfYmxvY2tfc2l6ZSkpIHsKLQkJCXByX2VycigiWmljYm96IGRp c2FibGVkIGFzIGNib3otYmxvY2stc2l6ZSBwcmVzZW50LCBidXQgaXMgbm90IGEgcG93ZXItb2Yt MlxuIik7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJcmV0dXJuIHRydWU7Ci0JY2FzZSBSSVND Vl9JU0FfRVhUX0lOVkFMSUQ6CisJcmV0dXJuIGlkICE9IFJJU0NWX0lTQV9FWFRfSU5WQUxJRDsK K30KKworc3RhdGljIGJvb2wgcmlzY3ZfZXh0X3ppY2JvbV92YWxpZGF0ZShjb25zdCBzdHJ1Y3Qg cmlzY3ZfaXNhX2V4dF9kYXRhICpkYXRhLAorCQkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg KmlzYV9iaXRtYXApCit7CisJaWYgKCFyaXNjdl9jYm9tX2Jsb2NrX3NpemUpIHsKKwkJcHJfZXJy X29uY2UoIlppY2JvbSBkZXRlY3RlZCBpbiBJU0Egc3RyaW5nLCIKKwkJCSAgICAiZGlzYWJsaW5n IGFzIG5vIGNib20tYmxvY2stc2l6ZSBmb3VuZFxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9IGVs c2UgaWYgKCFpc19wb3dlcl9vZl8yKHJpc2N2X2Nib21fYmxvY2tfc2l6ZSkpIHsKKwkJcHJfZXJy X29uY2UoIlppY2JvbSBkaXNhYmxlZCBhcyBjYm9tLWJsb2NrLXNpemUgcHJlc2VudCwiCisJCQkg ICAgImJ1dCBpcyBub3QgYSBwb3dlci1vZi0yXG4iKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKwly ZXR1cm4gdHJ1ZTsKK30KIAorc3RhdGljIGJvb2wgcmlzY3ZfZXh0X3ppY2Jvel92YWxpZGF0ZShj b25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpkYXRhLAorCQkJCSAgICAgIGNvbnN0IHVu c2lnbmVkIGxvbmcgKmlzYV9iaXRtYXApCit7CisJaWYgKCFyaXNjdl9jYm96X2Jsb2NrX3NpemUp IHsKKwkJcHJfZXJyX29uY2UoIlppY2JveiBkZXRlY3RlZCBpbiBJU0Egc3RyaW5nLCIKKwkJCSAg ICAiZGlzYWJsaW5nIGFzIG5vIGNib3otYmxvY2stc2l6ZSBmb3VuZFxuIik7CisJCXJldHVybiBm YWxzZTsKKwl9IGVsc2UgaWYgKCFpc19wb3dlcl9vZl8yKHJpc2N2X2Nib3pfYmxvY2tfc2l6ZSkp IHsKKwkJcHJfZXJyX29uY2UoIlppY2JveiBkaXNhYmxlZCBhcyBjYm96LWJsb2NrLXNpemUgcHJl c2VudCwiCisJCQkgICAgImJ1dCBpcyBub3QgYSBwb3dlci1vZi0yXG4iKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KIAlyZXR1cm4gdHJ1ZTsKIH0KIAotI2RlZmluZSBfUklTQ1ZfSVNBX0VYVF9EQVRB KF9uYW1lLCBfaWQsIF9zdWJzZXRfZXh0cywgX3N1YnNldF9leHRzX3NpemUpIHsJXAotCS5uYW1l ID0gI19uYW1lLAkJCQkJCQkJXAotCS5wcm9wZXJ0eSA9ICNfbmFtZSwJCQkJCQkJXAotCS5pZCA9 IF9pZCwJCQkJCQkJCVwKLQkuc3Vic2V0X2V4dF9pZHMgPSBfc3Vic2V0X2V4dHMsCQkJCQkJXAot CS5zdWJzZXRfZXh0X3NpemUgPSBfc3Vic2V0X2V4dHNfc2l6ZQkJCQkJXAorI2RlZmluZSBfUklT Q1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIF9zdWJzZXRfZXh0cywgX3N1YnNldF9leHRzX3Np emUsIF92YWxpZGF0ZSkgewlcCisJLm5hbWUgPSAjX25hbWUsCQkJCQkJCQkJXAorCS5wcm9wZXJ0 eSA9ICNfbmFtZSwJCQkJCQkJCVwKKwkuaWQgPSBfaWQsCQkJCQkJCQkJXAorCS5zdWJzZXRfZXh0 X2lkcyA9IF9zdWJzZXRfZXh0cywJCQkJCQkJXAorCS5zdWJzZXRfZXh0X3NpemUgPSBfc3Vic2V0 X2V4dHNfc2l6ZSwJCQkJCQlcCisJLnZhbGlkYXRlID0gX3ZhbGlkYXRlCQkJCQkJCQlcCiB9CiAK LSNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIF9pZCkgX1JJU0NWX0lTQV9FWFRf REFUQShfbmFtZSwgX2lkLCBOVUxMLCAwKQorI2RlZmluZSBfX1JJU0NWX0lTQV9FWFRfREFUQShf bmFtZSwgX2lkKSBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQsIE5VTEwsIDAsIE5VTEwp CiAKIC8qIFVzZWQgdG8gZGVjbGFyZSBwdXJlICJsYXNzbyIgZXh0ZW5zaW9uIChaayBmb3IgaW5z dGFuY2UpICovCiAjZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9CVU5ETEUoX25hbWUsIF9idW5kbGVk X2V4dHMpIFwKLQlfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBSSVNDVl9JU0FfRVhUX0lOVkFM SUQsIF9idW5kbGVkX2V4dHMsIEFSUkFZX1NJWkUoX2J1bmRsZWRfZXh0cykpCisJX1JJU0NWX0lT QV9FWFRfREFUQShfbmFtZSwgUklTQ1ZfSVNBX0VYVF9JTlZBTElELCBfYnVuZGxlZF9leHRzLCBc CisJCQkgICAgQVJSQVlfU0laRShfYnVuZGxlZF9leHRzKSwgTlVMTCkKIAogLyogVXNlZCB0byBk ZWNsYXJlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYSBzdXBlcnNldCBvZiBvdGhlciBleHRlbnNpb25z IChadmJiIGZvciBpbnN0YW5jZSkgKi8KICNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX1NVUEVSU0VU KF9uYW1lLCBfaWQsIF9zdWJfZXh0cykgXAotCV9SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIF9p ZCwgX3N1Yl9leHRzLCBBUlJBWV9TSVpFKF9zdWJfZXh0cykpCisJX1JJU0NWX0lTQV9FWFRfREFU QShfbmFtZSwgX2lkLCBfc3ViX2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRzKSwgTlVMTCkKKyNk ZWZpbmUgX19SSVNDVl9JU0FfRVhUX1NVUEVSU0VUX1ZBTElEQVRFKF9uYW1lLCBfaWQsIF9zdWJf ZXh0cywgX3ZhbGlkYXRlKSBcCisJX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3Vi X2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRzKSwgX3ZhbGlkYXRlKQogCiBzdGF0aWMgY29uc3Qg dW5zaWduZWQgaW50IHJpc2N2X3prX2J1bmRsZWRfZXh0c1tdID0gewogCVJJU0NWX0lTQV9FWFRf WkJLQiwKQEAgLTI0Nyw4ICsyNTgsMTAgQEAgY29uc3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0 YSByaXNjdl9pc2FfZXh0W10gPSB7CiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoYywgUklTQ1ZfSVNB X0VYVF9jKSwKIAlfX1JJU0NWX0lTQV9FWFRfREFUQSh2LCBSSVNDVl9JU0FfRVhUX3YpLAogCV9f UklTQ1ZfSVNBX0VYVF9EQVRBKGgsIFJJU0NWX0lTQV9FWFRfaCksCi0JX19SSVNDVl9JU0FfRVhU X1NVUEVSU0VUKHppY2JvbSwgUklTQ1ZfSVNBX0VYVF9aSUNCT00sIHJpc2N2X3hsaW51eGVudmNm Z19leHRzKSwKLQlfX1JJU0NWX0lTQV9FWFRfU1VQRVJTRVQoemljYm96LCBSSVNDVl9JU0FfRVhU X1pJQ0JPWiwgcmlzY3ZfeGxpbnV4ZW52Y2ZnX2V4dHMpLAorCV9fUklTQ1ZfSVNBX0VYVF9TVVBF UlNFVF9WQUxJREFURSh6aWNib20sIFJJU0NWX0lTQV9FWFRfWklDQk9NLCByaXNjdl94bGludXhl bnZjZmdfZXh0cywKKwkJCQkJICByaXNjdl9leHRfemljYm9tX3ZhbGlkYXRlKSwKKwlfX1JJU0NW X0lTQV9FWFRfU1VQRVJTRVRfVkFMSURBVEUoemljYm96LCBSSVNDVl9JU0FfRVhUX1pJQ0JPWiwg cmlzY3ZfeGxpbnV4ZW52Y2ZnX2V4dHMsCisJCQkJCSAgcmlzY3ZfZXh0X3ppY2Jvel92YWxpZGF0 ZSksCiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoemljbnRyLCBSSVNDVl9JU0FfRVhUX1pJQ05UUiks CiAJX19SSVNDVl9JU0FfRVhUX0RBVEEoemljb25kLCBSSVNDVl9JU0FfRVhUX1pJQ09ORCksCiAJ X19SSVNDVl9JU0FfRVhUX0RBVEEoemljc3IsIFJJU0NWX0lTQV9FWFRfWklDU1IpLApAQCAtMzEw LDMzICszMjMsNzAgQEAgY29uc3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0YSByaXNjdl9pc2Ff ZXh0W10gPSB7CiAKIGNvbnN0IHNpemVfdCByaXNjdl9pc2FfZXh0X2NvdW50ID0gQVJSQVlfU0la RShyaXNjdl9pc2FfZXh0KTsKIAotc3RhdGljIHZvaWQgX19pbml0IG1hdGNoX2lzYV9leHQoY29u c3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0YSAqZXh0LCBjb25zdCBjaGFyICpuYW1lLAotCQkJ CSBjb25zdCBjaGFyICpuYW1lX2VuZCwgc3RydWN0IHJpc2N2X2lzYWluZm8gKmlzYWluZm8pCitz dGF0aWMgdm9pZCByaXNjdl9pc2Ffc2V0X2V4dChjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9k YXRhICpleHQsIHVuc2lnbmVkIGxvbmcgKmJpdG1hcCkKIHsKLQlpZiAoKG5hbWVfZW5kIC0gbmFt ZSA9PSBzdHJsZW4oZXh0LT5uYW1lKSkgJiYKLQkgICAgICFzdHJuY2FzZWNtcChuYW1lLCBleHQt Pm5hbWUsIG5hbWVfZW5kIC0gbmFtZSkpIHsKLQkJLyoKLQkJICogSWYgdGhpcyBpcyBhIGJ1bmRs ZSwgZW5hYmxlIGFsbCB0aGUgSVNBIGV4dGVuc2lvbnMgdGhhdAotCQkgKiBjb21wcmlzZSB0aGUg YnVuZGxlLgotCQkgKi8KLQkJaWYgKGV4dC0+c3Vic2V0X2V4dF9zaXplKSB7Ci0JCQlmb3IgKGlu dCBpID0gMDsgaSA8IGV4dC0+c3Vic2V0X2V4dF9zaXplOyBpKyspIHsKLQkJCQlpZiAocmlzY3Zf aXNhX2V4dGVuc2lvbl9jaGVjayhleHQtPnN1YnNldF9leHRfaWRzW2ldKSkKLQkJCQkJc2V0X2Jp dChleHQtPnN1YnNldF9leHRfaWRzW2ldLCBpc2FpbmZvLT5pc2EpOwotCQkJfQorCS8qCisJICog VGhpcyBpcyB2YWxpZCBldmVuIGZvciBidW5kbGUgZXh0ZW5zaW9ucyB3aGljaCB1c2VzIHRoZSBS SVNDVl9JU0FfRVhUX0lOVkFMSUQgaWQKKwkgKiAocmVqZWN0ZWQgYnkgcmlzY3ZfaXNhX2V4dGVu c2lvbl92YWxpZCgpKS4KKwkgKi8KKwlpZiAocmlzY3ZfaXNhX2V4dGVuc2lvbl92YWxpZChleHQt PmlkKSkKKwkJc2V0X2JpdChleHQtPmlkLCBiaXRtYXApOworCisJZm9yIChpbnQgaSA9IDA7IGkg PCBleHQtPnN1YnNldF9leHRfc2l6ZTsgaSsrKSB7CisJCWlmIChyaXNjdl9pc2FfZXh0ZW5zaW9u X3ZhbGlkKGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0pKQorCQkJc2V0X2JpdChleHQtPnN1YnNldF9l eHRfaWRzW2ldLCBiaXRtYXApOworCX0KK30KKworc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3Jl c29sdmVfaXNhKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmlzYV9iaXRtYXAsIHN0cnVjdCByaXNjdl9p c2FpbmZvICppc2FpbmZvLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqdGhpc19od2NhcCwgdW5z aWduZWQgbG9uZyAqaXNhMmh3Y2FwKQoreworCWNvbnN0IHN0cnVjdCByaXNjdl9pc2FfZXh0X2Rh dGEgKmV4dDsKKwlERUNMQVJFX0JJVE1BUChwcmV2X2JpdG1hcCwgUklTQ1ZfSVNBX0VYVF9NQVgp OworCWludCBtYXhfbG9vcF9jb3VudCA9IHJpc2N2X2lzYV9leHRfY291bnQgKyAxOworCisJZG8g eworCQlpZiAobWF4X2xvb3BfY291bnQtLSA8IDApIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIHJl YWNoIGEgc3RhYmxlIElTQSBzdGF0ZVxuIik7CisJCQlyZXR1cm47CiAJCX0KKwkJbWVtY3B5KHBy ZXZfYml0bWFwLCBpc2FpbmZvLT5pc2EsIHNpemVvZihwcmV2X2JpdG1hcCkpOworCQlmb3IgKGlu dCBpID0gMDsgaSA8IHJpc2N2X2lzYV9leHRfY291bnQ7IGkrKykgeworCQkJZXh0ID0gJnJpc2N2 X2lzYV9leHRbaV07CisKKwkJCS8qIEJ1bmRsZSBleHRlbnNpb25zIGlkcyBhcmUgaW52YWxpZCov CisJCQlpZiAoIXJpc2N2X2lzYV9leHRlbnNpb25fdmFsaWQoZXh0LT5pZCkpCisJCQkJY29udGlu dWU7CisKKwkJCWlmICghdGVzdF9iaXQoZXh0LT5pZCwgaXNhX2JpdG1hcCkgfHwgdGVzdF9iaXQo ZXh0LT5pZCwgaXNhaW5mby0+aXNhKSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGV4dC0+dmFs aWRhdGUgJiYgIWV4dC0+dmFsaWRhdGUoZXh0LCBpc2FpbmZvLT5pc2EpKQorCQkJCWNvbnRpbnVl OwogCi0JCS8qCi0JCSAqIFRoaXMgaXMgdmFsaWQgZXZlbiBmb3IgYnVuZGxlIGV4dGVuc2lvbnMg d2hpY2ggdXNlcyB0aGUgUklTQ1ZfSVNBX0VYVF9JTlZBTElEIGlkCi0JCSAqIChyZWplY3RlZCBi eSByaXNjdl9pc2FfZXh0ZW5zaW9uX2NoZWNrKCkpLgotCQkgKi8KLQkJaWYgKHJpc2N2X2lzYV9l eHRlbnNpb25fY2hlY2soZXh0LT5pZCkpCiAJCQlzZXRfYml0KGV4dC0+aWQsIGlzYWluZm8tPmlz YSk7CisKKwkJCS8qIE9ubHkgc2luZ2xlIGxldHRlciBleHRlbnNpb25zIGdldCBzZXQgaW4gaHdj YXAgKi8KKwkJCWlmIChleHQtPmlkIDwgUklTQ1ZfSVNBX0VYVF9CQVNFKQorCQkJCSp0aGlzX2h3 Y2FwIHw9IGlzYTJod2NhcFtleHQtPmlkXTsKKwkJfQorCX0gd2hpbGUgKG1lbWNtcChwcmV2X2Jp dG1hcCwgaXNhaW5mby0+aXNhLCBzaXplb2YocHJldl9iaXRtYXApKSk7Cit9CisKK3N0YXRpYyB2 b2lkIF9faW5pdCBtYXRjaF9pc2FfZXh0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKm5h bWVfZW5kLCB1bnNpZ25lZCBsb25nICpiaXRtYXApCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBy aXNjdl9pc2FfZXh0X2NvdW50OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IHJpc2N2X2lzYV9leHRf ZGF0YSAqZXh0ID0gJnJpc2N2X2lzYV9leHRbaV07CisKKwkJaWYgKChuYW1lX2VuZCAtIG5hbWUg PT0gc3RybGVuKGV4dC0+bmFtZSkpICYmCisJCSAgICAhc3RybmNhc2VjbXAobmFtZSwgZXh0LT5u YW1lLCBuYW1lX2VuZCAtIG5hbWUpKSB7CisJCQlyaXNjdl9pc2Ffc2V0X2V4dChleHQsIGJpdG1h cCk7CisJCQlicmVhazsKKwkJfQogCX0KIH0KIAotc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3Bh cnNlX2lzYV9zdHJpbmcodW5zaWduZWQgbG9uZyAqdGhpc19od2NhcCwgc3RydWN0IHJpc2N2X2lz YWluZm8gKmlzYWluZm8sCi0JCQkJCSAgdW5zaWduZWQgbG9uZyAqaXNhMmh3Y2FwLCBjb25zdCBj aGFyICppc2EpCitzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcmVzb2x2ZV9pc2Ffc3RyaW5nKGNv bnN0IGNoYXIgKmlzYSwgdW5zaWduZWQgbG9uZyAqYml0bWFwKQogewogCS8qCiAJICogRm9yIGFs bCBwb3NzaWJsZSBjcHVzLCB3ZSBoYXZlIGFscmVhZHkgdmFsaWRhdGVkIGluCkBAIC0zNDksNyAr Mzk5LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3BhcnNlX2lzYV9zdHJpbmcodW5zaWdu ZWQgbG9uZyAqdGhpc19od2NhcCwgc3RydWN0IHJpc2MKIAl3aGlsZSAoKmlzYSkgewogCQljb25z dCBjaGFyICpleHQgPSBpc2ErKzsKIAkJY29uc3QgY2hhciAqZXh0X2VuZCA9IGlzYTsKLQkJYm9v bCBleHRfbG9uZyA9IGZhbHNlLCBleHRfZXJyID0gZmFsc2U7CisJCWJvb2wgZXh0X2VyciA9IGZh bHNlOwogCiAJCXN3aXRjaCAoKmV4dCkgewogCQljYXNlICdzJzoKQEAgLTM4OSw3ICs0MzksNiBA QCBzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcGFyc2VfaXNhX3N0cmluZyh1bnNpZ25lZCBsb25n ICp0aGlzX2h3Y2FwLCBzdHJ1Y3QgcmlzYwogCQkJICogY2hhcmFjdGVyIGl0c2VsZiB3aGlsZSBl bGltaW5hdGluZyB0aGUgZXh0ZW5zaW9ucyB2ZXJzaW9uIG51bWJlci4KIAkJCSAqIEEgc2ltcGxl IHJlLWluY3JlbWVudCBzb2x2ZXMgdGhpcyBwcm9ibGVtLgogCQkJICovCi0JCQlleHRfbG9uZyA9 IHRydWU7CiAJCQlmb3IgKDsgKmlzYSAmJiAqaXNhICE9ICdfJzsgKytpc2EpCiAJCQkJaWYgKHVu bGlrZWx5KCFpc2FsbnVtKCppc2EpKSkKIAkJCQkJZXh0X2VyciA9IHRydWU7CkBAIC00NjksMTcg KzUxOCw4IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9wYXJzZV9pc2Ffc3RyaW5nKHVuc2ln bmVkIGxvbmcgKnRoaXNfaHdjYXAsIHN0cnVjdCByaXNjCiAKIAkJaWYgKHVubGlrZWx5KGV4dF9l cnIpKQogCQkJY29udGludWU7Ci0JCWlmICghZXh0X2xvbmcpIHsKLQkJCWludCBuciA9IHRvbG93 ZXIoKmV4dCkgLSAnYSc7CiAKLQkJCWlmIChyaXNjdl9pc2FfZXh0ZW5zaW9uX2NoZWNrKG5yKSkg ewotCQkJCSp0aGlzX2h3Y2FwIHw9IGlzYTJod2NhcFtucl07Ci0JCQkJc2V0X2JpdChuciwgaXNh aW5mby0+aXNhKTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlz Y3ZfaXNhX2V4dF9jb3VudDsgaSsrKQotCQkJCW1hdGNoX2lzYV9leHQoJnJpc2N2X2lzYV9leHRb aV0sIGV4dCwgZXh0X2VuZCwgaXNhaW5mbyk7Ci0JCX0KKwkJbWF0Y2hfaXNhX2V4dChleHQsIGV4 dF9lbmQsIGJpdG1hcCk7CiAJfQogfQogCkBAIC01MDEsNiArNTQxLDcgQEAgc3RhdGljIHZvaWQg X19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9pc2Ffc3RyaW5nKHVuc2lnbmVkIGxvbmcgKmlz YTJod2NhcCkKIAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiAJCXN0cnVjdCByaXNjdl9p c2FpbmZvICppc2FpbmZvID0gJmhhcnRfaXNhW2NwdV07CiAJCXVuc2lnbmVkIGxvbmcgdGhpc19o d2NhcCA9IDA7CisJCURFQ0xBUkVfQklUTUFQKGlzYV9iaXRtYXAsIFJJU0NWX0lTQV9FWFRfTUFY KSA9IHsgMCB9OwogCiAJCWlmIChhY3BpX2Rpc2FibGVkKSB7CiAJCQlub2RlID0gb2ZfY3B1X2Rl dmljZV9ub2RlX2dldChjcHUpOwpAQCAtNTIzLDcgKzU2NCw3IEBAIHN0YXRpYyB2b2lkIF9faW5p dCByaXNjdl9maWxsX2h3Y2FwX2Zyb21faXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICppc2EyaHdj YXApCiAJCQl9CiAJCX0KIAotCQlyaXNjdl9wYXJzZV9pc2Ffc3RyaW5nKCZ0aGlzX2h3Y2FwLCBp c2FpbmZvLCBpc2EyaHdjYXAsIGlzYSk7CisJCXJpc2N2X3Jlc29sdmVfaXNhX3N0cmluZyhpc2Es IGlzYV9iaXRtYXApOwogCiAJCS8qCiAJCSAqIFRoZXNlIG9uZXMgd2VyZSBhcyB0aGV5IHdlcmUg cGFydCBvZiB0aGUgYmFzZSBJU0Egd2hlbiB0aGUKQEAgLTUzMSwxMCArNTcyLDEwIEBAIHN0YXRp YyB2b2lkIF9faW5pdCByaXNjdl9maWxsX2h3Y2FwX2Zyb21faXNhX3N0cmluZyh1bnNpZ25lZCBs b25nICppc2EyaHdjYXApCiAJCSAqIHVuY29uZGl0aW9uYWxseSB3aGVyZSBgaWAgaXMgaW4gcmlz Y3YsaXNhIG9uIERUIHN5c3RlbXMuCiAJCSAqLwogCQlpZiAoYWNwaV9kaXNhYmxlZCkgewotCQkJ c2V0X2JpdChSSVNDVl9JU0FfRVhUX1pJQ1NSLCBpc2FpbmZvLT5pc2EpOwotCQkJc2V0X2JpdChS SVNDVl9JU0FfRVhUX1pJRkVOQ0VJLCBpc2FpbmZvLT5pc2EpOwotCQkJc2V0X2JpdChSSVNDVl9J U0FfRVhUX1pJQ05UUiwgaXNhaW5mby0+aXNhKTsKLQkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9a SUhQTSwgaXNhaW5mby0+aXNhKTsKKwkJCXNldF9iaXQoUklTQ1ZfSVNBX0VYVF9aSUNTUiwgaXNh X2JpdG1hcCk7CisJCQlzZXRfYml0KFJJU0NWX0lTQV9FWFRfWklGRU5DRUksIGlzYV9iaXRtYXAp OworCQkJc2V0X2JpdChSSVNDVl9JU0FfRVhUX1pJQ05UUiwgaXNhX2JpdG1hcCk7CisJCQlzZXRf Yml0KFJJU0NWX0lTQV9FWFRfWklIUE0sIGlzYV9iaXRtYXApOwogCQl9CiAKIAkJLyoKQEAgLTU0 OCw5ICs1ODksMTEgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9p c2Ffc3RyaW5nKHVuc2lnbmVkIGxvbmcgKmlzYTJod2NhcCkKIAkJaWYgKGFjcGlfZGlzYWJsZWQg JiYgcmlzY3ZfY2FjaGVkX212ZW5kb3JpZChjcHUpID09IFRIRUFEX1ZFTkRPUl9JRCAmJgogCQkg ICAgcmlzY3ZfY2FjaGVkX21hcmNoaWQoY3B1KSA9PSAweDApIHsKIAkJCXRoaXNfaHdjYXAgJj0g fmlzYTJod2NhcFtSSVNDVl9JU0FfRVhUX3ZdOwotCQkJY2xlYXJfYml0KFJJU0NWX0lTQV9FWFRf diwgaXNhaW5mby0+aXNhKTsKKwkJCWNsZWFyX2JpdChSSVNDVl9JU0FfRVhUX3YsIGlzYV9iaXRt YXApOwogCQl9CiAKKwkJcmlzY3ZfcmVzb2x2ZV9pc2EoaXNhX2JpdG1hcCwgaXNhaW5mbywgJnRo aXNfaHdjYXAsIGlzYTJod2NhcCk7CisKIAkJLyoKIAkJICogQWxsICJva2F5IiBoYXJ0IHNob3Vs ZCBoYXZlIHNhbWUgaXNhLiBTZXQgSFdDQVAgYmFzZWQgb24KIAkJICogY29tbW9uIGNhcGFiaWxp dGllcyBvZiBldmVyeSAib2theSIgaGFydCwgaW4gY2FzZSB0aGV5IGRvbid0CkBAIC01NzksNiAr NjIyLDcgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9tX2V4dF9saXN0 KHVuc2lnbmVkIGxvbmcgKmlzYTJod2NhcCkKIAkJdW5zaWduZWQgbG9uZyB0aGlzX2h3Y2FwID0g MDsKIAkJc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZTsKIAkJc3RydWN0IHJpc2N2X2lzYWlu Zm8gKmlzYWluZm8gPSAmaGFydF9pc2FbY3B1XTsKKwkJREVDTEFSRV9CSVRNQVAoaXNhX2JpdG1h cCwgUklTQ1ZfSVNBX0VYVF9NQVgpID0geyAwIH07CiAKIAkJY3B1X25vZGUgPSBvZl9jcHVfZGV2 aWNlX25vZGVfZ2V0KGNwdSk7CiAJCWlmICghY3B1X25vZGUpIHsKQEAgLTU5OCwyMiArNjQyLDEx IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2ZpbGxfaHdjYXBfZnJvbV9leHRfbGlzdCh1bnNp Z25lZCBsb25nICppc2EyaHdjYXApCiAJCQkJCQkgICAgIGV4dC0+cHJvcGVydHkpIDwgMCkKIAkJ CQljb250aW51ZTsKIAotCQkJaWYgKGV4dC0+c3Vic2V0X2V4dF9zaXplKSB7Ci0JCQkJZm9yIChp bnQgaiA9IDA7IGogPCBleHQtPnN1YnNldF9leHRfc2l6ZTsgaisrKSB7Ci0JCQkJCWlmIChyaXNj dl9pc2FfZXh0ZW5zaW9uX2NoZWNrKGV4dC0+c3Vic2V0X2V4dF9pZHNbaV0pKQotCQkJCQkJc2V0 X2JpdChleHQtPnN1YnNldF9leHRfaWRzW2pdLCBpc2FpbmZvLT5pc2EpOwotCQkJCX0KLQkJCX0K LQotCQkJaWYgKHJpc2N2X2lzYV9leHRlbnNpb25fY2hlY2soZXh0LT5pZCkpIHsKLQkJCQlzZXRf Yml0KGV4dC0+aWQsIGlzYWluZm8tPmlzYSk7Ci0KLQkJCQkvKiBPbmx5IHNpbmdsZSBsZXR0ZXIg ZXh0ZW5zaW9ucyBnZXQgc2V0IGluIGh3Y2FwICovCi0JCQkJaWYgKHN0cm5sZW4ocmlzY3ZfaXNh X2V4dFtpXS5uYW1lLCAyKSA9PSAxKQotCQkJCQl0aGlzX2h3Y2FwIHw9IGlzYTJod2NhcFtyaXNj dl9pc2FfZXh0W2ldLmlkXTsKLQkJCX0KKwkJCXJpc2N2X2lzYV9zZXRfZXh0KGV4dCwgaXNhX2Jp dG1hcCk7CiAJCX0KIAorCQlyaXNjdl9yZXNvbHZlX2lzYShpc2FfYml0bWFwLCBpc2FpbmZvLCAm dGhpc19od2NhcCwgaXNhMmh3Y2FwKTsKKwogCQlvZl9ub2RlX3B1dChjcHVfbm9kZSk7CiAKIAkJ LyoKLS0gCjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cmlzY3YK