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=-12.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_PASS 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 9E99FC169C4 for ; Mon, 11 Feb 2019 11:27:19 +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 6B2C2214DA for ; Mon, 11 Feb 2019 11:27:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="lGj/qqnX"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="OLZuSKlQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B2C2214DA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4q7/9dgD8rQWGFUWBuMsoveyOFcITxzxq/YviUqL/Pg=; b=lGj/qqnXWvm2B4 qx9OKXC9nuWdedC+3i2TRCj1B84lU1c0IoPyAFGm9f5hq2EXalcxNbg7rmBgKjdkOH7IrzmOgCtDe q7FjTxyfSLENOomXD5hirtUYQpKjHd7tiWIcIGYeTwZU1I0APUdO9P4dowBtNCD3dd3glNd6UdUrc s07tN+aP7s6HzWn3vRcpIEZD/sm01o9S7+eS4RwVU+Jmg5ZM3ZWQNEtZXk2j82k1xtZzYxEXx+qF1 EAo50jPDTbe1s43PDJUfF3BM4khZdBsv5zofQZrpg4oYEMMbU+UGPeu4tuqR2adCHXGGkMvjI18yb AngVc4NoA+zsv/pc1/nQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gt9k5-0005Fh-Om; Mon, 11 Feb 2019 11:27:17 +0000 Received: from mail-lf1-x143.google.com ([2a00:1450:4864:20::143]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gt9ju-00058F-I3 for linux-riscv@lists.infradead.org; Mon, 11 Feb 2019 11:27:16 +0000 Received: by mail-lf1-x143.google.com with SMTP id t14so7434536lfk.7 for ; Mon, 11 Feb 2019 03:27:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=lDNiMXiE1pr8GI76f94IAhDjGpg05VZ4K6IcD+uGmRs=; b=OLZuSKlQm4c6mMSmcLtVJbyYdRpfn7zQUfnHeWnULRwbUEmiAy7R+3AnormfHGyb7m 325y1vnZKt9XFCPlWkBy2ohBZ7pT7XsJbRqpdE3v8x5sZiNhNgicZAyAhZw4HzSis+7C MeuaivtL6g6OvXEQpjzw/mTSOn6x8TifpwL3Eh/w4poMKnqAq7Ucl4QLGU7cVVV9uB6X I1NuQ8gLZ9lHbWIF/8pDHqGT1R8KUG7BnIgD3db6NyQYn2QOCYoEtLRECVkzaOxdRTQZ oLZEzzrOK9t+kGaaRdZvRLKdapzDn/NFKb/3SwYxNzUb8JsBmNqR0QuVD+n2GGScQEOU NH+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=lDNiMXiE1pr8GI76f94IAhDjGpg05VZ4K6IcD+uGmRs=; b=oIgFsZlgUDJi5kJkWtN0JEJHS6QUUO+lR4jE9jbKuZKUhl2xVRMlrxGN4LcqGWkCcJ 3hpkTMQOu/jegVnxsqc4r0ulN3HV2V7ovtFrm22Az3QrbziyuKUydeGQ61y+oIclnqCO ySkndwAwKFqFQGqSKoXfWnC0lDIE81B5CPr51BEOnSd4t8/9DrrjB3BOWlW7rtAaW6I2 M/sVWVv5XIykSs3F2WEsOIyP5IoIWpHz2gJWmInUxJWkYc/Nufgtp3h6VMrzKluE8mo8 cjCM4B1oIByDlzpZPgNATiFSuU51Ct45osxDXGNGLhlFaI8iRBYKX7mAgObF9VDyyXg8 19nw== X-Gm-Message-State: AHQUAuaoQL43bR0zhSn2unUPRL5HLVfp+ciCWNol+KlX1bZuRgv4t7cz 0dt1VSm5fzo6ROr0d0V3VXns/BTLKFMDwHJWNrz9dw== X-Google-Smtp-Source: AHgI3IbVyTUyh4lKE7/VZUQCrkO4/z4GLVXLsWJKNYogJ9P6W5g2lh0mFMcjSkEhI0PzcgcsX18rSsE/Lw4k9mmx5iU= X-Received: by 2002:ac2:42c5:: with SMTP id n5mr11378967lfl.115.1549884423673; Mon, 11 Feb 2019 03:27:03 -0800 (PST) MIME-Version: 1.0 References: <1548762199-7065-1-git-send-email-yash.shah@sifive.com> <1548762199-7065-3-git-send-email-yash.shah@sifive.com> <20190207101657.rfzcq6xdv6ocvubg@pengutronix.de> In-Reply-To: <20190207101657.rfzcq6xdv6ocvubg@pengutronix.de> From: Yash Shah Date: Mon, 11 Feb 2019 16:56:27 +0530 Message-ID: Subject: Re: [PATCH v5 2/2] pwm: sifive: Add a driver for SiFive SoC PWM To: =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190211_032707_124328_81C931A1 X-CRM114-Status: GOOD ( 35.86 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, Palmer Dabbelt , linux-kernel@vger.kernel.org, robh+dt@kernel.org, Sachin Ghadi , Thierry Reding , Paul Walmsley , linux-riscv@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCBGZWIgNywgMjAxOSBhdCAzOjQ3IFBNIFV3ZSBLbGVpbmUtS8O2bmlnCjx1LmtsZWlu ZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+IHdyb3RlOgo+Cj4gSGVsbG8sCj4KPiBPbiBUdWUsIEph biAyOSwgMjAxOSBhdCAwNToxMzoxOVBNICswNTMwLCBZYXNoIFNoYWggd3JvdGU6Cj4gPiBBZGRz IGEgUFdNIGRyaXZlciBmb3IgUFdNIGNoaXAgcHJlc2VudCBpbiBTaUZpdmUncyBIaUZpdmUgVW5s ZWFzaGVkIFNvQy4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBXZXNsZXkgVy4gVGVycHN0cmEgPHdl c2xleUBzaWZpdmUuY29tPgo+ID4gW0F0aXNoOiBWYXJpb3VzIGZpeGVzIGFuZCBjb2RlIGNsZWFu dXBdCj4gPiBTaWduZWQtb2ZmLWJ5OiBBdGlzaCBQYXRyYSA8YXRpc2gucGF0cmFAd2RjLmNvbT4K PiA+IFNpZ25lZC1vZmYtYnk6IFlhc2ggU2hhaCA8eWFzaC5zaGFoQHNpZml2ZS5jb20+Cj4gPiAt LS0KPiA+ICBkcml2ZXJzL3B3bS9LY29uZmlnICAgICAgfCAgMTEgKysKPiA+ICBkcml2ZXJzL3B3 bS9NYWtlZmlsZSAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvcHdtL3B3bS1zaWZpdmUuYyB8IDI2 MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDMg ZmlsZXMgY2hhbmdlZCwgMjczIGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9wd20vcHdtLXNpZml2ZS5jCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdt L0tjb25maWcgYi9kcml2ZXJzL3B3bS9LY29uZmlnCj4gPiBpbmRleCBhOGY0N2RmLi40YTYxZDFh IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9wd20vS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9w d20vS2NvbmZpZwo+ID4gQEAgLTM4MCw2ICszODAsMTcgQEAgY29uZmlnIFBXTV9TQU1TVU5HCj4g PiAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhl cmU6IHRoZSBtb2R1bGUKPiA+ICAgICAgICAgd2lsbCBiZSBjYWxsZWQgcHdtLXNhbXN1bmcuCj4g Pgo+ID4gK2NvbmZpZyBQV01fU0lGSVZFCj4gPiArICAgICB0cmlzdGF0ZSAiU2lGaXZlIFBXTSBz dXBwb3J0Igo+ID4gKyAgICAgZGVwZW5kcyBvbiBPRgo+ID4gKyAgICAgZGVwZW5kcyBvbiBDT01N T05fQ0xLCj4gPiArICAgICBkZXBlbmRzIG9uIFJJU0NWIHx8IENPTVBJTEVfVEVTVAo+ID4gKyAg ICAgaGVscAo+ID4gKyAgICAgICBHZW5lcmljIFBXTSBmcmFtZXdvcmsgZHJpdmVyIGZvciBTaUZp dmUgU29Dcy4KPiA+ICsKPiA+ICsgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+ID4gKyAgICAgICB3aWxsIGJlIGNhbGxl ZCBwd20tc2lmaXZlLgo+ID4gKwo+ID4gIGNvbmZpZyBQV01fU1BFQVIKPiA+ICAgICAgIHRyaXN0 YXRlICJTVE1pY3JvZWxlY3Ryb25pY3MgU1BFQXIgUFdNIHN1cHBvcnQiCj4gPiAgICAgICBkZXBl bmRzIG9uIFBMQVRfU1BFQVIKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9NYWtlZmlsZSBi L2RyaXZlcnMvcHdtL01ha2VmaWxlCj4gPiBpbmRleCA5YzY3NmEwLi4zMDA4OWNhIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9wd20vTWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvcHdtL01ha2Vm aWxlCj4gPiBAQCAtMzcsNiArMzcsNyBAQCBvYmotJChDT05GSUdfUFdNX1JDQVIpICAgICAgICAg ICAgICArPSBwd20tcmNhci5vCj4gPiAgb2JqLSQoQ09ORklHX1BXTV9SRU5FU0FTX1RQVSkgICAg ICAgICs9IHB3bS1yZW5lc2FzLXRwdS5vCj4gPiAgb2JqLSQoQ09ORklHX1BXTV9ST0NLQ0hJUCkg ICArPSBwd20tcm9ja2NoaXAubwo+ID4gIG9iai0kKENPTkZJR19QV01fU0FNU1VORykgICAgKz0g cHdtLXNhbXN1bmcubwo+ID4gK29iai0kKENPTkZJR19QV01fU0lGSVZFKSAgICAgKz0gcHdtLXNp Zml2ZS5vCj4gPiAgb2JqLSQoQ09ORklHX1BXTV9TUEVBUikgICAgICAgICAgICAgICs9IHB3bS1z cGVhci5vCj4gPiAgb2JqLSQoQ09ORklHX1BXTV9TVEkpICAgICAgICAgICAgICAgICs9IHB3bS1z dGkubwo+ID4gIG9iai0kKENPTkZJR19QV01fU1RNMzIpICAgICAgICAgICAgICArPSBwd20tc3Rt MzIubwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1zaWZpdmUuYyBiL2RyaXZlcnMv cHdtL3B3bS1zaWZpdmUuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw MDAuLjJiNTE2ZjcKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvcHdtL3B3bS1z aWZpdmUuYwo+ID4gQEAgLTAsMCArMSwyNjEgQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggU2lG aXZlCj4gPiArICogRm9yIFNpRml2ZSdzIFBXTSBJUCBibG9jayBkb2N1bWVudGF0aW9uIHBsZWFz ZSByZWZlciBDaGFwdGVyIDE0IG9mCj4gPiArICogUmVmZXJlbmNlIE1hbnVhbCA6IGh0dHBzOi8v c3RhdGljLmRldi5zaWZpdmUuY29tL0ZVNTQwLUMwMDAtdjEuMC5wZGYKPiA+ICsgKi8KPiA+ICsj aW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gPiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvcHdtLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4KPiA+ICsKPiA+ICsvKiBSZWdpc3RlciBvZmZzZXRzICovCj4gPiArI2RlZmluZSBQV01f U0lGSVZFX1BXTUNGRyAgICAgICAgICAgIDB4MAo+ID4gKyNkZWZpbmUgUFdNX1NJRklWRV9QV01D T1VOVCAgICAgICAgICAweDgKPiA+ICsjZGVmaW5lIFBXTV9TSUZJVkVfUFdNUyAgICAgICAgICAg ICAgICAgICAgICAweDEwCj4gPiArI2RlZmluZSBQV01fU0lGSVZFX1BXTUNNUDAgICAgICAgICAg IDB4MjAKPiA+ICsKPiA+ICsvKiBQV01DRkcgZmllbGRzICovCj4gPiArI2RlZmluZSBQV01fU0lG SVZFX1BXTUNGR19TQ0FMRSAgICAgICAgICAgICAgMAo+ID4gKyNkZWZpbmUgUFdNX1NJRklWRV9Q V01DRkdfU1RJQ0tZICAgICA4Cj4gPiArI2RlZmluZSBQV01fU0lGSVZFX1BXTUNGR19aRVJPX0NN UCAgIDkKPiA+ICsjZGVmaW5lIFBXTV9TSUZJVkVfUFdNQ0ZHX0RFR0xJVENIICAgMTAKPiA+ICsj ZGVmaW5lIFBXTV9TSUZJVkVfUFdNQ0ZHX0VOX0FMV0FZUyAgMTIKPiA+ICsjZGVmaW5lIFBXTV9T SUZJVkVfUFdNQ0ZHX0VOX09OQ0UgICAgMTMKPiA+ICsjZGVmaW5lIFBXTV9TSUZJVkVfUFdNQ0ZH X0NFTlRFUiAgICAgMTYKPiA+ICsjZGVmaW5lIFBXTV9TSUZJVkVfUFdNQ0ZHX0dBTkcgICAgICAg ICAgICAgICAyNAo+ID4gKyNkZWZpbmUgUFdNX1NJRklWRV9QV01DRkdfSVAgICAgICAgICAyOAo+ ID4gKwo+ID4gKy8qIFNJWkVfUFdNQ01QIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQg Zm9yIHB3bWNtcFggcmVnaXN0ZXJzICovCj4gPiArI2RlZmluZSBTSVpFX1BXTUNNUCAgICAgICAg ICA0Cj4gPiArI2RlZmluZSBDTVBXSURUSCAgICAgICAgICAgICAxNgo+Cj4gUGxlYXNlIGFkZCBh IFBXTV9TSUZJVkVfIHByZWZpeCB0byB0aGVzZSB0d28uCgpTdXJlCgo+Cj4gPiArc3RydWN0IHB3 bV9zaWZpdmVfZGRhdGEgewo+ID4gKyAgICAgc3RydWN0IHB3bV9jaGlwIGNoaXA7Cj4gPiArICAg ICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbm90aWZpZXI7Cj4gPiArICAgICBzdHJ1Y3QgY2xrICpj bGs7Cj4gPiArICAgICB2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQg YXBwcm94X3BlcmlvZDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCByZWFsX3BlcmlvZDsKPiA+ICt9 Owo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHB3bV9zaWZpdmVfZGRhdGEgKnRvX3B3 bV9zaWZpdmVfY2hpcChzdHJ1Y3QgcHdtX2NoaXAgKmMpCj4KPiBldmVuIHRob3VnaCB0aGlzIGlz IGlubGluZWQgSSB3b3VsZCBsaWtlIHRoaXMgdG8gaGF2ZSB1c2UgdGhlCj4gcHdtX3NpZml2ZV8g cHJlZml4LCB0b28uCgpOb3Qgc3VyZSB3aGF0IGV4YWN0bHkgeW91IHdhbnQgbWUgdG8gZG8gaGVy ZS4KCj4KPiA+ICt7Cj4gPiArICAgICByZXR1cm4gY29udGFpbmVyX29mKGMsIHN0cnVjdCBwd21f c2lmaXZlX2RkYXRhLCBjaGlwKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgcHdtX3Np Zml2ZV9nZXRfc3RhdGUoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAq ZGV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwd21fc3RhdGUg KnN0YXRlKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBwd21fc2lmaXZlX2RkYXRhICpwd20gPSB0 b19wd21fc2lmaXZlX2NoaXAoY2hpcCk7Cj4gPiArICAgICB1MzIgZHV0eTsKPiA+ICsKPiA+ICsg ICAgIGR1dHkgPSByZWFkbChwd20tPnJlZ3MgKyBQV01fU0lGSVZFX1BXTUNNUDAgKyBkZXYtPmh3 cHdtICogU0laRV9QV01DTVApOwo+ID4gKwo+ID4gKyAgICAgc3RhdGUtPnBlcmlvZCA9IHB3bS0+ cmVhbF9wZXJpb2Q7Cj4gPiArICAgICBzdGF0ZS0+ZHV0eV9jeWNsZSA9ICgodTY0KWR1dHkgKiBw d20tPnJlYWxfcGVyaW9kKSA+PiBDTVBXSURUSDsKPiA+ICsgICAgIHN0YXRlLT5wb2xhcml0eSA9 IFBXTV9QT0xBUklUWV9JTlZFUlNFRDsKPiA+ICsgICAgIHN0YXRlLT5lbmFibGVkID0gZHV0eSA+ IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcHdtX3NpZml2ZV9hcHBseShzdHJ1Y3Qg cHdtX2NoaXAgKmNoaXAsIHN0cnVjdCBwd21fZGV2aWNlICpkZXYsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwd21fc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsgICAgIHN0 cnVjdCBwd21fc2lmaXZlX2RkYXRhICpwd20gPSB0b19wd21fc2lmaXZlX2NoaXAoY2hpcCk7Cj4g PiArICAgICB1bnNpZ25lZCBpbnQgZHV0eV9jeWNsZTsKPiA+ICsgICAgIHUzMiBmcmFjLCB2YWw7 Cj4gPiArCj4gPiArICAgICBpZiAoc3RhdGUtPnBvbGFyaXR5ICE9IFBXTV9QT0xBUklUWV9JTlZF UlNFRCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBp ZiAoc3RhdGUtPnBlcmlvZCAhPSBwd20tPnJlYWxfcGVyaW9kKQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIGR1dHlfY3ljbGUgPSBzdGF0ZS0+ZHV0eV9j eWNsZTsKPiA+ICsgICAgIGlmICghc3RhdGUtPmVuYWJsZWQpCj4gPiArICAgICAgICAgICAgIGR1 dHlfY3ljbGUgPSAwOwo+ID4gKwo+ID4gKyAgICAgZnJhYyA9IGRpdl91NjQoKHU2NClkdXR5X2N5 Y2xlICogMHhGRkZGLCBzdGF0ZS0+cGVyaW9kKTsKPiA+ICsgICAgIGZyYWMgPSBtaW4oZnJhYywg MHhGRkZGVSk7Cj4KPiBJZiBDTVBXSURUSCB3YXMgb25seSA4LCB3ZSdkIG5lZWQgMHhmZiBoZXJl IGluc3RlYWQgb2YgMHhmZmZmLCByaWdodD8gU28KPiBiZXR0ZXIgdXNlCj4KPiAgICAgICAgICgx IDw8IFBXTV9TSUZJVkVfQ01QV0lEVEgpIC0gMQo+Cj4gaGVyZSwgbWF5YmUgImhpZGRlbiIgYmVo aW5kIGEgY3BwIGRlZmluZS4KClllcywgcmlnaHQuIEkgd2lsbCBtYWtlIHRoaXMgY2hhbmdlLgoK Pgo+IEluIGEgcHJldmlvdXMgcmV2aWV3IHJvdW5kIEkgaGFkIGRvdWJ0cyBhYm91dCB0aGUgY2Fs Y3VsYXRpb24gb2YgZnJhYwo+IGFuZCBJIHRoaW5rIHRoZXkgd2VyZSBhZGRyZXNzZWQgd3Jvbmds eS4KPiBMb29raW5nIGF0IHRoZSBmaWd1cmUgYXQgdGhlIHN0YXJ0IG9mIGNoYXB0ZXIgMTQuOSBp biB0aGUgcmVmZXJlbmNlCj4gbWFudWFsOiBUaGV5IHVzZSAoZGlmZmVyZW50IHRoYW4gdGhlIGRy aXZlciBoZXJlKSBwd21jbXAwPTYgYW5kCj4gcHdtemVyb2NtcD0xLiBUaGVuIGEgcGVyaW9kIGlz IDcgY2xvY2sgY3ljbGVzIGxvbmcgYW5kIHB3bWNtcFggbXVzdCBiZSA3Cj4gKGZvciBYID4gMCkg dG8geWllbGQgYSAxMDAlIHNpZ25hbC4gU28gcHdtY21wWCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBv cgo+IGVxdWFsIHRvIHRoZSBwZXJpb2QgKGluIGNsb2NrIGN5Y2xlcykuCj4KPiBIZXJlIHdlJ3Jl IHVzaW5nIHB3bXplcm9jbXA9MCwgc3RpbGwgdGhlIGNvbnN0cmFpbnQKPgo+ICAgICAgICAgcHdt Y21wWCA+PSBwZXJpb2QKPgo+IG11c3QgYmUgdHJ1ZSBmb3IgYSAxMDAlIGN5Y2xlLiAoUmlnaHQ/ KSBXaXRoIHB3bXplcm9jbXA9MCB0aGUgcGVyaW9kIGlzCj4gMHgxMDAwMCBjbG9jayBjeWNsZXMs IHNvIHB3bWNtcFggbXVzdCBiZSA+PSAweDEwMDAwIHRvIHlpZWxkIGEgMTAwJQo+IHNpZ25hbC4g QXMgdGhpcyBpcyBub3QgcG9zc2libGUgKHB3bWNtcFggaXMgYSAxNiBiaXQgdmFsdWUgdGhhdCBj YW4gb25seQo+IGhvbGQgdXAgdG8gMHhmZmZmKSB0aGUgb3V0cHV0IGNhbm5vdCB5aWVsZCAxMDAl Lgo+Cj4gU28gSSB0aGluayB0aGUgbW9zdCBjb3JyZWN0IGltcGxlbWVudGF0aW9uIGhlcmUgaXM6 Cj4KPiAgICAgICAgIGZyYWMgPSAoZHV0eV9jeWNsZSAqICgxIDw8IFBXTV9TSUZJVkVfQ01QV0lE VEgpICsgKDEgPDwgUFdNX1NJRklWRV9DTVBXSURUSCkgLyAyKSAvIHBlcmlvZDsKPiAgICAgICAg IC8qIFNvcnJ5LCB3ZSBjYW5ub3QgZG8gMTAwJSA6LSggKi8KPiAgICAgICAgIGZyYWMgPSBtaW4o ZnJhYywgKDEgPDwgUFdNX1NJRklWRV9DTVBXSURUSCkgLSAxKTsKPgoKSSB3aWxsIG9uY2UgYWdh aW4gZ28gdGhyb3VnaCB0aGUgc3BlY3MsIGlmIGl0IHNlZW1zIGNvcnJlY3QgSSB3aWxsCmltcGxl bWVudCB0aGUgYWJvdmUuCgo+IFRoaWVycnk6IFdoYXQgaXMgdGhlIGNvcnJlY3Qgcm91bmRpbmcg c3RyYXRlZ3k/IEkgYXNzdW1lZCAicm91bmQgdG8KPiBuZWFyZXN0IiAod2l0aCByb3VuZCBoYWxm IHVwKS4gSWYgd2Ugd2FudCBzb21ldGhpbmcgbGlrZSBjbGtfcm91bmRfcmF0ZQo+IGZvciBQV01z IGluIHRoZSBmdXR1cmUgcm91bmRpbmcgZG93biBtaWdodCBiZSBlYXNpZXIgdG8gaGFuZGxlLgo+ Cj4gTm90ZSB0aGF0IHB3bV9zaWZpdmVfZ2V0X3N0YXRlIGlzIGFscmVhZHkgKHdlbGwsIG9yIHN0 aWxsKSB1c2luZyB0aGlzIGFzCj4gaXQgaGFzOgo+Cj4gICAgICAgICBzdGF0ZS0+ZHV0eV9jeWNs ZSA9ICgodTY0KWR1dHkgKiBwd20tPnJlYWxfcGVyaW9kKSA+PiBDTVBXSURUSDsKPgo+IHdoaWNo IGFsd2F5cyB5aWVsZHMgc29tZXRoaW5nIHNtYWxsZXIgdGhhbiByZWFkX3BlcmlvZCBhcyBkdXR5 IGlzCj4gc21hbGxlciB0aGFuIDEgPDwgUFdNX1NJRklWRV9DTVBXSURUSC4KPgo+IEkgdHJpZWQg dG8gdW5kZXJzdGFuZCB0aGUgSVAgc291cmNlIGF0Cj4gaHR0cHM6Ly9naXRodWIuY29tL3NpZml2 ZS9zaWZpdmUtYmxvY2tzL2Jsb2IvbWFzdGVyL3NyYy9tYWluL3NjYWxhL2RldmljZXMvcHdtL1BX TS5zY2FsYQo+IHRvIGNvbmZpcm0gKG9yIGRpc3Byb3ZlKSB0aGlzIHRoZW9yeSwgYnV0IEkgZmFp bGVkLgo+Cj4gQXNzdW1pbmcgbXkgYW5hbHlzaXMgaXMgdHJ1ZSwgSSdkIGxpa2UgdG8gaGF2ZSBp dCBkb2N1bWVudGVkCj4gcHJvbWluZW50bHkgaW4gdGhlIGRyaXZlciB0aGF0IHRoZSBoYXJkd2Fy ZSBjYW5ub3QgZ2VuZXJhdGUgYSAxMDAlIGR1dHkKPiBjeWNsZS4KPgo+ID4gKyAgICAgdmFsID0g cmVhZGwocHdtLT5yZWdzICsgUFdNX1NJRklWRV9QV01DRkcpOwo+ID4gKyAgICAgdmFsIHw9ICgx IDw8IFBXTV9TSUZJVkVfUFdNQ0ZHX0RFR0xJVENIKTsKPgo+IE5vIHBhcmVudGhlc2lzIG5lY2Vz c2FyeS4gWW91IG1pZ2h0IHdhbnQgdG8gY29uc2lkZXIgdXNpbmcgdGhlIEJJVCBtYWNybwo+IGhl cmUsIG1heWJlIGFscmVhZHkgaW4gdGhlIGRlZmluaXRpb24gb2YgUFdNX1NJRklWRV9QV01DRkdf REVHTElUQ0guCgpTdXJlLCB3aWxsIHVzZSBCSVQgbWFjcm8uCgo+Cj4gPiArICAgICB3cml0ZWwo dmFsLCBwd20tPnJlZ3MgKyBQV01fU0lGSVZFX1BXTUNGRyk7Cj4gPiArCj4gPiArICAgICB3cml0 ZWwoZnJhYywgcHdtLT5yZWdzICsgUFdNX1NJRklWRV9QV01DTVAwICsgZGV2LT5od3B3bSAqIFNJ WkVfUFdNQ01QKTsKPiA+ICsKPiA+ICsgICAgIHZhbCAmPSB+KDEgPDwgUFdNX1NJRklWRV9QV01D RkdfREVHTElUQ0gpOwo+ID4gKyAgICAgd3JpdGVsKHZhbCwgcHdtLT5yZWdzICsgUFdNX1NJRklW RV9QV01DRkcpOwo+ID4gKwo+ID4gKyAgICAgcHdtX3NpZml2ZV9nZXRfc3RhdGUoY2hpcCwgZGV2 LCBzdGF0ZSk7Cj4KPiBUaGllcnJ5OiBUaGlzIGNoYW5nZXMgdGhlIHB3bV9zdGF0ZS4gSXMgdGhp cyBob3cgdGhpcyBzaG91bGQgYmUgZG9uZT8KCkkgYW0gcmVtb3ZpbmcgdGhpcyAncHdtX3NpZml2 ZV9nZXRfc3RhdGUnIGNhbGwgKE5vIHN0YXRlIGNvcnJlY3Rpb24gaW4gYW55IGNhc2UpCgo+Cj4g PiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBwd21fb3BzIHB3bV9zaWZpdmVfb3BzID0gewo+ID4gKyAgICAgLmdldF9zdGF0ZSA9IHB3 bV9zaWZpdmVfZ2V0X3N0YXRlLAo+ID4gKyAgICAgLmFwcGx5ID0gcHdtX3NpZml2ZV9hcHBseSwK PiA+ICsgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGlj IHN0cnVjdCBwd21fZGV2aWNlICpwd21fc2lmaXZlX3hsYXRlKHN0cnVjdCBwd21fY2hpcCAqY2hp cCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IG9mX3BoYW5kbGVfYXJncyAqYXJncykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgcHdtX3Np Zml2ZV9kZGF0YSAqcHdtID0gdG9fcHdtX3NpZml2ZV9jaGlwKGNoaXApOwo+ID4gKyAgICAgc3Ry dWN0IHB3bV9kZXZpY2UgKmRldjsKPiA+ICsKPiA+ICsgICAgIGlmIChhcmdzLT5hcmdzWzBdID49 IGNoaXAtPm5wd20pCj4gPiArICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ ID4gKwo+ID4gKyAgICAgZGV2ID0gcHdtX3JlcXVlc3RfZnJvbV9jaGlwKGNoaXAsIGFyZ3MtPmFy Z3NbMF0sIE5VTEwpOwo+ID4gKyAgICAgaWYgKElTX0VSUihkZXYpKQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gZGV2Owo+ID4gKwo+ID4gKyAgICAgLyogVGhlIHBlcmlvZCBjYW5ub3QgYmUgY2hh bmdlZCBvbiBhIHBlci1QV00gYmFzaXMgKi8KPiA+ICsgICAgIGRldi0+YXJncy5wZXJpb2QgPSBw d20tPnJlYWxfcGVyaW9kOwo+ID4gKyAgICAgZGV2LT5hcmdzLnBvbGFyaXR5ID0gUFdNX1BPTEFS SVRZX05PUk1BTDsKPiA+ICsgICAgIGlmIChhcmdzLT5hcmdzWzFdICYgUFdNX1BPTEFSSVRZX0lO VkVSU0VEKQo+ID4gKyAgICAgICAgICAgICBkZXYtPmFyZ3MucG9sYXJpdHkgPSBQV01fUE9MQVJJ VFlfSU5WRVJTRUQ7Cj4KPiBUaGUgZHJpdmVyIGRvZXMgb25seSBzdXBwb3J0IFBXTV9QT0xBUklU WV9JTlZFUlNFRC4gU28gSSBndWVzcyB0aGlzCj4gc2hvdWxkIGJlOgo+Cj4gICAgICAgICBkZXYt PmFyZ3MucG9sYXJpdHkgPSBQV01fUE9MQVJJVFlfSU5WRVJTRUQ7Cj4gICAgICAgICBpZiAoIShh cmdzLT5hcmdzWzFdICYgUFdNX1BPTEFSSVRZX0lOVkVSU0VEKSkKPiAgICAgICAgICAgICAgICAg ZGV2X3dhcm4oZGV2LCAiLi4uIik7CgpPaywgd2lsbCBtYWtlIHRoaXMgY2hhbmdlLgoKPgo+ID4g Kwo+ID4gKyAgICAgcmV0dXJuIGRldjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgcHdt X3NpZml2ZV91cGRhdGVfY2xvY2soc3RydWN0IHB3bV9zaWZpdmVfZGRhdGEgKnB3bSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJhdGUpCj4gPiAr ewo+ID4gKyAgICAgLyogKDEgPDwgKDE2K3NjYWxlKSkgKiAxMF45L3JhdGUgPSByZWFsX3Blcmlv ZCAqLwo+ID4gKyAgICAgdW5zaWduZWQgbG9uZyBzY2FsZV9wb3cgPQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIChwd20tPmFwcHJveF9wZXJpb2QgKiAodTY0KXJhdGUpIC8gTlNFQ19QRVJfU0VD Owo+ID4gKyAgICAgaW50IHNjYWxlID0gY2xhbXAoaWxvZzIoc2NhbGVfcG93KSAtIDE2LCAwLCAw eGYpOwo+Cj4gaXMgdGhpcyAxNiBpbiByZWFsaXR5IFBXTV9TSUZJVkVfQ01QV0lEVEg/CgpZZXMs IGl0IHNlZW1zIHNvLiBJIHdpbGwgcmVwbGFjZSBpdCB3aXRoIHRoZSBtYWNyby4KCj4KPiA+ICsg ICAgIHdyaXRlbCgoMSA8PCBQV01fU0lGSVZFX1BXTUNGR19FTl9BTFdBWVMpIHwgKHNjYWxlIDw8 Cj4gPiArICAgICAgICAgICAgUFdNX1NJRklWRV9QV01DRkdfU0NBTEUpLCBwd20tPnJlZ3MgKyBQ V01fU0lGSVZFX1BXTUNGRyk7Cj4gPiArCj4gPiArICAgICAvKiBBcyBzY2FsZSA8PSAxNSB0aGUg c2hpZnQgb3BlcmF0aW9uIGNhbm5vdCBvdmVyZmxvdy4gKi8KPiA+ICsgICAgIHB3bS0+cmVhbF9w ZXJpb2QgPSBkaXY2NF91bCgxMDAwMDAwMDAwVUxMIDw8ICgxNiArIHNjYWxlKSwgcmF0ZSk7Cj4g PiArICAgICBkZXZfZGJnKHB3bS0+Y2hpcC5kZXYsICJOZXcgcmVhbF9wZXJpb2QgPSAldSBuc1xu IiwgcHdtLT5yZWFsX3BlcmlvZCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcHdtX3Np Zml2ZV9jbG9ja19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpk YXRhKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBjbGtfbm90aWZpZXJfZGF0YSAqbmRhdGEgPSBk YXRhOwo+ID4gKyAgICAgc3RydWN0IHB3bV9zaWZpdmVfZGRhdGEgKnB3bSA9Cj4gPiArICAgICAg ICAgICAgIGNvbnRhaW5lcl9vZihuYiwgc3RydWN0IHB3bV9zaWZpdmVfZGRhdGEsIG5vdGlmaWVy KTsKPiA+ICsKPiA+ICsgICAgIGlmIChldmVudCA9PSBQT1NUX1JBVEVfQ0hBTkdFKQo+ID4gKyAg ICAgICAgICAgICBwd21fc2lmaXZlX3VwZGF0ZV9jbG9jayhwd20sIG5kYXRhLT5uZXdfcmF0ZSk7 Cj4gPiArCj4gPiArICAgICByZXR1cm4gTk9USUZZX09LOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgaW50IHB3bV9zaWZpdmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ ICt7Cj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ID4gKyAgICAg c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7Cj4gPiArICAgICBz dHJ1Y3QgcHdtX3NpZml2ZV9kZGF0YSAqcHdtOwo+ID4gKyAgICAgc3RydWN0IHB3bV9jaGlwICpj aGlwOwo+ID4gKyAgICAgc3RydWN0IHJlc291cmNlICpyZXM7Cj4gPiArICAgICBpbnQgcmV0Owo+ ID4gKwo+ID4gKyAgICAgcHdtID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwd20pLCBHRlBf S0VSTkVMKTsKPiA+ICsgICAgIGlmICghcHdtKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiA+ICsKPiA+ICsgICAgIGNoaXAgPSAmcHdtLT5jaGlwOwo+ID4gKyAgICAgY2hpcC0+ ZGV2ID0gZGV2Owo+ID4gKyAgICAgY2hpcC0+b3BzID0gJnB3bV9zaWZpdmVfb3BzOwo+ID4gKyAg ICAgY2hpcC0+b2ZfeGxhdGUgPSBwd21fc2lmaXZlX3hsYXRlOwo+ID4gKyAgICAgY2hpcC0+b2Zf cHdtX25fY2VsbHMgPSAyOwo+ID4gKyAgICAgY2hpcC0+YmFzZSA9IC0xOwo+ID4gKyAgICAgY2hp cC0+bnB3bSA9IDQ7Cj4gPiArCj4gPiArICAgICByZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihu b2RlLCAic2lmaXZlLHBlcmlvZC1ucyIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmcHdtLT5hcHByb3hfcGVyaW9kKTsKPiA+ICsKPiA+ICsgICAgIGlmIChyZXQgPCAwKSB7 Cj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiVW5hYmxlIHRvIHJlYWQgc2lmaXZlLHBl cmlvZC1ucyBmcm9tIERUU1xuIik7Cj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAr ICAgICB9Cj4gPiArCj4gPiArICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwg SU9SRVNPVVJDRV9NRU0sIDApOwo+ID4gKyAgICAgcHdtLT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKGRldiwgcmVzKTsKPiA+ICsgICAgIGlmIChJU19FUlIocHdtLT5yZWdzKSkgewo+ID4g KyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBtYXAgSU8gcmVzb3VyY2VzXG4i KTsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocHdtLT5yZWdzKTsKPiA+ICsgICAg IH0KPiA+ICsKPiA+ICsgICAgIHB3bS0+Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7Cj4g PiArICAgICBpZiAoSVNfRVJSKHB3bS0+Y2xrKSkgewo+ID4gKyAgICAgICAgICAgICBpZiAoUFRS X0VSUihwd20tPmNsaykgIT0gLUVQUk9CRV9ERUZFUikKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBmaW5kIGNvbnRyb2xsZXIgY2xvY2tcbiIpOwo+ID4g KyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwd20tPmNsayk7Cj4gPiArICAgICB9Cj4gPiAr Cj4gPiArICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHdtLT5jbGspOwo+ID4gKyAgICAg aWYgKHJldCkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFi bGUgY2xvY2sgZm9yIHB3bTogJWRcbiIsIHJldCk7Cj4gPiArICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICAvKiBXYXRjaCBmb3IgY2hhbmdlcyB0byB1 bmRlcmx5aW5nIGNsb2NrIGZyZXF1ZW5jeSAqLwo+ID4gKyAgICAgcHdtLT5ub3RpZmllci5ub3Rp Zmllcl9jYWxsID0gcHdtX3NpZml2ZV9jbG9ja19ub3RpZmllcjsKPiA+ICsgICAgIHJldCA9IGNs a19ub3RpZmllcl9yZWdpc3Rlcihwd20tPmNsaywgJnB3bS0+bm90aWZpZXIpOwo+ID4gKyAgICAg aWYgKHJldCkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdp c3RlciBjbG9jayBub3RpZmllcjogJWRcbiIsIHJldCk7Cj4gPiArICAgICAgICAgICAgIGdvdG8g ZGlzYWJsZV9jbGs7Cj4gPiArICAgICB9Cj4KPiBXb3VsZCBpdCBtYWtlIHNlbnNlIHRvIG9ubHkg ZW5hYmxlIHRoZSBjbG9jayB3aGVuIHRoZSBwd20gaXMgZW5hYmxlZD8KPiAoSWYgeWVzLCBob3cg ZG9lcyB0aGUgb3V0cHV0IGJlaGF2ZSBpZiB0aGUgY2xvY2sgaXMgZGlzYWJsZWQgd2hpbGUgdGhl Cj4gaGFyZHdhcmUgaXMgZW5hYmxlZD8gSSBhc3N1bWUgdGhlIG91dHB1dCBqdXN0IGZyZWV6ZXMg YXQgdGhlIHN0YXRlIHdoZXJlCj4gaXQgaGFwcGVucyB0byBiZT8pCgpZZXMuIE5vdCBzdXJlIGFi b3V0IHRoZSBiZWhhdmlvdXIgb2YgaGFyZHdhcmUgd2hlbiB0aGUgY2xvY2sgaXMgZGlzYWJsZWQu ClRoZSBiZWhhdmlvdXIgc2hvdWxkIGJlIGxpa2UgeW91IHNhaWQuIElmIHRoZXJlIGlzIG5vIHN0 cm9uZyByZWFzb24KdGhlbiB3ZSBjYW4ga2VlcCBpdCBhcyBpdCBpcyByaWdodCBub3cKb3IgZWxz ZSBpZiB5b3Ugd2FudCBJIGNhbiBtYWtlIHRoZSBuZWNlc3NhcnkgY2hhbmdlLgoKPgo+ID4gKyAg ICAgLyogSW5pdGlhbGl6ZSBQV00gY29uZmlnICovCj4gPiArICAgICBwd21fc2lmaXZlX3VwZGF0 ZV9jbG9jayhwd20sIGNsa19nZXRfcmF0ZShwd20tPmNsaykpOwo+ID4gKwo+ID4gKyAgICAgcmV0 ID0gcHdtY2hpcF9hZGQoY2hpcCk7Cj4gPiArICAgICBpZiAocmV0IDwgMCkgewo+ID4gKyAgICAg ICAgICAgICBkZXZfZXJyKGRldiwgImNhbm5vdCByZWdpc3RlciBQV006ICVkXG4iLCByZXQpOwo+ ID4gKyAgICAgICAgICAgICBnb3RvIHVucmVnaXN0ZXJfY2xrOwo+ID4gKyAgICAgfQo+ID4gKwo+ ID4gKyAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHdtKTsKPiA+ICsgICAgIGRldl9k YmcoZGV2LCAiU2lGaXZlIFBXTSBjaGlwIHJlZ2lzdGVyZWQgJWQgUFdNc1xuIiwgY2hpcC0+bnB3 bSk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICt1bnJlZ2lzdGVyX2NsazoK PiA+ICsgICAgIGNsa19ub3RpZmllcl91bnJlZ2lzdGVyKHB3bS0+Y2xrLCAmcHdtLT5ub3RpZmll cik7Cj4gPiArZGlzYWJsZV9jbGs6Cj4gPiArICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHdt LT5jbGspOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh dGljIGludCBwd21fc2lmaXZlX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCj4g PiArewo+ID4gKyAgICAgc3RydWN0IHB3bV9zaWZpdmVfZGRhdGEgKnB3bSA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKGRldik7Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgcmV0ID0g cHdtY2hpcF9yZW1vdmUoJnB3bS0+Y2hpcCk7Cj4gPiArICAgICBjbGtfbm90aWZpZXJfdW5yZWdp c3Rlcihwd20tPmNsaywgJnB3bS0+bm90aWZpZXIpOwo+ID4gKyAgICAgY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHB3bS0+Y2xrKTsKPiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHB3bV9zaWZpdmVfb2ZfbWF0Y2hbXSA9 IHsKPiA+ICsgICAgIHsgLmNvbXBhdGlibGUgPSAic2lmaXZlLHB3bTAiIH0sCj4gPiArICAgICB7 fSwKPiA+ICt9Owo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHB3bV9zaWZpdmVfb2ZfbWF0 Y2gpOwo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHB3bV9zaWZpdmVf ZHJpdmVyID0gewo+ID4gKyAgICAgLnByb2JlID0gcHdtX3NpZml2ZV9wcm9iZSwKPiA+ICsgICAg IC5yZW1vdmUgPSBwd21fc2lmaXZlX3JlbW92ZSwKPiA+ICsgICAgIC5kcml2ZXIgPSB7Cj4gPiAr ICAgICAgICAgICAgIC5uYW1lID0gInB3bS1zaWZpdmUiLAo+ID4gKyAgICAgICAgICAgICAub2Zf bWF0Y2hfdGFibGUgPSBwd21fc2lmaXZlX29mX21hdGNoLAo+ID4gKyAgICAgfSwKPiA+ICt9Owo+ ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocHdtX3NpZml2ZV9kcml2ZXIpOwo+ID4gKwo+ID4g K01PRFVMRV9ERVNDUklQVElPTigiU2lGaXZlIFBXTSBkcml2ZXIiKTsKPiA+ICtNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7Cj4KPiBCZXN0IHJlZ2FyZHMKPiBVd2UKPgo+IC0tCj4gUGVuZ3V0cm9u aXggZS5LLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXdlIEtsZWluZS1Lw7ZuaWcgICAg ICAgICAgICB8Cj4gSW5kdXN0cmlhbCBMaW51eCBTb2x1dGlvbnMgICAgICAgICAgICAgICAgIHwg aHR0cDovL3d3dy5wZW5ndXRyb25peC5kZS8gIHwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNj dkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtcmlzY3YK