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 6F509C35274 for ; Thu, 21 Dec 2023 17:35:36 +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=OxeXNIvVCm5N4DsDnfWlfzPvKisEEJVQbOUxonkklZc=; b=j9ozG3j0aBotpy BPuDyG7fon4giy7x1y+uhLjTwfnBsfrRAYypW600bht9iKCkCfjPzCXiCu46Z6lP09UK/fDzmIed1 nimsVEZNd8jlATUMz+JEP7mxgEy/50vLjgECFt/mdphncMVfAL4es7lGElC4WRjQtSziJldlUHUMd je5tNfJRLNhzngRjz5lZtQAAWchWs3VMHrtaWz9Nehh6TKq74/draZIAFOhw1yYGbeMrB/9bcCxU7 BsgdmHQFYDhH/OyXab9RuX50osU1XINOEJ2+ZuzL9NCoQNSSooYvU1j7LWDFRQIpiZKZd+8jqNpOW BiBKDpNHZ/7g9HI81Egw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rGMwy-003gRX-11; Thu, 21 Dec 2023 17:35:12 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rGMwY-003g58-1N; Thu, 21 Dec 2023 17:34:51 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-a2335397e64so132787166b.2; Thu, 21 Dec 2023 09:34:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703180082; x=1703784882; 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=/LigAkCB/la+Qs61J5kBSDMBJAI+pTq+O+P9MmiWApU=; b=cqLxnktEue9SdBKDiqs3Qpslcj4Q1LJ9yAW2owZNHkf1iToVILFvMtBqG1L637TbLi XT6Mq4E6LAvFzbsayPgxfG6Sr/uVZaRDhzU5vhZ6J3e2GG6PYSpRJT25atDMwlVR9KYp QLns2Zk6rSzxuPH0uGFMSAm1sqAGP2MLwypVnWdXVNh5KSgswyuQnPgQQfzbb3UE7wmO HFIX4H0B+plAyylVNEg0lvnWzUIF45+AcyX4gWPUEQJlpiUU6kOj2tV1Yazq2F1CtsO3 Tev/wIpgiwLdkMl5l397Gre+7+fXkMKlDl9Z2/fSluTlwxDlkOgFiN6xAEnGImnCkMHw 45rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703180082; x=1703784882; 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=/LigAkCB/la+Qs61J5kBSDMBJAI+pTq+O+P9MmiWApU=; b=LbZ5PJ3kjZERmX3sCNEZf/xmAzvw2J7bb1nVpZMvVTP0oayjtdVygt4hLFSbh+lcXj t+x7MN1D5NpgF9KCGe5QLNxmo2ybCOfV11T/1i9C5vVHaBJFxNNnNDJ6iqoQZFS1tFer zDEXhbVhegtI2puo0Uk/QpHwnuCGxyDcJHUY+hxnJ4HDg9FfopOJBscIAIF7FaDnMfgE bycWQeERPbHoShEiIwDO3VPFm52rfhoF03cRdf9lxYvos/TCfY+W5sc46o5sRtPZXM/o ffEwTXE+7a2hbeD1176B357n14NJA3thAjodw5wN4MAUeFL0k6/Oi4l/p7F0Qsy/0nTw Gzkg== X-Gm-Message-State: AOJu0Yxz+0xKZF1sxRqeF2AGzViNkmem9CDf17bhxjhbPtcQdmyoC4Tk 8KAZIqAjlbCnz98bIG+tlU8= X-Google-Smtp-Source: AGHT+IE8R8ORMKM/1BouX+eoS51FuVeVD5c8Np+++ilHS1c7JQfD5vhcEA+35MjsdhyyIhqurFCkFg== X-Received: by 2002:a17:907:2d8b:b0:a26:a5fe:d67d with SMTP id gt11-20020a1709072d8b00b00a26a5fed67dmr104021ejc.136.1703180082089; Thu, 21 Dec 2023 09:34:42 -0800 (PST) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id z25-20020a1709060ad900b00a23499f1d7dsm1176118ejf.209.2023.12.21.09.34.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Dec 2023 09:34:41 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Greg Kroah-Hartman , Michael Walle , Miquel Raynal , linux-mtd@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, u-boot@lists.denx.de, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH V3 6/6] nvmem: layouts: add U-Boot env layout Date: Thu, 21 Dec 2023 18:34:21 +0100 Message-Id: <20231221173421.13737-6-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231221173421.13737-1-zajec5@gmail.com> References: <20231221173421.13737-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231221_093446_487865_D9F1FDDE X-CRM114-Status: GOOD ( 29.65 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKTW92ZSBhbGwgZ2VuZXJp YyAoTlZNRU0gZGV2aWNlcyBpbmRlcGVuZGVudCkgY29kZSBmcm9tIE5WTUVNIGRldmljZQpkcml2 ZXIgdG8gTlZNRU0gbGF5b3V0IGRyaXZlci4gVGhlbiBhZGQgYSBzaW1wbGUgTlZNRU0gbGF5b3V0 IGNvZGUgb24KdG9wIG9mIGl0LgoKVGhhbmtzIHRvIHByb3BlciBsYXlvdXQgaXQncyBwb3NzaWJs ZSB0byBzdXBwb3J0IFUtQm9vdCBlbnYgZGF0YSBzdG9yZWQKb24gYW55IGtpbmQgb2YgTlZNRU0g ZGV2aWNlLgoKRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgRFQgYmluZGluZ3Mg d2UgbmVlZCB0byBrZWVwIG9sZApOVk1FTSBkZXZpY2UgZHJpdmVyIGZ1bmN0aW9uYWwuIFRvIGF2 b2lkIGNvZGUgZHVwbGljYXRpb24gZXhwb3J0IGFuZApyZXVzZSBhIHBhcnNpbmcgZnVuY3Rpb24u CgpTaWduZWQtb2ZmLWJ5OiBSYWZhxYIgTWnFgmVja2kgPHJhZmFsQG1pbGVja2kucGw+ClJldmll d2VkLWJ5OiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgotLS0KVjI6 IFN1cHBvcnQgbmV3IGNvbXBhdGlibGVzICYgdXNlIGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpIGhl bHBlcgpWMzogVXNlIGltcGVyYXRpdmUgaW4gY29tbWl0IGJvZHkKCklNUE9SVEFOVDoKVGhpcyBp cyBiYXNlZCBvbiB0b3Agb2YgdGhlOgpbUEFUQ0ggdjYuOCAxLzJdIG52bWVtOiBsYXlvdXRzOiBy ZWZhY3RvciAuYWRkX2NlbGxzKCkgY2FsbGJhY2sgYXJndW1lbnRzCgogTUFJTlRBSU5FUlMgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL252bWVtL0tjb25maWcgICAgICAg ICAgICAgIHwgICAzICstCiBkcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZyAgICAgIHwgIDEx ICsrCiBkcml2ZXJzL252bWVtL2xheW91dHMvTWFrZWZpbGUgICAgIHwgICAxICsKIGRyaXZlcnMv bnZtZW0vbGF5b3V0cy91LWJvb3QtZW52LmMgfCAyMDQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvbnZtZW0vbGF5b3V0cy91LWJvb3QtZW52LmggfCAgMTUgKysrCiBkcml2 ZXJzL252bWVtL3UtYm9vdC1lbnYuYyAgICAgICAgIHwgMTU4ICstLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDcgZmlsZXMgY2hhbmdlZCwgMjM1IGluc2VydGlvbnMoKyksIDE1OCBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290LWVudi5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9udm1lbS9sYXlvdXRzL3UtYm9vdC1lbnYuaAoKZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYjU4OTIxODYwNWI0Li4x ZjdlNmQ3NGNkNTEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBA IC0yMjI4Miw2ICsyMjI4Miw3IEBAIFUtQk9PVCBFTlZJUk9OTUVOVCBWQVJJQUJMRVMKIE06CVJh ZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KIFM6CU1haW50YWluZWQKIEY6CURvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1lbS91LWJvb3QsZW52LnlhbWwKK0Y6CWRy aXZlcnMvbnZtZW0vbGF5b3V0cy91LWJvb3QtZW52LmMKIEY6CWRyaXZlcnMvbnZtZW0vdS1ib290 LWVudi5jCiAKIFVBQ0NFIEFDQ0VMRVJBVE9SIEZSQU1FV09SSwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9udm1lbS9LY29uZmlnIGIvZHJpdmVycy9udm1lbS9LY29uZmlnCmluZGV4IDI4MzEzNDQ5OGZi Yy4uZDJjMzg0ZjU4MDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWVtL0tjb25maWcKKysrIGIv ZHJpdmVycy9udm1lbS9LY29uZmlnCkBAIC0zNjMsOCArMzYzLDcgQEAgY29uZmlnIE5WTUVNX1NV TlhJX1NJRAogY29uZmlnIE5WTUVNX1VfQk9PVF9FTlYKIAl0cmlzdGF0ZSAiVS1Cb290IGVudmly b25tZW50IHZhcmlhYmxlcyBzdXBwb3J0IgogCWRlcGVuZHMgb24gT0YgJiYgTVRECi0Jc2VsZWN0 IENSQzMyCi0Jc2VsZWN0IEdFTkVSSUNfTkVUX1VUSUxTCisJc2VsZWN0IE5WTUVNX0xBWU9VVF9V X0JPT1RfRU5WCiAJaGVscAogCSAgVS1Cb290IHN0b3JlcyBpdHMgc2V0dXAgYXMgZW52aXJvbm1l bnQgdmFyaWFibGVzLiBUaGlzIGRyaXZlciBhZGRzCiAJICBzdXBwb3J0IGZvciB2ZXJpZnlpbmcg JiBleHBvcnRpbmcgc3VjaCBkYXRhLiBJdCBhbHNvIGV4cG9zZXMgdmFyaWFibGVzCmRpZmYgLS1n aXQgYS9kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZyBiL2RyaXZlcnMvbnZtZW0vbGF5b3V0 cy9LY29uZmlnCmluZGV4IDljNmU2NzJmYzM1MC4uNWU1ODZkZmViZTQ3IDEwMDY0NAotLS0gYS9k cml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZworKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMv S2NvbmZpZwpAQCAtMjYsNiArMjYsMTcgQEAgY29uZmlnIE5WTUVNX0xBWU9VVF9PTklFX1RMVgog CiAJICBJZiB1bnN1cmUsIHNheSBOLgogCitjb25maWcgTlZNRU1fTEFZT1VUX1VfQk9PVF9FTlYK Kwl0cmlzdGF0ZSAiVS1Cb290IGVudmlyb25tZW50IHZhcmlhYmxlcyBsYXlvdXQiCisJc2VsZWN0 IENSQzMyCisJc2VsZWN0IEdFTkVSSUNfTkVUX1VUSUxTCisJaGVscAorCSAgVS1Cb290IHN0b3Jl cyBpdHMgc2V0dXAgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzIGRyaXZlciBhZGRzCisJ ICBzdXBwb3J0IGZvciB2ZXJpZnlpbmcgJiBleHBvcnRpbmcgc3VjaCBkYXRhLiBJdCBhbHNvIGV4 cG9zZXMgdmFyaWFibGVzCisJICBhcyBOVk1FTSBjZWxscyBzbyB0aGV5IGNhbiBiZSByZWZlcmVu Y2VkIGJ5IG90aGVyIGRyaXZlcnMuCisKKwkgIElmIHVuc3VyZSwgc2F5IE4uCisKIGVuZG1lbnUK IAogZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy9NYWtlZmlsZSBiL2Ry aXZlcnMvbnZtZW0vbGF5b3V0cy9NYWtlZmlsZQppbmRleCAyOTc0YmQ3ZDMzZWQuLjQ5NDBjOWRi MDY2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvbnZtZW0vbGF5b3V0cy9NYWtlZmlsZQpAQCAtNSwzICs1LDQgQEAKIAogb2JqLSQoQ09O RklHX05WTUVNX0xBWU9VVF9TTDI4X1ZQRCkgKz0gc2wyOHZwZC5vCiBvYmotJChDT05GSUdfTlZN RU1fTEFZT1VUX09OSUVfVExWKSArPSBvbmllLXRsdi5vCitvYmotJChDT05GSUdfTlZNRU1fTEFZ T1VUX1VfQk9PVF9FTlYpICs9IHUtYm9vdC1lbnYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1l bS9sYXlvdXRzL3UtYm9vdC1lbnYuYyBiL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy91LWJvb3QtZW52 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kY2QyZmZlZDUwM2MK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290LWVudi5jCkBA IC0wLDAgKzEsMjA0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIC0gMjAyMyBSYWZhxYIgTWnFgmVja2kgPHJhZmFs QG1pbGVja2kucGw+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NyYzMyLmg+CisjaW5jbHVkZSA8 bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KKyNpbmNsdWRl IDxsaW51eC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPGxpbnV4L252bWVtLWNvbnN1bWVyLmg+Cisj aW5jbHVkZSA8bGludXgvbnZtZW0tcHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgInUtYm9vdC1lbnYuaCIKKworc3Ry dWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlIHsKKwlfX2xlMzIgY3JjMzI7CisJdWludDhfdCBk YXRhW107Cit9IF9fcGFja2VkOworCitzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9yZWR1bmRhbnQg eworCV9fbGUzMiBjcmMzMjsKKwl1OCBtYXJrOworCXVpbnQ4X3QgZGF0YVtdOworfSBfX3BhY2tl ZDsKKworc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfYnJvYWRjb20geworCV9fbGUzMiBtYWdpYzsK KwlfX2xlMzIgbGVuOworCV9fbGUzMiBjcmMzMjsKKwlERUNMQVJFX0ZMRVhfQVJSQVkodWludDhf dCwgZGF0YSk7Cit9IF9fcGFja2VkOworCitzdGF0aWMgaW50IHVfYm9vdF9lbnZfcmVhZF9wb3N0 X3Byb2Nlc3NfZXRoYWRkcih2b2lkICpjb250ZXh0LCBjb25zdCBjaGFyICppZCwgaW50IGluZGV4 LAorCQkJCQkJdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqYnVmLCBzaXplX3QgYnl0ZXMpCit7 CisJdTggbWFjW0VUSF9BTEVOXTsKKworCWlmIChieXRlcyAhPSAzICogRVRIX0FMRU4gLSAxKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghbWFjX3B0b24oYnVmLCBtYWMpKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWlmIChpbmRleCkKKwkJZXRoX2FkZHJfYWRkKG1hYywgaW5kZXgpOworCisJ ZXRoZXJfYWRkcl9jb3B5KGJ1ZiwgbWFjKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHVfYm9vdF9lbnZfcGFyc2VfY2VsbHMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbnZtZW1f ZGV2aWNlICpudm1lbSwgdWludDhfdCAqYnVmLAorCQkJCSAgc2l6ZV90IGRhdGFfb2Zmc2V0LCBz aXplX3QgZGF0YV9sZW4pCit7CisJY2hhciAqZGF0YSA9IGJ1ZiArIGRhdGFfb2Zmc2V0OworCWNo YXIgKnZhciwgKnZhbHVlLCAqZXE7CisKKwlmb3IgKHZhciA9IGRhdGE7CisJICAgICB2YXIgPCBk YXRhICsgZGF0YV9sZW4gJiYgKnZhcjsKKwkgICAgIHZhciA9IHZhbHVlICsgc3RybGVuKHZhbHVl KSArIDEpIHsKKwkJc3RydWN0IG52bWVtX2NlbGxfaW5mbyBpbmZvID0ge307CisKKwkJZXEgPSBz dHJjaHIodmFyLCAnPScpOworCQlpZiAoIWVxKQorCQkJYnJlYWs7CisJCSplcSA9ICdcMCc7CisJ CXZhbHVlID0gZXEgKyAxOworCisJCWluZm8ubmFtZSA9IGRldm1fa3N0cmR1cChkZXYsIHZhciwg R0ZQX0tFUk5FTCk7CisJCWlmICghaW5mby5uYW1lKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCWlu Zm8ub2Zmc2V0ID0gZGF0YV9vZmZzZXQgKyB2YWx1ZSAtIGRhdGE7CisJCWluZm8uYnl0ZXMgPSBz dHJsZW4odmFsdWUpOworCQlpbmZvLm5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5vZl9u b2RlLCBpbmZvLm5hbWUpOworCQlpZiAoIXN0cmNtcCh2YXIsICJldGhhZGRyIikpIHsKKwkJCWlu Zm8ucmF3X2xlbiA9IHN0cmxlbih2YWx1ZSk7CisJCQlpbmZvLmJ5dGVzID0gRVRIX0FMRU47CisJ CQlpbmZvLnJlYWRfcG9zdF9wcm9jZXNzID0gdV9ib290X2Vudl9yZWFkX3Bvc3RfcHJvY2Vzc19l dGhhZGRyOworCQl9CisKKwkJbnZtZW1fYWRkX29uZV9jZWxsKG52bWVtLCAmaW5mbyk7CisJfQor CisJcmV0dXJuIDA7Cit9CisKK2ludCB1X2Jvb3RfZW52X3BhcnNlKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sCisJCSAgICAgZW51bSB1X2Jvb3RfZW52X2Zv cm1hdCBmb3JtYXQpCit7CisJc2l6ZV90IGNyYzMyX2RhdGFfb2Zmc2V0OworCXNpemVfdCBjcmMz Ml9kYXRhX2xlbjsKKwlzaXplX3QgY3JjMzJfb2Zmc2V0OworCV9fbGUzMiAqY3JjMzJfYWRkcjsK KwlzaXplX3QgZGF0YV9vZmZzZXQ7CisJc2l6ZV90IGRhdGFfbGVuOworCXNpemVfdCBkZXZfc2l6 ZTsKKwl1aW50MzJfdCBjcmMzMjsKKwl1aW50MzJfdCBjYWxjOworCXVpbnQ4X3QgKmJ1ZjsKKwlp bnQgYnl0ZXM7CisJaW50IGVycjsKKworCWRldl9zaXplID0gbnZtZW1fZGV2X3NpemUobnZtZW0p OworCisJYnVmID0ga3phbGxvYyhkZXZfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWYpIHsK KwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBlcnJfb3V0OworCX0KKworCWJ5dGVzID0gbnZtZW1f ZGV2aWNlX3JlYWQobnZtZW0sIDAsIGRldl9zaXplLCBidWYpOworCWlmIChieXRlcyA8IDApIHsK KwkJZXJyID0gYnl0ZXM7CisJCWdvdG8gZXJyX2tmcmVlOworCX0gZWxzZSBpZiAoYnl0ZXMgIT0g ZGV2X3NpemUpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBlcnJfa2ZyZWU7CisJfQorCisJc3dp dGNoIChmb3JtYXQpIHsKKwljYXNlIFVfQk9PVF9GT1JNQVRfU0lOR0xFOgorCQljcmMzMl9vZmZz ZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9zaW5nbGUsIGNyYzMyKTsKKwkJ Y3JjMzJfZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9zaW5n bGUsIGRhdGEpOworCQlkYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2lt YWdlX3NpbmdsZSwgZGF0YSk7CisJCWJyZWFrOworCWNhc2UgVV9CT09UX0ZPUk1BVF9SRURVTkRB TlQ6CisJCWNyYzMyX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3Jl ZHVuZGFudCwgY3JjMzIpOworCQljcmMzMl9kYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1 X2Jvb3RfZW52X2ltYWdlX3JlZHVuZGFudCwgZGF0YSk7CisJCWRhdGFfb2Zmc2V0ID0gb2Zmc2V0 b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfcmVkdW5kYW50LCBkYXRhKTsKKwkJYnJlYWs7CisJ Y2FzZSBVX0JPT1RfRk9STUFUX0JST0FEQ09NOgorCQljcmMzMl9vZmZzZXQgPSBvZmZzZXRvZihz dHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9icm9hZGNvbSwgY3JjMzIpOworCQljcmMzMl9kYXRhX29m ZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX2Jyb2FkY29tLCBkYXRhKTsK KwkJZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9icm9hZGNv bSwgZGF0YSk7CisJCWJyZWFrOworCX0KKwljcmMzMl9hZGRyID0gKF9fbGUzMiAqKShidWYgKyBj cmMzMl9vZmZzZXQpOworCWNyYzMyID0gbGUzMl90b19jcHUoKmNyYzMyX2FkZHIpOworCWNyYzMy X2RhdGFfbGVuID0gZGV2X3NpemUgLSBjcmMzMl9kYXRhX29mZnNldDsKKwlkYXRhX2xlbiA9IGRl dl9zaXplIC0gZGF0YV9vZmZzZXQ7CisKKwljYWxjID0gY3JjMzIofjAsIGJ1ZiArIGNyYzMyX2Rh dGFfb2Zmc2V0LCBjcmMzMl9kYXRhX2xlbikgXiB+MEw7CisJaWYgKGNhbGMgIT0gY3JjMzIpIHsK KwkJZGV2X2VycihkZXYsICJJbnZhbGlkIGNhbGN1bGF0ZWQgQ1JDMzI6IDB4JTA4eCAoZXhwZWN0 ZWQ6IDB4JTA4eClcbiIsIGNhbGMsIGNyYzMyKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBl cnJfa2ZyZWU7CisJfQorCisJYnVmW2Rldl9zaXplIC0gMV0gPSAnXDAnOworCWVyciA9IHVfYm9v dF9lbnZfcGFyc2VfY2VsbHMoZGV2LCBudm1lbSwgYnVmLCBkYXRhX29mZnNldCwgZGF0YV9sZW4p OworCitlcnJfa2ZyZWU6CisJa2ZyZWUoYnVmKTsKK2Vycl9vdXQ6CisJcmV0dXJuIGVycjsKK30K K0VYUE9SVF9TWU1CT0xfR1BMKHVfYm9vdF9lbnZfcGFyc2UpOworCitzdGF0aWMgaW50IHVfYm9v dF9lbnZfYWRkX2NlbGxzKHN0cnVjdCBudm1lbV9sYXlvdXQgKmxheW91dCkKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmbGF5b3V0LT5kZXY7CisJZW51bSB1X2Jvb3RfZW52X2Zvcm1hdCBmb3Jt YXQ7CisKKwlmb3JtYXQgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwor CisJcmV0dXJuIHVfYm9vdF9lbnZfcGFyc2UoZGV2LCBsYXlvdXQtPm52bWVtLCBmb3JtYXQpOwor fQorCitzdGF0aWMgaW50IHVfYm9vdF9lbnZfcHJvYmUoc3RydWN0IG52bWVtX2xheW91dCAqbGF5 b3V0KQoreworCWxheW91dC0+YWRkX2NlbGxzID0gdV9ib290X2Vudl9hZGRfY2VsbHM7CisKKwly ZXR1cm4gbnZtZW1fbGF5b3V0X3JlZ2lzdGVyKGxheW91dCk7Cit9CisKK3N0YXRpYyB2b2lkIHVf Ym9vdF9lbnZfcmVtb3ZlKHN0cnVjdCBudm1lbV9sYXlvdXQgKmxheW91dCkKK3sKKwludm1lbV9s YXlvdXRfdW5yZWdpc3RlcihsYXlvdXQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCB1X2Jvb3RfZW52X29mX21hdGNoX3RhYmxlW10gPSB7CisJeyAuY29tcGF0aWJsZSA9 ICJ1LWJvb3QsZW52LWxheW91dCIsIC5kYXRhID0gKHZvaWQgKilVX0JPT1RfRk9STUFUX1NJTkdM RSwgfSwKKwl7IC5jb21wYXRpYmxlID0gInUtYm9vdCxlbnYtcmVkdW5kYW50LWJvb2wtbGF5b3V0 IiwgLmRhdGEgPSAodm9pZCAqKVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULCB9LAorCXsgLmNvbXBh dGlibGUgPSAidS1ib290LGVudi1yZWR1bmRhbnQtY291bnQtbGF5b3V0IiwgLmRhdGEgPSAodm9p ZCAqKVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxl bnYtbGF5b3V0IiwgLmRhdGEgPSAodm9pZCAqKVVfQk9PVF9GT1JNQVRfQlJPQURDT00sIH0sCisJ e30sCit9OworCitzdGF0aWMgc3RydWN0IG52bWVtX2xheW91dF9kcml2ZXIgdV9ib290X2Vudl9s YXlvdXQgPSB7CisJLmRyaXZlciA9IHsKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJCS5uYW1l ID0gInUtYm9vdC1lbnYtbGF5b3V0IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gdV9ib290X2Vudl9v Zl9tYXRjaF90YWJsZSwKKwl9LAorCS5wcm9iZSA9IHVfYm9vdF9lbnZfcHJvYmUsCisJLnJlbW92 ZSA9IHVfYm9vdF9lbnZfcmVtb3ZlLAorfTsKK21vZHVsZV9udm1lbV9sYXlvdXRfZHJpdmVyKHVf Ym9vdF9lbnZfbGF5b3V0KTsKKworTU9EVUxFX0FVVEhPUigiUmFmYcWCIE1pxYJlY2tpIik7CitN T0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB1X2Jvb3RfZW52 X29mX21hdGNoX3RhYmxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy91LWJv b3QtZW52LmggYi9kcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290LWVudi5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGQ1ZjI4MGFjMDQ3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9udm1lbS9sYXlvdXRzL3UtYm9vdC1lbnYuaApAQCAtMCwwICsxLDE1IEBA CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisKKyNpZm5kZWYg X0xJTlVYX05WTUVNX0xBWU9VVFNfVV9CT09UX0VOVl9ICisjZGVmaW5lIF9MSU5VWF9OVk1FTV9M QVlPVVRTX1VfQk9PVF9FTlZfSAorCitlbnVtIHVfYm9vdF9lbnZfZm9ybWF0IHsKKwlVX0JPT1Rf Rk9STUFUX1NJTkdMRSwKKwlVX0JPT1RfRk9STUFUX1JFRFVOREFOVCwKKwlVX0JPT1RfRk9STUFU X0JST0FEQ09NLAorfTsKKworaW50IHVfYm9vdF9lbnZfcGFyc2Uoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSwKKwkJICAgICBlbnVtIHVfYm9vdF9lbnZfZm9y bWF0IGZvcm1hdCk7CisKKyNlbmRpZiAgLyogaWZuZGVmIF9MSU5VWF9OVk1FTV9MQVlPVVRTX1Vf Qk9PVF9FTlZfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS91LWJvb3QtZW52LmMgYi9k cml2ZXJzL252bWVtL3UtYm9vdC1lbnYuYwppbmRleCBiZWZiYWIxNTZjZGEuLjM4NmIyYjI1NWMz MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS91LWJvb3QtZW52LmMKKysrIGIvZHJpdmVycy9u dm1lbS91LWJvb3QtZW52LmMKQEAgLTMsMjMgKzMsMTUgQEAKICAqIENvcHlyaWdodCAoQykgMjAy MiBSYWZhxYIgTWnFgmVja2kgPHJhZmFsQG1pbGVja2kucGw+CiAgKi8KIAotI2luY2x1ZGUgPGxp bnV4L2NyYzMyLmg+Ci0jaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KLSNpbmNsdWRlIDxs aW51eC9pZl9ldGhlci5oPgogI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KLSNpbmNs dWRlIDxsaW51eC9udm1lbS1jb25zdW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L252bWVtLXByb3Zp ZGVyLmg+CiAjaW5jbHVkZSA8bGludXgvb2YuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAKLWVudW0gdV9ib290X2Vudl9mb3Jt YXQgewotCVVfQk9PVF9GT1JNQVRfU0lOR0xFLAotCVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULAot CVVfQk9PVF9GT1JNQVRfQlJPQURDT00sCi19OworI2luY2x1ZGUgImxheW91dHMvdS1ib290LWVu di5oIgogCiBzdHJ1Y3QgdV9ib290X2VudiB7CiAJc3RydWN0IGRldmljZSAqZGV2OwpAQCAtMjks MjQgKzIxLDYgQEAgc3RydWN0IHVfYm9vdF9lbnYgewogCXN0cnVjdCBtdGRfaW5mbyAqbXRkOwog fTsKIAotc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlIHsKLQlfX2xlMzIgY3JjMzI7Ci0J dWludDhfdCBkYXRhW107Ci19IF9fcGFja2VkOwotCi1zdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9y ZWR1bmRhbnQgewotCV9fbGUzMiBjcmMzMjsKLQl1OCBtYXJrOwotCXVpbnQ4X3QgZGF0YVtdOwot fSBfX3BhY2tlZDsKLQotc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfYnJvYWRjb20gewotCV9fbGUz MiBtYWdpYzsKLQlfX2xlMzIgbGVuOwotCV9fbGUzMiBjcmMzMjsKLQlERUNMQVJFX0ZMRVhfQVJS QVkodWludDhfdCwgZGF0YSk7Ci19IF9fcGFja2VkOwotCiBzdGF0aWMgaW50IHVfYm9vdF9lbnZf cmVhZCh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICp2YWwsCiAJCQkg ICBzaXplX3QgYnl0ZXMpCiB7CkBAIC02OSwxMzQgKzQzLDYgQEAgc3RhdGljIGludCB1X2Jvb3Rf ZW52X3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqdmFsLAog CXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHVfYm9vdF9lbnZfcmVhZF9wb3N0X3Byb2Nlc3Nf ZXRoYWRkcih2b2lkICpjb250ZXh0LCBjb25zdCBjaGFyICppZCwgaW50IGluZGV4LAotCQkJCQkJ dW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqYnVmLCBzaXplX3QgYnl0ZXMpCi17Ci0JdTggbWFj W0VUSF9BTEVOXTsKLQotCWlmIChieXRlcyAhPSAzICogRVRIX0FMRU4gLSAxKQotCQlyZXR1cm4g LUVJTlZBTDsKLQotCWlmICghbWFjX3B0b24oYnVmLCBtYWMpKQotCQlyZXR1cm4gLUVJTlZBTDsK LQotCWlmIChpbmRleCkKLQkJZXRoX2FkZHJfYWRkKG1hYywgaW5kZXgpOwotCi0JZXRoZXJfYWRk cl9jb3B5KGJ1ZiwgbWFjKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHVfYm9vdF9l bnZfYWRkX2NlbGxzKHN0cnVjdCB1X2Jvb3RfZW52ICpwcml2LCB1aW50OF90ICpidWYsCi0JCQkJ c2l6ZV90IGRhdGFfb2Zmc2V0LCBzaXplX3QgZGF0YV9sZW4pCi17Ci0Jc3RydWN0IG52bWVtX2Rl dmljZSAqbnZtZW0gPSBwcml2LT5udm1lbTsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5k ZXY7Ci0JY2hhciAqZGF0YSA9IGJ1ZiArIGRhdGFfb2Zmc2V0OwotCWNoYXIgKnZhciwgKnZhbHVl LCAqZXE7Ci0KLQlmb3IgKHZhciA9IGRhdGE7Ci0JICAgICB2YXIgPCBkYXRhICsgZGF0YV9sZW4g JiYgKnZhcjsKLQkgICAgIHZhciA9IHZhbHVlICsgc3RybGVuKHZhbHVlKSArIDEpIHsKLQkJc3Ry dWN0IG52bWVtX2NlbGxfaW5mbyBpbmZvID0ge307Ci0KLQkJZXEgPSBzdHJjaHIodmFyLCAnPScp OwotCQlpZiAoIWVxKQotCQkJYnJlYWs7Ci0JCSplcSA9ICdcMCc7Ci0JCXZhbHVlID0gZXEgKyAx OwotCi0JCWluZm8ubmFtZSA9IGRldm1fa3N0cmR1cChkZXYsIHZhciwgR0ZQX0tFUk5FTCk7Ci0J CWlmICghaW5mby5uYW1lKQotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCWluZm8ub2Zmc2V0ID0gZGF0 YV9vZmZzZXQgKyB2YWx1ZSAtIGRhdGE7Ci0JCWluZm8uYnl0ZXMgPSBzdHJsZW4odmFsdWUpOwot CQlpbmZvLm5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5vZl9ub2RlLCBpbmZvLm5hbWUp OwotCQlpZiAoIXN0cmNtcCh2YXIsICJldGhhZGRyIikpIHsKLQkJCWluZm8ucmF3X2xlbiA9IHN0 cmxlbih2YWx1ZSk7Ci0JCQlpbmZvLmJ5dGVzID0gRVRIX0FMRU47Ci0JCQlpbmZvLnJlYWRfcG9z dF9wcm9jZXNzID0gdV9ib290X2Vudl9yZWFkX3Bvc3RfcHJvY2Vzc19ldGhhZGRyOwotCQl9Ci0K LQkJbnZtZW1fYWRkX29uZV9jZWxsKG52bWVtLCAmaW5mbyk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19 Ci0KLXN0YXRpYyBpbnQgdV9ib290X2Vudl9wYXJzZShzdHJ1Y3QgdV9ib290X2VudiAqcHJpdikK LXsKLQlzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSA9IHByaXYtPm52bWVtOwotCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHByaXYtPmRldjsKLQlzaXplX3QgY3JjMzJfZGF0YV9vZmZzZXQ7Ci0Jc2l6 ZV90IGNyYzMyX2RhdGFfbGVuOwotCXNpemVfdCBjcmMzMl9vZmZzZXQ7Ci0JX19sZTMyICpjcmMz Ml9hZGRyOwotCXNpemVfdCBkYXRhX29mZnNldDsKLQlzaXplX3QgZGF0YV9sZW47Ci0Jc2l6ZV90 IGRldl9zaXplOwotCXVpbnQzMl90IGNyYzMyOwotCXVpbnQzMl90IGNhbGM7Ci0JdWludDhfdCAq YnVmOwotCWludCBieXRlczsKLQlpbnQgZXJyOwotCi0JZGV2X3NpemUgPSBudm1lbV9kZXZfc2l6 ZShudm1lbSk7Ci0KLQlidWYgPSBremFsbG9jKGRldl9zaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAo IWJ1ZikgewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIGVycl9vdXQ7Ci0JfQotCi0JYnl0ZXMg PSBudm1lbV9kZXZpY2VfcmVhZChudm1lbSwgMCwgZGV2X3NpemUsIGJ1Zik7Ci0JaWYgKGJ5dGVz IDwgMCkgewotCQllcnIgPSBieXRlczsKLQkJZ290byBlcnJfa2ZyZWU7Ci0JfSBlbHNlIGlmIChi eXRlcyAhPSBkZXZfc2l6ZSkgewotCQllcnIgPSAtRUlPOwotCQlnb3RvIGVycl9rZnJlZTsKLQl9 Ci0KLQlzd2l0Y2ggKHByaXYtPmZvcm1hdCkgewotCWNhc2UgVV9CT09UX0ZPUk1BVF9TSU5HTEU6 Ci0JCWNyYzMyX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3Npbmds ZSwgY3JjMzIpOwotCQljcmMzMl9kYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3Rf ZW52X2ltYWdlX3NpbmdsZSwgZGF0YSk7Ci0JCWRhdGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0 IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlLCBkYXRhKTsKLQkJYnJlYWs7Ci0JY2FzZSBVX0JPT1Rf Rk9STUFUX1JFRFVOREFOVDoKLQkJY3JjMzJfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9v dF9lbnZfaW1hZ2VfcmVkdW5kYW50LCBjcmMzMik7Ci0JCWNyYzMyX2RhdGFfb2Zmc2V0ID0gb2Zm c2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfcmVkdW5kYW50LCBkYXRhKTsKLQkJZGF0YV9v ZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9yZWR1bmRhbnQsIGRhdGEp OwotCQlicmVhazsKLQljYXNlIFVfQk9PVF9GT1JNQVRfQlJPQURDT006Ci0JCWNyYzMyX29mZnNl dCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX2Jyb2FkY29tLCBjcmMzMik7Ci0J CWNyYzMyX2RhdGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfYnJv YWRjb20sIGRhdGEpOwotCQlkYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52 X2ltYWdlX2Jyb2FkY29tLCBkYXRhKTsKLQkJYnJlYWs7Ci0JfQotCWNyYzMyX2FkZHIgPSAoX19s ZTMyICopKGJ1ZiArIGNyYzMyX29mZnNldCk7Ci0JY3JjMzIgPSBsZTMyX3RvX2NwdSgqY3JjMzJf YWRkcik7Ci0JY3JjMzJfZGF0YV9sZW4gPSBkZXZfc2l6ZSAtIGNyYzMyX2RhdGFfb2Zmc2V0Owot CWRhdGFfbGVuID0gZGV2X3NpemUgLSBkYXRhX29mZnNldDsKLQotCWNhbGMgPSBjcmMzMih+MCwg YnVmICsgY3JjMzJfZGF0YV9vZmZzZXQsIGNyYzMyX2RhdGFfbGVuKSBeIH4wTDsKLQlpZiAoY2Fs YyAhPSBjcmMzMikgewotCQlkZXZfZXJyKGRldiwgIkludmFsaWQgY2FsY3VsYXRlZCBDUkMzMjog MHglMDh4IChleHBlY3RlZDogMHglMDh4KVxuIiwgY2FsYywgY3JjMzIpOwotCQllcnIgPSAtRUlO VkFMOwotCQlnb3RvIGVycl9rZnJlZTsKLQl9Ci0KLQlidWZbZGV2X3NpemUgLSAxXSA9ICdcMCc7 Ci0JZXJyID0gdV9ib290X2Vudl9hZGRfY2VsbHMocHJpdiwgYnVmLCBkYXRhX29mZnNldCwgZGF0 YV9sZW4pOwotCi1lcnJfa2ZyZWU6Ci0Ja2ZyZWUoYnVmKTsKLWVycl9vdXQ6Ci0JcmV0dXJuIGVy cjsKLX0KLQogc3RhdGljIGludCB1X2Jvb3RfZW52X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiB7CiAJc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcgPSB7CkBAIC0yMjgsNyAr NzQsNyBAQCBzdGF0aWMgaW50IHVfYm9vdF9lbnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAlpZiAoSVNfRVJSKHByaXYtPm52bWVtKSkKIAkJcmV0dXJuIFBUUl9FUlIocHJp di0+bnZtZW0pOwogCi0JcmV0dXJuIHVfYm9vdF9lbnZfcGFyc2UocHJpdik7CisJcmV0dXJuIHVf Ym9vdF9lbnZfcGFyc2UoZGV2LCBwcml2LT5udm1lbSwgcHJpdi0+Zm9ybWF0KTsKIH0KIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdV9ib290X2Vudl9vZl9tYXRjaF90YWJsZVtd ID0gewotLSAKMi4zNS4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=