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=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 E7699C433E0 for ; Wed, 27 Jan 2021 08:28:24 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 70CDD2070E for ; Wed, 27 Jan 2021 08:28:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 70CDD2070E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=hisilicon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.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=oXsiBe/OD8oHkbhuwZoLOiCeniSlEHGNYTm/Hoin8zk=; b=guYkCVjoJfFQLxyfSXhNOnldo x+0iLJupiWq6I05tCTpW/CCsF0KhWyxIBEpgdAZqjyov33ESuvvMtPl+AQoKDfL2FxqQ7FJ4qwuaB bONw+sjVsZP3aJ3zqPjtgqedyaRTBK7rmCsLA4rwN9K9e37tazbikS9pn/UlZmm6gGASgSBpDCkaR EWWhUh4hMxvSfvwpdGl1Nosi1K1mHOcrruKSUQeqgw9rwI83lsrdjRjgFsBXtJSmPvBEM+r1X6RUy t8tz8H0wIEgxMsMoYmA17KCAKvJJr7Zq4Z2PrTxPEwIOLorALywwpPhyNoLdvGAJdtLzyW1io0/AN zX0lurXmA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l4g9n-0004ra-2t; Wed, 27 Jan 2021 08:26:31 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l4g9j-0004qi-J4 for linux-arm-kernel@lists.infradead.org; Wed, 27 Jan 2021 08:26:29 +0000 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4DQc9b3xyTzjCvd; Wed, 27 Jan 2021 16:25:23 +0800 (CST) Received: from [10.67.77.175] (10.67.77.175) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.498.0; Wed, 27 Jan 2021 16:26:14 +0800 Subject: Re: [PATCH 6/8] drivers/perf: hisi: Add support for HiSilicon SLLC PMU driver To: John Garry , References: <1609395576-32775-1-git-send-email-zhangshaokun@hisilicon.com> <1609395576-32775-7-git-send-email-zhangshaokun@hisilicon.com> From: Shaokun Zhang Message-ID: Date: Wed, 27 Jan 2021 16:26:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [10.67.77.175] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210127_032628_111608_26AAD385 X-CRM114-Status: GOOD ( 26.76 ) 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 , Qi Liu , Will Deacon , Jonathan Cameron Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSm9obiwKCuWcqCAyMDIxLzEvMjYgMjA6MzAsIEpvaG4gR2Fycnkg5YaZ6YGTOgo+IE9uIDMx LzEyLzIwMjAgMDY6MTksIFNoYW9rdW4gWmhhbmcgd3JvdGU6Cj4+IEhpU2lsaWNvbidzIEhpcDA5 IGlzIGNvbXByaXNlZCBieSBtdWx0aS1kaWVzIHRoYXQgY2FuIGJlIGNvbm5lY3RlZCBieSBTTExD Cj4+IG1vZHVsZSAoU2t5cm9zIExpbmsgTGF5ZXIgQ29udHJvbGxlciksIGl0cyBoYXMgc2VwYXJh dGUgUE1VIHJlZ2lzdGVycyB3aGljaAo+PiB0aGUgZHJpdmVyIGNhbiBwcm9ncmFtIGl0IGZyZWVs eSBhbmQgaW50ZXJydXB0IGlzIHN1cHBvcnRlZCB0byBoYW5kbGUKPj4gY291bnRlciBvdmVyZmxv dy4gTGV0J3Mgc3VwcG9ydCBpdHMgZHJpdmVyIHVuZGVyIHRoZSBmcmFtZXdvcmsgb2YgSGlTaWxp Y29uCj4+IHVuY29yZSBQTVUgZHJpdmVyLgo+Pgo+PiBDYzogTWFyayBSdXRsYW5kIDxtYXJrLnJ1 dGxhbmRAYXJtLmNvbT4KPj4gQ2M6IFdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+Cj4+IENj OiBKb2huIEdhcnJ5IDxqb2huLmdhcnJ5QGh1YXdlaS5jb20+Cj4+IENjOiBKb25hdGhhbiBDYW1l cm9uIDxKb25hdGhhbi5DYW1lcm9uQGh1YXdlaS5jb20+Cj4+IENvLWRldmVsb3BlZC1ieTogUWkg TGl1IDxsaXVxaTExNUBodWF3ZWkuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBRaSBMaXUgPGxpdXFp MTE1QGh1YXdlaS5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFNoYW9rdW4gWmhhbmcgPHpoYW5nc2hh b2t1bkBoaXNpbGljb24uY29tPgo+IAo+IGxheW91dCBsb29rcyBjb25zaXN0ZW50IHdpdGggb3Ro ZXIgaGlzaSB1bmNvcmUgUE1VIGRyaXZlcnMsIGJ1dCBzb21lIHNtYWxsIGNvbW1lbnRzLCBiZWxv dwo+IAo+IFJldmlld2VkLWJ5OiBKb2huIEdhcnJ5IDxqb2huLmdhcnJ5QGh1YXdlaS5jb20+Cj4g Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL3BlcmYvaGlzaWxpY29uL01ha2VmaWxlwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICstCj4+IMKgIGRyaXZlcnMvcGVyZi9oaXNpbGljb24v aGlzaV91bmNvcmVfc2xsY19wbXUuYyB8IDUzMCArKysrKysrKysrKysrKysrKysrKysrKysrKwo+ PiDCoCBpbmNsdWRlL2xpbnV4L2NwdWhvdHBsdWcuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDUzMiBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bl cmYvaGlzaWxpY29uL2hpc2lfdW5jb3JlX3NsbGNfcG11LmMKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGVyZi9oaXNpbGljb24vTWFrZWZpbGUgYi9kcml2ZXJzL3BlcmYvaGlzaWxpY29uL01h a2VmaWxlCj4+IGluZGV4IGU4Mzc3MDYxODQ1Zi4uNjYwMGE5ZDQ1ZGQ4IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL3BlcmYvaGlzaWxpY29uL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvcGVyZi9o aXNpbGljb24vTWFrZWZpbGUKPj4gQEAgLTEsMyArMSwzIEBACj4+IMKgICMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+PiDCoCBvYmotJChDT05GSUdfSElTSV9QTVUpICs9 IGhpc2lfdW5jb3JlX3BtdS5vIGhpc2lfdW5jb3JlX2wzY19wbXUubyBcCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBoaXNpX3VuY29yZV9oaGFfcG11Lm8gaGlzaV91bmNvcmVfZGRyY19w bXUubwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV91bmNvcmVfaGhhX3BtdS5v IGhpc2lfdW5jb3JlX2RkcmNfcG11Lm8gaGlzaV91bmNvcmVfc2xsY19wbXUubwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9zbGxjX3BtdS5jCj4+IGIv ZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9zbGxjX3BtdS5jCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjkxMWMzODhhNWFjCj4+IC0tLSAv ZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9zbGxj X3BtdS5jCj4+IEBAIC0wLDAgKzEsNTMwIEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5Cj4+ICsvKgo+PiArICogSGlTaWxpY29uIFNMTEMgdW5jb3JlIEhhcmR3 YXJlIGV2ZW50IGNvdW50ZXJzIHN1cHBvcnQKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjAgSGlzaWxpY29uIExpbWl0ZWQKPj4gKyAqIEF1dGhvcjogU2hhb2t1biBaaGFuZyA8emhhbmdz aGFva3VuQGhpc2lsaWNvbi5jb20+Cj4+ICsgKgo+PiArICogVGhpcyBjb2RlIGlzIGJhc2VkIG9u IHRoZSB1bmNvcmUgUE1VcyBsaWtlIGFybS1jY2kgYW5kIGFybS1jY24uCj4+ICsgKi8KPj4gKyNp bmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvY3B1aG90cGx1Zy5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lycS5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbXAuaD4K Pj4gKwo+PiArI2luY2x1ZGUgImhpc2lfdW5jb3JlX3BtdS5oIgo+PiArCj4+ICsvKiBTTExDIHJl Z2lzdGVyIGRlZmluaXRpb24gKi8KPj4gKyNkZWZpbmUgU0xMQ19JTlRfTUFTS8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgwODE0Cj4+ICsjZGVmaW5lIFNMTENfSU5UX1NUQVRVU8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgwODE4Cj4+ICsjZGVmaW5lIFNMTENfSU5UX0NMRUFSwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDA4MUMKPj4gKyNkZWZpbmUgU0xMQ19QRVJGX0NUUkzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MUMwMAo+PiArI2RlZmluZSBTTExDX1NSQ0lEX0NUUkzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MUMwNAo+PiArI2RlZmluZSBTTExDX1RHVElEX0NUUkzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MUMwOAo+PiArI2RlZmluZSBTTExDX0VWRU5UX0NUUkzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MUMxNAo+PiArI2RlZmluZSBTTExDX0VWRU5UX1RZUEUwwqDCoMKgwqDCoMKg wqAgMHgxQzE4Cj4+ICsjZGVmaW5lIFNMTENfVkVSU0lPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxQ0YwCj4+ICsjZGVmaW5lIFNMTENfRVZFTlRfQ05UMF9MwqDCoMKgwqDCoMKgwqAgMHgxRDAw Cj4+ICsKPj4gKyNkZWZpbmUgU0xMQ19FVlRZUEVfTUFTS8KgwqDCoMKgwqDCoMKgIDB4RkYKPj4g KyNkZWZpbmUgU0xMQ19QRVJGX0NUUkxfRU7CoMKgwqDCoMKgwqDCoCBCSVQoMCkKPj4gKyNkZWZp bmUgU0xMQ19GSUxUX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMSkKPj4gKyNkZWZpbmUg U0xMQ19UUkFDRVRBR19FTsKgwqDCoMKgwqDCoMKgIEJJVCgyKQo+PiArI2RlZmluZSBTTExDX1NS Q0lEX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNCkKPj4gKyNkZWZpbmUgU0xMQ19TUkNJ RF9OT05FwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAKPj4gKyNkZWZpbmUgU0xMQ19UR1RJRF9F TsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDUpCj4+ICsjZGVmaW5lIFNMTENfVEdUSURfTk9O RcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwCj4+ICsjZGVmaW5lIFNMTENfVEdUSURfTE9fU0hJ RlTCoMKgwqDCoMKgwqDCoCAxCj4+ICsjZGVmaW5lIFNMTENfVEdUSURfSElfU0hJRlTCoMKgwqDC oMKgwqDCoCAxMgo+PiArI2RlZmluZSBTTExDX1NSQ0lEX0NNRF9TSElGVMKgwqDCoMKgwqDCoMKg IDEKPj4gKyNkZWZpbmUgU0xMQ19TUkNJRF9NU0tfU0hJRlTCoMKgwqDCoMKgwqDCoCAxMgo+PiAr I2RlZmluZSBTTExDX05SX0VWRU5UU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHg4MAo+PiArCj4+ ICtISVNJX1BNVV9FVkVOVF9BVFRSX0VYVFJBQ1RPUih0Z3RpZF9sbywgY29uZmlnMSwgMTAsIDAp Owo+PiArSElTSV9QTVVfRVZFTlRfQVRUUl9FWFRSQUNUT1IodGd0aWRfaGksIGNvbmZpZzEsIDIx LCAxMSk7Cj4+ICtISVNJX1BNVV9FVkVOVF9BVFRSX0VYVFJBQ1RPUihzcmNpZF9jbWQsIGNvbmZp ZzEsIDMyLCAyMik7Cj4+ICtISVNJX1BNVV9FVkVOVF9BVFRSX0VYVFJBQ1RPUihzcmNpZF9tc2ss IGNvbmZpZzEsIDQzLCAzMyk7Cj4+ICtISVNJX1BNVV9FVkVOVF9BVFRSX0VYVFJBQ1RPUih0cmFj ZXRhZ19lbiwgY29uZmlnMSwgNDQsIDQ0KTsKPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIHRn dGlkX2lzX3ZhbGlkKHUzMiBoaSwgdTMyIGxvKQo+IAo+IG5pdDogbm8gbmVlZCBmb3IgaW5saW5l Cj4gCgpPaywKCj4+ICt7Cj4+ICvCoMKgwqAgcmV0dXJuIGxvID4gMCAmJiBoaSA+PSBsbzsKPj4g K30KPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIGhpc2lfc2xsY19wbXVfZW5hYmxlX3RyYWNl dGFnKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgaGlz aV9wbXUgKnNsbGNfcG11ID0gdG9faGlzaV9wbXUoZXZlbnQtPnBtdSk7Cj4+ICvCoMKgwqAgdTMy IHR0X2VuID0gaGlzaV9nZXRfdHJhY2V0YWdfZW4oZXZlbnQpOwo+PiArCj4+ICvCoMKgwqAgaWYg KHR0X2VuKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgdmFsOwo+PiArCj4+ICvCoMKgwqDCoMKg wqDCoCB2YWwgPSByZWFkbChzbGxjX3BtdS0+YmFzZSArIFNMTENfUEVSRl9DVFJMKTsKPj4gK8Kg wqDCoMKgwqDCoMKgIHZhbCB8PSBTTExDX1RSQUNFVEFHX0VOIHwgU0xMQ19GSUxUX0VOOwo+PiAr wqDCoMKgwqDCoMKgwqAgd3JpdGVsKHZhbCwgc2xsY19wbXUtPmJhc2UgKyBTTExDX1BFUkZfQ1RS TCk7Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaGlzaV9z bGxjX3BtdV9kaXNhYmxlX3RyYWNldGFnKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4gK3sK Pj4gK8KgwqDCoCBzdHJ1Y3QgaGlzaV9wbXUgKnNsbGNfcG11ID0gdG9faGlzaV9wbXUoZXZlbnQt PnBtdSk7Cj4+ICvCoMKgwqAgdTMyIHR0X2VuID0gaGlzaV9nZXRfdHJhY2V0YWdfZW4oZXZlbnQp Owo+PiArCj4+ICvCoMKgwqAgaWYgKHR0X2VuKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgdmFs Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSByZWFkbChzbGxjX3BtdS0+YmFzZSArIFNM TENfUEVSRl9DVFJMKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCAmPSB+KFNMTENfVFJBQ0VUQUdf RU4gfCBTTExDX0ZJTFRfRU4pOwo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVsKHZhbCwgc2xsY19w bXUtPmJhc2UgKyBTTExDX1BFUkZfQ1RSTCk7Cj4gCj4gbm90ZTogaSB0aGluayB0aGF0IGFsbCB0 aGVzZSBjYW4gYmUgX3JlbGF4ZWQgdmFyaWFudCwgYnV0IHRoYXQgaXMgZm9yIGV4aXN0aW5nIGRy aXZlcnMgYXMgd2VsbCwgc28KPiBjYW4gYmUgcmV2aWV3ZWQgbGF0ZXIKPiAKCk9rLAoKPj4gK8Kg wqDCoCB9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBoaXNpX3NsbGNfcG11X2Nv bmZpZ190Z3RpZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4+ICt7Cj4+ICvCoMKgwqAgc3Ry dWN0IGhpc2lfcG11ICpzbGxjX3BtdSA9IHRvX2hpc2lfcG11KGV2ZW50LT5wbXUpOwo+PiArwqDC oMKgIHUzMiBsbyA9IGhpc2lfZ2V0X3RndGlkX2xvKGV2ZW50KTsKPj4gK8KgwqDCoCB1MzIgaGkg PSBoaXNpX2dldF90Z3RpZF9oaShldmVudCk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAodGd0aWRfaXNf dmFsaWQoaGksIGxvKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIHZhbCA9IChoaSA8PCBTTExD X1RHVElEX0hJX1NISUZUKSB8IChsbyA8PCBTTExDX1RHVElEX0xPX1NISUZUKTsKPj4gKwo+PiAr wqDCoMKgwqDCoMKgwqAgd3JpdGVsKHZhbCwgc2xsY19wbXUtPmJhc2UgKyBTTExDX1RHVElEX0NU UkwpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBFbmFibGUgdGhlIHRndGlkICovCj4+ICvC oMKgwqDCoMKgwqDCoCB2YWwgPSByZWFkbChzbGxjX3BtdS0+YmFzZSArIFNMTENfUEVSRl9DVFJM KTsKPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCB8PSBTTExDX1RHVElEX0VOIHwgU0xMQ19GSUxUX0VO Owo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVsKHZhbCwgc2xsY19wbXUtPmJhc2UgKyBTTExDX1BF UkZfQ1RSTCk7Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiArwqDCoMKgIG5hbWUgPSBkZXZtX2thc3By aW50ZigmcGRldi0+ZGV2LCBHRlBfS0VSTkVMLCAiaGlzaV9zY2NsJXVfc2xsYyV1IiwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2xsY19wbXUtPnNjY2xfaWQsIHNsbGNf cG11LT5pbmRleF9pZCk7Cj4+ICvCoMKgwqAgaWYgKCFuYW1lKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgbmFtZSBmb3IgUE1VXG4i KTsKPiAKPiBtYXliZSB0aGlzIG1lc3NhZ2UgaXMgbm90IHNvIHVzZWZ1bAoKT2ssIGlmIGl0IGlz IG5vdCB1c2VmdWwsIGxldCdzIHJldHVybiAtRU5PTUVNIGRpcmVjdGx5LgoKPiAKPj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJl dCA9IGNwdWhwX3N0YXRlX2FkZF9pbnN0YW5jZShDUFVIUF9BUF9QRVJGX0FSTV9ISVNJX1NMTENf T05MSU5FLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JnNsbGNfcG11LT5ub2RlKTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBkZXZfZXJyKCZwZGV2LT5kZXYsICJFcnJvciAlZCByZWdpc3RlcmluZyBob3RwbHVnXG4iLCBy ZXQpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoCBzbGxjX3BtdS0+cG11ID0gKHN0cnVjdCBwbXUpIHsKPj4gK8KgwqDCoMKgwqDCoMKg IC5tb2R1bGXCoMKgwqDCoMKgwqDCoCA9IFRISVNfTU9EVUxFLAo+PiArwqDCoMKgwqDCoMKgwqAg LnRhc2tfY3R4X25ywqDCoMKgID0gcGVyZl9pbnZhbGlkX2NvbnRleHQsCj4+ICvCoMKgwqDCoMKg wqDCoCAuZXZlbnRfaW5pdMKgwqDCoCA9IGhpc2lfdW5jb3JlX3BtdV9ldmVudF9pbml0LAo+PiAr wqDCoMKgwqDCoMKgwqAgLnBtdV9lbmFibGXCoMKgwqAgPSBoaXNpX3VuY29yZV9wbXVfZW5hYmxl LAo+PiArwqDCoMKgwqDCoMKgwqAgLnBtdV9kaXNhYmxlwqDCoMKgID0gaGlzaV91bmNvcmVfcG11 X2Rpc2FibGUsCj4+ICvCoMKgwqDCoMKgwqDCoCAuYWRkwqDCoMKgwqDCoMKgwqAgPSBoaXNpX3Vu Y29yZV9wbXVfYWRkLAo+PiArwqDCoMKgwqDCoMKgwqAgLmRlbMKgwqDCoMKgwqDCoMKgID0gaGlz aV91bmNvcmVfcG11X2RlbCwKPj4gK8KgwqDCoMKgwqDCoMKgIC5zdGFydMKgwqDCoMKgwqDCoMKg ID0gaGlzaV91bmNvcmVfcG11X3N0YXJ0LAo+PiArwqDCoMKgwqDCoMKgwqAgLnN0b3DCoMKgwqDC oMKgwqDCoCA9IGhpc2lfdW5jb3JlX3BtdV9zdG9wLAo+PiArwqDCoMKgwqDCoMKgwqAgLnJlYWTC oMKgwqDCoMKgwqDCoCA9IGhpc2lfdW5jb3JlX3BtdV9yZWFkLAo+PiArwqDCoMKgwqDCoMKgwqAg LmF0dHJfZ3JvdXBzwqDCoMKgID0gc2xsY19wbXUtPnBtdV9ldmVudHMuYXR0cl9ncm91cHMsCj4+ ICvCoMKgwqDCoMKgwqDCoCAuY2FwYWJpbGl0aWVzwqDCoMKgID0gUEVSRl9QTVVfQ0FQX05PX0VY Q0xVREUsCj4+ICvCoMKgwqAgfTsKPj4gKwo+PiArwqDCoMKgIHJldCA9IHBlcmZfcG11X3JlZ2lz dGVyKCZzbGxjX3BtdS0+cG11LCBuYW1lLCAtMSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkgewo+PiAr wqDCoMKgwqDCoMKgwqAgZGV2X2VycihzbGxjX3BtdS0+ZGV2LCAiUE1VIHJlZ2lzdGVyIGZhaWxl ZCwgcmV0ID0gJWRcbiIsIHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjcHVocF9zdGF0ZV9yZW1v dmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9BUk1fSElTSV9TTExDX09OTElORSwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnNsbGNfcG11LT5ub2Rl KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlycV9zZXRfYWZmaW5pdHlfaGludChzbGxjX3BtdS0+aXJx LCBOVUxMKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBzbGxjX3BtdSk7Cj4gCj4gc3RyYW5nZSB0aGF0IHdlIHN0aWxsIGRvIHRoaXMgZm9y IGFuIGVycm9yCj4gCgpPb3BzLCB0aGlzIHNoYWxsIGJlIHNldCB3aGVuIGFsbG9jIHNsbGNfcG11 LgoKPj4gKwo+PiArwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg aGlzaV9zbGxjX3BtdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sK Pj4gK8KgwqDCoCBzdHJ1Y3QgaGlzaV9wbXUgKnNsbGNfcG11ID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGRldik7Cj4+ICsKPj4gK8KgwqDCoCBwZXJmX3BtdV91bnJlZ2lzdGVyKCZzbGxjX3BtdS0+ cG11KTsKPj4gK8KgwqDCoCBjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2Vfbm9jYWxscyhDUFVI UF9BUF9QRVJGX0FSTV9ISVNJX1NMTENfT05MSU5FLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc2xsY19wbXUtPm5vZGUpOwo+PiArwqDCoMKgIGly cV9zZXRfYWZmaW5pdHlfaGludChzbGxjX3BtdS0+aXJxLCBOVUxMKTsKPj4gKwo+PiArwqDCoMKg IHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBo aXNpX3NsbGNfcG11X2RyaXZlciA9IHsKPj4gK8KgwqDCoCAuZHJpdmVyID0gewo+PiArwqDCoMKg wqDCoMKgwqAgLm5hbWUgPSAiaGlzaV9zbGxjX3BtdSIsCj4+ICvCoMKgwqDCoMKgwqDCoCAuYWNw aV9tYXRjaF90YWJsZSA9IGhpc2lfc2xsY19wbXVfYWNwaV9tYXRjaCwKPiAKPiBwbGVhc2Ugc2V0 IHVuYmluZCB1bnN1cHBvcnRlZAo+IAoKT2ssCgpUaGFua3MsClNoYW9rdW4KCj4+ICvCoMKgwqAg fSwKPj4gK8KgwqDCoCAucHJvYmUgPSBoaXNpX3NsbGNfcG11X3Byb2JlLAo+PiArwqDCoMKgIC5y ZW1vdmUgPSBoaXNpX3NsbGNfcG11X3JlbW92ZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQg X19pbml0IGhpc2lfc2xsY19wbXVfbW9kdWxlX2luaXQodm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBp bnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gY3B1aHBfc2V0dXBfc3RhdGVfbXVsdGkoQ1BV SFBfQVBfUEVSRl9BUk1fSElTSV9TTExDX09OTElORSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiQVBfUEVSRl9BUk1fSElTSV9TTExDX09OTElORSIsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV91bmNvcmVf cG11X29ubGluZV9jcHUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaGlzaV91bmNvcmVfcG11X29mZmxpbmVfY3B1KTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIlNMTEMgUE1VOiBjcHVocCBzdGF0ZSBzZXR1cCBm YWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0 ZXIoJmhpc2lfc2xsY19wbXVfZHJpdmVyKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKg wqDCoMKgwqAgY3B1aHBfcmVtb3ZlX211bHRpX3N0YXRlKENQVUhQX0FQX1BFUkZfQVJNX0hJU0lf U0xMQ19PTkxJTkUpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4gK30KPj4gK21vZHVs ZV9pbml0KGhpc2lfc2xsY19wbXVfbW9kdWxlX2luaXQpOwo+PiArCj4+ICtzdGF0aWMgdm9pZCBf X2V4aXQgaGlzaV9zbGxjX3BtdV9tb2R1bGVfZXhpdCh2b2lkKQo+PiArewo+PiArwqDCoMKgIHBs YXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZoaXNpX3NsbGNfcG11X2RyaXZlcik7Cj4+ICvCoMKg wqAgY3B1aHBfcmVtb3ZlX211bHRpX3N0YXRlKENQVUhQX0FQX1BFUkZfQVJNX0hJU0lfU0xMQ19P TkxJTkUpOwo+PiArfQo+PiArbW9kdWxlX2V4aXQoaGlzaV9zbGxjX3BtdV9tb2R1bGVfZXhpdCk7 Cj4+ICsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiSGlTaWxpY29uIFNMTEMgdW5jb3JlIFBNVSBk cml2ZXIiKTsKPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPj4gK01PRFVMRV9BVVRIT1Io IlNoYW9rdW4gWmhhbmcgPHpoYW5nc2hhb2t1bkBoaXNpbGljb24uY29tPiIpOwo+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9jcHVob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L2NwdWhvdHBs dWcuaAo+PiBpbmRleCAwMDQyZWYzNjI1MTEuLmI1ZTA0ZjliNjhmMSAxMDA2NDQKPj4gLS0tIGEv aW5jbHVkZS9saW51eC9jcHVob3RwbHVnLmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9jcHVob3Rw bHVnLmgKPj4gQEAgLTE3NCw2ICsxNzQsNyBAQCBlbnVtIGNwdWhwX3N0YXRlIHsKPj4gwqDCoMKg wqDCoCBDUFVIUF9BUF9QRVJGX0FSTV9ISVNJX0REUkNfT05MSU5FLAo+PiDCoMKgwqDCoMKgIENQ VUhQX0FQX1BFUkZfQVJNX0hJU0lfSEhBX09OTElORSwKPj4gwqDCoMKgwqDCoCBDUFVIUF9BUF9Q RVJGX0FSTV9ISVNJX0wzX09OTElORSwKPj4gK8KgwqDCoCBDUFVIUF9BUF9QRVJGX0FSTV9ISVNJ X1NMTENfT05MSU5FLAo+PiDCoMKgwqDCoMKgIENQVUhQX0FQX1BFUkZfQVJNX0wyWDBfT05MSU5F LAo+PiDCoMKgwqDCoMKgIENQVUhQX0FQX1BFUkZfQVJNX1FDT01fTDJfT05MSU5FLAo+PiDCoMKg wqDCoMKgIENQVUhQX0FQX1BFUkZfQVJNX1FDT01fTDNfT05MSU5FLAo+Pgo+IAo+IC4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK