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 3346AC5479D for ; Wed, 11 Jan 2023 07:32:48 +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=3ajKjOz7NV0JS7AUkJVWurHVrAuww514kVdH8QoUNuM=; b=EXrFSipmDYEfRi wASrOOeLXrPJbTmQ6riVoDR5bWwzFA7y6eXkFsVWy6F11CyPteaJRiVXK1Ea3HD49AgBEIUVkpeAK pjg1qg1JuntuSkFmJDooCN621Ww5ndnpkg74Eki05mUvNP29Qf4di+RUckRhQUnTFp2uYtft6auwz nTdwp3G90Q1H5KNOWO8SsL/ge34gFjvMRwPfvC+R/ZUPvurR2U+/Z+I4wL3Aog5lIRjy75tw+5oN6 086VPGzAnKlHrEL1KG/pUvuAAhElQcYPA9DWOop1AF+0/L1qpnmuyoS1clmBVJoqK9QJk3fvvaZQJ u2h8msGfM9Q6m5IKHH+Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFVaN-00A3Ee-Ix; Wed, 11 Jan 2023 07:31:47 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFVZv-00A32U-Cj for linux-arm-kernel@lists.infradead.org; Wed, 11 Jan 2023 07:31:21 +0000 Received: by mail-ed1-x535.google.com with SMTP id i9so21101310edj.4 for ; Tue, 10 Jan 2023 23:31:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=fmyqQiyVRmFOYXu2QDS2W36W/FBaUp726XptlAMZsWw=; b=oVf3RRoSlbr8Cd0ABVNjtfIwmsZ2EErGn4MG6Ucw4xuj1MCSuT3sZVpKeBD6nmnu+y IIra5RZNQD/VCJQQfd6kRCqxzwYM/AilfznRTHCzS5wFUuWiYM7otaKPKdeqjRGXfdEW 1aEF2Z/locbkDpwmgMrS7bOWug/VKcZTbNHKSHR7XPVy+hWSo0dRylUPR/1MOPI3PEwB A7mmjTdVPS17RKTmPbcwdMmwRqa4wb0exfgIl7L8m1UdccMoi5Z5N096tII3/HNA4ig0 oSSjK13tQCR0DlKPe/mxMYUz+j8lUA7gq6ACIv3f9ItfOI6o6E5t0ijByOdLHkr0iWbt AATQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=fmyqQiyVRmFOYXu2QDS2W36W/FBaUp726XptlAMZsWw=; b=r6PGVxFhbNyqjfsNny5eebrpvShqqKYDgK4FyriXh3cM8hwzAKxumGMYuAoINiq4Pb YYsii80ja4iCGWPPU1fBnE+NYPSkLzJjt7kbxp0Z9Te/3M0C9Ld0rwP0tmge9rq+Hl+N 1AVlSYeeftMsELZsxh+CS7IobDHqtl789jMENCE1n6W/Rae4xv9TWAelEG48wtYDQSso OPlXZLkOYQ7oyQ4piAyiqJWCT/yQljiF1QPu+wHLCzJXeTX0LJdZtMQvR1QmQScZO1Kv PFT8BYsJJgH1GRkhohOUY8/vu4A5ZQGdHNLtl03NrqZQ0PhvNBR8iHmLpMxuteNAPTti 3BNg== X-Gm-Message-State: AFqh2ko1a9smdRv8ViprHvqhRXVz9M2SHxz3lS4vRNvrJe1jUu2wZyPr Z6knlz2fFFJBghyunZrHpUs= X-Google-Smtp-Source: AMrXdXuGmRbZvnVQ8DhlzsbiHp+060l1H1tyd5DOMLprVxRlY9bukgFPmLX8RKVkQogijjTmYogOTQ== X-Received: by 2002:a05:6402:3212:b0:499:8849:5fb0 with SMTP id g18-20020a056402321200b0049988495fb0mr13335791eda.30.1673422278763; Tue, 10 Jan 2023 23:31:18 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id ed6-20020a056402294600b00499e5659988sm593193edb.68.2023.01.10.23.31.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jan 2023 23:31:18 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski Cc: Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Miquel Raynal , Michael Walle , 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 V2 4/6] nvmem: u-boot-env: convert to layout driver Date: Wed, 11 Jan 2023 08:31:00 +0100 Message-Id: <20230111073102.8147-4-zajec5@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230111073102.8147-1-zajec5@gmail.com> References: <20230111073102.8147-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230110_233119_522577_956169C5 X-CRM114-Status: GOOD ( 33.58 ) 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 RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKVS1Cb290IGVudmlyb25t ZW50IHZhcmlhYmxlcyBjYW4gYmUgZm91bmQgb24gdmFyaW91cyBOVk1FTSBkZXZpY2VzIChub3QK anVzdCBNVEQpIHNvIGNvbnZlcnQgdGhpcyBkcml2ZXIgdG8gYSBnZW5lcmljIGxheW91dCBvbmUu CgpUaGlzIHdheSAtIHRoYW5rcyB0byB1c2luZyBOVk1FTSBnZW5lcmljIEFQSSAtIHRoaXMgZHJp dmVyIGNhbiBiZSByZXVzZWQKaW4gb3RoZXIgc2NlbmFyaW9zLgoKRm9yIGJhY2t3YXJkIERUIGNv bXBhdGliaWxpdHkgd2UgbmVlZCB0byBzdXBwb3J0IHRoZSBvbGQgY29tcGF0aWJsZQpicmluZGlu ZyBzdHJpbmcgZm9yIG5vdy4gTHVja2lseSBpdCdzIGp1c3QgYSBvbmUgbGluZSBvZiBjb2RlLgoK U2lnbmVkLW9mZi1ieTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgotLS0KIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvbXRkL210 ZGNvcmUuYyAgICAgICAgICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvbnZtZW0vS2NvbmZpZyAgICAg ICAgICAgICAgfCAgMTQgKy0KIGRyaXZlcnMvbnZtZW0vTWFrZWZpbGUgICAgICAgICAgICAgfCAg IDIgLQogZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWcgICAgICB8ICAxMCArKwogZHJpdmVy cy9udm1lbS9sYXlvdXRzL01ha2VmaWxlICAgICB8ICAgMSArCiBkcml2ZXJzL252bWVtL2xheW91 dHMvdS1ib290LWVudi5jIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbnZt ZW0vdS1ib290LWVudi5jICAgICAgICAgfCAyMzMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDggZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDI0NiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290LWVudi5jCiBk ZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9udm1lbS91LWJvb3QtZW52LmMKCmRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDJlMTNlZTg3NWM3Ny4uYWNlMjkwODFj NjEzIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMjExMzcs NyArMjExMzcsNyBAQCBVLUJPT1QgRU5WSVJPTk1FTlQgVkFSSUFCTEVTCiBNOglSYWZhxYIgTWnF gmVja2kgPHJhZmFsQG1pbGVja2kucGw+CiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vbGF5b3V0cy91LWJvb3QsZW52LnlhbWwKLUY6CWRy aXZlcnMvbnZtZW0vdS1ib290LWVudi5jCitGOglkcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290 LWVudi5jCiAKIFVBQ0NFIEFDQ0VMRVJBVE9SIEZSQU1FV09SSwogTToJWmhhbmdmZWkgR2FvIDx6 aGFuZ2ZlaS5nYW9AbGluYXJvLm9yZz4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210ZGNvcmUu YyBiL2RyaXZlcnMvbXRkL210ZGNvcmUuYwppbmRleCAwZmVhY2I5ZmJkYWMuLjYyMWUwYjg3Yjc4 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbXRkY29yZS5jCisrKyBiL2RyaXZlcnMvbXRkL210 ZGNvcmUuYwpAQCAtNTE4LDYgKzUxOCwxMSBAQCBzdGF0aWMgaW50IG10ZF9udm1lbV9hZGQoc3Ry dWN0IG10ZF9pbmZvICptdGQpCiB7CiAJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gbXRkX2dl dF9vZl9ub2RlKG10ZCk7CiAJc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcgPSB7fTsKKwlib29s IHVzZV9kZXZfb2Zfbm9kZSA9IGZhbHNlOworCisJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxl KG5vZGUsICJudm1lbS1jZWxscyIpIHx8CisJICAgIChJU19FTkFCTEVEKENPTkZJR19OVk1FTV9V X0JPT1RfRU5WKSAmJiBvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShub2RlLCAiYnJjbSxlbnYiKSkp CisJCXVzZV9kZXZfb2Zfbm9kZSA9IHRydWU7CiAKIAljb25maWcuaWQgPSAtMTsKIAljb25maWcu ZGV2ID0gJm10ZC0+ZGV2OwpAQCAtNTMwLDcgKzUzNSw3IEBAIHN0YXRpYyBpbnQgbXRkX252bWVt X2FkZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKIAljb25maWcucmVhZF9vbmx5ID0gdHJ1ZTsKIAlj b25maWcucm9vdF9vbmx5ID0gdHJ1ZTsKIAljb25maWcuaWdub3JlX3dwID0gdHJ1ZTsKLQljb25m aWcubm9fb2Zfbm9kZSA9ICFvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShub2RlLCAibnZtZW0tY2Vs bHMiKTsKKwljb25maWcubm9fb2Zfbm9kZSA9ICF1c2VfZGV2X29mX25vZGU7CiAJY29uZmlnLnBy aXYgPSBtdGQ7CiAKIAltdGQtPm52bWVtID0gbnZtZW1fcmVnaXN0ZXIoJmNvbmZpZyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL252bWVtL0tjb25maWcgYi9kcml2ZXJzL252bWVtL0tjb25maWcKaW5k ZXggMGUxMGI1YjA5NGI5Li45ODA3MzRiYThkZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZW0v S2NvbmZpZworKysgYi9kcml2ZXJzL252bWVtL0tjb25maWcKQEAgLTMyNywxNyArMzI3LDEzIEBA IGNvbmZpZyBOVk1FTV9TVU5YSV9TSUQKIAkgIHdpbGwgYmUgY2FsbGVkIG52bWVtX3N1bnhpX3Np ZC4KIAogY29uZmlnIE5WTUVNX1VfQk9PVF9FTlYKLQl0cmlzdGF0ZSAiVS1Cb290IGVudmlyb25t ZW50IHZhcmlhYmxlcyBzdXBwb3J0IgorCWJvb2wgIlUtQm9vdCBlbnZpcm9ubWVudCB2YXJpYWJs ZXMgZGVwcmVjYXRlZCBiaW5kaW5nIHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBPRiAmJiBNVEQKLQlz ZWxlY3QgQ1JDMzIKKwlzZWxlY3QgTlZNRU1fTEFZT1VUX1VfQk9PVF9FTlYKIAloZWxwCi0JICBV LUJvb3Qgc3RvcmVzIGl0cyBzZXR1cCBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFRoaXMgZHJp dmVyIGFkZHMKLQkgIHN1cHBvcnQgZm9yIHZlcmlmeWluZyAmIGV4cG9ydGluZyBzdWNoIGRhdGEu IEl0IGFsc28gZXhwb3NlcyB2YXJpYWJsZXMKLQkgIGFzIE5WTUVNIGNlbGxzIHNvIHRoZXkgY2Fu IGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgZHJpdmVycy4KLQotCSAgQ3VycmVudGx5IHRoaXMgZHJp dmVycyB3b3JrcyBvbmx5IHdpdGggZW52IHZhcmlhYmxlcyBvbiB0b3Agb2YgTVRELgotCi0JICBJ ZiBjb21waWxlZCBhcyBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgbnZtZW1fdS1ib290LWVudi4K KwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgZGVwcmVjYXRlZCBEVCBiaW5kaW5n IGZvciBVLUJvb3QKKwkgIGVudmlyb25tZW50IHZhcmlhYmxlcy4gSXQgd2FzIHVzZWQgYnkgRFQg ZmlsZXMgYmVmb3JlIGludHJvZHVjaW5nCisJICBudm1lbS1sYXlvdXQgbm9kZSBiYXNlZCBzeW50 YXguCiAKIGNvbmZpZyBOVk1FTV9VTklQSElFUl9FRlVTRQogCXRyaXN0YXRlICJVbmlQaGllciBT b0NzIGVGdXNlIHN1cHBvcnQiCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWVtL01ha2VmaWxlIGIv ZHJpdmVycy9udm1lbS9NYWtlZmlsZQppbmRleCA0Y2Y4N2VmNmMyNGQuLjNiODI3Y2U5NmY2ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL252bWVtL01h a2VmaWxlCkBAIC02Niw4ICs2Niw2IEBAIG9iai0kKENPTkZJR19OVk1FTV9TVU5QTFVTX09DT1RQ KQkrPSBudm1lbV9zdW5wbHVzX29jb3RwLm8KIG52bWVtX3N1bnBsdXNfb2NvdHAteQkJCTo9IHN1 bnBsdXMtb2NvdHAubwogb2JqLSQoQ09ORklHX05WTUVNX1NVTlhJX1NJRCkJCSs9IG52bWVtX3N1 bnhpX3NpZC5vCiBudm1lbV9zdW54aV9zaWQteQkJCTo9IHN1bnhpX3NpZC5vCi1vYmotJChDT05G SUdfTlZNRU1fVV9CT09UX0VOVikJCSs9IG52bWVtX3UtYm9vdC1lbnYubwotbnZtZW1fdS1ib290 LWVudi15CQkJOj0gdS1ib290LWVudi5vCiBvYmotJChDT05GSUdfTlZNRU1fVU5JUEhJRVJfRUZV U0UpCSs9IG52bWVtLXVuaXBoaWVyLWVmdXNlLm8KIG52bWVtLXVuaXBoaWVyLWVmdXNlLXkJCQk6 PSB1bmlwaGllci1lZnVzZS5vCiBvYmotJChDT05GSUdfTlZNRU1fVkY2MTBfT0NPVFApCQkrPSBu dm1lbS12ZjYxMC1vY290cC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWVtL2xheW91dHMvS2Nv bmZpZyBiL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnCmluZGV4IDlhZDUwNDc0Y2I3Ny4u OGEzOGM1MTQ5NDNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZwor KysgYi9kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZwpAQCAtMjAsNCArMjAsMTQgQEAgY29u ZmlnIE5WTUVNX0xBWU9VVF9PTklFX1RMVgogCiAJICBJZiB1bnN1cmUsIHNheSBOLgogCitjb25m aWcgTlZNRU1fTEFZT1VUX1VfQk9PVF9FTlYKKwlib29sICJVLUJvb3QgZW52aXJvbm1lbnQgdmFy aWFibGVzIHN1cHBvcnQiCisJc2VsZWN0IENSQzMyCisJaGVscAorCSAgVS1Cb290IHN0b3JlcyBp dHMgc2V0dXAgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzIGRyaXZlciBhZGRzCisJICBz dXBwb3J0IGZvciB2ZXJpZnlpbmcgJiBleHBvcnRpbmcgc3VjaCBkYXRhLiBJdCBhbHNvIGV4cG9z ZXMgdmFyaWFibGVzCisJICBhcyBOVk1FTSBjZWxscyBzbyB0aGV5IGNhbiBiZSByZWZlcmVuY2Vk IGJ5IG90aGVyIGRyaXZlcnMuCisKKwkgIElmIHVuc3VyZSwgc2F5IE4uCisKIGVuZG1lbnUKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy9NYWtlZmlsZSBiL2RyaXZlcnMvbnZtZW0v bGF5b3V0cy9NYWtlZmlsZQppbmRleCAyOTc0YmQ3ZDMzZWQuLjQ5NDBjOWRiMDY2NSAxMDA2NDQK LS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbnZtZW0v bGF5b3V0cy9NYWtlZmlsZQpAQCAtNSwzICs1LDQgQEAKIAogb2JqLSQoQ09ORklHX05WTUVNX0xB WU9VVF9TTDI4X1ZQRCkgKz0gc2wyOHZwZC5vCiBvYmotJChDT05GSUdfTlZNRU1fTEFZT1VUX09O SUVfVExWKSArPSBvbmllLXRsdi5vCitvYmotJChDT05GSUdfTlZNRU1fTEFZT1VUX1VfQk9PVF9F TlYpICs9IHUtYm9vdC1lbnYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzL3Ut Ym9vdC1lbnYuYyBiL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy91LWJvb3QtZW52LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NWMzMTQ1NTM5NTIKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMvdS1ib290LWVudi5jCkBAIC0wLDAgKzEsMTc2 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogQ29w eXJpZ2h0IChDKSAyMDIyIFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFi bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9udm1lbS1j b25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L252bWVtLXByb3ZpZGVyLmg+CisjaW5jbHVkZSA8 bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorCitlbnVtIHVfYm9vdF9lbnZfZm9ybWF0IHsKKwlVX0JP T1RfRk9STUFUX1NJTkdMRSwKKwlVX0JPT1RfRk9STUFUX1JFRFVOREFOVCwKKwlVX0JPT1RfRk9S TUFUX0JST0FEQ09NLAorfTsKKworc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlIHsKKwlf X2xlMzIgY3JjMzI7CisJdWludDhfdCBkYXRhW107Cit9IF9fcGFja2VkOworCitzdHJ1Y3QgdV9i b290X2Vudl9pbWFnZV9yZWR1bmRhbnQgeworCV9fbGUzMiBjcmMzMjsKKwl1OCBtYXJrOworCXVp bnQ4X3QgZGF0YVtdOworfSBfX3BhY2tlZDsKKworc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfYnJv YWRjb20geworCV9fbGUzMiBtYWdpYzsKKwlfX2xlMzIgbGVuOworCV9fbGUzMiBjcmMzMjsKKwl1 aW50OF90IGRhdGFbXTsKK30gX19wYWNrZWQ7CisKK3N0YXRpYyBpbnQgdV9ib290X2Vudl9wYXJz ZV9kYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sIHVp bnQ4X3QgKmJ1ZiwKKwkJCQkgc2l6ZV90IGRhdGFfb2Zmc2V0LCBzaXplX3QgZGF0YV9sZW4pCit7 CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwljaGFyICpkYXRhID0gYnVmICsgZGF0YV9vZmZz ZXQ7CisJY2hhciAqdmFyLCAqdmFsdWUsICplcTsKKwlpbnQgZXJyID0gMDsKKworCW5wID0gb2Zf bnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIobnZtZW0pOworCWlmICghbnApCisJCXJldHVybiAt RU5PRU5UOworCisJZm9yICh2YXIgPSBkYXRhOworCSAgICAgdmFyIDwgZGF0YSArIGRhdGFfbGVu ICYmICp2YXI7CisJICAgICB2YXIgPSB2YWx1ZSArIHN0cmxlbih2YWx1ZSkgKyAxKSB7CisJCXN0 cnVjdCBudm1lbV9jZWxsX2luZm8gaW5mbyA9IHt9OworCisJCWVxID0gc3RyY2hyKHZhciwgJz0n KTsKKwkJaWYgKCFlcSkKKwkJCWJyZWFrOworCQkqZXEgPSAnXDAnOworCQl2YWx1ZSA9IGVxICsg MTsKKworCQlpbmZvLm5hbWUgPSBkZXZtX2tzdHJkdXAoZGV2LCB2YXIsIEdGUF9LRVJORUwpOwor CQlpZiAoIWluZm8ubmFtZSkgeworCQkJZXJyID0gLUVOT01FTTsKKwkJCWJyZWFrOworCQl9CisJ CWluZm8ub2Zmc2V0ID0gZGF0YV9vZmZzZXQgKyB2YWx1ZSAtIGRhdGE7CisJCWluZm8uYnl0ZXMg PSBzdHJsZW4odmFsdWUpOworCQlpbmZvLm5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIGlu Zm8ubmFtZSk7CisKKwkJZXJyID0gbnZtZW1fYWRkX29uZV9jZWxsKG52bWVtLCAmaW5mbyk7CisJ CWlmIChlcnIpIHsKKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBcIiVzXCIgY2VsbDog JWRcbiIsIGluZm8ubmFtZSwgZXJyKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJb2Zfbm9kZV9w dXQobnApOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCB1X2Jvb3RfZW52X2FkZF9j ZWxscyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtLAorCQkJ CXN0cnVjdCBudm1lbV9sYXlvdXQgKmxheW91dCkKK3sKKwllbnVtIHVfYm9vdF9lbnZfZm9ybWF0 IGZvcm1hdDsKKwlzaXplX3QgY3JjMzJfZGF0YV9vZmZzZXQ7CisJc2l6ZV90IGNyYzMyX2RhdGFf bGVuOworCXNpemVfdCBjcmMzMl9vZmZzZXQ7CisJc2l6ZV90IGRhdGFfb2Zmc2V0OworCXNpemVf dCBkYXRhX2xlbjsKKwlzaXplX3QgZGV2X3NpemU7CisJdWludDMyX3QgY3JjMzI7CisJdWludDMy X3QgY2FsYzsKKwlzaXplX3QgYnl0ZXM7CisJdWludDhfdCAqYnVmOworCWludCBlcnI7CisKKwlm b3JtYXQgPSAodWludHB0cl90KW52bWVtX2xheW91dF9nZXRfbWF0Y2hfZGF0YShudm1lbSwgbGF5 b3V0KTsKKworCWRldl9zaXplID0gbnZtZW1fZGV2X3NpemUobnZtZW0pOworCisJYnVmID0ga2Nh bGxvYygxLCBkZXZfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWYpIHsKKwkJZXJyID0gLUVO T01FTTsKKwkJZ290byBlcnJfb3V0OworCX0KKworCWJ5dGVzID0gbnZtZW1fZGV2aWNlX3JlYWQo bnZtZW0sIDAsIGRldl9zaXplLCBidWYpOworCWlmIChieXRlcyA8IDAgfHwgYnl0ZXMgIT0gZGV2 X3NpemUpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVhZCBmcm9tIE5WTUVNIGRldmlj ZTogJXpkXG4iLCBieXRlcyk7CisJCWdvdG8gZXJyX2tmcmVlOworCX0KKworCXN3aXRjaCAoZm9y bWF0KSB7CisJY2FzZSBVX0JPT1RfRk9STUFUX1NJTkdMRToKKwkJY3JjMzJfb2Zmc2V0ID0gb2Zm c2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlLCBjcmMzMik7CisJCWNyYzMyX2Rh dGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlLCBkYXRh KTsKKwkJZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9zaW5n bGUsIGRhdGEpOworCQlicmVhazsKKwljYXNlIFVfQk9PVF9GT1JNQVRfUkVEVU5EQU5UOgorCQlj cmMzMl9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9yZWR1bmRhbnQs IGNyYzMyKTsKKwkJY3JjMzJfZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vu dl9pbWFnZV9yZWR1bmRhbnQsIGRhdGEpOworCQlkYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVj dCB1X2Jvb3RfZW52X2ltYWdlX3JlZHVuZGFudCwgZGF0YSk7CisJCWJyZWFrOworCWNhc2UgVV9C T09UX0ZPUk1BVF9CUk9BRENPTToKKwkJY3JjMzJfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVf Ym9vdF9lbnZfaW1hZ2VfYnJvYWRjb20sIGNyYzMyKTsKKwkJY3JjMzJfZGF0YV9vZmZzZXQgPSBv ZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9icm9hZGNvbSwgZGF0YSk7CisJCWRhdGFf b2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfYnJvYWRjb20sIGRhdGEp OworCQlicmVhazsKKwl9CisJY3JjMzIgPSBsZTMyX3RvX2NwdSgqKF9fbGUzMiAqKShidWYgKyBj cmMzMl9vZmZzZXQpKTsKKwljcmMzMl9kYXRhX2xlbiA9IGRldl9zaXplIC0gY3JjMzJfZGF0YV9v ZmZzZXQ7CisJZGF0YV9sZW4gPSBkZXZfc2l6ZSAtIGRhdGFfb2Zmc2V0OworCisJY2FsYyA9IGNy YzMyKH4wLCBidWYgKyBjcmMzMl9kYXRhX29mZnNldCwgY3JjMzJfZGF0YV9sZW4pIF4gfjBMOwor CWlmIChjYWxjICE9IGNyYzMyKSB7CisJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBjYWxjdWxhdGVk IENSQzMyOiAweCUwOHggKGV4cGVjdGVkOiAweCUwOHgpXG4iLCBjYWxjLCBjcmMzMik7CisJCWVy ciA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX2tmcmVlOworCX0KKworCWJ1ZltkZXZfc2l6ZSAtIDFd ID0gJ1wwJzsKKwllcnIgPSB1X2Jvb3RfZW52X3BhcnNlX2RhdGEoZGV2LCBudm1lbSwgYnVmLCBk YXRhX29mZnNldCwgZGF0YV9sZW4pOworCWlmIChlcnIpCisJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIHBhcnNlIGNlbGxzOiAlZFxuIiwgZXJyKTsKKworZXJyX2tmcmVlOgorCWtmcmVlKGJ1Zik7 CitlcnJfb3V0OgorCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIHVfYm9vdF9lbnZfb2ZfbWF0Y2hfdGFibGVbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0g InUtYm9vdCxlbnYiLCAuZGF0YSA9ICh2b2lkICopVV9CT09UX0ZPUk1BVF9TSU5HTEUsIH0sCisJ eyAuY29tcGF0aWJsZSA9ICJ1LWJvb3QsZW52LXJlZHVuZGFudC1ib29sIiwgLmRhdGEgPSAodm9p ZCAqKVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULCB9LAorCXsgLmNvbXBhdGlibGUgPSAidS1ib290 LGVudi1yZWR1bmRhbnQtY291bnQiLCAuZGF0YSA9ICh2b2lkICopVV9CT09UX0ZPUk1BVF9SRURV TkRBTlQsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJicmNtLGVudiIsIC5kYXRhID0gKHZvaWQgKilV X0JPT1RfRk9STUFUX0JST0FEQ09NLCB9LAorCXt9LAorfTsKKworc3RhdGljIHN0cnVjdCBudm1l bV9sYXlvdXQgdV9ib290X2Vudl9sYXlvdXQgPSB7CisJLm5hbWUgPSAiVS1Cb290IGVudmlyb25t ZW50IHZhcmlhYmxlcyBsYXlvdXQiLAorCS5vZl9tYXRjaF90YWJsZSA9IHVfYm9vdF9lbnZfb2Zf bWF0Y2hfdGFibGUsCisJLmFkZF9jZWxscyA9IHVfYm9vdF9lbnZfYWRkX2NlbGxzLAorfTsKKwor c3RhdGljIGludCBfX2luaXQgdV9ib290X2Vudl9pbml0KHZvaWQpCit7CisJcmV0dXJuIG52bWVt X2xheW91dF9yZWdpc3RlcigmdV9ib290X2Vudl9sYXlvdXQpOworfQorc3Vic3lzX2luaXRjYWxs KHVfYm9vdF9lbnZfaW5pdCk7CisKK01PRFVMRV9BVVRIT1IoIlJhZmHFgiBNacWCZWNraSIpOwor TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdV9ib290X2Vu dl9vZl9tYXRjaF90YWJsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWVtL3UtYm9vdC1lbnYu YyBiL2RyaXZlcnMvbnZtZW0vdS1ib290LWVudi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAyOWIxZDg3YTNjNTEuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL252bWVtL3UtYm9v dC1lbnYuYworKysgL2Rldi9udWxsCkBAIC0xLDIzMyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIFJhZmHF giBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgvY3Jj MzIuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4KLSNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+Ci0jaW5jbHVkZSA8bGludXgv bnZtZW0tY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9udm1lbS1wcm92aWRlci5oPgotI2lu Y2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLQotZW51bSB1X2Jvb3RfZW52X2Zvcm1hdCB7 Ci0JVV9CT09UX0ZPUk1BVF9TSU5HTEUsCi0JVV9CT09UX0ZPUk1BVF9SRURVTkRBTlQsCi0JVV9C T09UX0ZPUk1BVF9CUk9BRENPTSwKLX07Ci0KLXN0cnVjdCB1X2Jvb3RfZW52IHsKLQlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Ci0JZW51bSB1X2Jvb3RfZW52X2Zvcm1hdCBmb3JtYXQ7Ci0KLQlzdHJ1Y3Qg bXRkX2luZm8gKm10ZDsKLQotCS8qIENlbGxzICovCi0Jc3RydWN0IG52bWVtX2NlbGxfaW5mbyAq Y2VsbHM7Ci0JaW50IG5jZWxsczsKLX07Ci0KLXN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3Npbmds ZSB7Ci0JX19sZTMyIGNyYzMyOwotCXVpbnQ4X3QgZGF0YVtdOwotfSBfX3BhY2tlZDsKLQotc3Ry dWN0IHVfYm9vdF9lbnZfaW1hZ2VfcmVkdW5kYW50IHsKLQlfX2xlMzIgY3JjMzI7Ci0JdTggbWFy azsKLQl1aW50OF90IGRhdGFbXTsKLX0gX19wYWNrZWQ7Ci0KLXN0cnVjdCB1X2Jvb3RfZW52X2lt YWdlX2Jyb2FkY29tIHsKLQlfX2xlMzIgbWFnaWM7Ci0JX19sZTMyIGxlbjsKLQlfX2xlMzIgY3Jj MzI7Ci0JdWludDhfdCBkYXRhWzBdOwotfSBfX3BhY2tlZDsKLQotc3RhdGljIGludCB1X2Jvb3Rf ZW52X3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqdmFsLAot CQkJICAgc2l6ZV90IGJ5dGVzKQotewotCXN0cnVjdCB1X2Jvb3RfZW52ICpwcml2ID0gY29udGV4 dDsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5kZXY7Ci0Jc2l6ZV90IGJ5dGVzX3JlYWQ7 Ci0JaW50IGVycjsKLQotCWVyciA9IG10ZF9yZWFkKHByaXYtPm10ZCwgb2Zmc2V0LCBieXRlcywg JmJ5dGVzX3JlYWQsIHZhbCk7Ci0JaWYgKGVyciAmJiAhbXRkX2lzX2JpdGZsaXAoZXJyKSkgewot CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGZyb20gbXRkOiAlZFxuIiwgZXJyKTsKLQkJ cmV0dXJuIGVycjsKLQl9Ci0KLQlpZiAoYnl0ZXNfcmVhZCAhPSBieXRlcykgewotCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byByZWFkICV6dSBieXRlc1xuIiwgYnl0ZXMpOwotCQlyZXR1cm4gLUVJ TzsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCB1X2Jvb3RfZW52X2FkZF9jZWxs cyhzdHJ1Y3QgdV9ib290X2VudiAqcHJpdiwgdWludDhfdCAqYnVmLAotCQkJCXNpemVfdCBkYXRh X29mZnNldCwgc2l6ZV90IGRhdGFfbGVuKQotewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYt PmRldjsKLQljaGFyICpkYXRhID0gYnVmICsgZGF0YV9vZmZzZXQ7Ci0JY2hhciAqdmFyLCAqdmFs dWUsICplcTsKLQlpbnQgaWR4OwotCi0JcHJpdi0+bmNlbGxzID0gMDsKLQlmb3IgKHZhciA9IGRh dGE7IHZhciA8IGRhdGEgKyBkYXRhX2xlbiAmJiAqdmFyOyB2YXIgKz0gc3RybGVuKHZhcikgKyAx KQotCQlwcml2LT5uY2VsbHMrKzsKLQotCXByaXYtPmNlbGxzID0gZGV2bV9rY2FsbG9jKGRldiwg cHJpdi0+bmNlbGxzLCBzaXplb2YoKnByaXYtPmNlbGxzKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFw cml2LT5jZWxscykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlmb3IgKHZhciA9IGRhdGEsIGlkeCA9 IDA7Ci0JICAgICB2YXIgPCBkYXRhICsgZGF0YV9sZW4gJiYgKnZhcjsKLQkgICAgIHZhciA9IHZh bHVlICsgc3RybGVuKHZhbHVlKSArIDEsIGlkeCsrKSB7Ci0JCWVxID0gc3RyY2hyKHZhciwgJz0n KTsKLQkJaWYgKCFlcSkKLQkJCWJyZWFrOwotCQkqZXEgPSAnXDAnOwotCQl2YWx1ZSA9IGVxICsg MTsKLQotCQlwcml2LT5jZWxsc1tpZHhdLm5hbWUgPSBkZXZtX2tzdHJkdXAoZGV2LCB2YXIsIEdG UF9LRVJORUwpOwotCQlpZiAoIXByaXYtPmNlbGxzW2lkeF0ubmFtZSkKLQkJCXJldHVybiAtRU5P TUVNOwotCQlwcml2LT5jZWxsc1tpZHhdLm9mZnNldCA9IGRhdGFfb2Zmc2V0ICsgdmFsdWUgLSBk YXRhOwotCQlwcml2LT5jZWxsc1tpZHhdLmJ5dGVzID0gc3RybGVuKHZhbHVlKTsKLQkJcHJpdi0+ Y2VsbHNbaWR4XS5ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgcHJpdi0+ Y2VsbHNbaWR4XS5uYW1lKTsKLQl9Ci0KLQlpZiAoV0FSTl9PTihpZHggIT0gcHJpdi0+bmNlbGxz KSkKLQkJcHJpdi0+bmNlbGxzID0gaWR4OwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQg dV9ib290X2Vudl9wYXJzZShzdHJ1Y3QgdV9ib290X2VudiAqcHJpdikKLXsKLQlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSBwcml2LT5kZXY7Ci0Jc2l6ZV90IGNyYzMyX2RhdGFfb2Zmc2V0OwotCXNpemVf dCBjcmMzMl9kYXRhX2xlbjsKLQlzaXplX3QgY3JjMzJfb2Zmc2V0OwotCXNpemVfdCBkYXRhX29m ZnNldDsKLQlzaXplX3QgZGF0YV9sZW47Ci0JdWludDMyX3QgY3JjMzI7Ci0JdWludDMyX3QgY2Fs YzsKLQlzaXplX3QgYnl0ZXM7Ci0JdWludDhfdCAqYnVmOwotCWludCBlcnI7Ci0KLQlidWYgPSBr Y2FsbG9jKDEsIHByaXYtPm10ZC0+c2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFidWYpIHsKLQkJ ZXJyID0gLUVOT01FTTsKLQkJZ290byBlcnJfb3V0OwotCX0KLQotCWVyciA9IG10ZF9yZWFkKHBy aXYtPm10ZCwgMCwgcHJpdi0+bXRkLT5zaXplLCAmYnl0ZXMsIGJ1Zik7Ci0JaWYgKChlcnIgJiYg IW10ZF9pc19iaXRmbGlwKGVycikpIHx8IGJ5dGVzICE9IHByaXYtPm10ZC0+c2l6ZSkgewotCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGZyb20gbXRkOiAlZFxuIiwgZXJyKTsKLQkJZ290 byBlcnJfa2ZyZWU7Ci0JfQotCi0Jc3dpdGNoIChwcml2LT5mb3JtYXQpIHsKLQljYXNlIFVfQk9P VF9GT1JNQVRfU0lOR0xFOgotCQljcmMzMl9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290 X2Vudl9pbWFnZV9zaW5nbGUsIGNyYzMyKTsKLQkJY3JjMzJfZGF0YV9vZmZzZXQgPSBvZmZzZXRv ZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9zaW5nbGUsIGRhdGEpOwotCQlkYXRhX29mZnNldCA9 IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3NpbmdsZSwgZGF0YSk7Ci0JCWJyZWFr OwotCWNhc2UgVV9CT09UX0ZPUk1BVF9SRURVTkRBTlQ6Ci0JCWNyYzMyX29mZnNldCA9IG9mZnNl dG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3JlZHVuZGFudCwgY3JjMzIpOwotCQljcmMzMl9k YXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3JlZHVuZGFudCwg ZGF0YSk7Ci0JCWRhdGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vf cmVkdW5kYW50LCBkYXRhKTsKLQkJYnJlYWs7Ci0JY2FzZSBVX0JPT1RfRk9STUFUX0JST0FEQ09N OgotCQljcmMzMl9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9icm9h ZGNvbSwgY3JjMzIpOwotCQljcmMzMl9kYXRhX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jv b3RfZW52X2ltYWdlX2Jyb2FkY29tLCBkYXRhKTsKLQkJZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihz dHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9icm9hZGNvbSwgZGF0YSk7Ci0JCWJyZWFrOwotCX0KLQlj cmMzMiA9IGxlMzJfdG9fY3B1KCooX19sZTMyICopKGJ1ZiArIGNyYzMyX29mZnNldCkpOwotCWNy YzMyX2RhdGFfbGVuID0gcHJpdi0+bXRkLT5zaXplIC0gY3JjMzJfZGF0YV9vZmZzZXQ7Ci0JZGF0 YV9sZW4gPSBwcml2LT5tdGQtPnNpemUgLSBkYXRhX29mZnNldDsKLQotCWNhbGMgPSBjcmMzMih+ MCwgYnVmICsgY3JjMzJfZGF0YV9vZmZzZXQsIGNyYzMyX2RhdGFfbGVuKSBeIH4wTDsKLQlpZiAo Y2FsYyAhPSBjcmMzMikgewotCQlkZXZfZXJyKGRldiwgIkludmFsaWQgY2FsY3VsYXRlZCBDUkMz MjogMHglMDh4IChleHBlY3RlZDogMHglMDh4KVxuIiwgY2FsYywgY3JjMzIpOwotCQllcnIgPSAt RUlOVkFMOwotCQlnb3RvIGVycl9rZnJlZTsKLQl9Ci0KLQlidWZbcHJpdi0+bXRkLT5zaXplIC0g MV0gPSAnXDAnOwotCWVyciA9IHVfYm9vdF9lbnZfYWRkX2NlbGxzKHByaXYsIGJ1ZiwgZGF0YV9v ZmZzZXQsIGRhdGFfbGVuKTsKLQlpZiAoZXJyKQotCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBh ZGQgY2VsbHM6ICVkXG4iLCBlcnIpOwotCi1lcnJfa2ZyZWU6Ci0Ja2ZyZWUoYnVmKTsKLWVycl9v dXQ6Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIGludCB1X2Jvb3RfZW52X3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCi17Ci0Jc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcg PSB7Ci0JCS5uYW1lID0gInUtYm9vdC1lbnYiLAotCQkucmVnX3JlYWQgPSB1X2Jvb3RfZW52X3Jl YWQsCi0JfTsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OwotCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7Ci0Jc3RydWN0IHVfYm9vdF9lbnYgKnByaXY7Ci0J aW50IGVycjsKLQotCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBf S0VSTkVMKTsKLQlpZiAoIXByaXYpCi0JCXJldHVybiAtRU5PTUVNOwotCXByaXYtPmRldiA9IGRl djsKLQotCXByaXYtPmZvcm1hdCA9ICh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRh KGRldik7Ci0KLQlwcml2LT5tdGQgPSBvZl9nZXRfbXRkX2RldmljZV9ieV9ub2RlKG5wKTsKLQlp ZiAoSVNfRVJSKHByaXYtPm10ZCkpIHsKLQkJZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJp di0+bXRkKSwgIkZhaWxlZCB0byBnZXQgJXBPRiBNVERcbiIsIG5wKTsKLQkJcmV0dXJuIFBUUl9F UlIocHJpdi0+bXRkKTsKLQl9Ci0KLQllcnIgPSB1X2Jvb3RfZW52X3BhcnNlKHByaXYpOwotCWlm IChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQljb25maWcuZGV2ID0gZGV2OwotCWNvbmZpZy5jZWxs cyA9IHByaXYtPmNlbGxzOwotCWNvbmZpZy5uY2VsbHMgPSBwcml2LT5uY2VsbHM7Ci0JY29uZmln LnByaXYgPSBwcml2OwotCWNvbmZpZy5zaXplID0gcHJpdi0+bXRkLT5zaXplOwotCi0JcmV0dXJu IFBUUl9FUlJfT1JfWkVSTyhkZXZtX252bWVtX3JlZ2lzdGVyKGRldiwgJmNvbmZpZykpOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB1X2Jvb3RfZW52X29mX21hdGNoX3Rh YmxlW10gPSB7Ci0JeyAuY29tcGF0aWJsZSA9ICJ1LWJvb3QsZW52IiwgLmRhdGEgPSAodm9pZCAq KVVfQk9PVF9GT1JNQVRfU0lOR0xFLCB9LAotCXsgLmNvbXBhdGlibGUgPSAidS1ib290LGVudi1y ZWR1bmRhbnQtYm9vbCIsIC5kYXRhID0gKHZvaWQgKilVX0JPT1RfRk9STUFUX1JFRFVOREFOVCwg fSwKLQl7IC5jb21wYXRpYmxlID0gInUtYm9vdCxlbnYtcmVkdW5kYW50LWNvdW50IiwgLmRhdGEg PSAodm9pZCAqKVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULCB9LAotCXsgLmNvbXBhdGlibGUgPSAi YnJjbSxlbnYiLCAuZGF0YSA9ICh2b2lkICopVV9CT09UX0ZPUk1BVF9CUk9BRENPTSwgfSwKLQl7 fSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHVfYm9vdF9lbnZfZHJpdmVy ID0gewotCS5wcm9iZSA9IHVfYm9vdF9lbnZfcHJvYmUsCi0JLmRyaXZlciA9IHsKLQkJLm5hbWUg PSAidV9ib290X2VudiIsCi0JCS5vZl9tYXRjaF90YWJsZSA9IHVfYm9vdF9lbnZfb2ZfbWF0Y2hf dGFibGUsCi0JfSwKLX07Ci1tb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHVfYm9vdF9lbnZfZHJpdmVy KTsKLQotTU9EVUxFX0FVVEhPUigiUmFmYcWCIE1pxYJlY2tpIik7Ci1NT0RVTEVfTElDRU5TRSgi R1BMIik7Ci1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB1X2Jvb3RfZW52X29mX21hdGNoX3RhYmxl KTsKLS0gCjIuMzQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK