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=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable 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 31718C433DB for ; Thu, 31 Dec 2020 14:36:31 +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 C435820786 for ; Thu, 31 Dec 2020 14:36:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C435820786 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.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:MIME-Version:References: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=Zpno9cskm6OGmdZo+kn8TP32nbe+b0GRd9TxerSPr6g=; b=hCliViXos0g9/VbhdBheTewT8 PKbgv7C/e2lh6qlUW3ygEWKTxdZz/MDKHZcR/owtMFp6/dp5/LmXTLU11KiXq1riDj+65Xn7xnNYQ ZViFAKH9oUN1GHpNOKItEZmHosgEMbbfGcyssdbuUWkSDqJv6Lo0hatre987fgWvN6rQdEN5aIBUn 0HkR7uo2cdWjc7U+5Kh9PPCYpLbWnJIg6gCGppjhdjZkzRAjlgxjuilKoduVI4/pudWNVvtR+NSeu Anhms8YNQTX6/7AW+Ch1mxk9lCGlU4XWswoM7xhKmd4KeYlOwZKKs86Ume/RJIF0lH6HOyboG6HvO egKrY/kGA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuz1u-0004TA-QC; Thu, 31 Dec 2020 14:34:19 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuyyk-00037H-Ct for linux-arm-kernel@merlin.infradead.org; Thu, 31 Dec 2020 14:31:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=CkBe73cPietulFE94F9dxdyeot9kc/FK3rZjA7lL20I=; b=kPrISLd27oSwfriB3uuUt20yt7 VhIR8EAIW2ZBwn3DBOFtvkda3K3rezV2OlzhlFKmCxu+EvFRXO3tax68dONlr4WbYonM/7byDcKur aGsdll2O8Oi8EeHOXOPVBM7M1/IppDdCAO5Bz9hvuIuODRDKTaJNV3xgERUgcvv0Usyd/YLwljRbU CNhASCJT3YPtO0kXZ0LrqaYcEYeiJe3u3h+dEhMm7IHnVcPuap8bOzKg/P/sWAcs0OGxz8KBPGL0I 7oUCLIEluUtro7saMgfNRJo7y66JrVEhf620yYH0STsIFlH8JbVFaEb6LydYHQ3NPwHjURxdHFwBu q/SsudOg==; Received: from relay12.mail.gandi.net ([217.70.178.232]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1kuyyc-000p6p-RW for linux-arm-kernel@lists.infradead.org; Thu, 31 Dec 2020 14:30:58 +0000 Received: from localhost.localdomain (196.109.29.93.rev.sfr.net [93.29.109.196]) (Authenticated sender: paul.kocialkowski@bootlin.com) by relay12.mail.gandi.net (Postfix) with ESMTPSA id AB410200013; Thu, 31 Dec 2020 14:30:29 +0000 (UTC) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devel@driverdev.osuosl.org, linux-sunxi@googlegroups.com Subject: [PATCH v4 13/15] media: sunxi: Add support for the A83T MIPI CSI-2 controller Date: Thu, 31 Dec 2020 15:29:46 +0100 Message-Id: <20201231142948.3241780-14-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201231142948.3241780-1-paul.kocialkowski@bootlin.com> References: <20201231142948.3241780-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201231_143058_025270_74C863FB X-CRM114-Status: GOOD ( 31.39 ) 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: Jernej Skrabec , Dafna Hirschfeld , Philipp Zabel , Jonathan Corbet , Thomas Petazzoni , Greg Kroah-Hartman , Helen Koike , Vinod Koul , Maxime Ripard , Kishon Vijay Abraham I , Paul Kocialkowski , Chen-Yu Tsai , Rob Herring , Hans Verkuil , Yong Deng , Sakari Ailus , Mauro Carvalho Chehab , kevin.lhopital@hotmail.com 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 VGhlIEE4M1Qgc3VwcG9ydHMgTUlQSSBDU0ktMiB3aXRoIGEgY29tcG9zaXRlIGNvbnRyb2xsZXIs IGNvdmVyaW5nCmJvdGggdGhlIHByb3RvY29sIGxvZ2ljIGFuZCB0aGUgRC1QSFkgaW1wbGVtZW50 YXRpb24uIFRoaXMgY29udHJvbGxlcgpzZWVtcyB0byBiZSBmb3VuZCBvbiB0aGUgQTgzVCBvbmx5 IGFuZCBwcm9iYWJseSB3YXMgYWJhbmRvbmVkIHNpbmNlLgoKVGhpcyBpbXBsZW1lbnRhdGlvbiBz cGxpdHMgdGhlIHByb3RvY29sIGFuZCBELVBIWSByZWdpc3RlcnMgYW5kCnVzZXMgdGhlIFBIWSBm cmFtZXdvcmsgaW50ZXJuYWxseS4gVGhlIEQtUEhZIGlzIG5vdCByZWdpc3RlcmVkIGFzIGEKc3Rh bmRhbG9uZSBQSFkgZHJpdmVyIHNpbmNlIGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYW55IG90aGVy CmNvbnRyb2xsZXIuCgpUaGVyZSBhcmUgYSBmZXcgbm90YWJsZSBwb2ludHMgYWJvdXQgdGhlIGNv bnRyb2xsZXI6Ci0gVGhlIGluaXRpYWxpc2F0aW9uIHNlcXVlbmNlIGludm9sZXMgd3JpdGluZyBz cGVjaWZpYyBtYWdpYyBpbml0CiAgdmFsdWVzIHRoYXQgZG8gbm90IHNlZW0gdG8gbWFrZSBhbnkg cGFydGljdWxhciBzZW5zZSBnaXZlbiB0aGUKICBjb25jZXJuZWQgcmVnaXN0ZXIgZmllbGRzOwot IEludGVycnVwdHMgYXBwZWFyIHRvIGJlIGhpdHRpbmcgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZXJy dXB0IG1hc2sKICByZWdpc3RlcnMsIHdoaWNoIGNhbiBjYXVzZSBhIHNlcmlvdXMgZmxvb2Qgd2hl biB0cmFuc21pc3Npb24gZXJyb3JzCiAgb2NjdXIuCgpPbmx5IDgtYml0IGFuZCAxMC1iaXQgQmF5 ZXIgZm9ybWF0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KV2hpbGUgdXAgdG8gNCBpbnRlcm5h bCBjaGFubmVscyB0byB0aGUgQ1NJIGNvbnRyb2xsZXIgZXhpc3QsIG9ubHkgb25lCmlzIGN1cnJl bnRseSBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KClRoaXMgd29yayBpcyBiYXNl ZCBvbiB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgZHJpdmVyIHN1Ym1pdHRlZCBieQpLw6l2aW4g TCdow7RwaXRhbCwgd2hpY2ggd2FzIGFkYXB0ZWQgdG8gbWFpbmxpbmUgZnJvbSB0aGUgQWxsd2lu bmVyIEJTUC4KVGhpcyB2ZXJzaW9uIGludGVncmF0ZXMgTUlQSSBDU0ktMiBzdXBwb3J0IGFzIGEg c3RhbmRhbG9uZSBWNEwyIHN1YmRldgppbnN0ZWFkIG9mIG1lcmdpbmcgaXQgaW4gdGhlIHN1bjZp LWNzaSBkcml2ZXIuCgpJdCB3YXMgdGVzdGVkIG9uIGEgQmFuYW5hIFBpIE0zIGJvYXJkIHdpdGgg YW4gT1Y4ODY1IHNlbnNvciBpbiBhIDQtbGFuZQpjb25maWd1cmF0aW9uLgoKU2lnbmVkLW9mZi1i eTogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgotLS0K IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvS2NvbmZpZyAgICAgICAgICB8ICAgMSArCiBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogLi4u L3N1bnhpL3N1bjhpLWE4M3QtbWlwaS1jc2kyL0tjb25maWcgICAgICAgIHwgIDExICsKIC4uLi9z dW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9NYWtlZmlsZSAgICAgICB8ICAgNCArCiAuLi4vc3Vu OGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmMgICAgfCAgOTIgKysrCiAuLi4vc3Vu OGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmggICAgfCAgMzkgKysKIC4uLi9zdW44 aV9hODN0X21pcGlfY3NpMi5jICAgICAgICAgICAgICAgICAgICB8IDY1NyArKysrKysrKysrKysr KysrKysKIC4uLi9zdW44aV9hODN0X21pcGlfY3NpMi5oICAgICAgICAgICAgICAgICAgICB8IDE5 NyArKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTAwMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3Np Mi9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54 aS9zdW44aS1hODN0LW1pcGktY3NpMi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9k cGh5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9h ODN0X21pcGlfY3NpMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnCmluZGV4IDk2ODRlMDc0NTRhZC4uZGI0YzA3YmU3 ZTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL0tjb25maWcKKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnCkBAIC0zLDMgKzMsNCBAQAog c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjRpLWNzaS9LY29uZmlnIgog c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9LY29uZmlnIgog c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLW1pcGktY3NpMi9LY29u ZmlnIgorc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWE4M3QtbWlw aS1jc2kyL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhp L01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZQppbmRleCA4 ODdhN2NhZThmY2EuLjlhYTAxY2IwMTg4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9zdW54aS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01h a2VmaWxlCkBAIC0zLDUgKzMsNiBAQAogb2JqLXkJCSs9IHN1bjRpLWNzaS8KIG9iai15CQkrPSBz dW42aS1jc2kvCiBvYmoteQkJKz0gc3VuNmktbWlwaS1jc2kyLworb2JqLXkJCSs9IHN1bjhpLWE4 M3QtbWlwaS1jc2kyLwogb2JqLXkJCSs9IHN1bjhpLWRpLwogb2JqLXkJCSs9IHN1bjhpLXJvdGF0 ZS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktYTgzdC1t aXBpLWNzaTIvS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktYTgz dC1taXBpLWNzaTIvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjYwZTdhOWM0MTA2NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvS2NvbmZpZwpAQCAtMCwwICsxLDExIEBACisj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKK2NvbmZpZyBWSURFT19TVU44 SV9BODNUX01JUElfQ1NJMgorCXRyaXN0YXRlICJBbGx3aW5uZXIgQTgzVCBNSVBJIENTSS0yIENv bnRyb2xsZXIgYW5kIEQtUEhZIERyaXZlciIKKwlkZXBlbmRzIG9uIEFSQ0hfU1VOWEkgfHwgQ09N UElMRV9URVNUCisJZGVwZW5kcyBvbiBQTSAmJiBDT01NT05fQ0xLICYmIFZJREVPX1Y0TDIKKwlz ZWxlY3QgUkVHTUFQX01NSU8KKwlzZWxlY3QgTUVESUFfQ09OVFJPTExFUgorCXNlbGVjdCBWSURF T19WNEwyX1NVQkRFVl9BUEkKKwlzZWxlY3QgVjRMMl9GV05PREUKKwloZWxwCisJICAgU3VwcG9y dCBmb3IgdGhlIEFsbHdpbm5lciBBODNUIE1JUEkgQ1NJLTIgQ29udHJvbGxlciBhbmQgRC1QSFku CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWE4M3QtbWlw aS1jc2kyL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0 LW1pcGktY3NpMi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjE0MjdkMTVhODc5YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvTWFrZWZpbGUKQEAgLTAsMCArMSw0IEBACisj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKK3N1bjhpLWE4M3QtbWlwaS1j c2kyLXkgKz0gc3VuOGlfYTgzdF9taXBpX2NzaTIubyBzdW44aV9hODN0X2RwaHkubworCitvYmot JChDT05GSUdfVklERU9fU1VOOElfQTgzVF9NSVBJX0NTSTIpICs9IHN1bjhpLWE4M3QtbWlwaS1j c2kyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktYTgz dC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1 bnhpL3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3RfZHBoeS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzM4MDA2NWViN2M5Ci0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44 aV9hODN0X2RwaHkuYwpAQCAtMCwwICsxLDkyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCsKKy8qCisgKiBDb3B5cmlnaHQgMjAyMCBCb290bGluCisgKiBBdXRob3I6IFBh dWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4KKyAqLworCisj aW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorCisj aW5jbHVkZSAic3VuOGlfYTgzdF9kcGh5LmgiCisjaW5jbHVkZSAic3VuOGlfYTgzdF9taXBpX2Nz aTIuaCIKKworc3RhdGljIGludCBzdW44aV9hODN0X2RwaHlfc2V0X21vZGUoc3RydWN0IHBoeSAq ZHBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLAorCQkJCSAgICBpbnQgc3VibW9kZSkKK3sKKwlpZiAo bW9kZSAhPSBQSFlfTU9ERV9NSVBJX0RQSFkgfHwKKwkgICAgc3VibW9kZSAhPSBQSFlfTUlQSV9E UEhZX1NVQk1PREVfUlgpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIDA7Cit9OworCitz dGF0aWMgaW50IHN1bjhpX2E4M3RfZHBoeV9jb25maWd1cmUoc3RydWN0IHBoeSAqZHBoeSwKKwkJ CQkgICAgIHVuaW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlzdHJ1Y3Qgc3VuOGlf YTgzdF9taXBpX2NzaTJfZGV2ICpjZGV2ID0gcGh5X2dldF9kcnZkYXRhKGRwaHkpOworCWludCBy ZXQ7CisKKwlyZXQgPSBwaHlfbWlwaV9kcGh5X2NvbmZpZ192YWxpZGF0ZSgmb3B0cy0+bWlwaV9k cGh5KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJbWVtY3B5KCZjZGV2LT5kcGh5X2Nv bmZpZywgb3B0cywgc2l6ZW9mKGNkZXYtPmRwaHlfY29uZmlnKSk7CisKKwlyZXR1cm4gMDsKK307 CisKK3N0YXRpYyBpbnQgc3VuOGlfYTgzdF9kcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKmRwaHkp Cit7CisJc3RydWN0IHN1bjhpX2E4M3RfbWlwaV9jc2kyX2RldiAqY2RldiA9IHBoeV9nZXRfZHJ2 ZGF0YShkcGh5KTsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBjZGV2LT5yZWdtYXA7CisKKwly ZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNUX0RQSFlfQ1RSTF9SRUcsCisJCSAgICAgU1VO OElfQTgzVF9EUEhZX0NUUkxfUkVTRVRfTiB8CisJCSAgICAgU1VOOElfQTgzVF9EUEhZX0NUUkxf U0hVVERPV05fTik7CisKKwlyZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNUX0RQSFlfQU5B MF9SRUcsCisJCSAgICAgU1VOOElfQTgzVF9EUEhZX0FOQTBfUkVYVF9FTiB8CisJCSAgICAgU1VO OElfQTgzVF9EUEhZX0FOQTBfUklOVCgyKSB8CisJCSAgICAgU1VOOElfQTgzVF9EUEhZX0FOQTBf U05LKDIpKTsKKworCXJldHVybiAwOworfTsKKworc3RhdGljIGludCBzdW44aV9hODN0X2RwaHlf cG93ZXJfb2ZmKHN0cnVjdCBwaHkgKmRwaHkpCit7CisJc3RydWN0IHN1bjhpX2E4M3RfbWlwaV9j c2kyX2RldiAqY2RldiA9IHBoeV9nZXRfZHJ2ZGF0YShkcGh5KTsKKwlzdHJ1Y3QgcmVnbWFwICpy ZWdtYXAgPSBjZGV2LT5yZWdtYXA7CisKKwlyZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNU X0RQSFlfQ1RSTF9SRUcsIDApOworCisJcmV0dXJuIDA7Cit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHBoeV9vcHMgc3VuOGlfYTgzdF9kcGh5X29wcyA9IHsKKwkuc2V0X21vZGUJPSBzdW44aV9h ODN0X2RwaHlfc2V0X21vZGUsCisJLmNvbmZpZ3VyZQk9IHN1bjhpX2E4M3RfZHBoeV9jb25maWd1 cmUsCisJLnBvd2VyX29uCT0gc3VuOGlfYTgzdF9kcGh5X3Bvd2VyX29uLAorCS5wb3dlcl9vZmYJ PSBzdW44aV9hODN0X2RwaHlfcG93ZXJfb2ZmLAorfTsKKworaW50IHN1bjhpX2E4M3RfZHBoeV9y ZWdpc3RlcihzdHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfZGV2ICpjZGV2KQoreworCXN0cnVj dCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsKKworCWNkZXYtPmRwaHkgPSBkZXZtX3BoeV9j cmVhdGUoY2Rldi0+ZGV2LCBOVUxMLCAmc3VuOGlfYTgzdF9kcGh5X29wcyk7CisJaWYgKElTX0VS UihjZGV2LT5kcGh5KSkgeworCQlkZXZfZXJyKGNkZXYtPmRldiwgImZhaWxlZCB0byBjcmVhdGUg RC1QSFlcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjZGV2LT5kcGh5KTsKKwl9CisKKwlwaHlfc2V0 X2RydmRhdGEoY2Rldi0+ZHBoeSwgY2Rldik7CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3Bo eV9wcm92aWRlcl9yZWdpc3RlcihjZGV2LT5kZXYsCisJCQkJCQkgICAgIG9mX3BoeV9zaW1wbGVf eGxhdGUpOworCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQlkZXZfZXJyKGNkZXYtPmRl diwgImZhaWxlZCB0byByZWdpc3RlciBELVBIWSBwcm92aWRlclxuIik7CisJCXJldHVybiBQVFJf RVJSKHBoeV9wcm92aWRlcik7CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWE4M3QtbWlwaS1jc2kyL3N1bjhpX2E4M3Rf ZHBoeS5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3Np Mi9zdW44aV9hODN0X2RwaHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmE0ZWQzNTVlNWY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vc3VueGkvc3VuOGktYTgzdC1taXBpLWNzaTIvc3VuOGlfYTgzdF9kcGh5LmgKQEAgLTAsMCAr MSwzOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCisvKgorICog Q29weXJpZ2h0IDIwMjAgS8OpdmluIEwnaMO0cGl0YWwgPGtldmluLmxob3BpdGFsQGJvb3RsaW4u Y29tPgorICogQ29weXJpZ2h0IDIwMjAgQm9vdGxpbgorICogQXV0aG9yOiBQYXVsIEtvY2lhbGtv d3NraSA8cGF1bC5rb2NpYWxrb3dza2lAYm9vdGxpbi5jb20+CisgKi8KKworI2lmbmRlZiBfX1NV TjhJX0E4M1RfRFBIWV9IX18KKyNkZWZpbmUgX19TVU44SV9BODNUX0RQSFlfSF9fCisKKyNpbmNs dWRlICJzdW44aV9hODN0X21pcGlfY3NpMi5oIgorCisjZGVmaW5lIFNVTjhJX0E4M1RfRFBIWV9D VFJMX1JFRwkJMHgxMAorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfQ1RSTF9JTklUX1ZBTFVFCQkw eGI4ZGY2OThlCisjZGVmaW5lIFNVTjhJX0E4M1RfRFBIWV9DVFJMX1JFU0VUX04JCUJJVCgzMSkK KyNkZWZpbmUgU1VOOElfQTgzVF9EUEhZX0NUUkxfU0hVVERPV05fTgkJQklUKDE1KQorI2RlZmlu ZSBTVU44SV9BODNUX0RQSFlfQ1RSTF9ERUJVRwkJQklUKDgpCisjZGVmaW5lIFNVTjhJX0E4M1Rf RFBIWV9TVEFUVVNfUkVHCQkweDE0CisjZGVmaW5lIFNVTjhJX0E4M1RfRFBIWV9TVEFUVVNfQ0xL X1NUT1AJCUJJVCgxMCkKKyNkZWZpbmUgU1VOOElfQTgzVF9EUEhZX1NUQVRVU19DTEtfVUxQUwkJ QklUKDkpCisjZGVmaW5lIFNVTjhJX0E4M1RfRFBIWV9TVEFUVVNfSFNDTEsJCUJJVCg4KQorI2Rl ZmluZSBTVU44SV9BODNUX0RQSFlfU1RBVFVTX0QzX1NUT1AJCUJJVCg3KQorI2RlZmluZSBTVU44 SV9BODNUX0RQSFlfU1RBVFVTX0QyX1NUT1AJCUJJVCg2KQorI2RlZmluZSBTVU44SV9BODNUX0RQ SFlfU1RBVFVTX0QxX1NUT1AJCUJJVCg1KQorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfU1RBVFVT X0QwX1NUT1AJCUJJVCg0KQorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfU1RBVFVTX0QzX1VMUFMJ CUJJVCgzKQorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfU1RBVFVTX0QyX1VMUFMJCUJJVCgyKQor I2RlZmluZSBTVU44SV9BODNUX0RQSFlfU1RBVFVTX0QxX1VMUFMJCUJJVCgxKQorI2RlZmluZSBT VU44SV9BODNUX0RQSFlfU1RBVFVTX0QwX1VMUFMJCUJJVCgwKQorCisjZGVmaW5lIFNVTjhJX0E4 M1RfRFBIWV9BTkEwX1JFRwkJMHgzMAorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfQU5BMF9SRVhU X0VOCQlCSVQoMzEpCisjZGVmaW5lIFNVTjhJX0E4M1RfRFBIWV9BTkEwX1JFWFQJCUJJVCgzMCkK KyNkZWZpbmUgU1VOOElfQTgzVF9EUEhZX0FOQTBfUklOVCh2KQkJKCgodikgPDwgMjgpICYgR0VO TUFTSygyOSwgMjgpKQorI2RlZmluZSBTVU44SV9BODNUX0RQSFlfQU5BMF9TTksodikJCSgoKHYp IDw8IDIwKSAmIEdFTk1BU0soMjIsIDIwKSkKKworaW50IHN1bjhpX2E4M3RfZHBoeV9yZWdpc3Rl cihzdHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfZGV2ICpjZGV2KTsKKworI2VuZGlmIC8qIF9f U1VOOElfQTgzVF9EUEhZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5jIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0 X21pcGlfY3NpMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzI0 OGZlYmU1YzBkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54 aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5jCkBAIC0wLDAgKzEs NjU3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKy8qCisgKiBDb3B5 cmlnaHQgMjAyMCBLw6l2aW4gTCdow7RwaXRhbCA8a2V2aW4ubGhvcGl0YWxAYm9vdGxpbi5jb20+ CisgKiBDb3B5cmlnaHQgMjAyMCBCb290bGluCisgKiBBdXRob3I6IFBhdWwgS29jaWFsa293c2tp IDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4KKyAqLworCisjaW5jbHVkZSA8bGludXgv Y2xrLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2Uu aD4KKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUgPGxpbnV4 L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisjaW5jbHVkZSA8bWVkaWEvdjRs Mi1jdHJscy5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItZGV2aWNlLmg+CisjaW5jbHVkZSA8bWVk aWEvdjRsMi1md25vZGUuaD4KKworI2luY2x1ZGUgInN1bjhpX2E4M3RfZHBoeS5oIgorI2luY2x1 ZGUgInN1bjhpX2E4M3RfbWlwaV9jc2kyLmgiCisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInN1bjhp LWE4M3QtbWlwaS1jc2kyIgorCitzdGF0aWMgY29uc3QgdTMyIHN1bjhpX2E4M3RfbWlwaV9jc2ky X21idXNfY29kZXNbXSA9IHsKKwlNRURJQV9CVVNfRk1UX1NCR0dSOF8xWDgsCisJTUVESUFfQlVT X0ZNVF9TR0JSRzhfMVg4LAorCU1FRElBX0JVU19GTVRfU0dSQkc4XzFYOCwKKwlNRURJQV9CVVNf Rk1UX1NSR0dCOF8xWDgsCisJTUVESUFfQlVTX0ZNVF9TQkdHUjEwXzFYMTAsCisJTUVESUFfQlVT X0ZNVF9TR0JSRzEwXzFYMTAsCisJTUVESUFfQlVTX0ZNVF9TR1JCRzEwXzFYMTAsCisJTUVESUFf QlVTX0ZNVF9TUkdHQjEwXzFYMTAsCit9OworCisvKiBDb3JlICovCisKK3N0YXRpYyB2b2lkIHN1 bjhpX2E4M3RfbWlwaV9jc2kyX2luaXQoc3RydWN0IHN1bjhpX2E4M3RfbWlwaV9jc2kyX2RldiAq Y2RldikKK3sKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBjZGV2LT5yZWdtYXA7CisKKwkvKgor CSAqIFRoZSBBbGx3aW5uZXIgQlNQIHNldHMgdmFyaW91cyBtYWdpYyB2YWx1ZXMgb24gYSBidW5j aCBvZiByZWdpc3RlcnMuCisJICogVGhpcyBpcyBhcHBhcmVudGx5IGEgbmVjZXNzYXJ5IGluaXRp YWxpemF0aW9uIHByb2Nlc3MgdGhhdCB3aWxsIGNhdXNlCisJICogdGhlIGNhcHR1cmUgdG8gZmFp bCB3aXRoIHVuc29saWNpdGVkIGludGVycnVwdHMgaGl0dGluZyBpZiBza2lwcGVkLgorCSAqCisJ ICogTW9zdCBvZiB0aGUgcmVnaXN0ZXJzIGFyZSBzZXQgdG8gcHJvcGVyIHZhbHVlcyBsYXRlciwg ZXhjZXB0IGZvciB0aGUKKwkgKiB0d28gcmVzZXJ2ZWQgcmVnaXN0ZXJzLiBUaGV5IGFyZSBzYWlk IHRvIGhvbGQgYSAiaGFyZHdhcmUgbG9jayIKKwkgKiB2YWx1ZSwgd2l0aG91dCBtb3JlIGluZm9y bWF0aW9uIGF2YWlsYWJsZS4KKwkgKi8KKworCXJlZ21hcF93cml0ZShyZWdtYXAsIFNVTjhJX0E4 M1RfTUlQSV9DU0kyX0NUUkxfUkVHLCAwKTsKKwlyZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9B ODNUX01JUElfQ1NJMl9DVFJMX1JFRywKKwkJICAgICBTVU44SV9BODNUX01JUElfQ1NJMl9DVFJM X0lOSVRfVkFMVUUpOworCisJcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1VOOElfQTgzVF9NSVBJX0NT STJfUlhfUEtUX05VTV9SRUcsIDApOworCXJlZ21hcF93cml0ZShyZWdtYXAsIFNVTjhJX0E4M1Rf TUlQSV9DU0kyX1JYX1BLVF9OVU1fUkVHLAorCQkgICAgIFNVTjhJX0E4M1RfTUlQSV9DU0kyX1JY X1BLVF9OVU1fSU5JVF9WQUxVRSk7CisKKwlyZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNU X0RQSFlfQ1RSTF9SRUcsIDApOworCXJlZ21hcF93cml0ZShyZWdtYXAsIFNVTjhJX0E4M1RfRFBI WV9DVFJMX1JFRywKKwkJICAgICBTVU44SV9BODNUX0RQSFlfQ1RSTF9JTklUX1ZBTFVFKTsKKwor CXJlZ21hcF93cml0ZShyZWdtYXAsIFNVTjhJX0E4M1RfTUlQSV9DU0kyX1JTVkQxX1JFRywgMCk7 CisJcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1VOOElfQTgzVF9NSVBJX0NTSTJfUlNWRDFfUkVHLAor CQkgICAgIFNVTjhJX0E4M1RfTUlQSV9DU0kyX1JTVkQxX0hXX0xPQ0tfVkFMVUUpOworCisJcmVn bWFwX3dyaXRlKHJlZ21hcCwgU1VOOElfQTgzVF9NSVBJX0NTSTJfUlNWRDJfUkVHLCAwKTsKKwly ZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJMl9SU1ZEMl9SRUcsCisJCSAg ICAgU1VOOElfQTgzVF9NSVBJX0NTSTJfUlNWRDJfSFdfTE9DS19WQUxVRSk7CisKKwlyZWdtYXBf d3JpdGUocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfUkVHLCAwKTsKKwlyZWdtYXBf d3JpdGUocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfUkVHLAorCQkgICAgIFNVTjhJ X0E4M1RfTUlQSV9DU0kyX0NGR19JTklUX1ZBTFVFKTsKK30KKworLyogVmlkZW8gKi8KKworc3Rh dGljIGludCBzdW44aV9hODN0X21pcGlfY3NpMl9zX3N0cmVhbShzdHJ1Y3QgdjRsMl9zdWJkZXYg KnN1YmRldiwgaW50IG9uKQoreworCXN0cnVjdCBzdW44aV9hODN0X21pcGlfY3NpMl92aWRlbyAq dmlkZW8gPQorCQlzdW44aV9hODN0X21pcGlfY3NpMl9zdWJkZXZfdmlkZW8oc3ViZGV2KTsKKwlz dHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfZGV2ICpjZGV2ID0KKwkJc3VuOGlfYTgzdF9taXBp X2NzaTJfdmlkZW9fZGV2KHZpZGVvKTsKKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnJlbW90ZV9zdWJk ZXYgPSB2aWRlby0+cmVtb3RlX3N1YmRldjsKKwlzdHJ1Y3QgdjRsMl9md25vZGVfYnVzX21pcGlf Y3NpMiAqYnVzX21pcGlfY3NpMiA9CisJCSZ2aWRlby0+ZW5kcG9pbnQuYnVzLm1pcGlfY3NpMjsK Kwl1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgZHBoeV9vcHRzID0geyAwIH07CisJc3RydWN0IHBo eV9jb25maWd1cmVfb3B0c19taXBpX2RwaHkgKmRwaHlfY2ZnID0gJmRwaHlfb3B0cy5taXBpX2Rw aHk7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwID0gY2Rldi0+cmVnbWFwOworCXN0cnVjdCB2NGwy X2N0cmwgKmN0cmw7CisJdW5zaWduZWQgaW50IGxhbmVzX2NvdW50OworCXVuc2lnbmVkIGludCBi cHA7CisJdW5zaWduZWQgbG9uZyBwaXhlbF9yYXRlOworCXU4IGRhdGFfdHlwZSA9IDA7CisJdTMy IHZlcnNpb24gPSAwOworCS8qIEluaXRpYWxpemUgdG8gMCB0byB1c2UgYm90aCBpbiBkaXNhYmxl IGxhYmVsIChyZXQgIT0gMCkgYW5kIG9mZi4gKi8KKwlpbnQgcmV0ID0gMDsKKworCWlmICghcmVt b3RlX3N1YmRldikKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoIW9uKSB7CisJCXY0bDJfc3Vi ZGV2X2NhbGwocmVtb3RlX3N1YmRldiwgdmlkZW8sIHNfc3RyZWFtLCAwKTsKKwkJZ290byBkaXNh YmxlOworCX0KKworCXN3aXRjaCAodmlkZW8tPm1idXNfZm9ybWF0LmNvZGUpIHsKKwljYXNlIE1F RElBX0JVU19GTVRfU0JHR1I4XzFYODoKKwljYXNlIE1FRElBX0JVU19GTVRfU0dCUkc4XzFYODoK KwljYXNlIE1FRElBX0JVU19GTVRfU0dSQkc4XzFYODoKKwljYXNlIE1FRElBX0JVU19GTVRfU1JH R0I4XzFYODoKKwkJZGF0YV90eXBlID0gTUlQSV9DU0kyX0RBVEFfVFlQRV9SQVc4OworCQlicHAg PSA4OworCQlicmVhazsKKwljYXNlIE1FRElBX0JVU19GTVRfU0JHR1IxMF8xWDEwOgorCWNhc2Ug TUVESUFfQlVTX0ZNVF9TR0JSRzEwXzFYMTA6CisJY2FzZSBNRURJQV9CVVNfRk1UX1NHUkJHMTBf MVgxMDoKKwljYXNlIE1FRElBX0JVU19GTVRfU1JHR0IxMF8xWDEwOgorCQlkYXRhX3R5cGUgPSBN SVBJX0NTSTJfREFUQV9UWVBFX1JBVzEwOworCQlicHAgPSAxMDsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogU2Vuc29yIHBpeGVsIHJhdGUgKi8KKwor CWN0cmwgPSB2NGwyX2N0cmxfZmluZChyZW1vdGVfc3ViZGV2LT5jdHJsX2hhbmRsZXIsIFY0TDJf Q0lEX1BJWEVMX1JBVEUpOworCWlmICghY3RybCkgeworCQlkZXZfZXJyKGNkZXYtPmRldiwKKwkJ CSIlczogbm8gTUlQSSBDU0ktMiBwaXhlbCByYXRlIGZyb20gdGhlIHNlbnNvclxuIiwKKwkJCV9f ZnVuY19fKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcGl4ZWxfcmF0ZSA9ICh1bnNpZ25l ZCBsb25nKXY0bDJfY3RybF9nX2N0cmxfaW50NjQoY3RybCk7CisJaWYgKCFwaXhlbF9yYXRlKSB7 CisJCWRldl9lcnIoY2Rldi0+ZGV2LAorCQkJIiVzOiB6ZXJvIE1JUEkgQ1NJLTIgcGl4ZWwgcmF0 ZSBmcm9tIHRoZSBzZW5zb3JcbiIsCisJCQlfX2Z1bmNfXyk7CisJCXJldHVybiAtRU5PREVWOwor CX0KKworCS8qIFBvd2VyIG1hbmFnZW1lbnQgKi8KKworCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5 bmMoY2Rldi0+ZGV2KTsKKwlpZiAocmV0IDwgMCkgeworCQlwbV9ydW50aW1lX3B1dF9ub2lkbGUo Y2Rldi0+ZGV2KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBELVBIWSBjb25maWd1cmF0aW9u ICovCisKKwlsYW5lc19jb3VudCA9IGJ1c19taXBpX2NzaTItPm51bV9kYXRhX2xhbmVzOworCXBo eV9taXBpX2RwaHlfZ2V0X2RlZmF1bHRfY29uZmlnKHBpeGVsX3JhdGUsIGJwcCwgbGFuZXNfY291 bnQsCisJCQkJCSBkcGh5X2NmZyk7CisKKwkvKgorCSAqIE5vdGUgdGhhdCBvdXIgaGFyZHdhcmUg aXMgdXNpbmcgRERSLCB3aGljaCBpcyBub3QgdGFrZW4gaW4gYWNjb3VudCBieQorCSAqIHBoeV9t aXBpX2RwaHlfZ2V0X2RlZmF1bHRfY29uZmlnIHdoZW4gY2FsY3VsYXRpbmcgaHNfY2xrX3JhdGUg ZnJvbQorCSAqIHRoZSBwaXhlbCByYXRlLCBsYW5lcyBjb3VudCBhbmQgYnBwLgorCSAqCisJICog VGhlIHJlc3VsdGluZyBjbG9jayByYXRlIGlzIGJhc2ljYWxseSB0aGUgc3ltYm9sIHJhdGUgb3Zl ciB0aGUgd2hvbGUKKwkgKiBsaW5rLiBUaGUgYWN0dWFsIGNsb2NrIHJhdGUgaXMgY2FsY3VsYXRl ZCB3aXRoIGRpdmlzaW9uIGJ5IHR3byBzaW5jZQorCSAqIEREUiBzYW1wbGVzIGJvdGggb24gcmlz aW5nIGFuZCBmYWxsaW5nIGVkZ2VzLgorCSAqLworCisJZGV2X2RiZyhjZGV2LT5kZXYsICJBODNU IE1JUEkgQ1NJLTIgY29uZmlnOlxuIik7CisJZGV2X2RiZyhjZGV2LT5kZXYsCisJCSIlbGQgcGl4 ZWxzL3MsICV1IGJpdHMvcGl4ZWwsICV1IGxhbmVzLCAlbHUgSHogY2xvY2tcbiIsCisJCXBpeGVs X3JhdGUsIGJwcCwgbGFuZXNfY291bnQsIGRwaHlfY2ZnLT5oc19jbGtfcmF0ZSAvIDIpOworCisJ cmV0ID0gcGh5X3Jlc2V0KGNkZXYtPmRwaHkpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihjZGV2 LT5kZXYsICJmYWlsZWQgdG8gcmVzZXQgTUlQSSBELVBIWVxuIik7CisJCWdvdG8gZXJyb3JfcG07 CisJfQorCisJcmV0ID0gcGh5X3NldF9tb2RlX2V4dChjZGV2LT5kcGh5LCBQSFlfTU9ERV9NSVBJ X0RQSFksCisJCQkgICAgICAgUEhZX01JUElfRFBIWV9TVUJNT0RFX1JYKTsKKwlpZiAocmV0KSB7 CisJCWRldl9lcnIoY2Rldi0+ZGV2LCAiZmFpbGVkIHRvIHNldCBNSVBJIEQtUEhZIG1vZGVcbiIp OworCQlnb3RvIGVycm9yX3BtOworCX0KKworCXJldCA9IHBoeV9jb25maWd1cmUoY2Rldi0+ZHBo eSwgJmRwaHlfb3B0cyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNkZXYtPmRldiwgImZhaWxl ZCB0byBjb25maWd1cmUgTUlQSSBELVBIWVxuIik7CisJCWdvdG8gZXJyb3JfcG07CisJfQorCisJ cmV0ID0gcGh5X3Bvd2VyX29uKGNkZXYtPmRwaHkpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihj ZGV2LT5kZXYsICJmYWlsZWQgdG8gcG93ZXIgb24gTUlQSSBELVBIWVxuIik7CisJCWdvdG8gZXJy b3JfcG07CisJfQorCisJLyogTUlQSSBDU0ktMiBjb250cm9sbGVyIHNldHVwICovCisKKwlyZWdt YXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJMl9DVFJMX1JFRywKKwkJICAgICBT VU44SV9BODNUX01JUElfQ1NJMl9DVFJMX1JFU0VUX04pOworCisJcmVnbWFwX3JlYWQocmVnbWFw LCBTVU44SV9BODNUX01JUElfQ1NJMl9WRVJTSU9OX1JFRywgJnZlcnNpb24pOworCisJZGV2X2Ri ZyhjZGV2LT5kZXYsICJBODNUIE1JUEkgQ1NJLTIgdmVyc2lvbjogJTA0eFxuIiwgdmVyc2lvbik7 CisKKwlyZWdtYXBfd3JpdGUocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfUkVHLAor CQkgICAgIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0NGR19VTlBLVF9FTiB8CisJCSAgICAgU1VOOElf QTgzVF9NSVBJX0NTSTJfQ0ZHX1NZTkNfRExZX0NZQ0xFKDgpIHwKKwkJICAgICBTVU44SV9BODNU X01JUElfQ1NJMl9DRkdfTl9DSEFOTkVMKDEpIHwKKwkJICAgICBTVU44SV9BODNUX01JUElfQ1NJ Ml9DRkdfTl9MQU5FKGxhbmVzX2NvdW50KSk7CisKKwkvKgorCSAqIE91ciBNSVBJIENTSS0yIGNv bnRyb2xsZXIgaGFzIGludGVybmFsIGNoYW5uZWxzIHRoYXQgY2FuIGJlCisJICogY29uZmlndXJl ZCB0byBtYXRjaCBhIHNwZWNpZmljIE1JUEkgQ1NJLTIgdmlydHVhbCBjaGFubmVsIGFuZC9vcgor CSAqIGEgc3BlY2lmaWMgZGF0YSB0eXBlLiBFYWNoIGludGVybmFsIGNoYW5uZWwgY2FuIGJlIHBp cGVkIHRvIGFuCisJICogaW50ZXJuYWwgY2hhbm5lbCBvZiB0aGUgQ1NJIGNvbnRyb2xsZXIuCisJ ICoKKwkgKiBXZSBzZXQgdmlydHVhbCBjaGFubmVsIG51bWJlcnMgdG8gYWxsIGNoYW5uZWxzIHRv IG1ha2Ugc3VyZSB0aGF0CisJICogdmlydHVhbCBjaGFubmVsIDAgZ29lcyB0byBDU0kgY2hhbm5l bCAwIG9ubHkuCisJICovCisJcmVnbWFwX3dyaXRlKHJlZ21hcCwgU1VOOElfQTgzVF9NSVBJX0NT STJfVkNEVDBfUkVHLAorCQkgICAgIFNVTjhJX0E4M1RfTUlQSV9DU0kyX1ZDRFQwX0NIX1ZDKDMs IDMpIHwKKwkJICAgICBTVU44SV9BODNUX01JUElfQ1NJMl9WQ0RUMF9DSF9WQygyLCAyKSB8CisJ CSAgICAgU1VOOElfQTgzVF9NSVBJX0NTSTJfVkNEVDBfQ0hfVkMoMSwgMSkgfAorCQkgICAgIFNV TjhJX0E4M1RfTUlQSV9DU0kyX1ZDRFQwX0NIX1ZDKDAsIDApIHwKKwkJICAgICBTVU44SV9BODNU X01JUElfQ1NJMl9WQ0RUMF9DSF9EVCgwLCBkYXRhX3R5cGUpKTsKKworCS8qIFN0YXJ0IHN0cmVh bWluZy4gKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmVnbWFwLCBTVU44SV9BODNUX01JUElfQ1NJ Ml9DRkdfUkVHLAorCQkJICAgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX1NZTkNfRU4sCisJCQkg ICBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfU1lOQ19FTik7CisKKwlyZXQgPSB2NGwyX3N1YmRl dl9jYWxsKHJlbW90ZV9zdWJkZXYsIHZpZGVvLCBzX3N0cmVhbSwgMSk7CisJaWYgKHJldCkKKwkJ Z290byBkaXNhYmxlOworCisJcmV0dXJuIDA7CisKK2Rpc2FibGU6CisJcmVnbWFwX3VwZGF0ZV9i aXRzKHJlZ21hcCwgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX1JFRywKKwkJCSAgIFNVTjhJX0E4 M1RfTUlQSV9DU0kyX0NGR19TWU5DX0VOLCAwKTsKKworCXJlZ21hcF93cml0ZShyZWdtYXAsIFNV TjhJX0E4M1RfTUlQSV9DU0kyX0NUUkxfUkVHLCAwKTsKKworCXBoeV9wb3dlcl9vZmYoY2Rldi0+ ZHBoeSk7CisKK2Vycm9yX3BtOgorCXBtX3J1bnRpbWVfcHV0KGNkZXYtPmRldik7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgY29uc3QKK3N0cnVjdCB2NGwyX3N1YmRldl92aWRlb19vcHMg c3VuOGlfYTgzdF9taXBpX2NzaTJfc3ViZGV2X3ZpZGVvX29wcyA9IHsKKwkuc19zdHJlYW0JPSBz dW44aV9hODN0X21pcGlfY3NpMl9zX3N0cmVhbSwKK307CisKKy8qIFBhZCAqLworCitzdGF0aWMg aW50CitzdW44aV9hODN0X21pcGlfY3NpMl9lbnVtX21idXNfY29kZShzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnN1YmRldiwKKwkJCQkgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNvbmZp ZywKKwkJCQkgICAgc3RydWN0IHY0bDJfc3ViZGV2X21idXNfY29kZV9lbnVtICpjb2RlX2VudW0p Cit7CisJaWYgKGNvZGVfZW51bS0+aW5kZXggPj0gQVJSQVlfU0laRShzdW44aV9hODN0X21pcGlf Y3NpMl9tYnVzX2NvZGVzKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb2RlX2VudW0tPmNvZGUg PSBzdW44aV9hODN0X21pcGlfY3NpMl9tYnVzX2NvZGVzW2NvZGVfZW51bS0+aW5kZXhdOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc3VuOGlfYTgzdF9taXBpX2NzaTJfZ2V0X2ZtdChz dHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKKwkJCQkgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFk X2NvbmZpZyAqY29uZmlnLAorCQkJCSAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKmZvcm1h dCkKK3sKKwlzdHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfdmlkZW8gKnZpZGVvID0KKwkJc3Vu OGlfYTgzdF9taXBpX2NzaTJfc3ViZGV2X3ZpZGVvKHN1YmRldik7CisJc3RydWN0IHY0bDJfbWJ1 c19mcmFtZWZtdCAqbWJ1c19mb3JtYXQgPSAmZm9ybWF0LT5mb3JtYXQ7CisKKwlpZiAoZm9ybWF0 LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKQorCQkqbWJ1c19mb3JtYXQgPSAqdjRs Ml9zdWJkZXZfZ2V0X3RyeV9mb3JtYXQoc3ViZGV2LCBjb25maWcsCisJCQkJCQkJICAgZm9ybWF0 LT5wYWQpOworCWVsc2UKKwkJKm1idXNfZm9ybWF0ID0gdmlkZW8tPm1idXNfZm9ybWF0OworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc3VuOGlfYTgzdF9taXBpX2NzaTJfc2V0X2ZtdChz dHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKKwkJCQkgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFk X2NvbmZpZyAqY29uZmlnLAorCQkJCSAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKmZvcm1h dCkKK3sKKwlzdHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfdmlkZW8gKnZpZGVvID0KKwkJc3Vu OGlfYTgzdF9taXBpX2NzaTJfc3ViZGV2X3ZpZGVvKHN1YmRldik7CisJc3RydWN0IHY0bDJfbWJ1 c19mcmFtZWZtdCAqbWJ1c19mb3JtYXQgPSAmZm9ybWF0LT5mb3JtYXQ7CisKKwlpZiAoZm9ybWF0 LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKQorCQkqdjRsMl9zdWJkZXZfZ2V0X3Ry eV9mb3JtYXQoc3ViZGV2LCBjb25maWcsIGZvcm1hdC0+cGFkKSA9CisJCQkqbWJ1c19mb3JtYXQ7 CisJZWxzZQorCQl2aWRlby0+bWJ1c19mb3JtYXQgPSAqbWJ1c19mb3JtYXQ7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIHN1bjhpX2E4 M3RfbWlwaV9jc2kyX3N1YmRldl9wYWRfb3BzID0geworCS5lbnVtX21idXNfY29kZQk9IHN1bjhp X2E4M3RfbWlwaV9jc2kyX2VudW1fbWJ1c19jb2RlLAorCS5nZXRfZm10CT0gc3VuOGlfYTgzdF9t aXBpX2NzaTJfZ2V0X2ZtdCwKKwkuc2V0X2ZtdAk9IHN1bjhpX2E4M3RfbWlwaV9jc2kyX3NldF9m bXQsCit9OworCisvKiBTdWJkZXYgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRl dl9vcHMgc3VuOGlfYTgzdF9taXBpX2NzaTJfc3ViZGV2X29wcyA9IHsKKwkudmlkZW8JCT0gJnN1 bjhpX2E4M3RfbWlwaV9jc2kyX3N1YmRldl92aWRlb19vcHMsCisJLnBhZAkJPSAmc3VuOGlfYTgz dF9taXBpX2NzaTJfc3ViZGV2X3BhZF9vcHMsCit9OworCisvKiBOb3RpZmllciAqLworCitzdGF0 aWMgaW50CitzdW44aV9hODN0X21pcGlfY3NpMl9ub3RpZmllcl9ib3VuZChzdHJ1Y3QgdjRsMl9h c3luY19ub3RpZmllciAqbm90aWZpZXIsCisJCQkJICAgIHN0cnVjdCB2NGwyX3N1YmRldiAqcmVt b3RlX3N1YmRldiwKKwkJCQkgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICpyZW1vdGVfc3Vi ZGV2X2FzeW5jKQoreworCXN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2ID0gbm90aWZpZXItPnNk OworCXN0cnVjdCBzdW44aV9hODN0X21pcGlfY3NpMl92aWRlbyAqdmlkZW8gPQorCQlzdW44aV9h ODN0X21pcGlfY3NpMl9zdWJkZXZfdmlkZW8oc3ViZGV2KTsKKwlzdHJ1Y3Qgc3VuOGlfYTgzdF9t aXBpX2NzaTJfZGV2ICpjZGV2ID0KKwkJc3VuOGlfYTgzdF9taXBpX2NzaTJfdmlkZW9fZGV2KHZp ZGVvKTsKKwlpbnQgc291cmNlX3BhZDsKKwlpbnQgcmV0OworCisJc291cmNlX3BhZCA9IG1lZGlh X2VudGl0eV9nZXRfZndub2RlX3BhZCgmcmVtb3RlX3N1YmRldi0+ZW50aXR5LAorCQkJCQkJIHJl bW90ZV9zdWJkZXYtPmZ3bm9kZSwKKwkJCQkJCSBNRURJQV9QQURfRkxfU09VUkNFKTsKKwlpZiAo c291cmNlX3BhZCA8IDApCisJCXJldHVybiBzb3VyY2VfcGFkOworCisJcmV0ID0gbWVkaWFfY3Jl YXRlX3BhZF9saW5rKCZyZW1vdGVfc3ViZGV2LT5lbnRpdHksIHNvdXJjZV9wYWQsCisJCQkJICAg ICZzdWJkZXYtPmVudGl0eSwgMCwKKwkJCQkgICAgTUVESUFfTE5LX0ZMX0VOQUJMRUQgfAorCQkJ CSAgICBNRURJQV9MTktfRkxfSU1NVVRBQkxFKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoY2Rl di0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSAlczoldSAtPiAlczoldSBsaW5rXG4iLAorCQkJcmVt b3RlX3N1YmRldi0+ZW50aXR5Lm5hbWUsIHNvdXJjZV9wYWQsCisJCQlzdWJkZXYtPmVudGl0eS5u YW1lLCAwKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl2aWRlby0+cmVtb3RlX3N1YmRldiA9IHJl bW90ZV9zdWJkZXY7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0CitzdHJ1Y3QgdjRs Ml9hc3luY19ub3RpZmllcl9vcGVyYXRpb25zIHN1bjhpX2E4M3RfbWlwaV9jc2kyX25vdGlmaWVy X29wcyA9IHsKKwkuYm91bmQJCT0gc3VuOGlfYTgzdF9taXBpX2NzaTJfbm90aWZpZXJfYm91bmQs Cit9OworCisvKiBNZWRpYSBFbnRpdHkgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9l bnRpdHlfb3BlcmF0aW9ucyBzdW44aV9hODN0X21pcGlfY3NpMl9lbnRpdHlfb3BzID0geworCS5s aW5rX3ZhbGlkYXRlCT0gdjRsMl9zdWJkZXZfbGlua192YWxpZGF0ZSwKK307CisKKy8qIEJhc2Ug RHJpdmVyICovCisKK3N0YXRpYyBpbnQgc3VuOGlfYTgzdF9taXBpX2NzaTJfc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHN1bjhpX2E4M3RfbWlwaV9jc2kyX2RldiAqY2Rl diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkZXYt PmNsa19taXNjKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY2Rldi0+Y2xrX21pcGkpOworCWNs a19kaXNhYmxlX3VucHJlcGFyZShjZGV2LT5jbGtfbW9kKTsKKwljbGtfZGlzYWJsZV91bnByZXBh cmUoY2Rldi0+Y2xrX2J1cyk7CisJcmVzZXRfY29udHJvbF9hc3NlcnQoY2Rldi0+cmVzZXQpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc3VuOGlfYTgzdF9taXBpX2NzaTJfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgc3VuOGlfYTgzdF9taXBpX2NzaTJfZGV2 ICpjZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldDsKKworCXJldCA9IHJlc2V0 X2NvbnRyb2xfZGVhc3NlcnQoY2Rldi0+cmVzZXQpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihj ZGV2LT5kZXYsICJmYWlsZWQgdG8gZGVhc3NlcnQgcmVzZXRcbiIpOworCQlyZXR1cm4gcmV0Owor CX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZGV2LT5jbGtfYnVzKTsKKwlpZiAocmV0 KSB7CisJCWRldl9lcnIoY2Rldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBidXMgY2xvY2tcbiIp OworCQlnb3RvIGVycm9yX3Jlc2V0OworCX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShj ZGV2LT5jbGtfbW9kKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoY2Rldi0+ZGV2LCAiZmFpbGVk IHRvIGVuYWJsZSBtb2R1bGUgY2xvY2tcbiIpOworCQlnb3RvIGVycm9yX2Nsa19idXM7CisJfQor CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNkZXYtPmNsa19taXBpKTsKKwlpZiAocmV0KSB7 CisJCWRldl9lcnIoY2Rldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBNSVBJIGNsb2NrXG4iKTsK KwkJZ290byBlcnJvcl9jbGtfbW9kOworCX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShj ZGV2LT5jbGtfbWlzYyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNkZXYtPmRldiwgImZhaWxl ZCB0byBlbmFibGUgQ1NJIG1pc2MgY2xvY2tcbiIpOworCQlnb3RvIGVycm9yX2Nsa19taXBpOwor CX0KKworCXN1bjhpX2E4M3RfbWlwaV9jc2kyX2luaXQoY2Rldik7CisKKwlyZXR1cm4gMDsKKwor ZXJyb3JfY2xrX21pcGk6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkZXYtPmNsa19taXBpKTsK KworZXJyb3JfY2xrX21vZDoKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY2Rldi0+Y2xrX21vZCk7 CisKK2Vycm9yX2Nsa19idXM6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkZXYtPmNsa19idXMp OworCitlcnJvcl9yZXNldDoKKwlyZXNldF9jb250cm9sX2Fzc2VydChjZGV2LT5yZXNldCk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitzdW44aV9hODN0X21pcGlfY3NpMl92NGwy X3NldHVwKHN0cnVjdCBzdW44aV9hODN0X21pcGlfY3NpMl9kZXYgKmNkZXYpCit7CisJc3RydWN0 IHN1bjhpX2E4M3RfbWlwaV9jc2kyX3ZpZGVvICp2aWRlbyA9ICZjZGV2LT52aWRlbzsKKwlzdHJ1 Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiA9ICZ2aWRlby0+c3ViZGV2OworCXN0cnVjdCB2NGwyX2Fz eW5jX25vdGlmaWVyICpub3RpZmllciA9ICZ2aWRlby0+bm90aWZpZXI7CisJc3RydWN0IGZ3bm9k ZV9oYW5kbGUgKmhhbmRsZTsKKwlzdHJ1Y3QgdjRsMl9md25vZGVfZW5kcG9pbnQgKmVuZHBvaW50 OworCXN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldiAqc3ViZGV2X2FzeW5jOworCWludCByZXQ7CisK KwkvKiBTdWJkZXYgKi8KKworCXY0bDJfc3ViZGV2X2luaXQoc3ViZGV2LCAmc3VuOGlfYTgzdF9t aXBpX2NzaTJfc3ViZGV2X29wcyk7CisJc3ViZGV2LT5kZXYgPSBjZGV2LT5kZXY7CisJc3ViZGV2 LT5mbGFncyB8PSBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERTsKKwlzdHJzY3B5KHN1YmRldi0+ bmFtZSwgTU9EVUxFX05BTUUsIHNpemVvZihzdWJkZXYtPm5hbWUpKTsKKwl2NGwyX3NldF9zdWJk ZXZkYXRhKHN1YmRldiwgY2Rldik7CisKKwkvKiBFbnRpdHkgKi8KKworCXN1YmRldi0+ZW50aXR5 LmZ1bmN0aW9uID0gTUVESUFfRU5UX0ZfVklEX0lGX0JSSURHRTsKKwlzdWJkZXYtPmVudGl0eS5v cHMgPSAmc3VuOGlfYTgzdF9taXBpX2NzaTJfZW50aXR5X29wczsKKworCS8qIFBhZHMgKi8KKwor CXZpZGVvLT5wYWRzWzBdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NJTks7CisJdmlkZW8tPnBhZHNb MV0uZmxhZ3MgPSBNRURJQV9QQURfRkxfU09VUkNFOworCisJcmV0ID0gbWVkaWFfZW50aXR5X3Bh ZHNfaW5pdCgmc3ViZGV2LT5lbnRpdHksIDIsIHZpZGVvLT5wYWRzKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJLyogRW5kcG9pbnQgKi8KKworCWhhbmRsZSA9IGZ3bm9kZV9ncmFwaF9n ZXRfZW5kcG9pbnRfYnlfaWQoZGV2X2Z3bm9kZShjZGV2LT5kZXYpLCAwLCAwLAorCQkJCQkJIEZX Tk9ERV9HUkFQSF9FTkRQT0lOVF9ORVhUKTsKKwlpZiAoIWhhbmRsZSkgeworCQlyZXQgPSAtRU5P REVWOworCQlnb3RvIGVycm9yX21lZGlhX2VudGl0eTsKKwl9CisKKwllbmRwb2ludCA9ICZ2aWRl by0+ZW5kcG9pbnQ7CisJZW5kcG9pbnQtPmJ1c190eXBlID0gVjRMMl9NQlVTX0NTSTJfRFBIWTsK KworCXJldCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKGhhbmRsZSwgZW5kcG9pbnQpOwor CWZ3bm9kZV9oYW5kbGVfcHV0KGhhbmRsZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJvcl9tZWRp YV9lbnRpdHk7CisKKwkvKiBOb3RpZmllciAqLworCisJdjRsMl9hc3luY19ub3RpZmllcl9pbml0 KG5vdGlmaWVyKTsKKworCXN1YmRldl9hc3luYyA9ICZ2aWRlby0+c3ViZGV2X2FzeW5jOworCXJl dCA9IHY0bDJfYXN5bmNfbm90aWZpZXJfYWRkX2Z3bm9kZV9yZW1vdGVfc3ViZGV2KG5vdGlmaWVy LCBoYW5kbGUsCisJCQkJCQkJICAgc3ViZGV2X2FzeW5jKTsKKwlpZiAocmV0KQorCQlnb3RvIGVy cm9yX21lZGlhX2VudGl0eTsKKworCXZpZGVvLT5ub3RpZmllci5vcHMgPSAmc3VuOGlfYTgzdF9t aXBpX2NzaTJfbm90aWZpZXJfb3BzOworCisJcmV0ID0gdjRsMl9hc3luY19zdWJkZXZfbm90aWZp ZXJfcmVnaXN0ZXIoc3ViZGV2LCBub3RpZmllcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJy b3Jfbm90aWZpZXI7CisKKwkvKiBTdWJkZXYgKi8KKworCXJldCA9IHY0bDJfYXN5bmNfcmVnaXN0 ZXJfc3ViZGV2KHN1YmRldik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyb3Jfbm90aWZpZXJf cmVnaXN0ZXJlZDsKKworCS8qIFJ1bnRpbWUgUE0gKi8KKworCXBtX3J1bnRpbWVfZW5hYmxlKGNk ZXYtPmRldik7CisJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGNkZXYtPmRldik7CisKKwlyZXR1 cm4gMDsKKworZXJyb3Jfbm90aWZpZXJfcmVnaXN0ZXJlZDoKKwl2NGwyX2FzeW5jX25vdGlmaWVy X3VucmVnaXN0ZXIobm90aWZpZXIpOworZXJyb3Jfbm90aWZpZXI6CisJdjRsMl9hc3luY19ub3Rp Zmllcl9jbGVhbnVwKG5vdGlmaWVyKTsKK2Vycm9yX21lZGlhX2VudGl0eToKKwltZWRpYV9lbnRp dHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludAorc3VuOGlfYTgzdF9taXBpX2NzaTJfdjRsMl90ZWFyZG93bihzdHJ1Y3Qgc3VuOGlfYTgz dF9taXBpX2NzaTJfZGV2ICpjZGV2KQoreworCXN0cnVjdCBzdW44aV9hODN0X21pcGlfY3NpMl92 aWRlbyAqdmlkZW8gPSAmY2Rldi0+dmlkZW87CisJc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYg PSAmdmlkZW8tPnN1YmRldjsKKwlzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAqbm90aWZpZXIg PSAmdmlkZW8tPm5vdGlmaWVyOworCisJdjRsMl9hc3luY191bnJlZ2lzdGVyX3N1YmRldihzdWJk ZXYpOworCXY0bDJfYXN5bmNfbm90aWZpZXJfdW5yZWdpc3Rlcihub3RpZmllcik7CisJdjRsMl9h c3luY19ub3RpZmllcl9jbGVhbnVwKG5vdGlmaWVyKTsKKwltZWRpYV9lbnRpdHlfY2xlYW51cCgm c3ViZGV2LT5lbnRpdHkpOworCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHN1YmRldik7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHN1 bjhpX2E4M3RfbWlwaV9jc2kyX3JlZ21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzICAgICAgID0g MzIsCisJLnJlZ19zdHJpZGUgICAgID0gNCwKKwkudmFsX2JpdHMgICAgICAgPSAzMiwKKwkubWF4 X3JlZ2lzdGVyCT0gMHgxMjAsCit9OworCitzdGF0aWMgaW50IHN1bjhpX2E4M3RfbWlwaV9jc2ky X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IHN1bjhpX2E4 M3RfbWlwaV9jc2kyX2RldiAqY2RldjsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9f aW9tZW0gKmlvX2Jhc2U7CisJaW50IHJldDsKKworCWNkZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYt PmRldiwgc2l6ZW9mKCpjZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjZGV2KQorCQlyZXR1cm4g LUVOT01FTTsKKworCWNkZXYtPmRldiA9ICZwZGV2LT5kZXY7CisKKwlyZXMgPSBwbGF0Zm9ybV9n ZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlvX2Jhc2UgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGlvX2Jhc2UpKQor CQlyZXR1cm4gUFRSX0VSUihpb19iYXNlKTsKKworCWNkZXYtPnJlZ21hcCA9CisJCWRldm1fcmVn bWFwX2luaXRfbW1pbygmcGRldi0+ZGV2LCBpb19iYXNlLAorCQkJCSAgICAgICZzdW44aV9hODN0 X21pcGlfY3NpMl9yZWdtYXBfY29uZmlnKTsKKwlpZiAoSVNfRVJSKGNkZXYtPnJlZ21hcCkpIHsK KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXQgcmVnaXN0ZXIgbWFwXG4iKTsK KwkJcmV0dXJuIFBUUl9FUlIoY2Rldi0+cmVnbWFwKTsKKwl9CisKKwljZGV2LT5jbGtfYnVzID0g ZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJidXMiKTsKKwlpZiAoSVNfRVJSKGNkZXYtPmNsa19i dXMpKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBhY3F1aXJlIGJ1cyBjbG9j a1xuIik7CisJCXJldHVybiBQVFJfRVJSKGNkZXYtPmNsa19idXMpOworCX0KKworCWNkZXYtPmNs a19tb2QgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgIm1vZCIpOworCWlmIChJU19FUlIoY2Rl di0+Y2xrX21vZCkpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFjcXVpcmUg bW9kIGNsb2NrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2Rldi0+Y2xrX21vZCk7CisJfQorCisJ Y2Rldi0+Y2xrX21pcGkgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgIm1pcGkiKTsKKwlpZiAo SVNfRVJSKGNkZXYtPmNsa19taXBpKSkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gYWNxdWlyZSBtaXBpIGNsb2NrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2Rldi0+Y2xrX21p cGkpOworCX0KKworCWNkZXYtPmNsa19taXNjID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJt aXNjIik7CisJaWYgKElTX0VSUihjZGV2LT5jbGtfbWlzYykpIHsKKwkJZGV2X2VycigmcGRldi0+ ZGV2LCAiZmFpbGVkIHRvIGFjcXVpcmUgbWlzYyBjbG9ja1xuIik7CisJCXJldHVybiBQVFJfRVJS KGNkZXYtPmNsa19taXNjKTsKKwl9CisKKwljZGV2LT5yZXNldCA9IGRldm1fcmVzZXRfY29udHJv bF9nZXRfc2hhcmVkKCZwZGV2LT5kZXYsIE5VTEwpOworCWlmIChJU19FUlIoY2Rldi0+cmVzZXQp KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgcmVzZXQgY29udHJvbGxl clxuIik7CisJCXJldHVybiBQVFJfRVJSKGNkZXYtPnJlc2V0KTsKKwl9CisKKwlyZXQgPSBzdW44 aV9hODN0X2RwaHlfcmVnaXN0ZXIoY2Rldik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJmYWlsZWQgdG8gaW5pdCBNSVBJIEQtUEhZXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjZGV2KTsKKworCXJldCA9IHN1bjhpX2E4 M3RfbWlwaV9jc2kyX3Y0bDJfc2V0dXAoY2Rldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHN1bjhpX2E4M3RfbWlwaV9jc2kyX3JlbW92 ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBzdW44aV9hODN0X21p cGlfY3NpMl9kZXYgKmNkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCXBoeV9l eGl0KGNkZXYtPmRwaHkpOworCisJcmV0dXJuIHN1bjhpX2E4M3RfbWlwaV9jc2kyX3Y0bDJfdGVh cmRvd24oY2Rldik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdW44aV9h ODN0X21pcGlfY3NpMl9wbV9vcHMgPSB7CisJU0VUX1JVTlRJTUVfUE1fT1BTKHN1bjhpX2E4M3Rf bWlwaV9jc2kyX3N1c3BlbmQsCisJCQkgICBzdW44aV9hODN0X21pcGlfY3NpMl9yZXN1bWUsIE5V TEwpCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9hODN0X21p cGlfY3NpMl9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjhp LWE4M3QtbWlwaS1jc2kyIiB9LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1 bjhpX2E4M3RfbWlwaV9jc2kyX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgc3VuOGlfYTgzdF9taXBpX2NzaTJfcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZSA9 IHN1bjhpX2E4M3RfbWlwaV9jc2kyX3Byb2JlLAorCS5yZW1vdmUgPSBzdW44aV9hODN0X21pcGlf Y3NpMl9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBNT0RVTEVfTkFNRSwKKwkJLm9m X21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHN1bjhpX2E4M3RfbWlwaV9jc2kyX29mX21hdGNo KSwKKwkJLnBtID0gJnN1bjhpX2E4M3RfbWlwaV9jc2kyX3BtX29wcywKKwl9LAorfTsKK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfYTgzdF9taXBpX2NzaTJfcGxhdGZvcm1fZHJpdmVyKTsK KworTU9EVUxFX0RFU0NSSVBUSU9OKCJBbGx3aW5uZXIgQTgzVCBNSVBJIENTSS0yIGFuZCBELVBI WSBDb250cm9sbGVyIERyaXZlciIpOworTU9EVUxFX0FVVEhPUigiUGF1bCBLb2NpYWxrb3dza2kg PHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1p cGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9z dW54aS9zdW44aS1hODN0LW1pcGktY3NpMi9zdW44aV9hODN0X21pcGlfY3NpMi5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2ZiMzc2YmFmYjgyCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1hODN0LW1pcGktY3Np Mi9zdW44aV9hODN0X21pcGlfY3NpMi5oCkBAIC0wLDAgKzEsMTk3IEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAyMCBLw6l2aW4g TCdow7RwaXRhbCA8a2V2aW4ubGhvcGl0YWxAYm9vdGxpbi5jb20+CisgKiBDb3B5cmlnaHQgMjAy MCBCb290bGluCisgKiBBdXRob3I6IFBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3Nr aUBib290bGluLmNvbT4KKyAqLworCisjaWZuZGVmIF9fU1VOOElfQTgzVF9NSVBJX0NTSTJfSF9f CisjZGVmaW5lIF9fU1VOOElfQTgzVF9NSVBJX0NTSTJfSF9fCisKKyNpbmNsdWRlIDxsaW51eC9w aHkvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcmVz ZXQuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldmljZS5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0 bDItZndub2RlLmg+CisKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfVkVSU0lPTl9SRUcJ CQkweDAKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ1RSTF9SRUcJCQkJMHg0CisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0NUUkxfSU5JVF9WQUxVRQkJCTB4YjhjMzliZWMKKyNk ZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ1RSTF9SRVNFVF9OCQkJQklUKDMxKQorI2RlZmlu ZSBTVU44SV9BODNUX01JUElfQ1NJMl9SWF9QS1RfTlVNX1JFRwkJCTB4OAorI2RlZmluZSBTVU44 SV9BODNUX01JUElfQ1NJMl9SWF9QS1RfTlVNX0lOSVRfVkFMVUUJCTB4YjhkMjU3ZjgKKyNkZWZp bmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfUlNWRDBfUkVHCQkJCTB4YworCisjZGVmaW5lIFNVTjhJ X0E4M1RfTUlQSV9DU0kyX1JTVkQxX1JFRwkJCQkweDE4CisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQ SV9DU0kyX1JTVkQxX0hXX0xPQ0tfVkFMVUUJCTB4YjhjOGEzMGMKKyNkZWZpbmUgU1VOOElfQTgz VF9NSVBJX0NTSTJfUlNWRDJfUkVHCQkJCTB4MWMKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NT STJfUlNWRDJfSFdfTE9DS19WQUxVRQkJMHhiOGRmOGFkNworI2RlZmluZSBTVU44SV9BODNUX01J UElfQ1NJMl9JTlRfU1RBMF9SRUcJCQkweDIwCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0ky X0lOVF9TVEEwX0VDQ19FUlJfREJMCQlCSVQoMjgpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9D U0kyX0lOVF9TVEEwX0xJTkVfQ0tTTV9FUlJfVkMzCQlCSVQoMjcpCisjZGVmaW5lIFNVTjhJX0E4 M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0xJTkVfQ0tTTV9FUlJfVkMyCQlCSVQoMjYpCisjZGVmaW5l IFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0xJTkVfQ0tTTV9FUlJfVkMxCQlCSVQoMjUp CisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0xJTkVfQ0tTTV9FUlJfVkMw CQlCSVQoMjQpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0xJTkVfU0VR X0VSUl9EVDMJCUJJVCgyMykKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTBf TElORV9TRVFfRVJSX0RUMgkJQklUKDIyKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9J TlRfU1RBMF9MSU5FX1NFUV9FUlJfRFQxCQlCSVQoMjEpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQ SV9DU0kyX0lOVF9TVEEwX0xJTkVfU0VRX0VSUl9EVDAJCUJJVCgyMCkKKyNkZWZpbmUgU1VOOElf QTgzVF9NSVBJX0NTSTJfSU5UX1NUQTBfTFNfTEVfRVJSX0RUMwkJQklUKDE5KQorI2RlZmluZSBT VU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9MU19MRV9FUlJfRFQyCQlCSVQoMTgpCisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0xTX0xFX0VSUl9EVDEJCUJJVCgxNykK KyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTBfTFNfTEVfRVJSX0RUMAkJQklU KDE2KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9DUkNfRVJSX1ZDMwkJ QklUKDE1KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9DUkNfRVJSX1ZD MgkJQklUKDE0KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9DUkNfRVJS X1ZDMQkJQklUKDEzKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9DUkNf RVJSX1ZDMAkJQklUKDEyKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9G Uk1fU0VRX0VSUl9WQzMJCUJJVCgxMSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5U X1NUQTBfRlJNX1NFUV9FUlJfVkMyCQlCSVQoMTApCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9D U0kyX0lOVF9TVEEwX0ZSTV9TRVFfRVJSX1ZDMQkJQklUKDkpCisjZGVmaW5lIFNVTjhJX0E4M1Rf TUlQSV9DU0kyX0lOVF9TVEEwX0ZSTV9TRVFfRVJSX1ZDMAkJQklUKDgpCisjZGVmaW5lIFNVTjhJ X0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0ZTX0ZFX0VSUl9WQzMJCUJJVCg3KQorI2RlZmluZSBT VU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9GU19GRV9FUlJfVkMyCQlCSVQoNikKKyNkZWZp bmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTBfRlNfRkVfRVJSX1ZDMQkJQklUKDUpCisj ZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX0ZTX0ZFX0VSUl9WQzAJCUJJVCg0 KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9TT1RfU1lOQ19FUlJfMwkJ QklUKDMpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEEwX1NPVF9TWU5DX0VS Ul8yCQlCSVQoMikKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTBfU09UX1NZ TkNfRVJSXzEJCUJJVCgxKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMF9T T1RfU1lOQ19FUlJfMAkJQklUKDApCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9T VEExX1JFRwkJCTB4MjQKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfTElO RV9TRVFfRVJSX0RUNwkJQklUKDIzKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRf U1RBMV9MSU5FX1NFUV9FUlJfRFQ2CQlCSVQoMjIpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9D U0kyX0lOVF9TVEExX0xJTkVfU0VRX0VSUl9EVDUJCUJJVCgyMSkKKyNkZWZpbmUgU1VOOElfQTgz VF9NSVBJX0NTSTJfSU5UX1NUQTFfTElORV9TRVFfRVJSX0RUNAkJQklUKDIwKQorI2RlZmluZSBT VU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMV9MU19MRV9FUlJfRFQ3CQlCSVQoMTkpCisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEExX0xTX0xFX0VSUl9EVDYJCUJJVCgxOCkK KyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfTFNfTEVfRVJSX0RUNQkJQklU KDE3KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMV9MU19MRV9FUlJfRFQ0 CQlCSVQoMTYpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEExX0RUX0VSUl9W QzMJCUJJVCgxNSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfRFRfRVJS X1ZDMgkJQklUKDE0KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfU1RBMV9EVF9F UlJfVkMxCQlCSVQoMTMpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9TVEExX0RU X0VSUl9WQzAJCUJJVCgxMikKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFf RUNDX0VSUjFfVkMzCQlCSVQoMTEpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9T VEExX0VDQ19FUlIxX1ZDMgkJQklUKDEwKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9J TlRfU1RBMV9FQ0NfRVJSMV9WQzEJCUJJVCg5KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJ Ml9JTlRfU1RBMV9FQ0NfRVJSMV9WQzAJCUJJVCg4KQorI2RlZmluZSBTVU44SV9BODNUX01JUElf Q1NJMl9JTlRfU1RBMV9TT1RfRVJSXzMJCQlCSVQoNykKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJ X0NTSTJfSU5UX1NUQTFfU09UX0VSUl8yCQkJQklUKDYpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQ SV9DU0kyX0lOVF9TVEExX1NPVF9FUlJfMQkJCUJJVCg1KQorI2RlZmluZSBTVU44SV9BODNUX01J UElfQ1NJMl9JTlRfU1RBMV9TT1RfRVJSXzAJCQlCSVQoNCkKKyNkZWZpbmUgU1VOOElfQTgzVF9N SVBJX0NTSTJfSU5UX1NUQTFfRVNDX0VOVFJZX0VSUl8zCQlCSVQoMykKKyNkZWZpbmUgU1VOOElf QTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfRVNDX0VOVFJZX0VSUl8yCQlCSVQoMikKKyNkZWZpbmUg U1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfRVNDX0VOVFJZX0VSUl8xCQlCSVQoMSkKKyNk ZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX1NUQTFfRVNDX0VOVFJZX0VSUl8wCQlCSVQo MCkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfUkVHCQkJMHgyOAorI2Rl ZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9FQ0NfRVJSX0RCTAkJQklUKDI4KQor I2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9DS1NNX0VSUl9WQzMJCUJJVCgy NykKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfQ0tTTV9FUlJfVkMyCQlC SVQoMjYpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0NLU01fRVJSX1ZD MQkJQklUKDI1KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9DS1NNX0VS Ul9WQzAJCUJJVCgyNCkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfTElO RV9TRVFfRVJSX0RUMwkJQklUKDIzKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRf TVNLMF9MSU5FX1NFUV9FUlJfRFQyCQlCSVQoMjIpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9D U0kyX0lOVF9NU0swX0xJTkVfU0VRX0VSUl9EVDEJCUJJVCgyMSkKKyNkZWZpbmUgU1VOOElfQTgz VF9NSVBJX0NTSTJfSU5UX01TSzBfTElORV9TRVFfRVJSX0RUMAkJQklUKDIwKQorI2RlZmluZSBT VU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9MU19MRV9FUlJfRFQzCQlCSVQoMTkpCisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0xTX0xFX0VSUl9EVDIJCUJJVCgxOCkK KyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfTFNfTEVfRVJSX0RUMQkJQklU KDE3KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9MU19MRV9FUlJfRFQw CQlCSVQoMTYpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0NSQ19FUlJf VkMzCQlCSVQoMTUpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0NSQ19F UlJfVkMyCQlCSVQoMTQpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0NS Q19FUlJfVkMxCQlCSVQoMTMpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sw X0NSQ19FUlJfVkMwCQlCSVQoMTIpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9N U0swX0ZSTV9TRVFfRVJSX1ZDMwkJQklUKDExKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJ Ml9JTlRfTVNLMF9GUk1fU0VRX0VSUl9WQzIJCUJJVCgxMCkKKyNkZWZpbmUgU1VOOElfQTgzVF9N SVBJX0NTSTJfSU5UX01TSzBfRlJNX1NFUV9FUlJfVkMxCQlCSVQoOSkKKyNkZWZpbmUgU1VOOElf QTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfRlJNX1NFUV9FUlJfVkMwCQlCSVQoOCkKKyNkZWZpbmUg U1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfRlNfRkVfRVJSX1ZDMwkJQklUKDcpCisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX0ZTX0ZFX0VSUl9WQzIJCUJJVCg2KQor I2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9GU19GRV9FUlJfVkMxCQlCSVQo NSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfRlNfRkVfRVJSX1ZDMAkJ QklUKDQpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0swX1NPVF9TWU5DX0VS Ul8zCQlCSVQoMykKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzBfU09UX1NZ TkNfRVJSXzIJCUJJVCgyKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMF9T T1RfU1lOQ19FUlJfMQkJQklUKDEpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9N U0swX1NPVF9TWU5DX0VSUl8wCQlCSVQoMCkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJf SU5UX01TSzFfUkVHCQkJMHgyYworI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9JTlRfTVNL MV9EVF9FUlJfVkMzCQlCSVQoMTUpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9N U0sxX0RUX0VSUl9WQzIJCUJJVCgxNCkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfSU5U X01TSzFfRFRfRVJSX1ZDMQkJQklUKDEzKQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9J TlRfTVNLMV9EVF9FUlJfVkMwCQlCSVQoMTIpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0ky X0lOVF9NU0sxX0VDQ19FUlIxX1ZDMwkJQklUKDExKQorI2RlZmluZSBTVU44SV9BODNUX01JUElf Q1NJMl9JTlRfTVNLMV9FQ0NfRVJSMV9WQzIJCUJJVCgxMCkKKyNkZWZpbmUgU1VOOElfQTgzVF9N SVBJX0NTSTJfSU5UX01TSzFfRUNDX0VSUjFfVkMxCQlCSVQoOSkKKyNkZWZpbmUgU1VOOElfQTgz VF9NSVBJX0NTSTJfSU5UX01TSzFfRUNDX0VSUjFfVkMwCQlCSVQoOCkKKyNkZWZpbmUgU1VOOElf QTgzVF9NSVBJX0NTSTJfSU5UX01TSzFfU09UX0VSUl8zCQkJQklUKDcpCisjZGVmaW5lIFNVTjhJ X0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sxX1NPVF9FUlJfMgkJCUJJVCg2KQorI2RlZmluZSBTVU44 SV9BODNUX01JUElfQ1NJMl9JTlRfTVNLMV9TT1RfRVJSXzEJCQlCSVQoNSkKKyNkZWZpbmUgU1VO OElfQTgzVF9NSVBJX0NTSTJfSU5UX01TSzFfU09UX0VSUl8wCQkJQklUKDQpCisjZGVmaW5lIFNV TjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sxX0VTQ19FTlRSWV9FUlJfMwkJQklUKDMpCisjZGVm aW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sxX0VTQ19FTlRSWV9FUlJfMgkJQklUKDIp CisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sxX0VTQ19FTlRSWV9FUlJfMQkJ QklUKDEpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0lOVF9NU0sxX0VTQ19FTlRSWV9F UlJfMAkJQklUKDApCisKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX1JFRwkJCQkw eDEwMAorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfSU5JVF9WQUxVRQkJCTB4Yjhj NjRmMjQKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX1NZTkNfRU4JCQlCSVQoMzEp CisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0NGR19CWVBBU1NfRUNDX0VOCQkJQklUKDI5 KQorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfVU5QS1RfRU4JCQlCSVQoMjgpCisj ZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0NGR19OT05FX1VOUEtUX1JYX01PREUJCUJJVCgy NykKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX1lDX1NXQUIJCQlCSVQoMjYpCisj ZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX0NGR19OX0JZVEUJCQkJQklUKDI0KQorI2RlZmlu ZSBTVU44SV9BODNUX01JUElfQ1NJMl9DRkdfU1lOQ19ETFlfQ1lDTEUodikJCSgoKHYpIDw8IDE4 KSAmIFwKKwkJCQkJCQkJIEdFTk1BU0soMjIsIDE4KSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJ X0NTSTJfQ0ZHX05fQ0hBTk5FTCh2KQkJCSgoKCh2KSAtIDEpIDw8IDE2KSAmIFwKKwkJCQkJCQkJ IEdFTk1BU0soMTcsIDE2KSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfQ0ZHX05fTEFO RSh2KQkJCSgoKCh2KSAtIDEpIDw8IDQpICYgXAorCQkJCQkJCQkgR0VOTUFTSyg1LCA0KSkKKyNk ZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfVkNEVDBfUkVHCQkJCTB4MTA0CisjZGVmaW5lIFNV TjhJX0E4M1RfTUlQSV9DU0kyX1ZDRFQwX0NIX1ZDKGNoLCB2YykJCSgoKHZjKSAmIEdFTk1BU0so MSwgMCkpIDw8IFwKKwkJCQkJCQkJICgoY2gpICogOCArIDYpKQorI2RlZmluZSBTVU44SV9BODNU X01JUElfQ1NJMl9WQ0RUMF9DSF9EVChjaCwgdCkJCQkoKCh0KSAmIEdFTk1BU0soNSwgMCkpIDw8 IFwKKwkJCQkJCQkJICgoY2gpICogOCkpCisjZGVmaW5lIFNVTjhJX0E4M1RfTUlQSV9DU0kyX1ZD RFQxX1JFRwkJCQkweDEwOAorI2RlZmluZSBTVU44SV9BODNUX01JUElfQ1NJMl9WQ0RUMV9DSF9W QyhjaCwgdmMpCQkoKCh2YykgJiBHRU5NQVNLKDEsIDApKSA8PCBcCisJCQkJCQkJCSAoKChjaCkg LSA0KSAqIDggKyA2KSkKKyNkZWZpbmUgU1VOOElfQTgzVF9NSVBJX0NTSTJfVkNEVDFfQ0hfRFQo Y2gsIHQpCQkJKCgodCkgJiBHRU5NQVNLKDUsIDApKSA8PCBcCisJCQkJCQkJCSAoKChjaCkgLSA0 KSAqIDgpKQorCitlbnVtIG1pcGlfY3NpMl9kYXRhX3R5cGUgeworCU1JUElfQ1NJMl9EQVRBX1RZ UEVfUkFXOAk9IDB4MmEsCisJTUlQSV9DU0kyX0RBVEFfVFlQRV9SQVcxMAk9IDB4MmIsCisJTUlQ SV9DU0kyX0RBVEFfVFlQRV9SQVcxMgk9IDB4MmMsCit9OworCitzdHJ1Y3Qgc3VuOGlfYTgzdF9t aXBpX2NzaTJfdmlkZW8geworCXN0cnVjdCB2NGwyX2Z3bm9kZV9lbmRwb2ludCBlbmRwb2ludDsK KwlzdHJ1Y3QgdjRsMl9zdWJkZXYgc3ViZGV2OworCXN0cnVjdCBtZWRpYV9wYWQgcGFkc1syXTsK KworCXN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldiBzdWJkZXZfYXN5bmM7CisJc3RydWN0IHY0bDJf YXN5bmNfbm90aWZpZXIgbm90aWZpZXI7CisKKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnJlbW90ZV9z dWJkZXY7CisKKwlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10IG1idXNfZm9ybWF0OworfTsKKwor c3RydWN0IHN1bjhpX2E4M3RfbWlwaV9jc2kyX2RldiB7CisJc3RydWN0IGRldmljZSAqZGV2Owor CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCBjbGsgKmNsa19idXM7CisJc3RydWN0 IGNsayAqY2xrX21vZDsKKwlzdHJ1Y3QgY2xrICpjbGtfbWlwaTsKKwlzdHJ1Y3QgY2xrICpjbGtf bWlzYzsKKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7CisJc3RydWN0IHBoeSAqZHBoeTsK KwlzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRzX21pcGlfZHBoeSBkcGh5X2NvbmZpZzsKKworCXN0 cnVjdCBzdW44aV9hODN0X21pcGlfY3NpMl92aWRlbyB2aWRlbzsKK307CisKKyNkZWZpbmUgc3Vu OGlfYTgzdF9taXBpX2NzaTJfc3ViZGV2X3ZpZGVvKHMpIFwKKwljb250YWluZXJfb2Yocywgc3Ry dWN0IHN1bjhpX2E4M3RfbWlwaV9jc2kyX3ZpZGVvLCBzdWJkZXYpCisKKyNkZWZpbmUgc3VuOGlf YTgzdF9taXBpX2NzaTJfdmlkZW9fZGV2KHYpIFwKKwljb250YWluZXJfb2Yodiwgc3RydWN0IHN1 bjhpX2E4M3RfbWlwaV9jc2kyX2RldiwgdmlkZW8pCisKKyNlbmRpZiAvKiBfX1NVTjhJX0E4M1Rf TUlQSV9DU0kyX0hfXyAqLwotLSAKMi4yOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=