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,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, 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 5CDE9C2D0C3 for ; Wed, 18 Dec 2019 10:46:46 +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 2570D21582 for ; Wed, 18 Dec 2019 10:46:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pXDTXULf"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="0xujstMw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2570D21582 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.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: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=6ItYcFV+AmCUWwWKt9nKM+jnYwfz98MBVHW0PR3AOK0=; b=pXDTXULffKSx/0 0zPefNerjkOdlUb8EpfcjTye7EnntwVY5OOAlueL/YmXu4bXOrrxBUqnjrAx3vJZ4GxBTcs9Ncyag qJ+KTUfXm3pVbWLxHDTRrecDaacPsxKkW5YY4xoRhZSZG9JH1xESRUyIBNZIyDSnnoqHNIAYSg5fN m4HxDyoQIJasbMuPsODFk5lagx4TrK88P0w4MSOoS4PI2s1mQOXxSq+swxrV6gwRjIKrNN1qYFMR4 awfkL0GDvDrNs2y9QTRDOVKkxiczLTQCMjradApcTxXNb8ZiPsvIBZPlH+tji0TNY0gQwlLc/f8Uv lbg3QZ8/svXxMWSOujEg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihWqr-0006zO-Gf; Wed, 18 Dec 2019 10:46:45 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihWqo-0006z5-AP for linux-arm-kernel@lists.infradead.org; Wed, 18 Dec 2019 10:46:44 +0000 Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7A8DA2467F for ; Wed, 18 Dec 2019 10:46:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576666002; bh=t3BuBmJtudO7kILghIPfb9pvWfLw6Uj+314GFyjQVAE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=0xujstMwReki3DjhemBbH97UITobNKO9PaOw5jByR66GYsJ3Rfr/xEk9+b/qtFeMX nAftq+qZ3mKkaj/NoU8kd78F8x5UZUL7voKzL70HIBkT6pKIoN6X1HJHLisQH6Gkt0 viLWkjHURXXnDnjNo2Q9z0vyY5cFSbj90MMx8+C4= Received: by mail-lj1-f182.google.com with SMTP id u17so1584197lja.4 for ; Wed, 18 Dec 2019 02:46:41 -0800 (PST) X-Gm-Message-State: APjAAAUFFI3CLoxZvA+7+s+evE3G8t3XZ0DfpES8pRh3ykmafNc3JLS1 Tj+inQgU+/2Z3MY47KZvrA1Z7mEbIsQAfrjdFz8= X-Google-Smtp-Source: APXvYqzejIuRiEww/awCSGwkBpVa5ICePPC15zvH6VINO1+Eac/6rRLo/b78REi36ldedgzzEhfqkku3+Vzu+gvMBs4= X-Received: by 2002:a2e:9b05:: with SMTP id u5mr1239937lji.59.1576665999414; Wed, 18 Dec 2019 02:46:39 -0800 (PST) MIME-Version: 1.0 References: <8734a934-79e2-7445-c3e5-a0bb59afd4a8@samsung.com> <047990a5-263d-d447-7f0a-77a99e4b1f63@samsung.com> <25e3177f-e2b9-6be4-cfb8-24f87ccba45b@samsung.com> <698357b4-32e7-7f4b-3e67-59f5890f574a@samsung.com> In-Reply-To: From: Chanwoo Choi Date: Wed, 18 Dec 2019 19:46:02 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH RFC v6 2/9] PM / devfreq: Add generic imx bus scaling driver To: Leonard Crestez X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191218_024642_404028_5F3A54FF X-CRM114-Status: GOOD ( 44.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Jacky Bai , "Rafael J. Wysocki" , Viresh Kumar , Michael Turquette , Angus Ainslie , Alexandre Bailon , Matthias Kaehlcke , Abel Vesa , Anson Huang , Krzysztof Kozlowski , Chanwoo Choi , MyungJoo Ham , dl-linux-imx , "devicetree@vger.kernel.org" , "linux-pm@vger.kernel.org" , Rob Herring , Martin Kepplinger , Silvano Di Ninno , "linux-arm-kernel@lists.infradead.org" , Aisheng Dong , Saravana Kannan , Stephen Boyd , Kyungmin Park , "kernel@pengutronix.de" , Fabio Estevam , Shawn Guo , Georgi Djakov 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 SGksCgoyMDE564WEIDEy7JuUIDE47J28ICjsiJgpIOyYpO2bhCA3OjExLCBMZW9uYXJkIENyZXN0 ZXogPGxlb25hcmQuY3Jlc3RlekBueHAuY29tPuuLmOydtCDsnpHshLE6Cj4KPiBPbiAxOC4xMi4y MDE5IDA1OjA4LCBDaGFud29vIENob2kgd3JvdGU6Cj4gPiBPbiAxMi8xOC8xOSA2OjA1IEFNLCBM ZW9uYXJkIENyZXN0ZXogd3JvdGU6Cj4gPj4gT24gMTcuMTIuMjAxOSAwMjozNSwgQ2hhbndvbyBD aG9pIHdyb3RlOgo+ID4+PiBPbiAxMi8xNi8xOSAxMTo1NyBQTSwgTGVvbmFyZCBDcmVzdGV6IHdy b3RlOgo+ID4+Pj4gT24gMTYuMTIuMjAxOSAwMzowMCwgQ2hhbndvbyBDaG9pIHdyb3RlOgo+ID4+ Pj4+IEhpLAo+ID4+Pj4+Cj4gPj4+Pj4gQWxzbywgSSB0aGluayB0aGF0ICdkZXZmcmVxJyB3b3Jk IGlzIG5vdCBwcm9wZXIgZm9yIGRldmljZSBkcml2ZXIgbmFtZS4KPiA+Pj4+PiBpbXgtYnVzLmMg b3IgaW14LW5vYy5jIG9yIG90aGVycyB0byBpbmZvcm0gdGhlIHJvbGUgb2YgdGhpcyBkcml2ZXIg b2YgZGV2ZWxvcGVyLgo+ID4+Pj4KPiA+Pj4+IEknbGwgcmVuYW1lIHRvICJpbXgtYnVzIi4gQ2Fs bGluZyBpdCAiaW14LW5vYyIgaXMgbm90IGFwcHJvcHJpYXRlCj4gPj4+PiBiZWNhdXNlIEkgYWxz byB3YW50IHRvIHVzZSBpdCBmb3IgUEwzMDEgTklDcy4KPiA+Pj4KPiA+Pj4gT0suCj4gPj4+Cj4g Pj4+Pgo+ID4+Pj4+IEFuZCwgSSBoYXZlIGEgcXVlc3Rpb24uCj4gPj4+Pj4gVGhpcyBkcml2ZXIg YWRkcyB0aGUgZGV2ZnJlcSBkZXZpY2Ugd2l0aCBlaXRoZXIgcGFzc2l2ZSBnb3Zlcm5vcgo+ID4+ Pj4+IG9yIHVzZXJzcGFjZSBnb3Zlcm5vci4KPiA+Pj4+Pgo+ID4+Pj4+IEFzIEkgdW5kZXJzdG9v ZCwgdGhlIGRldmZyZXEgZGV2aWNlIHdpdGggcGFzc2l2ZSBnb3Zlcm5vcgo+ID4+Pj4+IHdpbGwg YmUgb3BlcmF0ZWQgd2l0aCBpbXg4bS1kZHJjLmMgZHJpdmVyLgo+ID4+Pj4+IEJ1dCwgd2hlbiBp cyBvcGVyYXRpbmcgd2l0aCB1c2Vyc3BhY2UgZ292ZXJub3I/Cj4gPj4+Pgo+ID4+Pj4gVGhlcmUg YXJlIG11bHRpcGxlIHNjYWxhYmxlIGJ1c2VzIGluc2lkZSB0aGUgU09DLCBmb3IgZXhhbXBsZSB0 aGVyZSdzIGEKPiA+Pj4+IE5JQyBmb3IgZGlzcGxheSBjb250cm9sbGVycyBhbmQgb25lIGZvciAo cGNpK3VzYikuIFRoZXkgY2FuIHVzZQo+ID4+Pj4gdXNlcnNwYWNlIGdvdmVybm9yIGZvciBleHBs aWNpdCBmcmVxdWVuY3kgY29udHJvbC4KPiA+Pj4+Cj4gPj4+Pj4gSSB0aGluayB0aGF0IHlvdSBi ZXR0ZXIgdG8gYWRkIHRoZSBleHBsYW5hdGlvbiB0byBkZXNjcmlwdGlvbgo+ID4+Pj4+IGZvciB0 d28gc2NlbmFyaW9zIGhvdyB0byBvcGVyYXRlIHdpdGggaW50ZXJjb25uZWN0IHByb3ZpZGVyCj4g Pj4+Pj4gb24gZWl0aGVyIHBhc3NpdmUgZ292ZXJub3Igb3IgdXNlcnNwYWNlIGdvdmVybm9yIHVz YWdlIGNhc2UuCj4gPj4+Pgo+ID4+Pj4gSSdsbCBlbGFib3JhdGUgdGhlIGV4YW1wbGUgaW4gYmlu ZGluZ3MuCj4gPj4+Cj4gPj4+IE9LLgo+ID4+Pgo+ID4+Pj4KPiA+Pj4+PiBPbiAxMi8xMy8xOSAx MDo1MSBBTSwgQ2hhbndvbyBDaG9pIHdyb3RlOgo+ID4+Pj4+PiBPbiAxMi8xMy8xOSAxMDozMCBB TSwgQ2hhbndvbyBDaG9pIHdyb3RlOgo+ID4+Pj4+Pj4gSGksCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4g T24gMTEvMTUvMTkgNTowOSBBTSwgTGVvbmFyZCBDcmVzdGV6IHdyb3RlOgo+ID4+Pj4+Pj4+IEFk ZCBpbml0aWFsIHN1cHBvcnQgZm9yIGR5bmFtaWMgZnJlcXVlbmN5IHN3aXRjaGluZyBvbiBwaWVj ZXMgb2YgdGhlIGlteAo+ID4+Pj4+Pj4+IGludGVyY29ubmVjdCBmYWJyaWMuCj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBBbGwgdGhpcyBkcml2ZXIgZG9lcyBpcyBzZXQgYSBjbGsgcmF0ZSBiYXNlZCBv biBhbiBvcHAgdGFibGUsIGl0IGRvZXMKPiA+Pj4+Pj4+PiBub3QgbWFwIHJlZ2lzdGVyIGFyZWFz Lgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTGVvbmFyZCBDcmVzdGV6IDxs ZW9uYXJkLmNyZXN0ZXpAbnhwLmNvbT4KPiA+Pj4+Pj4+PiAtLS0KPiA+Pj4+Pj4+PiAgICAgZHJp dmVycy9kZXZmcmVxL0tjb25maWcgICAgICAgfCAgIDkgKysKPiA+Pj4+Pj4+PiAgICAgZHJpdmVy cy9kZXZmcmVxL01ha2VmaWxlICAgICAgfCAgIDEgKwo+ID4+Pj4+Pj4+ICAgICBkcml2ZXJzL2Rl dmZyZXEvaW14LWRldmZyZXEuYyB8IDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPj4+Pj4+Pj4gICAgIDMgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKykKPiA+ Pj4+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZGV2ZnJlcS9pbXgtZGV2ZnJl cS5jCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL0tj b25maWcgYi9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+ID4+Pj4+Pj4+IGluZGV4IDkyM2E2MTMy ZTc0MS4uZmVmNWNlODMxZTkwIDEwMDY0NAo+ID4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZGV2ZnJl cS9LY29uZmlnCj4gPj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9kZXZmcmVxL0tjb25maWcKPiA+Pj4+ Pj4+PiBAQCAtOTgsMTAgKzk4LDE5IEBAIGNvbmZpZyBBUk1fSU1YOE1fRERSQ19ERVZGUkVRCj4g Pj4+Pj4+Pj4gICAgICAgIHNlbGVjdCBERVZGUkVRX0dPVl9VU0VSU1BBQ0UKPiA+Pj4+Pj4+PiAg ICAgICAgaGVscAo+ID4+Pj4+Pj4+ICAgICAgICAgIFRoaXMgYWRkcyB0aGUgREVWRlJFUSBkcml2 ZXIgZm9yIHRoZSBpLk1YOE0gRERSIENvbnRyb2xsZXIuIEl0IGFsbG93cwo+ID4+Pj4+Pj4+ICAg ICAgICAgIGFkanVzdGluZyBEUkFNIGZyZXF1ZW5jeS4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ICtj b25maWcgQVJNX0lNWF9ERVZGUkVRCj4gPj4+Pj4+Pj4gKyAgICAgIHRyaXN0YXRlICJpLk1YIEdl bmVyaWMgREVWRlJFUSBEcml2ZXIiCj4gPj4+Pj4+Pj4gKyAgICAgIGRlcGVuZHMgb24gQVJDSF9N WEMgfHwgQ09NUElMRV9URVNUCj4gPj4+Pj4+Pj4gKyAgICAgIHNlbGVjdCBERVZGUkVRX0dPVl9Q QVNTSVZFCj4gPj4+Pj4+Pj4gKyAgICAgIHNlbGVjdCBERVZGUkVRX0dPVl9VU0VSU1BBQ0UKPiA+ Pj4+Pj4+PiArICAgICAgaGVscAo+ID4+Pj4+Pj4+ICsgICAgICAgIFRoaXMgYWRkcyB0aGUgZ2Vu ZXJpYyBERVZGUkVRIGRyaXZlciBmb3IgaS5NWCBpbnRlcmNvbm5lY3RzLiBJdAo+ID4+Pj4+Pj4+ ICsgICAgICAgIGFsbG93cyBhZGp1c3RpbmcgTklDL05PQyBmcmVxdWVuY3kuCj4gPj4+Pj4+Pj4g Kwo+ID4+Pj4+Pj4+ICAgICBjb25maWcgQVJNX1RFR1JBX0RFVkZSRVEKPiA+Pj4+Pj4+PiAgICAg ICAgdHJpc3RhdGUgIk5WSURJQSBUZWdyYTMwLzExNC8xMjQvMjEwIERFVkZSRVEgRHJpdmVyIgo+ ID4+Pj4+Pj4+ICAgICAgICBkZXBlbmRzIG9uIEFSQ0hfVEVHUkFfM3hfU09DIHx8IEFSQ0hfVEVH UkFfMTE0X1NPQyB8fCBcCj4gPj4+Pj4+Pj4gICAgICAgICAgICAgICAgQVJDSF9URUdSQV8xMzJf U09DIHx8IEFSQ0hfVEVHUkFfMTI0X1NPQyB8fCBcCj4gPj4+Pj4+Pj4gICAgICAgICAgICAgICAg QVJDSF9URUdSQV8yMTBfU09DIHx8IFwKPiA+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9k ZXZmcmVxL01ha2VmaWxlIGIvZHJpdmVycy9kZXZmcmVxL01ha2VmaWxlCj4gPj4+Pj4+Pj4gaW5k ZXggM2ViNGQ1ZTY2MzVjLi42MWQwZWRlZTE2ZjcgMTAwNjQ0Cj4gPj4+Pj4+Pj4gLS0tIGEvZHJp dmVycy9kZXZmcmVxL01ha2VmaWxlCj4gPj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9kZXZmcmVxL01h a2VmaWxlCj4gPj4+Pj4+Pj4gQEAgLTgsMTAgKzgsMTEgQEAgb2JqLSQoQ09ORklHX0RFVkZSRVFf R09WX1VTRVJTUEFDRSkgICs9IGdvdmVybm9yX3VzZXJzcGFjZS5vCj4gPj4+Pj4+Pj4gICAgIG9i ai0kKENPTkZJR19ERVZGUkVRX0dPVl9QQVNTSVZFKSAgKz0gZ292ZXJub3JfcGFzc2l2ZS5vCj4g Pj4+Pj4+Pj4KPiA+Pj4+Pj4+PiAgICAgIyBERVZGUkVRIERyaXZlcnMKPiA+Pj4+Pj4+PiAgICAg b2JqLSQoQ09ORklHX0FSTV9FWFlOT1NfQlVTX0RFVkZSRVEpICAgICAgICs9IGV4eW5vcy1idXMu bwo+ID4+Pj4+Pj4+ICAgICBvYmotJChDT05GSUdfQVJNX0lNWDhNX0REUkNfREVWRlJFUSkgICAg ICAgKz0gaW14OG0tZGRyYy5vCj4gPj4+Pj4+Pj4gK29iai0kKENPTkZJR19BUk1fSU1YX0RFVkZS RVEpICAgICAgICAgKz0gaW14LWRldmZyZXEubwo+ID4+Pj4+Pj4+ICAgICBvYmotJChDT05GSUdf QVJNX1JLMzM5OV9ETUNfREVWRlJFUSkgICAgICAgKz0gcmszMzk5X2RtYy5vCj4gPj4+Pj4+Pj4g ICAgIG9iai0kKENPTkZJR19BUk1fVEVHUkFfREVWRlJFUSkgICAgICAgICAgICArPSB0ZWdyYTMw LWRldmZyZXEubwo+ID4+Pj4+Pj4+ICAgICBvYmotJChDT05GSUdfQVJNX1RFR1JBMjBfREVWRlJF USkgICs9IHRlZ3JhMjAtZGV2ZnJlcS5vCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiAgICAgIyBERVZG UkVRIEV2ZW50IERyaXZlcnMKPiA+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVx L2lteC1kZXZmcmVxLmMgYi9kcml2ZXJzL2RldmZyZXEvaW14LWRldmZyZXEuYwo+ID4+Pj4+Pj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4+Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MjBi MzQ0ZTg3YWEKPiA+Pj4+Pj4+PiAtLS0gL2Rldi9udWxsCj4gPj4+Pj4+Pj4gKysrIGIvZHJpdmVy cy9kZXZmcmVxL2lteC1kZXZmcmVxLmMKPiA+Pj4+Pj4+PiBAQCAtMCwwICsxLDE1MCBAQAo+ID4+ Pj4+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4+Pj4+Pj4+ICsv Kgo+ID4+Pj4+Pj4+ICsgKiBDb3B5cmlnaHQgMjAxOSBOWFAKPiA+Pj4+Pj4+PiArICovCj4gPj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPj4+Pj4+Pj4gKyNp bmNsdWRlIDxsaW51eC9kZXZmcmVxLmg+Cj4gPj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4KPiA+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4+Pj4+Pj4+ICsj aW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gPj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9w bV9vcHAuaD4KPiA+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ ID4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ PiArc3RydWN0IGlteF9kZXZmcmVxIHsKPiA+Pj4+Pj4+PiArICAgICAgc3RydWN0IGRldmZyZXFf ZGV2X3Byb2ZpbGUgcHJvZmlsZTsKPiA+Pj4+Pj4+PiArICAgICAgc3RydWN0IGRldmZyZXEgKmRl dmZyZXE7Cj4gPj4+Pj4+Pj4gKyAgICAgIHN0cnVjdCBjbGsgKmNsazsKPiA+Pj4+Pj4+PiArICAg ICAgc3RydWN0IGRldmZyZXFfcGFzc2l2ZV9kYXRhIHBhc3NpdmVfZGF0YTsKPiA+Pj4+Pj4+PiAr fTsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gK3N0YXRpYyBpbnQgaW14X2RldmZyZXFfdGFyZ2V0 KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKmZyZXEsIHUzMiBmbGFncykKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBE b24ndCB1c2Ugc3BhY2UgZm9yIHRoZSBpbmRlbnRhdGlvbi4gUGxlYXNlIHVzZSBvbmx5IHRhYi4K PiA+Pj4+Cj4gPj4+PiBPSwo+ID4+Cj4gPj4gVGhlIHNwYWNlcyBhcmUgcmVxdWlyZWQgaW4gb3Jk ZXIgdG8gYWxpZ24gYXJndW1lbnRzIHRvIG9wZW4gcGFyYW50aGVzaXMuCj4gPj4gU2hvdWxkIEkg ZHJvcCB0aGF0Pwo+ID4+Cj4gPj4gSXQgc2VlbXMgdGhhdCBjaGVja19wYXRjaC5wbCBhbmQgcHJv Y2Vzcy9jb2Rpbmctc3R5bGUucnN0IGRvZXNuJ3QgaGF2ZSBhCj4gPj4gc3Ryb25nIG9waW5pb24g b24gdGhpczsgbXkgcGVyc29uYWwgcHJlZmVyZW5jZSBpcyBmb3IgbG9uZyBhcmd1bWVudAo+ID4+ IGxpc3RzIHRvIGp1c3QgdXNlIGRvdWJsZSBpbmRlbnRhdGlvbi4KPiA+Cj4gPiBHZW5lcmFsbHks IGFsbW9zdCBwYXRjaGVzIHVzZSB0aGUgdGFiIGZvciB0aGUgaW5kZW50YXRpb24uCj4gPiBJIGRv bid0IHVzZSBzcGFjZSBmb3IgdGhlIGluZGVudGF0aW9uLiBJZiB1c2UgdGhlIHRhYgo+ID4gZm9y IHRoZSBpbmRlbnRhdGlvbiwgaXQgaXMgbm90IGhhcm1mdWwgZm9yIHRoZSByZWFkYWJpbGl0eS4K PiA+Cj4gPiBJZiB1c2UgdGhlIHNwYWNlIGZvciB0aGUgcHJldHR5IHRvIG1ha2UgdGhlIGFsaWdu bWVudCBiZXR3ZWVuIHBhcmFtZXRlciwKPiA+IEkgdGhpbmsgaXQgaXQgbm90IGdvb2QuCj4KPiBP SywgSSdsbCBqdXN0IHVzZSB0d28gdGFicy4gVGhpcyBhbHNvIG1hdGNoZXMgbXkgcGVyc29uYWwg cHJlZmVyZW5jZS4KPgo+ID4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4gKyAgICAgIHN0cnVjdCBpbXhf ZGV2ZnJlcSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+Pj4+Pj4+ICsgICAgICBz dHJ1Y3QgZGV2X3BtX29wcCAqbmV3X29wcDsKPiA+Pj4+Pj4+PiArICAgICAgdW5zaWduZWQgbG9u ZyBuZXdfZnJlcTsKPiA+Pj4+Pj4+PiArICAgICAgaW50IHJldDsKPiA+Pj4+Pj4+PiArCj4gPj4+ Pj4+Pj4gKyAgICAgIG5ld19vcHAgPSBkZXZmcmVxX3JlY29tbWVuZGVkX29wcChkZXYsIGZyZXEs IGZsYWdzKTsKPiA+Pj4+Pj4+PiArICAgICAgaWYgKElTX0VSUihuZXdfb3BwKSkgewo+ID4+Pj4+ Pj4+ICsgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIobmV3X29wcCk7Cj4gPj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHJlY29tbWVuZGVkIG9wcDog JWRcbiIsIHJldCk7Cj4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+Pj4+ Pj4+PiArICAgICAgfQo+ID4+Pj4+Pj4+ICsgICAgICBuZXdfZnJlcSA9IGRldl9wbV9vcHBfZ2V0 X2ZyZXEobmV3X29wcCk7Cj4gPj4+Pj4+Pj4gKyAgICAgIGRldl9wbV9vcHBfcHV0KG5ld19vcHAp Owo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArICAgICAgcmV0dXJuIGNsa19zZXRfcmF0ZShwcml2 LT5jbGssIG5ld19mcmVxKTsKPiA+Pj4+Pj4+PiArfQo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiAr c3RhdGljIGludCBpbXhfZGV2ZnJlcV9nZXRfY3VyX2ZyZXEoc3RydWN0IGRldmljZSAqZGV2LCB1 bnNpZ25lZCBsb25nICpmcmVxKQo+ID4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4gKyAgICAgIHN0cnVj dCBpbXhfZGV2ZnJlcSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+Pj4+Pj4+ICsK PiA+Pj4+Pj4+PiArICAgICAgKmZyZXEgPSBjbGtfZ2V0X3JhdGUocHJpdi0+Y2xrKTsKPiA+Pj4+ Pj4+PiArCj4gPj4+Pj4+Pj4gKyAgICAgIHJldHVybiAwOwo+ID4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+ Pj4gKwo+ID4+Pj4+Pj4+ICtzdGF0aWMgaW50IGlteF9kZXZmcmVxX2dldF9kZXZfc3RhdHVzKHN0 cnVjdCBkZXZpY2UgKmRldiwKPiA+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRldmZyZXFfZGV2X3N0YXR1cyAqc3RhdCkKPiA+Pj4+Pj4+Cj4gPj4+ Pj4+PiBkaXR0by4gUGxlYXNlIHVzZSB0YWIgZm9yIHRoZSBpbmRlbnRhdGlvbi4KPiA+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+PiArICAgICAgc3RydWN0IGlteF9kZXZmcmVxICpwcml2 ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsgICAgICBz dGF0LT5idXN5X3RpbWUgPSAwOwo+ID4+Pj4+Pj4+ICsgICAgICBzdGF0LT50b3RhbF90aW1lID0g MDsKPiA+Pj4+Pj4+PiArICAgICAgc3RhdC0+Y3VycmVudF9mcmVxdWVuY3kgPSBjbGtfZ2V0X3Jh dGUocHJpdi0+Y2xrKTsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKyAgICAgIHJldHVybiAwOwo+ ID4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICtzdGF0aWMgdm9pZCBpbXhfZGV2 ZnJlcV9leGl0KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+Pj4+Pj4+PiArewo+ID4+Pj4+Pj4+ICsg ICAgICBkZXZfcG1fb3BwX29mX3JlbW92ZV90YWJsZShkZXYpOwo+ID4+Pj4+Pj4+ICt9Cj4gPj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICtzdGF0aWMgaW50IGlteF9kZXZmcmVxX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+PiArICAgICAgc3Ry dWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiA+Pj4+Pj4+PiArICAgICAgc3RydWN0IGlt eF9kZXZmcmVxICpwcml2Owo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEhvdyBhYm91dCBjaGFuZ2luZyB0 aGUgdmFyaWFibGUgbmFtZSAncHJpdicgdG8gJ2lteCcgb3IgJ2lteF9kYXRhJz8KPiA+Pj4+Pj4+ IGJlY2F1c2UgaXQgaXMgbm90IGVhc3kgdG8gY2F0Y2ggdGhlIHJvbGUgb2YgJ3ByaXYnIGZyb20g dmFyaWFibGUgbmFtZS4KPiA+Pj4+Cj4gPj4+PiBUaGUgbmFtZSAicHJpdiIgcmVmZXJzIHRvIHBy aXZhdGUgZGF0YSBvZiBjdXJyZW50IGRldmljZTogaXQgaXMgc2hvcnQKPiA+Pj4+IGFuZCBub3Qg YW1iaWd1b3VzIGluIHRoaXMgY29udGV4dC4gSSBkb24ndCB0aGluayB0aGF0IG1lbnRpb25pbmcg ImlteCIKPiA+Pj4+IGFkZHMgYW55IGFkZGl0aW9uYWwgdXNlZnVsIGluZm9ybWF0aW9uLgo+ID4+ Pj4KPiA+Pj4+IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZXJlJ3MgbXVjaCBvZiBhIGNvbnZlbnRp b24gZm9yICJsb2NhbCB2YXJpYWJsZQo+ID4+Pj4gY29udGFpbmluZyBwcml2YXRlIGRhdGEiLCBm b3IgZXhhbXBsZSBleHlub3MtYnVzLmMgdXNlcyAic3RydWN0Cj4gPj4+PiBleHlub3NfYnVzKiBi dXMiIGludGVybmFsbHkuCj4gPj4+Cj4gPj4+IE9LLiBpdCBpcyBuaXRwaWNrLiBLZWVwIHlvdXIg c3R5bGUuCj4gPj4+Cj4gPj4+Pgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+PiArICAgICAgY29uc3QgY2hh ciAqZ292ID0gREVWRlJFUV9HT1ZfVVNFUlNQQUNFOwo+ID4+Pj4+Pj4+ICsgICAgICB2b2lkICpn b3ZkYXRhID0gTlVMTDsKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBIb3cgYWJvdXQgY2hhbmdpbmcgdGhl IHZhcmlhYmxlIG5hbWUgJ2dvdmRhdGEnIHRvICdnb3ZfZGF0YSc/Cj4gPj4+Pj4+PiAtIGdvdmRh dGEgLT4gZ292X2RhdGEKPiA+Pj4+Cj4gPj4+PiBPSwo+ID4+Pj4KPiA+Pj4+Pj4+PiArICAgICAg aW50IHJldDsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKyAgICAgIHByaXYgPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPiA+Pj4+Pj4+PiArICAgICAgaWYg KCFwcml2KQo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4+Pj4+ Pj4+ICsKPiA+Pj4+Pj4+PiArICAgICAgcHJpdi0+Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVM TCk7Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gbml0cGljazogYmVjYXVzZSB0aGUgY2xvY2stbmFtZSBp cyBub3QgbWFuZGF0b3J5Lgo+ID4+Pj4+Pj4gRG9uJ3QgbmVlZCB0byBzcGVjaWZ5IHRoZSBjbG9j ayBuYW1lIHRvIGluZm9ybSB0aGUgcm9sZSBvZiBjbG9jawo+ID4+Pj4+Pj4gb2Ygb3RoZXIgZGV2 ZWxvcGVyL3VzZXI/Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gRm9yIGV4YW1wbGUsICJkZHIiLCAiYnVz IiBhbmQgc28gb24uCj4gPj4+Pgo+ID4+Pj4gSSdsbCBjYWxsIHRoaXMgYnVzLCBidXQgSSdtIG5v dCBzdXJlIGl0J3MgdXNlZnVsIHdoZW4gYSBzaW5nbGUgY2xvY2sgaXMKPiA+Pj4+IGludm9sdmVk Lgo+ID4+Pj4KPiA+Pj4+Pj4gQW5kLCB0aGlzIGRyaXZlciBkb2Vzbid0IGluY2x1ZGUgdGhlICdj bGtfcHJlcGFyZV9lbmFibGUnLgo+ID4+Pj4+PiBob3cgdG8gZW5hYmxlIHRoZSBjbG9jaz8KPiA+ Pj4+Cj4gPj4+PiBDbG9ja3MgYXJlIGVpdGhlciBhbHdheXMgb24gb3IgcGVyaGFwcyBjb250cm9s bGVkIGJ5IHNvbWUgb3RoZXIKPiA+Pj4+IHBlcmlwaGVyYWwuIFRoaXMgZHJpdmVyIG9ubHkgcHJv dmlkZXMgc2NhbGluZy4KPiA+Pj4KPiA+Pj4gSXQgaXMgbm90IHByb3BlciB1c2UtY2FzZSBvZiBj bG9jay4gSWYgZGV2aWNlIGRyaXZlcgo+ID4+PiB3YW50IHRvIGNvbnRyb2wgdGhlIGNsb2NrLCBp dCBoYXZlIHRvIGJlIGVuYWJsZWQgb24gZGV2aWNlIGRyaXZlci4KPiA+Pgo+ID4+PiBFdmVuIGl0 IGNsb2NrIGlzIGFsd2F5cywgdGhlIHVzZXIgZG9uJ3Qga25vdyB0aGUgc3RhdGUgb2YgY2xvY2su Cj4gPj4+IEFsc28sIHVzZXIgY2FuJ3Qga25vdyB3aGF0IGtpbmQgb2YgZGV2aWNlIGRyaXZlciBj b250cm9sIHRoZSBjbG9jay4KPiA+Pj4KPiA+Pj4gSXQgaGF2ZSB0byBiZSBjb250cm9sbGVkIG9u IHRoaXMgZGV2aWNlIGRyaXZlcgo+ID4+PiBiZWZvcmUgY2hhbmdpbmcgdGhlIGNsb2NrIGZyZXF1 ZW5jeS4KPiA+Pgo+ID4+ICAgRnJvbSBjbG9jayBmcmFtZXdvcmsgcGVyc3BlY3RpdmUgcHJlcGFy ZS9lbmFibGUgYW5kIHJhdGUgYml0cyBjYW4gYmUKPiA+PiBjb250cm9sbGVkIHNlcGFyYXRlbHku Cj4gPj4KPiA+PiBNYW55IHBlcmlwaGVyYWxzIGFyZSBncm91cGVkIHdpdGggdGhlaXIgb3duIGJ1 cyAoZm9yIGV4YW1wbGUgYSBQTDMwMQo+ID4+IE5JQykgd2hpY2ggaXMgbm9ybWFsbHkgb2ZmIGFu ZCBvbmx5IGdldHMgZW5hYmxlZCB3aGVuIGV4cGxpY2l0bHkKPiA+PiByZXF1ZXN0ZWQgYnkgZHJp dmVycy4gSWYgdGhpcyBkZXZmcmVxIGRyaXZlciBhbHdheXMgZW5hYmxlZCBidXMgY2xvY2tzCj4g Pj4gdGhlbiBpdCB3b3VsZCB3YXN0ZSBwb3dlciBmb3Igbm8gcmVhc29uLgo+ID4KPiA+IFlvdSBj YW4gc2F2ZSB0aGUgcG93ZXIgd2l0aCBmb2xsb3dpbmcgc2VxdWVuY2UuCj4gPiBZb3UgYXJlIGtl ZXBpbmcgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSB3aXRob3V0IGFueSBwcm9ibGVtLgo+ID4gICAg ICAgY2xrX3ByZXBhcmVfZW5hYmxlKCkKPiA+ICAgICAgIGNsa19zZXRfcmF0ZSgpCj4gPiAgICAg ICBjbGtfZGlzYWJsZV91bnByZXBhcmUoKQo+ID4KPiA+IGNsayBBUEkgc3VwcG9ydCB0aGUgcmVm ZXJlbmNlIGNvdW50IGZvciB0aGUgY2xvY2sgdXNlci4KPiA+IEl0IGRvZXNuJ3QgYWZmZWN0IHRo ZSBhbnkgYmVoYXZpb3Igb2Ygb3RoZXIgZGV2aWNlIHNoYXJpbmcgdGhlIGJ1cyBjbG9jawo+ID4g YW5kIHdhc3RlIGFueSBwb3dlci1jb25zdW1wdGlvbiBiZWNhdXNlIGl0IHdpbGwgYWx3YXlzIHJl c3RvcmUKPiA+IHRoZSByZWZlcmVuY2UgY291bnQgYWZ0ZXIgY2hhbmdpbmcgdGhlIGNsb2NrIHJh dGUuCj4KPiBCdXQgdGhpcyBkb2Vzbid0IHNlcnZlIGFueSBwdXJwb3NlPwo+Cj4gSW4gc29tZSBj YXNlcyAoZGVwZW5kaW5nIG9uIGNsb2NrIGZsYWdzIGxpa2UgQ0xLX1NFVF9SQVRFX0dBVEUgb3IK PiBDTEtfU0VUX1JBVEVfVU5HQVRFIGZsYWdzKSB0aGUgY2xrX3NldF9yYXRlIGZ1bmN0aW9uIGNh biByZXF1aXJlIHRoYW4KPiBjbG9ja3MgYXJlIGVpdGhlciBvbiBvciBvZmYgYW5kIG90aGVyd2lz ZSByZXR1cm4gYW4gZXJyb3IuCj4KPiBGb3IgaW14IGJ1cyBjbG9ja3MgdGhlcmUgaXMgbm8gc3Vj aCByZXF1aXJlbWVudC4KCklmIHlvdSBndWFyYW50ZWUgdGhhdCBpdCBpcyBub3QgcmVxdWlyZWQg b24gYWxsIGJvYXJkIHJlbGF0ZWQgdG8gaW14LApwbGVhc2UgYWRkIHRoaXMgY29tbWVudCB3aGVu IGNhbGxpbmcgY2xrX3NldF9yYXRlKCkuCkJlY2F1c2UgdGhlIHVzZXIgd2hvIGRvbid0IGtub3cg dGhlIGhpc3RvcnkgYW5kIGNoYXJhY3RlciwKZG9uJ3QgdW5kZXJzdGFuZCB3aHkgZG9uJ3QgZW5h YmxlIG9yIGRpc2FibGUgZm9yIGNsb2NrLgoKSSdsbCBhZ3JlZSBpZiB5b3UgYWRkIHRoZSBjb21t ZW50IHdoeSBkb24ndCBuZWVkIHRvCmVuYWJsZS9kaXNhYmxlIGNvbnRyb2wgb24gdGhpcyBkcml2 ZXIuCgoKPgo+ID4+IEZvciBleGFtcGxlIGEgZGlzcGxheSBjb250cm9sbGVyIHdpbGwgZmlyc3Qg ZW5hYmxlIGNsb2NrcyB0byBhbGxvdwo+ID4+IGFjY2VzcyB0byBkZXZpY2UgcmVnaXN0ZXJzLCB0 aGVuIGNvbmZpZ3VyZSBhIHJlc29sdXRpb24gYW5kIG1ha2UgYQo+ID4+IGJhbmR3aXRoIHJlcXVl c3Qgd2hpY2ggZ2V0cyB0cmFuc2xhdGVkIGEgbWluX2ZyZXEgcmVxdWVzdC4gVGhlbiB3aGVuIHRo ZQo+ID4+IGRpc3BsYXkgaXMgYmxhbmtlZCB0aGUgZW50aXJlIGRpc3BsYXkgYnVzIHNob3VsZCBi ZSBwb3dlcmVkIG9mZiwgZXZlbiBpZgo+ID4+IHRoaXMgbWFrZXMgY29udHJvbCByZWdpc3RlcnMg aW5hY2Nlc3NpYmxlLgo+ID4+Cj4gPj4gVGhpcyBzZXJpZXMgb25seSBlbmFibGVzIHNjYWxpbmcg Zm9yIHRoZSBtYWluIE5PQyB3aGljaCBjYW4ndCBiZSB0dXJuZWQKPiA+PiBvZmYgYW55d2F5Lgo+ ID4+Cj4gPj4+Pj4+Pj4gKyAgICAgIGlmIChJU19FUlIocHJpdi0+Y2xrKSkgewo+ID4+Pj4+Pj4+ ICsgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocHJpdi0+Y2xrKTsKPiA+Pj4+Pj4+PiArICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBmZXRjaCBjbGs6ICVkXG4iLCByZXQp Owo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pj4+Pj4gKyAgICAg IH0KPiA+Pj4+Pj4+PiArICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7Cj4g Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsgICAgICByZXQgPSBkZXZfcG1fb3BwX29mX2FkZF90YWJs ZShkZXYpOwo+ID4+Pj4+Pj4+ICsgICAgICBpZiAocmV0IDwgMCkgewo+ID4+Pj4+Pj4+ICsgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBPUFAgdGFibGVcbiIpOwo+ID4+ Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pj4+Pj4gKyAgICAgIH0KPiA+ Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKyAgICAgIHByaXYtPnByb2ZpbGUucG9sbGluZ19tcyA9IDEw MDA7Cj4gPj4+Pj4+Pj4gKyAgICAgIHByaXYtPnByb2ZpbGUudGFyZ2V0ID0gaW14X2RldmZyZXFf dGFyZ2V0Owo+ID4+Pj4+Pj4+ICsgICAgICBwcml2LT5wcm9maWxlLmdldF9kZXZfc3RhdHVzID0g aW14X2RldmZyZXFfZ2V0X2Rldl9zdGF0dXM7Cj4gPj4+Pj4+Pj4gKyAgICAgIHByaXYtPnByb2Zp bGUuZXhpdCA9IGlteF9kZXZmcmVxX2V4aXQ7Cj4gPj4+Pj4+Pj4gKyAgICAgIHByaXYtPnByb2Zp bGUuZ2V0X2N1cl9mcmVxID0gaW14X2RldmZyZXFfZ2V0X2N1cl9mcmVxOwo+ID4+Pj4+Pj4+ICsg ICAgICBwcml2LT5wcm9maWxlLmluaXRpYWxfZnJlcSA9IGNsa19nZXRfcmF0ZShwcml2LT5jbGsp Owo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArICAgICAgLyogSGFuZGxlIHBhc3NpdmUgZGV2ZnJl cSBwYXJlbnQgbGluayAqLwo+ID4+Pj4+Pj4+ICsgICAgICBwcml2LT5wYXNzaXZlX2RhdGEucGFy ZW50ID0gZGV2ZnJlcV9nZXRfZGV2ZnJlcV9ieV9waGFuZGxlKGRldiwgMCk7Cj4gPj4+Pj4+Pj4g KyAgICAgIGlmICghSVNfRVJSKHByaXYtPnBhc3NpdmVfZGF0YS5wYXJlbnQpKSB7Cj4gPj4+Pj4+ Pj4gKyAgICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAic2V0dXAgcGFzc2l2ZSBsaW5rIHRvICVz XG4iLAo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKHByaXYtPnBh c3NpdmVfZGF0YS5wYXJlbnQtPmRldi5wYXJlbnQpKTsKPiA+Pj4+Pj4+PiArICAgICAgICAgICAg ICBnb3YgPSBERVZGUkVRX0dPVl9QQVNTSVZFOwo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgIGdv dmRhdGEgPSAmcHJpdi0+cGFzc2l2ZV9kYXRhOwo+ID4+Pj4+Pj4+ICsgICAgICB9IGVsc2UgaWYg KHByaXYtPnBhc3NpdmVfZGF0YS5wYXJlbnQgIT0gRVJSX1BUUigtRU5PREVWKSkgewo+ID4+Pj4+ Pj4+ICsgICAgICAgICAgICAgIC8vIC1FTk9ERVYgbWVhbnMgbm8gcGFyZW50OiBub3QgYW4gZXJy b3IuCj4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihwcml2LT5wYXNzaXZl X2RhdGEucGFyZW50KTsKPiA+Pj4+Pj4+PiArICAgICAgICAgICAgICBpZiAocmV0ICE9IC1FUFJP QkVfREVGRVIpCj4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihkZXYs ICJmYWlsZWQgdG8gZ2V0IGluaXRpYWxpemUgcGFzc2l2ZSBwYXJlbnQ6ICVkXG4iLAo+ID4+Pj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsKPiA+Pj4+Pj4+PiArICAg ICAgICAgICAgICBnb3RvIGVycjsKPiA+Pj4+Pj4+PiArICAgICAgfQo+ID4+Pj4+Pj4KPiA+Pj4+ Pj4+IFlvdSBiZXR0ZXIgdG8gY2hhbmdlIHRoZSBleGNlcHRpb24gaGFuZGxpbmcgYXMgZm9sbG93 aW5nOiBJdCBpcyBtb3JlIHNpbXBsZS4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAgICAgICAgIH0gZWxz ZSBpZiAoUFRSX0VSUihwcml2LT5wYXNzaXZlX2RhdGEucGFyZW50KSA9PSAtRVBST0JFX0RFRkVS KQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgfHwgUFRSX0VSUihwcml2LT5wYXNz aXZlX2RhdGEucGFyZW50KSA9PSAtRU5PREVWKSB7Cj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAg Z290byBlcnI7Cj4gPj4+Pj4+PiAgICAgICAgIH0gZWxzZSB7Cj4gPj4+Pj4+PiAgICAgICAgICAg ICAgICAgcmV0ID0gUFRSX0VSUihwcml2LT5wYXNzaXZlX2RhdGEucGFyZW50KTsKPiA+Pj4+Pj4+ ICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgaW5pdGlhbGl6ZSBw YXNzaXZlIHBhcmVudDogJWRcbiIsIHJldCk7Cj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgZ290 byBlcnI7Cj4gPj4+Pj4+PiAgICAgICAgIH0KPiA+Pj4+Cj4gPj4+PiBCdXQgLUVOT0RFViBpcyBu b3QgYW4gZXJyb3IsIGl0IG1lYW5zIG5vIHBhc3NpdmUgcGFyZW50IHdhcyBmb3VuZC4KPiA+Pj4K PiA+Pj4gT0suIGp1c3QgSSB3YW50IHRvIG1ha2UgJ2lmIHN0YXRlbWVudCcgbW9yZSBzaW1wbGUu IFRoaXMgc3R5bGUKPiA+Pj4gaXMgY29tcGxpY2F0ZWQuCj4gPj4KPiA+PiBJIGNhbiBhdm9pZCBo YW5kbGluZyBFUFJPQkVfREVGRVIgaW4gYSBuZXN0ZWQgaWYuCj4gPgo+ID4gQW55d2F5LCBpZiB5 b3UgbWFrZSB0aGUgZXhjZXB0aW9uIG1vcmUgc2ltcGxlLCBJJ20gb2suCj4gPgo+ID4+Cj4gPj4+ Pj4+Pj4gKyAgICAgIHByaXYtPmRldmZyZXEgPSBkZXZtX2RldmZyZXFfYWRkX2RldmljZShkZXYs ICZwcml2LT5wcm9maWxlLAo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ292LCBnb3ZkYXRhKTsKPiA+Pj4+Pj4+PiArICAgICAgaWYgKElT X0VSUihwcml2LT5kZXZmcmVxKSkgewo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldCA9IFBU Ul9FUlIocHJpdi0+ZGV2ZnJlcSk7Cj4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJmYWlsZWQgdG8gYWRkIGRldmZyZXEgZGV2aWNlOiAlZFxuIiwgcmV0KTsKPiA+Pj4+Pj4+ PiArICAgICAgICAgICAgICBnb3RvIGVycjsKPiA+Pj4+Pj4+PiArICAgICAgfQo+ID4+Pj4+Pj4+ ICsKPiA+Pj4+Pj4+PiArICAgICAgcmV0dXJuIDA7Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICtl cnI6Cj4gPj4+Pj4+Pj4gKyAgICAgIGRldl9wbV9vcHBfb2ZfcmVtb3ZlX3RhYmxlKGRldik7Cj4g Pj4+Pj4+Pj4gKyAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pj4+Pj4gK30KPiA+Pj4+Pj4+PiArCj4g Pj4+Pj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9kZXZmcmVxX29m X21hdGNoW10gPSB7Cj4gPj4+Pj4+Pj4gKyAgICAgIHsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDht LW5vYyIsIH0sCj4gPj4+Pj4+Pj4gKyAgICAgIHsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhtLW5p YyIsIH0sCj4gPj4+Pj4+Pj4gKyAgICAgIHsgLyogc2VudGluZWwgKi8gfSwKPiA+Pj4+Pj4+PiAr fTsKPiA+Pj4+Pj4+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2RldmZyZXFfb2ZfbWF0 Y2gpOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgaW14X2RldmZyZXFfcGxhdGRydiA9IHsKPiA+Pj4+Pj4+PiArICAgICAgLnByb2JlICAgICAg ICAgID0gaW14X2RldmZyZXFfcHJvYmUsCj4gPj4+Pj4+Pj4gKyAgICAgIC5kcml2ZXIgPSB7Cj4g Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgLm5hbWUgICA9ICJpbXgtZGV2ZnJlcSIsCj4gPj4+Pj4+ Pj4gKyAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGlteF9kZXZm cmVxX29mX21hdGNoKSwKPiA+Pj4+Pj4+PiArICAgICAgfSwKPiA+Pj4+Pj4+PiArfTsKPiA+Pj4+ Pj4+PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbXhfZGV2ZnJlcV9wbGF0ZHJ2KTsKPiA+Pj4+ Pj4+PiArCj4gPj4+Pj4+Pj4gK01PRFVMRV9ERVNDUklQVElPTigiR2VuZXJpYyBpLk1YIGJ1cyBm cmVxdWVuY3kgZHJpdmVyIik7Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gSWYgdGhpcyBkcml2ZXIgaXMg Zm9yIGJ1cyBmcmVxdWVuY3ksIHlvdSBiZXR0ZXIgdG8gdXNlICdidXMnIGZvciB0aGUgY2xvY2st bmFtZQo+ID4+Pj4+Pj4gZm9yIHRoZSByZWFkYWJpbGl0eS4KPiA+Pgo+ID4+Cj4gPj4KPiA+Pgo+ ID4KPiA+Cj4KCgotLSAKQmVzdCBSZWdhcmRzLApDaGFud29vIENob2kKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK