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.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, 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 57118C4338F for ; Mon, 9 Aug 2021 14:58:30 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EC2ED61019 for ; Mon, 9 Aug 2021 14:58:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org EC2ED61019 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=F5fM6KYH5hoWLy706FQ5QMC/K5Nw9UAmqkDBNhlrrQE=; b=x87QrNsvJ7hCOj Ki+UsXlq79rdGr1cojLP8+D3GKTc0bDg8wB/x9TzZOPeZsDsLh3eBcGfarqz/TjdZ9wEt8qpc940G AVFDlsIzozEMkxbiPVeFVTCiMzjJhBDhEsKq1nes1q7/TdBf2QMpwcJa05DhgOUtH7dGmqwXQpV3e UFMjklkrRfYeVEzBIsaam9Qq0vUpZuWZSP5teOUDrdDuDR5EFaKg4bYZ2jMZdcmLu8SbO1sQ8o9p5 PRr/lUZaWP5NvXlKRBAp9n+UlTRNRFTmqdGXS94uTLLxREqLqaO3TKycQhcts7BfRVNOP8kIjkO2o xvXqwB+W0nQYRx4FDkrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mD6hp-000zuK-Hb; Mon, 09 Aug 2021 14:56:46 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mD6g4-000zGe-10 for linux-arm-kernel@lists.infradead.org; Mon, 09 Aug 2021 14:55:03 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 57EA961076; Mon, 9 Aug 2021 14:54:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628520895; bh=szMnaAOhtu1ZBuY6H4Ij6oKSmkUXznGtivptAZUft9M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=O9ucIYSETmoLDB9fPYwHENbI1/LDhM7F5yT0Fg1uffGinTYYTadncVmHoYvTQtNR1 Uj7MILiGeWsTX+iwvI1Fij3p8yurbZ6TL7An+MScvufRd9fgZhNtKxIDXyEkJMmphr LlBDZior7A9jg6E3or0V8b4GMn6rey6BEZw1z64OKOe3eK7FN2Cby2PWniCqs7JjUX v4McpFSoGJ4zERGl5MjKFGI1fmlAv0bbaRYocHB1ogvDYqnJ5mY0ZDw/6KKbqEWqYm Vt7xlaP1zX1Ja21ThdmJNS9oBgrtH8A147P5IRjIo+nrLKZW1cQym8KH1B793tXt/G rLvyniV7Ut4DQ== Received: by pali.im (Postfix) id 812DD286C; Mon, 9 Aug 2021 16:54:53 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Michael Turquette , Stephen Boyd , Rob Herring , Greg Kroah-Hartman Cc: Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Vladimir Vid , =?UTF-8?q?Marek=20Beh=C3=BAn?= , linux-clk@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 2/6] serial: mvebu-uart: implement UART clock driver for configuring UART base clock Date: Mon, 9 Aug 2021 16:53:25 +0200 Message-Id: <20210809145329.24177-3-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210809145329.24177-1-pali@kernel.org> References: <20210624224909.6350-1-pali@kernel.org> <20210809145329.24177-1-pali@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210809_075456_208397_393DF200 X-CRM114-Status: GOOD ( 33.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGRldmljZSBkcml2ZXIgZm9yIGNvbnRyb2xsaW5n IFVBUlQgY2xvY2tzIG9uCk1hcnZlbGwgQXJtYWRhIDM3MDAgU29DLiBUaGlzIGRldmljZSBkcml2 ZXIgaXMgbG9hZGVkIGZvciBkZXZpY2VzIHdoaWNoCm1hdGNoIGNvbXBhdGlibGUgc3RyaW5nICJt YXJ2ZWxsLGFybWFkYS0zNzAwLXVhcnQtY2xvY2siLgoKVGhlcmUgYXJlIG1vcmUgcGl0ZmFsbHMg cmVsYXRlZCB0byBVQVJUIGNsb2Nrcy4gQm90aCBVQVJUcyB1c2Ugc2FtZSBiYXNlCmNsb2NrIHNv dXJjZS4gQWxzbyBkaXZpc29ycyBmb3IgVEJHIGJhc2UgY2xvY2sgYXJlIHNoYXJlZCBiZXR3ZWVu IGJvdGgKVUFSVHMgYW5kIGFyZSBjb25maWd1cmVkIG9ubHkgZnJvbSBVQVJUMSBhZGRyZXNzIHNw YWNlLiBDbG9ja3MgY2FuIGJlCmVuYWJsZWQgLyBkaXNhYmxlZCBzZXBhcmF0ZWx5IGZvciBVQVJU MSBhbmQgVUFSVDIsIGJ1dCB0aGV5IGFyZSBjb250cm9sbGVkCm9ubHkgZnJvbSBVQVJUMSBhZGRy ZXNzIHNwYWNlLiBNb3Jlb3ZlciBNYXJ2ZWxsIEFybWFkYSAzNzAwIEZ1bmN0aW9uYWwKU3BlY2lm aWNhdGlvbnMgaGFzIHN3YXBwZWQgYml0cyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIFVBUlQxIGFu ZCBVQVJUMgpjbG9ja3MuCgpTbyBkcml2ZXIgZm9yIGNvbnRyb2xsaW5nIFVBUlQyIG5lZWRzIHRv IGhhdmUgYWNjZXNzIHRvIFVBUlQxIGFkZHJlc3Mgc3BhY2UKYXMgVUFSVDEgYWRkcmVzcyBzcGFj ZSBjb250YWlucyBzb21lIGJpdHMgZXhjbHVzaXZlbHkgdXNlZCBieSBVQVJUMiBhbmQKYWxzbyBi aXRzIHdoaWNoIGFyZSBzaGFyZWQgZm9yIGJvdGggVUFSVDEgYW5kIFVBUlQyLgoKRm9yIGNoYW5n aW5nIFVBUlQgYmFzZSBjbG9jayAod2hpY2ggY29udHJvbHMgYm90aCBVQVJUcykgZHVyaW5nIGJv b3Qgd2hlbgpVQVJUIGRyaXZlciBpcyBub3QgcmVhZHkgYW5kIG9ubHkgZWFybHkgY29uc29sZSBp cyBhY3RpdmUsIGlzIG5vdCBzaW1wbGUKb3BlcmF0aW9uIGFzIGl0IGlzIHJlcXVpcmVkIHRvIGFs c28gcmVjYWxjdWxhdGUgZGl2aXNvcnMgdG8gbm90IGNoYW5nZSBVQVJUCmJhdWRyYXRlIHVzZWQg YnkgZWFybHkgY29uc29sZS4gU28gZm9yIHRoaXMgb3BlcmF0aW9uIFVBUlQxIGNsb2NrIGRyaXZl cgpuZWVkcyB0byBhY2Nlc3MgYWxzbyBpbnRvIGFkZHJlc3Mgc3BhY2Ugb2YgVUFSVDIgd2hlcmUg YXJlIHJlZ2lzdGVycyBmb3IKVUFSVDIgZGl2aXNvcnMuCgpGb3IgdGhlc2UgcmVhc29ucywgdGhp cyBuZXcgZGV2aWNlIGRyaXZlciBmb3IgVUFSVCBjbG9ja3MgZG9lcyBub3QgdXNlCmlvcmVtYXBf cmVzb3VyY2UoKSwgYnV0IG9ubHkgaW9yZW1hcCgpIHRvIHByZXZlbnQgcmVzb3VyY2UgY29uZmxp Y3RzCmJldHdlZW4gVUFSVCBjbG9jayBkcml2ZXIgYW5kIFVBUlQgZHJpdmVyLgoKU2hhcmVkIGJl dHdlZW4gZHJpdmVycyBhcmUgb25seSB0d28gNC1ieXRlcyByZWdpc3RlcnM6IFVBUlQgQ2xvY2sg Q29udHJvbAphbmQgVUFSVCAyIEJhdWQgUmF0ZSBEaXZpc29yLiBBY2Nlc3MgdG8gdGhlc2UgdHdv IHJlZ2lzdGVycyBhcmUgcHJvdGVjdGVkCmJ5IG9uZSBzcGlubG9jayB0byBwcmV2ZW50IGFueSBj b25mbGljdHMuIEFjY2VzcyBpcyByZXF1aXJlZCBvbmx5IGR1cmluZwpwcm9iZSB0aW1lLCBjaGFu Z2luZyBiYXVkcmF0ZSBhbmQgZHVyaW5nIHN1c3BlbmQvcmVzdW1lLgoKSGFyZHdhcmUgY2FuIGJl IGNvbmZpZ3VyZWQgdG8gdXNlIG9uZSBvZiBmb2xsb3dpbmcgY2xvY2tzIGFzIFVBUlQgYmFzZQpj bG9jazogVEJHLUEtUCwgVEJHLUItUCwgVEJHLUEtUywgVEJHLUItUywgeHRhbC4gTm90IGV2ZXJ5 IGNsb2NrIGlzIHVzYWJsZQpmb3IgaGlnaGVyIGJ1YWRyYXRlcy4gSW4gRFQgbm9kZSBjYW4gYmUg c3BlY2lmaWVkIGFueSBzdWJzZXQgYW5kIGtlcm5lbApjaG9vc2UgdGhlIGJlc3Qgb25lLCB3aGlj aCBzdGlsbCBzdXBwb3J0cyByZXF1aXJlZCBiYXVkcmF0ZSA5NjAwLiBGb3IKc21vb3RoIGJvb3Qg bG9nIG91dHB1dCBpdCBpcyBuZWVkZWQgdG8gc3BlY2lmeSBjbG9jayB1c2VkIGJ5IGVhcmx5IGNv bnNvbGUKb3RoZXJ3aXNlIGdhcmJhZ2Ugd291bGQgYmUgcHV0IG9uIFVBUlQgZHVyaW5nIHByb2Jp bmcgZm9yIFVBUlQgY2xvY2sgZHJpdmVyCmFuZCB0cmFuc2l0aW9uaW5nIGZyb20gZWFybHkgY29u c29sZSB0byBub3JtYWwgY29uc29sZS4KClRoaXMgY2hhbmdlIGlzIHJlcXVpcmVkIHRvIGVuYWJs ZSBhbmQgY29uZmlndXJlIFRCRyBjbG9jayBhcyBhIGJhc2UgY2xvY2sKZm9yIFVBUlQuIFRCRyBj bG9jayBpcyByZXF1aXJlZCB0byBhY2hpZXZlIGhpZ2hlciBiYXVkcmF0ZXMgdGhhbiAyMzA0MDAu CgpTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwub3JnPgotLS0KIGRyaXZl cnMvdHR5L3NlcmlhbC9LY29uZmlnICAgICAgfCAgIDEgKwogZHJpdmVycy90dHkvc2VyaWFsL212 ZWJ1LXVhcnQuYyB8IDUxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMiBmaWxl cyBjaGFuZ2VkLCA1MTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL3R0eS9zZXJpYWwvS2NvbmZpZyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9LY29uZmln CmluZGV4IDBjNGNkNGEzNDhmNC4uYjM3MjY3OTdhMGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0 eS9zZXJpYWwvS2NvbmZpZworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvS2NvbmZpZwpAQCAtMTQ0 MSw2ICsxNDQxLDcgQEAgY29uZmlnIFNFUklBTF9TVE0zMl9DT05TT0xFCiBjb25maWcgU0VSSUFM X01WRUJVX1VBUlQKIAlib29sICJNYXJ2ZWxsIEVCVSBzZXJpYWwgcG9ydCBzdXBwb3J0IgogCWRl cGVuZHMgb24gQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRzIG9uIENPTU1PTl9D TEsKIAlzZWxlY3QgU0VSSUFMX0NPUkUKIAloZWxwCiAJICBUaGlzIGRyaXZlciBpcyBmb3IgTWFy dmVsbCBFQlUgU29DJ3MgVUFSVC4gSWYgeW91IGhhdmUgYSBtYWNoaW5lCmRpZmYgLS1naXQgYS9k cml2ZXJzL3R0eS9zZXJpYWwvbXZlYnUtdWFydC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL212ZWJ1 LXVhcnQuYwppbmRleCA0MTRlOTIwNjRhYzYuLmEzMTIzNWFkZDk5ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy90dHkvc2VyaWFsL212ZWJ1LXVhcnQuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXZl YnUtdWFydC5jCkBAIC04LDEyICs4LDE0IEBACiAqLwogCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+ CisjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8bGludXgvY29uc29s ZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+ CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2lvLmg+CiAjaW5jbHVk ZSA8bGludXgvaW9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvbWF0aDY0Lmg+CiAjaW5jbHVkZSA8 bGludXgvb2YuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CiAjaW5jbHVkZSA8bGlu dXgvb2ZfZGV2aWNlLmg+CkBAIC02OCw4ICs3MCwzMSBAQAogI2RlZmluZSAgU1RBVF9CUktfRVJS CQkoU1RBVF9CUktfREVUIHwgU1RBVF9GUk1fRVJSIFwKIAkJCQkgfCBTVEFUX1BBUl9FUlIgfCBT VEFUX09WUl9FUlIpCiAKKy8qCisgKiBNYXJ2ZWxsIEFybWFkYSAzNzAwIEZ1bmN0aW9uYWwgU3Bl Y2lmaWNhdGlvbnMgZGVzY3JpYmVzIHRoYXQgYml0IDIxIG9mIFVBUlQKKyAqIENsb2NrIENvbnRy b2wgcmVnaXN0ZXIgY29udHJvbHMgVUFSVDEgYW5kIGJpdCAyMCBjb250cm9scyBVQVJUMi4gQnV0 IGluCisgKiByZWFsaXR5IGJpdCAyMSBjb250cm9scyBVQVJUMiBhbmQgYml0IDIwIGNvbnRyb2xz IFVBUlQxLiBUaGlzIHNlZW1zIHRvIGJlIGEKKyAqIGJ1ZyBpbiBNYXJ2ZWxsIGRvY3VtZW50YXRp b24uIEhlbmNlIGZvbGxvd2luZyBDTEtfRElTIG1hY3JvcyBhcmUgc3dhcHBlZC4KKyAqLworCiAj ZGVmaW5lIFVBUlRfQlJEVgkJMHgxMAorLyogVGhlc2UgYml0cyBhcmUgbG9jYXRlZCBpbiBVQVJU MSBhZGRyZXNzIHNwYWNlIGFuZCBjb250cm9sIFVBUlQyICovCisjZGVmaW5lICBVQVJUMl9DTEtf RElTCQlCSVQoMjEpCisvKiBUaGVzZSBiaXRzIGFyZSBsb2NhdGVkIGluIFVBUlQxIGFkZHJlc3Mg c3BhY2UgYW5kIGNvbnRyb2wgVUFSVDEgKi8KKyNkZWZpbmUgIFVBUlQxX0NMS19ESVMJCUJJVCgy MCkKKy8qIFRoZXNlIGJpdHMgYXJlIGxvY2F0ZWQgaW4gVUFSVDEgYWRkcmVzcyBzcGFjZSBhbmQg Y29udHJvbCBib3RoIFVBUlRzICovCisjZGVmaW5lICBDTEtfTk9fWFRBTAkJQklUKDE5KQorI2Rl ZmluZSAgQ0xLX1RCR19ESVYxX1NISUZUCTE1CisjZGVmaW5lICBDTEtfVEJHX0RJVjFfTUFTSwkw eDcKKyNkZWZpbmUgIENMS19UQkdfRElWMV9NQVgJNgorI2RlZmluZSAgQ0xLX1RCR19ESVYyX1NI SUZUCTEyCisjZGVmaW5lICBDTEtfVEJHX0RJVjJfTUFTSwkweDcKKyNkZWZpbmUgIENMS19UQkdf RElWMl9NQVgJNgorI2RlZmluZSAgQ0xLX1RCR19TRUxfU0hJRlQJMTAKKyNkZWZpbmUgIENMS19U QkdfU0VMX01BU0sJMHgzCisvKiBUaGVzZSBiaXRzIGFyZSBsb2NhdGVkIGluIGJvdGggVUFSVHMg YWRkcmVzcyBzcGFjZSAqLwogI2RlZmluZSAgQlJEVl9CQVVEX01BU0sgICAgICAgICAweDNGRgor I2RlZmluZSAgQlJEVl9CQVVEX01BWAkJQlJEVl9CQVVEX01BU0sKIAogI2RlZmluZSBVQVJUX09T QU1QCQkweDE0CiAjZGVmaW5lICBPU0FNUF9ERUZBVUxUX0RJVklTT1IJMTYKQEAgLTE1Myw2ICsx NzgsOCBAQCBzdGF0aWMgc3RydWN0IG12ZWJ1X3VhcnQgKnRvX212dWFydChzdHJ1Y3QgdWFydF9w b3J0ICpwb3J0KQogCiBzdGF0aWMgc3RydWN0IHVhcnRfcG9ydCBtdmVidV91YXJ0X3BvcnRzW01W RUJVX05SX1VBUlRTXTsKIAorc3RhdGljIERFRklORV9TUElOTE9DSyhtdmVidV91YXJ0X2xvY2sp OworCiAvKiBDb3JlIFVBUlQgRHJpdmVyIE9wZXJhdGlvbnMgKi8KIHN0YXRpYyB1bnNpZ25lZCBp bnQgbXZlYnVfdWFydF90eF9lbXB0eShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewpAQCAtNDQ1 LDYgKzQ3Miw3IEBAIHN0YXRpYyB2b2lkIG12ZWJ1X3VhcnRfc2h1dGRvd24oc3RydWN0IHVhcnRf cG9ydCAqcG9ydCkKIHN0YXRpYyBpbnQgbXZlYnVfdWFydF9iYXVkX3JhdGVfc2V0KHN0cnVjdCB1 YXJ0X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBiYXVkKQogewogCXVuc2lnbmVkIGludCBkX2Rp dmlzb3IsIG1fZGl2aXNvcjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXUzMiBicmR2LCBvc2Ft cDsKIAogCWlmICghcG9ydC0+dWFydGNsaykKQEAgLTQ2MywxMCArNDkxLDEyIEBAIHN0YXRpYyBp bnQgbXZlYnVfdWFydF9iYXVkX3JhdGVfc2V0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHVuc2ln bmVkIGludCBiYXVkKQogCW1fZGl2aXNvciA9IE9TQU1QX0RFRkFVTFRfRElWSVNPUjsKIAlkX2Rp dmlzb3IgPSBESVZfUk9VTkRfQ0xPU0VTVChwb3J0LT51YXJ0Y2xrLCBiYXVkICogbV9kaXZpc29y KTsKIAorCXNwaW5fbG9ja19pcnFzYXZlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdzKTsKIAlicmR2 ID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfQlJEVik7CiAJYnJkdiAmPSB+QlJEVl9CQVVE X01BU0s7CiAJYnJkdiB8PSBkX2Rpdmlzb3I7CiAJd3JpdGVsKGJyZHYsIHBvcnQtPm1lbWJhc2Ug KyBVQVJUX0JSRFYpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm12ZWJ1X3VhcnRfbG9jaywg ZmxhZ3MpOwogCiAJb3NhbXAgPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9PU0FNUCk7CiAJ b3NhbXAgJj0gfk9TQU1QX0RJVklTT1JTX01BU0s7CkBAIC03NjIsNiArNzkyLDcgQEAgc3RhdGlj IGludCBtdmVidV91YXJ0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBt dmVidV91YXJ0ICptdnVhcnQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlzdHJ1Y3QgdWFydF9w b3J0ICpwb3J0ID0gbXZ1YXJ0LT5wb3J0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAl1YXJ0 X3N1c3BlbmRfcG9ydCgmbXZlYnVfdWFydF9kcml2ZXIsIHBvcnQpOwogCkBAIC03NzAsNyArODAx LDkgQEAgc3RhdGljIGludCBtdmVidV91YXJ0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQog CW12dWFydC0+cG1fcmVncy5jdHJsID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfQ1RSTChw b3J0KSk7CiAJbXZ1YXJ0LT5wbV9yZWdzLmludHIgPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFS VF9JTlRSKHBvcnQpKTsKIAltdnVhcnQtPnBtX3JlZ3Muc3RhdCA9IHJlYWRsKHBvcnQtPm1lbWJh c2UgKyBVQVJUX1NUQVQpOworCXNwaW5fbG9ja19pcnFzYXZlKCZtdmVidV91YXJ0X2xvY2ssIGZs YWdzKTsKIAltdnVhcnQtPnBtX3JlZ3MuYnJkdiA9IHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJU X0JSRFYpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm12ZWJ1X3VhcnRfbG9jaywgZmxhZ3Mp OwogCW12dWFydC0+cG1fcmVncy5vc2FtcCA9IHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJUX09T QU1QKTsKIAogCWRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShkZXYsIHRydWUpOwpAQCAtNzgyLDEz ICs4MTUsMTYgQEAgc3RhdGljIGludCBtdmVidV91YXJ0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCiB7CiAJc3RydWN0IG12ZWJ1X3VhcnQgKm12dWFydCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OwogCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSBtdnVhcnQtPnBvcnQ7CisJdW5zaWduZWQgbG9u ZyBmbGFnczsKIAogCXdyaXRlbChtdnVhcnQtPnBtX3JlZ3MucmJyLCBwb3J0LT5tZW1iYXNlICsg VUFSVF9SQlIocG9ydCkpOwogCXdyaXRlbChtdnVhcnQtPnBtX3JlZ3MudHNoLCBwb3J0LT5tZW1i YXNlICsgVUFSVF9UU0gocG9ydCkpOwogCXdyaXRlbChtdnVhcnQtPnBtX3JlZ3MuY3RybCwgcG9y dC0+bWVtYmFzZSArIFVBUlRfQ1RSTChwb3J0KSk7CiAJd3JpdGVsKG12dWFydC0+cG1fcmVncy5p bnRyLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9JTlRSKHBvcnQpKTsKIAl3cml0ZWwobXZ1YXJ0LT5w bV9yZWdzLnN0YXQsIHBvcnQtPm1lbWJhc2UgKyBVQVJUX1NUQVQpOworCXNwaW5fbG9ja19pcnFz YXZlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdzKTsKIAl3cml0ZWwobXZ1YXJ0LT5wbV9yZWdzLmJy ZHYsIHBvcnQtPm1lbWJhc2UgKyBVQVJUX0JSRFYpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo Jm12ZWJ1X3VhcnRfbG9jaywgZmxhZ3MpOwogCXdyaXRlbChtdnVhcnQtPnBtX3JlZ3Mub3NhbXAs IHBvcnQtPm1lbWJhc2UgKyBVQVJUX09TQU1QKTsKIAogCXVhcnRfcmVzdW1lX3BvcnQoJm12ZWJ1 X3VhcnRfZHJpdmVyLCBwb3J0KTsKQEAgLTk3NSw2ICsxMDExLDQ3NiBAQCBzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdmVidV91YXJ0X3BsYXRmb3JtX2RyaXZlciA9IHsKIAl9LAogfTsK IAorLyogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGNsay1maXhlZC1mYWN0b3IuYyBkcml2ZXIgYW5k IG1vZGlmaWVkLiAqLworCitzdHJ1Y3QgbXZlYnVfdWFydF9jbG9jayB7CisJc3RydWN0IGNsa19o dyBjbGtfaHc7CisJaW50IGNsb2NrX2lkeDsKKwl1MzIgcG1fY29udGV4dF9yZWcxOworCXUzMiBw bV9jb250ZXh0X3JlZzI7Cit9OworCitzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlIHsKKwlz dHJ1Y3QgbXZlYnVfdWFydF9jbG9jayBjbG9ja3NbMl07CisJdW5zaWduZWQgaW50IHBhcmVudF9y YXRlc1s1XTsKKwlpbnQgcGFyZW50X2lkeDsKKwl1bnNpZ25lZCBpbnQgZGl2OworCXZvaWQgX19p b21lbSAqcmVnMTsKKwl2b2lkIF9faW9tZW0gKnJlZzI7CisJYm9vbCBjb25maWd1cmVkOworfTsK KworI2RlZmluZSBQQVJFTlRfQ0xPQ0tfWFRBTCA0CisKKyNkZWZpbmUgdG9fdWFydF9jbG9jayho dykgY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgbXZlYnVfdWFydF9jbG9jaywgY2xrX2h3KQorI2Rl ZmluZSB0b191YXJ0X2Nsb2NrX2Jhc2UodWFydF9jbG9jaykgY29udGFpbmVyX29mKHVhcnRfY2xv Y2ssIFwKKwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlLCBjbG9ja3NbdWFydF9jbG9jay0+ Y2xvY2tfaWR4XSkKKworc3RhdGljIGludCBtdmVidV91YXJ0X2Nsb2NrX3ByZXBhcmUoc3RydWN0 IGNsa19odyAqaHcpCit7CisJc3RydWN0IG12ZWJ1X3VhcnRfY2xvY2sgKnVhcnRfY2xvY2sgPSB0 b191YXJ0X2Nsb2NrKGh3KTsKKwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlICp1YXJ0X2Ns b2NrX2Jhc2UgPQorCQkJCQkJdG9fdWFydF9jbG9ja19iYXNlKHVhcnRfY2xvY2spOworCXVuc2ln bmVkIGludCBwcmV2X2Nsb2NrX2lkeCwgcHJldl9jbG9ja19yYXRlLCBwcmV2X2QxZDI7CisJdW5z aWduZWQgaW50IHBhcmVudF9jbG9ja19pZHgsIHBhcmVudF9jbG9ja19yYXRlOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IGQxLCBkMjsKKwl1NjQgZGl2aXNvcjsKKwl1MzIg dmFsOworCisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGp1c3QgcmVjb25maWd1cmVzIFVBUlQgQ2xv Y2sgQ29udHJvbCByZWdpc3RlciAobG9jYXRlZAorCSAqIGluIFVBUlQxIGFkZHJlc3Mgc3BhY2Ug d2hpY2ggY29udHJvbHMgYm90aCBVQVJUMSBhbmQgVUFSVDIpIHRvCisJICogc2VsZWN0ZWQgVUFS VCBiYXNlIGNsb2NrIGFuZCByZWNhbGN1bGF0ZSBjdXJyZW50IFVBUlQxL1VBUlQyIGRpdmlzb3Jz CisJICogaW4gdGhlaXIgYWRkcmVzcyBzcGFjZXMsIHNvIGZpbmFsIGJhdWRyYXRlIHdpbGwgbm90 IGJlIGNoYW5nZWQgYnkKKwkgKiBzd2l0Y2hpbmcgVUFSVCBiYXNlIGNsb2NrLiBUaGlzIGlzIHJl cXVpcmVkIG90aGVyd2lzZSBrZXJuZWwgYm9vdCBsb2cKKwkgKiBzdG9wcyB3b3JraW5nLiBJdCBp cyBuZWVkZWQgdG8gZW5zdXJlIHRoYXQgVUFSVCBiYXVkcmF0ZSBkb2VzIG5vdAorCSAqIGNoYW5n ZSBkdXJpbmcgdGhpcyBzZXR1cC4gSXQgaXMgb25lIHRpbWUgb3BlcmF0aW9uLCBzbyBiYXNlZCBv bgorCSAqICJjb25maWd1cmVkIiBtZW1iZXIgdGhpcyBmdW5jdGlvbiBpcyBza2lwcGVkIG9uIHNl Y29uZCBjYWxsLiBCZWNhdXNlCisJICogdGhpcyBVQVJUIENsb2NrIENvbnRyb2wgcmVnaXN0ZXIg KFVBUlRfQlJEVikgaXMgc2hhcmVkIGJldHdlZW4gVUFSVDEKKwkgKiBiYXVkcmF0ZSBmdW5jdGlv biwgVUFSVDEgY2xvY2sgc2VsZWN0b3IgYW5kIFVBUlQyIGNsb2NrIHNlbGVjdG9yLAorCSAqIGV2 ZXJ5IGFjY2VzcyB0byBVQVJUX0JSRFYgKHJlZzEpIG5lZWRzIHRvIGJlIHByb3RlY3RlZCBieSBs b2NrLgorCSAqLworCisJc3Bpbl9sb2NrX2lycXNhdmUoJm12ZWJ1X3VhcnRfbG9jaywgZmxhZ3Mp OworCisJaWYgKHVhcnRfY2xvY2tfYmFzZS0+Y29uZmlndXJlZCkgeworCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdzKTsKKwkJcmV0dXJuIDA7CisJfQorCisJ cGFyZW50X2Nsb2NrX2lkeCA9IHVhcnRfY2xvY2tfYmFzZS0+cGFyZW50X2lkeDsKKwlwYXJlbnRf Y2xvY2tfcmF0ZSA9IHVhcnRfY2xvY2tfYmFzZS0+cGFyZW50X3JhdGVzW3BhcmVudF9jbG9ja19p ZHhdOworCisJdmFsID0gcmVhZGwodWFydF9jbG9ja19iYXNlLT5yZWcxKTsKKworCWlmICh1YXJ0 X2Nsb2NrX2Jhc2UtPmRpdiA+IENMS19UQkdfRElWMV9NQVgpIHsKKwkJZDEgPSBDTEtfVEJHX0RJ VjFfTUFYOworCQlkMiA9IHVhcnRfY2xvY2tfYmFzZS0+ZGl2IC8gQ0xLX1RCR19ESVYxX01BWDsK Kwl9IGVsc2UgeworCQlkMSA9IHVhcnRfY2xvY2tfYmFzZS0+ZGl2OworCQlkMiA9IDE7CisJfQor CisJaWYgKHZhbCAmIENMS19OT19YVEFMKSB7CisJCXByZXZfY2xvY2tfaWR4ID0gKHZhbCA+PiBD TEtfVEJHX1NFTF9TSElGVCkgJiBDTEtfVEJHX1NFTF9NQVNLOworCQlwcmV2X2QxZDIgPSAoKHZh bCA+PiBDTEtfVEJHX0RJVjFfU0hJRlQpICYgQ0xLX1RCR19ESVYxX01BU0spCisJCQkgICogKCh2 YWwgPj4gQ0xLX1RCR19ESVYyX1NISUZUKSAmIENMS19UQkdfRElWMl9NQVNLKTsKKwl9IGVsc2Ug eworCQlwcmV2X2Nsb2NrX2lkeCA9IFBBUkVOVF9DTE9DS19YVEFMOworCQlwcmV2X2QxZDIgPSAx OworCX0KKworCS8qIE5vdGUgdGhhdCB1YXJ0X2Nsb2NrX2Jhc2UtPnBhcmVudF9yYXRlc1tpXSBt YXkgbm90IGJlIGF2YWlsYWJsZSAqLworCXByZXZfY2xvY2tfcmF0ZSA9IHVhcnRfY2xvY2tfYmFz ZS0+cGFyZW50X3JhdGVzW3ByZXZfY2xvY2tfaWR4XTsKKworCS8qIFJlY2FsY3VsYXRlIFVBUlQx IGRpdmlzb3Igc28gVUFSVDEgYmF1ZHJhdGUgZG9lcyBub3QgY2hhbmdlICovCisJaWYgKHByZXZf Y2xvY2tfcmF0ZSkgeworCQlkaXZpc29yID0gRElWX1U2NF9ST1VORF9DTE9TRVNUKCh1NjQpKHZh bCAmIEJSRFZfQkFVRF9NQVNLKSAqCisJCQkJCQlwYXJlbnRfY2xvY2tfcmF0ZSAqIHByZXZfZDFk MiwKKwkJCQkJCXByZXZfY2xvY2tfcmF0ZSAqIGQxICogZDIpOworCQlpZiAoZGl2aXNvciA8IDEp CisJCQlkaXZpc29yID0gMTsKKwkJZWxzZSBpZiAoZGl2aXNvciA+IEJSRFZfQkFVRF9NQVgpCisJ CQlkaXZpc29yID0gQlJEVl9CQVVEX01BWDsKKwkJdmFsID0gKHZhbCAmIH5CUkRWX0JBVURfTUFT SykgfCBkaXZpc29yOworCX0KKworCWlmIChwYXJlbnRfY2xvY2tfaWR4ICE9IFBBUkVOVF9DTE9D S19YVEFMKSB7CisJCS8qIERvIG5vdCB1c2UgWFRBTCwgc2VsZWN0IFRCRyBjbG9jayBhbmQgVEJH IGQxICogZDIgZGl2aXNvcnMgKi8KKwkJdmFsIHw9IENMS19OT19YVEFMOworCQl2YWwgJj0gfihD TEtfVEJHX0RJVjFfTUFTSyA8PCBDTEtfVEJHX0RJVjFfU0hJRlQpOworCQl2YWwgfD0gZDEgPDwg Q0xLX1RCR19ESVYxX1NISUZUOworCQl2YWwgJj0gfihDTEtfVEJHX0RJVjJfTUFTSyA8PCBDTEtf VEJHX0RJVjJfU0hJRlQpOworCQl2YWwgfD0gZDIgPDwgQ0xLX1RCR19ESVYyX1NISUZUOworCQl2 YWwgJj0gfihDTEtfVEJHX1NFTF9NQVNLIDw8IENMS19UQkdfU0VMX1NISUZUKTsKKwkJdmFsIHw9 IHBhcmVudF9jbG9ja19pZHggPDwgQ0xLX1RCR19TRUxfU0hJRlQ7CisJfSBlbHNlIHsKKwkJLyog VXNlIFhUQUwsIFRCRyBiaXRzIGFyZSB0aGVuIGlnbm9yZWQgKi8KKwkJdmFsICY9IH5DTEtfTk9f WFRBTDsKKwl9CisKKwl3cml0ZWwodmFsLCB1YXJ0X2Nsb2NrX2Jhc2UtPnJlZzEpOworCisJLyog UmVjYWxjdWxhdGUgVUFSVDIgZGl2aXNvciBzbyBVQVJUMiBiYXVkcmF0ZSBkb2VzIG5vdCBjaGFu Z2UgKi8KKwlpZiAocHJldl9jbG9ja19yYXRlKSB7CisJCXZhbCA9IHJlYWRsKHVhcnRfY2xvY2tf YmFzZS0+cmVnMik7CisJCWRpdmlzb3IgPSBESVZfVTY0X1JPVU5EX0NMT1NFU1QoKHU2NCkodmFs ICYgQlJEVl9CQVVEX01BU0spICoKKwkJCQkJCXBhcmVudF9jbG9ja19yYXRlICogcHJldl9kMWQy LAorCQkJCQkJcHJldl9jbG9ja19yYXRlICogZDEgKiBkMik7CisJCWlmIChkaXZpc29yIDwgMSkK KwkJCWRpdmlzb3IgPSAxOworCQllbHNlIGlmIChkaXZpc29yID4gQlJEVl9CQVVEX01BWCkKKwkJ CWRpdmlzb3IgPSBCUkRWX0JBVURfTUFYOworCQl2YWwgPSAodmFsICYgfkJSRFZfQkFVRF9NQVNL KSB8IGRpdmlzb3I7CisJCXdyaXRlbCh2YWwsIHVhcnRfY2xvY2tfYmFzZS0+cmVnMik7CisJfQor CisJdWFydF9jbG9ja19iYXNlLT5jb25maWd1cmVkID0gdHJ1ZTsKKworCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJm12ZWJ1X3VhcnRfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgbXZlYnVfdWFydF9jbG9ja19lbmFibGUoc3RydWN0IGNsa19odyAqaHcpCit7CisJ c3RydWN0IG12ZWJ1X3VhcnRfY2xvY2sgKnVhcnRfY2xvY2sgPSB0b191YXJ0X2Nsb2NrKGh3KTsK KwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlICp1YXJ0X2Nsb2NrX2Jhc2UgPQorCQkJCQkJ dG9fdWFydF9jbG9ja19iYXNlKHVhcnRfY2xvY2spOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJ dTMyIHZhbDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdzKTsK KworCXZhbCA9IHJlYWRsKHVhcnRfY2xvY2tfYmFzZS0+cmVnMSk7CisKKwlpZiAodWFydF9jbG9j ay0+Y2xvY2tfaWR4ID09IDApCisJCXZhbCAmPSB+VUFSVDFfQ0xLX0RJUzsKKwllbHNlCisJCXZh bCAmPSB+VUFSVDJfQ0xLX0RJUzsKKworCXdyaXRlbCh2YWwsIHVhcnRfY2xvY2tfYmFzZS0+cmVn MSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdzKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtdmVidV91YXJ0X2Nsb2NrX2Rpc2FibGUo c3RydWN0IGNsa19odyAqaHcpCit7CisJc3RydWN0IG12ZWJ1X3VhcnRfY2xvY2sgKnVhcnRfY2xv Y2sgPSB0b191YXJ0X2Nsb2NrKGh3KTsKKwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlICp1 YXJ0X2Nsb2NrX2Jhc2UgPQorCQkJCQkJdG9fdWFydF9jbG9ja19iYXNlKHVhcnRfY2xvY2spOwor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdTMyIHZhbDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZt dmVidV91YXJ0X2xvY2ssIGZsYWdzKTsKKworCXZhbCA9IHJlYWRsKHVhcnRfY2xvY2tfYmFzZS0+ cmVnMSk7CisKKwlpZiAodWFydF9jbG9jay0+Y2xvY2tfaWR4ID09IDApCisJCXZhbCB8PSBVQVJU MV9DTEtfRElTOworCWVsc2UKKwkJdmFsIHw9IFVBUlQyX0NMS19ESVM7CisKKwl3cml0ZWwodmFs LCB1YXJ0X2Nsb2NrX2Jhc2UtPnJlZzEpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXZl YnVfdWFydF9sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgbXZlYnVfdWFydF9jbG9ja19p c19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KQoreworCXN0cnVjdCBtdmVidV91YXJ0X2Nsb2Nr ICp1YXJ0X2Nsb2NrID0gdG9fdWFydF9jbG9jayhodyk7CisJc3RydWN0IG12ZWJ1X3VhcnRfY2xv Y2tfYmFzZSAqdWFydF9jbG9ja19iYXNlID0KKwkJCQkJCXRvX3VhcnRfY2xvY2tfYmFzZSh1YXJ0 X2Nsb2NrKTsKKwl1MzIgdmFsOworCisJdmFsID0gcmVhZGwodWFydF9jbG9ja19iYXNlLT5yZWcx KTsKKworCWlmICh1YXJ0X2Nsb2NrLT5jbG9ja19pZHggPT0gMCkKKwkJcmV0dXJuICEodmFsICYg VUFSVDFfQ0xLX0RJUyk7CisJZWxzZQorCQlyZXR1cm4gISh2YWwgJiBVQVJUMl9DTEtfRElTKTsK K30KKworc3RhdGljIGludCBtdmVidV91YXJ0X2Nsb2NrX3NhdmVfY29udGV4dChzdHJ1Y3QgY2xr X2h3ICpodykKK3sKKwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9jayAqdWFydF9jbG9jayA9IHRvX3Vh cnRfY2xvY2soaHcpOworCXN0cnVjdCBtdmVidV91YXJ0X2Nsb2NrX2Jhc2UgKnVhcnRfY2xvY2tf YmFzZSA9CisJCQkJCQl0b191YXJ0X2Nsb2NrX2Jhc2UodWFydF9jbG9jayk7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZtdmVidV91YXJ0X2xvY2ssIGZsYWdz KTsKKwl1YXJ0X2Nsb2NrLT5wbV9jb250ZXh0X3JlZzEgPSByZWFkbCh1YXJ0X2Nsb2NrX2Jhc2Ut PnJlZzEpOworCXVhcnRfY2xvY2stPnBtX2NvbnRleHRfcmVnMiA9IHJlYWRsKHVhcnRfY2xvY2tf YmFzZS0+cmVnMik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXZlYnVfdWFydF9sb2NrLCBm bGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXZlYnVfdWFydF9jbG9ja19y ZXN0b3JlX2NvbnRleHQoc3RydWN0IGNsa19odyAqaHcpCit7CisJc3RydWN0IG12ZWJ1X3VhcnRf Y2xvY2sgKnVhcnRfY2xvY2sgPSB0b191YXJ0X2Nsb2NrKGh3KTsKKwlzdHJ1Y3QgbXZlYnVfdWFy dF9jbG9ja19iYXNlICp1YXJ0X2Nsb2NrX2Jhc2UgPQorCQkJCQkJdG9fdWFydF9jbG9ja19iYXNl KHVhcnRfY2xvY2spOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmbXZlYnVfdWFydF9sb2NrLCBmbGFncyk7CisJd3JpdGVsKHVhcnRfY2xvY2stPnBtX2NvbnRl eHRfcmVnMSwgdWFydF9jbG9ja19iYXNlLT5yZWcxKTsKKwl3cml0ZWwodWFydF9jbG9jay0+cG1f Y29udGV4dF9yZWcyLCB1YXJ0X2Nsb2NrX2Jhc2UtPnJlZzIpOworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJm12ZWJ1X3VhcnRfbG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9u ZyBtdmVidV91YXJ0X2Nsb2NrX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAorCQkJCQkJ ICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQoreworCXN0cnVjdCBtdmVidV91YXJ0X2Nsb2Nr ICp1YXJ0X2Nsb2NrID0gdG9fdWFydF9jbG9jayhodyk7CisJc3RydWN0IG12ZWJ1X3VhcnRfY2xv Y2tfYmFzZSAqdWFydF9jbG9ja19iYXNlID0KKwkJCQkJCXRvX3VhcnRfY2xvY2tfYmFzZSh1YXJ0 X2Nsb2NrKTsKKworCXJldHVybiBwYXJlbnRfcmF0ZSAvIHVhcnRfY2xvY2tfYmFzZS0+ZGl2Owor fQorCitzdGF0aWMgbG9uZyBtdmVidV91YXJ0X2Nsb2NrX3JvdW5kX3JhdGUoc3RydWN0IGNsa19o dyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCQkJdW5zaWduZWQgbG9uZyAqcGFyZW50X3Jh dGUpCit7CisJc3RydWN0IG12ZWJ1X3VhcnRfY2xvY2sgKnVhcnRfY2xvY2sgPSB0b191YXJ0X2Ns b2NrKGh3KTsKKwlzdHJ1Y3QgbXZlYnVfdWFydF9jbG9ja19iYXNlICp1YXJ0X2Nsb2NrX2Jhc2Ug PQorCQkJCQkJdG9fdWFydF9jbG9ja19iYXNlKHVhcnRfY2xvY2spOworCisJcmV0dXJuICpwYXJl bnRfcmF0ZSAvIHVhcnRfY2xvY2tfYmFzZS0+ZGl2OworfQorCitzdGF0aWMgaW50IG12ZWJ1X3Vh cnRfY2xvY2tfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwK KwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCit7CisJLyoKKwkgKiBXZSBtdXN0 IHJlcG9ydCBzdWNjZXNzIGJ1dCB3ZSBjYW4gZG8gc28gdW5jb25kaXRpb25hbGx5IGJlY2F1c2UK KwkgKiBtdmVidV91YXJ0X2Nsb2NrX3JvdW5kX3JhdGUgcmV0dXJucyB2YWx1ZXMgdGhhdCBlbnN1 cmUgdGhpcyBjYWxsIGlzIGEKKwkgKiBub3AuCisJICovCisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG12ZWJ1X3VhcnRfY2xvY2tfb3BzID0geworCS5wcmVw YXJlID0gbXZlYnVfdWFydF9jbG9ja19wcmVwYXJlLAorCS5lbmFibGUgPSBtdmVidV91YXJ0X2Ns b2NrX2VuYWJsZSwKKwkuZGlzYWJsZSA9IG12ZWJ1X3VhcnRfY2xvY2tfZGlzYWJsZSwKKwkuaXNf ZW5hYmxlZCA9IG12ZWJ1X3VhcnRfY2xvY2tfaXNfZW5hYmxlZCwKKwkuc2F2ZV9jb250ZXh0ID0g bXZlYnVfdWFydF9jbG9ja19zYXZlX2NvbnRleHQsCisJLnJlc3RvcmVfY29udGV4dCA9IG12ZWJ1 X3VhcnRfY2xvY2tfcmVzdG9yZV9jb250ZXh0LAorCS5yb3VuZF9yYXRlID0gbXZlYnVfdWFydF9j bG9ja19yb3VuZF9yYXRlLAorCS5zZXRfcmF0ZSA9IG12ZWJ1X3VhcnRfY2xvY2tfc2V0X3JhdGUs CisJLnJlY2FsY19yYXRlID0gbXZlYnVfdWFydF9jbG9ja19yZWNhbGNfcmF0ZSwKK307CisKK3N0 YXRpYyBpbnQgbXZlYnVfdWFydF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsCisJ CQkJICAgICBzdHJ1Y3QgbXZlYnVfdWFydF9jbG9jayAqdWFydF9jbG9jaywKKwkJCQkgICAgIGNv bnN0IGNoYXIgKm5hbWUsCisJCQkJICAgICBjb25zdCBjaGFyICpwYXJlbnRfbmFtZSkKK3sKKwlz dHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0geyB9OworCisJdWFydF9jbG9jay0+Y2xrX2h3Lmlu aXQgPSAmaW5pdDsKKworCWluaXQubmFtZSA9IG5hbWU7CisJaW5pdC5vcHMgPSAmbXZlYnVfdWFy dF9jbG9ja19vcHM7CisJaW5pdC5mbGFncyA9IDA7CisJaW5pdC5udW1fcGFyZW50cyA9IDE7CisJ aW5pdC5wYXJlbnRfbmFtZXMgPSAmcGFyZW50X25hbWU7CisKKwlyZXR1cm4gZGV2bV9jbGtfaHdf cmVnaXN0ZXIoZGV2LCAmdWFydF9jbG9jay0+Y2xrX2h3KTsKK30KKworc3RhdGljIGludCBtdmVi dV91YXJ0X2Nsb2NrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IHVhcnRfY2xrX25hbWVzW10gPSB7ICJ1YXJ0XzEiLCAidWFy dF8yIiB9OworCXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBwYXJlbnRfY2xrX25hbWVzW10gPSB7 ICJUQkctQS1QIiwgIlRCRy1CLVAiLAorCQkJCQkJCSJUQkctQS1TIiwgIlRCRy1CLVMiLAorCQkJ CQkJCSJ4dGFsIiB9OworCXN0cnVjdCBjbGsgKnBhcmVudF9jbGtzW0FSUkFZX1NJWkUocGFyZW50 X2Nsa19uYW1lcyldOworCXN0cnVjdCBtdmVidV91YXJ0X2Nsb2NrX2Jhc2UgKnVhcnRfY2xvY2tf YmFzZTsKKwlzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqaHdfY2xrX2RhdGE7CisJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlpbnQgaSwgcGFyZW50X2Nsa19pZHgsIHJldDsK Kwl1bnNpZ25lZCBsb25nIGRpdiwgcmF0ZTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl1bnNp Z25lZCBpbnQgZDEsIGQyOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUodWFydF9jbGtfbmFt ZXMpICE9CisJCSAgICAgQVJSQVlfU0laRSh1YXJ0X2Nsb2NrX2Jhc2UtPmNsb2NrcykpOworCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKHBhcmVudF9jbGtfbmFtZXMpICE9CisJCSAgICAgQVJSQVlf U0laRSh1YXJ0X2Nsb2NrX2Jhc2UtPnBhcmVudF9yYXRlcykpOworCisJdWFydF9jbG9ja19iYXNl ID0gZGV2bV9remFsbG9jKGRldiwKKwkJCQkgICAgICAgc2l6ZW9mKCp1YXJ0X2Nsb2NrX2Jhc2Up LAorCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXVhcnRfY2xvY2tfYmFzZSkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNP VVJDRV9NRU0sIDApOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0 IGZpcnN0IHJlZ2lzdGVyXG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJLyoKKwkgKiBV QVJUIENsb2NrIENvbnRyb2wgcmVnaXN0ZXIgKHJlZzEgLyBVQVJUX0JSRFYpIGlzIGluIGFkZHJl c3MgcmFuZ2UKKwkgKiBvZiBVQVJUMSAoc3RhbmRhcmQgVUFSVCB2YXJpYW50KSwgY29udHJvbHMg Y2xvY2sgc291cmNlIGFuZCBkaXZpZGVycworCSAqIGZvciBib3RoIFVBUlQxIGFuZCBVQVJUMiBh bmQgaXMgc3VwcGxpZWQgdmlhIERUIGFzIGZpcnN0IHJlc291cmNlLgorCSAqIFRoZXJlZm9yZSB1 c2UgaW9yZW1hcCgpIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGlvcmVtYXBfcmVzb3VyY2UoKSB0bwor CSAqIGF2b2lkIGNvbmZsaWN0cyB3aXRoIFVBUlQxIGRyaXZlci4gQWNjZXNzIHRvIFVBUlRfQlJE ViBpcyBwcm90ZWN0ZWQKKwkgKiBieSBsb2NrIHNoYXJlZCBiZXR3ZWVuIGNsb2NrIGFuZCBVQVJU IGRyaXZlci4KKwkgKi8KKwl1YXJ0X2Nsb2NrX2Jhc2UtPnJlZzEgPSBkZXZtX2lvcmVtYXAoZGV2 LCByZXMtPnN0YXJ0LAorCQkJCQkgICAgIHJlc291cmNlX3NpemUocmVzKSk7CisJaWYgKElTX0VS Uih1YXJ0X2Nsb2NrX2Jhc2UtPnJlZzEpKQorCQlyZXR1cm4gUFRSX0VSUih1YXJ0X2Nsb2NrX2Jh c2UtPnJlZzEpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS Q0VfTUVNLCAxKTsKKwlpZiAoIXJlcykgeworCQlkZXZfZXJyKGRldiwgIkNvdWxkbid0IGdldCBz ZWNvbmQgcmVnaXN0ZXJcbiIpOworCQlyZXR1cm4gLUVOT0VOVDsKKwl9CisKKwkvKgorCSAqIFVB UlQgMiBCYXVkIFJhdGUgRGl2aXNvciByZWdpc3RlciAocmVnMiAvIFVBUlRfQlJEVikgaXMgaW4g YWRkcmVzcworCSAqIHJhbmdlIG9mIFVBUlQyIChleHRlbmRlZCBVQVJUIHZhcmlhbnQpLCBjb250 cm9scyBvbmx5IG9uZSBVQVJUMgorCSAqIHNwZWNpZmljIGRpdmlkZXIgYW5kIGlzIHN1cHBsaWVk IHZpYSBEVCBhcyBzZWNvbmQgcmVzb3VyY2UuCisJICogVGhlcmVmb3JlIHVzZSBpb3JlbWFwKCkg ZnVuY3Rpb24gcmF0aGVyIHRoYW4gaW9yZW1hcF9yZXNvdXJjZSgpIHRvCisJICogYXZvaWQgY29u ZmxpY3RzIHdpdGggVUFSVDIgZHJpdmVyLiBBY2Nlc3MgdG8gVUFSVF9CUkRWIGlzIHByb3RlY3Rl ZAorCSAqIGJ5IGxvY2sgc2hhcmVkIGJldHdlZW4gY2xvY2sgYW5kIFVBUlQgZHJpdmVyLgorCSAq LworCXVhcnRfY2xvY2tfYmFzZS0+cmVnMiA9IGRldm1faW9yZW1hcChkZXYsIHJlcy0+c3RhcnQs CisJCQkJCSAgICAgcmVzb3VyY2Vfc2l6ZShyZXMpKTsKKwlpZiAoSVNfRVJSKHVhcnRfY2xvY2tf YmFzZS0+cmVnMikpCisJCXJldHVybiBQVFJfRVJSKHVhcnRfY2xvY2tfYmFzZS0+cmVnMik7CisK Kwlod19jbGtfZGF0YSA9IGRldm1fa3phbGxvYyhkZXYsCisJCQkJICAgc3RydWN0X3NpemUoaHdf Y2xrX2RhdGEsIGh3cywKKwkJCQkJICAgICAgIEFSUkFZX1NJWkUodWFydF9jbGtfbmFtZXMpKSwK KwkJCQkgICBHRlBfS0VSTkVMKTsKKwlpZiAoIWh3X2Nsa19kYXRhKQorCQlyZXR1cm4gLUVOT01F TTsKKworCWh3X2Nsa19kYXRhLT5udW0gPSBBUlJBWV9TSVpFKHVhcnRfY2xrX25hbWVzKTsKKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh1YXJ0X2Nsa19uYW1lcyk7IGkrKykgeworCQlod19j bGtfZGF0YS0+aHdzW2ldID0gJnVhcnRfY2xvY2tfYmFzZS0+Y2xvY2tzW2ldLmNsa19odzsKKwkJ dWFydF9jbG9ja19iYXNlLT5jbG9ja3NbaV0uY2xvY2tfaWR4ID0gaTsKKwl9CisKKwlwYXJlbnRf Y2xrX2lkeCA9IC0xOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGFyZW50X2Nsa19u YW1lcyk7IGkrKykgeworCQlwYXJlbnRfY2xrc1tpXSA9IGRldm1fY2xrX2dldChkZXYsIHBhcmVu dF9jbGtfbmFtZXNbaV0pOworCQlpZiAoSVNfRVJSKHBhcmVudF9jbGtzW2ldKSkgeworCQkJaWYg KFBUUl9FUlIocGFyZW50X2Nsa3NbaV0pID09IC1FUFJPQkVfREVGRVIpCisJCQkJcmV0dXJuIC1F UFJPQkVfREVGRVI7CisJCQlkZXZfd2FybihkZXYsICJDb3VsZG4ndCBnZXQgdGhlIHBhcmVudCBj bG9jayAlczogJWxkXG4iLAorCQkJCXBhcmVudF9jbGtfbmFtZXNbaV0sIFBUUl9FUlIocGFyZW50 X2Nsa3NbaV0pKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5h YmxlKHBhcmVudF9jbGtzW2ldKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X3dhcm4oZGV2LCAiQ291 bGRuJ3QgZW5hYmxlIHBhcmVudCBjbG9jayAlczogJWRcbiIsCisJCQkJcGFyZW50X2Nsa19uYW1l c1tpXSwgcmV0KTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXJhdGUgPSBjbGtfZ2V0X3JhdGUocGFy ZW50X2Nsa3NbaV0pOworCQl1YXJ0X2Nsb2NrX2Jhc2UtPnBhcmVudF9yYXRlc1tpXSA9IHJhdGU7 CisKKwkJaWYgKGkgIT0gUEFSRU5UX0NMT0NLX1hUQUwpIHsKKwkJCS8qCisJCQkgKiBDYWxjdWxh dGUgdGhlIHNtYWxsZXN0IFRCRyBkMSBhbmQgZDIgZGl2aXNvcnMgdGhhdAorCQkJICogc3RpbGwg Y2FuIHByb3ZpZGUgOTYwMCBiYXVkcmF0ZS4KKwkJCSAqLworCQkJZDEgPSBESVZfUk9VTkRfVVAo cmF0ZSwgOTYwMCAqIE9TQU1QX0RFRkFVTFRfRElWSVNPUiAqCisJCQkJCQlCUkRWX0JBVURfTUFY KTsKKwkJCWlmIChkMSA8IDEpCisJCQkJZDEgPSAxOworCQkJZWxzZSBpZiAoZDEgPiBDTEtfVEJH X0RJVjFfTUFYKQorCQkJCWQxID0gQ0xLX1RCR19ESVYxX01BWDsKKworCQkJZDIgPSBESVZfUk9V TkRfVVAocmF0ZSwgOTYwMCAqIE9TQU1QX0RFRkFVTFRfRElWSVNPUiAqCisJCQkJCQlCUkRWX0JB VURfTUFYICogZDEpOworCQkJaWYgKGQyIDwgMSkKKwkJCQlkMiA9IDE7CisJCQllbHNlIGlmIChk MiA+IENMS19UQkdfRElWMl9NQVgpCisJCQkJZDIgPSBDTEtfVEJHX0RJVjJfTUFYOworCQl9IGVs c2UgeworCQkJLyoKKwkJCSAqIFdoZW4gVUFSVCBjbG9jayB1c2VzIFhUQUwgY2xvY2sgYXMgYSBz b3VyY2UgdGhlbiBpdAorCQkJICogaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBkMSBhbmQgZDIgZGl2 aXNvcnMuCisJCQkgKi8KKwkJCWQxID0gZDIgPSAxOworCQl9CisKKwkJLyogU2tpcCBjbG9jayBz b3VyY2Ugd2hpY2ggY2Fubm90IHByb3ZpZGUgOTYwMCBiYXVkcmF0ZSAqLworCQlpZiAocmF0ZSA+ IDk2MDAgKiBPU0FNUF9ERUZBVUxUX0RJVklTT1IgKiBCUkRWX0JBVURfTUFYICogZDEgKiBkMikK KwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIENob29zZSBUQkcgY2xvY2sgc291cmNlIHdpdGgg dGhlIHNtYWxsZXN0IGRpdmlzb3JzLiBVc2UgWFRBTAorCQkgKiBjbG9jayBzb3VyY2Ugb25seSBp biBjYXNlIFRCRyBpcyBub3QgYXZhaWxhYmxlIGFzIFhUQUwgY2Fubm90CisJCSAqIGJlIHVzZWQg Zm9yIGJhdWRyYXRlcyBoaWdoZXIgdGhhbiAyMzA0MDAuCisJCSAqLworCQlpZiAocGFyZW50X2Ns a19pZHggPT0gLTEgfHwKKwkJICAgIChpICE9IFBBUkVOVF9DTE9DS19YVEFMICYmIGRpdiA+IGQx ICogZDIpKSB7CisJCQlwYXJlbnRfY2xrX2lkeCA9IGk7CisJCQlkaXYgPSBkMSAqIGQyOworCQl9 CisJfQorCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGFyZW50X2Nsa19uYW1lcyk7IGkr KykgeworCQlpZiAoaSA9PSBwYXJlbnRfY2xrX2lkeCB8fCBJU19FUlIocGFyZW50X2Nsa3NbaV0p KQorCQkJY29udGludWU7CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShwYXJlbnRfY2xrc1tpXSk7 CisJCWRldm1fY2xrX3B1dChkZXYsIHBhcmVudF9jbGtzW2ldKTsKKwl9CisKKwlpZiAocGFyZW50 X2Nsa19pZHggPT0gLTEpIHsKKwkJZGV2X2VycihkZXYsICJObyB1c2FibGUgcGFyZW50IGNsb2Nr XG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJdWFydF9jbG9ja19iYXNlLT5wYXJlbnRf aWR4ID0gcGFyZW50X2Nsa19pZHg7CisJdWFydF9jbG9ja19iYXNlLT5kaXYgPSBkaXY7CisKKwlk ZXZfbm90aWNlKGRldiwgIlVzaW5nIHBhcmVudCBjbG9jayAlcyBhcyBiYXNlIFVBUlQgY2xvY2tc biIsCisJCSAgIF9fY2xrX2dldF9uYW1lKHBhcmVudF9jbGtzW3BhcmVudF9jbGtfaWR4XSkpOwor CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodWFydF9jbGtfbmFtZXMpOyBpKyspIHsKKwkJ cmV0ID0gbXZlYnVfdWFydF9jbG9ja19yZWdpc3RlcihkZXYsCisJCQkJJnVhcnRfY2xvY2tfYmFz ZS0+Y2xvY2tzW2ldLAorCQkJCXVhcnRfY2xrX25hbWVzW2ldLAorCQkJCV9fY2xrX2dldF9uYW1l KHBhcmVudF9jbGtzW3BhcmVudF9jbGtfaWR4XSkpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJy KGRldiwgIkNhbid0IHJlZ2lzdGVyIFVBUlQgY2xvY2sgJWQ6ICVkXG4iLAorCQkJCWksIHJldCk7 CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJcmV0dXJuIGRldm1fb2ZfY2xrX2FkZF9od19w cm92aWRlcihkZXYsIG9mX2Nsa19od19vbmVjZWxsX2dldCwKKwkJCQkJICAgaHdfY2xrX2RhdGEp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdmVidV91YXJ0X2Nsb2Nr X29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS0zNzAwLXVh cnQtY2xvY2siLCB9LAorCXsgfQorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg bXZlYnVfdWFydF9jbG9ja19wbGF0Zm9ybV9kcml2ZXIgPSB7CisJLnByb2JlID0gbXZlYnVfdWFy dF9jbG9ja19wcm9iZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAibXZlYnUtdWFydC1jbG9j ayIsCisJCS5vZl9tYXRjaF90YWJsZSA9IG12ZWJ1X3VhcnRfY2xvY2tfb2ZfbWF0Y2gsCisJfSwK K307CisKIHN0YXRpYyBpbnQgX19pbml0IG12ZWJ1X3VhcnRfaW5pdCh2b2lkKQogewogCWludCBy ZXQ7CkBAIC05ODMsMTAgKzE0ODksMTkgQEAgc3RhdGljIGludCBfX2luaXQgbXZlYnVfdWFydF9p bml0KHZvaWQpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAorCXJldCA9IHBsYXRmb3JtX2Ry aXZlcl9yZWdpc3RlcigmbXZlYnVfdWFydF9jbG9ja19wbGF0Zm9ybV9kcml2ZXIpOworCWlmIChy ZXQpIHsKKwkJdWFydF91bnJlZ2lzdGVyX2RyaXZlcigmbXZlYnVfdWFydF9kcml2ZXIpOworCQly ZXR1cm4gcmV0OworCX0KKwogCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmbXZlYnVf dWFydF9wbGF0Zm9ybV9kcml2ZXIpOwotCWlmIChyZXQpCisJaWYgKHJldCkgeworCQlwbGF0Zm9y bV9kcml2ZXJfdW5yZWdpc3RlcigmbXZlYnVfdWFydF9jbG9ja19wbGF0Zm9ybV9kcml2ZXIpOwog CQl1YXJ0X3VucmVnaXN0ZXJfZHJpdmVyKCZtdmVidV91YXJ0X2RyaXZlcik7CisJCXJldHVybiBy ZXQ7CisJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIGFyY2hfaW5pdGNhbGwobXZl YnVfdWFydF9pbml0KTsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK