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 X-Spam-Level: X-Spam-Status: No, score=-17.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88A25C4363A for ; Wed, 21 Oct 2020 21:52:09 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D30E624178 for ; Wed, 21 Oct 2020 21:52:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="c0ThaUHA"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="gGwN5/BV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D30E624178 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:MIME-Version:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qw35XXSv8YUS7b3vgWFXwNCZ2cN+jYtM81D2qbRcz/k=; b=c0ThaUHANrRvbdutCcAlTBHUa WjdjuyOpwk9JdMrSjY0mneemtIqi8wtluThWsl0YQEo2pj9rzyJeHXJABayPr27WlSP+Vh7WdyxvV 81wQBBTroc2ExHslahOAIV8VylAFuWUxH5ScYroo2mWnXvuj1wBrhbrnGvxqwqEcTSg7NTBF1S+Ww 8Av6YH5uElRMinbVWs7i1v3oQQEdz3EasFqhb5G2s80RxdJ2Fy//rlpCgKM3cREyJIbRHP7vNPohW EEz9t/ppkNLYWm39IkVDQNSR4XI8a4mcDNOORKgeDAIMFFcTUWh0cdJgGSJd1c/uhGTNwYGwvU5im n3+qAj9uA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kVLzt-0002pU-6X; Wed, 21 Oct 2020 21:50:17 +0000 Received: from mailout2.w1.samsung.com ([210.118.77.12]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kVLzn-0002nP-Tk for linux-arm-kernel@lists.infradead.org; Wed, 21 Oct 2020 21:50:14 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20201021214945euoutp028e5514c734113a4f77bf18dbd9e193fe~AIE2szNJo2062820628euoutp02t for ; Wed, 21 Oct 2020 21:49:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20201021214945euoutp028e5514c734113a4f77bf18dbd9e193fe~AIE2szNJo2062820628euoutp02t DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1603316985; bh=ucW8b3XlyH6jEEnitET0P5F4oBc2rbLe4Ybn6e4uUYU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gGwN5/BVPcIc7GtQ2qtTc7dmdB8d8eU0mvfV86HoDTpvQAOG+W46ZZMxaZGlEtm/I YFrTISHxJzzvq9045aH0DEWL7B3eYouQD/2n0X+Y6CJd+8WXSzo3004b3afp/4Wi0w VCWcHAxaQAC2+ONQfSHIclkwmYpiT1ZzC3OGfs4w= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20201021214934eucas1p26a8334d1b09dc927af4ce7e45b79e935~AIEsinamG1618516185eucas1p2w; Wed, 21 Oct 2020 21:49:34 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 98.7D.05997.EECA09F5; Wed, 21 Oct 2020 22:49:34 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20201021214933eucas1p2fd4e5ccc172f3e22fe0d7009d8b2742d~AIEsA7KkO2027920279eucas1p2c; Wed, 21 Oct 2020 21:49:33 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20201021214933eusmtrp1377f07b39197aed79ca444539a503c7c~AIEsAHlI51537015370eusmtrp1k; Wed, 21 Oct 2020 21:49:33 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-f5-5f90aceef513 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id AB.E4.06017.DECA09F5; Wed, 21 Oct 2020 22:49:33 +0100 (BST) Received: from localhost (unknown [106.120.51.46]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201021214933eusmtip14130a4f25c5d3b6986ad2e53c0bc8ef3~AIErwzf9I1263712637eusmtip1x; Wed, 21 Oct 2020 21:49:33 +0000 (GMT) From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= To: Andrew Lunn , jim.cromie@gmail.com, Heiner Kallweit , "David S. Miller" , Jakub Kicinski , Rob Herring , Kukjin Kim , Krzysztof Kozlowski , Russell King , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH v3 3/5] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Date: Wed, 21 Oct 2020 23:49:08 +0200 Message-Id: <20201021214910.20001-4-l.stelmach@samsung.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201021214910.20001-1-l.stelmach@samsung.com> MIME-Version: 1.0 Organization: Samsung R&D Institute Poland X-Brightmail-Tracker: H4sIAAAAAAAAA01SfUzMcRjf934v97vm6nd35Nl1abthY6tI7Lt1JCz3hyH/WCY5+i0vXXE/ idiE6EUqherUaim9iHJ30jVqbjckOpal6BLylreoP8oS3f1q/Pd5nufzeT7PZ3sYQv6KUjK7 4w9whnhdnJr2IBvvjTn8v9XlRi9q/aLADqeNwDcK6ylc7Eglcam9g8Ll3wsp3PW1l8I5bz8T 2OFoEOMnjdkU7rFVI2x620XhzuZiGhc6WkTYduEOwtfsTjG+V+aNT92xi1fKtJ1dTwmtpaZH pLUanWKtqTaD1porjmmtTcMibbalFmmHTXM2Mls8NDFc3O6DnCFwxXaPXRM9w2hfXjp5yH7x DZmCrtQRmUjCABsMjx/+QpnIg5Gz1QgK3mfQQjGCYNSSLxKKYQQvSl6S05Ihcy8pDKoQlLyu npJ8QFBp/Ei7WDQbBjmVDyjXYCbbR0B9Wr/bhWBbEFj7zrvtFewmMJ8rncQMQ7LzIKvN1wWl bAiMHw8V3PwgreqWe6eE1UDntwbKhaWsDNqKBtwXebELoe7EczcmJvknb14iXFbAFjHwsChj Kuka+FnVTQlYAYP3LWIBq6A9P4t0+QJ7DPLzlgnaLASNxaNTkUOgt+MX7eIQ7AKobw4U2mHw 6OxlWpB6QvdXmXCCJ+Q1FhBCWwrpp+UCey5cz7k9tVAJZwerUS5SG/8LY/wvgPGfVxkiatFs LpHXx3J8UDyXFMDr9HxifGzAzgS9CU2+XfvE/ZEm1Dy+w4ZYBqlnSIfW5UbLKd1B/rDehoAh 1DOlqx63b5NLY3SHkzlDQrQhMY7jbciHIdWzpUvKP0XJ2VjdAW4vx+3jDNNTESNRpiDx0quM bH6iwlpeVvGHDx3cEBMVeVdl3py3ukny42hsJlfja1zflbr/bnh3e2tmAajO75njPDLB9Y+u 26Y/U2EbCnf6K7eGPPPymbW8Lij36Frc2qq3Jvm9k70LVnnfksT1RtCiAc/fhdRIQeSrCNWY l6bE7vkiuS8i0q+FLtGoSX6XbvFCwsDr/gLBMz/lcgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPIsWRmVeSWpSXmKPExsVy+t/xu7pv10yIN/j2R8/i/N1DzBYbZ6xn tZhzvoXFYv6Rc6wWi97PYLW49vYOq0X/49fMFufPb2C3uLCtj9Xi5qEVjBabHl9jtbi8aw6b xYzz+5gsDk3dy2ix9shddotjC8QsWvceYXcQ9Lh87SKzx5aVN5k8ds66y+6xaVUnm8fmJfUe O3d8ZvLo27KK0ePzJrkAjig9m6L80pJUhYz84hJbpWhDCyM9Q0sLPSMTSz1DY/NYKyNTJX07 m5TUnMyy1CJ9uwS9jH83PzMWTOpgqTgy7RFLA+OyNcxdjJwcEgImEh8232HpYuTiEBJYyijR PWs6axcjB1BCSmLl3HSIGmGJP9e62CBqnjJKHHl8ig0kwSbgKNG/9AQrSEJE4A2zRNO9t+wg DrPAPkaJ/UcXs4NUCQsESOx4s58RZCqLgKpEz0lZEJNXwFriT6M9xAJ5ifbl28FmcgrYSFx+ t4EVxBYCKrn0bjIjiM0rIChxcuYTFpBWZgF1ifXzhEDC/AJaEmuarrOA2MxAY5q3zmaewCg0 C0nHLISOWUiqFjAyr2IUSS0tzk3PLTbSK07MLS7NS9dLzs/dxAiM7G3Hfm7Zwdj1LvgQowAH oxIP7wefCfFCrIllxZW5hxglOJiVRHidzp6OE+JNSaysSi3Kjy8qzUktPsRoCvTkRGYp0eR8 YNLJK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQWgTTx8TBKdXAGCD8x8xUhdWo 2OzxiXPVv22nzPVk/1L12H5ToVu9PtsSu9DF9btus0ZZi7Wssn6zInSV7My3qzd67Drz5pM9 j5PvqfUXw+v9/ZsupjWotbw3qQ/bHrai+3LB7zmZJzXfik+as/VoQrzokxWLpFkrHhz7dvrY Apc2Gb/z9SFMincbn9udNrX7qsRSnJFoqMVcVJwIAOEtGcsCAwAA X-CMS-MailID: 20201021214933eucas1p2fd4e5ccc172f3e22fe0d7009d8b2742d X-Msg-Generator: CA X-RootMTR: 20201021214933eucas1p2fd4e5ccc172f3e22fe0d7009d8b2742d X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201021214933eucas1p2fd4e5ccc172f3e22fe0d7009d8b2742d References: <20201021214910.20001-1-l.stelmach@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201021_175012_305458_C7A76696 X-CRM114-Status: GOOD ( 29.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marek Szyprowski , =?UTF-8?q?=C5=81ukasz=20Stelmach?= , =?UTF-8?q?Bart=C5=82omiej=20=C5=BBolnierkiewicz?= 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 QVNJWCBBWDg4Nzk2WzFdIGlzIGEgdmVyc2F0aWxlIGV0aGVybmV0IGFkYXB0ZXIgY2hpcCwgdGhh dCBjYW4gYmUKY29ubmVjdGVkIHRvIGEgQ1BVIHdpdGggYSA4LzE2LWJpdCBidXMgb3Igd2l0aCBh biBTUEkuIFRoaXMgZHJpdmVyCnN1cHBvcnRzIFNQSSBjb25uZWN0aW9uLgoKVGhlIGRyaXZlciBo YXMgYmVlbiBwb3J0ZWQgZnJvbSB0aGUgdmVuZG9yIGtlcm5lbCBmb3IgQVJUSUs1WzJdCmJvYXJk cy4gU2V2ZXJhbCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBhZGFwdCBpdCB0byB0aGUgY3VycmVudCBr ZXJuZWwKd2hpY2ggaW5jbHVkZToKCisgdXBkYXRlZCBEVCBjb25maWd1cmF0aW9uLAorIGNsb2Nr IGNvbmZpZ3VyYXRpb24gbW92ZWQgdG8gRFQsCisgbmV3IHRpbWVyLCBldGh0b29sIGFuZCBncGlv IEFQSXMsCisgZGV2XyogaW5zdGVhZCBvZiBwcl8qIGFuZCBjdXN0b20gcHJpbnRrKCkgd3JhcHBl cnMsCisgcmVtb3ZlZCBhd2t3YXJkIHZlbmRvciBwb3dlciBtYW5hZ2VtdG4uCgpbMV0gaHR0cHM6 Ly93d3cuYXNpeC5jb20udHcvcHJvZHVjdHMucGhwP29wPXBJdGVtZGV0YWlsJlBJdGVtSUQ9MTA0 OzY1Ozg2JlBMaW5lPTY1ClsyXSBodHRwczovL2dpdC50aXplbi5vcmcvY2dpdC9wcm9maWxlL2Nv bW1vbi9wbGF0Zm9ybS9rZXJuZWwvbGludXgtMy4xMC1hcnRpay8KClRoZSBvdGhlciBheDg4Nzk2 IGRyaXZlciBpcyBmb3IgTkUyMDAwIGNvbXBhdGlibGUgQVg4ODc5NkwgY2hpcC4gVGhlc2UKY2hp cHMgYXJlIG5vdCBjb21wYXRpYmxlLiBIZW5jZSwgdHdvIHNlcGFyYXRlIGRyaXZlcnMgYXJlIHJl cXVpcmVkLgoKU2lnbmVkLW9mZi1ieTogxYF1a2FzeiBTdGVsbWFjaCA8bC5zdGVsbWFjaEBzYW1z dW5nLmNvbT4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA2ICsKIGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcgICAgICAgICAgICAgICB8ICAg IDEgKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSAr CiBkcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L0tjb25maWcgICAgICAgICAgfCAgIDIyICsKIGRy aXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvTWFrZWZpbGUgICAgICAgICB8ICAgIDYgKwogZHJpdmVy cy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5jIHwgIDE5NyArKysrCiBkcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmggfCAgIDI3ICsKIGRyaXZlcnMvbmV0 L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jICB8IDExNDQgKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5oICB8ICA1NzggKysr KysrKysrKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuYyAgIHwgIDEx MSArKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuaCAgIHwgICA2OSAr KwogMTEgZmlsZXMgY2hhbmdlZCwgMjE2MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3Nw aS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2 Y19zcGkuaAoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMTRi OGVjMGJiNThiLi45MzBkYzg1OWQ0ZjcgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01B SU5UQUlORVJTCkBAIC0yODEyLDYgKzI4MTIsMTIgQEAgUzoJTWFpbnRhaW5lZAogRjoJRG9jdW1l bnRhdGlvbi9od21vbi9hc2M3NjIxLnJzdAogRjoJZHJpdmVycy9od21vbi9hc2M3NjIxLmMKIAor QVNJWCBBWDg4Nzk2QyBTUEkgRVRIRVJORVQgQURBUFRFUgorTToJxYF1a2FzeiBTdGVsbWFjaCA8 bC5zdGVsbWFjaEBzYW1zdW5nLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXNpeCxheDk5NzA2Yy1zcGkueWFtbAorRjoJZHJpdmVy cy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y18qCisKIEFTUEVFRCBQSU5DVFJMIERSSVZFUlMK IE06CUFuZHJldyBKZWZmZXJ5IDxhbmRyZXdAYWouaWQuYXU+CiBMOglsaW51eC1hc3BlZWRAbGlz dHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvS2Nv bmZpZwppbmRleCBkZTUwZThiOWU2NTYuLmYzYjIxOGU0NWVhNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmln CkBAIC0zMiw2ICszMiw3IEBAIHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL0tjb25m aWciCiBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2FwcGxlL0tjb25maWciCiBzb3VyY2Ug ImRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMv bmV0L2V0aGVybmV0L2FyYy9LY29uZmlnIgorc291cmNlICJkcml2ZXJzL25ldC9ldGhlcm5ldC9h c2l4L0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZp ZyIKIHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXVyb3JhL0tjb25maWciCiBzb3VyY2Ug ImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxl CmluZGV4IGY4ZjM4ZGNiNWY4YS4uOWViMzY4ZDkzNjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZQpA QCAtMTgsNiArMTgsNyBAQCBvYmotJChDT05GSUdfTkVUX1hHRU5FKSArPSBhcG0vCiBvYmotJChD T05GSUdfTkVUX1ZFTkRPUl9BUFBMRSkgKz0gYXBwbGUvCiBvYmotJChDT05GSUdfTkVUX1ZFTkRP Ul9BUVVBTlRJQSkgKz0gYXF1YW50aWEvCiBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9BUkMpICs9 IGFyYy8KK29iai0kKENPTkZJR19ORVRfVkVORE9SX0FTSVgpICs9IGFzaXgvCiBvYmotJChDT05G SUdfTkVUX1ZFTkRPUl9BVEhFUk9TKSArPSBhdGhlcm9zLwogb2JqLSQoQ09ORklHX05FVF9WRU5E T1JfQVVST1JBKSArPSBhdXJvcmEvCiBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9DQURFTkNFKSAr PSBjYWRlbmNlLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmln IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYmMyMWMxMWJkOWRlCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmlnCkBAIC0wLDAgKzEsMjIgQEAKKyMKKyMgQXNp eCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uCisjCisKK2NvbmZpZyBORVRfVkVORE9SX0FT SVgKKwlib29sICJBc2l4IGRldmljZXMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgSWYgeW91IGhh dmUgYSBuZXR3b3JrIChFdGhlcm5ldCwgbm9uLVVTQiwgbm90IE5FMjAwMCBjb21wYXRpYmxlKQor CSAgaW50ZXJmYWNlIGJhc2VkIG9uIGEgY2hpcCBmcm9tIEFTSVgsIHNheSBZLgorCitpZiBORVRf VkVORE9SX0FTSVgKKworY29uZmlnIFNQSV9BWDg4Nzk2QworCXRyaXN0YXRlICJBc2l4IEFYODg3 OTZDLVNQSSBzdXBwb3J0IgorCXNlbGVjdCBQSFlMSUIKKwlkZXBlbmRzIG9uIFNQSQorCWRlcGVu ZHMgb24gR1BJT0xJQgorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IGludGVuZCB0byB1c2Ug QVNJWCBBWDg4Nzk2QyBhdHRhY2hlZCBpbiBTUEkgbW9kZS4KKworZW5kaWYgIyBORVRfVkVORE9S X0FTSVgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvTWFrZWZpbGUgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMGJmYmJiMDQyNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvYXNpeC9NYWtlZmlsZQpAQCAtMCwwICsxLDYgQEAKKyMKKyMgTWFrZWZp bGUgZm9yIHRoZSBBc2l4IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuCisjCisKK29iai0kKENPTkZJ R19TUElfQVg4ODc5NkMpICs9IGF4ODg3OTZjLm8KK2F4ODg3OTZjLXkgOj0gYXg4ODc5NmNfbWFp bi5vIGF4ODg3OTZjX2lvY3RsLm8gYXg4ODc5NmNfc3BpLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvYXg4ODc5NmNfaW9jdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjRiMzczMzkwZGMyYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYwpAQCAtMCwwICsxLDE5NyBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBB U0lYIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgU2Ftc3Vu ZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKyAqCisgKiBBU0lYIEFYODg3OTZDIFNQSSBGYXN0IEV0 aGVybmV0IExpbnV4IGRyaXZlcgorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkJImF4ODg3OTZj OiAiIGZtdAorCisjaW5jbHVkZSA8bGludXgvYml0bWFwLmg+CisjaW5jbHVkZSA8bGludXgvaW9w b2xsLmg+CisjaW5jbHVkZSA8bGludXgvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNl Lmg+CisKKyNpbmNsdWRlICJheDg4Nzk2Y19tYWluLmgiCisjaW5jbHVkZSAiYXg4ODc5NmNfaW9j dGwuaCIKKworc3RhdGljIHZvaWQKK2F4ODg3OTZjX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2LCBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKQoreworCS8qIEluaGVyaXQg c3RhbmRhcmQgZGV2aWNlIGluZm8gKi8KKwlzdHJuY3B5KGluZm8tPmRyaXZlciwgRFJWX05BTUUs IHNpemVvZihpbmZvLT5kcml2ZXIpKTsKK30KKworc3RhdGljIHUzMiBheDg4Nzk2Y19nZXRfbXNn bGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2Rldmlj ZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisKKwlyZXR1cm4gYXhfbG9j YWwtPm1zZ19lbmFibGU7Cit9CisKK3N0YXRpYyB2b2lkIGF4ODg3OTZjX3NldF9tc2dsZXZlbChz dHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGxldmVsKQoreworCXN0cnVjdCBheDg4Nzk2Y19k ZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJYXhfbG9jYWwt Pm1zZ19lbmFibGUgPSBsZXZlbDsKK30KKworc3RhdGljIHUzMiBheDg4Nzk2Y19ldGh0b29sX2dl dG1zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBheDg4Nzk2Y19k ZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJcmV0dXJuIGF4 X2xvY2FsLT5tc2dfZW5hYmxlOworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19ldGh0b29sX3Nl dG1zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgbGV2ZWwpCit7CisJc3RydWN0 IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisK KwlheF9sb2NhbC0+bXNnX2VuYWJsZSA9IGxldmVsOworfQorCitzdGF0aWMgdm9pZAorYXg4ODc5 NmNfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBldGh0b29s X3BhdXNlcGFyYW0gKnBhdXNlKQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2Fs ID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJcGF1c2UtPnR4X3BhdXNlID0gISEoYXhf bG9jYWwtPmZsb3djdHJsICYgQVhfRkNfVFgpOworCXBhdXNlLT5yeF9wYXVzZSA9ICEhKGF4X2xv Y2FsLT5mbG93Y3RybCAmIEFYX0ZDX1JYKTsKKwlwYXVzZS0+YXV0b25lZyA9IChheF9sb2NhbC0+ Zmxvd2N0cmwgJiBBWF9GQ19BTkVHKSA/CisJCUFVVE9ORUdfRU5BQkxFIDoKKwkJQVVUT05FR19E SVNBQkxFOworfQorCitzdGF0aWMgaW50CitheDg4Nzk2Y19zZXRfcGF1c2VwYXJhbShzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpCit7CisJ c3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRl dik7CisJaW50IGZjOworCisJLyogVGhlIGZvbGxvd2luZyBsb2dpYyBjb21lcyBmcm9tIHBoeWxp bmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpICovCisJZmMgPSBwYXVzZS0+dHhfcGF1c2UgPyBB WF9GQ19UWCA6IDA7CisJZmMgfD0gcGF1c2UtPnJ4X3BhdXNlID8gQVhfRkNfUlggOiAwOworCWZj IHw9IHBhdXNlLT5hdXRvbmVnID8gQVhfRkNfQU5FRyA6IDA7CisKKwlheF9sb2NhbC0+Zmxvd2N0 cmwgPSBmYzsKKworCWlmIChwYXVzZS0+YXV0b25lZykgeworCQlwaHlfc2V0X2FzeW1fcGF1c2Uo YXhfbG9jYWwtPnBoeWRldiwgcGF1c2UtPnR4X3BhdXNlLAorCQkJCSAgIHBhdXNlLT5yeF9wYXVz ZSk7CisJfSBlbHNlIHsKKwkJaW50IG1hY2NyID0gMDsKKworCQlwaHlfc2V0X2FzeW1fcGF1c2Uo YXhfbG9jYWwtPnBoeWRldiwgMCwgMCk7CisJCW1hY2NyIHw9IChheF9sb2NhbC0+Zmxvd2N0cmwg JiBBWF9GQ19SWCkgPyBNQUNDUl9SWEZDX0VOQUJMRSA6IDA7CisJCW1hY2NyIHw9IChheF9sb2Nh bC0+Zmxvd2N0cmwgJiBBWF9GQ19UWCkgPyBNQUNDUl9UWEZDX0VOQUJMRSA6IDA7CisKKwkJbXV0 ZXhfbG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCQltYWNjciB8PSBBWF9SRUFEKCZheF9s b2NhbC0+YXhfc3BpLCBQMF9NQUNDUikgJgorCQkJfihNQUNDUl9UWEZDX0VOQUJMRSB8IE1BQ0NS X1JYRkNfRU5BQkxFKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIG1hY2NyLCBQMF9N QUNDUik7CisKKwkJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCX0KKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGF4ODg3OTZjX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0 X2RldmljZSAqbmRldikKK3sKKwlyZXR1cm4gQVg4ODc5NkNfUkVHRFVNUF9MRU4gKyBBWDg4Nzk2 Q19QSFlfUkVHRFVNUF9MRU47Cit9CisKK3N0YXRpYyB2b2lkCitheDg4Nzk2Y19nZXRfcmVncyhz dHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywgdm9pZCAq X3ApCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19k ZXZpY2UobmRldik7CisJdTE2ICpwID0gX3A7CisJaW50IG9mZnNldCwgaTsKKworCW1lbXNldChw LCAwLCBheDg4Nzk2Y19nZXRfcmVnc19sZW4obmRldikpOworCisJbXV0ZXhfbG9jaygmYXhfbG9j YWwtPnNwaV9sb2NrKTsKKworCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgQVg4ODc5NkNfUkVH RFVNUF9MRU47IG9mZnNldCArPSAyKSB7CisJCWlmICghdGVzdF9iaXQob2Zmc2V0IC8gMiwgYXg4 ODc5NmNfbm9fcmVnc19tYXNrKSkKKwkJCSpwID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwg b2Zmc2V0KTsKKwkJcCsrOworCX0KKworCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2Nr KTsKKworCWZvciAoaSA9IDA7IGkgPCBBWDg4Nzk2Q19QSFlfUkVHRFVNUF9MRU4gLyAyOyBpKysp IHsKKwkJKnAgPSBwaHlfcmVhZChheF9sb2NhbC0+cGh5ZGV2LCBpKTsKKwkJcCsrOworCX0KK30K KworaW50IGF4ODg3OTZjX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cywgaW50IHBo eV9pZCwgaW50IGxvYykKK3sKKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IG1k aW9idXMtPnByaXY7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9j ayk7CisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIE1ESU9DUl9SQUREUihsb2MpCisJCQl8 IE1ESU9DUl9GQUREUihwaHlfaWQpIHwgTURJT0NSX1JFQUQsIFAyX01ESU9DUik7CisKKwlyZXQg PSByZWFkX3BvbGxfdGltZW91dChBWF9SRUFELCByZXQsCisJCQkJKHJldCAhPSAwKSwKKwkJCQkw LCBqaWZmaWVzX3RvX3VzZWNzKEhaIC8gMTAwKSwgZmFsc2UsCisJCQkJJmF4X2xvY2FsLT5heF9z cGksIFAyX01ESU9DUik7CisJaWYgKCFyZXQpCisJCXJldCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5h eF9zcGksIFAyX01ESU9EUik7CisKKwltdXRleF91bmxvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7 CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQKK2F4ODg3OTZjX21kaW9fd3JpdGUoc3RydWN0IG1p aV9idXMgKm1kaW9idXMsIGludCBwaHlfaWQsIGludCBsb2MsIHUxNiB2YWwpCit7CisJc3RydWN0 IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSBtZGlvYnVzLT5wcml2OworCWludCByZXQ7CisK KwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCUFYX1dSSVRFKCZheF9sb2NhbC0+ YXhfc3BpLCB2YWwsIFAyX01ESU9EUik7CisKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwK KwkJIE1ESU9DUl9SQUREUihsb2MpIHwgTURJT0NSX0ZBRERSKHBoeV9pZCkKKwkJIHwgTURJT0NS X1dSSVRFLCBQMl9NRElPQ1IpOworCisJcmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoQVhfUkVBRCwg cmV0LAorCQkJCSgocmV0ICYgTURJT0NSX1ZBTElEKSAhPSAwKSwgMCwKKwkJCQlqaWZmaWVzX3Rv X3VzZWNzKEhaIC8gMTAwKSwgZmFsc2UsCisJCQkJJmF4X2xvY2FsLT5heF9zcGksIFAyX01ESU9D Uik7CisJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJcmV0dXJuIHJldDsK K30KKworY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3OTZjX2V0aHRvb2xfb3BzID0gewor CS5nZXRfZHJ2aW5mbwkJPSBheDg4Nzk2Y19nZXRfZHJ2aW5mbywKKwkuZ2V0X2xpbmsJCT0gZXRo dG9vbF9vcF9nZXRfbGluaywKKwkuZ2V0X21zZ2xldmVsCQk9IGF4ODg3OTZjX2dldF9tc2dsZXZl bCwKKwkuc2V0X21zZ2xldmVsCQk9IGF4ODg3OTZjX3NldF9tc2dsZXZlbCwKKwkuZ2V0X2xpbmtf a3NldHRpbmdzCT0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLAorCS5zZXRfbGlua19r c2V0dGluZ3MJPSBwaHlfZXRodG9vbF9zZXRfbGlua19rc2V0dGluZ3MsCisJLm53YXlfcmVzZXQJ CT0gcGh5X2V0aHRvb2xfbndheV9yZXNldCwKKwkuZ2V0X21zZ2xldmVsCQk9IGF4ODg3OTZjX2V0 aHRvb2xfZ2V0bXNnbGV2ZWwsCisJLnNldF9tc2dsZXZlbAkJPSBheDg4Nzk2Y19ldGh0b29sX3Nl dG1zZ2xldmVsLAorCS5nZXRfcGF1c2VwYXJhbQkJPSBheDg4Nzk2Y19nZXRfcGF1c2VwYXJhbSwK Kwkuc2V0X3BhdXNlcGFyYW0JCT0gYXg4ODc5NmNfc2V0X3BhdXNlcGFyYW0sCisJLmdldF9yZWdz X2xlbgkJPSBheDg4Nzk2Y19nZXRfcmVnc19sZW4sCisJLmdldF9yZWdzCQk9IGF4ODg3OTZjX2dl dF9yZWdzLAorfTsKKworaW50IGF4ODg3OTZjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2 LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gcGh5 X21paV9pb2N0bChuZGV2LT5waHlkZXYsIGlmciwgY21kKTsKKworCXJldHVybiByZXQ7Cit9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmggYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNDc4OTgxYmY5OTUKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmgKQEAgLTAsMCArMSwy NyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLworLyoKKyAq IENvcHlyaWdodCAoYykgMjAxMCBBU0lYIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjAgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKyAqCisgKiBBU0lY IEFYODg3OTZDIFNQSSBGYXN0IEV0aGVybmV0IExpbnV4IGRyaXZlcgorICovCisKKyNpZm5kZWYg X0FYODg3OTZDX0lPQ1RMX0gKKyNkZWZpbmUgX0FYODg3OTZDX0lPQ1RMX0gKKworI2luY2x1ZGUg PGxpbnV4L2V0aHRvb2wuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKworI2luY2x1 ZGUgImF4ODg3OTZjX21haW4uaCIKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBh eDg4Nzk2Y19ldGh0b29sX29wczsKKworYm9vbCBheDg4Nzk2Y19jaGVja19wb3dlcihjb25zdCBz dHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCk7Citib29sIGF4ODg3OTZjX2NoZWNrX3Bv d2VyX2FuZF93YWtlKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsKTsKK3ZvaWQgYXg4 ODc5NmNfc2V0X3Bvd2VyX3NhdmluZyhzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCwg dTggcHNfbGV2ZWwpOworaW50IGF4ODg3OTZjX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRp b2J1cywgaW50IHBoeV9pZCwgaW50IGxvYyk7CitpbnQgYXg4ODc5NmNfbWRpb193cml0ZShzdHJ1 Y3QgbWlpX2J1cyAqbWRpb2J1cywgaW50IHBoeV9pZCwgaW50IGxvYywgdTE2IHZhbCk7Cit2b2lk IGF4ODg3OTZjX3NldF9jc3VtcyhzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCk7Citp bnQgYXg4ODc5NmNfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpp ZnIsIGludCBjbWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvYXg4ODc5NmNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2 Y19tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YzJjZjM5 ODIxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3 OTZjX21haW4uYwpAQCAtMCwwICsxLDExNDQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVNJWCBFbGVjdHJvbmlj cyBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAyMDIwIFNhbXN1bmcgRWxlY3Ryb25pY3Mg Q28uLCBMdGQuCisgKgorICogQVNJWCBBWDg4Nzk2QyBTUEkgRmFzdCBFdGhlcm5ldCBMaW51eCBk cml2ZXIKKyAqLworCisjZGVmaW5lIHByX2ZtdChmbXQpCSJheDg4Nzk2YzogIiBmbXQKKworI2lu Y2x1ZGUgImF4ODg3OTZjX21haW4uaCIKKyNpbmNsdWRlICJheDg4Nzk2Y19pb2N0bC5oIgorCisj aW5jbHVkZSA8bGludXgvYml0bWFwLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4K KyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9tZGlvLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9waHkuaD4KKyNpbmNsdWRlIDxsaW51 eC9zcGkvc3BpLmg+CisKK3N0YXRpYyBpbnQgY29tcDsKK3N0YXRpYyBpbnQgbXNnX2VuYWJsZSA9 IE5FVElGX01TR19QUk9CRSB8CisJCQlORVRJRl9NU0dfTElOSyB8CisJCQkvKiBORVRJRl9NU0df VElNRVIgfCAqLworCQkJLyogTkVUSUZfTVNHX0lGRE9XTiB8ICovCisJCQkvKiBORVRJRl9NU0df SUZVUCB8ICovCisJCQlORVRJRl9NU0dfUlhfRVJSIHwKKwkJCU5FVElGX01TR19UWF9FUlIgfAor CQkJLyogTkVUSUZfTVNHX1RYX1FVRVVFRCB8ICovCisJCQkvKiBORVRJRl9NU0dfSU5UUiB8ICov CisJCQkvKiBORVRJRl9NU0dfVFhfRE9ORSB8ICovCisJCQkvKiBORVRJRl9NU0dfUlhfU1RBVFVT IHwgKi8KKwkJCS8qIE5FVElGX01TR19QS1REQVRBIHwgKi8KKwkJCS8qIE5FVElGX01TR19IVyB8 ICovCisJCQkvKiBORVRJRl9NU0dfV09MIHwgKi8KKwkJCTA7CisKK3N0YXRpYyBjaGFyICpub19y ZWdzX2xpc3QgPSAiODAwMTgwMDEsZTE5MTgwMDEsODAwMWEwMDEsZmMwZDAwMDAiOwordW5zaWdu ZWQgbG9uZyBheDg4Nzk2Y19ub19yZWdzX21hc2tbQVg4ODc5NkNfUkVHRFVNUF9MRU4gLyAoc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpICogOCldOworCittb2R1bGVfcGFyYW0oY29tcCwgaW50LCAwNDQ0 KTsKK01PRFVMRV9QQVJNX0RFU0MoY29tcCwgIjA9Tm9uLUNvbXByZXNzaW9uIE1vZGUsIDE9Q29t cHJlc3Npb24gTW9kZSIpOworCittb2R1bGVfcGFyYW0obXNnX2VuYWJsZSwgaW50LCAwNDQ0KTsK K01PRFVMRV9QQVJNX0RFU0MobXNnX2VuYWJsZSwgIk1lc3NhZ2UgbWFzayAoc2VlIGxpbnV4L25l dGRldmljZS5oIGZvciBiaXRtYXApIik7CisKK3N0YXRpYyBpbnQgYXg4ODc5NmNfc29mdF9yZXNl dChzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKK3sKKwl1MTYgdGVtcDsKKwlpbnQg cmV0OworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZheF9sb2NhbC0+c3BpX2xvY2spKTsK KworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBQU1JfUkVTRVQsIFAwX1BTUik7CisJQVhf V1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFBTUl9SRVNFVF9DTFIsIFAwX1BTUik7CisKKwlyZXQg PSByZWFkX3BvbGxfdGltZW91dChBWF9SRUFELCByZXQsCisJCQkJKHJldCAmIFBTUl9ERVZfUkVB RFkpLAorCQkJCTAsIGppZmZpZXNfdG9fdXNlY3MoMTYwICogSFogLyAxMDAwKSwgZmFsc2UsCisJ CQkJJmF4X2xvY2FsLT5heF9zcGksIFAwX1BTUik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCXRlbXAgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQNF9TUElDUik7CisJaWYgKGF4 X2xvY2FsLT5jYXBhYmlsaXRpZXMgJiBBWF9DQVBfQ09NUCkgeworCQlBWF9XUklURSgmYXhfbG9j YWwtPmF4X3NwaSwKKwkJCSAodGVtcCB8IFNQSUNSX1JDRU4gfCBTUElDUl9RQ0VOKSwgUDRfU1BJ Q1IpOworCQlheF9sb2NhbC0+YXhfc3BpLmNvbXAgPSAxOworCX0gZWxzZSB7CisJCUFYX1dSSVRF KCZheF9sb2NhbC0+YXhfc3BpLAorCQkJICh0ZW1wICYgfihTUElDUl9SQ0VOIHwgU1BJQ1JfUUNF TikpLCBQNF9TUElDUik7CisJCWF4X2xvY2FsLT5heF9zcGkuY29tcCA9IDA7CisJfQorCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXg4ODc5NmNfcmVsb2FkX2VlcHJvbShzdHJ1Y3QgYXg4 ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKK3sKKwlpbnQgcmV0OworCisJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZheF9sb2NhbC0+c3BpX2xvY2spKTsKKworCUFYX1dSSVRFKCZheF9sb2NhbC0+ YXhfc3BpLCBFRUNSX1JFTE9BRCwgUDNfRUVDUik7CisKKwlyZXQgPSByZWFkX3BvbGxfdGltZW91 dChBWF9SRUFELCByZXQsCisJCQkJKHJldCAmIFBTUl9ERVZfUkVBRFkpLAorCQkJCTAsIGppZmZp ZXNfdG9fdXNlY3MoMiAqIEhaIC8gMTAwMCksIGZhbHNlLAorCQkJCSZheF9sb2NhbC0+YXhfc3Bp LCBQMF9QU1IpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmYXhfbG9jYWwtPnNwaS0+ZGV2LAor CQkJInRpbWVvdXQgd2FpdGluZyBmb3IgcmVsb2FkIGVlcHJvbVxuIik7CisJCXJldHVybiByZXQ7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGF4ODg3OTZjX3NldF9od19tdWx0 aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2Rldmlj ZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisJdTE2IHJ4X2N0bCA9IFJY Q1JfQUI7CisJaW50IG1jX2NvdW50ID0gbmV0ZGV2X21jX2NvdW50KG5kZXYpOworCisJV0FSTl9P TighbXV0ZXhfaXNfbG9ja2VkKCZheF9sb2NhbC0+c3BpX2xvY2spKTsKKworCW1lbXNldChheF9s b2NhbC0+bXVsdGlfZmlsdGVyLCAwLCBBWF9NQ0FTVF9GSUxURVJfU0laRSk7CisKKwlpZiAobmRl di0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgeworCQlyeF9jdGwgfD0gUlhDUl9QUk87CisKKwl9IGVs c2UgaWYgKG5kZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJIHx8IG1jX2NvdW50ID4gQVhfTUFYX01D QVNUKSB7CisJCXJ4X2N0bCB8PSBSWENSX0FNQUxMOworCisJfSBlbHNlIGlmIChtY19jb3VudCA9 PSAwKSB7CisJCS8qIGp1c3QgYnJvYWRjYXN0IGFuZCBkaXJlY3RlZCAqLworCX0gZWxzZSB7CisJ CXUzMiBjcmNfYml0czsKKwkJaW50IGk7CisJCXN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7CisK KwkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpIHsKKwkJCWNyY19iaXRzID0gZXRo ZXJfY3JjKEVUSF9BTEVOLCBoYS0+YWRkcik7CisJCQlheF9sb2NhbC0+bXVsdGlfZmlsdGVyW2Ny Y19iaXRzID4+IDI5XSB8PQorCQkJCQkJKDEgPDwgKChjcmNfYml0cyA+PiAyNikgJiA3KSk7CisJ CX0KKworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQlBWF9XUklURSgmYXhfbG9jYWwt PmF4X3NwaSwKKwkJCQkgKChheF9sb2NhbC0+bXVsdGlfZmlsdGVyW2kgKiAyICsgMV0gPDwgOCkg fAorCQkJCSAgYXhfbG9jYWwtPm11bHRpX2ZpbHRlcltpICogMl0pLCBQM19NRkFSKGkpKTsKKwkJ fQorCX0KKworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCByeF9jdGwsIFAyX1JYQ1IpOwor fQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19zZXRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2Ug Km5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2 Y19kZXZpY2UobmRldik7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmF4X2xvY2FsLT5z cGlfbG9jaykpOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5k ZXZfYWRkcls0XSA8PCA4KSB8CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzVdKSwgUDNfTUFDQVNS MCk7CisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5kZXZfYWRkclsy XSA8PCA4KSB8CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzNdKSwgUDNfTUFDQVNSMSk7CisJQVhf V1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5kZXZfYWRkclswXSA8PCA4KSB8 CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzFdKSwgUDNfTUFDQVNSMik7Cit9CisKK3N0YXRpYyB2 b2lkIGF4ODg3OTZjX2xvYWRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJ c3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRl dik7CisJdTE2IHRlbXA7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmF4X2xvY2FsLT5z cGlfbG9jaykpOworCisJLyogVHJ5IHRoZSBkZXZpY2UgdHJlZSBmaXJzdCAqLworCWlmICghZXRo X3BsYXRmb3JtX2dldF9tYWNfYWRkcmVzcygmYXhfbG9jYWwtPnNwaS0+ZGV2LCBuZGV2LT5kZXZf YWRkcikgJiYKKwkgICAgaXNfdmFsaWRfZXRoZXJfYWRkcihuZGV2LT5kZXZfYWRkcikpIHsKKwkJ aWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpCisJCQlkZXZfaW5mbygmYXhfbG9jYWwtPnNw aS0+ZGV2LAorCQkJCSAiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXG4iKTsKKwkJ cmV0dXJuOworCX0KKworCS8qIFJlYWQgdGhlIE1BQyBhZGRyZXNzIGZyb20gQVg4ODc5NkMgKi8K Kwl0ZW1wID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDNfTUFDQVNSMCk7CisJbmRldi0+ ZGV2X2FkZHJbNV0gPSAodTgpdGVtcDsKKwluZGV2LT5kZXZfYWRkcls0XSA9ICh1OCkodGVtcCA+ PiA4KTsKKworCXRlbXAgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQM19NQUNBU1IxKTsK KwluZGV2LT5kZXZfYWRkclszXSA9ICh1OCl0ZW1wOworCW5kZXYtPmRldl9hZGRyWzJdID0gKHU4 KSh0ZW1wID4+IDgpOworCisJdGVtcCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAzX01B Q0FTUjIpOworCW5kZXYtPmRldl9hZGRyWzFdID0gKHU4KXRlbXA7CisJbmRldi0+ZGV2X2FkZHJb MF0gPSAodTgpKHRlbXAgPj4gOCk7CisKKwlpZiAoaXNfdmFsaWRfZXRoZXJfYWRkcihuZGV2LT5k ZXZfYWRkcikpIHsKKwkJaWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpCisJCQlkZXZfaW5m bygmYXhfbG9jYWwtPnNwaS0+ZGV2LAorCQkJCSAiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIEFTSVgg Y2hpcFxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBVc2UgcmFuZG9tIGFkZHJlc3MgaWYgbm9u ZSBmb3VuZCAqLworCWlmIChuZXRpZl9tc2dfcHJvYmUoYXhfbG9jYWwpKQorCQlkZXZfaW5mbygm YXhfbG9jYWwtPnNwaS0+ZGV2LCAiVXNlIHJhbmRvbSBNQUMgYWRkcmVzc1xuIik7CisJZXRoX2h3 X2FkZHJfcmFuZG9tKG5kZXYpOworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19wcm9jX3R4X2hk cihzdHJ1Y3QgdHhfcGt0X2luZm8gKmluZm8sIHU4IGlwX3N1bW1lZCkKK3sKKwl1MTYgcGt0X2xl bl9iYXIgPSAofmluZm8tPnBrdF9sZW4gJiBUWF9IRFJfU09QX1BLVExFTkJBUik7CisKKwkvKiBQ cmVwYXJlIFNPUCBoZWFkZXIgKi8KKwlpbmZvLT5zb3AuZmxhZ3NfbGVuID0gaW5mby0+cGt0X2xl biB8CisJCSgoaXBfc3VtbWVkID09IENIRUNLU1VNX05PTkUpIHx8CisJCSAoaXBfc3VtbWVkID09 IENIRUNLU1VNX1VOTkVDRVNTQVJZKSA/IFRYX0hEUl9TT1BfRElDRiA6IDApOworCisJaW5mby0+ c29wLnNlcV9sZW5iYXIgPSAoKGluZm8tPnNlcV9udW0gPDwgMTEpICYgVFhfSERSX1NPUF9TRVFO VU0pCisJCQkJfCBwa3RfbGVuX2JhcjsKKwljcHVfdG9fYmUxNnMoJmluZm8tPnNvcC5mbGFnc19s ZW4pOworCWNwdV90b19iZTE2cygmaW5mby0+c29wLnNlcV9sZW5iYXIpOworCisJLyogUHJlcGFy ZSBTZWdtZW50IGhlYWRlciAqLworCWluZm8tPnNlZy5mbGFnc19zZXFudW1fc2VnbGVuID0gVFhf SERSX1NFR19GUyB8IFRYX0hEUl9TRUdfTFMKKwkJCQkJCXwgaW5mby0+cGt0X2xlbjsKKworCWlu Zm8tPnNlZy5lb19zb19zZWdsZW5iYXIgPSBwa3RfbGVuX2JhcjsKKworCWNwdV90b19iZTE2cygm aW5mby0+c2VnLmZsYWdzX3NlcW51bV9zZWdsZW4pOworCWNwdV90b19iZTE2cygmaW5mby0+c2Vn LmVvX3NvX3NlZ2xlbmJhcik7CisKKwkvKiBQcmVwYXJlIEVPUCBoZWFkZXIgKi8KKwlpbmZvLT5l b3Auc2VxX2xlbiA9ICgoaW5mby0+c2VxX251bSA8PCAxMSkgJgorCQkJICAgICBUWF9IRFJfRU9Q X1NFUU5VTSkgfCBpbmZvLT5wa3RfbGVuOworCWluZm8tPmVvcC5zZXFiYXJfbGVuYmFyID0gKCh+ aW5mby0+c2VxX251bSA8PCAxMSkgJgorCQkJCSAgIFRYX0hEUl9FT1BfU0VRTlVNQkFSKSB8IHBr dF9sZW5fYmFyOworCisJY3B1X3RvX2JlMTZzKCZpbmZvLT5lb3Auc2VxX2xlbik7CisJY3B1X3Rv X2JlMTZzKCZpbmZvLT5lb3Auc2VxYmFyX2xlbmJhcik7Cit9CisKK3N0YXRpYyBpbnQKK2F4ODg3 OTZjX2NoZWNrX2ZyZWVfcGFnZXMoc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwsIHU4 IG5lZWRfcGFnZXMpCit7CisJdTggZnJlZV9wYWdlczsKKwl1MTYgdG1wOworCisJV0FSTl9PTigh bXV0ZXhfaXNfbG9ja2VkKCZheF9sb2NhbC0+c3BpX2xvY2spKTsKKworCWZyZWVfcGFnZXMgPSBB WF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9URkJGQ1IpICYgVFhfRlJFRUJVRl9NQVNLOwor CWlmIChmcmVlX3BhZ2VzIDwgbmVlZF9wYWdlcykgeworCQkvKiBzY2hlZHVsZSBmcmVlIHBhZ2Ug aW50ZXJydXB0ICovCisJCXRtcCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX1RGQkZD UikKKwkJCQkmIFRGQkZDUl9TQ0hFX0ZSRUVfUEFHRTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5h eF9zcGksIHRtcCB8IFRGQkZDUl9UWF9QQUdFX1NFVCB8CisJCQkJVEZCRkNSX1NFVF9GUkVFX1BB R0UobmVlZF9wYWdlcyksCisJCQkJUDBfVEZCRkNSKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqCitheDg4Nzk2Y190eF9m aXh1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSkKK3sK KwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShu ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqdHhfc2tiOworCXN0cnVjdCB0eF9wa3RfaW5m byAqaW5mbzsKKwlzdHJ1Y3Qgc2tiX2RhdGEgKmVudHJ5OworCWludCBoZWFkcm9vbTsKKwlpbnQg dGFpbHJvb207CisJdTggbmVlZF9wYWdlczsKKwl1MTYgdG9sX2xlbiwgcGt0X2xlbjsKKwl1OCBw YWRsZW4sIHNlcV9udW07CisJdTggc3BpX2xlbiA9IGF4X2xvY2FsLT5heF9zcGkuY29tcCA/IDEg OiA0OworCisJaWYgKHNrYl9xdWV1ZV9lbXB0eShxKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlza2Ig PSBza2JfcGVlayhxKTsKKwlwa3RfbGVuID0gc2tiLT5sZW47CisJbmVlZF9wYWdlcyA9IChwa3Rf bGVuICsgVFhfT1ZFUkhFQUQgKyAxMjcpID4+IDc7CisJaWYgKGF4ODg3OTZjX2NoZWNrX2ZyZWVf cGFnZXMoYXhfbG9jYWwsIG5lZWRfcGFnZXMpICE9IDApCisJCXJldHVybiBOVUxMOworCisJaGVh ZHJvb20gPSBza2JfaGVhZHJvb20oc2tiKTsKKwl0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2Ip OworCXBhZGxlbiA9ICgocGt0X2xlbiArIDMpICYgMHg3RkMpIC0gcGt0X2xlbjsKKwl0b2xfbGVu ID0gKChwa3RfbGVuICsgMykgJiAweDdGQykgKworCQkJVFhfT1ZFUkhFQUQgKyBUWF9FT1BfU0la RSArIHNwaV9sZW47CisJc2VxX251bSA9ICsrYXhfbG9jYWwtPnNlcV9udW0gJiAweDFGOworCisJ aW5mbyA9IChzdHJ1Y3QgdHhfcGt0X2luZm8gKilza2ItPmNiOworCWluZm8tPnBrdF9sZW4gPSBw a3RfbGVuOworCisJaWYgKCghc2tiX2Nsb25lZChza2IpKSAmJgorCSAgICAoaGVhZHJvb20gPj0g KFRYX09WRVJIRUFEICsgc3BpX2xlbikpICYmCisJICAgICh0YWlscm9vbSA+PSAocGFkbGVuICsg VFhfRU9QX1NJWkUpKSkgeworCQlpbmZvLT5zZXFfbnVtID0gc2VxX251bTsKKwkJYXg4ODc5NmNf cHJvY190eF9oZHIoaW5mbywgc2tiLT5pcF9zdW1tZWQpOworCisJCS8qIFNPUCBhbmQgU0VHIGhl YWRlciAqLworCQltZW1jcHkoc2tiX3B1c2goc2tiLCBUWF9PVkVSSEVBRCksICZpbmZvLT5zb3As IFRYX09WRVJIRUFEKTsKKworCQkvKiBXcml0ZSBTUEkgVFhRIGhlYWRlciAqLworCQltZW1jcHko c2tiX3B1c2goc2tiLCBzcGlfbGVuKSwgdHhfY21kX2J1Ziwgc3BpX2xlbik7CisKKwkJLyogTWFr ZSAzMi1iaXQgYWxpZ25tZW50ICovCisJCXNrYl9wdXQoc2tiLCBwYWRsZW4pOworCisJCS8qIEVP UCBoZWFkZXIgKi8KKwkJbWVtY3B5KHNrYl9wdXQoc2tiLCBUWF9FT1BfU0laRSksICZpbmZvLT5l b3AsIFRYX0VPUF9TSVpFKTsKKworCQl0eF9za2IgPSBza2I7CisJCXNrYl91bmxpbmsoc2tiLCBx KTsKKwl9IGVsc2UgeworCQl0eF9za2IgPSBhbGxvY19za2IodG9sX2xlbiwgR0ZQX0tFUk5FTCk7 CisJCWlmICghdHhfc2tiKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJLyogV3JpdGUgU1BJIFRYUSBo ZWFkZXIgKi8KKwkJbWVtY3B5KHNrYl9wdXQodHhfc2tiLCBzcGlfbGVuKSwgdHhfY21kX2J1Ziwg c3BpX2xlbik7CisKKwkJaW5mby0+c2VxX251bSA9IHNlcV9udW07CisJCWF4ODg3OTZjX3Byb2Nf dHhfaGRyKGluZm8sIHNrYi0+aXBfc3VtbWVkKTsKKworCQkvKiBTT1AgYW5kIFNFRyBoZWFkZXIg Ki8KKwkJbWVtY3B5KHNrYl9wdXQodHhfc2tiLCBUWF9PVkVSSEVBRCksCisJCSAgICAgICAmaW5m by0+c29wLCBUWF9PVkVSSEVBRCk7CisKKwkJLyogUGFja2V0ICovCisJCW1lbWNweShza2JfcHV0 KHR4X3NrYiwgKChwa3RfbGVuICsgMykgJiAweEZGRkMpKSwKKwkJICAgICAgIHNrYi0+ZGF0YSwg cGt0X2xlbik7CisKKwkJLyogRU9QIGhlYWRlciAqLworCQltZW1jcHkoc2tiX3B1dCh0eF9za2Is IFRYX0VPUF9TSVpFKSwKKwkJICAgICAgICZpbmZvLT5lb3AsIFRYX0VPUF9TSVpFKTsKKworCQlz a2JfdW5saW5rKHNrYiwgcSk7CisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwl9CisKKwllbnRyeSA9 IChzdHJ1Y3Qgc2tiX2RhdGEgKil0eF9za2ItPmNiOworCW1lbXNldChlbnRyeSwgMCwgc2l6ZW9m KCplbnRyeSkpOworCWVudHJ5LT5sZW4gPSBwa3RfbGVuOworCisJaWYgKG5ldGlmX21zZ19wa3Rk YXRhKGF4X2xvY2FsKSkgeworCQljaGFyIHBmeFtJRk5BTVNJWiArIDddOworCisJCXNucHJpbnRm KHBmeCwgc2l6ZW9mKHBmeCksICIlczogICAgICIsIG5kZXYtPm5hbWUpOworCisJCW5ldGRldl9p bmZvKG5kZXYsICJUWCBwYWNrZXQgbGVuICVkLCB0b3RhbCBsZW4gJWQsIHNlcSAlZFxuIiwKKwkJ CSAgICBwa3RfbGVuLCB0eF9za2ItPmxlbiwgc2VxX251bSk7CisKKwkJbmV0ZGV2X2luZm8obmRl diwgIiAgU1BJIEhlYWRlcjpcbiIpOworCQlwcmludF9oZXhfZHVtcChLRVJOX0lORk8sIHBmeCwg RFVNUF9QUkVGSVhfT0ZGU0VULCAxNiwgMSwKKwkJCSAgICAgICB0eF9za2ItPmRhdGEsIDQsIDAp OworCisJCW5ldGRldl9pbmZvKG5kZXYsICIgIFRYIFNPUDpcbiIpOworCQlwcmludF9oZXhfZHVt cChLRVJOX0lORk8sIHBmeCwgRFVNUF9QUkVGSVhfT0ZGU0VULCAxNiwgMSwKKwkJCSAgICAgICB0 eF9za2ItPmRhdGEgKyA0LCBUWF9PVkVSSEVBRCwgMCk7CisKKwkJbmV0ZGV2X2luZm8obmRldiwg IiAgVFggcGFja2V0OlxuIik7CisJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1Q X1BSRUZJWF9PRkZTRVQsIDE2LCAxLAorCQkJICAgICAgIHR4X3NrYi0+ZGF0YSArIDQgKyBUWF9P VkVSSEVBRCwKKwkJCSAgICAgICB0eF9za2ItPmxlbiAtIFRYX0VPUF9TSVpFIC0gNCAtIFRYX09W RVJIRUFELCAwKTsKKworCQluZXRkZXZfaW5mbyhuZGV2LCAiICBUWCBFT1A6XG4iKTsKKwkJcHJp bnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBwZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCisJ CQkgICAgICAgdHhfc2tiLT5kYXRhICsgdHhfc2tiLT5sZW4gLSA0LCA0LCAwKTsKKwl9CisKKwly ZXR1cm4gdHhfc2tiOworfQorCitzdGF0aWMgaW50IGF4ODg3OTZjX2hhcmRfeG1pdChzdHJ1Y3Qg YXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqdHhfc2tiOwor CXN0cnVjdCBza2JfZGF0YSAqZW50cnk7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmF4 X2xvY2FsLT5zcGlfbG9jaykpOworCisJdHhfc2tiID0gYXg4ODc5NmNfdHhfZml4dXAoYXhfbG9j YWwtPm5kZXYsICZheF9sb2NhbC0+dHhfd2FpdF9xKTsKKworCWlmICghdHhfc2tiKQorCQlyZXR1 cm4gMDsKKworCWVudHJ5ID0gKHN0cnVjdCBza2JfZGF0YSAqKXR4X3NrYi0+Y2I7CisKKwlBWF9X UklURSgmYXhfbG9jYWwtPmF4X3NwaSwKKwkJIChUU05SX1RYQl9TVEFSVCB8IFRTTlJfUEtUX0NO VCgxKSksIFAwX1RTTlIpOworCisJYXhzcGlfd3JpdGVfdHhxKCZheF9sb2NhbC0+YXhfc3BpLCB0 eF9za2ItPmRhdGEsIHR4X3NrYi0+bGVuKTsKKworCWlmICgoKEFYX1JFQUQoJmF4X2xvY2FsLT5h eF9zcGksIFAwX1RTTlIpICYgVFhOUl9UWEJfSURMRSkgPT0gMCkgfHwKKwkgICAgKChJU1JfVFhF UlIgJiBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9JU1IpKSAhPSAwKSkgeworCQkvKiBB Y2sgdHggZXJyb3IgaW50ICovCisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJU1JfVFhF UlIsIFAwX0lTUik7CisKKwkJYXhfbG9jYWwtPnN0YXRzLnR4X2Ryb3BwZWQrKzsKKworCQluZXRp Zl9lcnIoYXhfbG9jYWwsIHR4X2VyciwgYXhfbG9jYWwtPm5kZXYsCisJCQkgICJUWCBGSUZPIGVy cm9yLCByZS1pbml0aWFsaXplIHRoZSBUWCBicmlkZ2VcbiIpOworCisJCS8qIFJlaW5pdGlhbCB0 eCBicmlkZ2UgKi8KKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFRYTlJfVFhCX1JFSU5J VCB8CisJCQlBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9UU05SKSwgUDBfVFNOUik7CisJ CWF4X2xvY2FsLT5zZXFfbnVtID0gMDsKKwl9IGVsc2UgeworCQlheF9sb2NhbC0+c3RhdHMudHhf cGFja2V0cysrOworCQlheF9sb2NhbC0+c3RhdHMudHhfYnl0ZXMgKz0gZW50cnktPmxlbjsKKwl9 CisKKwllbnRyeS0+c3RhdGUgPSB0eF9kb25lOworCWRldl9rZnJlZV9za2IodHhfc2tiKTsKKwor CXJldHVybiAxOworfQorCitzdGF0aWMgaW50CitheDg4Nzk2Y19zdGFydF94bWl0KHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBheDg4Nzk2 Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJc2tiX3F1 ZXVlX3RhaWwoJmF4X2xvY2FsLT50eF93YWl0X3EsIHNrYik7CisJaWYgKHNrYl9xdWV1ZV9sZW4o JmF4X2xvY2FsLT50eF93YWl0X3EpID4gVFhfUVVFVUVfSElHSF9XQVRFUikgeworCQluZXRpZl9l cnIoYXhfbG9jYWwsIHR4X3F1ZXVlZCwgbmRldiwKKwkJCSAgIlRvbyBtYW55IFRYIHBhY2tldHMg aW4gcXVldWUgJWRcbiIsCisJCQkgIHNrYl9xdWV1ZV9sZW4oJmF4X2xvY2FsLT50eF93YWl0X3Ep KTsKKworCQluZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOworCX0KKworCXNldF9iaXQoRVZFTlRfVFgs ICZheF9sb2NhbC0+ZmxhZ3MpOworCXNjaGVkdWxlX3dvcmsoJmF4X2xvY2FsLT5heF93b3JrKTsK KworCXJldHVybiBORVRERVZfVFhfT0s7Cit9CisKK3N0YXRpYyB2b2lkCitheDg4Nzk2Y19za2Jf cmV0dXJuKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLAorCQkgICAgc3RydWN0IHJ4X2hlYWRlciAqcnhoZHIpCit7CisJc3RydWN0IG5ldF9kZXZp Y2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKKwlpbnQgc3RhdHVzOworCisJZG8geworCQlpZiAo IShuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfUlhDU1VNKSkKKwkJCWJyZWFrOworCisJCS8qIGNo ZWNrc3VtIGVycm9yIGJpdCBpcyBzZXQgKi8KKwkJaWYgKChyeGhkci0+ZmxhZ3MgJiBSWF9IRFIz X0wzX0VSUikgfHwKKwkJICAgIChyeGhkci0+ZmxhZ3MgJiBSWF9IRFIzX0w0X0VSUikpCisJCQli cmVhazsKKworCQkvKiBPdGhlciB0eXBlcyBtYXkgYmUgaW5kaWNhdGVkIGJ5IG1vcmUgdGhhbiBv bmUgYml0LiAqLworCQlpZiAoKHJ4aGRyLT5mbGFncyAmIFJYX0hEUjNfTDRfVFlQRV9UQ1ApIHx8 CisJCSAgICAocnhoZHItPmZsYWdzICYgUlhfSERSM19MNF9UWVBFX1VEUCkpCisJCQlza2ItPmlw X3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOworCX0gd2hpbGUgKDApOworCisJYXhfbG9j YWwtPnN0YXRzLnJ4X3BhY2tldHMrKzsKKwlheF9sb2NhbC0+c3RhdHMucnhfYnl0ZXMgKz0gc2ti LT5sZW47CisJc2tiLT5kZXYgPSBuZGV2OworCisJc2tiLT50cnVlc2l6ZSA9IHNrYi0+bGVuICsg c2l6ZW9mKHN0cnVjdCBza19idWZmKTsKKwlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMo c2tiLCBheF9sb2NhbC0+bmRldik7CisKKwluZXRpZl9pbmZvKGF4X2xvY2FsLCByeF9zdGF0dXMs IG5kZXYsICI8IHJ4LCBsZW4gJXp1LCB0eXBlIDB4JXhcbiIsCisJCSAgIHNrYi0+bGVuICsgc2l6 ZW9mKHN0cnVjdCBldGhoZHIpLCBza2ItPnByb3RvY29sKTsKKworCXN0YXR1cyA9IG5ldGlmX3J4 KHNrYik7CisJaWYgKHN0YXR1cyAhPSBORVRfUlhfU1VDQ0VTUykKKwkJbmV0aWZfaW5mbyhheF9s b2NhbCwgcnhfZXJyLCBuZGV2LAorCQkJICAgIm5ldGlmX3J4IHN0YXR1cyAlZFxuIiwgc3RhdHVz KTsKK30KKworc3RhdGljIHZvaWQKK2F4ODg3OTZjX3J4X2ZpeHVwKHN0cnVjdCBheDg4Nzk2Y19k ZXZpY2UgKmF4X2xvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqcnhfc2tiKQoreworCXN0cnVjdCByeF9o ZWFkZXIgKnJ4aGRyID0gKHN0cnVjdCByeF9oZWFkZXIgKilyeF9za2ItPmRhdGE7CisJc3RydWN0 IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKKwl1MTYgbGVuOworCisJYmUxNl90 b19jcHVzKCZyeGhkci0+ZmxhZ3NfbGVuKTsKKwliZTE2X3RvX2NwdXMoJnJ4aGRyLT5zZXFfbGVu YmFyKTsKKwliZTE2X3RvX2NwdXMoJnJ4aGRyLT5mbGFncyk7CisKKwlpZiAoKCgoc2hvcnQpcnho ZHItPmZsYWdzX2xlbikgJiBSWF9IRFIxX1BLVF9MRU4pICE9CisJCQkgKH4oKHNob3J0KXJ4aGRy LT5zZXFfbGVuYmFyKSAmIDB4N0ZGKSkgeworCQluZXRpZl9lcnIoYXhfbG9jYWwsIHJ4X2Vyciwg bmRldiwgIkhlYWRlciBlcnJvclxuIik7CisKKwkJYXhfbG9jYWwtPnN0YXRzLnJ4X2ZyYW1lX2Vy cm9ycysrOworCQlrZnJlZV9za2Iocnhfc2tiKTsKKwkJcmV0dXJuOworCX0KKworCWlmICgocnho ZHItPmZsYWdzX2xlbiAmIFJYX0hEUjFfTUlJX0VSUikgfHwKKwkgICAgKHJ4aGRyLT5mbGFnc19s ZW4gJiBSWF9IRFIxX0NSQ19FUlIpKSB7CisJCW5ldGlmX2VycihheF9sb2NhbCwgcnhfZXJyLCBu ZGV2LCAiQ1JDIG9yIE1JSSBlcnJvclxuIik7CisKKwkJYXhfbG9jYWwtPnN0YXRzLnJ4X2NyY19l cnJvcnMrKzsKKwkJa2ZyZWVfc2tiKHJ4X3NrYik7CisJCXJldHVybjsKKwl9CisKKwlsZW4gPSBy eGhkci0+ZmxhZ3NfbGVuICYgUlhfSERSMV9QS1RfTEVOOworCWlmIChuZXRpZl9tc2dfcGt0ZGF0 YShheF9sb2NhbCkpIHsKKwkJY2hhciBwZnhbSUZOQU1TSVogKyA3XTsKKworCQlzbnByaW50Zihw ZngsIHNpemVvZihwZngpLCAiJXM6ICAgICAiLCBuZGV2LT5uYW1lKTsKKwkJbmV0ZGV2X2luZm8o bmRldiwgIlJYIGRhdGEsIHRvdGFsIGxlbiAlZCwgcGFja2V0IGxlbiAlZFxuIiwKKwkJCSAgICBy eF9za2ItPmxlbiwgbGVuKTsKKworCQluZXRkZXZfaW5mbyhuZGV2LCAiICBEdW1wIFJYIHBhY2tl dCBoZWFkZXI6Iik7CisJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJ WF9PRkZTRVQsIDE2LCAxLAorCQkJICAgICAgIHJ4X3NrYi0+ZGF0YSwgc2l6ZW9mKCpyeGhkciks IDApOworCisJCW5ldGRldl9pbmZvKG5kZXYsICIgIER1bXAgUlggcGFja2V0OiIpOworCQlwcmlu dF9oZXhfZHVtcChLRVJOX0lORk8sIHBmeCwgRFVNUF9QUkVGSVhfT0ZGU0VULCAxNiwgMSwKKwkJ CSAgICAgICByeF9za2ItPmRhdGEgKyBzaXplb2YoKnJ4aGRyKSwgbGVuLCAwKTsKKwl9CisKKwlz a2JfcHVsbChyeF9za2IsIHNpemVvZigqcnhoZHIpKTsKKwlfX3Bza2JfdHJpbShyeF9za2IsIGxl bik7CisKKwlyZXR1cm4gYXg4ODc5NmNfc2tiX3JldHVybihheF9sb2NhbCwgcnhfc2tiLCByeGhk cik7Cit9CisKK3N0YXRpYyBpbnQgYXg4ODc5NmNfcmVjZWl2ZShzdHJ1Y3QgbmV0X2RldmljZSAq bmRldikKK3sKKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZj X2RldmljZShuZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCXN0cnVjdCBza2JfZGF0YSAq ZW50cnk7CisJdTE2IHdfY291bnQsIHBrdF9sZW47CisJdTggcGt0X2NudDsKKworCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmYXhfbG9jYWwtPnNwaV9sb2NrKSk7CisKKwkvKiBjaGVjayByeCBw YWNrZXQgYW5kIHRvdGFsIHdvcmQgY291bnQgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3Nw aSwgQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUlRXQ1IpCisJCSAgfCBSVFdDUl9SWF9M QVRDSCwgUDBfUlRXQ1IpOworCisJcGt0X2NudCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGks IFAwX1JYQkNSMikgJiBSWEJDUjJfUEtUX01BU0s7CisJaWYgKCFwa3RfY250KQorCQlyZXR1cm4g MDsKKworCXBrdF9sZW4gPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9SQ1BIUikgJiAw eDdGRjsKKworCXdfY291bnQgPSAoKHBrdF9sZW4gKyA2ICsgMykgJiAweEZGRkMpID4+IDE7CisK Kwlza2IgPSBhbGxvY19za2IoKHdfY291bnQgKiAyKSwgR0ZQX0FUT01JQyk7CisJaWYgKCFza2Ip IHsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFJYQkNSMV9SWEJfRElTQ0FSRCwgUDBf UlhCQ1IxKTsKKwkJcmV0dXJuIDA7CisJfQorCWVudHJ5ID0gKHN0cnVjdCBza2JfZGF0YSAqKXNr Yi0+Y2I7CisKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUlhCQ1IxX1JYQl9TVEFSVCB8 IHdfY291bnQsIFAwX1JYQkNSMSk7CisKKwlheHNwaV9yZWFkX3J4cSgmYXhfbG9jYWwtPmF4X3Nw aSwKKwkJICAgICAgIHNrYl9wdXQoc2tiLCB3X2NvdW50ICogMiksIHNrYi0+bGVuKTsKKworCS8q IENoZWNrIGlmIHJ4IGJyaWRnZSBpcyBpZGxlICovCisJaWYgKChBWF9SRUFEKCZheF9sb2NhbC0+ YXhfc3BpLCBQMF9SWEJDUjIpICYgUlhCQ1IyX1JYQl9JRExFKSA9PSAwKSB7CisJCW5ldGlmX2Vy cihheF9sb2NhbCwgcnhfZXJyLCBuZGV2LAorCQkJICAiUnggQnJpZGdlIGlzIG5vdCBpZGxlXG4i KTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFJYQkNSMl9SWEJfUkVJTklULCBQMF9S WEJDUjIpOworCisJCWVudHJ5LT5zdGF0ZSA9IHJ4X2VycjsKKwl9IGVsc2UgeworCQllbnRyeS0+ c3RhdGUgPSByeF9kb25lOworCX0KKworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJU1Jf UlhQS1QsIFAwX0lTUik7CisKKwlheDg4Nzk2Y19yeF9maXh1cChheF9sb2NhbCwgc2tiKTsKKwor CXJldHVybiAxOworfQorCitzdGF0aWMgaW50IGF4ODg3OTZjX3Byb2Nlc3NfaXNyKHN0cnVjdCBh eDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsKQoreworCXUxNiBpc3I7CisJdTggZG9uZSA9IDA7CisJ c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKKworCVdBUk5fT04oIW11 dGV4X2lzX2xvY2tlZCgmYXhfbG9jYWwtPnNwaV9sb2NrKSk7CisKKwlpc3IgPSBBWF9SRUFEKCZh eF9sb2NhbC0+YXhfc3BpLCBQMF9JU1IpOworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBp c3IsIFAwX0lTUik7CisKKwluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYsICIgIElTUiAw eCUwNHhcbiIsIGlzcik7CisKKwlpZiAoaXNyICYgSVNSX1RYRVJSKSB7CisJCW5ldGlmX2RiZyhh eF9sb2NhbCwgaW50ciwgbmRldiwgIiAgVFhFUlIgaW50ZXJydXB0XG4iKTsKKwkJQVhfV1JJVEUo JmF4X2xvY2FsLT5heF9zcGksIFRYTlJfVFhCX1JFSU5JVCwgUDBfVFNOUik7CisJCWF4X2xvY2Fs LT5zZXFfbnVtID0gMHgxZjsKKwl9CisKKwlpZiAoaXNyICYgSVNSX1RYUEFHRVMpIHsKKwkJbmV0 aWZfZGJnKGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBUWFBBR0VTIGludGVycnVwdFxuIik7CisJ CXNldF9iaXQoRVZFTlRfVFgsICZheF9sb2NhbC0+ZmxhZ3MpOworCX0KKworCWlmIChpc3IgJiBJ U1JfTElOSykgeworCQluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYsICIgIExpbmsgY2hh bmdlIGludGVycnVwdFxuIik7CisJCXBoeV9tYWNfaW50ZXJydXB0KGF4X2xvY2FsLT5uZGV2LT5w aHlkZXYpOworCX0KKworCWlmIChpc3IgJiBJU1JfUlhQS1QpIHsKKwkJbmV0aWZfZGJnKGF4X2xv Y2FsLCBpbnRyLCBuZGV2LCAiICBSWCBpbnRlcnJ1cHRcbiIpOworCQlkb25lID0gYXg4ODc5NmNf cmVjZWl2ZShheF9sb2NhbC0+bmRldik7CisJfQorCisJcmV0dXJuIGRvbmU7Cit9CisKK3N0YXRp YyBpcnFyZXR1cm5fdCBheDg4Nzk2Y19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3Rh bmNlKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZGV2X2luc3RhbmNlOworCXN0cnVj dCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOwor CisJaWYgKCFuZGV2KSB7CisJCXByX2VycigiaXJxICVkIGZvciB1bmtub3duIGRldmljZS5cbiIs IGlycSk7CisJCXJldHVybiBJUlFfUkVUVkFMKDApOworCX0KKworCWRpc2FibGVfaXJxX25vc3lu YyhpcnEpOworCisJbmV0aWZfZGJnKGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiSW50ZXJydXB0IG9j Y3VycmVkXG4iKTsKKworCXNldF9iaXQoRVZFTlRfSU5UUiwgJmF4X2xvY2FsLT5mbGFncyk7CisJ c2NoZWR1bGVfd29yaygmYXhfbG9jYWwtPmF4X3dvcmspOworCisJcmV0dXJuIElSUV9IQU5ETEVE OworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKK3sKKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9CisJCQljb250YWluZXJf b2Yod29yaywgc3RydWN0IGF4ODg3OTZjX2RldmljZSwgYXhfd29yayk7CisKKwltdXRleF9sb2Nr KCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJaWYgKHRlc3RfYml0KEVWRU5UX1NFVF9NVUxUSSwg JmF4X2xvY2FsLT5mbGFncykpIHsKKwkJYXg4ODc5NmNfc2V0X2h3X211bHRpY2FzdChheF9sb2Nh bC0+bmRldik7CisJCWNsZWFyX2JpdChFVkVOVF9TRVRfTVVMVEksICZheF9sb2NhbC0+ZmxhZ3Mp OworCX0KKworCWlmICh0ZXN0X2JpdChFVkVOVF9JTlRSLCAmYXhfbG9jYWwtPmZsYWdzKSkgewor CQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgSU1SX01BU0tBTEwsIFAwX0lNUik7CisKKwkJ d2hpbGUgKDEpIHsKKwkJCWlmICghYXg4ODc5NmNfcHJvY2Vzc19pc3IoYXhfbG9jYWwpKQorCQkJ CWJyZWFrOworCQl9CisKKwkJY2xlYXJfYml0KEVWRU5UX0lOVFIsICZheF9sb2NhbC0+ZmxhZ3Mp OworCisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJTVJfREVGQVVMVCwgUDBfSU1SKTsK KworCQllbmFibGVfaXJxKGF4X2xvY2FsLT5uZGV2LT5pcnEpOworCX0KKworCWlmICh0ZXN0X2Jp dChFVkVOVF9UWCwgJmF4X2xvY2FsLT5mbGFncykpIHsKKwkJd2hpbGUgKHNrYl9xdWV1ZV9sZW4o JmF4X2xvY2FsLT50eF93YWl0X3EpKSB7CisJCQlpZiAoIWF4ODg3OTZjX2hhcmRfeG1pdChheF9s b2NhbCkpCisJCQkJYnJlYWs7CisJCX0KKworCQljbGVhcl9iaXQoRVZFTlRfVFgsICZheF9sb2Nh bC0+ZmxhZ3MpOworCisJCWlmIChuZXRpZl9xdWV1ZV9zdG9wcGVkKGF4X2xvY2FsLT5uZGV2KSAm JgorCQkgICAgKHNrYl9xdWV1ZV9sZW4oJmF4X2xvY2FsLT50eF93YWl0X3EpIDwgVFhfUVVFVUVf TE9XX1dBVEVSKSkKKwkJCW5ldGlmX3dha2VfcXVldWUoYXhfbG9jYWwtPm5kZXYpOworCX0KKwor CW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKK30KKworc3RhdGljIHN0cnVjdCBu ZXRfZGV2aWNlX3N0YXRzICpheDg4Nzk2Y19nZXRfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19k ZXZpY2UobmRldik7CisKKwlyZXR1cm4gJmF4X2xvY2FsLT5zdGF0czsKK30KKworc3RhdGljIHZv aWQgYXg4ODc5NmNfc2V0X21hYyhzdHJ1Y3QgIGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpCit7 CisJdTE2IG1hY2NyOworCisJbWFjY3IgPSAoYXhfbG9jYWwtPmxpbmspID8gTUFDQ1JfUlhFTiA6 IDA7CisKKwlzd2l0Y2ggKGF4X2xvY2FsLT5zcGVlZCkgeworCWNhc2UgU1BFRURfMTAwOgorCQlt YWNjciB8PSBNQUNDUl9TUEVFRF8xMDA7CisJY2FzZSBTUEVFRF8xMDoKKwljYXNlIFNQRUVEX1VO S05PV046CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKGF4 X2xvY2FsLT5kdXBsZXgpIHsKKwljYXNlIERVUExFWF9GVUxMOgorCQltYWNjciB8PSBNQUNDUl9T UEVFRF8xMDA7CisJY2FzZSBEVVBMRVhfSEFMRjoKKwljYXNlIERVUExFWF9VTktOT1dOOgorCQli cmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm47CisJfQorCisJaWYgKGF4X2xvY2FsLT5mbG93Y3Ry bCAmIEFYX0ZDX0FORUcgJiYKKwkgICAgYXhfbG9jYWwtPnBoeWRldi0+YXV0b25lZykgeworCQlt YWNjciB8PSBheF9sb2NhbC0+cGF1c2UgPyBNQUNDUl9SWEZDX0VOQUJMRSA6IDA7CisJCW1hY2Ny IHw9ICFheF9sb2NhbC0+cGF1c2UgIT0gIWF4X2xvY2FsLT5hc3ltX3BhdXNlID8KKwkJCU1BQ0NS X1RYRkNfRU5BQkxFIDogMDsKKwl9IGVsc2UgeworCQltYWNjciB8PSAoYXhfbG9jYWwtPmZsb3dj dHJsICYgQVhfRkNfUlgpID8gTUFDQ1JfUlhGQ19FTkFCTEUgOiAwOworCQltYWNjciB8PSAoYXhf bG9jYWwtPmZsb3djdHJsICYgQVhfRkNfVFgpID8gTUFDQ1JfVFhGQ19FTkFCTEUgOiAwOworCX0K KworCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwltYWNjciB8PSBBWF9SRUFE KCZheF9sb2NhbC0+YXhfc3BpLCBQMF9NQUNDUikgJgorCQl+KE1BQ0NSX0RVUExFWF9GVUxMIHwg TUFDQ1JfU1BFRURfMTAwIHwKKwkJICBNQUNDUl9UWEZDX0VOQUJMRSB8IE1BQ0NSX1JYRkNfRU5B QkxFKTsKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgbWFjY3IsIFAwX01BQ0NSKTsKKwor CW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKK30KKworc3RhdGljIHZvaWQgYXg4 ODc5NmNfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0 cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYp OworCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBuZGV2LT5waHlkZXY7CisJYm9vbCB1cGRh dGUgPSBmYWxzZTsKKworCWlmIChwaHlkZXYtPmxpbmsgJiYgKGF4X2xvY2FsLT5zcGVlZCAhPSBw aHlkZXYtPnNwZWVkIHx8CisJCQkgICAgIGF4X2xvY2FsLT5kdXBsZXggIT0gcGh5ZGV2LT5kdXBs ZXggfHwKKwkJCSAgICAgYXhfbG9jYWwtPnBhdXNlICE9IHBoeWRldi0+cGF1c2UgfHwKKwkJCSAg ICAgYXhfbG9jYWwtPmFzeW1fcGF1c2UgIT0gcGh5ZGV2LT5hc3ltX3BhdXNlKSkgeworCQlheF9s b2NhbC0+c3BlZWQgPSBwaHlkZXYtPnNwZWVkOworCQlheF9sb2NhbC0+ZHVwbGV4ID0gcGh5ZGV2 LT5kdXBsZXg7CisJCWF4X2xvY2FsLT5wYXVzZSA9IHBoeWRldi0+cGF1c2U7CisJCWF4X2xvY2Fs LT5hc3ltX3BhdXNlID0gcGh5ZGV2LT5hc3ltX3BhdXNlOworCQl1cGRhdGUgPSB0cnVlOworCX0K KworCWlmIChwaHlkZXYtPmxpbmsgIT0gYXhfbG9jYWwtPmxpbmspIHsKKwkJaWYgKCFwaHlkZXYt PmxpbmspIHsKKwkJCWF4X2xvY2FsLT5zcGVlZCA9IFNQRUVEX1VOS05PV047CisJCQlheF9sb2Nh bC0+ZHVwbGV4ID0gRFVQTEVYX1VOS05PV047CisJCX0KKworCQlheF9sb2NhbC0+bGluayA9IHBo eWRldi0+bGluazsKKwkJdXBkYXRlID0gdHJ1ZTsKKwl9CisKKwlpZiAodXBkYXRlKQorCQlheDg4 Nzk2Y19zZXRfbWFjKGF4X2xvY2FsKTsKKworCWlmIChuZXRfcmF0ZWxpbWl0KCkpCisJCXBoeV9w cmludF9zdGF0dXMobmRldi0+cGh5ZGV2KTsKK30KKworc3RhdGljIHZvaWQgYXg4ODc5NmNfc2V0 X2NzdW1zKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsKQoreworCXN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5kZXY7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2Nr ZWQoJmF4X2xvY2FsLT5zcGlfbG9jaykpOworCisJaWYgKG5kZXYtPmZlYXR1cmVzICYgTkVUSUZf Rl9SWENTVU0pIHsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIENPRVJDUjBfREVGQVVM VCwgUDRfQ09FUkNSMCk7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBDT0VSQ1IxX0RF RkFVTFQsIFA0X0NPRVJDUjEpOworCX0gZWxzZSB7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhf c3BpLCAwLCBQNF9DT0VSQ1IwKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIDAsIFA0 X0NPRVJDUjEpOworCX0KKworCWlmIChuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfSFdfQ1NVTSkg eworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgQ09FVENSMF9ERUZBVUxULCBQNF9DT0VU Q1IwKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIENPRVRDUjFfVFhQUFBFLCBQNF9D T0VUQ1IxKTsKKwl9IGVsc2UgeworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgMCwgUDRf Q09FVENSMCk7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAwLCBQNF9DT0VUQ1IxKTsK Kwl9Cit9CisKK3N0YXRpYyBpbnQKK2F4ODg3OTZjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19k ZXZpY2UobmRldik7CisJaW50IHJldDsKKwl1bnNpZ25lZCBsb25nIGlycV9mbGFnID0gSVJRRl9T SEFSRUQ7CisJaW50IGZjID0gQVhfRkNfTk9ORTsKKworCXJldCA9IHJlcXVlc3RfaXJxKG5kZXYt PmlycSwgYXg4ODc5NmNfaW50ZXJydXB0LAorCQkJICBpcnFfZmxhZywgbmRldi0+bmFtZSwgbmRl dik7CisJaWYgKHJldCkgeworCQluZXRkZXZfZXJyKG5kZXYsICJ1bmFibGUgdG8gZ2V0IElSUSAl ZCAoZXJybm89JWQpLlxuIiwKKwkJCSAgIG5kZXYtPmlycSwgcmV0KTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJcmV0ID0gYXg4ODc5 NmNfc29mdF9yZXNldChheF9sb2NhbCk7CisJaWYgKHJldCA8IDApIHsKKwkJbXV0ZXhfdW5sb2Nr KCZheF9sb2NhbC0+c3BpX2xvY2spOworCQlyZXR1cm4gcmV0OworCX0KKwlheF9sb2NhbC0+c2Vx X251bSA9IDB4MWY7CisKKwlheDg4Nzk2Y19zZXRfbWFjX2FkZHIobmRldik7CisJYXg4ODc5NmNf c2V0X2NzdW1zKGF4X2xvY2FsKTsKKworCS8qIERpc2FibGUgc3R1ZmZpbmcgcGFja2V0ICovCisJ QVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCisJCSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3Bp LCBQMV9SWEJTUENSKQorCQkgJiB+UlhCU1BDUl9TVFVGX0VOQUJMRSwgUDFfUlhCU1BDUik7CisK KwkvKiBFbmFibGUgUlggcGFja2V0IHByb2Nlc3MgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4 X3NwaSwgUlBQRVJfUlhFTiwgUDFfUlBQRVIpOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9z cGksIEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX0ZFUikKKwkJIHwgRkVSX1JYRU4gfCBG RVJfVFhFTiB8IEZFUl9CU1dBUCB8IEZFUl9JUlFfUFVMTCwgUDBfRkVSKTsKKworCS8qIFNldHVw IExFRCBtb2RlICovCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCisJCSAoTENSX0xFRDBf RU4gfCBMQ1JfTEVEMF9EVVBMRVggfCBMQ1JfTEVEMV9FTiB8CisJCSBMQ1JfTEVEMV8xMDBNT0RF KSwgUDJfTENSMCk7CisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCisJCSAoQVhfUkVBRCgm YXhfbG9jYWwtPmF4X3NwaSwgUDJfTENSMSkgJiBMQ1JfTEVEMl9NQVNLKSB8CisJCSBMQ1JfTEVE Ml9FTiB8IExDUl9MRUQyX0xJTkssIFAyX0xDUjEpOworCisJLyogRGlzYWJsZSBQSFkgYXV0by1w b2xsaW5nICovCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFBDUl9QSFlJRChBWDg4Nzk2 Q19QSFlfSUQpLCBQMl9QQ1IpOworCisJLyogRW5hYmxlIE1BQyBpbnRlcnJ1cHRzICovCisJQVhf V1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIElNUl9ERUZBVUxULCBQMF9JTVIpOworCisJbXV0ZXhf dW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJLyogU2V0dXAgZmxvdy1jb250cm9sIGNv bmZpZ3VyYXRpb24gKi8KKwlwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKGF4X2xvY2FsLT5waHlkZXYp OworCisJaWYgKGF4X2xvY2FsLT5waHlkZXYtPmFkdmVydGlzaW5nICYmCisJICAgIChsaW5rbW9k ZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsCisJCQkgICAgICAgYXhfbG9j YWwtPnBoeWRldi0+YWR2ZXJ0aXNpbmcpIHx8CisJICAgICBsaW5rbW9kZV90ZXN0X2JpdChFVEhU T09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwKKwkJCSAgICAgICBheF9sb2NhbC0+cGh5ZGV2 LT5hZHZlcnRpc2luZykpKQorCQlmYyB8PSBBWF9GQ19BTkVHOworCisJZmMgfD0gbGlua21vZGVf dGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULAorCQkJCWF4X2xvY2FsLT5waHlk ZXYtPmFkdmVydGlzaW5nKSA/IEFYX0ZDX1JYIDogMDsKKwlmYyB8PSAobGlua21vZGVfdGVzdF9i aXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULAorCQkJCSBheF9sb2NhbC0+cGh5ZGV2LT5h ZHZlcnRpc2luZykgIT0KKwkgICAgICAgbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01P REVfQXN5bV9QYXVzZV9CSVQsCisJCQkJIGF4X2xvY2FsLT5waHlkZXYtPmFkdmVydGlzaW5nKSkg PyBBWF9GQ19UWCA6IDA7CisJYXhfbG9jYWwtPmZsb3djdHJsID0gZmM7CisKKwlwaHlfc3RhcnQo YXhfbG9jYWwtPm5kZXYtPnBoeWRldik7CisKKwluZXRpZl9zdGFydF9xdWV1ZShuZGV2KTsKKwor CXNwaV9tZXNzYWdlX2luaXQoJmF4X2xvY2FsLT5heF9zcGkucnhfbXNnKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19mcmVlX3NrYl9xdWV1ZShzdHJ1Y3Qgc2tfYnVm Zl9oZWFkICpxKQoreworCXN0cnVjdCBza19idWZmICpza2I7CisKKwl3aGlsZSAocS0+cWxlbikg eworCQlza2IgPSBza2JfZGVxdWV1ZShxKTsKKwkJa2ZyZWVfc2tiKHNrYik7CisJfQorfQorCitz dGF0aWMgaW50CitheDg4Nzk2Y19jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlz dHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2 KTsKKworCW5ldGlmX3N0b3BfcXVldWUobmRldik7CisJcGh5X3N0b3AobmRldi0+cGh5ZGV2KTsK KworCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwkvKiBEaXNhYmxlIE1BQyBp bnRlcnJ1cHRzICovCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIElNUl9NQVNLQUxMLCBQ MF9JTVIpOworCWF4ODg3OTZjX2ZyZWVfc2tiX3F1ZXVlKCZheF9sb2NhbC0+dHhfd2FpdF9xKTsK KwlheDg4Nzk2Y19zb2Z0X3Jlc2V0KGF4X2xvY2FsKTsKKworCW11dGV4X3VubG9jaygmYXhfbG9j YWwtPnNwaV9sb2NrKTsKKworCWZyZWVfaXJxKG5kZXYtPmlycSwgbmRldik7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludAorYXg4ODc5NmNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2LCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcykKK3sKKwlzdHJ1Y3QgYXg4ODc5 NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKKwluZXRkZXZf ZmVhdHVyZXNfdCBjaGFuZ2VkID0gZmVhdHVyZXMgXiBuZGV2LT5mZWF0dXJlczsKKworCWlmICgh KGNoYW5nZWQgJiAoTkVUSUZfRl9SWENTVU0gfCBORVRJRl9GX0hXX0NTVU0pKSkKKwkJcmV0dXJu IDA7CisKKwluZGV2LT5mZWF0dXJlcyA9IGZlYXR1cmVzOworCisJaWYgKGNoYW5nZWQgJiAoTkVU SUZfRl9SWENTVU0gfCBORVRJRl9GX0hXX0NTVU0pKQorCQlheDg4Nzk2Y19zZXRfY3N1bXMoYXhf bG9jYWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2Rldmlj ZV9vcHMgYXg4ODc5NmNfbmV0ZGV2X29wcyA9IHsKKwkubmRvX29wZW4JCT0gYXg4ODc5NmNfb3Bl biwKKwkubmRvX3N0b3AJCT0gYXg4ODc5NmNfY2xvc2UsCisJLm5kb19zdGFydF94bWl0CQk9IGF4 ODg3OTZjX3N0YXJ0X3htaXQsCisJLm5kb19nZXRfc3RhdHMJCT0gYXg4ODc5NmNfZ2V0X3N0YXRz LAorCS5uZG9fZG9faW9jdGwJCT0gYXg4ODc5NmNfaW9jdGwsCisJLm5kb19zZXRfbWFjX2FkZHJl c3MJPSBldGhfbWFjX2FkZHIsCisJLm5kb19zZXRfZmVhdHVyZXMJPSBheDg4Nzk2Y19zZXRfZmVh dHVyZXMsCit9OworCitzdGF0aWMgaW50IGF4ODg3OTZjX2hhcmRfcmVzZXQoc3RydWN0IGF4ODg3 OTZjX2RldmljZSAqYXhfbG9jYWwpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gKHN0cnVjdCBk ZXZpY2UgKikmYXhfbG9jYWwtPnNwaS0+ZGV2OworCXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dw aW87CisKKwkvKiByZXNldCBpbmZvICovCisJcmVzZXRfZ3BpbyA9IGdwaW9kX2dldChkZXYsICJy ZXNldCIsIDApOworCWlmIChJU19FUlIocmVzZXRfZ3BpbykpIHsKKwkJZGV2X2VycihkZXYsICJD b3VsZCBub3QgZ2V0ICdyZXNldCcgR1BJTzogJWxkIiwgUFRSX0VSUihyZXNldF9ncGlvKSk7CisJ CXJldHVybiBQVFJfRVJSKHJlc2V0X2dwaW8pOworCX0KKworCS8qIHNldCByZXNldCAqLworCWdw aW9kX2RpcmVjdGlvbl9vdXRwdXQocmVzZXRfZ3BpbywgMSk7CisJbXNsZWVwKDEwMCk7CisJZ3Bp b2RfZGlyZWN0aW9uX291dHB1dChyZXNldF9ncGlvLCAwKTsKKwlncGlvZF9wdXQocmVzZXRfZ3Bp byk7CisJbXNsZWVwKDIwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF4ODg3OTZj X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXY7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWw7CisJY2hhciBwaHlfaWRbTUlJ X0JVU19JRF9TSVpFICsgM107CisJaW50IHJldDsKKwl1MTYgdGVtcDsKKworCW5kZXYgPSBkZXZt X2FsbG9jX2V0aGVyZGV2KCZzcGktPmRldiwgc2l6ZW9mKCpheF9sb2NhbCkpOworCWlmICghbmRl dikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlTRVRfTkVUREVWX0RFVihuZGV2LCAmc3BpLT5kZXYp OworCisJYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisJbWVtc2V0KGF4X2xv Y2FsLCAwLCBzaXplb2YoKmF4X2xvY2FsKSk7CisKKwlkZXZfc2V0X2RydmRhdGEoJnNwaS0+ZGV2 LCBheF9sb2NhbCk7CisJYXhfbG9jYWwtPnNwaSA9IHNwaTsKKwlheF9sb2NhbC0+YXhfc3BpLnNw aSA9IHNwaTsKKworCWF4X2xvY2FsLT5uZGV2ID0gbmRldjsKKwlheF9sb2NhbC0+Y2FwYWJpbGl0 aWVzIHw9IGNvbXAgPyBBWF9DQVBfQ09NUCA6IDA7CisJYXhfbG9jYWwtPm1zZ19lbmFibGUgPSBt c2dfZW5hYmxlOworCW11dGV4X2luaXQoJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwlheF9sb2Nh bC0+bWRpb2J1cyA9IGRldm1fbWRpb2J1c19hbGxvYygmc3BpLT5kZXYpOworCWlmICghYXhfbG9j YWwtPm1kaW9idXMpCisJCXJldHVybiAtRU5PTUVNOworCisJYXhfbG9jYWwtPm1kaW9idXMtPnBy aXYgPSBheF9sb2NhbDsKKwlheF9sb2NhbC0+bWRpb2J1cy0+cmVhZCA9IGF4ODg3OTZjX21kaW9f cmVhZDsKKwlheF9sb2NhbC0+bWRpb2J1cy0+d3JpdGUgPSBheDg4Nzk2Y19tZGlvX3dyaXRlOwor CWF4X2xvY2FsLT5tZGlvYnVzLT5uYW1lID0gImF4ODg5NzZjLW1kaW9idXMiOworCWF4X2xvY2Fs LT5tZGlvYnVzLT5waHlfbWFzayA9IH5CSVQoQVg4ODc5NkNfUEhZX0lEKTsKKwlheF9sb2NhbC0+ bWRpb2J1cy0+cGFyZW50ID0gJnNwaS0+ZGV2OworCisJc25wcmludGYoYXhfbG9jYWwtPm1kaW9i dXMtPmlkLCBNSUlfQlVTX0lEX1NJWkUsCisJCSAiYXg4ODc5NmMtJXMuJXUiLCBkZXZfbmFtZSgm c3BpLT5kZXYpLCBzcGktPmNoaXBfc2VsZWN0KTsKKworCXJldCA9IGRldm1fbWRpb2J1c19yZWdp c3Rlcigmc3BpLT5kZXYsIGF4X2xvY2FsLT5tZGlvYnVzKTsKKwlpZiAocmV0IDwgMCkgeworCQlk ZXZfZXJyKCZzcGktPmRldiwgIkNvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xuIik7CisJCXJl dHVybiByZXQ7CisJfQorCisJaWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpIHsKKwkJZGV2 X2luZm8oJnNwaS0+ZGV2LCAiQVg4ODc5NkMtU1BJIENvbmZpZ3VyYXRpb246XG4iKTsKKwkJZGV2 X2luZm8oJnNwaS0+ZGV2LCAiICAgIENvbXByZXNzaW9uIDogJXNcbiIsCisJCQkgYXhfbG9jYWwt PmNhcGFiaWxpdGllcyAmIEFYX0NBUF9DT01QID8gIk9OIiA6ICJPRkYiKTsKKwl9CisKKwluZGV2 LT5pcnEgPSBzcGktPmlycTsKKwluZGV2LT5uZXRkZXZfb3BzID0gJmF4ODg3OTZjX25ldGRldl9v cHM7CisJbmRldi0+ZXRodG9vbF9vcHMgPSAmYXg4ODc5NmNfZXRodG9vbF9vcHM7CisJbmRldi0+ aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19DU1VNIHwgTkVUSUZfRl9SWENTVU07CisJbmRldi0+ ZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19DU1VNIHwgTkVUSUZfRl9SWENTVU07CisJbmRldi0+aGFy ZF9oZWFkZXJfbGVuICs9IChUWF9PVkVSSEVBRCArIDQpOworCisJbXV0ZXhfbG9jaygmYXhfbG9j YWwtPnNwaV9sb2NrKTsKKworCS8qIGF4ODg3OTZjIGdwaW8gcmVzZXQgKi8KKwlheDg4Nzk2Y19o YXJkX3Jlc2V0KGF4X2xvY2FsKTsKKworCS8qIFJlc2V0IEFYODg3OTZDICovCisJcmV0ID0gYXg4 ODc5NmNfc29mdF9yZXNldChheF9sb2NhbCk7CisJaWYgKHJldCA8IDApIHsKKwkJcmV0ID0gLUVO T0RFVjsKKwkJZ290byBlcnI7CisJfQorCS8qIENoZWNrIGJvYXJkIHJldmlzaW9uICovCisJdGVt cCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAyX0NSSVIpOworCWlmICgodGVtcCAmIDB4 RikgIT0gMHgwKSB7CisJCWRldl9lcnIoJnNwaS0+ZGV2LCAic3BpIHJlYWQgZmFpbGVkOiAlZFxu IiwgdGVtcCk7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8gZXJyOworCX0KKworCXRlbXAgPSBB WF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9CT1IpOworCWlmICh0ZW1wID09IDB4MTIzNCkg eworCQlheF9sb2NhbC0+cGxhdF9lbmRpYW4gPSBQTEFUX0xJVFRMRV9FTkRJQU47CisJfSBlbHNl IHsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIDB4RkZGRiwgUDBfQk9SKTsKKwkJYXhf bG9jYWwtPnBsYXRfZW5kaWFuID0gUExBVF9CSUdfRU5ESUFOOworCX0KKworCS8qUmVsb2FkIEVF UFJPTSovCisJYXg4ODc5NmNfcmVsb2FkX2VlcHJvbShheF9sb2NhbCk7CisKKwlheDg4Nzk2Y19s b2FkX21hY19hZGRyKG5kZXYpOworCisJaWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpCisJ CWRldl9pbmZvKCZzcGktPmRldiwKKwkJCSAiaXJxICVkLCBNQUMgYWRkciAlMDJYOiUwMlg6JTAy WDolMDJYOiUwMlg6JTAyWFxuIiwKKwkJCSBuZGV2LT5pcnEsCisJCQkgbmRldi0+ZGV2X2FkZHJb MF0sIG5kZXYtPmRldl9hZGRyWzFdLAorCQkJIG5kZXYtPmRldl9hZGRyWzJdLCBuZGV2LT5kZXZf YWRkclszXSwKKwkJCSBuZGV2LT5kZXZfYWRkcls0XSwgbmRldi0+ZGV2X2FkZHJbNV0pOworCisJ LyogRGlzYWJsZSBwb3dlciBzYXZpbmcgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwg KEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX1BTQ1IpCisJCQkJICAgICAmIFBTQ1JfUFNf TUFTSykgfCBQU0NSX1BTX0QwLCBQMF9QU0NSKTsKKworCW11dGV4X3VubG9jaygmYXhfbG9jYWwt PnNwaV9sb2NrKTsKKworCUlOSVRfV09SSygmYXhfbG9jYWwtPmF4X3dvcmssIGF4ODg3OTZjX3dv cmspOworCisJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYXhfbG9jYWwtPnR4X3dhaXRfcSk7CisKKwlz bnByaW50ZihwaHlfaWQsIE1JSV9CVVNfSURfU0laRSArIDMsIFBIWV9JRF9GTVQsCisJCSBheF9s b2NhbC0+bWRpb2J1cy0+aWQsIEFYODg3OTZDX1BIWV9JRCk7CisJYXhfbG9jYWwtPnBoeWRldiA9 IHBoeV9jb25uZWN0KGF4X2xvY2FsLT5uZGV2LCBwaHlfaWQsCisJCQkJICAgICAgIGF4ODg3OTZj X2hhbmRsZV9saW5rX2NoYW5nZSwKKwkJCQkgICAgICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSSk7 CisJaWYgKElTX0VSUihheF9sb2NhbC0+cGh5ZGV2KSkgeworCQlyZXQgPSBQVFJfRVJSKGF4X2xv Y2FsLT5waHlkZXYpOworCQlnb3RvIGVycjsKKwl9CisJYXhfbG9jYWwtPnBoeWRldi0+aXJxID0g UEhZX1BPTEw7CisKKwlyZXQgPSBkZXZtX3JlZ2lzdGVyX25ldGRldigmc3BpLT5kZXYsIG5kZXYp OworCWlmIChyZXQpIHsKKwkJZGV2X2Vycigmc3BpLT5kZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIg YSBuZXR3b3JrIGRldmljZVxuIik7CisJCWdvdG8gZXJyX3BoeV9kaXM7CisJfQorCisJbmV0aWZf aW5mbyhheF9sb2NhbCwgcHJvYmUsIG5kZXYsICIlcyAlcyByZWdpc3RlcmVkXG4iLAorCQkgICBk ZXZfZHJpdmVyX3N0cmluZygmc3BpLT5kZXYpLAorCQkgICBkZXZfbmFtZSgmc3BpLT5kZXYpKTsK KwlwaHlfYXR0YWNoZWRfaW5mbyhheF9sb2NhbC0+cGh5ZGV2KTsKKworCXJldHVybiAwOworCitl cnJfcGh5X2RpczoKKwlwaHlfZGlzY29ubmVjdChheF9sb2NhbC0+cGh5ZGV2KTsKK2VycjoKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF4ODg3OTZjX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gZGV2X2dl dF9kcnZkYXRhKCZzcGktPmRldik7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9sb2Nh bC0+bmRldjsKKworCXBoeV9kaXNjb25uZWN0KG5kZXYtPnBoeWRldik7CisKKwluZXRpZl9pbmZv KGF4X2xvY2FsLCBwcm9iZSwgbmRldiwgInJlbW92aW5nIG5ldHdvcmsgZGV2aWNlICVzICVzXG4i LAorCQkgICBkZXZfZHJpdmVyX3N0cmluZygmc3BpLT5kZXYpLAorCQkgICBkZXZfbmFtZSgmc3Bp LT5kZXYpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBheDg4Nzk2Y19kdF9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFzaXgsYXg4ODc5 NmMiIH0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXg4ODc5NmNfZHRfaWRz KTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFzaXhfaWRbXSA9IHsKKwl7 ICJheDg4Nzk2YyIsIDAgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgYXNp eF9pZCk7CisKK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBheDg4Nzk2Y19zcGlfZHJpdmVyID0g eworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gRFJWX05BTUUsCisJCS5vZl9tYXRjaF90YWJsZSA9 IG9mX21hdGNoX3B0cihheDg4Nzk2Y19kdF9pZHMpLAorCX0sCisJLnByb2JlID0gYXg4ODc5NmNf cHJvYmUsCisJLnJlbW92ZSA9IGF4ODg3OTZjX3JlbW92ZSwKKwkuaWRfdGFibGUgPSBhc2l4X2lk LAorfTsKKworc3RhdGljIF9faW5pdCBpbnQgYXg4ODc5NmNfc3BpX2luaXQodm9pZCkKK3sKKwlp bnQgcmV0OworCisJYml0bWFwX3plcm8oYXg4ODc5NmNfbm9fcmVnc19tYXNrLCBBWDg4Nzk2Q19S RUdEVU1QX0xFTik7CisJcmV0ID0gYml0bWFwX3BhcnNlKG5vX3JlZ3NfbGlzdCwgMzUsCisJCQkg ICBheDg4Nzk2Y19ub19yZWdzX21hc2ssIEFYODg3OTZDX1JFR0RVTVBfTEVOKTsKKwlpZiAocmV0 KSB7CisJCWJpdG1hcF9maWxsKGF4ODg3OTZjX25vX3JlZ3NfbWFzaywgQVg4ODc5NkNfUkVHRFVN UF9MRU4pOworCQlwcl9lcnIoIkludmFsaWQgYml0bWFwIGRlc2NyaXB0aW9uLCBtYXNraW5nIGFs bCByZWdpc3RlcnNcbiIpOworCX0KKworCXJldHVybiBzcGlfcmVnaXN0ZXJfZHJpdmVyKCZheDg4 Nzk2Y19zcGlfZHJpdmVyKTsKK30KKworc3RhdGljIF9fZXhpdCB2b2lkIGF4ODg3OTZjX3NwaV9l eGl0KHZvaWQpCit7CisJc3BpX3VucmVnaXN0ZXJfZHJpdmVyKCZheDg4Nzk2Y19zcGlfZHJpdmVy KTsKK30KKworbW9kdWxlX2luaXQoYXg4ODc5NmNfc3BpX2luaXQpOworbW9kdWxlX2V4aXQoYXg4 ODc5NmNfc3BpX2V4aXQpOworCitNT0RVTEVfQVVUSE9SKCJBU0lYIik7CitNT0RVTEVfREVTQ1JJ UFRJT04oIkFTSVggQVg4ODc5NkMgU1BJIEV0aGVybmV0IGRyaXZlciIpOworTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2 Y19tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhhNzA4MDM5MjQ5YgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5oCkBA IC0wLDAgKzEsNTc4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 ICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEFTSVggRWxlY3Ryb25pY3MgQ29ycG9yYXRp b24KKyAqIENvcHlyaWdodCAoYykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogQVNJ WCBBWDg4Nzk2QyBTUEkgRmFzdCBFdGhlcm5ldCBMaW51eCBkcml2ZXIKKyAqLworCisjaWZuZGVm IF9BWDg4Nzk2Q19NQUlOX0gKKyNkZWZpbmUgX0FYODg3OTZDX01BSU5fSAorCisjaW5jbHVkZSA8 bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvbWlpLmg+CisKKyNpbmNsdWRlICJh eDg4Nzk2Y19zcGkuaCIKKworLyogVGhlc2UgaWRlbnRpZnkgdGhlIGRyaXZlciBiYXNlIHZlcnNp b24gYW5kIG1heSBub3QgYmUgcmVtb3ZlZC4gKi8KKyNkZWZpbmUgRFJWX05BTUUJImF4ODg3OTZj IgorI2RlZmluZSBBRFBfTkFNRQkiQVNJWCBBWDg4Nzk2QyBTUEkgRXRoZXJuZXQgQWRhcHRlciIK KworI2RlZmluZSBUWF9RVUVVRV9ISUdIX1dBVEVSCQk0NQkvKiBUeCBxdWV1ZSBoaWdoIHdhdGVy IG1hcmsgKi8KKyNkZWZpbmUgVFhfUVVFVUVfTE9XX1dBVEVSCQkyMAkvKiBUeCBxdWV1ZSBsb3cg d2F0ZXIgbWFyayAqLworCisjZGVmaW5lIEFYODg3OTZDX1JFR0RVTVBfTEVOCQkyNTYKKyNkZWZp bmUgQVg4ODc5NkNfUEhZX1JFR0RVTVBfTEVOCTE0CisjZGVmaW5lIEFYODg3OTZDX1BIWV9JRAkJ CTB4MTAKKworI2RlZmluZSBUWF9PVkVSSEVBRAkJCTgKKyNkZWZpbmUgVFhfRU9QX1NJWkUJCQk0 CisKKyNkZWZpbmUgQVhfTUNBU1RfRklMVEVSX1NJWkUJCTgKKyNkZWZpbmUgQVhfTUFYX01DQVNU CQkJNjQKKyNkZWZpbmUgQVhfTUFYX0NMSyAgICAgICAgICAgICAgICAgICAgICA4MDAwMDAwMAor I2RlZmluZSBUWF9IRFJfU09QX0RJQ0YJCQkweDgwMDAKKyNkZWZpbmUgVFhfSERSX1NPUF9DUEhJ CQkJMHg0MDAwCisjZGVmaW5lIFRYX0hEUl9TT1BfSU5UCQkJMHgyMDAwCisjZGVmaW5lIFRYX0hE Ul9TT1BfTURFUQkJCTB4MTAwMAorI2RlZmluZSBUWF9IRFJfU09QX1BLVExFTgkJMHgwN0ZGCisj ZGVmaW5lIFRYX0hEUl9TT1BfU0VRTlVNCQkweEY4MDAKKyNkZWZpbmUgVFhfSERSX1NPUF9QS1RM RU5CQVIJCTB4MDdGRgorCisjZGVmaW5lIFRYX0hEUl9TRUdfRlMJCQkweDgwMDAKKyNkZWZpbmUg VFhfSERSX1NFR19MUwkJCTB4NDAwMAorI2RlZmluZSBUWF9IRFJfU0VHX1NFR05VTQkJMHgzODAw CisjZGVmaW5lIFRYX0hEUl9TRUdfU0VHTEVOCQkweDA3MDAKKyNkZWZpbmUgVFhfSERSX1NFR19F T0ZTVAkJMHhDMDAwCisjZGVmaW5lIFRYX0hEUl9TRUdfU09GU1QJCTB4MzgwMAorI2RlZmluZSBU WF9IRFJfU0VHX1NFR0xFTkJBUgkJMHgwN0ZGCisKKyNkZWZpbmUgVFhfSERSX0VPUF9TRVFOVU0J CTB4RjgwMAorI2RlZmluZSBUWF9IRFJfRU9QX1BLVExFTgkJMHgwN0ZGCisjZGVmaW5lIFRYX0hE Ul9FT1BfU0VRTlVNQkFSCQkweEY4MDAKKyNkZWZpbmUgVFhfSERSX0VPUF9QS1RMRU5CQVIJCTB4 MDdGRgorCisvKiBSeCBoZWFkZXIgZmllbGRzIG1hc2sgKi8KKyNkZWZpbmUgUlhfSERSMV9NQ0JD CQkJMHg4MDAwCisjZGVmaW5lIFJYX0hEUjFfU1RVRkZfUEtUCQkweDQwMDAKKyNkZWZpbmUgUlhf SERSMV9NSUlfRVJSCQkJMHgyMDAwCisjZGVmaW5lIFJYX0hEUjFfQ1JDX0VSUgkJCTB4MTAwMAor I2RlZmluZSBSWF9IRFIxX1BLVF9MRU4JCQkweDA3RkYKKworI2RlZmluZSBSWF9IRFIyX1NFUV9O VU0JCQkweEY4MDAKKyNkZWZpbmUgUlhfSERSMl9QS1RfTEVOX0JBUgkJMHg3RkZGCisKKyNkZWZp bmUgUlhfSERSM19QRQkJCTB4ODAwMAorI2RlZmluZSBSWF9IRFIzX0wzX1RZUEVfSVBWNFY2CQkw eDYwMDAKKyNkZWZpbmUgUlhfSERSM19MM19UWVBFX0lQCQkweDQwMDAKKyNkZWZpbmUgUlhfSERS M19MM19UWVBFX0lQVjYJCTB4MjAwMAorI2RlZmluZSBSWF9IRFIzX0w0X1RZUEVfSUNNUFY2CQkw eDE0MDAKKyNkZWZpbmUgUlhfSERSM19MNF9UWVBFX1RDUAkJMHgxMDAwCisjZGVmaW5lIFJYX0hE UjNfTDRfVFlQRV9JR01QCQkweDBjMDAKKyNkZWZpbmUgUlhfSERSM19MNF9UWVBFX0lDTVAJCTB4 MDgwMAorI2RlZmluZSBSWF9IRFIzX0w0X1RZUEVfVURQCQkweDA0MDAKKyNkZWZpbmUgUlhfSERS M19MM19FUlIJCQkweDAyMDAKKyNkZWZpbmUgUlhfSERSM19MNF9FUlIJCQkweDAxMDAKKyNkZWZp bmUgUlhfSERSM19QUklPUklUWSh4KQkJKCh4KSA8PCA0KQorI2RlZmluZSBSWF9IRFIzX1NUUklQ CQkJMHgwMDA4CisjZGVmaW5lIFJYX0hEUjNfVkxBTl9JRAkJCTB4MDAwNworCitlbnVtIHdhdGNo ZG9nX3N0YXRlIHsKKwljaGtfbGluayA9IDAsCisJY2hrX2NhYmxlLAorCWF4X25vcCwKK307CisK K3N0cnVjdCBheDg4Nzk2Y19kZXZpY2UgeworCXN0cnVjdCByZXNvdXJjZQkJKmFkZHJfcmVzOyAg IC8qIHJlc291cmNlcyBmb3VuZCAqLworCXN0cnVjdCByZXNvdXJjZQkJKmFkZHJfcmVxOyAgIC8q IHJlc291cmNlcyByZXF1ZXN0ZWQgKi8KKwlzdHJ1Y3QgcmVzb3VyY2UJCSppcnFfcmVzOworCisJ c3RydWN0IHNwaV9kZXZpY2UJKnNwaTsKKwlzdHJ1Y3QgbmV0X2RldmljZQkqbmRldjsKKwlzdHJ1 Y3QgbmV0X2RldmljZV9zdGF0cwlzdGF0czsKKworCXN0cnVjdCB0aW1lcl9saXN0CXdhdGNoZG9n OworCWVudW0gd2F0Y2hkb2dfc3RhdGUJd19zdGF0ZTsKKwlzaXplX3QJCQl3X3RpY2tzOworCisJ c3RydWN0IHdvcmtfc3RydWN0CWF4X3dvcms7CisKKwlzdHJ1Y3QgbXV0ZXgJCXNwaV9sb2NrOyAv KiBkZXZpY2UgYWNjZXNzICovCisKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkCXR4X3dhaXRfcTsKKwor CXN0cnVjdCBheHNwaV9kYXRhCWF4X3NwaTsKKworCXN0cnVjdCBtaWlfYnVzCQkqbWRpb2J1czsK KwlzdHJ1Y3QgcGh5X2RldmljZQkqcGh5ZGV2OworCisJaW50CQkJbXNnX2VuYWJsZTsKKworCXUx NgkJCXNlcV9udW07CisKKwl1OAkJCW11bHRpX2ZpbHRlcltBWF9NQ0FTVF9GSUxURVJfU0laRV07 CisKKwlpbnQJCQlsaW5rOworCWludAkJCXNwZWVkOworCWludAkJCWR1cGxleDsKKwlpbnQJCQlw YXVzZTsKKwlpbnQJCQlhc3ltX3BhdXNlOworCWludAkJCWZsb3djdHJsOworCQkjZGVmaW5lIEFY X0ZDX05PTkUJCTAKKwkJI2RlZmluZSBBWF9GQ19SWAkJQklUKDApCisJCSNkZWZpbmUgQVhfRkNf VFgJCUJJVCgxKQorCQkjZGVmaW5lIEFYX0ZDX0FORUcJCUJJVCgyKQorCisJdW5zaWduZWQgbG9u ZwkJY2FwYWJpbGl0aWVzOworCQkjZGVmaW5lIEFYX0NBUF9ETUEJCUJJVCgwKQorCQkjZGVmaW5l IEFYX0NBUF9DT01QCQlCSVQoMSkKKwkJI2RlZmluZSBBWF9DQVBfQklESVIJCUJJVCgyKQorCisJ dTgJCQlwbGF0X2VuZGlhbjsKKwkJI2RlZmluZSBQTEFUX0xJVFRMRV9FTkRJQU4JMAorCQkjZGVm aW5lIFBMQVRfQklHX0VORElBTgkJMQorCisJdW5zaWduZWQgbG9uZwkJZmxhZ3M7CisJCSNkZWZp bmUgRVZFTlRfSU5UUgkJQklUKDApCisJCSNkZWZpbmUgRVZFTlRfVFgJCUJJVCgxKQorCQkjZGVm aW5lIEVWRU5UX1NFVF9NVUxUSQkJQklUKDIpCisKK307CisKKyNkZWZpbmUgdG9fYXg4ODc5NmNf ZGV2aWNlKG5kZXYpICgoc3RydWN0IGF4ODg3OTZjX2RldmljZSAqKW5ldGRldl9wcml2KG5kZXYp KQorCitlbnVtIHNrYl9zdGF0ZSB7CisJaWxsZWdhbCA9IDAsCisJdHhfZG9uZSwKKwlyeF9kb25l LAorCXJ4X2VyciwKK307CisKK3N0cnVjdCBza2JfZGF0YSB7CisJZW51bSBza2Jfc3RhdGUgc3Rh dGU7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlz aXplX3QgbGVuOworCWRtYV9hZGRyX3QgcGh5X2FkZHI7Cit9OworCisvKiBBODg3OTZDIHJlZ2lz dGVyIGRlZmluaXRpb24gKi8KKwkvKiBEZWZpbml0aW9uIG9mIFBBR0UwICovCisjZGVmaW5lIFAw X1BTUgkJKDB4MDApCisJI2RlZmluZSBQU1JfREVWX1JFQURZCQlCSVQoNykKKwkjZGVmaW5lIFBT Ul9SRVNFVAkJKDAgPDwgMTUpCisJI2RlZmluZSBQU1JfUkVTRVRfQ0xSCQlCSVQoMTUpCisjZGVm aW5lIFAwX0JPUgkJKDB4MDIpCisjZGVmaW5lIFAwX0ZFUgkJKDB4MDQpCisJI2RlZmluZSBGRVJf SVBBTE0JCUJJVCgwKQorCSNkZWZpbmUgRkVSX0RDUkMJCUJJVCgxKQorCSNkZWZpbmUgRkVSX1JI M00JCUJJVCgyKQorCSNkZWZpbmUgRkVSX0hFQURFUlNXQVAJCUJJVCg3KQorCSNkZWZpbmUgRkVS X1dTV0FQCQlCSVQoOCkKKwkjZGVmaW5lIEZFUl9CU1dBUAkJQklUKDkpCisJI2RlZmluZSBGRVJf SU5USEkJCUJJVCgxMCkKKwkjZGVmaW5lIEZFUl9JTlRMTwkJKDAgPDwgMTApCisJI2RlZmluZSBG RVJfSVJRX1BVTEwJCUJJVCgxMSkKKwkjZGVmaW5lIEZFUl9SWEVOCQlCSVQoMTQpCisJI2RlZmlu ZSBGRVJfVFhFTgkJQklUKDE1KQorI2RlZmluZSBQMF9JU1IJCSgweDA2KQorCSNkZWZpbmUgSVNS X1JYUEtUCQlCSVQoMCkKKwkjZGVmaW5lIElTUl9NRFEJCQlCSVQoNCkKKwkjZGVmaW5lIElTUl9U WFQJCQlCSVQoNSkKKwkjZGVmaW5lIElTUl9UWFBBR0VTCQlCSVQoNikKKwkjZGVmaW5lIElTUl9U WEVSUgkJQklUKDgpCisJI2RlZmluZSBJU1JfTElOSwkJQklUKDkpCisjZGVmaW5lIFAwX0lNUgkJ KDB4MDgpCisJI2RlZmluZSBJTVJfUlhQS1QJCUJJVCgwKQorCSNkZWZpbmUgSU1SX01EUQkJCUJJ VCg0KQorCSNkZWZpbmUgSU1SX1RYVAkJCUJJVCg1KQorCSNkZWZpbmUgSU1SX1RYUEFHRVMJCUJJ VCg2KQorCSNkZWZpbmUgSU1SX1RYRVJSCQlCSVQoOCkKKwkjZGVmaW5lIElNUl9MSU5LCQlCSVQo OSkKKwkjZGVmaW5lIElNUl9NQVNLQUxMCQkoMHhGRkZGKQorCSNkZWZpbmUgSU1SX0RFRkFVTFQJ CShJTVJfVFhFUlIpCisjZGVmaW5lIFAwX1dGQ1IJCSgweDBBKQorCSNkZWZpbmUgV0ZDUl9QTUVJ TkQJCUJJVCgwKSAvKiBQTUUgaW5kaWNhdGlvbiAqLworCSNkZWZpbmUgV0ZDUl9QTUVUWVBFCQlC SVQoMSkgLyogUE1FIEkvTyB0eXBlICovCisJI2RlZmluZSBXRkNSX1BNRVBPTAkJQklUKDIpIC8q IFBNRSBwb2xhcml0eSAqLworCSNkZWZpbmUgV0ZDUl9QTUVSU1QJCUJJVCgzKSAvKiBSZXNldCBQ TUUgKi8KKwkjZGVmaW5lIFdGQ1JfU0xFRVAJCUJJVCg0KSAvKiBFbmFibGUgc2xlZXAgbW9kZSAq LworCSNkZWZpbmUgV0ZDUl9XQUtFVVAJCUJJVCg1KSAvKiBFbmFibGUgd2FrZXVwIG1vZGUgKi8K KwkjZGVmaW5lIFdGQ1JfV0FJVEVWRU5UCQlCSVQoNikgLyogUmVzZXJ2ZWQgKi8KKwkjZGVmaW5l IFdGQ1JfQ0xSV0FLRQkJQklUKDcpIC8qIENsZWFyIHdha2V1cCAqLworCSNkZWZpbmUgV0ZDUl9M SU5LQ0gJCUJJVCg4KSAvKiBFbmFibGUgbGluayBjaGFuZ2UgKi8KKwkjZGVmaW5lIFdGQ1JfTUFH SUNQCQlCSVQoOSkgLyogRW5hYmxlIG1hZ2ljIHBhY2tldCAqLworCSNkZWZpbmUgV0ZDUl9XQUtF RgkJQklUKDEwKSAvKiBFbmFibGUgd2FrZXVwIGZyYW1lICovCisJI2RlZmluZSBXRkNSX1BNRUVO CQlCSVQoMTEpIC8qIEVuYWJsZSBQTUUgcGluICovCisJI2RlZmluZSBXRkNSX0xJTktDSFMJCUJJ VCgxMikgLyogTGluayBjaGFuZ2Ugc3RhdHVzICovCisJI2RlZmluZSBXRkNSX01BR0lDUFMJCUJJ VCgxMykgLyogTWFnaWMgcGFja2V0IHN0YXR1cyAqLworCSNkZWZpbmUgV0ZDUl9XQUtFRlMJCUJJ VCgxNCkgLyogV2FrZXVwIGZyYW1lIHN0YXR1cyAqLworCSNkZWZpbmUgV0ZDUl9QTUVTCQlCSVQo MTUpIC8qIFBNRSBwaW4gc3RhdHVzICovCisjZGVmaW5lIFAwX1BTQ1IJCSgweDBDKQorCSNkZWZp bmUgUFNDUl9QU19NQVNLCQkoMHhGRkYwKQorCSNkZWZpbmUgUFNDUl9QU19EMAkJKDApCisJI2Rl ZmluZSBQU0NSX1BTX0QxCQlCSVQoMCkKKwkjZGVmaW5lIFBTQ1JfUFNfRDIJCUJJVCgxKQorCSNk ZWZpbmUgUFNDUl9GUFMJCUJJVCgzKSAvKiBFbmFibGUgZmliZXIgbW9kZSBQUyAqLworCSNkZWZp bmUgUFNDUl9TV1BTCQlCSVQoNCkgLyogRW5hYmxlIHNvZnR3YXJlICovCisJCQkJCQkgLyogUFMg Y29udHJvbCAqLworCSNkZWZpbmUgUFNDUl9XT0xQUwkJQklUKDUpIC8qIEVuYWJsZSBXT0wgUFMg Ki8KKwkjZGVmaW5lIFBTQ1JfU1dXT0wJCUJJVCg2KSAvKiBFbmFibGUgc29mdHdhcmUgc2VsZWN0 ICovCisJCQkJCQkgLyogV09MIFBTICovCisJI2RlZmluZSBQU0NSX1BIWU9TQwkJQklUKDcpIC8q IEludGVybmFsIFBIWSBPU0MgY29udHJvbCAqLworCSNkZWZpbmUgUFNDUl9GT0ZFRgkJQklUKDgp IC8qIEZvcmNlIFBIWSBnZW5lcmF0ZSBGRUYgKi8KKwkjZGVmaW5lIFBTQ1JfRk9GCQlCSVQoOSkg LyogRm9yY2UgUEhZIGluIGZpYmVyIG1vZGUgKi8KKwkjZGVmaW5lIFBTQ1JfUEhZUEQJCUJJVCgx MCkgLyogUEhZIHBvd2VyIGRvd24uICovCisJCQkJCQkgIC8qIEFjdGl2ZSBoaWdoICovCisJI2Rl ZmluZSBQU0NSX1BIWVJTVAkJQklUKDExKSAvKiBQSFkgcmVzZXQgc2lnbmFsLiAqLworCQkJCQkJ ICAvKiBBY3RpdmUgbG93ICovCisJI2RlZmluZSBQU0NSX1BIWUNTSUwJCUJJVCgxMikgLyogUEhZ IGNhYmxlIGVuZXJneSBkZXRlY3QgKi8KKwkjZGVmaW5lIFBTQ1JfUEhZQ09GRgkJQklUKDEzKSAv KiBQSFkgY2FibGUgb2ZmICovCisJI2RlZmluZSBQU0NSX1BIWUxJTksJCUJJVCgxNCkgLyogUEhZ IGxpbmsgc3RhdHVzICovCisJI2RlZmluZSBQU0NSX0VFUE9LCQlCSVQoMTUpIC8qIEVFUFJPTSBs b2FkIGNvbXBsZXRlICovCisjZGVmaW5lIFAwX01BQ0NSCSgweDBFKQorCSNkZWZpbmUgTUFDQ1Jf UlhFTgkJQklUKDApIC8qIEVuYWJsZSBSWCAqLworCSNkZWZpbmUgTUFDQ1JfRFVQTEVYX0ZVTEwJ QklUKDEpIC8qIDE6IEZ1bGwsIDA6IEhhbGYgKi8KKwkjZGVmaW5lIE1BQ0NSX1NQRUVEXzEwMAkJ QklUKDIpIC8qIDE6IDEwME1icHMsIDA6IDEwTWJwcyAqLworCSNkZWZpbmUgTUFDQ1JfUlhGQ19F TkFCTEUJQklUKDMpCisJI2RlZmluZSBNQUNDUl9SWEZDX01BU0sJCTB4RkZGNworCSNkZWZpbmUg TUFDQ1JfVFhGQ19FTkFCTEUJQklUKDQpCisJI2RlZmluZSBNQUNDUl9UWEZDX01BU0sJCTB4RkZF RgorCSNkZWZpbmUgTUFDQ1JfUFNJCQlCSVQoNikgLyogU29mdHdhcmUgQ2FibGUtT2ZmICovCisJ CQkJCSAgICAgICAvKiBQb3dlciBTYXZpbmcgSW50ZXJydXB0ICovCisJI2RlZmluZSBNQUNDUl9Q RgkJQklUKDcpCisJI2RlZmluZSBNQUNDUl9QTU1fQklUUwkJOAorCSNkZWZpbmUgTUFDQ1JfUE1N X01BU0sJCSgweDFGMDApCisJI2RlZmluZSBNQUNDUl9QTU1fUkVTRVQJCUJJVCg4KQorCSNkZWZp bmUgTUFDQ1JfUE1NX1dBSVQJCSgyIDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fUkVBRFkJCSgz IDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fRDEJCSg0IDw8IDgpCisJI2RlZmluZSBNQUNDUl9Q TU1fRDIJCSg1IDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fV0FLRQkJKDcgPDwgOCkKKwkjZGVm aW5lIE1BQ0NSX1BNTV9EMV9XQUtFCSg4IDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fRDJfV0FL RQkoOSA8PCA4KQorCSNkZWZpbmUgTUFDQ1JfUE1NX1NMRUVQCQkoMTAgPDwgOCkKKwkjZGVmaW5l IE1BQ0NSX1BNTV9QSFlfUkVTRVQJKDExIDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fU09GVF9E MQkoMTYgPDwgOCkKKwkjZGVmaW5lIE1BQ0NSX1BNTV9TT0ZUX0QyCSgxNyA8PCA4KQorI2RlZmlu ZSBQMF9URkJGQ1IJKDB4MTApCisJI2RlZmluZSBURkJGQ1JfU0NIRV9GUkVFX1BBR0UJMHhFMDdG CisJI2RlZmluZSBURkJGQ1JfRlJFRV9QQUdFX0JJVFMJMHgwNworCSNkZWZpbmUgVEZCRkNSX0ZS RUVfUEFHRV9MQVRDSAlCSVQoNikKKwkjZGVmaW5lIFRGQkZDUl9TRVRfRlJFRV9QQUdFKHgpCSgo KHgpICYgMHgzRikgPDwgVEZCRkNSX0ZSRUVfUEFHRV9CSVRTKQorCSNkZWZpbmUgVEZCRkNSX1RY X1BBR0VfU0VUCUJJVCgxMykKKwkjZGVmaW5lIFRGQkZDUl9NQU5VX0VOVFgJQklUKDE1KQorCSNk ZWZpbmUgVFhfRlJFRUJVRl9NQVNLCQkweDAwM0YKKwkjZGVmaW5lIFRYX0RQVFNUQVJUCQkweDQw MDAKKworI2RlZmluZSBQMF9UU05SCQkoMHgxMikKKwkjZGVmaW5lIFRYTlJfVFhCX0VSUgkJQklU KDUpCisJI2RlZmluZSBUWE5SX1RYQl9JRExFCQlCSVQoNikKKwkjZGVmaW5lIFRTTlJfUEtUX0NO VCh4KQkJKCgoeCkgJiAweDNGKSA8PCA4KQorCSNkZWZpbmUgVFhOUl9UWEJfUkVJTklUCQlCSVQo MTQpCisJI2RlZmluZSBUU05SX1RYQl9TVEFSVAkJQklUKDE1KQorI2RlZmluZSBQMF9SVERQUgko MHgxNCkKKyNkZWZpbmUgUDBfUlhCQ1IxCSgweDE2KQorCSNkZWZpbmUgUlhCQ1IxX1JYQl9ESVND QVJECUJJVCgxNCkKKwkjZGVmaW5lIFJYQkNSMV9SWEJfU1RBUlQJQklUKDE1KQorI2RlZmluZSBQ MF9SWEJDUjIJKDB4MTgpCisJI2RlZmluZSBSWEJDUjJfUEtUX01BU0sJCSgweEZGKQorCSNkZWZp bmUgUlhCQ1IyX1JYUENfTUFTSwkoMHg3RikKKwkjZGVmaW5lIFJYQkNSMl9SWEJfUkVBRFkJQklU KDEzKQorCSNkZWZpbmUgUlhCQ1IyX1JYQl9JRExFCQlCSVQoMTQpCisJI2RlZmluZSBSWEJDUjJf UlhCX1JFSU5JVAlCSVQoMTUpCisjZGVmaW5lIFAwX1JUV0NSCSgweDFBKQorCSNkZWZpbmUgUlRX Q1JfUlhXQ19NQVNLCQkoMHgzRkZGKQorCSNkZWZpbmUgUlRXQ1JfUlhfTEFUQ0gJCUJJVCgxNSkK KyNkZWZpbmUgUDBfUkNQSFIJKDB4MUMpCisKKwkvKiBEZWZpbml0aW9uIG9mIFBBR0UxICovCisj ZGVmaW5lIFAxX1JQUEVSCSgweDIyKQorCSNkZWZpbmUgUlBQRVJfUlhFTgkJQklUKDApCisjZGVm aW5lIFAxX01SQ1IJCSgweDI4KQorI2RlZmluZSBQMV9NRFIJCSgweDJBKQorI2RlZmluZSBQMV9S TVBSCQkoMHgyQykKKyNkZWZpbmUgUDFfVE1QUgkJKDB4MkUpCisjZGVmaW5lIFAxX1JYQlNQQ1IJ KDB4MzApCisJI2RlZmluZSBSWEJTUENSX1NUVUZfV09SRF9DTlQoeCkJKCgoeCkgJiAweDcwMDAp ID4+IDEyKQorCSNkZWZpbmUgUlhCU1BDUl9TVFVGX0VOQUJMRQkJQklUKDE1KQorI2RlZmluZSBQ MV9NQ1IJCSgweDMyKQorCSNkZWZpbmUgTUNSX1NCUAkJCUJJVCg4KQorCSNkZWZpbmUgTUNSX1NN CQkJQklUKDkpCisJI2RlZmluZSBNQ1JfQ1JDRU5MQU4JCUJJVCgxMSkKKwkjZGVmaW5lIE1DUl9T VFAJCQlCSVQoMTIpCisJLyogRGVmaW5pdGlvbiBvZiBQQUdFMiAqLworI2RlZmluZSBQMl9DSVIJ CSgweDQyKQorI2RlZmluZSBQMl9QQ1IJCSgweDQ0KQorCSNkZWZpbmUgUENSX1BPTExfRU4JCUJJ VCgwKQorCSNkZWZpbmUgUENSX1BPTExfRkxPV0NUUkwJQklUKDEpCisJI2RlZmluZSBQQ1JfUE9M TF9CTUNSCQlCSVQoMikKKwkjZGVmaW5lIFBDUl9QSFlJRCh4KQkJKCh4KSA8PCA4KQorI2RlZmlu ZSBQMl9QSFlTUgkoMHg0NikKKyNkZWZpbmUgUDJfTURJT0RSCSgweDQ4KQorI2RlZmluZSBQMl9N RElPQ1IJKDB4NEEpCisJI2RlZmluZSBNRElPQ1JfUkFERFIoeCkJCSgoeCkgJiAweDFGKQorCSNk ZWZpbmUgTURJT0NSX0ZBRERSKHgpCQkoKCh4KSAmIDB4MUYpIDw8IDgpCisJI2RlZmluZSBNRElP Q1JfVkFMSUQJCUJJVCgxMykKKwkjZGVmaW5lIE1ESU9DUl9SRUFECQlCSVQoMTQpCisJI2RlZmlu ZSBNRElPQ1JfV1JJVEUJCUJJVCgxNSkKKyNkZWZpbmUgUDJfTENSMAkJKDB4NEMpCisJI2RlZmlu ZSBMQ1JfTEVEMF9FTgkJQklUKDApCisJI2RlZmluZSBMQ1JfTEVEMF8xMDBNT0RFCUJJVCgxKQor CSNkZWZpbmUgTENSX0xFRDBfRFVQTEVYCQlCSVQoMikKKwkjZGVmaW5lIExDUl9MRUQwX0xJTksJ CUJJVCgzKQorCSNkZWZpbmUgTENSX0xFRDBfQUNUCQlCSVQoNCkKKwkjZGVmaW5lIExDUl9MRUQw X0NPTAkJQklUKDUpCisJI2RlZmluZSBMQ1JfTEVEMF8xME1PREUJCUJJVCg2KQorCSNkZWZpbmUg TENSX0xFRDBfRFVQQ09MCQlCSVQoNykKKwkjZGVmaW5lIExDUl9MRUQxX0VOCQlCSVQoOCkKKwkj ZGVmaW5lIExDUl9MRUQxXzEwME1PREUJQklUKDkpCisJI2RlZmluZSBMQ1JfTEVEMV9EVVBMRVgJ CUJJVCgxMCkKKwkjZGVmaW5lIExDUl9MRUQxX0xJTksJCUJJVCgxMSkKKwkjZGVmaW5lIExDUl9M RUQxX0FDVAkJQklUKDEyKQorCSNkZWZpbmUgTENSX0xFRDFfQ09MCQlCSVQoMTMpCisJI2RlZmlu ZSBMQ1JfTEVEMV8xME1PREUJCUJJVCgxNCkKKwkjZGVmaW5lIExDUl9MRUQxX0RVUENPTAkJQklU KDE1KQorI2RlZmluZSBQMl9MQ1IxCQkoMHg0RSkKKwkjZGVmaW5lIExDUl9MRUQyX01BU0sJCSgw eEZGMDApCisJI2RlZmluZSBMQ1JfTEVEMl9FTgkJQklUKDApCisJI2RlZmluZSBMQ1JfTEVEMl8x MDBNT0RFCUJJVCgxKQorCSNkZWZpbmUgTENSX0xFRDJfRFVQTEVYCQlCSVQoMikKKwkjZGVmaW5l IExDUl9MRUQyX0xJTksJCUJJVCgzKQorCSNkZWZpbmUgTENSX0xFRDJfQUNUCQlCSVQoNCkKKwkj ZGVmaW5lIExDUl9MRUQyX0NPTAkJQklUKDUpCisJI2RlZmluZSBMQ1JfTEVEMl8xME1PREUJCUJJ VCg2KQorCSNkZWZpbmUgTENSX0xFRDJfRFVQQ09MCQlCSVQoNykKKyNkZWZpbmUgUDJfSVBHQ1IJ KDB4NTApCisjZGVmaW5lIFAyX0NSSVIJCSgweDUyKQorI2RlZmluZSBQMl9GTEhXQ1IJKDB4NTQp CisjZGVmaW5lIFAyX1JYQ1IJCSgweDU2KQorCSNkZWZpbmUgUlhDUl9QUk8JCUJJVCgwKQorCSNk ZWZpbmUgUlhDUl9BTUFMTAkJQklUKDEpCisJI2RlZmluZSBSWENSX1NFUAkJQklUKDIpCisJI2Rl ZmluZSBSWENSX0FCCQkJQklUKDMpCisJI2RlZmluZSBSWENSX0FNCQkJQklUKDQpCisJI2RlZmlu ZSBSWENSX0FQCQkJQklUKDUpCisJI2RlZmluZSBSWENSX0FSUAkJQklUKDYpCisjZGVmaW5lIFAy X0pMQ1IJCSgweDU4KQorI2RlZmluZSBQMl9NUExSCQkoMHg1QykKKworCS8qIERlZmluaXRpb24g b2YgUEFHRTMgKi8KKyNkZWZpbmUgUDNfTUFDQVNSMAkoMHg2MikKKwkjZGVmaW5lIFAzX01BQ0FT Uih4KQkJKFAzX01BQ0FTUjAgKyAyICogKHgpKQorCSNkZWZpbmUgTUFDQVNSX0xPV0JZVEVfTUFT SwkweDAwRkYKKwkjZGVmaW5lIE1BQ0FTUl9ISUdIX0JJVFMJMHgwOAorI2RlZmluZSBQM19NQUNB U1IxCSgweDY0KQorI2RlZmluZSBQM19NQUNBU1IyCSgweDY2KQorI2RlZmluZSBQM19NRkFSMDEJ KDB4NjgpCisjZGVmaW5lIFAzX01GQVJfQkFTRQkoMHg2OCkKKwkjZGVmaW5lIFAzX01GQVIoeCkJ CShQM19NRkFSX0JBU0UgKyAyICogKHgpKQorCisjZGVmaW5lIFAzX01GQVIyMwkoMHg2QSkKKyNk ZWZpbmUgUDNfTUZBUjQ1CSgweDZDKQorI2RlZmluZSBQM19NRkFSNjcJKDB4NkUpCisjZGVmaW5l IFAzX1ZJRDBGUgkoMHg3MCkKKyNkZWZpbmUgUDNfVklEMUZSCSgweDcyKQorI2RlZmluZSBQM19F RUNTUgkoMHg3NCkKKyNkZWZpbmUgUDNfRUVEUgkJKDB4NzYpCisjZGVmaW5lIFAzX0VFQ1IJCSgw eDc4KQorCSNkZWZpbmUgRUVDUl9BRERSX01BU0sJCSgweDAwRkYpCisJI2RlZmluZSBFRUNSX1JF QURfQUNUCQlCSVQoOCkKKwkjZGVmaW5lIEVFQ1JfV1JJVEVfQUNUCQlCSVQoOSkKKwkjZGVmaW5l IEVFQ1JfV1JJVEVfRElTQUJMRQlCSVQoMTApCisJI2RlZmluZSBFRUNSX1dSSVRFX0VOQUJMRQlC SVQoMTEpCisJI2RlZmluZSBFRUNSX0VFX1JFQURZCQlCSVQoMTMpCisJI2RlZmluZSBFRUNSX1JF TE9BRAkJQklUKDE0KQorCSNkZWZpbmUgRUVDUl9SRVNFVAkJQklUKDE1KQorI2RlZmluZSBQM19U UENSCQkoMHg3QSkKKwkjZGVmaW5lIFRQQ1JfUEFUVF9NQVNLCQkoMHhGRikKKwkjZGVmaW5lIFRQ Q1JfUkFORF9QS1RfRU4JQklUKDE0KQorCSNkZWZpbmUgVFBDUl9GSVhFRF9QS1RfRU4JQklUKDE1 KQorI2RlZmluZSBQM19UUExSCQkoMHg3QykKKwkvKiBEZWZpbml0aW9uIG9mIFBBR0U0ICovCisj ZGVmaW5lIFA0X1NQSUNSCSgweDhBKQorCSNkZWZpbmUgU1BJQ1JfUkNFTgkJQklUKDApCisJI2Rl ZmluZSBTUElDUl9RQ0VOCQlCSVQoMSkKKwkjZGVmaW5lIFNQSUNSX1JCUkUJCUJJVCgzKQorCSNk ZWZpbmUgU1BJQ1JfUE1NCQlCSVQoNCkKKwkjZGVmaW5lIFNQSUNSX0xPT1BCQUNLCQlCSVQoOCkK KwkjZGVmaW5lIFNQSUNSX0NPUkVfUkVTX0NMUglCSVQoMTApCisJI2RlZmluZSBTUElDUl9TUElf UkVTX0NMUglCSVQoMTEpCisjZGVmaW5lIFA0X1NQSUlTTVIJKDB4OEMpCisKKyNkZWZpbmUgUDRf Q09FUkNSMAkoMHg5MikKKwkjZGVmaW5lIENPRVJDUjBfUlhJUENFCQlCSVQoMCkKKwkjZGVmaW5l IENPRVJDUjBfUlhJUFZFCQlCSVQoMSkKKwkjZGVmaW5lIENPRVJDUjBfUlhWNlBFCQlCSVQoMikK KwkjZGVmaW5lIENPRVJDUjBfUlhUQ1BFCQlCSVQoMykKKwkjZGVmaW5lIENPRVJDUjBfUlhVRFBF CQlCSVQoNCkKKwkjZGVmaW5lIENPRVJDUjBfUlhJQ01QCQlCSVQoNSkKKwkjZGVmaW5lIENPRVJD UjBfUlhJR01QCQlCSVQoNikKKwkjZGVmaW5lIENPRVJDUjBfUlhJQ1Y2CQlCSVQoNykKKworCSNk ZWZpbmUgQ09FUkNSMF9SWFRDUFY2CQlCSVQoOCkKKwkjZGVmaW5lIENPRVJDUjBfUlhVRFBWNgkJ QklUKDkpCisJI2RlZmluZSBDT0VSQ1IwX1JYSUNNVjYJCUJJVCgxMCkKKwkjZGVmaW5lIENPRVJD UjBfUlhJR01WNgkJQklUKDExKQorCSNkZWZpbmUgQ09FUkNSMF9SWElDVjZWNglCSVQoMTIpCisK KwkjZGVmaW5lIENPRVJDUjBfREVGQVVMVAkJKENPRVJDUjBfUlhJUENFIHwgQ09FUkNSMF9SWFY2 UEUgfCBcCisJCQkJCSBDT0VSQ1IwX1JYVENQRSB8IENPRVJDUjBfUlhVRFBFIHwgXAorCQkJCQkg Q09FUkNSMF9SWFRDUFY2IHwgQ09FUkNSMF9SWFVEUFY2KQorI2RlZmluZSBQNF9DT0VSQ1IxCSgw eDk0KQorCSNkZWZpbmUgQ09FUkNSMV9JUENFRFAJCUJJVCgwKQorCSNkZWZpbmUgQ09FUkNSMV9J UFZFRFAJCUJJVCgxKQorCSNkZWZpbmUgQ09FUkNSMV9WNlZFRFAJCUJJVCgyKQorCSNkZWZpbmUg Q09FUkNSMV9UQ1BFRFAJCUJJVCgzKQorCSNkZWZpbmUgQ09FUkNSMV9VRFBFRFAJCUJJVCg0KQor CSNkZWZpbmUgQ09FUkNSMV9JQ01QRFAJCUJJVCg1KQorCSNkZWZpbmUgQ09FUkNSMV9JR01QRFAJ CUJJVCg2KQorCSNkZWZpbmUgQ09FUkNSMV9JQ1Y2RFAJCUJJVCg3KQorCSNkZWZpbmUgQ09FUkNS MV9SWDY0VEUJCUJJVCg4KQorCSNkZWZpbmUgQ09FUkNSMV9SWFBQUEUJCUJJVCg5KQorCSNkZWZp bmUgQ09FUkNSMV9UQ1A2RFAJCUJJVCgxMCkKKwkjZGVmaW5lIENPRVJDUjFfVURQNkRQCQlCSVQo MTEpCisJI2RlZmluZSBDT0VSQ1IxX0lDNkRQCQlCSVQoMTIpCisJI2RlZmluZSBDT0VSQ1IxX0lH NkRQCQlCSVQoMTMpCisJI2RlZmluZSBDT0VSQ1IxX0lDVjY2RFAJCUJJVCgxNCkKKwkjZGVmaW5l IENPRVJDUjFfUlBDRQkJQklUKDE1KQorCisJI2RlZmluZSBDT0VSQ1IxX0RFRkFVTFQJCShDT0VS Q1IxX1JYUFBQRSkKKworI2RlZmluZSBQNF9DT0VUQ1IwCSgweDk2KQorCSNkZWZpbmUgQ09FVENS MF9UWElQCQlCSVQoMCkKKwkjZGVmaW5lIENPRVRDUjBfVFhUQ1AJCUJJVCgxKQorCSNkZWZpbmUg Q09FVENSMF9UWFVEUAkJQklUKDIpCisJI2RlZmluZSBDT0VUQ1IwX1RYSUNNUAkJQklUKDMpCisJ I2RlZmluZSBDT0VUQ1IwX1RYSUdNUAkJQklUKDQpCisJI2RlZmluZSBDT0VUQ1IwX1RYSUNWNgkJ QklUKDUpCisJI2RlZmluZSBDT0VUQ1IwX1RYVENQVjYJCUJJVCg4KQorCSNkZWZpbmUgQ09FVENS MF9UWFVEUFY2CQlCSVQoOSkKKwkjZGVmaW5lIENPRVRDUjBfVFhJQ01WNgkJQklUKDEwKQorCSNk ZWZpbmUgQ09FVENSMF9UWElHTVY2CQlCSVQoMTEpCisJI2RlZmluZSBDT0VUQ1IwX1RYSUNWNlY2 CUJJVCgxMikKKworCSNkZWZpbmUgQ09FVENSMF9ERUZBVUxUCQkoQ09FVENSMF9UWElQIHwgQ09F VENSMF9UWFRDUCB8IFwKKwkJCQkJIENPRVRDUjBfVFhVRFAgfCBDT0VUQ1IwX1RYVENQVjYgfCBc CisJCQkJCSBDT0VUQ1IwX1RYVURQVjYpCisjZGVmaW5lIFA0X0NPRVRDUjEJKDB4OTgpCisJI2Rl ZmluZSBDT0VUQ1IxX1RYNjRURQkJQklUKDApCisJI2RlZmluZSBDT0VUQ1IxX1RYUFBQRQkJQklU KDEpCisKKyNkZWZpbmUgUDRfQ09FQ0VEUgkoMHg5QSkKKyNkZWZpbmUgUDRfTDJDRUNSCSgweDlD KQorCisJLyogRGVmaW5pdGlvbiBvZiBQQUdFNSAqLworI2RlZmluZSBQNV9XRlRSCQkoMHhBMikK KwkjZGVmaW5lIFdGVFJfMk1TCQkoMHgwMSkKKwkjZGVmaW5lIFdGVFJfNE1TCQkoMHgwMikKKwkj ZGVmaW5lIFdGVFJfOE1TCQkoMHgwMykKKwkjZGVmaW5lIFdGVFJfMTZNUwkJKDB4MDQpCisJI2Rl ZmluZSBXRlRSXzMyTVMJCSgweDA1KQorCSNkZWZpbmUgV0ZUUl82NE1TCQkoMHgwNikKKwkjZGVm aW5lIFdGVFJfMTI4TVMJCSgweDA3KQorCSNkZWZpbmUgV0ZUUl8yNTZNUwkJKDB4MDgpCisJI2Rl ZmluZSBXRlRSXzUxMk1TCQkoMHgwOSkKKwkjZGVmaW5lIFdGVFJfMTAyNE1TCQkoMHgwQSkKKwkj ZGVmaW5lIFdGVFJfMjA0OE1TCQkoMHgwQikKKwkjZGVmaW5lIFdGVFJfNDA5Nk1TCQkoMHgwQykK KwkjZGVmaW5lIFdGVFJfODE5Mk1TCQkoMHgwRCkKKwkjZGVmaW5lIFdGVFJfMTYzODRNUwkJKDB4 MEUpCisJI2RlZmluZSBXRlRSXzMyNzY4TVMJCSgweDBGKQorI2RlZmluZSBQNV9XRkNDUgkoMHhB NCkKKyNkZWZpbmUgUDVfV0ZDUjAzCSgweEE2KQorCSNkZWZpbmUgV0ZDUjAzX0YwX0VOCQlCSVQo MCkKKwkjZGVmaW5lIFdGQ1IwM19GMV9FTgkJQklUKDQpCisJI2RlZmluZSBXRkNSMDNfRjJfRU4J CUJJVCg4KQorCSNkZWZpbmUgV0ZDUjAzX0YzX0VOCQlCSVQoMTIpCisjZGVmaW5lIFA1X1dGQ1I0 NwkoMHhBOCkKKwkjZGVmaW5lIFdGQ1I0N19GNF9FTgkJQklUKDApCisJI2RlZmluZSBXRkNSNDdf RjVfRU4JCUJJVCg0KQorCSNkZWZpbmUgV0ZDUjQ3X0Y2X0VOCQlCSVQoOCkKKwkjZGVmaW5lIFdG Q1I0N19GN19FTgkJQklUKDEyKQorI2RlZmluZSBQNV9XRjBCTVIwCSgweEFBKQorI2RlZmluZSBQ NV9XRjBCTVIxCSgweEFDKQorI2RlZmluZSBQNV9XRjBDUgkoMHhBRSkKKyNkZWZpbmUgUDVfV0Yw T0JSCSgweEIwKQorI2RlZmluZSBQNV9XRjFCTVIwCSgweEIyKQorI2RlZmluZSBQNV9XRjFCTVIx CSgweEI0KQorI2RlZmluZSBQNV9XRjFDUgkoMHhCNikKKyNkZWZpbmUgUDVfV0YxT0JSCSgweEI4 KQorI2RlZmluZSBQNV9XRjJCTVIwCSgweEJBKQorI2RlZmluZSBQNV9XRjJCTVIxCSgweEJDKQor CisJLyogRGVmaW5pdGlvbiBvZiBQQUdFNiAqLworI2RlZmluZSBQNl9XRjJDUgkoMHhDMikKKyNk ZWZpbmUgUDZfV0YyT0JSCSgweEM0KQorI2RlZmluZSBQNl9XRjNCTVIwCSgweEM2KQorI2RlZmlu ZSBQNl9XRjNCTVIxCSgweEM4KQorI2RlZmluZSBQNl9XRjNDUgkoMHhDQSkKKyNkZWZpbmUgUDZf V0YzT0JSCSgweENDKQorI2RlZmluZSBQNl9XRjRCTVIwCSgweENFKQorI2RlZmluZSBQNl9XRjRC TVIxCSgweEQwKQorI2RlZmluZSBQNl9XRjRDUgkoMHhEMikKKyNkZWZpbmUgUDZfV0Y0T0JSCSgw eEQ0KQorI2RlZmluZSBQNl9XRjVCTVIwCSgweEQ2KQorI2RlZmluZSBQNl9XRjVCTVIxCSgweEQ4 KQorI2RlZmluZSBQNl9XRjVDUgkoMHhEQSkKKyNkZWZpbmUgUDZfV0Y1T0JSCSgweERDKQorCisv KiBEZWZpbml0aW9uIG9mIFBBR0U3ICovCisjZGVmaW5lIFA3X1dGNkJNUjAJKDB4RTIpCisjZGVm aW5lIFA3X1dGNkJNUjEJKDB4RTQpCisjZGVmaW5lIFA3X1dGNkNSCSgweEU2KQorI2RlZmluZSBQ N19XRjZPQlIJKDB4RTgpCisjZGVmaW5lIFA3X1dGN0JNUjAJKDB4RUEpCisjZGVmaW5lIFA3X1dG N0JNUjEJKDB4RUMpCisjZGVmaW5lIFA3X1dGN0NSCSgweEVFKQorI2RlZmluZSBQN19XRjdPQlIJ KDB4RjApCisjZGVmaW5lIFA3X1dGUjAxCSgweEYyKQorI2RlZmluZSBQN19XRlIyMwkoMHhGNCkK KyNkZWZpbmUgUDdfV0ZSNDUJKDB4RjYpCisjZGVmaW5lIFA3X1dGUjY3CSgweEY4KQorI2RlZmlu ZSBQN19XRlBDMAkoMHhGQSkKKyNkZWZpbmUgUDdfV0ZQQzEJKDB4RkMpCisKKy8qIFR4IGhlYWRl cnMgc3RydWN0dXJlICovCitzdHJ1Y3QgdHhfc29wX2hlYWRlciB7CisJLyogYml0IDE1LTExOiBm bGFncywgYml0IDEwLTA6IHBhY2tldCBsZW5ndGggKi8KKwl1MTYgZmxhZ3NfbGVuOworCS8qIGJp dCAxNS0xMTogc2VxdWVuY2UgbnVtYmVyLCBiaXQgMTEtMDogcGFja2V0IGxlbmd0aCBiYXIgKi8K Kwl1MTYgc2VxX2xlbmJhcjsKK30gX19wYWNrZWQ7CisKK3N0cnVjdCB0eF9zZWdtZW50X2hlYWRl ciB7CisJLyogYml0IDE1LTE0OiBmbGFncywgYml0IDEzLTExOiBzZWdtZW50IG51bWJlciAqLwor CS8qIGJpdCAxMC0wOiBzZWdtZW50IGxlbmd0aCAqLworCXUxNiBmbGFnc19zZXFudW1fc2VnbGVu OworCS8qIGJpdCAxNS0xNDogZW5kIG9mZnNldCwgYml0IDEzLTExOiBzdGFydCBvZmZzZXQgKi8K KwkvKiBiaXQgMTAtMDogc2VnbWVudCBsZW5ndGggYmFyICovCisJdTE2IGVvX3NvX3NlZ2xlbmJh cjsKK30gX19wYWNrZWQ7CisKK3N0cnVjdCB0eF9lb3BfaGVhZGVyIHsKKwkvKiBiaXQgMTUtMTE6 IHNlcXVlbmNlIG51bWJlciwgYml0IDEwLTA6IHBhY2tldCBsZW5ndGggKi8KKwl1MTYgc2VxX2xl bjsKKwkvKiBiaXQgMTUtMTE6IHNlcXVlbmNlIG51bWJlciBiYXIsIGJpdCAxMC0wOiBwYWNrZXQg bGVuZ3RoIGJhciAqLworCXUxNiBzZXFiYXJfbGVuYmFyOworfSBfX3BhY2tlZDsKKworc3RydWN0 IHR4X3BrdF9pbmZvIHsKKwlzdHJ1Y3QgdHhfc29wX2hlYWRlciBzb3A7CisJc3RydWN0IHR4X3Nl Z21lbnRfaGVhZGVyIHNlZzsKKwlzdHJ1Y3QgdHhfZW9wX2hlYWRlciBlb3A7CisJdTE2IHBrdF9s ZW47CisJdTE2IHNlcV9udW07Cit9IF9fcGFja2VkOworCisvKiBSeCBoZWFkZXJzIHN0cnVjdHVy ZSAqLworc3RydWN0IHJ4X2hlYWRlciB7CisJdTE2IGZsYWdzX2xlbjsKKwl1MTYgc2VxX2xlbmJh cjsKKwl1MTYgZmxhZ3M7Cit9IF9fcGFja2VkOworCitleHRlcm4gdW5zaWduZWQgbG9uZyBheDg4 Nzk2Y19ub19yZWdzX21hc2tbXTsKKworI2VuZGlmIC8qICNpZm5kZWYgX0FYODg3OTZDX01BSU5f SCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGku YyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYTIwYmJlYjRkYzEKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5jCkBAIC0wLDAgKzEs MTExIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICog Q29weXJpZ2h0IChjKSAyMDEwIEFTSVggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KKyAqIENvcHly aWdodCAoYykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorICoKKyAqIEFTSVgg QVg4ODc5NkMgU1BJIEZhc3QgRXRoZXJuZXQgTGludXggZHJpdmVyCisgKi8KKworI2RlZmluZSBw cl9mbXQoZm10KQkiYXg4ODc5NmM6ICIgZm10CisKKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4K KyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+CisKKyNpbmNsdWRlICJheDg4Nzk2Y19zcGkuaCIK KworLyogZHJpdmVyIGJ1cyBtYW5hZ2VtZW50IGZ1bmN0aW9ucyAqLworaW50IGF4c3BpX3dha2V1 cChjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpKQoreworCXU4IHR4X2J1ZjsKKwlpbnQg cmV0OworCisJdHhfYnVmID0gQVhfU1BJQ01EX0VYSVRfUFdEOwkvKiBPUCAqLworCXJldCA9IHNw aV93cml0ZShheF9zcGktPnNwaSwgJnR4X2J1ZiwgMSk7CisJaWYgKHJldCkKKwkJZGV2X2Vycigm YXhfc3BpLT5zcGktPmRldiwgIiVzKCkgZmFpbGVkOiByZXQgPSAlZFxuIiwgX19mdW5jX18sIHJl dCk7CisJcmV0dXJuIHJldDsKK30KKworaW50IGF4c3BpX3JlYWRfc3RhdHVzKGNvbnN0IHN0cnVj dCBheHNwaV9kYXRhICpheF9zcGksIHN0cnVjdCBzcGlfc3RhdHVzICpzdGF0dXMpCit7CisJdTgg dHhfYnVmOworCWludCByZXQ7CisKKwkvKiBPUCAqLworCXR4X2J1ZiA9IEFYX1NQSUNNRF9SRUFE X1NUQVRVUzsKKwlyZXQgPSBzcGlfd3JpdGVfdGhlbl9yZWFkKGF4X3NwaS0+c3BpLCAmdHhfYnVm LCAxLCAodTggKikmc3RhdHVzLCAzKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZheF9zcGktPnNw aS0+ZGV2LCAiJXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwllbHNl CisJCWxlMTZfdG9fY3B1cygmc3RhdHVzLT5pc3IpOworCisJcmV0dXJuIHJldDsKK30KKworaW50 IGF4c3BpX3JlYWRfcnhxKHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGlu dCBsZW4pCit7CisJc3RydWN0IHNwaV90cmFuc2ZlciAqeGZlciA9IGF4X3NwaS0+c3BpX3J4X3hm ZXI7CisJaW50IHJldDsKKworCW1lbWNweShheF9zcGktPmNtZF9idWYsIHJ4X2NtZF9idWYsIDUp OworCisJeGZlci0+dHhfYnVmID0gYXhfc3BpLT5jbWRfYnVmOworCXhmZXItPnJ4X2J1ZiA9IE5V TEw7CisJeGZlci0+bGVuID0gYXhfc3BpLT5jb21wID8gMiA6IDU7CisJeGZlci0+Yml0c19wZXJf d29yZCA9IDg7CisJc3BpX21lc3NhZ2VfYWRkX3RhaWwoeGZlciwgJmF4X3NwaS0+cnhfbXNnKTsK KworCXhmZXIrKzsKKwl4ZmVyLT5yeF9idWYgPSBkYXRhOworCXhmZXItPnR4X2J1ZiA9IE5VTEw7 CisJeGZlci0+bGVuID0gbGVuOworCXhmZXItPmJpdHNfcGVyX3dvcmQgPSA4OworCXNwaV9tZXNz YWdlX2FkZF90YWlsKHhmZXIsICZheF9zcGktPnJ4X21zZyk7CisJcmV0ID0gc3BpX3N5bmMoYXhf c3BpLT5zcGksICZheF9zcGktPnJ4X21zZyk7CisJaWYgKHJldCkKKwkJZGV2X2VycigmYXhfc3Bp LT5zcGktPmRldiwgIiVzKCkgZmFpbGVkOiByZXQgPSAlZFxuIiwgX19mdW5jX18sIHJldCk7CisK KwlyZXR1cm4gcmV0OworfQorCitpbnQgYXhzcGlfd3JpdGVfdHhxKGNvbnN0IHN0cnVjdCBheHNw aV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGludCBsZW4pCit7CisJcmV0dXJuIHNwaV93cml0 ZShheF9zcGktPnNwaSwgZGF0YSwgbGVuKTsKK30KKwordTE2IGF4c3BpX3JlYWRfcmVnKGNvbnN0 IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHU4IHJlZykKK3sKKwl1OCB0eF9idWZbNF07CisJ dTE2IHJ4X2J1ZiA9IDA7CisJaW50IHJldDsKKwlpbnQgbGVuID0gYXhfc3BpLT5jb21wID8gMyA6 IDQ7CisKKwl0eF9idWZbMF0gPSAweDAzOwkvKiBPUCBjb2RlIHJlYWQgcmVnaXN0ZXIgKi8KKwl0 eF9idWZbMV0gPSByZWc7CS8qIHJlZ2lzdGVyIGFkZHJlc3MgKi8KKwl0eF9idWZbMl0gPSAweEZG OwkvKiBkdW15IGN5Y2xlICovCisJdHhfYnVmWzNdID0gMHhGRjsJLyogZHVteSBjeWNsZSAqLwor CXJldCA9IHNwaV93cml0ZV90aGVuX3JlYWQoYXhfc3BpLT5zcGksIHR4X2J1ZiwgbGVuLCAodTgg KikmcnhfYnVmLCAyKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAi JXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwllbHNlCisJCWxlMTZf dG9fY3B1cygmcnhfYnVmKTsKKworCXJldHVybiByeF9idWY7Cit9CisKK2ludCBheHNwaV93cml0 ZV9yZWcoY29uc3Qgc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSwgdTggcmVnLCB1MTYgdmFsdWUp Cit7CisJdTggdHhfYnVmWzRdOworCWludCByZXQ7CisKKwl0eF9idWZbMF0gPSBBWF9TUElDTURf V1JJVEVfUkVHOwkvKiBPUCBjb2RlIHJlYWQgcmVnaXN0ZXIgKi8KKwl0eF9idWZbMV0gPSByZWc7 CQkJLyogcmVnaXN0ZXIgYWRkcmVzcyAqLworCXR4X2J1ZlsyXSA9IHZhbHVlOworCXR4X2J1Zlsz XSA9IHZhbHVlID4+IDg7CisKKwlyZXQgPSBzcGlfd3JpdGUoYXhfc3BpLT5zcGksIHR4X2J1Ziwg NCk7CisJaWYgKHJldCkKKwkJZGV2X2VycigmYXhfc3BpLT5zcGktPmRldiwgIiVzKCkgZmFpbGVk OiByZXQgPSAlZFxuIiwgX19mdW5jX18sIHJldCk7CisJcmV0dXJuIHJldDsKK30KKwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuaCBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi43YTQ5MjA1YzJjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBDb3B5cmlnaHQg KGMpIDIwMTAgQVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAy MDIwIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisgKgorICogQVNJWCBBWDg4Nzk2QyBT UEkgRmFzdCBFdGhlcm5ldCBMaW51eCBkcml2ZXIKKyAqLworCisjaWZuZGVmIF9BWDg4Nzk2Q19T UElfSAorI2RlZmluZSBfQVg4ODc5NkNfU1BJX0gKKworI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGku aD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisvKiBEZWZpbml0aW9uIG9mIFNQSSBjb21t YW5kICovCisjZGVmaW5lIEFYX1NQSUNNRF9XUklURV9UWFEJCTB4MDIKKyNkZWZpbmUgQVhfU1BJ Q01EX1JFQURfUkVHCQkweDAzCisjZGVmaW5lIEFYX1NQSUNNRF9SRUFEX1NUQVRVUwkJMHgwNQor I2RlZmluZSBBWF9TUElDTURfUkVBRF9SWFEJCTB4MEIKKyNkZWZpbmUgQVhfU1BJQ01EX0JJRElS X1dSUQkJMHhCMgorI2RlZmluZSBBWF9TUElDTURfV1JJVEVfUkVHCQkweEQ4CisjZGVmaW5lIEFY X1NQSUNNRF9FWElUX1BXRAkJMHhBQgorCitzdGF0aWMgY29uc3QgdTggcnhfY21kX2J1Zls1XSA9 IHtBWF9TUElDTURfUkVBRF9SWFEsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkZ9Oworc3RhdGljIGNv bnN0IHU4IHR4X2NtZF9idWZbNF0gPSB7QVhfU1BJQ01EX1dSSVRFX1RYUSwgMHhGRiwgMHhGRiwg MHhGRn07CisKK3N0cnVjdCBheHNwaV9kYXRhIHsKKwlzdHJ1Y3Qgc3BpX2RldmljZQkqc3BpOwor CXN0cnVjdCBzcGlfbWVzc2FnZQlyeF9tc2c7CisJc3RydWN0IHNwaV90cmFuc2ZlcglzcGlfcnhf eGZlclsyXTsKKwl1OAkJCWNtZF9idWZbNl07CisJdTgJCQljb21wOworfTsKKworc3RydWN0IHNw aV9zdGF0dXMgeworCXUxNiBpc3I7CisJdTggc3RhdHVzOworIwlkZWZpbmUgQVhfU1RBVFVTX1JF QURZCQkweDgwCit9OworCitpbnQgYXhzcGlfcmVhZF9yeHEoc3RydWN0IGF4c3BpX2RhdGEgKmF4 X3NwaSwgdm9pZCAqZGF0YSwgaW50IGxlbik7CitpbnQgYXhzcGlfd3JpdGVfdHhxKGNvbnN0IHN0 cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGludCBsZW4pOwordTE2IGF4c3Bp X3JlYWRfcmVnKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHU4IHJlZyk7CitpbnQg YXhzcGlfd3JpdGVfcmVnKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHU4IHJlZywg dTE2IHZhbHVlKTsKK2ludCBheHNwaV9yZWFkX3N0YXR1cyhjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0 YSAqYXhfc3BpLCBzdHJ1Y3Qgc3BpX3N0YXR1cyAqc3RhdHVzKTsKK2ludCBheHNwaV93YWtldXAo Y29uc3Qgc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSk7CisKK3N0YXRpYyBpbmxpbmUgdTE2IEFY X1JFQUQoY29uc3Qgc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSwgdTggb2Zmc2V0KQoreworCXJl dHVybiBheHNwaV9yZWFkX3JlZyhheF9zcGksIG9mZnNldCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg aW50IEFYX1dSSVRFKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHUxNiB2YWx1ZSwg dTggb2Zmc2V0KQoreworCXJldHVybiBheHNwaV93cml0ZV9yZWcoYXhfc3BpLCBvZmZzZXQsIHZh bHVlKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgQVhfUkVBRF9TVEFUVVMoY29uc3Qgc3RydWN0 IGF4c3BpX2RhdGEgKmF4X3NwaSwKKwkJCQkgc3RydWN0IHNwaV9zdGF0dXMgKnN0YXR1cykKK3sK KwlyZXR1cm4gYXhzcGlfcmVhZF9zdGF0dXMoYXhfc3BpLCBzdGF0dXMpOworfQorCitzdGF0aWMg aW5saW5lIGludCBBWF9XQUtFVVAoc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSkKK3sKKwlyZXR1 cm4gYXhzcGlfd2FrZXVwKGF4X3NwaSk7Cit9CisjZW5kaWYKKwotLSAKMi4yNi4yCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=