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=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, 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 243C2C433E0 for ; Thu, 25 Jun 2020 00:18:47 +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 D4AA52078D for ; Thu, 25 Jun 2020 00:18:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="0vNA3WxD"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="g/0wv5Cj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D4AA52078D 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=ZDtu8V8aEuxig2+RtNoq8IfhP5mg7YVgfc6DvS1zSOs=; b=0vNA3WxD0HvR4yO/YtAgQQZrn QDgEDw9o5GKT6xYzRij3lX7OmTdJtspddAcniAq9hnMgQnNK49nqV6lpT/yhXfvQ7lnr2jBWfC9We OWWQHhK8FFcSLc6iGXw3urQ8UFquTvbo0LeFiGYVup6SE4K0qvZzm2EvQq/i7MotLZngeqaXTCeO3 chqhHlXAMbqLcsAGHM3NACqQxGPgRtuvbI8JsY8Ux5VOyTTY8POOsPLu3Fx9OFSRHAifaCoHWWyzL 7p5IdBEWl7VLHLJjajItEtSvzXs/39YdN/wAX4thHy6tYuIh69D3hPFS5BH/SEfokGoNv5V6iOflu TWqg9eO4w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1joFYg-00029h-90; Thu, 25 Jun 2020 00:16:02 +0000 Received: from mailout1.samsung.com ([203.254.224.24]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1joFYX-000246-11 for linux-arm-kernel@lists.infradead.org; Thu, 25 Jun 2020 00:15:55 +0000 Received: from epcas5p2.samsung.com (unknown [182.195.41.40]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20200625001547epoutp013dc4d28f3a0a31e93182f1625735650b~boTZRNJVM0889308893epoutp01C for ; Thu, 25 Jun 2020 00:15:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20200625001547epoutp013dc4d28f3a0a31e93182f1625735650b~boTZRNJVM0889308893epoutp01C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1593044147; bh=O28R9MSV89jdmBTrxbOgaL2BuJJy/XKFMmWv4C+c9zM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g/0wv5Cj7Lj5sWxWlB4iIXX5XNMI7bg0yxEFBupP74Bm4KQp7zuLa1q1nhx//8d8X 4EoPjMwcBw2wr3KWeH651bgqIDWamQfwBhk0+lpwIluUvfeocFheHmg4D9s194+BCI 7W86gndS4nQM6d6Fqy1c2kbfMA/nK3z5atqlWQPU= Received: from epsmges5p3new.samsung.com (unknown [182.195.42.75]) by epcas5p3.samsung.com (KnoxPortal) with ESMTP id 20200625001546epcas5p350c38fd55214bad5a61bc032257dad28~boTYdKn9O1759717597epcas5p3L; Thu, 25 Jun 2020 00:15:46 +0000 (GMT) Received: from epcas5p2.samsung.com ( [182.195.41.40]) by epsmges5p3new.samsung.com (Symantec Messaging Gateway) with SMTP id 94.98.09475.2BCE3FE5; Thu, 25 Jun 2020 09:15:46 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas5p2.samsung.com (KnoxPortal) with ESMTPA id 20200625001545epcas5p2127fb1fac70397d9c23a1246cc86f753~boTXKttl72674926749epcas5p2p; Thu, 25 Jun 2020 00:15:45 +0000 (GMT) Received: from epsmgms1p1new.samsung.com (unknown [182.195.42.41]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200625001545epsmtrp175e28c2954d6bb9ce044f9f043c567b7~boTW4i5el1156411564epsmtrp1B; Thu, 25 Jun 2020 00:15:45 +0000 (GMT) X-AuditID: b6c32a4b-389ff70000002503-27-5ef3ecb29d1f Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgms1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id 8C.98.08382.1BCE3FE5; Thu, 25 Jun 2020 09:15:45 +0900 (KST) Received: from Jaguar.sa.corp.samsungelectronics.net (unknown [107.108.73.139]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200625001543epsmtip1ccb0c873e5f931ff5dfd77a4cbf79485~boTVV_O-V1056110561epsmtip1k; Thu, 25 Jun 2020 00:15:43 +0000 (GMT) From: Alim Akhtar To: vkoul@kernel.org Subject: [RESEND PATCH v10 2/2] phy: samsung-ufs: add UFS PHY driver for samsung SoC Date: Thu, 25 Jun 2020 05:26:31 +0530 Message-Id: <20200624235631.11232-2-alim.akhtar@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200624235631.11232-1-alim.akhtar@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA02Se0hTURzHO/febdfV4rSsfmoPnElaacUKLlRaZDaLIGLYi6yhF5XpHLu9 KZS0hyudUZJbc9pzpUK2fGVlvjULX9nTKaZFaKW1SI0Ia7uL+u/7PefzPV++cGhSmi3wpuM1 +1idRpUgE4qpsrrAgCDbp29RS61VS5k+S5mQyatvFTDt788Kmba2YhHzuqSBYmwDLwTMs0qz kMlpqyKYEw/rRcw9ezO5RqywFaQLFXevJSsySwqQoulVOaH4Zpu7RbBTvCqGTYg/wOqWhOwV xw3ZcpH2ugUdauy+KUxB2WlIjzxowMuh/vsHUo/EtBTfR9BTYSB440CQYjKIeDOKYPiRQ/g3 0mc0u6mHCEbHR9wmjYDbOZWEkxLiRdBzscSlPbEnFN6yICdE4l8Iyl5+FegRTU/HkfB6TOeU FPaH1pptTlyCV4Hpx0uKL5sHhcXVpBPxwKvBcFnHI9PgsfGdCyH/IKmll1wTAGfT0JzW686G QW56i4jX02GoqcStvWHQcFLkfBOwGs5Wyvnjo3Dd0uiOhkJ1l5lyIiQOhNuVS/iqqZDx8x3B JyVw+qSUp/0hdfi5O+kD586cEfBaAU97WlxairMQ6HsTs9A8038DTP8NMP0ry0dkAfJitVxi LMut0Mo17MFgTpXI7dfEBkcnJdqQ6+cs3FSB+vu+BNcigka1CGhS5ilRhjuipJIY1eEjrC5p j25/AsvVIh+aks2SyMafRklxrGofq2ZZLav7e0vQHt4pBHTFqT+MKnc98eLIDY1VVwba6413 Fpd/xumZYw3dfuqtQdzcECNpzihaNMWaH5sfKi7XBlxTZxblD34XjMh92+3zJ4/nrgwPDVNG RD4hfS5UWFSnfA939b5VSicOGpQNN2Ou7l7wxle/dtrXzsFCLkQ+tmVrGG7pMExqH0oK2O6J u4+up0vfi+3b7jn6I84nZ20vqIlfvWNk3SG72IvdHOCXNyx/Hk6NWOfv+jiQG/RxlmOGKkQW OVZ+Z87gxlsK/0/ZVPTxG31fluVRzwKtpzpqH1wmZk6c01hb+w3mjQTzIj2DsDcVzQ4arfAL r6qbKBVEWI99Lk4dSJ55oDO1WkZxcaplC0kdp/oN2C+Os6gDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDLMWRmVeSWpSXmKPExsWy7bCSnO7GN5/jDC7OY7d4MG8bm8X8I+dY LS487WGzOH9+A7vFzS1HWSw2Pb7GanF51xw2ixnn9zFZtO49wm6x884JZgcuj02rOtk8Ni+p 9+jbsorR4/iN7UwenzfJBbBGcdmkpOZklqUW6dslcGW82jSXsWDpPMaKY7dXsDUwTm1h7GLk 5JAQMJF4MHMOUxcjF4eQwG5Gia0TtjFDJKQlrm+cwA5hC0us/PecHaKoiUni2Z7pYEVsAtoS d6dvYQKxRQREJFavnMcIUsQs0M4kcf37AbCEsECIxLvj74ESHBwsAqoS5w6Gg4R5BWwkZv28 zgKxQF5i9YYDzCAlnAK2Ev0Li0DCQkAlr/ovskKUC0qcnPmEBaSEWUBdYv08IZAwM1Bn89bZ zBMYBWchqZqFUDULSdUCRuZVjJKpBcW56bnFhgWGeanlesWJucWleel6yfm5mxjBEaKluYNx +6oPeocYmTgYDzFKcDArifCGuH2KE+JNSaysSi3Kjy8qzUktPsQozcGiJM57o3BhnJBAemJJ anZqakFqEUyWiYNTqoHp0DS/xlpmyYCUrtPPbsup5X+fGGnHNEExwT9MvHGZtdn5kMzw/RZW ZXZ3fHcJ3JDdImBZZum/5/CcDf2vFugnRWyp2Oq0Ke60e8ixoKu9v7psnlTfSWw/9zMmeLua 5RTbA1oLYtKX3lXkjJ1YoysvVTVpPufGrvLZno9KYhysk5czPuTUPVQXtmv9k8SmP88/pb7e VVpx4szW+Zorb90NnClwYPfKKXpaoYfORc+wm33cR0V1w+Henduc4ncVL3uRdFwzJYxt6qGX G6Q3zzc67Tj9w5n3hu0/w2RVt9nt0d0ubTbH1UDoyZmPyh+2b7u8rKc7qCAoJ+V0jPBzP5FV mZEPumJ+N0bY1VplLtioxFKckWioxVxUnAgAipZxUv8CAAA= X-CMS-MailID: 20200625001545epcas5p2127fb1fac70397d9c23a1246cc86f753 X-Msg-Generator: CA CMS-TYPE: 105P X-CMS-RootMailID: 20200625001545epcas5p2127fb1fac70397d9c23a1246cc86f753 References: <20200624235631.11232-1-alim.akhtar@samsung.com> 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: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, krzk@kernel.org, kwmad.kim@samsung.com, robh+dt@kernel.org, Alim Akhtar , kishon@ti.com, linux-arm-kernel@lists.infradead.org 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 VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFNhbXN1bmcgVUZTIFBIWSBkcml2ZXIuIFRoaXMgZHJpdmVy CnN1cHBvcnRzIHRvIGRlYWwgd2l0aCBwaHkgY2FsaWJyYXRpb24gYW5kIHBvd2VyIGNvbnRyb2wK YWNjb3JkaW5nIHRvIFVGUyBob3N0IGRyaXZlcidzIGJlaGF2aW9yLgoKUmV2aWV3ZWQtYnk6IEtp d29vbmcgS2ltIDxrd21hZC5raW1Ac2Ftc3VuZy5jb20+ClNpZ25lZC1vZmYtYnk6IFNldW5nd29u IEplb24gPGVzc3V1akBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsaW0gQWtodGFyIDxhbGlt LmFraHRhckBzYW1zdW5nLmNvbT4KQ2M6IEtpc2hvbiBWaWpheSBBYnJhaGFtIEkgPGtpc2hvbkB0 aS5jb20+CkNjOiBWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPgpUZXN0ZWQtYnk6IFBhd2XF giBDaG1pZWwgPHBhd2VsLm1pa29sYWouY2htaWVsQGdtYWlsLmNvbT4KLS0tCgpUaGlzIGlzIGp1 c3QgYSByZWJhc2Ugb24gcGh5LW5leHQgdHJlZS4KVGhpcyBwYXRjaCB3YXMgcGFydCBvZiBhIHNl cmllcyBbMV0gd2hpY2ggYWRkcyB1ZnMKaG9zdCBjb250cm9sbGVyIGRyaXZlci4KClsxXSBodHRw czovL2xrbWwub3JnL2xrbWwvMjAyMC81LzI3LzE2OTcKCiBkcml2ZXJzL3BoeS9zYW1zdW5nL0tj b25maWcgICAgICAgICAgIHwgICA5ICsKIGRyaXZlcnMvcGh5L3NhbXN1bmcvTWFrZWZpbGUgICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9waHkvc2Ftc3VuZy9waHktZXh5bm9zNy11ZnMuaCB8ICA4 NiArKysrKysKIGRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LXNhbXN1bmctdWZzLmMgfCAzODAgKysr KysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LXNhbXN1bmct dWZzLmggfCAxNDMgKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA2MTkgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LWV4eW5vczctdWZz LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVm cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ftc3VuZy11 ZnMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3NhbXN1bmcvS2NvbmZpZyBiL2RyaXZlcnMv cGh5L3NhbXN1bmcvS2NvbmZpZwppbmRleCA5ZTQ4M2QxZmRhZjIuLmZjMWUzYzE3Zjg0MiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9waHkvc2Ftc3VuZy9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L3Nh bXN1bmcvS2NvbmZpZwpAQCAtMjksNiArMjksMTUgQEAgY29uZmlnIFBIWV9FWFlOT1NfUENJRQog CSAgRW5hYmxlIFBDSWUgUEhZIHN1cHBvcnQgZm9yIEV4eW5vcyBTb0Mgc2VyaWVzLgogCSAgVGhp cyBkcml2ZXIgcHJvdmlkZXMgUEhZIGludGVyZmFjZSBmb3IgRXh5bm9zIFBDSWUgY29udHJvbGxl ci4KIAorY29uZmlnIFBIWV9TQU1TVU5HX1VGUworCXRyaXN0YXRlICJTQU1TVU5HIFNvQyBzZXJp ZXMgVUZTIFBIWSBkcml2ZXIiCisJZGVwZW5kcyBvbiBPRiAmJiAoQVJDSF9FWFlOT1MgfHwgQ09N UElMRV9URVNUKQorCXNlbGVjdCBHRU5FUklDX1BIWQorCWhlbHAKKwkgIEVuYWJsZSB0aGlzIHRv IHN1cHBvcnQgdGhlIFNhbXN1bmcgVUZTIFBIWSBkcml2ZXIgZm9yCisJICBTYW1zdW5nIFNvQ3Mu IFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2UgZm9yIFVGUworCSAgaG9zdCBjb250 cm9sbGVyIHRvIGRvIFBIWSByZWxhdGVkIHByb2dyYW1taW5nLgorCiBjb25maWcgUEhZX1NBTVNV TkdfVVNCMgogCXRyaXN0YXRlICJTYW1zdW5nIFVTQiAyLjAgUEhZIGRyaXZlciIKIAlkZXBlbmRz IG9uIEhBU19JT01FTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc2Ftc3VuZy9NYWtlZmlsZSBi L2RyaXZlcnMvcGh5L3NhbXN1bmcvTWFrZWZpbGUKaW5kZXggZGI5YjFhYTBkZTZlLi4zOTU5MTAw ZmU4YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L3NhbXN1bmcvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9waHkvc2Ftc3VuZy9NYWtlZmlsZQpAQCAtMiw2ICsyLDcgQEAKIG9iai0kKENPTkZJR19Q SFlfRVhZTk9TX0RQX1ZJREVPKQkrPSBwaHktZXh5bm9zLWRwLXZpZGVvLm8KIG9iai0kKENPTkZJ R19QSFlfRVhZTk9TX01JUElfVklERU8pCSs9IHBoeS1leHlub3MtbWlwaS12aWRlby5vCiBvYmot JChDT05GSUdfUEhZX0VYWU5PU19QQ0lFKQkJKz0gcGh5LWV4eW5vcy1wY2llLm8KK29iai0kKENP TkZJR19QSFlfU0FNU1VOR19VRlMpCQkrPSBwaHktc2Ftc3VuZy11ZnMubwogb2JqLSQoQ09ORklH X1BIWV9TQU1TVU5HX1VTQjIpCQkrPSBwaHktZXh5bm9zLXVzYjIubwogcGh5LWV4eW5vcy11c2Iy LXkJCQkrPSBwaHktc2Ftc3VuZy11c2IyLm8KIHBoeS1leHlub3MtdXNiMi0kKENPTkZJR19QSFlf RVhZTk9TNDIxMF9VU0IyKQkrPSBwaHktZXh5bm9zNDIxMC11c2IyLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGh5L3NhbXN1bmcvcGh5LWV4eW5vczctdWZzLmggYi9kcml2ZXJzL3BoeS9zYW1zdW5n L3BoeS1leHlub3M3LXVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uYzRhYWI3OTJkMzBlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvc2Ftc3VuZy9w aHktZXh5bm9zNy11ZnMuaApAQCAtMCwwICsxLDg2IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogVUZTIFBIWSBkcml2ZXIgZGF0YSBmb3IgU2Ft c3VuZyBFWFlOT1M3IFNvQworICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTYW1zdW5nIEVsZWN0 cm9uaWNzIENvLiwgTHRkLgorICovCisjaWZuZGVmIF9QSFlfRVhZTk9TN19VRlNfSF8KKyNkZWZp bmUgX1BIWV9FWFlOT1M3X1VGU19IXworCisjaW5jbHVkZSAicGh5LXNhbXN1bmctdWZzLmgiCisK KyNkZWZpbmUgRVhZTk9TN19FTUJFRERFRF9DT01CT19QSFlfQ1RSTAkweDcyMAorI2RlZmluZSBF WFlOT1M3X0VNQkVEREVEX0NPTUJPX1BIWV9DVFJMX01BU0sJMHgxCisjZGVmaW5lIEVYWU5PUzdf RU1CRURERURfQ09NQk9fUEhZX0NUUkxfRU4JQklUKDApCisKKy8qIENhbGlicmF0aW9uIGZvciBw aHkgaW5pdGlhbGl6YXRpb24gKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5 X2NmZyBleHlub3M3X3ByZV9pbml0X2NmZ1tdID0geworCVBIWV9DT01OX1JFR19DRkcoMHgwMGYs IDB4ZmEsIFBXUl9NT0RFX0FOWSksCisJUEhZX0NPTU5fUkVHX0NGRygweDAxMCwgMHg4MiwgUFdS X01PREVfQU5ZKSwKKwlQSFlfQ09NTl9SRUdfQ0ZHKDB4MDExLCAweDFlLCBQV1JfTU9ERV9BTlkp LAorCVBIWV9DT01OX1JFR19DRkcoMHgwMTcsIDB4ODQsIFBXUl9NT0RFX0FOWSksCisJUEhZX1RS U1ZfUkVHX0NGRygweDAzNSwgMHg1OCwgUFdSX01PREVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZH KDB4MDM2LCAweDMyLCBQV1JfTU9ERV9BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzcsIDB4 NDAsIFBXUl9NT0RFX0FOWSksCisJUEhZX1RSU1ZfUkVHX0NGRygweDAzYiwgMHg4MywgUFdSX01P REVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDQyLCAweDg4LCBQV1JfTU9ERV9BTlkpLAor CVBIWV9UUlNWX1JFR19DRkcoMHgwNDMsIDB4YTYsIFBXUl9NT0RFX0FOWSksCisJUEhZX1RSU1Zf UkVHX0NGRygweDA0OCwgMHg3NCwgUFdSX01PREVfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4 MDRjLCAweDViLCBQV1JfTU9ERV9BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwNGQsIDB4ODMs IFBXUl9NT0RFX0FOWSksCisJUEhZX1RSU1ZfUkVHX0NGRygweDA1YywgMHgxNCwgUFdSX01PREVf QU5ZKSwKKwlFTkRfVUZTX1BIWV9DRkcKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Ftc3Vu Z191ZnNfcGh5X2NmZyBleHlub3M3X3Bvc3RfaW5pdF9jZmdbXSA9IHsKKwlFTkRfVUZTX1BIWV9D RkcKK307CisKKy8qIENhbGlicmF0aW9uIGZvciBIUyBtb2RlIHNlcmllcyBBL0IgKi8KK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5X2NmZyBleHlub3M3X3ByZV9wd3JfaHNfY2Zn W10gPSB7CisJUEhZX0NPTU5fUkVHX0NGRygweDAwZiwgMHhmYSwgUFdSX01PREVfSFNfQU5ZKSwK KwlQSFlfQ09NTl9SRUdfQ0ZHKDB4MDEwLCAweDgyLCBQV1JfTU9ERV9IU19BTlkpLAorCVBIWV9D T01OX1JFR19DRkcoMHgwMTEsIDB4MWUsIFBXUl9NT0RFX0hTX0FOWSksCisJLyogU2V0dGluZyBv cmRlcjogMXN0KDB4MTYsIDJuZCgweDE1KSAqLworCVBIWV9DT01OX1JFR19DRkcoMHgwMTYsIDB4 ZmYsIFBXUl9NT0RFX0hTX0FOWSksCisJUEhZX0NPTU5fUkVHX0NGRygweDAxNSwgMHg4MCwgUFdS X01PREVfSFNfQU5ZKSwKKwlQSFlfQ09NTl9SRUdfQ0ZHKDB4MDE3LCAweDk0LCBQV1JfTU9ERV9I U19BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzYsIDB4MzIsIFBXUl9NT0RFX0hTX0FOWSks CisJUEhZX1RSU1ZfUkVHX0NGRygweDAzNywgMHg0MywgUFdSX01PREVfSFNfQU5ZKSwKKwlQSFlf VFJTVl9SRUdfQ0ZHKDB4MDM4LCAweDNmLCBQV1JfTU9ERV9IU19BTlkpLAorCVBIWV9UUlNWX1JF R19DRkcoMHgwNDIsIDB4ODgsIFBXUl9NT0RFX0hTX0cyX1NFUl9BKSwKKwlQSFlfVFJTVl9SRUdf Q0ZHKDB4MDQyLCAweGJiLCBQV1JfTU9ERV9IU19HMl9TRVJfQiksCisJUEhZX1RSU1ZfUkVHX0NG RygweDA0MywgMHhhNiwgUFdSX01PREVfSFNfQU5ZKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDQ4 LCAweDc0LCBQV1JfTU9ERV9IU19BTlkpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzQsIDB4MzUs IFBXUl9NT0RFX0hTX0cyX1NFUl9BKSwKKwlQSFlfVFJTVl9SRUdfQ0ZHKDB4MDM0LCAweDM2LCBQ V1JfTU9ERV9IU19HMl9TRVJfQiksCisJUEhZX1RSU1ZfUkVHX0NGRygweDAzNSwgMHg1YiwgUFdS X01PREVfSFNfRzJfU0VSX0EpLAorCVBIWV9UUlNWX1JFR19DRkcoMHgwMzUsIDB4NWMsIFBXUl9N T0RFX0hTX0cyX1NFUl9CKSwKKwlFTkRfVUZTX1BIWV9DRkcKK307CisKKy8qIENhbGlicmF0aW9u IGZvciBIUyBtb2RlIHNlcmllcyBBL0IgYXRmZXIgUE1DICovCitzdGF0aWMgY29uc3Qgc3RydWN0 IHNhbXN1bmdfdWZzX3BoeV9jZmcgZXh5bm9zN19wb3N0X3B3cl9oc19jZmdbXSA9IHsKKwlQSFlf Q09NTl9SRUdfQ0ZHKDB4MDE1LCAweDAwLCBQV1JfTU9ERV9IU19BTlkpLAorCVBIWV9UUlNWX1JF R19DRkcoMHgwNGQsIDB4ODMsIFBXUl9NT0RFX0hTX0FOWSksCisJRU5EX1VGU19QSFlfQ0ZHCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgKmV4eW5vczdfdWZz X3BoeV9jZmdzW0NGR19UQUdfTUFYXSA9IHsKKwlbQ0ZHX1BSRV9JTklUXQkJPSBleHlub3M3X3By ZV9pbml0X2NmZywKKwlbQ0ZHX1BPU1RfSU5JVF0JCT0gZXh5bm9zN19wb3N0X2luaXRfY2ZnLAor CVtDRkdfUFJFX1BXUl9IU10JPSBleHlub3M3X3ByZV9wd3JfaHNfY2ZnLAorCVtDRkdfUE9TVF9Q V1JfSFNdCT0gZXh5bm9zN19wb3N0X3B3cl9oc19jZmcsCit9OworCitzdGF0aWMgc3RydWN0IHNh bXN1bmdfdWZzX3BoeV9kcnZkYXRhIGV4eW5vczdfdWZzX3BoeSA9IHsKKwkuY2ZnID0gZXh5bm9z N191ZnNfcGh5X2NmZ3MsCisJLmlzb2wgPSB7CisJCS5vZmZzZXQgPSBFWFlOT1M3X0VNQkVEREVE X0NPTUJPX1BIWV9DVFJMLAorCQkubWFzayA9IEVYWU5PUzdfRU1CRURERURfQ09NQk9fUEhZX0NU UkxfTUFTSywKKwkJLmVuID0gRVhZTk9TN19FTUJFRERFRF9DT01CT19QSFlfQ1RSTF9FTiwKKwl9 LAorCS5oYXNfc3ltYm9sX2NsayA9IDEsCit9OworCisjZW5kaWYgLyogX1BIWV9FWFlOT1M3X1VG U19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ftc3VuZy11ZnMu YyBiL2RyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LXNhbXN1bmctdWZzLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZTI1NjE3ZjYyMmIKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVmcy5jCkBAIC0wLDAgKzEsMzgwIEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogVUZTIFBI WSBkcml2ZXIgZm9yIFNhbXN1bmcgU29DCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNhbXN1 bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisgKiBBdXRob3I6IFNldW5nd29uIEplb24gPGVzc3V1 akBnbWFpbC5jb20+CisgKiBBdXRob3I6IEFsaW0gQWtodGFyIDxhbGltLmFraHRhckBzYW1zdW5n LmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9k ZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+Cisj aW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRl IDxsaW51eC9tZmQvc3lzY29uLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bGludXgvcGh5L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorCisjaW5jbHVkZSAicGh5LXNhbXN1bmctdWZzLmgi CisKKyNkZWZpbmUgZm9yX2VhY2hfcGh5X2xhbmUocGh5LCBpKSBcCisJZm9yIChpID0gMDsgaSA8 IChwaHkpLT5sYW5lX2NudDsgaSsrKQorI2RlZmluZSBmb3JfZWFjaF9waHlfY2ZnKGNmZykgXAor CWZvciAoOyAoY2ZnKS0+aWQ7IChjZmcpKyspCisKKyNkZWZpbmUgUEhZX0RFRl9MQU5FX0NOVAkx CisKK3N0YXRpYyB2b2lkIHNhbXN1bmdfdWZzX3BoeV9jb25maWcoc3RydWN0IHNhbXN1bmdfdWZz X3BoeSAqcGh5LAorCQkJY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgKmNmZywgdTgg bGFuZSkKK3sKKwllbnVtIHtMQU5FXzAsIExBTkVfMX07IC8qIGxhbmUgaW5kZXggKi8KKworCXN3 aXRjaCAobGFuZSkgeworCWNhc2UgTEFORV8wOgorCQl3cml0ZWwoY2ZnLT52YWwsIChwaHkpLT5y ZWdfcG1hICsgY2ZnLT5vZmZfMCk7CisJCWJyZWFrOworCWNhc2UgTEFORV8xOgorCQlpZiAoY2Zn LT5pZCA9PSBQSFlfVFJTVl9CTEspCisJCQl3cml0ZWwoY2ZnLT52YWwsIChwaHkpLT5yZWdfcG1h ICsgY2ZnLT5vZmZfMSk7CisJCWJyZWFrOworCX0KK30KKworaW50IHNhbXN1bmdfdWZzX3BoeV93 YWl0X2Zvcl9sb2NrX2FjcShzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IHNhbXN1bmdfdWZz X3BoeSAqdWZzX3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5KTsKKwljb25zdCB1bnNpZ25l ZCBpbnQgdGltZW91dF91cyA9IDEwMDAwMDsKKwljb25zdCB1bnNpZ25lZCBpbnQgc2xlZXBfdXMg PSAxMDsKKwl1MzIgdmFsOworCWludCBlcnI7CisKKwllcnIgPSByZWFkbF9wb2xsX3RpbWVvdXQo CisJCQl1ZnNfcGh5LT5yZWdfcG1hICsgUEhZX0FQQl9BRERSKFBIWV9QTExfTE9DS19TVEFUVVMp LAorCQkJdmFsLCAodmFsICYgUEhZX1BMTF9MT0NLX0JJVCksIHNsZWVwX3VzLCB0aW1lb3V0X3Vz KTsKKwlpZiAoZXJyKSB7CisJCWRldl9lcnIodWZzX3BoeS0+ZGV2LAorCQkJImZhaWxlZCB0byBn ZXQgcGh5IHBsbCBsb2NrIGFjcXVpc2l0aW9uICVkXG4iLCBlcnIpOworCQlnb3RvIG91dDsKKwl9 CisKKwllcnIgPSByZWFkbF9wb2xsX3RpbWVvdXQoCisJCQl1ZnNfcGh5LT5yZWdfcG1hICsgUEhZ X0FQQl9BRERSKFBIWV9DRFJfTE9DS19TVEFUVVMpLAorCQkJdmFsLCAodmFsICYgUEhZX0NEUl9M T0NLX0JJVCksIHNsZWVwX3VzLCB0aW1lb3V0X3VzKTsKKwlpZiAoZXJyKSB7CisJCWRldl9lcnIo dWZzX3BoeS0+ZGV2LAorCQkJImZhaWxlZCB0byBnZXQgcGh5IGNkciBsb2NrIGFjcXVpc2l0aW9u ICVkXG4iLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKK291dDoKKwlyZXR1cm4gZXJyOworfQor CitpbnQgc2Ftc3VuZ191ZnNfcGh5X2NhbGlicmF0ZShzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3Ry dWN0IHNhbXN1bmdfdWZzX3BoeSAqdWZzX3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5KTsK KwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5X2NmZyAqKmNmZ3MgPSB1ZnNfcGh5LT5jZmc7CisJY29u c3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9jZmcgKmNmZzsKKwlpbnQgaTsKKwlpbnQgZXJyID0g MDsKKworCWlmICh1bmxpa2VseSh1ZnNfcGh5LT51ZnNfcGh5X3N0YXRlIDwgQ0ZHX1BSRV9JTklU IHx8CisJCSAgICAgdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSA+PSBDRkdfVEFHX01BWCkpIHsKKwkJ ZGV2X2Vycih1ZnNfcGh5LT5kZXYsICJpbnZhbGlkIHBoeSBjb25maWcgaW5kZXggJWRcbiIsCisJ CQkJCQkJdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CWlmICh1ZnNfcGh5LT5pc19wcmVfaW5pdCkKKwkJdWZzX3BoeS0+aXNfcHJlX2luaXQgPSBmYWxz ZTsKKwlpZiAodWZzX3BoeS0+aXNfcG9zdF9pbml0KSB7CisJCXVmc19waHktPmlzX3Bvc3RfaW5p dCA9IGZhbHNlOworCQl1ZnNfcGh5LT51ZnNfcGh5X3N0YXRlID0gQ0ZHX1BPU1RfSU5JVDsKKwl9 CisJaWYgKHVmc19waHktPmlzX3ByZV9wbWMpIHsKKwkJdWZzX3BoeS0+aXNfcHJlX3BtYyA9IGZh bHNlOworCQl1ZnNfcGh5LT51ZnNfcGh5X3N0YXRlID0gQ0ZHX1BSRV9QV1JfSFM7CisJfQorCWlm ICh1ZnNfcGh5LT5pc19wb3N0X3BtYykgeworCQl1ZnNfcGh5LT5pc19wb3N0X3BtYyA9IGZhbHNl OworCQl1ZnNfcGh5LT51ZnNfcGh5X3N0YXRlID0gQ0ZHX1BPU1RfUFdSX0hTOworCX0KKworCXN3 aXRjaCAodWZzX3BoeS0+dWZzX3BoeV9zdGF0ZSkgeworCWNhc2UgQ0ZHX1BSRV9JTklUOgorCQl1 ZnNfcGh5LT5pc19wb3N0X2luaXQgPSB0cnVlOworCQlicmVhazsKKwljYXNlIENGR19QT1NUX0lO SVQ6CisJCXVmc19waHktPmlzX3ByZV9wbWMgPSB0cnVlOworCQlicmVhazsKKwljYXNlIENGR19Q UkVfUFdSX0hTOgorCQl1ZnNfcGh5LT5pc19wb3N0X3BtYyA9IHRydWU7CisJCWJyZWFrOworCWNh c2UgQ0ZHX1BPU1RfUFdSX0hTOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKHVmc19w aHktPmRldiwgIndyb25nIHN0YXRlIGZvciBwaHkgY2FsaWJyYXRpb25cbiIpOworCX0KKworCWNm ZyA9IGNmZ3NbdWZzX3BoeS0+dWZzX3BoeV9zdGF0ZV07CisJaWYgKCFjZmcpCisJCWdvdG8gb3V0 OworCisJZm9yX2VhY2hfcGh5X2NmZyhjZmcpIHsKKwkJZm9yX2VhY2hfcGh5X2xhbmUodWZzX3Bo eSwgaSkgeworCQkJc2Ftc3VuZ191ZnNfcGh5X2NvbmZpZyh1ZnNfcGh5LCBjZmcsIGkpOworCQl9 CisJfQorCisJaWYgKHVmc19waHktPnVmc19waHlfc3RhdGUgPT0gQ0ZHX1BPU1RfUFdSX0hTKQor CQllcnIgPSBzYW1zdW5nX3Vmc19waHlfd2FpdF9mb3JfbG9ja19hY3EocGh5KTsKK291dDoKKwly ZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHNhbXN1bmdfdWZzX3BoeV9zeW1ib2xfY2xrX2lu aXQoc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqcGh5KQoreworCWludCByZXQgPSAwOworCisJcGh5 LT50eDBfc3ltYm9sX2NsayA9IGRldm1fY2xrX2dldChwaHktPmRldiwgInR4MF9zeW1ib2xfY2xr Iik7CisJaWYgKElTX0VSUihwaHktPnR4MF9zeW1ib2xfY2xrKSkgeworCQlkZXZfZXJyKHBoeS0+ ZGV2LCAiZmFpbGVkIHRvIGdldCB0eDBfc3ltYm9sX2NsayBjbG9ja1xuIik7CisJCWdvdG8gb3V0 OworCX0KKworCXBoeS0+cngwX3N5bWJvbF9jbGsgPSBkZXZtX2Nsa19nZXQocGh5LT5kZXYsICJy eDBfc3ltYm9sX2NsayIpOworCWlmIChJU19FUlIocGh5LT5yeDBfc3ltYm9sX2NsaykpIHsKKwkJ ZGV2X2VycihwaHktPmRldiwgImZhaWxlZCB0byBnZXQgcngwX3N5bWJvbF9jbGsgY2xvY2tcbiIp OworCQlnb3RvIG91dDsKKwl9CisKKwlwaHktPnJ4MV9zeW1ib2xfY2xrID0gZGV2bV9jbGtfZ2V0 KHBoeS0+ZGV2LCAicngxX3N5bWJvbF9jbGsiKTsKKwlpZiAoSVNfRVJSKHBoeS0+cngwX3N5bWJv bF9jbGspKSB7CisJCWRldl9lcnIocGh5LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHJ4MV9zeW1ib2xf Y2xrIGNsb2NrXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5h YmxlKHBoeS0+dHgwX3N5bWJvbF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihwaHktPmRl diwgIiVzOiB0eDBfc3ltYm9sX2NsayBlbmFibGUgZmFpbGVkICVkXG4iLAorCQkJCV9fZnVuY19f LCByZXQpOworCQlnb3RvIG91dDsKKwl9CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHBoeS0+ cngwX3N5bWJvbF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihwaHktPmRldiwgIiVzOiBy eDBfc3ltYm9sX2NsayBlbmFibGUgZmFpbGVkICVkXG4iLAorCQkJCV9fZnVuY19fLCByZXQpOwor CQlnb3RvIG91dDsKKwl9CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHBoeS0+cngxX3N5bWJv bF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihwaHktPmRldiwgIiVzOiByeDFfc3ltYm9s X2NsayBlbmFibGUgZmFpbGVkICVkXG4iLAorCQkJCV9fZnVuY19fLCByZXQpOworCQlnb3RvIG91 dDsKKwl9CitvdXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzYW1zdW5nX3Vmc19w aHlfY2xrc19pbml0KHN0cnVjdCBzYW1zdW5nX3Vmc19waHkgKnBoeSkKK3sKKwlpbnQgcmV0Owor CisJcGh5LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KHBoeS0+ZGV2LCAicmVmX2NsayIpOworCWlm IChJU19FUlIocGh5LT5yZWZfY2xrKSkKKwkJZGV2X2VycihwaHktPmRldiwgImZhaWxlZCB0byBn ZXQgcmVmX2NsayBjbG9ja1xuIik7CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocGh5LT5y ZWZfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIocGh5LT5kZXYsICIlczogcmVmX2NsayBl bmFibGUgZmFpbGVkICVkXG4iLAorCQkJCV9fZnVuY19fLCByZXQpOworCQlyZXR1cm4gcmV0Owor CX0KKworCWRldl9pbmZvKHBoeS0+ZGV2LCAiVUZTIE1QSFkgcmVmX2Nsa19yYXRlID0gJWxkXG4i LCBjbGtfZ2V0X3JhdGUocGh5LT5yZWZfY2xrKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBzYW1zdW5nX3Vmc19waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IHNh bXN1bmdfdWZzX3BoeSAqX3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5KTsKKwlpbnQgcmV0 OworCisJX3BoeS0+bGFuZV9jbnQgPSBwaHktPmF0dHJzLmJ1c193aWR0aDsKKwlfcGh5LT51ZnNf cGh5X3N0YXRlID0gQ0ZHX1BSRV9JTklUOworCisJLyoqCisJICogSW4gdWZzLCBQSFkgbmVlZCB0 byBiZSBjYWxpYnJhdGVkIGF0IGRpZmZlcmVudCBzdGFnZXMgLyBzdGF0ZQorCSAqIG1haW5seSBi ZWZvcmUgTGlua3N0YXJ0dXAsIGFmdGVyIExpbmtzdGFydHVwLCBiZWZvcmUgcG93ZXIKKwkgKiBt b2RlIGNoYW5nZSBhbmQgYWZ0ZXIgcG93ZXIgbW9kZSBjaGFuZ2UuCisJICogQmVsb3cgc3RhdGUg bWFjaGluZSBpbml0aWFsaXplIHRoZSBpbml0aWFsIHN0YXRlIHRvIGhhbmRsZQorCSAqIFBIWSBj YWxpYnJhdGlvbiBhdCB2YXJpb3VzIHN0YWdlcyBvZiBVRlMgaW5pdGlhbGl6YXRpb24gYW5kIHBv d2VyCisJICogbW9kZSBjaGFuZ2VzCisJICovCisJX3BoeS0+aXNfcHJlX2luaXQgPSB0cnVlOwor CV9waHktPmlzX3Bvc3RfaW5pdCA9IGZhbHNlOworCV9waHktPmlzX3ByZV9wbWMgPSBmYWxzZTsK KwlfcGh5LT5pc19wb3N0X3BtYyA9IGZhbHNlOworCisKKwlpZiAoX3BoeS0+ZHJ2ZGF0YS0+aGFz X3N5bWJvbF9jbGspIHsKKwkJcmV0ID0gc2Ftc3VuZ191ZnNfcGh5X3N5bWJvbF9jbGtfaW5pdChf cGh5KTsKKwkJaWYgKHJldCkKKwkJCWRldl9lcnIoX3BoeS0+ZGV2LAorCQkJCSJmYWlsZWQgdG8g c2V0IHVmcyBwaHkgc3ltYm9sIGNsb2Nrc1xuIik7CisJfQorCisJcmV0ID0gc2Ftc3VuZ191ZnNf cGh5X2Nsa3NfaW5pdChfcGh5KTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKF9waHktPmRldiwgImZh aWxlZCB0byBzZXQgdWZzIHBoeSAgY2xvY2tzXG4iKTsKKworCXNhbXN1bmdfdWZzX3BoeV9jYWxp YnJhdGUocGh5KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNhbXN1bmdfdWZzX3Bo eV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAq X3BoeSA9IGdldF9zYW1zdW5nX3Vmc19waHkocGh5KTsKKworCXNhbXN1bmdfdWZzX3BoeV9jdHJs X2lzb2woX3BoeSwgZmFsc2UpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNhbXN1bmdf dWZzX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBzYW1zdW5nX3Vm c19waHkgKl9waHkgPSBnZXRfc2Ftc3VuZ191ZnNfcGh5KHBoeSk7CisKKwlzYW1zdW5nX3Vmc19w aHlfY3RybF9pc29sKF9waHksIHRydWUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNh bXN1bmdfdWZzX3BoeV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpnZW5lcmljX3BoeSwKKwkJCQkJZW51 bSBwaHlfbW9kZSBtb2RlLCBpbnQgc3VibW9kZSkKK3sKKwlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5 ICpfcGh5ID0gZ2V0X3NhbXN1bmdfdWZzX3BoeShnZW5lcmljX3BoeSk7CisKKwlfcGh5LT5tb2Rl ID0gUEhZX01PREVfSU5WQUxJRDsKKworCWlmIChtb2RlID4gMCkKKwkJX3BoeS0+bW9kZSA9IG1v ZGU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzYW1zdW5nX3Vmc19waHlfZXhpdChz dHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqX3BoeSA9IGdldF9z YW1zdW5nX3Vmc19waHkocGh5KTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShfcGh5LT5yZWZf Y2xrKTsKKworCWlmIChfcGh5LT5kcnZkYXRhLT5oYXNfc3ltYm9sX2NsaykgeworCQljbGtfZGlz YWJsZV91bnByZXBhcmUoX3BoeS0+dHgwX3N5bWJvbF9jbGspOworCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUoX3BoeS0+cngwX3N5bWJvbF9jbGspOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoX3Bo eS0+cngxX3N5bWJvbF9jbGspOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0 IHBoeV9vcHMgc2Ftc3VuZ191ZnNfcGh5X29wcyA9IHsKKwkuaW5pdAkJPSBzYW1zdW5nX3Vmc19w aHlfaW5pdCwKKwkuZXhpdAkJPSBzYW1zdW5nX3Vmc19waHlfZXhpdCwKKwkucG93ZXJfb24JPSBz YW1zdW5nX3Vmc19waHlfcG93ZXJfb24sCisJLnBvd2VyX29mZgk9IHNhbXN1bmdfdWZzX3BoeV9w b3dlcl9vZmYsCisJLmNhbGlicmF0ZQk9IHNhbXN1bmdfdWZzX3BoeV9jYWxpYnJhdGUsCisJLnNl dF9tb2RlCT0gc2Ftc3VuZ191ZnNfcGh5X3NldF9tb2RlLAorCS5vd25lciAgICAgICAgICA9IFRI SVNfTU9EVUxFLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2Ftc3Vu Z191ZnNfcGh5X21hdGNoW107CisKK3N0YXRpYyBpbnQgc2Ftc3VuZ191ZnNfcGh5X3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBk ZXYtPmRldjsKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKKwlzdHJ1Y3Qgc2Ft c3VuZ191ZnNfcGh5ICpwaHk7CisJc3RydWN0IHBoeSAqZ2VuX3BoeTsKKwlzdHJ1Y3QgcGh5X3By b3ZpZGVyICpwaHlfcHJvdmlkZXI7CisJY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9kcnZk YXRhICpkcnZkYXRhOworCWludCBlcnIgPSAwOworCisJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKHNh bXN1bmdfdWZzX3BoeV9tYXRjaCwgZGV2LT5vZl9ub2RlKTsKKwlpZiAoIW1hdGNoKSB7CisJCWVy ciA9IC1FSU5WQUw7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBtYXRjaF9ub2RlXG4i KTsKKwkJZ290byBvdXQ7CisJfQorCisJcGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpw aHkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBoeSkgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3Rv IG91dDsKKwl9CisKKwlwaHktPnJlZ19wbWEgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3Vy Y2VfYnluYW1lKHBkZXYsICJwaHktcG1hIik7CisJaWYgKElTX0VSUihwaHktPnJlZ19wbWEpKSB7 CisJCWVyciA9IFBUUl9FUlIocGh5LT5yZWdfcG1hKTsKKwkJZ290byBvdXQ7CisJfQorCisJcGh5 LT5yZWdfcG11ID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZSgKKwkJCQlkZXYtPm9m X25vZGUsICJzYW1zdW5nLHBtdS1zeXNjb24iKTsKKwlpZiAoSVNfRVJSKHBoeS0+cmVnX3BtdSkp IHsKKwkJZXJyID0gUFRSX0VSUihwaHktPnJlZ19wbXUpOworCQlkZXZfZXJyKGRldiwgImZhaWxl ZCBzeXNjb24gcmVtYXAgZm9yIHBtdVxuIik7CisJCWdvdG8gb3V0OworCX0KKworCWdlbl9waHkg PSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAmc2Ftc3VuZ191ZnNfcGh5X29wcyk7CisJaWYg KElTX0VSUihnZW5fcGh5KSkgeworCQllcnIgPSBQVFJfRVJSKGdlbl9waHkpOworCQlkZXZfZXJy KGRldiwgImZhaWxlZCB0byBjcmVhdGUgUEhZIGZvciB1ZnMtcGh5XG4iKTsKKwkJZ290byBvdXQ7 CisJfQorCisJZHJ2ZGF0YSA9IG1hdGNoLT5kYXRhOworCXBoeS0+ZGV2ID0gZGV2OworCXBoeS0+ ZHJ2ZGF0YSA9IGRydmRhdGE7CisJcGh5LT5jZmcgPSAoc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9j ZmcgKiopZHJ2ZGF0YS0+Y2ZnOworCXBoeS0+aXNvbCA9ICZkcnZkYXRhLT5pc29sOworCXBoeS0+ bGFuZV9jbnQgPSBQSFlfREVGX0xBTkVfQ05UOworCisJcGh5X3NldF9kcnZkYXRhKGdlbl9waHks IHBoeSk7CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3Rlcihk ZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOworCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgewor CQllcnIgPSBQVFJfRVJSKHBoeV9wcm92aWRlcik7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IHJlZ2lzdGVyIHBoeS1wcm92aWRlclxuIik7CisJCWdvdG8gb3V0OworCX0KK291dDoKKwlyZXR1 cm4gZXJyOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzYW1zdW5nX3Vm c19waHlfbWF0Y2hbXSA9IHsKKwl7CisJCS5jb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNy11 ZnMtcGh5IiwKKwkJLmRhdGEgPSAmZXh5bm9zN191ZnNfcGh5LAorCX0sCisJe30sCit9OworTU9E VUxFX0RFVklDRV9UQUJMRShvZiwgc2Ftc3VuZ191ZnNfcGh5X21hdGNoKTsKKworc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2Ftc3VuZ191ZnNfcGh5X2RyaXZlciA9IHsKKwkucHJvYmUg ID0gc2Ftc3VuZ191ZnNfcGh5X3Byb2JlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInNhbXN1 bmctdWZzLXBoeSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IHNhbXN1bmdfdWZzX3BoeV9tYXRjaCwK Kwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc2Ftc3VuZ191ZnNfcGh5X2RyaXZlcik7 CitNT0RVTEVfREVTQ1JJUFRJT04oIlNhbXN1bmcgU29DIFVGUyBQSFkgRHJpdmVyIik7CitNT0RV TEVfQVVUSE9SKCJTZXVuZ3dvbiBKZW9uIDxlc3N1dWpAZ21haWwuY29tPiIpOworTU9EVUxFX0FV VEhPUigiQWxpbSBBa2h0YXIgPGFsaW0uYWtodGFyQHNhbXN1bmcuY29tPiIpOworTU9EVUxFX0xJ Q0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ft c3VuZy11ZnMuaCBiL2RyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LXNhbXN1bmctdWZzLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xY2M4MTRkOTcyZTgKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVmcy5oCkBAIC0wLDAg KzEsMTQzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisv KgorICogVUZTIFBIWSBkcml2ZXIgZm9yIFNhbXN1bmcgRVhZTk9TIFNvQworICoKKyAqIENvcHly aWdodCAoQykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorICogQXV0aG9yOiBT ZXVuZ3dvbiBKZW9uIDxlc3N1dWpAZ21haWwuY29tPgorICogQXV0aG9yOiBBbGltIEFraHRhciA8 YWxpbS5ha2h0YXJAc2Ftc3VuZy5jb20+CisgKgorICovCisjaWZuZGVmIF9QSFlfU0FNU1VOR19V RlNfCisjZGVmaW5lIF9QSFlfU0FNU1VOR19VRlNfCisKKyNkZWZpbmUgUEhZX0NPTU5fQkxLCTEK KyNkZWZpbmUgUEhZX1RSU1ZfQkxLCTIKKyNkZWZpbmUgRU5EX1VGU19QSFlfQ0ZHIHsgMCB9Cisj ZGVmaW5lIFBIWV9UUlNWX0NIX09GRlNFVAkweDMwCisjZGVmaW5lIFBIWV9BUEJfQUREUihvZmYp CSgob2ZmKSA8PCAyKQorCisjZGVmaW5lIFBIWV9DT01OX1JFR19DRkcobywgdiwgZCkgewlcCisJ Lm9mZl8wID0gUEhZX0FQQl9BRERSKChvKSksCVwKKwkub2ZmXzEgPSAwLAkJXAorCS52YWwgPSAo diksCQlcCisJLmRlc2MgPSAoZCksCQlcCisJLmlkID0gUEhZX0NPTU5fQkxLLAlcCit9CisKKyNk ZWZpbmUgUEhZX1RSU1ZfUkVHX0NGRyhvLCB2LCBkKSB7CVwKKwkub2ZmXzAgPSBQSFlfQVBCX0FE RFIoKG8pKSwJXAorCS5vZmZfMSA9IFBIWV9BUEJfQUREUigobykgKyBQSFlfVFJTVl9DSF9PRkZT RVQpLAlcCisJLnZhbCA9ICh2KSwJCVwKKwkuZGVzYyA9IChkKSwJCVwKKwkuaWQgPSBQSFlfVFJT Vl9CTEssCVwKK30KKworLyogVUZTIFBIWSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgUEhZX1BMTF9M T0NLX1NUQVRVUwkweDFlCisjZGVmaW5lIFBIWV9DRFJfTE9DS19TVEFUVVMJMHg1ZQorCisjZGVm aW5lIFBIWV9QTExfTE9DS19CSVQJQklUKDUpCisjZGVmaW5lIFBIWV9DRFJfTE9DS19CSVQJQklU KDQpCisKKy8qIGRlc2NyaXB0aW9uIGZvciBQSFkgY2FsaWJyYXRpb24gKi8KK2VudW0geworCS8q IGFwcGxpY2FibGUgdG8gYW55ICovCisJUFdSX0RFU0NfQU5ZCT0gMCwKKwkvKiBtb2RlICovCisJ UFdSX0RFU0NfUFdNCT0gMSwKKwlQV1JfREVTQ19IUwk9IDIsCisJLyogc2VyaWVzICovCisJUFdS X0RFU0NfU0VSX0EJPSAxLAorCVBXUl9ERVNDX1NFUl9CCT0gMiwKKwkvKiBnZWFyICovCisJUFdS X0RFU0NfRzEJPSAxLAorCVBXUl9ERVNDX0cyCT0gMiwKKwlQV1JfREVTQ19HMwk9IDMsCisJLyog ZmllbGQgbWFzayAqLworCU1EX01BU0sJCT0gMHgzLAorCVNSX01BU0sJCT0gMHgzLAorCUdSX01B U0sJCT0gMHg3LAorfTsKKworI2RlZmluZSBQV1JfTU9ERV9IU19HMV9BTlkJUFdSX01PREVfSFMo UFdSX0RFU0NfRzEsIFBXUl9ERVNDX0FOWSkKKyNkZWZpbmUgUFdSX01PREVfSFNfRzFfU0VSX0EJ UFdSX01PREVfSFMoUFdSX0RFU0NfRzEsIFBXUl9ERVNDX1NFUl9BKQorI2RlZmluZSBQV1JfTU9E RV9IU19HMV9TRVJfQglQV1JfTU9ERV9IUyhQV1JfREVTQ19HMSwgUFdSX0RFU0NfU0VSX0IpCisj ZGVmaW5lIFBXUl9NT0RFX0hTX0cyX0FOWQlQV1JfTU9ERV9IUyhQV1JfREVTQ19HMiwgUFdSX0RF U0NfQU5ZKQorI2RlZmluZSBQV1JfTU9ERV9IU19HMl9TRVJfQQlQV1JfTU9ERV9IUyhQV1JfREVT Q19HMiwgUFdSX0RFU0NfU0VSX0EpCisjZGVmaW5lIFBXUl9NT0RFX0hTX0cyX1NFUl9CCVBXUl9N T0RFX0hTKFBXUl9ERVNDX0cyLCBQV1JfREVTQ19TRVJfQikKKyNkZWZpbmUgUFdSX01PREVfSFNf RzNfQU5ZCVBXUl9NT0RFX0hTKFBXUl9ERVNDX0czLCBQV1JfREVTQ19BTlkpCisjZGVmaW5lIFBX Ul9NT0RFX0hTX0czX1NFUl9BCVBXUl9NT0RFX0hTKFBXUl9ERVNDX0czLCBQV1JfREVTQ19TRVJf QSkKKyNkZWZpbmUgUFdSX01PREVfSFNfRzNfU0VSX0IJUFdSX01PREVfSFMoUFdSX0RFU0NfRzMs IFBXUl9ERVNDX1NFUl9CKQorI2RlZmluZSBQV1JfTU9ERShnLCBzLCBtKQkoKCgoZykgJiBHUl9N QVNLKSA8PCA0KSB8XAorCQkJCSAoKChzKSAmIFNSX01BU0spIDw8IDIpIHwgKChtKSAmIE1EX01B U0spKQorI2RlZmluZSBQV1JfTU9ERV9QV01fQU5ZCVBXUl9NT0RFKFBXUl9ERVNDX0FOWSxcCisJ CQkJCSBQV1JfREVTQ19BTlksIFBXUl9ERVNDX1BXTSkKKyNkZWZpbmUgUFdSX01PREVfSFMoZywg cykJKCgoKGcpICYgR1JfTUFTSykgPDwgNCkgfFwKKwkJCQkgKCgocykgJiBTUl9NQVNLKSA8PCAy KSB8IFBXUl9ERVNDX0hTKQorI2RlZmluZSBQV1JfTU9ERV9IU19BTlkJCVBXUl9NT0RFKFBXUl9E RVNDX0FOWSxcCisJCQkJCSBQV1JfREVTQ19BTlksIFBXUl9ERVNDX0hTKQorI2RlZmluZSBQV1Jf TU9ERV9BTlkJCVBXUl9NT0RFKFBXUl9ERVNDX0FOWSxcCisJCQkJCSBQV1JfREVTQ19BTlksIFBX Ul9ERVNDX0FOWSkKKy8qIFBIWSBjYWxpYnJhdGlvbiBwb2ludC9zdGF0ZSAqLworZW51bSB7CisJ Q0ZHX1BSRV9JTklULAorCUNGR19QT1NUX0lOSVQsCisJQ0ZHX1BSRV9QV1JfSFMsCisJQ0ZHX1BP U1RfUFdSX0hTLAorCUNGR19UQUdfTUFYLAorfTsKKworc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9j ZmcgeworCXUzMiBvZmZfMDsKKwl1MzIgb2ZmXzE7CisJdTMyIHZhbDsKKwl1OCBkZXNjOworCXU4 IGlkOworfTsKKworc3RydWN0IHNhbXN1bmdfdWZzX3BoeV9kcnZkYXRhIHsKKwljb25zdCBzdHJ1 Y3Qgc2Ftc3VuZ191ZnNfcGh5X2NmZyAqKmNmZzsKKwlzdHJ1Y3QgcG11X2lzb2wgeworCQl1MzIg b2Zmc2V0OworCQl1MzIgbWFzazsKKwkJdTMyIGVuOworCX0gaXNvbDsKKwlib29sIGhhc19zeW1i b2xfY2xrOworfTsKKworc3RydWN0IHNhbXN1bmdfdWZzX3BoeSB7CisJc3RydWN0IGRldmljZSAq ZGV2OworCXZvaWQgX19pb21lbSAqcmVnX3BtYTsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdfcG11Owor CXN0cnVjdCBjbGsgKnJlZl9jbGs7CisJc3RydWN0IGNsayAqcmVmX2Nsa19wYXJlbnQ7CisJc3Ry dWN0IGNsayAqdHgwX3N5bWJvbF9jbGs7CisJc3RydWN0IGNsayAqcngwX3N5bWJvbF9jbGs7CisJ c3RydWN0IGNsayAqcngxX3N5bWJvbF9jbGs7CisJY29uc3Qgc3RydWN0IHNhbXN1bmdfdWZzX3Bo eV9kcnZkYXRhICpkcnZkYXRhOworCXN0cnVjdCBzYW1zdW5nX3Vmc19waHlfY2ZnICoqY2ZnOwor CWNvbnN0IHN0cnVjdCBwbXVfaXNvbCAqaXNvbDsKKwl1OCBsYW5lX2NudDsKKwlpbnQgdWZzX3Bo eV9zdGF0ZTsKKwllbnVtIHBoeV9tb2RlIG1vZGU7CisJYm9vbCBpc19wcmVfaW5pdDsKKwlib29s IGlzX3Bvc3RfaW5pdDsKKwlib29sIGlzX3ByZV9wbWM7CisJYm9vbCBpc19wb3N0X3BtYzsKK307 CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNhbXN1bmdfdWZzX3BoeSAqZ2V0X3NhbXN1bmdfdWZz X3BoeShzdHJ1Y3QgcGh5ICpwaHkpCit7CisJcmV0dXJuIChzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5 ICopcGh5X2dldF9kcnZkYXRhKHBoeSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzYW1zdW5n X3Vmc19waHlfY3RybF9pc29sKAorCQlzdHJ1Y3Qgc2Ftc3VuZ191ZnNfcGh5ICpwaHksIHUzMiBp c29sKQoreworCXJlZ21hcF91cGRhdGVfYml0cyhwaHktPnJlZ19wbXUsIHBoeS0+aXNvbC0+b2Zm c2V0LAorCQkJcGh5LT5pc29sLT5tYXNrLCBpc29sID8gMCA6IHBoeS0+aXNvbC0+ZW4pOworfQor CisjaW5jbHVkZSAicGh5LWV4eW5vczctdWZzLmgiCisKKyNlbmRpZiAvKiBfUEhZX1NBTVNVTkdf VUZTXyAqLwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=