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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 101D0C10F13 for ; Mon, 8 Apr 2019 12:35:22 +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 D23D4214C6 for ; Mon, 8 Apr 2019 12:35:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="sM7RgAqK"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="YiGxLKNV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D23D4214C6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lg5jNNCuIL1DwArKjV/ilPW3+kBrTQBXe/DmIoYC0Kw=; b=sM7RgAqKFzUcUA tC8fE9Pc4ULgIUHyV5VQ/CZ7tsExi3ITcmX2dwaFEeMjR1zaCpE63frFQDw3c7y4AkQKx9SzorbY+ p88gfPqBvSimcr9E6AAjYdERPtSeA9SS/4FXdAPNpDYqAyGs04zeOLHNT0Q+fkMcrUqNMHmHjlV5V FuijfiiLZ3Yv2F/8iFqW+gzr76grIvHvJCs0shfBGUoCRiEHqPeR29sM1p7b8jBlgn92NiD6HwtR8 UiEnkg3khzPuuVFzlsx1ajNjPRSLzNW2dh58VT/NIM7BQVngZB8ZoAR4OXtM9F0DtgJzxr3xsiBjB AO7K80GQCZpJBeKYqGog==; 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 1hDTUY-0000Lv-D8; Mon, 08 Apr 2019 12:35:14 +0000 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hDTUT-0000Jy-Mh for linux-arm-kernel@lists.infradead.org; Mon, 08 Apr 2019 12:35:12 +0000 Received: by mail-wm1-x342.google.com with SMTP id y197so14549347wmd.0 for ; Mon, 08 Apr 2019 05:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=M7zRJg+PBLKE0GeNK/99x3gHx/GcYNdK/4jD8kY5bxg=; b=YiGxLKNVEB8xE42zmO6PiHK7d/Wc3U2ttwqnDwmQ7x5T9V+3prvu25hi44aHxPvx5R NxXHrFE+ERUU+hrRZ2oMAvaKeXZqphG9fOkDtXEva+l1E80EhIWQBqdm0tgz/P77rP9q r2jBDK/3RcO96wUb5KtXSpE7erkYcZndFlNwaUIIgafzgfXLkWthpyu53fH94kiJylti gK3Om7rj4Fn7iKcsXnmw9AeAEgiMXGKS00qvKaTDJ7xlGeMpUXom/AhGtpETPnl8UqHl pn171ORUertyr0WjsbZHrMPsB1euZtrWiltOFzolOvGNdKosPcuio6CY/Trm7/hrHH7Y QhxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=M7zRJg+PBLKE0GeNK/99x3gHx/GcYNdK/4jD8kY5bxg=; b=Pp4bYqfG74g6WhgvQ3lNFjNtG7+exEVPpNJqQ2MFeWQ35l189NkH1/+sJI8nPjNW/N x0R6VpkBjNzbU+lWzc+pT8RcQMkmqj7pUDVkRXOkfjNG/1WLz8nlyBURQ4YMeQmMUyxs Nc0J7xDhN+n3PWraVS7aM6FQiaKHI2BuM5nnJMTs9UtCA1+0MTG7aH7YUIaSUdjVWnmK ELjsMM6KWEmUcf/31WBbUP4Z/AA8a+eEext5pPivdjvjO2DlYGObkdwzJM8m8fjpUqRe +u4K/Pt8GC7wu2CbWujF/DZzeoExLzrdr1V9OmAs1hal8dL0L+ygQpGMwla4MF/z69wn zf3g== X-Gm-Message-State: APjAAAWsoU3KKo73WrJe1C70T8JaqJdqfGVm5Y9yKNmYB+c5aA8RPHfB BYGNu/UXTigXfxketv2dpXm5jw== X-Google-Smtp-Source: APXvYqzcgje8W5zEXsNQL+Mb5fAgyCQ6+DULZlQUvLHw6z3nIoEO5OsLBXQ10sR8wMNDuziYZE8ANg== X-Received: by 2002:a1c:43c2:: with SMTP id q185mr16549539wma.53.1554726907546; Mon, 08 Apr 2019 05:35:07 -0700 (PDT) Received: from [192.168.0.41] (sju31-1-78-210-255-2.fbx.proxad.net. [78.210.255.2]) by smtp.googlemail.com with ESMTPSA id v6sm34760134wrt.56.2019.04.08.05.35.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 05:35:06 -0700 (PDT) Subject: Re: [PATCH 2/5] clocksource/drivers/timer-microchip-pit64b: add Microchip PIT64B support To: Alexandre Belloni References: <1552580772-8499-1-git-send-email-claudiu.beznea@microchip.com> <1552580772-8499-3-git-send-email-claudiu.beznea@microchip.com> <20190408121141.GK7480@piout.net> From: Daniel Lezcano Message-ID: Date: Mon, 8 Apr 2019 14:35:05 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190408121141.GK7480@piout.net> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190408_053509_761273_6A2D0108 X-CRM114-Status: GOOD ( 28.53 ) X-BeenThere: linux-arm-kernel@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, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Ludovic.Desroches@microchip.com, robh+dt@kernel.org, tglx@linutronix.de, Claudiu.Beznea@microchip.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDgvMDQvMjAxOSAxNDoxMSwgQWxleGFuZHJlIEJlbGxvbmkgd3JvdGU6Cj4gSGkgRGFuaWVs LAo+IAo+IE9uIDA4LzA0LzIwMTkgMTA6NDM6MjYrMDIwMCwgRGFuaWVsIExlemNhbm8gd3JvdGU6 Cj4+IEhpIENsYXVkaXUsCj4+Cj4+IE9uIDE0LzAzLzIwMTkgMTc6MjYsIENsYXVkaXUuQmV6bmVh QG1pY3JvY2hpcC5jb20gd3JvdGU6Cj4+PiBGcm9tOiBDbGF1ZGl1IEJlem5lYSA8Y2xhdWRpdS5i ZXpuZWFAbWljcm9jaGlwLmNvbT4KPj4+Cj4+PiBBZGQgZHJpdmVyIGZvciBNaWNyb2NoaXAgUElU NjRCIHRpbWVyLiBUaW1lciBjb3VsZCBiZSB1c2VkIGluIGNvbnRpbnVvdXMKPj4+IG1vZGUgb3Ig b25lc2hvdCBtb2RlLiBUaGUgaGFyZHdhcmUgaGFzIDJ4MzIgYml0IHJlZ2lzdGVycyBmb3IgcGVy aW9kCj4+PiBlbXVsYXRpbmcgYSA2NCBiaXQgdGltZXIuIFRoZSBMU0JfUFIgYW5kIE1TQl9QUiBy ZWdpc3RlcnMgYXJlIHVzZWQgdG8gc2V0Cj4+PiB0aGUgcGVyaW9kIHZhbHVlIChjb21wYXJlIHZh bHVlKS4gVExTQiBhbmQgVE1TQiBrZWVwcyB0aGUgY3VycmVudCB2YWx1ZQo+Pj4gb2YgdGhlIGNv dW50ZXIuIEFmdGVyIGEgY29tcGFyZSB0aGUgVExTQiBhbmQgVE1TQiByZWdpc3RlciByZXNldHMu IEFwYXJ0Cj4+PiBmcm9tIHRoaXMgdGhlIGhhcmR3YXJlIGhhcyBTTU9EIGJpdCBpbiBtb2RlIHJl Z2lzdGVyIHRoYXQgYWxsb3cgdG8KPj4+IHJlY29uZmlndXJlIHRoZSB0aW1lciB3aXRob3V0IHJl c2V0IGFuZCBzdGFydCBjb21tYW5kcyAoc3RhcnQgY29tbWFuZAo+Pj4gd2hpbGUgdGltZXIgaXMg YWN0aXZlIGlzIGlnbm9yZWQpLgo+Pj4gVGhlIGRyaXZlciB1c2VzIFBJVDY0QiB0aW1lciBhcyBj bG9ja3NvdXJjZSBvciBjbG9ja2V2ZW50LiBGaXJzdCByZXF1ZXN0ZWQKPj4+IHRpbWVyIHdvdWxk IGJlIHJlZ2lzdGVyZWQgYXMgY2xvY2tldmVudCwgc2Vjb25kIG9uZSB3b3VsZCBiZSByZWdpc3Rl cmVkIGFzCj4+PiBjbG9ja3NvdXJjZS4KPj4KPj4gRXZlbiBpZiB0aGF0IHdhcyBkb25lIHRoaXMg d2F5IGJlZm9yZSwgYXNzdW1pbmcgdGhlIERUIGRlc2NyaWJlcyB0aGUKPj4gY2xvY2tldmVudCBh dCB0aGUgZmlyc3QgcGxhY2UgYW5kIHRoZW4gdGhlIGNsb2Nrc291cmNlLCBpdCBpcyBhIGZyYWdp bGUKPj4gYXBwcm9hY2guCj4+Cj4+IFdoYXQgYWJvdXQgdXNpbmcgb25lIG9mIHRoZXNlIGFwcHJv YWNoPwo+Pgo+PiBlZy4KPj4KPj4gYXJjaC9hcm0vYm9vdC9kdHMvYXQ5MXNhbTkyNjFlay5kdHMK Pj4KPj4gY2hvc2VuIHsKPj4gCWJvb3RhcmdzID0gInJvb3Rmc3R5cGU9dWJpZnMgdWJpLm10ZD01 IHJvb3Q9dWJpMDpyb290ZnMgcnciOwo+PiAgICAgICAgICAgICAgICAgc3Rkb3V0LXBhdGggPSAi c2VyaWFsMDoxMTUyMDBuOCI7Cj4+Cj4+IAljbG9ja3NvdXJjZSB7Cj4+IAkJdGltZXIgPSA8JnRp bWVyMD47Cj4+IAl9Owo+Pgo+PiAgICAgICAgIGNsb2NrZXZlbnQgewo+PiAJCXRpbWVyID0gPCZ0 aW1lcjE+Owo+PiAgICAgICAgIH07Cj4+IH07Cj4+Cj4gCj4gSSBzdWdnZXN0ZWQgYW5kIGltcGxl bWVudGVkIGV4YWN0bHkgdGhhdCBiYWNrIGluIDIwMTcgYW5kIGl0IHdhcyBzaG90Cj4gZG93biBi eSBib3RoIFJvYiBhbmQgTWFyazoKPiAKPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIw MTcxMjEzMTg1MzEzLjIwMDE3LTEtYWxleGFuZHJlLmJlbGxvbmlAZnJlZS1lbGVjdHJvbnMuY29t Lwo+IAo+IEF0IHRoZSB0aW1lLCB5b3UgZGlkbid0IGRvICphbnl0aGluZyogdG8gZ2V0IGl0IGFj Y2VwdGVkLCB5b3Ugc3RheWVkCj4gc2lsZW50LgoKV2hhdCBhYm91dCBjb21taXQgNTFmMGFlYjJk MjFmMSA/CgoKQXV0aG9yOiBBbGV4YW5kcmUgQmVsbG9uaSA8YWxleGFuZHJlLmJlbGxvbmlAZnJl ZS1lbGVjdHJvbnMuY29tPgpEYXRlOiAgIFdlZCBKdW4gOCAxNzowODo1NyAyMDE2ICswMjAwCgog ICAgQVJNOiBkdHM6IGF0OTE6IGF0OTFzYW05MjYxZWs6IHVzZSBUQ0IwIGFzIHRpbWVycwoKICAg IFVzZSB0Y2IwIGZvciB0aW1lcnMgYXMgc2VsZWN0ZWQgaW4gYXQ5MV9kdF9kZWZjb25maWcuCgog ICAgQWNrZWQtYnk6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgogICAg U2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGZyZWUt ZWxlY3Ryb25zLmNvbT4KCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9hdDkxc2FtOTI2 MWVrLmR0cwpiL2FyY2gvYXJtL2Jvb3QvZHRzL2F0OTFzYW05MjYxZWsuZHRzCmluZGV4IDk3MzNk YjNmNzM5Yi4uYTI5ZmMwNDk0MDc2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2R0cy9hdDkx c2FtOTI2MWVrLmR0cworKysgYi9hcmNoL2FybS9ib290L2R0cy9hdDkxc2FtOTI2MWVrLmR0cwpA QCAtMTUsNiArMTUsMTQgQEAKICAgICAgICBjaG9zZW4gewogICAgICAgICAgICAgICAgYm9vdGFy Z3MgPSAicm9vdGZzdHlwZT11YmlmcyB1YmkubXRkPTUgcm9vdD11YmkwOnJvb3RmcyBydyI7CiAg ICAgICAgICAgICAgICBzdGRvdXQtcGF0aCA9ICJzZXJpYWwwOjExNTIwMG44IjsKKworICAgICAg ICAgICAgICAgY2xvY2tzb3VyY2UgeworICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9IDwm dGltZXIwPjsKKyAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgIGNsb2NrZXZlbnQg eworICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9IDwmdGltZXIxPjsKKyAgICAgICAgICAg ICAgIH07CiAgICAgICAgfTsKCiAgICAgICAgbWVtb3J5IHsKQEAgLTEyNSw2ICsxMzMsMTggQEAK ICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgYXBiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgdGNiMDogdGltZXJAZmZmYTAwMDAgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpbWVyMDogdGltZXJAMCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21wYXRpYmxlID0gImF0bWVsLHRjYi10aW1lciI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD4sIDwxPjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIx OiB0aW1lckAyIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBh dGlibGUgPSAiYXRtZWwsdGNiLXRpbWVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZyA9IDwyPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owor ICAgICAgICAgICAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICAgICAgICAgICAgIHVzYjE6 IGdhZGdldEBmZmZhNDAwMCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRtZWws dmJ1cy1ncGlvID0gPCZwaW9CIDI5CkdQSU9fQUNUSVZFX0hJR0g+OwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cyA9ICJva2F5IjsKCgoKPiAgSSBjYW4gcmVzcGluIHRoZSBz ZXJpZXMgYnV0IHRoZW4gSSBzZWUgdHdvIG9wdGlvbnM6Cj4gIC0gZWl0aGVyIHlvdSBiYWNrIHVw IHRoZSBzZXJpZXMgYW5kIHJlYWxseSBwdXNoIGZvciBpdAo+ICAtIG9yIHlvdSBzaW1wbHkgdGFr ZSB0aGlzIGRyaXZlciBhcyBpdCBpcy4gVGhlcmUgaXMgbm90aGluZyBpbiBpdCB0aGF0Cj4gICAg Y291bGRuJ3QgYmUgcmV3b3JrZWQgbGF0ZXIgb25jZSB5b3UgcmVhY2hlZCBhIGNvbmNsdXNpb24g d2l0aCB0aGUgRFQKPiBtYWludGFpbmVycy4KPiAKPj4gb3IKPj4KPj4gYXJjaC9hcm0vYm9vdC9k dHMvaW50ZWdyYXRvcmFwLmR0cwo+Pgo+PiBhbGlhc2VzIHsKPj4gCWFybSx0aW1lci1wcmltYXJ5 ID0gJnRpbWVyMjsKPj4gCWFybSx0aW1lci1zZWNvbmRhcnkgPSAmdGltZXIxOwo+PiB9Owo+Pgo+ PiBTbyB3ZSBjYW4gaGF2ZSBjb250cm9sIG9mIHdoYXQgaXMgdGhlIGNsb2Nrc291cmNlIG9yIHRo ZSBjbG9ja2V2ZW50Lgo+PiBUaGF0IGlzIHBhcnRpY3VsYXJ5IGhhbmR5IGluIGNhc2Ugb2YgbXVs dGlwbGUgY2hhbm5lbHMuCj4+Cj4+IE5vdCBzdXJlIGlmIHdlIGNhbiByZXBsYWNlIHRoZSAnYXJt LHRpbWVyX3ByaW1hcnknIHRvICdjbG9ja3NvdXJjZScuCj4+Cj4+IFJvYj8gV2hhdCBpcyB5b3Vy IG9waW5pb24/Cj4+Cj4+PiBJbmRpdmlkdWFsIFBJVDY0QiBoYXJkd2FyZSByZXNvdXJjZXMgd2Vy ZSB1c2VkIGZvciBjbG9ja3NvdXJjZQo+Pj4gYW5kIGNsb2NrZXZlbnQgdG8gYmUgYWJsZSB0byBz dXBwb3J0IGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMgd2l0aCB0aGlzCj4+PiBoYXJkd2FyZSBpbXBs ZW1lbnRhdGlvbi4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDbGF1ZGl1IEJlem5lYSA8Y2xhdWRp dS5iZXpuZWFAbWljcm9jaGlwLmNvbT4KPj4+IC0tLQo+Pj4gIGRyaXZlcnMvY2xvY2tzb3VyY2Uv S2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICA2ICsKPj4+ICBkcml2ZXJzL2Nsb2Nrc291cmNl L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCj4+PiAgZHJpdmVycy9jbG9ja3NvdXJj ZS90aW1lci1taWNyb2NoaXAtcGl0NjRiLmMgfCA0NjQgKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCA0NzEgaW5zZXJ0aW9ucygrKQo+Pj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLW1pY3JvY2hpcC1waXQ2NGIuYwo+ Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWcgYi9kcml2ZXJz L2Nsb2Nrc291cmNlL0tjb25maWcKPj4+IGluZGV4IDVkOTNlNTgwZTVkYy4uMmFkNmY4ODFhMGJi IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnCj4+PiArKysgYi9k cml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWcKPj4+IEBAIC00NDgsNiArNDQ4LDEyIEBAIGNvbmZp ZyBPWE5BU19SUFNfVElNRVIKPj4+ICBjb25maWcgU1lTX1NVUFBPUlRTX1NIX0NNVAo+Pj4gICAg ICAgICAgYm9vbAo+Pj4gIAo+Pj4gK2NvbmZpZyBNSUNST0NISVBfUElUNjRCCj4+PiArCWJvb2wg Ik1pY3JvY2hpcCBQSVQ2NEIgc3VwcG9ydCIKPj4+ICsJZGVwZW5kcyBvbiBPRiB8fCBDT01QSUxF X1RFU1QKPj4+ICsJaGVscAo+Pj4gKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgTWljcm9jaGlwIFBJ VDY0QiB0aW1lci4KPj4+ICsKPj4+ICBjb25maWcgTVRLX1RJTUVSCj4+PiAgCWJvb2wgIk1lZGlh dGVrIHRpbWVyIGRyaXZlciIgaWYgQ09NUElMRV9URVNUCj4+PiAgCWRlcGVuZHMgb24gSEFTX0lP TUVNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZSBiL2RyaXZl cnMvY2xvY2tzb3VyY2UvTWFrZWZpbGUKPj4+IGluZGV4IGM0YThlOWVmOTMyYS4uYzUzZmExMmI5 Yjk0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZQo+Pj4gKysr IGIvZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZQo+Pj4gQEAgLTM1LDYgKzM1LDcgQEAgb2Jq LSQoQ09ORklHX1UzMDBfVElNRVIpCSs9IHRpbWVyLXUzMDAubwo+Pj4gIG9iai0kKENPTkZJR19T VU40SV9USU1FUikJKz0gdGltZXItc3VuNGkubwo+Pj4gIG9iai0kKENPTkZJR19TVU41SV9IU1RJ TUVSKQkrPSB0aW1lci1zdW41aS5vCj4+PiAgb2JqLSQoQ09ORklHX01FU09ONl9USU1FUikJKz0g dGltZXItbWVzb242Lm8KPj4+ICtvYmotJChDT05GSUdfTUlDUk9DSElQX1BJVDY0QikJKz0gdGlt ZXItbWljcm9jaGlwLXBpdDY0Yi5vCj4+PiAgb2JqLSQoQ09ORklHX1RFR1JBX1RJTUVSKQkrPSB0 aW1lci10ZWdyYTIwLm8KPj4+ICBvYmotJChDT05GSUdfVlQ4NTAwX1RJTUVSKQkrPSB0aW1lci12 dDg1MDAubwo+Pj4gIG9iai0kKENPTkZJR19OU1BJUkVfVElNRVIpCSs9IHRpbWVyLXpldmlvLm8K Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLW1pY3JvY2hpcC1waXQ2 NGIuYyBiL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWljcm9jaGlwLXBpdDY0Yi5jCj4+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42Nzg3YWE5OGVmMDEK Pj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWlj cm9jaGlwLXBpdDY0Yi5jCj4+PiBAQCAtMCwwICsxLDQ2NCBAQAo+Pj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+PiArLy8KPj4+ICsvLyBDb3B5cmlnaHQgKEMpIDIwMTkg TWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLgo+Pj4gKy8vIENvcHlyaWdodCAoQykgMjAxOSBDbGF1 ZGl1IEJlem5lYSAoY2xhdWRpdS5iZXpuZWFAbWljcm9jaGlwLmNvbSkKPj4+ICsKPj4+ICsjaW5j bHVkZSA8bGludXgvY2xrLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsb2NrY2hpcHMuaD4KPj4+ ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L29mX2Fk ZHJlc3MuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4+PiArI2luY2x1ZGUgPGxp bnV4L3NjaGVkX2Nsb2NrLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4+ICsKPj4+ ICsjZGVmaW5lIE1DSFBfUElUNjRCX0NSCQkweDAwCS8qIENvbnRyb2wgUmVnaXN0ZXIgKi8KPj4+ ICsjZGVmaW5lIE1DSFBfUElUNjRCX0NSX1NUQVJUCUJJVCgwKQo+Pj4gKyNkZWZpbmUgTUNIUF9Q SVQ2NEJfQ1JfU1dSU1QJQklUKDgpCj4+PiArCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9NUgkJ MHgwNAkvKiBNb2RlIFJlZ2lzdGVyICovCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9NUl9DT05U CUJJVCgwKQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTVJfU0dDTEsJQklUKDMpCj4+PiArI2Rl ZmluZSBNQ0hQX1BJVDY0Ql9NUl9TTU9ECUJJVCg0KQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJf TVJfUFJFUwlHRU5NQVNLKDExLCA4KQo+Pj4gKwo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTFNC X1BSCTB4MDgJLyogTFNCIFBlcmlvZCBSZWdpc3RlciAqLwo+Pj4gKwo+Pj4gKyNkZWZpbmUgTUNI UF9QSVQ2NEJfTVNCX1BSCTB4MEMJLyogTVNCIFBlcmlvZCBSZWdpc3RlciAqLwo+Pj4gKwo+Pj4g KyNkZWZpbmUgTUNIUF9QSVQ2NEJfSUVSCQkweDEwCS8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0 ZXIgKi8KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX0lFUl9QRVJJT0QJQklUKDApCj4+PiArCj4+ PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9JU1IJCTB4MUMJLyogSW50ZXJydXB0IFN0YXR1cyBSZWdp c3RlciAqLwo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfSVNSX1BFUklPRAlCSVQoMCkKPj4+ICsK Pj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX1RMU0JSCTB4MjAJLyogVGltZXIgTFNCIFJlZ2lzdGVy ICovCj4+PiArCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9UTVNCUgkweDI0CS8qIFRpbWVyIE1T QiBSZWdpc3RlciAqLwo+Pj4gKwo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfUFJFU19NQVgJMHgx MAo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfREVGX0ZSRVEJMjUwMDAwMFVMCS8qIDIuNSBNSHog Ki8KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX0xTQk1BU0sJR0VOTUFTS19VTEwoMzEsIDApCj4+ PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9QUkVTQ0FMRVIocCkJKE1DSFBfUElUNjRCX01SX1BSRVMg JiAoKHApIDw8IDgpKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTkFNRQkicGl0NjRi Igo+Pj4gKwo+Pj4gK3N0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSB7Cj4+PiArCXZvaWQg X19pb21lbSAqYmFzZTsKPj4+ICsJc3RydWN0IGNsayAqcGNsazsKPj4+ICsJc3RydWN0IGNsayAq Z2NsazsKPj4+ICsJdTY0IGN5Y2xlczsKPj4+ICsJdTggcHJlczsKPj4+ICt9Owo+Pj4gKwo+Pj4g K3N0cnVjdCBtY2hwX3BpdDY0Yl9jbGtzcmNfZGF0YSB7Cj4+PiArCXN0cnVjdCBjbG9ja3NvdXJj ZSAqY2xrc3JjOwo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY29tbW9uX2RhdGEgKmNkOwo+Pj4g K307Cj4+PiArCj4+PiArc3RydWN0IG1jaHBfcGl0NjRiX2Nsa2V2dF9kYXRhIHsKPj4+ICsJc3Ry dWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2xrZXZ0Owo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJf Y29tbW9uX2RhdGEgKmNkOwo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBtY2hwX3Bp dDY0Yl9kYXRhIHsKPj4+ICsJc3RydWN0IG1jaHBfcGl0NjRiX2Nsa3NyY19kYXRhICpjc2Q7Cj4+ PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtldnRfZGF0YSAqY2VkOwo+Pj4gK30gZGF0YTsKPj4+ ICsKPj4+ICtzdGF0aWMgaW5saW5lIHUzMiBtY2hwX3BpdDY0Yl9yZWFkKHZvaWQgX19pb21lbSAq YmFzZSwgdTMyIG9mZnNldCkKPj4+ICt7Cj4+PiArCXJldHVybiByZWFkbF9yZWxheGVkKGJhc2Ug KyBvZmZzZXQpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgbWNocF9waXQ2 NGJfd3JpdGUodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgdmFsKQo+Pj4gK3sK Pj4+ICsJd3JpdGVsX3JlbGF4ZWQodmFsLCBiYXNlICsgb2Zmc2V0KTsKPj4+ICt9Cj4+PiArCj4+ PiArc3RhdGljIGlubGluZSB1NjQgbWNocF9waXQ2NGJfZ2V0X3BlcmlvZCh2b2lkIF9faW9tZW0g KmJhc2UpCj4+PiArewo+Pj4gKwl1MzIgbHNiLCBtc2I7Cj4+PiArCj4+PiArCS8qIExTQiBtdXN0 IGJlIHJlYWQgZmlyc3QgdG8gZ3VhcmFudGVlIGFuIGF0b21pYyByZWFkIG9mIHRoZSA2NCBiaXQK Pj4+ICsJICogdGltZXIuCj4+PiArCSAqLwo+Pj4gKwlsc2IgPSBtY2hwX3BpdDY0Yl9yZWFkKGJh c2UsIE1DSFBfUElUNjRCX1RMU0JSKTsKPj4+ICsJbXNiID0gbWNocF9waXQ2NGJfcmVhZChiYXNl LCBNQ0hQX1BJVDY0Ql9UTVNCUik7Cj4+PiArCj4+PiArCXJldHVybiAoKCh1NjQpbXNiIDw8IDMy KSB8IGxzYik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBtY2hwX3BpdDY0 Yl9zZXRfcGVyaW9kKHZvaWQgX19pb21lbSAqYmFzZSwgdTY0IGN5Y2xlcykKPj4+ICt7Cj4+PiAr CXUzMiBsc2IsIG1zYjsKPj4+ICsKPj4+ICsJbHNiID0gY3ljbGVzICYgTUNIUF9QSVQ2NEJfTFNC TUFTSzsKPj4+ICsJbXNiID0gY3ljbGVzID4+IDMyOwo+Pj4gKwo+Pj4gKwkvKiBMU0IgbXVzdCBi ZSB3cml0ZSBsYXN0IHRvIGd1YXJhbnRlZSBhbiBhdG9taWMgdXBkYXRlIG9mIHRoZSB0aW1lcgo+ Pj4gKwkgKiBldmVuIHdoZW4gU01PRD0xLgo+Pj4gKwkgKi8KPj4+ICsJbWNocF9waXQ2NGJfd3Jp dGUoYmFzZSwgTUNIUF9QSVQ2NEJfTVNCX1BSLCBtc2IpOwo+Pj4gKwltY2hwX3BpdDY0Yl93cml0 ZShiYXNlLCBNQ0hQX1BJVDY0Ql9MU0JfUFIsIGxzYik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBtY2hwX3BpdDY0Yl9yZXNldChzdHJ1Y3QgbWNocF9waXQ2NGJfY29tbW9u X2RhdGEgKmRhdGEsCj4+PiArCQkJCSAgICAgdTMyIG1vZGUsIGJvb2wgaXJxX2VuYSkKPj4+ICt7 Cj4+PiArCW1vZGUgfD0gTUNIUF9QSVQ2NEJfUFJFU0NBTEVSKGRhdGEtPnByZXMpOwo+Pj4gKwlp ZiAoZGF0YS0+Z2NsaykKPj4+ICsJCW1vZGUgfD0gTUNIUF9QSVQ2NEJfTVJfU0dDTEs7Cj4+PiAr Cj4+PiArCW1jaHBfcGl0NjRiX3dyaXRlKGRhdGEtPmJhc2UsIE1DSFBfUElUNjRCX0NSLCBNQ0hQ X1BJVDY0Ql9DUl9TV1JTVCk7Cj4+PiArCW1jaHBfcGl0NjRiX3dyaXRlKGRhdGEtPmJhc2UsIE1D SFBfUElUNjRCX01SLCBtb2RlKTsKPj4+ICsJbWNocF9waXQ2NGJfc2V0X3BlcmlvZChkYXRhLT5i YXNlLCBkYXRhLT5jeWNsZXMpOwo+Pj4gKwlpZiAoaXJxX2VuYSkKPj4+ICsJCW1jaHBfcGl0NjRi X3dyaXRlKGRhdGEtPmJhc2UsIE1DSFBfUElUNjRCX0lFUiwKPj4+ICsJCQkJICBNQ0hQX1BJVDY0 Ql9JRVJfUEVSSU9EKTsKPj4+ICsJbWNocF9waXQ2NGJfd3JpdGUoZGF0YS0+YmFzZSwgTUNIUF9Q SVQ2NEJfQ1IsIE1DSFBfUElUNjRCX0NSX1NUQVJUKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGlj IHU2NCBtY2hwX3BpdDY0Yl9yZWFkX2NsayhzdHJ1Y3QgY2xvY2tzb3VyY2UgKmNzKQo+Pj4gK3sK Pj4+ICsJcmV0dXJuIG1jaHBfcGl0NjRiX2dldF9wZXJpb2QoZGF0YS5jc2QtPmNkLT5iYXNlKTsK Pj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHU2NCBtY2hwX3NjaGVkX3JlYWRfY2xrKHZvaWQpCj4+ PiArewo+Pj4gKwlyZXR1cm4gbWNocF9waXQ2NGJfZ2V0X3BlcmlvZChkYXRhLmNzZC0+Y2QtPmJh c2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIG1jaHBfcGl0 NjRiX2Nsa3NyYyA9IHsKPj4+ICsJLm5hbWUgPSBNQ0hQX1BJVDY0Ql9OQU1FLAo+Pj4gKwkubWFz ayA9IENMT0NLU09VUkNFX01BU0soNjQpLAo+Pj4gKwkuZmxhZ3MgPSBDTE9DS19TT1VSQ0VfSVNf Q09OVElOVU9VUywKPj4+ICsJLnJhdGluZyA9IDIxMCwKPj4+ICsJLnJlYWQgPSBtY2hwX3BpdDY0 Yl9yZWFkX2NsaywKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgbWNocF9waXQ2NGJfY2xr ZXZ0X3NodXRkb3duKHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQo+Pj4gK3sKPj4+ ICsJbWNocF9waXQ2NGJfd3JpdGUoZGF0YS5jZWQtPmNkLT5iYXNlLCBNQ0hQX1BJVDY0Ql9DUiwK Pj4+ICsJCQkgIE1DSFBfUElUNjRCX0NSX1NXUlNUKTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+ PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgbWNocF9waXQ2NGJfY2xrZXZ0X3NldF9wZXJpb2Rp YyhzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjZWRldikKPj4+ICt7Cj4+PiArCW1jaHBfcGl0 NjRiX3Jlc2V0KGRhdGEuY2VkLT5jZCwgTUNIUF9QSVQ2NEJfTVJfQ09OVCwgdHJ1ZSk7Cj4+PiAr Cj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IG1jaHBfcGl0NjRi X2Nsa2V2dF9zZXRfb25lc2hvdChzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjZWRldikKPj4+ ICt7Cj4+PiArCW1jaHBfcGl0NjRiX3Jlc2V0KGRhdGEuY2VkLT5jZCwgTUNIUF9QSVQ2NEJfTVJf U01PRCwgdHJ1ZSk7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgaW50IG1jaHBfcGl0NjRiX2Nsa2V2dF9zZXRfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGV2 dCwKPj4+ICsJCQkJCSAgICAgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2VkZXYpCj4+PiAr ewo+Pj4gKwltY2hwX3BpdDY0Yl9zZXRfcGVyaW9kKGRhdGEuY2VkLT5jZC0+YmFzZSwgZXZ0KTsK Pj4+ICsJbWNocF9waXQ2NGJfd3JpdGUoZGF0YS5jZWQtPmNkLT5iYXNlLCBNQ0hQX1BJVDY0Ql9D UiwKPj4+ICsJCQkgIE1DSFBfUElUNjRCX0NSX1NUQVJUKTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIG1jaHBfcGl0NjRiX2Nsa2V2dF9zdXNwZW5k KHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQo+Pj4gK3sKPj4+ICsJbWNocF9waXQ2 NGJfd3JpdGUoZGF0YS5jZWQtPmNkLT5iYXNlLCBNQ0hQX1BJVDY0Ql9DUiwKPj4+ICsJCQkgIE1D SFBfUElUNjRCX0NSX1NXUlNUKTsKPj4+ICsJaWYgKGRhdGEuY2VkLT5jZC0+Z2NsaykKPj4+ICsJ CWNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRhLmNlZC0+Y2QtPmdjbGspOwo+Pj4gKwljbGtfZGlz YWJsZV91bnByZXBhcmUoZGF0YS5jZWQtPmNkLT5wY2xrKTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIHZvaWQgbWNocF9waXQ2NGJfY2xrZXZ0X3Jlc3VtZShzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2 aWNlICpjZWRldikKPj4+ICt7Cj4+PiArCXUzMiBtb2RlID0gTUNIUF9QSVQ2NEJfTVJfU01PRDsK Pj4+ICsKPj4+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKGRhdGEuY2VkLT5jZC0+cGNsayk7Cj4+PiAr CWlmIChkYXRhLmNlZC0+Y2QtPmdjbGspCj4+PiArCQljbGtfcHJlcGFyZV9lbmFibGUoZGF0YS5j ZWQtPmNkLT5nY2xrKTsKPj4+ICsKPj4+ICsJaWYgKGNsb2NrZXZlbnRfc3RhdGVfcGVyaW9kaWMo ZGF0YS5jZWQtPmNsa2V2dCkpCj4+PiArCQltb2RlID0gTUNIUF9QSVQ2NEJfTVJfQ09OVDsKPj4+ ICsKPj4+ICsJbWNocF9waXQ2NGJfcmVzZXQoZGF0YS5jZWQtPmNkLCBtb2RlLCB0cnVlKTsKPj4+ ICt9Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgbWNocF9waXQ2 NGJfY2xrZXZ0ID0gewo+Pj4gKwkubmFtZSA9IE1DSFBfUElUNjRCX05BTUUsCj4+PiArCS5mZWF0 dXJlcyA9IENMT0NLX0VWVF9GRUFUX09ORVNIT1QgfCBDTE9DS19FVlRfRkVBVF9QRVJJT0RJQywK Pj4+ICsJLnJhdGluZyA9IDE1MCwKPj4+ICsJLnNldF9zdGF0ZV9zaHV0ZG93biA9IG1jaHBfcGl0 NjRiX2Nsa2V2dF9zaHV0ZG93biwKPj4+ICsJLnNldF9zdGF0ZV9wZXJpb2RpYyA9IG1jaHBfcGl0 NjRiX2Nsa2V2dF9zZXRfcGVyaW9kaWMsCj4+PiArCS5zZXRfc3RhdGVfb25lc2hvdCA9IG1jaHBf cGl0NjRiX2Nsa2V2dF9zZXRfb25lc2hvdCwKPj4+ICsJLnNldF9uZXh0X2V2ZW50ID0gbWNocF9w aXQ2NGJfY2xrZXZ0X3NldF9uZXh0X2V2ZW50LAo+Pj4gKwkuc3VzcGVuZCA9IG1jaHBfcGl0NjRi X2Nsa2V2dF9zdXNwZW5kLAo+Pj4gKwkucmVzdW1lID0gbWNocF9waXQ2NGJfY2xrZXZ0X3Jlc3Vt ZSwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtY2hwX3BpdDY0Yl9pbnRl cnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+Pj4gK3sKPj4+ICsJc3RydWN0IG1jaHBfcGl0 NjRiX2Nsa2V2dF9kYXRhICppcnFfZGF0YSA9IGRldl9pZDsKPj4+ICsKPj4+ICsJaWYgKGRhdGEu Y2VkICE9IGlycV9kYXRhKQo+Pj4gKwkJcmV0dXJuIElSUV9OT05FOwo+Pj4gKwo+Pj4gKwlpZiAo bWNocF9waXQ2NGJfcmVhZChpcnFfZGF0YS0+Y2QtPmJhc2UsIE1DSFBfUElUNjRCX0lTUikgJgo+ Pj4gKwkgICAgTUNIUF9QSVQ2NEJfSVNSX1BFUklPRCkgewo+Pj4gKwkJaXJxX2RhdGEtPmNsa2V2 dC0+ZXZlbnRfaGFuZGxlcihpcnFfZGF0YS0+Y2xrZXZ0KTsKPj4+ICsJCXJldHVybiBJUlFfSEFO RExFRDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gSVJRX05PTkU7Cj4+PiArfQo+Pj4gKwo+ Pj4gK3N0YXRpYyBpbnQgX19pbml0IG1jaHBfcGl0NjRiX3ByZXNfY29tcHV0ZSh1MzIgKnByZXMs IHUzMiBjbGtfcmF0ZSwKPj4+ICsJCQkJCSAgIHUzMiBtYXhfcmF0ZSkKPj4+ICt7Cj4+PiArCXUz MiB0bXA7Cj4+PiArCj4+PiArCWZvciAoKnByZXMgPSAwOyAqcHJlcyA8IE1DSFBfUElUNjRCX1BS RVNfTUFYOyAoKnByZXMpKyspIHsKPj4+ICsJCXRtcCA9IGNsa19yYXRlIC8gKCpwcmVzICsgMSk7 Cj4+PiArCQlpZiAodG1wIDw9IG1heF9yYXRlKQo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwl9Cj4+PiAr Cj4+PiArCWlmICgqcHJlcyA9PSBNQ0hQX1BJVDY0Ql9QUkVTX01BWCkKPj4+ICsJCXJldHVybiAt RUlOVkFMOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlu dCBfX2luaXQgbWNocF9waXQ2NGJfcHJlc19wcmVwYXJlKHN0cnVjdCBtY2hwX3BpdDY0Yl9jb21t b25fZGF0YSAqY2QsCj4+PiArCQkJCQkgICB1bnNpZ25lZCBsb25nIG1heF9yYXRlKQo+Pj4gK3sK Pj4+ICsJdW5zaWduZWQgbG9uZyBwY2xrX3JhdGUsIGRpZmYgPSAwLCBiZXN0X2RpZmYgPSBVTE9O R19NQVg7Cj4+PiArCWxvbmcgZ2Nsa19yb3VuZCA9IDA7Cj4+PiArCXUzMiBwcmVzLCBiZXN0X3By ZXM7Cj4+PiArCWludCByZXQgPSAwOwo+Pj4gKwo+Pj4gKwlwY2xrX3JhdGUgPSBjbGtfZ2V0X3Jh dGUoY2QtPnBjbGspOwo+Pj4gKwlpZiAoIXBjbGtfcmF0ZSkKPj4+ICsJCXJldHVybiAtRUlOVkFM Owo+Pj4gKwo+Pj4gKwlpZiAoY2QtPmdjbGspIHsKPj4+ICsJCWdjbGtfcm91bmQgPSBjbGtfcm91 bmRfcmF0ZShjZC0+Z2NsaywgbWF4X3JhdGUpOwo+Pj4gKwkJaWYgKGdjbGtfcm91bmQgPCAwKQo+ Pj4gKwkJCWdvdG8gcGNsazsKPj4+ICsKPj4+ICsJCWlmIChwY2xrX3JhdGUgLyBnY2xrX3JvdW5k IDwgMykKPj4+ICsJCQlnb3RvIHBjbGs7Cj4+PiArCj4+PiArCQlyZXQgPSBtY2hwX3BpdDY0Yl9w cmVzX2NvbXB1dGUoJnByZXMsIGdjbGtfcm91bmQsIG1heF9yYXRlKTsKPj4+ICsJCWlmIChyZXQp Cj4+PiArCQkJYmVzdF9kaWZmID0gYWJzKGdjbGtfcm91bmQgLSBtYXhfcmF0ZSk7Cj4+PiArCQll bHNlCj4+PiArCQkJYmVzdF9kaWZmID0gYWJzKGdjbGtfcm91bmQgLyAocHJlcyArIDEpIC0gbWF4 X3JhdGUpOwo+Pj4gKwkJYmVzdF9wcmVzID0gcHJlczsKPj4+ICsJfQo+Pj4gKwo+Pj4gK3BjbGs6 Cj4+PiArCS8qIENoZWNrIGlmIHJlcXVlc3RlZCByYXRlIGNvdWxkIGJlIG9idGFpbmVkIHVzaW5n IFBDTEsuICovCj4+PiArCXJldCA9IG1jaHBfcGl0NjRiX3ByZXNfY29tcHV0ZSgmcHJlcywgcGNs a19yYXRlLCBtYXhfcmF0ZSk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlkaWZmID0gYWJzKHBjbGtf cmF0ZSAtIG1heF9yYXRlKTsKPj4+ICsJZWxzZQo+Pj4gKwkJZGlmZiA9IGFicyhwY2xrX3JhdGUg LyAocHJlcyArIDEpIC0gbWF4X3JhdGUpOwo+Pj4gKwo+Pj4gKwlpZiAoYmVzdF9kaWZmID4gZGlm Zikgewo+Pj4gKwkJLyogVXNlIFBDTEsuICovCj4+PiArCQljZC0+Z2NsayA9IE5VTEw7Cj4+PiAr CQliZXN0X3ByZXMgPSBwcmVzOwo+Pj4gKwl9IGVsc2Ugewo+Pj4gKwkJY2xrX3NldF9yYXRlKGNk LT5nY2xrLCBnY2xrX3JvdW5kKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwljZC0+cHJlcyA9IGJlc3Rf cHJlczsKPj4+ICsKPj4+ICsJcHJfaW5mbygiUElUNjRCOiB1c2luZyBjbGs9JXMgd2l0aCBwcmVz Y2FsZXIgJXUsIGZyZXE9JWx1IFtIel1cbiIsCj4+PiArCQljZC0+Z2NsayA/ICJnY2xrIiA6ICJw Y2xrIiwgY2QtPnByZXMsCj4+PiArCQljZC0+Z2NsayA/IGdjbGtfcm91bmQgLyAoY2QtPnByZXMg KyAxKQo+Pj4gKwkJCSA6IHBjbGtfcmF0ZSAvIChjZC0+cHJlcyArIDEpKTsKPj4+ICsKPj4+ICsJ cmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgX19pbml0IG1jaHBfcGl0NjRi X2R0X2luaXRfY2xrc3JjKHN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSAqY2QpCj4+PiAr ewo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrc3JjX2RhdGEgKmNzZDsKPj4+ICsJdW5zaWdu ZWQgbG9uZyBjbGtfcmF0ZTsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJY3NkID0ga3phbGxv YyhzaXplb2YoKmNzZCksIEdGUF9LRVJORUwpOwo+Pj4gKwlpZiAoIWNzZCkKPj4+ICsJCXJldHVy biAtRU5PTUVNOwo+Pj4gKwo+Pj4gKwljc2QtPmNkID0gY2Q7Cj4+PiArCj4+PiArCWlmIChjc2Qt PmNkLT5nY2xrKQo+Pj4gKwkJY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY3NkLT5jZC0+Z2Nsayk7 Cj4+PiArCWVsc2UKPj4+ICsJCWNsa19yYXRlID0gY2xrX2dldF9yYXRlKGNzZC0+Y2QtPnBjbGsp Owo+Pj4gKwo+Pj4gKwljbGtfcmF0ZSA9IGNsa19yYXRlIC8gKGNkLT5wcmVzICsgMSk7Cj4+PiAr CWNzZC0+Y2QtPmN5Y2xlcyA9IFVMTE9OR19NQVg7Cj4+PiArCW1jaHBfcGl0NjRiX3Jlc2V0KGNz ZC0+Y2QsIE1DSFBfUElUNjRCX01SX0NPTlQsIGZhbHNlKTsKPj4+ICsKPj4+ICsJZGF0YS5jc2Qg PSBjc2Q7Cj4+PiArCj4+PiArCWNzZC0+Y2xrc3JjID0gJm1jaHBfcGl0NjRiX2Nsa3NyYzsKPj4+ ICsKPj4+ICsJcmV0ID0gY2xvY2tzb3VyY2VfcmVnaXN0ZXJfaHooY3NkLT5jbGtzcmMsIGNsa19y YXRlKTsKPj4+ICsJaWYgKHJldCkgewo+Pj4gKwkJcHJfZGVidWcoImNsa3NyYzogRmFpbGVkIHRv IHJlZ2lzdGVyIFBJVDY0QiBjbG9ja3NvdXJjZSFcbiIpOwo+Pj4gKwkJZ290byBmcmVlOwo+Pj4g Kwl9Cj4+PiArCj4+PiArCXNjaGVkX2Nsb2NrX3JlZ2lzdGVyKG1jaHBfc2NoZWRfcmVhZF9jbGss IDY0LCBjbGtfcmF0ZSk7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gKwo+Pj4gK2ZyZWU6Cj4+ PiArCWtmcmVlKGNzZCk7Cj4+PiArCWRhdGEuY3NkID0gTlVMTDsKPj4+ICsKPj4+ICsJcmV0dXJu IHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBfX2luaXQgbWNocF9waXQ2NGJfZHRf aW5pdF9jbGtldnQoc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhICpjZCwKPj4+ICsJCQkJ CSAgICAgdTMyIGlycSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtldnRfZGF0 YSAqY2VkOwo+Pj4gKwl1bnNpZ25lZCBsb25nIGNsa19yYXRlOwo+Pj4gKwlpbnQgcmV0Owo+Pj4g Kwo+Pj4gKwljZWQgPSBremFsbG9jKHNpemVvZigqY2VkKSwgR0ZQX0tFUk5FTCk7Cj4+PiArCWlm ICghY2VkKQo+Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCj4+PiArCWNlZC0+Y2QgPSBjZDsK Pj4+ICsKPj4+ICsJaWYgKGNlZC0+Y2QtPmdjbGspCj4+PiArCQljbGtfcmF0ZSA9IGNsa19nZXRf cmF0ZShjZWQtPmNkLT5nY2xrKTsKPj4+ICsJZWxzZQo+Pj4gKwkJY2xrX3JhdGUgPSBjbGtfZ2V0 X3JhdGUoY2VkLT5jZC0+cGNsayk7Cj4+PiArCj4+PiArCWNsa19yYXRlID0gY2xrX3JhdGUgLyAo Y2VkLT5jZC0+cHJlcyArIDEpOwo+Pj4gKwljZWQtPmNkLT5jeWNsZXMgPSBESVZfUk9VTkRfQ0xP U0VTVChjbGtfcmF0ZSwgSFopOwo+Pj4gKwo+Pj4gKwlyZXQgPSByZXF1ZXN0X2lycShpcnEsIG1j aHBfcGl0NjRiX2ludGVycnVwdCwgSVJRRl9USU1FUiwgInBpdDY0Yl90aWNrIiwKPj4+ICsJCQkg IGNlZCk7Cj4+PiArCWlmIChyZXQpIHsKPj4+ICsJCXByX2RlYnVnKCJjbGtldnQ6IEZhaWxlZCB0 byBzZXR1cCBQSVQ2NEIgSVJRXG4iKTsKPj4+ICsJCWdvdG8gZnJlZTsKPj4+ICsJfQo+Pj4gKwo+ Pj4gKwlkYXRhLmNlZCA9IGNlZDsKPj4+ICsKPj4+ICsJLyogU2V0IHVwIGFuZCByZWdpc3RlciBj bG9ja2V2ZW50cy4gKi8KPj4+ICsJY2VkLT5jbGtldnQgPSAmbWNocF9waXQ2NGJfY2xrZXZ0Owo+ Pj4gKwljZWQtPmNsa2V2dC0+Y3B1bWFzayA9IGNwdW1hc2tfb2YoMCk7Cj4+PiArCWNlZC0+Y2xr ZXZ0LT5pcnEgPSBpcnE7Cj4+PiArCWNsb2NrZXZlbnRzX2NvbmZpZ19hbmRfcmVnaXN0ZXIoY2Vk LT5jbGtldnQsIGNsa19yYXRlLCAxLCBVTE9OR19NQVgpOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsK Pj4+ICsKPj4+ICtmcmVlOgo+Pj4gKwlrZnJlZShjZWQpOwo+Pj4gKwlkYXRhLmNlZCA9IE5VTEw7 Cj4+PiArCj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgX19p bml0IG1jaHBfcGl0NjRiX2R0X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQo+Pj4gK3sK Pj4+ICsJc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhICpjZDsKPj4+ICsJdTMyIGlycSwg ZnJlcSA9IE1DSFBfUElUNjRCX0RFRl9GUkVROwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlp ZiAoZGF0YS5jc2QgJiYgZGF0YS5jZWQpCj4+PiArCQlyZXR1cm4gLUVCVVNZOwo+Pj4gKwo+Pj4g KwljZCA9IGt6YWxsb2Moc2l6ZW9mKCpjZCksIEdGUF9LRVJORUwpOwo+Pj4gKwlpZiAoIWNkKQo+ Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCj4+PiArCWNkLT5wY2xrID0gb2ZfY2xrX2dldF9i eV9uYW1lKG5vZGUsICJwY2xrIik7Cj4+PiArCWlmIChJU19FUlIoY2QtPnBjbGspKSB7Cj4+PiAr CQlyZXQgPSBQVFJfRVJSKGNkLT5wY2xrKTsKPj4+ICsJCWdvdG8gZnJlZTsKPj4+ICsJfQo+Pj4g Kwo+Pj4gKwljZC0+Z2NsayA9IG9mX2Nsa19nZXRfYnlfbmFtZShub2RlLCAiZ2NsayIpOwo+Pj4g KwlpZiAoSVNfRVJSKGNkLT5nY2xrKSkKPj4+ICsJCWNkLT5nY2xrID0gTlVMTDsKPj4+ICsKPj4+ ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgImNsb2NrLWZyZXF1ZW5jeSIsICZm cmVxKTsKPj4+ICsJaWYgKHJldCkKPj4+ICsJCXByX2RlYnVnKCJQSVQ2NEI6IGZhaWxlZCB0byBy ZWFkIGNsb2NrIGZyZXF1ZW5jeS4gVXNpbmcgZGVmYXVsdCFcbiIpOwo+Pj4gKwo+Pj4gKwlyZXQg PSBtY2hwX3BpdDY0Yl9wcmVzX3ByZXBhcmUoY2QsIGZyZXEpOwo+Pj4gKwlpZiAocmV0KQo+Pj4g KwkJZ290byBmcmVlOwo+Pj4gKwo+Pj4gKwljZC0+YmFzZSA9IG9mX2lvbWFwKG5vZGUsIDApOwo+ Pj4gKwlpZiAoIWNkLT5iYXNlKSB7Cj4+PiArCQlwcl9kZWJ1ZygiJXM6IENvdWxkIG5vdCBtYXAg UElUNjRCIGFkZHJlc3MhXG4iLAo+Pj4gKwkJCSBNQ0hQX1BJVDY0Ql9OQU1FKTsKPj4+ICsJCXJl dCA9IC1FTlhJTzsKPj4+ICsJCWdvdG8gZnJlZTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXQgPSBj bGtfcHJlcGFyZV9lbmFibGUoY2QtPnBjbGspOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byB1 bm1hcDsKPj4+ICsKPj4+ICsJaWYgKGNkLT5nY2xrKSB7Cj4+PiArCQlyZXQgPSBjbGtfcHJlcGFy ZV9lbmFibGUoY2QtPmdjbGspOwo+Pj4gKwkJaWYgKHJldCkKPj4+ICsJCQlnb3RvIHBjbGtfdW5w cmVwYXJlOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmICghZGF0YS5jZWQpIHsKPj4+ICsJCWlycSA9 IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5vZGUsIDApOwo+Pj4gKwkJaWYgKCFpcnEpIHsKPj4+ICsJ CQlwcl9kZWJ1ZygiJXM6IEZhaWxlZCB0byBnZXQgUElUNjRCIGNsb2NrZXZlbnQgSVJRIVxuIiwK Pj4+ICsJCQkJIE1DSFBfUElUNjRCX05BTUUpOwo+Pj4gKwkJCXJldCA9IC1FTk9ERVY7Cj4+PiAr CQkJZ290byBnY2xrX3VucHJlcGFyZTsKPj4+ICsJCX0KPj4+ICsJCXJldCA9IG1jaHBfcGl0NjRi X2R0X2luaXRfY2xrZXZ0KGNkLCBpcnEpOwo+Pj4gKwkJaWYgKHJldCkKPj4+ICsJCQlnb3RvIGly cV91bm1hcDsKPj4+ICsJfSBlbHNlIHsKPj4+ICsJCXJldCA9IG1jaHBfcGl0NjRiX2R0X2luaXRf Y2xrc3JjKGNkKTsKPj4+ICsJCWlmIChyZXQpCj4+PiArCQkJZ290byBnY2xrX3VucHJlcGFyZTsK Pj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICsKPj4+ICtpcnFfdW5tYXA6Cj4+PiAr CWlycV9kaXNwb3NlX21hcHBpbmcoaXJxKTsKPj4+ICtnY2xrX3VucHJlcGFyZToKPj4+ICsJaWYg KGNkLT5nY2xrKQo+Pj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkLT5nY2xrKTsKPj4+ICtw Y2xrX3VucHJlcGFyZToKPj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkLT5wY2xrKTsKPj4+ ICt1bm1hcDoKPj4+ICsJaW91bm1hcChjZC0+YmFzZSk7Cj4+PiArZnJlZToKPj4+ICsJa2ZyZWUo Y2QpOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtUSU1FUl9PRl9E RUNMQVJFKG1jaHBfcGl0NjRiX2Nsa3NyYywgIm1pY3JvY2hpcCxzYW05eDYwLXBpdDY0YiIsCj4+ PiArCQkgbWNocF9waXQ2NGJfZHRfaW5pdCk7Cj4+Pgo+Pgo+Pgo+PiAtLSAKPj4gIDxodHRwOi8v d3d3LmxpbmFyby5vcmcvPiBMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3Ig QVJNIFNvQ3MKPj4KPj4gRm9sbG93IExpbmFybzogIDxodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9w YWdlcy9MaW5hcm8+IEZhY2Vib29rIHwKPj4gPGh0dHA6Ly90d2l0dGVyLmNvbS8jIS9saW5hcm9v cmc+IFR3aXR0ZXIgfAo+PiA8aHR0cDovL3d3dy5saW5hcm8ub3JnL2xpbmFyby1ibG9nLz4gQmxv Zwo+Pgo+IAoKCi0tIAogPGh0dHA6Ly93d3cubGluYXJvLm9yZy8+IExpbmFyby5vcmcg4pSCIE9w ZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwoKRm9sbG93IExpbmFybzogIDxodHRwOi8v d3d3LmZhY2Vib29rLmNvbS9wYWdlcy9MaW5hcm8+IEZhY2Vib29rIHwKPGh0dHA6Ly90d2l0dGVy LmNvbS8jIS9saW5hcm9vcmc+IFR3aXR0ZXIgfAo8aHR0cDovL3d3dy5saW5hcm8ub3JnL2xpbmFy by1ibG9nLz4gQmxvZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK