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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 93568C43334 for ; Fri, 15 Jul 2022 16:39:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gT6AcddZtZ5RONAZbaRIrfRXgkTJav5J3QQ4uNHP7FY=; b=LtDy2NyCAIdK3X yie1W264lmn81Qa8Yi8VNyOVdp5I+q1elE04f7FU4353Ma5F3DJCKPIex4sFvrmCvyIvvlTi9lKFn Oed4V9QjvswLMwJot5YmQMhJG0MGHXbtVYNrRvleWsbS/BoVWB7MX/eNmeIb7eD4tYLszoRVY0EFD 59vWQcAYtkvhq8nbAxhJ5zNsakux3TikTo4bv3tztItSabS4mO7/Sd1aLmDL2bZFfxGYoEwmAQtCw xsRvSs/xCMD62jkh1WdfW3YJyR8Q4PCilsP2E7VaE3pliI670GU7Ji9D83k2DOA4xUhgZDqt1Iyrd MDj3dQK1Ii1j0G1aw2jw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oCOLL-008rdl-4B; Fri, 15 Jul 2022 16:39:07 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oCOLH-008rcO-3R; Fri, 15 Jul 2022 16:39:05 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9D5A512FC; Fri, 15 Jul 2022 09:39:00 -0700 (PDT) Received: from [10.57.86.139] (unknown [10.57.86.139]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E116B3F792; Fri, 15 Jul 2022 09:38:57 -0700 (PDT) Message-ID: Date: Fri, 15 Jul 2022 17:38:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH 1/4] perf/amlogic: Add support for Amlogic meson G12 SoC DDR PMU driver Content-Language: en-GB To: Jiucheng Xu , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org Cc: Rob Herring , Krzysztof Kozlowski , Will Deacon , Mark Rutland , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Chris Healy References: <20220712063641.2790997-1-jiucheng.xu@amlogic.com> <55be073b-caf1-320b-dd42-165636b45a74@arm.com> From: Robin Murphy In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220715_093903_263255_FFCB09DF X-CRM114-Status: GOOD ( 51.10 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMjAyMi0wNy0xNCAwOToxNywgSml1Y2hlbmcgWHUgd3JvdGU6ClsuLi5dCj4+PiArwqDCoMKg wqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeSgoc2libGluZyksICYoZXZlbnQpLT5zaWJsaW5n X2xpc3QsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2libGlu Z19saXN0KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc2libGluZy0+cG11ICE9 IGV2ZW50LT5wbXUgJiYKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWlzX3Nv ZnR3YXJlX2V2ZW50KHNpYmxpbmcpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTlZBTDsKPj4KPj4gSXQgbG9va3MgbGlrZSB5b3UgZG9uJ3QgaGF2ZSBtdWx0 aXBsZSBzZXRzIG9mIGhhcmR3YXJlIGNvdW50ZXJzOyBpZiBzbyAKPj4geW91J2QgYWxzbyBuZWVk IHRvIHJlamVjdCB0aGUgZ3JvdXAgaWYgaXQgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBldmVudCAK Pj4gZm9yIHRoaXMgUE1VLgo+IEkgaGF2ZSA1IEhXIGNvdW50ZXJzIGFuZCA1IHJlbGV2YW50IGV2 ZW50cy4gRG8geW91IG1lYW4gSSBuZWVkIHJlamVjdCAKPiB0aGUgZ3JvdXA/CgpBaCwgSSB0aGlu ayBJIHVuZGVyc3RhbmQgYSBiaXQgYmV0dGVyIG5vdywgc28gZWFjaCBjaGFubmVsIGlzIGEgc2Vw YXJhdGUgCmNvdW50ZXIgLSBpbiB0aGF0IGNhc2UgeW91IG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUg Z3JvdXAgZG9lc24ndCBjb250YWluIAptb3JlIHRoYW4gb25lIGV2ZW50IHRhcmdldGluZyB0aGUg c2FtZSBjaGFubmVsLiBUaGUgcmVhc29uIGlzIHRoYXQgCmV2ZW50X2FkZCBzaG91bGQgcmV0dXJu IGFuIGVycm9yIHdoZW4gYW5vdGhlciBldmVudCBpcyBhbHJlYWR5IHVzaW5nIHRoZSAKZ2l2ZW4g Y291bnRlciAtIHdoZW4gdGhhdCBoYXBwZW5zLCBwZXJmIHdpbGwgdHJ5IHRvIHNjaGVkdWxlIGRp ZmZlcmVudCAKY29tYmluYXRpb25zIG9mIGV2ZW50cyB0byB3b3JrIG91dCB3aGljaCBvbmVzIGNh biBjb3VudCBzaW11bHRhbmVvdXNseSAKYW5kIHdoaWNoIG5lZWQgdG8gYmUgbXVsdGlwbGV4ZWQu IEhvd2V2ZXIgaWYgdHdvIGNvbmZsaWN0aW5nIGV2ZW50cyBhcmUgCmluIHRoZSBzYW1lIGdyb3Vw LCBhbmQgdGh1cyByZXF1aXJlZCB0byBiZSBzY2hlZHVsZWQgdG9nZXRoZXIgCmF0b21pY2FsbHks IHRoZW4gaXQgZW5kcyB1cCBpbiBhbiBpbmZpbml0ZSBsb29wIHRyeWluZyB0byBhY2hpZXZlIHRo ZSAKaW1wb3NzaWJsZS4gVGhlcmVmb3JlIGV2ZW50X2luaXQgbXVzdCByZWplY3QgYW55IGdyb3Vw IHdob3NlIGV2ZW50cyAKd291bGQgbmV2ZXIgYmUgYWJsZSB0byBiZSBzY2hlZHVsZWQgdG9nZXRo ZXIuCgpbLi4uXQo+Pj4gK3N0YXRpYyBpbnQgZGRyX3BlcmZfb2ZmbGluZV9jcHUodW5zaWduZWQg aW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgCj4+PiAqbm9kZSkKPj4+ICt7Cj4+PiArwqDCoMKg IHN0cnVjdCBkZHJfcG11ICpwbXUgPSBobGlzdF9lbnRyeV9zYWZlKG5vZGUsIHN0cnVjdCBkZHJf cG11LCBub2RlKTsKPj4+ICvCoMKgwqAgaW50IHRhcmdldDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYg KGNwdSAhPSBwbXUtPmNwdSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+ICsKPj4+ ICvCoMKgwqAgdGFyZ2V0ID0gY3B1bWFza19hbnlfYnV0KGNwdV9vbmxpbmVfbWFzaywgY3B1KTsK Pj4+ICvCoMKgwqAgaWYgKHRhcmdldCA+PSBucl9jcHVfaWRzKQo+Pj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnBt dS0+cG11LCBjcHUsIHRhcmdldCk7Cj4+PiArwqDCoMKgIHBtdS0+Y3B1ID0gdGFyZ2V0Owo+Pj4g Kwo+Pj4gK8KgwqDCoCBXQVJOX09OKGlycV9zZXRfYWZmaW5pdHlfaGludChwbXUtPmluZm8uaXJx X251bSwgCj4+PiBjcHVtYXNrX29mKHBtdS0+Y3B1KSkpOwo+Pgo+PiBUaGlzIGlzIHdyb25nLCBp dCBuZWVkcyB0byBiZSBpcnFfc2V0X2FmZmluaXR5KCkuCj4gCj4gT2theSwgQ291bGQgeW91IHBs ZWFzZSB0ZWxsIHdoYXQgaXMgdGhlIG1ham9yIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIAo+ IEFQST8KClRoZSBhZmZpbml0eSBoaW50IGlzIGp1c3QgYSBmaWVsZCBleHBvc2VkIHRvIHVzZXJz cGFjZSwgZm9yIHRoZSBiZW5lZml0IApvZiB0b29scyBsaWtlIGlycWJhbGFuY2UsIGl0IGRvZXNu J3QgYWN0dWFsbHkgc2VydmUgYW55IHB1cnBvc2UgaW4gdGhlIAprZXJuZWwgaXRzZWxmLgoKSGlz dG9yaWNhbGx5LCBpdCB1c2VkIHRvIGJlIHRoZSBjYXNlIHRoYXQgaXJxX3NldF9hZmZpbml0eV9o aW50KCkgYWxzbyAKaGFwcGVuZWQgdG8gY2FsbCBpcnFfc2V0X2FmZmluaXR5KCkgaW50ZXJuYWxs eSwgYW5kIHRoaXMgYW50aS1wYXR0ZXJuIApkZXZlbG9wZWQgYXJvdW5kIHRoYXQgZHVlIHRvIG1v ZHVsZSBleHBvcnRzLCBidXQgdGhhdCBoYXMgYWxsIGJlZW4gCmNsZWFuZWQgdXAgbm93LgoKWy4u Ll0KPj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycjI7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ ICvCoMKgwqAgaXJxX25hbWUgPSBvZl9nZXRfcHJvcGVydHkobm9kZSwgImludGVycnVwdC1uYW1l cyIsIE5VTEwpOwo+Pj4gK8KgwqDCoCBpZiAoIWlycV9uYW1lKQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGlycV9uYW1lID0gImRkcl9wbXUiOwo+Pgo+PiBUaGF0J3Mgbm90IGhvdyB0aGUgImludGVycnVw dC1uYW1lcyIgcHJvcGVydHkgd29ya3MuIElmIHlvdSBvbmx5IGhhdmUgCj4+IGEgc2luZ2xlIGlu dGVycnVwdCB0aGVuIHRoZXJlJ3Mgbm90IG11Y2ggbmVlZCBmb3IgaXQgdG8gYmUgbmFtZWQgaW4g Cj4+IHRoZSBEVCBhdCBhbGwuIElmIHlvdSBkbyB3YW50IHRvIHVzZSBuYW1lZCBpbnRlcnJ1cHRz IHRoZW4gdXNlIAo+PiBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZSgpLCBhbmQgdGhlIG5hbWUgc2hv dWxkIHByb2JhYmx5IGhhdmUgYSBibml0IAo+PiBtb3JlIGZ1bmN0aW9uYWwgbWVhbmluZy4gRWl0 aGVyIHdheSwgcGxlYXNlIGRvbid0IGFidXNlIHRoZSBEVCBsaWtlIHRoaXMuCj4gT2theSwgYWN0 dWFsbHkgdGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBpbnRlcnJ1cHRzICwgYnV0IG5vdCBpbiBjdXJy ZW50IAo+IEcxMiBzZXJpZXMuCgpUaGF0J3MgZmFpciBlbm91Z2gsIHNvIHdlIHNob3VsZCB0cnkg dG8gYW50aWNpcGF0ZSBpdCBpbiB0aGUgZGVzaWduIG9mIAp0aGUgRFQgYmluZGluZy4gSWYgZm9y IGluc3RhbmNlIGZ1dHVyZSBTb0NzIGFyZSBnb2luZyB0byBtb3ZlIGZyb20gCmhhdmluZyBhIHNp bmdsZSBjb21iaW5lZCBvdmVyZmxvdyBpbnRlcnJ1cHQgdG8gYSBzZXBhcmF0ZSBpbnRlcnJ1cHQg Zm9yIAplYWNoIGNvdW50ZXIsIHRoZW4gdGhlIGRyaXZlciBjYW4gcmVhc29uYWJseSBjb250aW51 ZSB0byBnZXQgdGhlbSBieSAKaW5kZXggYW5kIHdlJ2xsIGVmZmVjdGl2ZWx5IG9ubHkgbmVlZCB0 byB1cGRhdGUgbWF4SXRlbXMgaW4gdGhlIGJpbmRpbmcuIApJZiBvbiB0aGUgb3RoZXIgaGFuZCB0 aGVyZSdzIHN0aWxsIGdvaW5nIHRvIGJlIG9uZSBjb21iaW5lZCBvdmVyZmxvdyAKaW50ZXJydXB0 LCBwbHVzIHNvbWUgb3RoZXIgbmV3IGludGVycnVwdCBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkg CmRpZmZlcmVudCwgdGhlbiBpdCAqY291bGQqIGJlIG1vcmUgYXBwcm9wcmlhdGUgdG8gaGF2ZSBu YW1lcywgYW5kIHRodXMgCnRvIGRlZmluZSBhbmQgdXNlIGEgc3RhbmRhcmQgIm92ZXJmbG93IiBu YW1lIGZyb20gdGhlIGJlZ2lubmluZyBldmVuIAp3aGVuIGl0IGlzIHRoZSBvbmx5IG9uZSBwcmVz ZW50LCBzbyB0aGF0IHdlIGNhbiByZW1haW4gY29uc2lzdGVudCBsYXRlciAKb25jZSBtb3JlIGFy ZSBhZGRlZC4KCj4+PiArCj4+PiArwqDCoMKgIHJldCA9IHJlcXVlc3RfaXJxKGluZm8tPmlycV9u dW0sIGRtY19pcnFfaGFuZGxlciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJUlFG X1NIQVJFRCwgaXJxX25hbWUsICh2b2lkICopaW5mbyk7Cj4+Cj4+IFdobyBlbHNlIGlzIHNoYXJp bmcgdGhlIElSUT8gSWYgaXQncyBvdGhlciBpbnN0YW5jZXMgb2YgdGhpcyBQTVUgdGhlbiAKPj4g dGhhdCdzIHN0aWxsIG1hbmFnZWFibGUgdW5kZXIgdGhlIG5vcm1hbCBwYXJhZGlnbSwgdGhlIGRy aXZlciBqdXN0IAo+PiBuZWVkcyB0byBjb29yZGluYXRlIGFmZmluaXR5IGNoYW5tZ2VzIGJldHdl ZW4gYWxsIGluc3RhbmNlcy4gSWYgaXQncyAKPj4gcmFuZG9tIG90aGVyIGRldmljZXMsIHRoZW4g bWF5YmUgaXQncyB0aW1lIHRvIHJlYXNvbiBhYm91dCBob3cgc3lzdGVtIAo+PiBQTVVzIGNvdWxk IHVzZSBwcm9wZXIgSVJRLXNhZmUgbG9ja2luZyBhbmQgYWJhbmRvbiB0aGUgYWZmaW5pdHkgc3R1 ZmYsIAo+PiBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlIGNvbWluZyB1cCBtb3JlIGFuZCBtb3JlLgo+ IAo+IFRoZSBJUlEgaXMgcHJpdmF0ZS4gSSB3aWxsIGNoYW5nZSBpdC4KCk9LLCB0aGF0J3MgZ29v ZC4gSW4gdGhhdCBjYXNlIHlvdSBjYW4gc2ltcGx5IHJlcGxhY2UgSVJRRl9TSEFSRUQgd2l0aCAK SVJRRl9OT0JBTEFOQ0lORyBoZXJlLCBzaW5jZSB0aGF0IGlzIG5lZWRlZCBlaXRoZXIgd2F5IHRv IHByZXZlbnQgCnVzZXJzcGFjZSBjaGFuZ2luZyBhZmZpbml0aWVzIGJlaGluZCBvdXIgYmFjay4K ClsuLi5dCj4+PiArc3RhdGljIHZvaWQgYXBwZW5kX2F0dHJfbGlzdChzdHJ1Y3QgYXR0cmlidXRl ICphdHRyKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaW50IGk7Cj4+PiArCj4+PiArwqDCoMKgIGZvciAo aSA9IDA7IGcxMl9wbXVfZm9ybWF0X2F0dHJzW2ldICYmIGkgPCAyNTU7IGkrKykKPj4+ICvCoMKg wqDCoMKgwqDCoCA7Cj4+Cj4+IEV3dywgd2hhdD8gOigKPj4KPj4+ICsKPj4+ICvCoMKgwqAgZzEy X3BtdV9mb3JtYXRfYXR0cnNbaV0gPSBhdHRyOwo+Pj4gKwo+Pj4gK8KgwqDCoCBnMTJfcG11X2Zv cm1hdF9hdHRyc1tpICsgMV0gPSBOVUxMOwo+Pgo+PiAodGhhdCdzIHBvaW50bGVzcyBlaXRoZXIg d2F5KQo+Pgo+PiBPSywgSSB0aGluayBJIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZSBub3cuIER5 bmFtaWNhbGx5IHBhdGNoaW5nIHRoZSAKPj4gYXR0cmlidXRlIGFycmF5cyBpcyBwcmV0dHkgZ3Jp bSAtIGl0J3MgZmFyIGNsZWFuZXIgYW5kIG1vcmUgCj4+IHN1c3RhaW5hYmxlIHRvIHN0YXRpY2Fs bHkgZGVmaW5lIHRoZSB3aG9sZSBhcnJheSB3aXRoIGFsbCB0aGUgcG9zc2libGUgCj4+IGF0dHJp YnV0ZXMsIHRoZW4gdXNlIC5pc192aXNpYmxlIHRvIGhpZGUgdGhlIG9uZXMgd2hpY2ggYXJlbid0 IAo+PiByZWxldmFudCB0byB0aGUgY3VycmVudCBzeXN0ZW0uCj4+Cj4gSSBoYXZlIG5vdCBnb3Qg eW91ciBwb2ludCB5ZXQuIEkgaGF2ZSBubyBpZGVhIGhvdyB0byB1c2UgLmlzX3Zpc2libGUgdG8g Cj4gaGlkZSB0aGUgaXJyZWxldmFudCBhdHRyaWJ1dGUuIEkgbmVlZCBhIGxpdHRsZSB0aW1lIHRv IHRoaW5rIGl0LgoKSXQgbWlnaHQgYmUgZWFzaWVzdCB0byBmb2xsb3cgYW4gZXhhbXBsZSBsaWtl IGFybV9kc3VfcG11IC0gaW4gdGhhdCAKY2FzZSwgdGhlIGhhcmR3YXJlIGhhcyBhbiBJRCByZWdp c3RlciB0aGF0IHNheXMgd2hpY2ggZXZlbnQgSURzIGFyZSAKc3VwcG9ydGVkOyB5b3UgY291bGQg aGF2ZSBzb21lIGtpbmQgb2Ygc3RhdGljIGJpdG1hcC9sb29rdXAgCnRhYmxlL2Z1bmN0aW9uIHRv IGVuY29kZSB0aGUgZXF1aXZhbGVudCBkYXRhIG9mIHdoaWNoIEFYSSBJRHMgYXJlIApyZWxldmFu dCB0byB3aGljaCBQTVUgbW9kZWwocykuIEFub3RoZXIgYXBwcm9hY2ggaXMgdG8gZW5jb2RlIHRo ZSAKc3VwcG9ydGVkIG1vZGVscyBkaXJlY3RseSBpbiBlYWNoIGF0dHJpYnV0ZSBpdHNlbGYgYW5k IHRodXMgbWFrZSB0aGUgCmxvb2t1cCB0aGUgb3RoZXIgd2F5IHJvdW5kIC0gdGhpcyBpcyBwcm9i YWJseSBtb3JlIGNvbXBsZXggdG8gaW1wbGVtZW50LCAKYW5kIEkgaGVzaXRhdGUgdG8gc3VnZ2Vz dCBsb29raW5nIGF0IGFybS1jbW4gYXMgYW4gZXhhbXBsZSBzaW5jZSB0aGF0J3MgCnJhdGhlciBl eHRyZW1lIGFuZCBoYXJkIHRvIGZvbGxvdywgYnV0IGl0IGlzIGFub3RoZXIgcG9zc2liaWxpdHku CgpBIHRoaXJkIG9wdGlvbiBtaWdodCBiZSB0byBwdXNoIGFsbCB0aGUgQVhJIElEIGRhdGEgb3V0 IHRvIEpTT04gaW4gdGhlIAp1c2Vyc3BhY2UgcGVyZiB0b29sLCBsaWtlIGZzbF9pbXg4X2Rkcl9w ZXJmIHNlZW1zIHRvIGRvLCBob3dldmVyIHRoYXQgCm1pZ2h0IG1ha2UgaXQgbGVzcyBhY2Nlc3Np YmxlIHRvIG90aGVyIHVzZXJzcGFjZSB0b29scywgc28gaXQgcHJvYmFibHkgCmRlcGVuZHMgb24g eW91ciBleHBlY3RlZCB1c2UtY2FzZXMgd2hldGhlciB0aGF0J3Mgd29ydGggY29uc2lkZXJpbmcg b3Igbm90LgoKWy4uLl0KPj4+ICvCoMKgwqAgc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRl di0+ZGV2Lm9mX25vZGU7Cj4+PiArwqDCoMKgIGNvbnN0IGNoYXIgKm1vZGVsOwo+Pj4gKwo+Pj4g K8KgwqDCoCBpZiAob2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobm9kZSwgIm1vZGVsIiwgJm1vZGVs KSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4KPj4gTm8sIHVzZSBvZl9k ZXZpY2VfaXNfY29tcGF0aWJsZSgpLCBhbmQgZGVmaW5lIHRoZSBiaW5kaW5nIHByb3Blcmx5Lgo+ IAo+IFdoeSB0aGUgIm1vZGVsIiBwcm9wZXJ0eSBjb3VsZG4ndCBiZSB1c2VkPyBEbyB5b3UgbWVh biB1c2UgZXhpc3RpbmcgCj4gcHJvcGVydHkgcmF0aGVyIHRoYW4gY3JlYXRpbmcgbmV3IG9uZT8K ClllcywgYXMgSSBzdWdnZXN0ZWQgb24gcGF0Y2ggIzQsIHRoZSBzdGFuZGFyZCBwcmFjdGljZSB3 b3VsZCBiZSB0byBoYXZlIApoaWVyYXJjaGljYWwgY29tcGF0aWJsZSBzdHJpbmdzIGluIHRoZSBE VCBsaWtlIHNvOgoKCWNvbXBhdGlibGUgPSAiYW1sb2dpYyxnMTJiLWRkci1wbXUiLCAiYW1sb2dp YyxnMTItZGRyLXBtdSI7Cgp0aGVuIHlvdXIgb2ZfZGV2aWNlX2lkIHRhYmxlIGNhbiBzdGlsbCBt YXRjaCBvbiB0aGUgZ2VuZXJpYyAKImFtbG9naWMsZzEyLWRkci1wbXUiIHN0cmluZyB0byBiaW5k IHRoZSBkcml2ZXIsIGFuZCB3aGVyZSBuZWNlc3NhcnkgeW91IApjYW4gdGhlbiBkbzoKCglpZiAo b2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobm9kZSwgImFtbG9naWMsZzEyYi1kZHItcG11IikpCgkJ LyogZG8gRzEyQi1zcGVjaWZpYyBzdHVmZiAqLwoKQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwdXQg YWxsIHRoZSBTb0Mtc3BlY2lmaWMgY29tcGF0aWJsZXMgZGlyZWN0bHkgaW4gCnRoZSBvZl9kZXZp Y2VfaWQgdGFibGUgYW5kIHVzZSB0aGUgLmRhdGEgbWVtYmVyIHRvIGFzc29jaWF0ZSB5b3VyIApT b0Mtc3BlY2lmaWMgaWRlbnRpZmllciBvciBzdGF0aWMgZGF0YSB3aGljaCB5b3UgY2FuIHRoZW4g cmV0cmlldmUgd2l0aCAKZGV2aWNlX2dldF9tYXRjaF9kYXRhKCkuIEJvdGggYXBwcm9hY2hlcyBh cmUgY29tbW9ubHkgdXNlZC4KCj4+PiArwqDCoMKgIGRldl9pbmZvKCZwZGV2LT5kZXYsICIlcyIs IG1vZGVsKTsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHN0cmNtcChtb2RlbCwgImcxMmEiKSA9PSAw KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2luZm8oJnBkZXYtPmRldiwgImRkciBwbXUgZm9y IGcxMmFcbiIpOwo+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKHN0cmNtcChtb2RlbCwgImcxMmIiKSA9 PSAwKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2luZm8oJnBkZXYtPmRldiwgImRkciBwbXUg Zm9yIGcxMmJcbiIpOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFwcGVuZF9hdHRyX2xpc3Qo JmZvcm1hdF9hdHRyX25uYS5hdHRyKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBhcHBlbmRfYXR0cl9s aXN0KCZmb3JtYXRfYXR0cl9nZGMuYXR0cik7Cj4+PiArwqDCoMKgwqDCoMKgwqAgYXBwZW5kX2F0 dHJfbGlzdCgmZm9ybWF0X2F0dHJfYXJtMS5hdHRyKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBhcHBl bmRfYXR0cl9saXN0KCZmb3JtYXRfYXR0cl9taXBpX2lzcC5hdHRyKTsKPj4+ICvCoMKgwqDCoMKg wqDCoCBhcHBlbmRfYXR0cl9saXN0KCZmb3JtYXRfYXR0cl9zZF9lbW1jX2EuYXR0cik7Cj4+PiAr wqDCoMKgIH0gZWxzZSBpZiAoc3RyY21wKG1vZGVsLCAic20xIikgPT0gMCkgewo+Pj4gK8KgwqDC oMKgwqDCoMKgIGRldl9pbmZvKCZwZGV2LT5kZXYsICJkZHIgcG11IGZvciBzbTFcbiIpOwo+Pj4g Kwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFwcGVuZF9hdHRyX2xpc3QoJmZvcm1hdF9hdHRyX25uYS5h dHRyKTsKPj4+ICvCoMKgwqAgfQo+Pj4gKyNlbmRpZgo+Pj4gK8KgwqDCoCByZXR1cm4gYW1sX2Rk cl9wbXVfY3JlYXRlKHBkZXYsICZnMTJfb3BzLCBnMTJfcG11X2Zvcm1hdF9hdHRycyk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnTCoCBfX2V4aXQgZzEyX2Rkcl9wbXVfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiArewo+Pj4gK8KgwqDCoCBhbWxfZGRyX3BtdV9y ZW1vdmUocGRldik7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ ICsjaWZkZWYgQ09ORklHX09GCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg YW1sX2Rkcl9wbXVfZHRfbWF0Y2hbXSA9IHsKPj4+ICvCoMKgwqAgewo+Pj4gK8KgwqDCoMKgwqDC oMKgIC5jb21wYXRpYmxlID0gImFtbG9naWMsZzEyLWRkci1wbXUiLAo+Pj4gK8KgwqDCoCB9LAo+ Pj4gK8KgwqDCoCB7fQo+Pj4gK307Cj4+PiArI2VuZGlmCj4+PiArCj4+PiArc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgZzEyX2Rkcl9wbXVfZHJpdmVyID0gewo+Pj4gK8KgwqDCoCAuZHJp dmVyID0gewo+Pj4gK8KgwqDCoMKgwqDCoMKgIC5uYW1lID0gImFtbG9naWMsZGRyLXBtdSIsCj4+ PiArwqDCoMKgwqDCoMKgwqAgLm93bmVyID0gVEhJU19NT0RVTEUsCj4+Cj4+IFRoZSBkcml2ZXIg Y29yZSBzZXRzIHRoaXMgYXV0b21hdGljYWxseS4KPj4KPj4+ICvCoMKgwqAgI2lmZGVmIENPTkZJ R19PRgo+Pj4gK8KgwqDCoMKgwqDCoMKgIC5vZl9tYXRjaF90YWJsZSA9IGFtbF9kZHJfcG11X2R0 X21hdGNoLAo+Pj4gK8KgwqDCoCAjZW5kaWYKPj4+ICvCoMKgwqAgfSwKPj4+ICvCoMKgwqAgLnJl bW92ZSA9IGcxMl9kZHJfcG11X3JlbW92ZSwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg X19pbml0IGFtbF9nMTJfZGRyX3BtdV9pbml0KHZvaWQpCj4+PiArewo+Pj4gK8KgwqDCoCByZXR1 cm4gcGxhdGZvcm1fZHJpdmVyX3Byb2JlKCZnMTJfZGRyX3BtdV9kcml2ZXIsIAo+Pj4gZzEyX2Rk cl9wbXVfcHJvYmUpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgYW1sX2cx Ml9kZHJfcG11X2V4aXQodm9pZCkKPj4+ICt7Cj4+PiArwqDCoMKgIHBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZnMTJfZGRyX3BtdV9kcml2ZXIpOwo+Pj4gK30KPj4+ICsKPj4+ICttb2R1bGVf aW5pdChhbWxfZzEyX2Rkcl9wbXVfaW5pdCk7Cj4+PiArbW9kdWxlX2V4aXQoYW1sX2cxMl9kZHJf cG11X2V4aXQpOwo+Pgo+PiBVc2UgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcl9wcm9iZSgpIChpZiBv ZiBjb3Vyc2UgeW91IHJlYWxseSB0aGluayB0aGUgCj4+IF9faW5pdCBzaGVuYW5pZ2FucyBhcmUg YmVuZWZpY2lhbCwgb3RoZXJ3aXNlIGp1c3QgdXNlIHJlZ3VsYXIgCj4+IG1vZHVsZV9wbGF0Zm9y bV9kcml2ZXIoKSBmb3IgZXZlbiBsZXNzIHN1cnByaXNlKS4KPj4KPj4gVGhhbmtzLAo+PiBSb2Jp bi4KPiAKPiAKPiBUaGFua3MgZm9yIHlvdXIgdGltZSwgUm9iaW4hIFRCSCBJJ20gYSBsaXR0bGUg bmVydm91cyBzaW5jZSB0aGlzIGlzIG15IAo+IGZpcnN0IHN1Ym1pdHRpbmcgdG8gdXBzdHJlYW0u IFlvdXIgY29tbWVudHMgYXJlIGdyZWF0IGFuZCBoZWxwZnVsLiBJIAo+IHdpbGwgdXBkYXRlIHRo ZSBkcml2ZXIuCgpObyB3b3JyaWVzLCB0aGlzIGlzIGFjdHVhbGx5IHByZXR0eSBnb29kIGZvciBh IGZpcnN0IHN1Ym1pc3Npb24uIEFuZCB0aGUgCnBlcmYgQVBJcyBpbiBwYXJ0aWN1bGFyIGRvIGhh dmUgc29tZSBob3JyaWJseSBzdWJ0bGUgYXNwZWN0cyB3aGljaCB0b29rIAptZSBhIGxvbmcgdGlt ZSB0byBmdWxseSB1bmRlcnN0YW5kIHRvbyA6KQoKVGhhbmtzLApSb2Jpbi4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGlu ZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK