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 CDD17C07E9D for ; Mon, 26 Sep 2022 13:33:17 +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-Transfer-Encoding:Content-Type: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=e79tOR+j4nB1KheW5+rLJy2rLugDvveEwz8ENVo5Mpg=; b=veAxEwZ3quGTYS 5pdsm50kE4bzPcszst5g0JKoQDJItg0oijfq3UrtBt7lueGwViaBC//7XcBpwdfsdsu26iPcgy3BM Ai5AxLf1GPeIEA03DYZpJy2fHn/+erjUwUv6vj9LbDtVycwlK1Gd9SgIRWiOd4/lCwzKw6FpSaWu1 HiwCrjEmB/3JPvO84E6hOfHqcOgloAz/UfS5ov2z6q3Dfieh7iepAy7g1kSeU2rTA4w1u7xbjlpcR /Fj1FdFKK7902oM8zMra48/q8sgyhI8eI85T3KOKZRo1fhC1v3BEiyqXGzsvIXe9ekxpGckO8qn4b obVKqa0TMBlEp2tMHWlA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ocoD6-0055HR-K3; Mon, 26 Sep 2022 13:31:48 +0000 Received: from out30-42.freemail.mail.aliyun.com ([115.124.30.42]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ocoD2-0055EI-Px for linux-arm-kernel@lists.infradead.org; Mon, 26 Sep 2022 13:31:47 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046050;MF=xueshuai@linux.alibaba.com;NM=1;PH=DS;RN=11;SR=0;TI=SMTPD_---0VQnlSwW_1664199095; Received: from 30.240.121.51(mailfrom:xueshuai@linux.alibaba.com fp:SMTPD_---0VQnlSwW_1664199095) by smtp.aliyun-inc.com; Mon, 26 Sep 2022 21:31:36 +0800 Message-ID: <89efd20f-65f2-c082-1eb4-4e308957ff59@linux.alibaba.com> Date: Mon, 26 Sep 2022 21:31:34 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [PATCH v1 2/3] drivers/perf: add DesignWare PCIe PMU driver Content-Language: en-US To: Jonathan Cameron , Bjorn Helgaas Cc: will@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, rdunlap@infradead.org, robin.murphy@arm.com, mark.rutland@arm.com, baolin.wang@linux.alibaba.com, zhuo.song@linux.alibaba.com, linux-pci@vger.kernel.org References: <20220917121036.14864-1-xueshuai@linux.alibaba.com> <20220917121036.14864-3-xueshuai@linux.alibaba.com> <20220922165820.000017b6@huawei.com> <20220923165423.00007dc6@huawei.com> From: Shuai Xue In-Reply-To: <20220923165423.00007dc6@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220926_063145_376385_5EAB471E X-CRM114-Status: GOOD ( 52.90 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 KyBCam9ybiBIZWxnYWFzCgrlnKggMjAyMi85LzIzIFBNMTE6NTQsIEpvbmF0aGFuIENhbWVyb24g 5YaZ6YGTOgo+IAo+Pgo+Pj4gICAKPj4+PiArI2RlZmluZSBSUF9OVU1fTUFYCQkJCTMyIC8qIDJk aWUgKiA0UkMgKiA0Q3Ryb2wgKi8gIAo+Pj4KPj4+IFRoaXMgZHJpdmVyIGlzICdhbG1vc3QnIGdl bmVyaWMuIFNvIGlmIHlvdSBhbiBhdm9pZCBkZWZpbmVzIGJhc2VkIG9uIGEgcGFydGljdWxhcgo+ Pj4gcGxhdGZvcm0gdGhhdCdzIGRlZmluaXRlbHkgZ29vZCEgIAo+Pgo+PiBHb29kIGlkZWEuIEhv dyBhYm91dCBkZWZpbmluZyBSUF9OVU1fTUFYIGFzIDY0PyBBcyBmYXJzIGFzIEkga25vdywKPj4g c29tZSBwbGF0ZnJvbSB1c2UgMiBzb2NrZXRzLCAyIGRpZSBwZXIgc29ja2V0Lgo+PiBUaGVuIDIg c29ja2V0cyAqIDIgZGllcyAqIDQgUm9vdCBDb21wbGV4ICogNCByb290IHBvcnQuCj4gCj4gU2V0 dGluZyBhIHJlYXNvbmFibGUgbWF4aW11bSBpcyBmaW5lIC0gYnV0IG1ha2Ugc3VyZSB0aGUgY29k ZSB0aGVuIGZhaWxzIHdpdGgKPiBhIHN1aXRhYmxlIGVycm9yIG1lc3NhZ2UgaWYgdGhlcmUgYXJl IG1vcmUhCgpPSywgSSB3aWxsIGFkZCBhIGRpc2NvdmVyeSBsb2dpYyBoZXJlIGFuZCBjb3VudCBQ TVUgbnVtYmVyIGF0IHJ1bnRpbWUuCgo+IAo+IAo+Pj4+ICsjZGVmaW5lIERXQ19QQ0lFX0xBTkVf U0hJRlQJCQk0Cj4+Pj4gKyNkZWZpbmUgRFdDX1BDSUVfTEFORV9NQVNLCQkJR0VOTUFTSyg5LCA0 KQo+Pj4+ICsKPj4+PiArI2RlZmluZSBEV0NfUENJRV9FVkVOVF9DTlRfQ1RSTAkJCTB4OAo+Pj4+ ICsjZGVmaW5lIERXQ19QQ0lFX19DTlRfRVZFTlRfU0VMRUNUX1NISUZUCTE2ICAKPj4+Cj4+PiBX aHkgZG91YmxlIF9fPyAgSWYgcG9pbnQgaXMgLCB0aGVuCj4+PiBuYW1pbmcgd29ya3MgYmV0dGVy Cj4+PiBEV0NfUENJRV9FVkVOVF9DTlRfQ1RSTF9SRUcKPj4+IERXQ19QQ0lFX0VWRU5UX0NOVF9D VFJMX0VWX1NFTEVDVF9NU0sgZXRjICAKPj4KPj4gWWVzLCBJIHBvaW50IHRvIHVzZSBkb3VibGUg YF9fYCB0byBpbmRpY2F0ZSBpdCBpcyBhIGZpZWxkIG9mIHJlZ2lzdGVyLAo+PiBhcyBDTU4gYW5k IENDTiBkcml2ZXJzIGRvLiBJIGFsc28gY29uc2lkZXJlZCBuYW1pbmcgd2l0aCBSRUcgZXhwbGlj aXRseSwKPj4gYnV0IHRoZSBtYWNybyBpcyBzbyBsb25nIHRoYXQgSSBvZnRlbiBoYXZlIHRvIHdy YXAgY29kZSBpbnRvIG11bHRpbGluZXMuCj4+IEFueSB3YXksIGl0J3MgZmluZSB0byByZW5hbWUg aWYgeW91IHN0aWxsIHN1Z2dlc3QgdG8gZG8gc28uCj4gCj4gSSBkb24ndCBwYXJ0aWN1bGFybHkg bWluZC4gIFRoaXMgY29udmVudGlvbiB3YXMgbmV3IHRvIG1lLgoKSGFoYSwgdGhlbiBJIHdpbGwg bGVhdmUgdGhlIGRvdWJsZSBgX19gIGFzIENNTiBhbmQgQ0NOIGRyaXZlcnMgZG8uCgo+Pj4+ICtz dHJ1Y3QgZHdjX3BjaWVfcG11X3ByaXYgewo+Pj4+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+Pj4+ ICsJdTMyIHBjaWVfY3RybF9udW07Cj4+Pj4gKwlzdHJ1Y3QgZHdjX3BjaWVfaW5mb190YWJsZSAq cGNpZV90YWJsZTsKPj4+PiArfTsKPj4+PiArCj4+Pj4gKyNkZWZpbmUgRFdDX1BDSUVfQ1JFQVRF X0JERihzZWcsIGJ1cywgZGV2LCBmdW5jKQlcCj4+Pj4gKwkoKChzZWcpIDw8IDI0KSB8ICgoKGJ1 cykgJiAweEZGKSA8PCAxNikgfCAoKChkZXYpICYgMHhGRikgPDwgOCkgfCAoZnVuYykpICAKPj4+ Cj4+PiBTdXBlcmZpY2lhbGx5IHRoaXMgbG9va3MgcHJldHR5IHN0YW5kYXJkLiAgV2h5IGlzIGlz IERXQyBzcGVjaWZpYz8gIAo+Pgo+PiBZb3UgYXJlIHJpZ2h0LCBpdCBpcyBub3QgRFdDIHNwZWNp ZmljLgo+Pgo+PiBJIGZvdW5kIGEgc2ltaWxhciBkZWZpbml0aW9uIGluIGFyY2gvaWE2NC9wY2kv cGNpLmMgLgo+Pgo+PiAJI2RlZmluZSBQQ0lfU0FMX0FERFJFU1Moc2VnLCBidXMsIGRldmZuLCBy ZWcpCQlcCj4+IAkoKCh1NjQpIHNlZyA8PCAyNCkgfCAoYnVzIDw8IDE2KSB8IChkZXZmbiA8PCA4 KSB8IChyZWcpKQo+Pgo+PiBTaG91bGQgd2UgbW92ZSBpdCBpbnRvIGEgY29tbW9uIGhlYWRlciBm aXJzdD8KPiAKPiBNYXliZS4gVGhlIGJ1cywgZGV2Zm4sIHJlZyBwYXJ0IGlzIHN0YW5kYXJkIGJk ZiwgYnV0IEkgZG9uJ3QgdGhpbmsKPiB0aGUgUENJIDYuMCBzcGVjIGRlZmluZWQgYSB2ZXJzaW9u IHdpdGggdGhlIHNlZyBpbiB0aGUgdXBwZXIgYml0cy4KPiBJJ20gbm90IHN1cmUgaWYgd2Ugd2Fu dCB0byBhZG9wdCB0aGF0IGluIExJbnV4LgoKSSBmb3VuZCBsb3RzIG9mIGNvZGUgdXNlIHNlZyxi dXMsZGV2Zm4scmVnIHdpdGggZm9ybWF0ICIlMDR4OiUwMng6JTAyeC4leCIsCkkgYW0gbm90IHF1 aXRlIGZhbWlsaWFyIHdpdGggUENJZSBzcGVjLiBXaGF0IGRvIHlvdSB0aGluayBhYm91dCBpdCwg Qmpvcm4/CgoKPiAKPj4+ICAgCj4+Pj4gKwkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIHZz ZWMgKyBQQ0lfVk5EUl9IRUFERVIsICZoZWFkZXIpOwo+Pj4+ICsJCS8qIElzIHRoZSBkZXZpY2Ug cGFydCBvZiBhIERlc2lnbldhcmUgQ29yZXMgUENJZSBDb250cm9sbGVyID8gKi8gIAo+Pj4KPj4+ IEdvb2QgcXVlc3Rpb24uLi4gVGhpcyBjb2RlIGRvZXNuJ3QgY2hlY2sgdGhhdC4gIFZTRUMgSUQg aXMgbWF0Y2hlZCBvbmx5IHdpdGgKPj4+IHRoZSBWZW5kb3IgSUQgb2YgdGhlIGRldmljZXMgLSB1 bmxpa2UgRFZTRUMgd2hlcmUgdGhpcyB3b3VsZCBhbGwgYmUgbmljZQo+Pj4gYW5kIGxvY2FsLiAg Cj4+Cj4+IEkgdGhpbmsgYSBzaW1pbGFyIGZhc2hpb24gaXMKPj4KPj4gCXUxNiBwY2lfZmluZF92 c2VjX2NhcGFiaWxpdHkoc3RydWN0IHBjaV9kZXYgKmRldiwgdTE2IHZlbmRvciwgaW50IGNhcCkK Pj4KPj4gQXMgeW91IHNlZSwgSSBkb24ndCB3YW50IHRvIGxpbWl0IHRoaXMgZHJpdmVyIHRvIGEg c3BlY2lmaWMgdmVuZG9yLCBsaWtlCj4+IEFsaWJhYmEgKDB4MWRlZCksIGJlY2F1c2UgdGhpcyBk cml2ZXIgaXMgZ2VuZXJpYyB0byBhbGwgRGVzaWduV2FyZSBDb3JlcyBQQ0llCj4+IENvbnRyb2xs ZXIuIFRoZXJlZm9yZSwgZHdjX3BjaWVfZmluZF9yYXNfZGVzX2NhcF9wb3NpdGlvbiBkb2VzIG5v dCBjaGVjayB2ZW5kb3IKPj4gbGlrZSBwY2lfZmluZF92c2VjX2NhcGFiaWxpdHkuCj4gCj4gWW91 IGNhbid0IGRvIHRoYXQgYmVjYXVzZSBhbm90aGVyIHZlbmRvciBjb3VsZCB1c2UgdGhlIHNhbWUg VlNFQyBJRCBmb3IKPiBhbiBlbnRpcmVseSBkaWZmZXJlbnQgcHVycG9zZS4gVGhleSBhcmUgb25s eSB2YWxpZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBkZXZpY2UgVklELgoKSXQgbWFrZSBzZW5z ZSB0byBtZS4KCj4gCj4gVGhlIG9ubHkgd2F5IHRoaXMgY2FuIHdvcmsgaXMgd2l0aCBhIGxpc3Qg b2Ygc3BlY2lmaWMgdmVuZG9yIElEIC8gVlNFQyBwYWlycyBmb3IKPiBrbm93biBkZXZpY2VzLgo+ IAo+Pgo+PiBEbyB5b3UgbWVhbiB0byB1c2UgRFZTRUMgaW5zdGVhZD8gSSB0cnkgdG8gcmVhZCBv dXQgRFZTRUMgd2l0aCBsc3BjaToKPj4KPj4gICAgICMgbHNwY2kgLXZ2dgo+PiAgICAgYjA6MDAu MCBQQ0kgYnJpZGdlOiBBbGliYWJhIChDaGluYSkgQ28uLCBMdGQuIE0xIFJvb3QgUG9ydCAocmV2 IDAxKSAocHJvZy1pZiAwMCBbTm9ybWFsIGRlY29kZV0pCj4+ICAgICBbLi4uc25pcC4uLl0KPj4g ICAgICAgICBDYXBhYmlsaXRpZXM6IFszNzQgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlv bjogSUQ9MDAwMiBSZXY9NCBMZW49MTAwIDw/Pgo+PiAgICAgICAgIENhcGFiaWxpdGllczogWzQ3 NCB2MV0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xIExlbj0wMzgg PD8+Cj4+ICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNGFjIHYxXSBEYXRhIExpbmsgRmVhdHVyZSA8 Pz4KPj4gICAgICAgICBDYXBhYmlsaXRpZXM6IFs0YjggdjFdIERlc2lnbmF0ZWQgVmVuZG9yLVNw ZWNpZmljOiBWZW5kb3I9MDAwMSBJRD0wMDAwIFJldj0xIExlbj02NCA8Pz4KPj4gICAgICAgICBD YXBhYmlsaXRpZXM6IFs0ZmMgdjFdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAw NSBSZXY9MSBMZW49MDE4IDw/Pgo+Pgo+PiBIb3cgY2FuIHdlIHRlbGwgaXQncyBhIERlc2lnbldh cmUgQ29yZXMgUENJZSBDb250cm9sbGVyPwo+IAo+IEdhaC4gVGhpcyBpcyB3aGF0IERWU0VDIHdh cyBkZWZpbmVkIHRvIHNvbHZlLiBJdCBsZXRzIHlvdSBoYXZlIGEgY29tbW9uCj4gdmVuZG9yIGRl ZmluZWQgZXh0ZW5kZWQgY2FwYWJpbGl0eSBkZWZpbmVkIGJ5IGEgdmVuZG9yLCBpbmRlcGVuZGVu dCBvZiB0aGUKPiBWSUQgb2YgYSBnaXZlbiBkZXZpY2UuICBXaXRoIGEgVlNFQyB5b3UgY2FuJ3Qg d3JpdGUgZ2VuZXJpYyBjb2RlLgo+IAoKR290IGl0LiBCdXQgSSBkb24ndCBzZWUgYW55IGRlc2Ny aXB0aW9uIGFib3V0IFJBU19ERVNfQ0FQIHJlZ2lzdGVyIHJlbGF0ZSB0byBEVlNFQwppbiBQQ0ll IENvbnRyb2xsZXIgVFJNLiBJIHdpbGwgY2hlY2sgdGhpcyBsYXRlci4KCj4+Cj4+Pj4gKwkJaWYg KFBDSV9WTkRSX0hFQURFUl9JRChoZWFkZXIpID09IERXQ19QQ0lFX1ZTRUNfSUQgJiYKPj4+PiAr CQkgICAgUENJX1ZORFJfSEVBREVSX1JFVihoZWFkZXIpID09IERXQ19QQ0lFX1ZTRUNfUkVWKSB7 Cj4+Pj4gKwkJCSpwb3MgPSB2c2VjOwo+Pj4+ICsJCQlyZXR1cm4gMDsKPj4+PiArCQl9Cj4+Pj4g Kwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIC1FTk9ERVY7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0 YXRpYyBpbnQgZHdjX3BjaWVfcG11X2Rpc2NvdmVyKHN0cnVjdCBkd2NfcGNpZV9wbXVfcHJpdiAq cHJpdikKPj4+PiArewo+Pj4+ICsJaW50IHZhbCwgd2hlcmUsIGluZGV4ID0gMDsKPj4+PiArCXN0 cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsKPj4+PiArCXN0cnVjdCBkd2NfcGNpZV9pbmZvX3Rh YmxlICpwY2llX2luZm87Cj4+Pj4gKwo+Pj4+ICsJcHJpdi0+cGNpZV90YWJsZSA9Cj4+Pj4gKwkg ICAgZGV2bV9rY2FsbG9jKHByaXYtPmRldiwgUlBfTlVNX01BWCwgc2l6ZW9mKCpwY2llX2luZm8p LCBHRlBfS0VSTkVMKTsKPj4+PiArCWlmICghcHJpdi0+cGNpZV90YWJsZSkKPj4+PiArCQlyZXR1 cm4gLUVJTlZBTDsKPj4+PiArCj4+Pj4gKwlwY2llX2luZm8gPSBwcml2LT5wY2llX3RhYmxlOwo+ Pj4+ICsJd2hpbGUgKChwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX0FOWV9JRCwgUENJX0FOWV9J RCwgcGRldikpICE9IE5VTEwgJiYKPj4+PiArCSAgICAgICBpbmRleCA8IFJQX05VTV9NQVgpIHsg IAo+Pj4KPj4+IFRoaXMgaGF2aW5nIGEgZHJpdmVyIHRoYW4gdGhlbiB3YWxrcyB0aGUgcGNpIHRv cG9sb2d5IHRvIGZpbmQgcm9vdCBwb3J0cyBhbmQgYWRkCj4+PiBleHRyYSBzdHVmZiB0byB0aGVt IGlzIG5vdCBhIGNsZWFuIHNvbHV0aW9uLgo+Pj4KPj4+IFRoZSBwcm9iaW5nIHNob3VsZCBiZSBk cml2ZW4gZnJvbSB0aGUgZXhpc3RpbmcgUENJIGRyaXZlciB0b3BvbG9neS4KPj4+IFRoZXJlIGFy ZSBhIGJ1bmNoIG9mIG5ldyBmZWF0dXJlcyB3ZSBuZWVkIHRvIGFkZCB0byBwb3J0cyBpbiB0aGUg bmVhciBmdXR1cmUKPj4+IGFueXdheSAtIHRoaXMgd291bGQganVzdCBiZSBhbm90aGVyIG9uZS4K Pj4+IFNhbWUgcHJvYmxlbSBleGlzdHMgZm9yIENYTCBDUE1VIHBlcmYgZGV2aWNlcyAtIHNvIGZh ciB3ZSBvbmx5IHN1cHBvcnQgdGhvc2UKPj4+IG9uIGVuZCBwb2ludHMsIHBhcnRseSBiZWNhdXNl IHdlIG5lZWQgYSBjbGVhbiB3YXkgdG8gcHJvYmUgdGhlbSBvbiBwY2kgcG9ydHMuCj4+Pgo+Pj4g V2hhdGV2ZXIgd2UgY29tZSB1cCB3aXRoIHRoZXJlIHdpbGwgYXBwbHkgaGVyZSBhcyB3ZWxsLiAg Cj4+Cj4+IEkgc2VlIHlvdXIgcG9pbnQuIEFueSBsaW5rIHRvIHJlZmVyZW5jZT8KPiAKPiBObywg dGhvdWdoIGhvcGVmdWxseSB3ZSdsbCBnZXQgdG8gc29tZSBzb3J0IG9mIHBsYW4gaW4gdGhlIGJy YW5jaCBvZiB0aGlzIHRocmVhZAo+IHRoYXQgQmpvcm4gY29tbWVudCBpbi4KPiAKCk9LLgoKPj4K Pj4+ICAgCj4+Pj4gKwkJaWYgKCFwY2lfZGV2X2lzX3Jvb3Rwb3J0KHBkZXYpKQo+Pj4+ICsJCQlj b250aW51ZTsKPj4+PiArCj4+Pj4gKwkJcGNpZV9pbmZvW2luZGV4XS5iZGYgPSBkd2NfcGNpZV9n ZXRfYmRmKHBkZXYpOwo+Pj4+ICsJCXBjaWVfaW5mb1tpbmRleF0ucGRldiA9IHBkZXY7ICAKPj4+ IFByb2JhYmx5IHdhbnQgYSBzYW5pdHkgY2hlY2sgdGhpcyBoYXMgYSB2ZW5kb3IgSUQgYXBwcm9w cmlhdGUgdGhlIFZTRUMgeW91IGFyZSBhYm91dAo+Pj4gdG8gbG9vayBmb3IuICAKPj4KPj4gSWYg SSBjaGVjayB0aGUgdmVuZG9yIElEIGhlcmUgb3IgaW4gZHdjX3BjaWVfZmluZF9yYXNfZGVzX2Nh cF9wb3NpdGlvbiwgdGhpcyBkcml2ZXIKPj4gd2lsbCBvbmx5IHdvcmsgZm9yIEFsaWJhYmEgYXMg SSBtZW50aW9uZWQgYmVmb3JlLgo+IAo+IEFncmVlZC4gVW5mb3J0dW5hdGVseSB0aGF0J3MgYWxs IHlvdSBjYW4gZG8gc2FmZWx5IGFzIFZTRUMgSURzIGFyZSBub3QgYSBnbG9iYWwKPiBuYW1lc3Bh Y2UuCgpTaG91bGQgd2UgYWRkIGEgc2FuaXR5IGNoZWNrIHdpdGggYSB2ZW5kb3IgbGlzdCBpbiBk d2NfcGNpZV9maW5kX3Jhc19kZXNfY2FwX3Bvc2l0aW9uPwoKPj4KPj4+PiArCj4+Pj4gKwlyZXQg PSBkd2NfcGNpZV9wbXVfd3JpdGVfZHdvcmQocGNpZV9pbmZvLCBEV0NfUENJRV9FVkVOVF9DTlRf Q1RSTCwgdmFsKTsKPj4+PiArCWlmIChyZXQpCj4+Pj4gKwkJcGNpX2VycihwY2llX2luZm8tPnBk ZXYsICJQQ0llIHdyaXRlIGZhaWxcbiIpOwo+Pj4+ICsKPj4+PiArCXJldHVybiByZXQ7Cj4+Pj4g K30gIAo+Pj4KPj4+IC4uLgo+Pj4gICAKPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgZHdjX3BjaWVf cG11X3JlYWRfYmFzZV90aW1lX2NvdW50ZXIoc3RydWN0IGR3Y19wY2llX2luZm9fdGFibGUKPj4+ PiArCQkJCQkgICAgICAgKnBjaWVfaW5mbywgdTY0ICpjb3VudGVyKQo+Pj4+ICt7Cj4+Pj4gKwl1 MzIgcmV0LCB2YWw7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gZHdjX3BjaWVfcG11X3JlYWRfZHdvcmQo cGNpZV9pbmZvLAo+Pj4+ICsJCQkJICAgICAgRFdDX1BDSUVfVElNRV9CQVNFRF9BTkFMWVNJU19E QVRBX1JFR19ISUdILAo+Pj4+ICsJCQkJICAgICAgJnZhbCk7Cj4+Pj4gKwlpZiAocmV0KSB7Cj4+ Pj4gKwkJcGNpX2VycihwY2llX2luZm8tPnBkZXYsICJQQ0llIHJlYWQgZmFpbFxuIik7Cj4+Pj4g KwkJcmV0dXJuIHJldDsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwkqY291bnRlciA9IHZhbDsKPj4+ PiArCSpjb3VudGVyIDw8PSAzMjsgIAo+Pj4KPj4+IFRoaXMgbG9va3MgbGlrZSB5b3UgY291bGQg Z2V0IHJpcHBpbmcgYmV0d2VlbiB0aGUgdXBwZXIgYW5kIGxvd2VyIGR3b3Jkcy4KPj4+IFdoYXQg cHJldmVudHMgdGhhdD8gUGVyaGFwcyBhIGNvbW1lbnQgdG8gc2F5IHdoeSB0aGF0J3Mgbm90IGEg cHJvYmxlbT8gIAo+Pgo+PiBUaGUgVGltZS1iYXNlZCBBbmFseXNpcyBEYXRhIHdoaWNoIGNvbnRh aW5zIHRoZSBtZWFzdXJlbWVudCByZXN1bHRzIG9mCj4+IFJYL1RYIGRhdGEgdGhyb3VnaHB1dCBh bmQgdGltZSBzcGVudCBpbiBlYWNoIGxvdy1wb3dlciBMVFNTTSBzdGF0ZSBpcyA2NCBiaXQuCj4+ IFRoZSBkYXRhIGlzIHByb3ZpZGVkIGJ5IHR3byAzMiBiaXQgcmVnaXN0ZXJzIHNvIEkgcmlwIHRo ZW0gdG9nZXRoZXIuIEkgd2lsbAo+PiBhZGQgYSBjb21tZW50IGhlcmUgaW4gbmV4dCB2ZXJpc29u Lgo+IAo+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHkgdGhlIG9ubHkgc2FmZSB3YXkgdG8gcmVh ZCB0aGlzIGlzIGluIGEgdHJ5IC8gcmV0cnkgbG9vcC4KPiBSZWFkIHRoZSB1cHBlciBwYXJ0LCB0 aGVuIHRoZSBsb3dlciBwYXJ0LCB0aGVuIHJlcmVhZCB0aGUgdXBwZXIgcGFydC4KPiBJZiB0aGUg dXBwZXIgcGFydCBpcyB1bmNoYW5nZWQgeW91IGRpZCBub3QgZ2V0IHJpcHBpbmcgYWNyb3NzIHRo ZSB0d28gcmVnaXN0ZXJzLgo+IElmIGl0IGNoYW5nZXMsIHRyeSBhZ2Fpbi4KCkl0IG1ha2Ugc2Vu Y2UgdG8gbWUsIEkgd2lsbCBmaXggaXQgaW4gbmV4dCB2ZXJzaW9uLgoKPiAKPj4KPj4+ICAgCj4+ Pj4gKwo+Pj4+ICsJcmV0ID0gZHdjX3BjaWVfcG11X3JlYWRfZHdvcmQocGNpZV9pbmZvLAo+Pj4+ ICsJCQkJICAgICAgRFdDX1BDSUVfVElNRV9CQVNFRF9BTkFMWVNJU19EQVRBX1JFR19MT1csCj4+ Pj4gKwkJCQkgICAgICAmdmFsKTsKPj4+PiArCWlmIChyZXQpIHsKPj4+PiArCQlwY2lfZXJyKHBj aWVfaW5mby0+cGRldiwgIlBDSWUgcmVhZCBmYWlsXG4iKTsKPj4+PiArCQlyZXR1cm4gcmV0Owo+ Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCSpjb3VudGVyICs9IHZhbDsKPj4+PiArCj4+Pj4gKwlyZXR1 cm4gcmV0Owo+Pj4+ICt9ICAKPj4+IC4uLgo+Pj4KPj4+PiArCj4+Pj4gKwlyZXQgPSBwZXJmX3Bt dV9yZWdpc3RlcigmcGNpZV9wbXUtPnBtdSwgbmFtZSwgLTEpOwo+Pj4+ICsJaWYgKHJldCkgewo+ Pj4+ICsJCXBjaV9lcnIocGNpZV9pbmZvLT5wZGV2LCAiRXJyb3IgJWQgcmVnaXN0ZXJpbmcgUE1V IEAleFxuIiwgcmV0LAo+Pj4+ICsJCQkJIHBjaWVfaW5mby0+YmRmKTsKPj4+PiArCQlyZXR1cm4g cmV0Owo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCXBjaWVfaW5mby0+cG11X2lzX3JlZ2lzdGVyID0g RFdDX1BDSUVfUE1VX0hBU19SRUdJU1RFUjsgIAo+Pj4KPj4+IEFzIGJlbG93LiBJIHRoaW5rIHlv dSBjYW4gZHJvcCB0aGlzIHN0YXRlIGluZm8uICAKPj4KPj4gUGxlYXNlIHNlZSBteSBjb25mdXNp b24gYmVsbG93Lgo+Pgo+Pj4gICAKPj4+PiArCj4+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+ Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IGR3Y19wY2llX3BtdV9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPj4+PiArewo+Pj4+ICsJc3RydWN0IGR3Y19wY2llX3BtdV9wcml2ICpw cml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4+Pj4gKwlpbnQgaW5kZXg7Cj4+Pj4g KwlzdHJ1Y3QgZHdjX3BjaWVfcG11ICpwY2llX3BtdTsKPj4+PiArCj4+Pj4gKwlmb3IgKGluZGV4 ID0gMDsgaW5kZXggPCBwcml2LT5wY2llX2N0cmxfbnVtOyBpbmRleCsrKQo+Pj4+ICsJCWlmIChw cml2LT5wY2llX3RhYmxlW2luZGV4XS5wbXVfaXNfcmVnaXN0ZXIpIHsKPj4+PiArCQkJcGNpZV9w bXUgPSAmcHJpdi0+cGNpZV90YWJsZVtpbmRleF0ucGNpZV9wbXU7Cj4+Pj4gKwkJCXBlcmZfcG11 X3VucmVnaXN0ZXIoJnBjaWVfcG11LT5wbXUpOwo+Pj4+ICsJCX0KPj4+PiArCXJldHVybiAwOwo+ Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IGR3Y19wY2llX3BtdV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4+ICt7Cj4+Pj4gKwlpbnQgcmV0ID0gMDsgIAo+Pj4K Pj4+IEluaXRpYWxpemVkIGluIGFsbCBwYXRocyB3aGVyZSBpdCBpcyB1c2VkLiBDb21waWxlciBz aG91bGQgYmUgYWJsZSB0byB0ZWxsCj4+PiB0aGF0IHNvIEkgZG91YnQgeW91IG5lZWQgdGhpcyB0 byBiZSBzZXQgdG8gMCBoZXJlLiAgCj4+Cj4+IEFncmVlLCB3aWxsIGxlYXZlIGl0IGFzIHVuaW5p dGlhbGl6ZWQuCj4+Cj4+PiAgIAo+Pj4+ICsJaW50IHBjaWVfaW5kZXg7Cj4+Pj4gKwlzdHJ1Y3Qg ZHdjX3BjaWVfcG11X3ByaXYgKnByaXY7Cj4+Pj4gKwo+Pj4+ICsJcHJpdiA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPj4+PiArCWlmICghcHJp dikKPj4+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4+PiArCXByaXYtPmRldiA9ICZwZGV2LT5kZXY7 Cj4+Pj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKPj4+PiArCj4+Pj4gKwkv KiBJZiBQTVUgaXMgbm90IHN1cHBvcnQgb24gY3VycmVudCBwbGF0Zm9ybSwga2VlcCBzbGllbnQg Ki8KPj4+PiArCWlmIChkd2NfcGNpZV9wbXVfZGlzY292ZXIocHJpdikpCj4+Pj4gKwkJcmV0dXJu IDA7Cj4+Pj4gKwo+Pj4+ICsJZm9yIChwY2llX2luZGV4ID0gMDsgcGNpZV9pbmRleCA8IHByaXYt PnBjaWVfY3RybF9udW07IHBjaWVfaW5kZXgrKykgewo+Pj4+ICsJCXN0cnVjdCBwY2lfZGV2ICpy cCA9IHByaXYtPnBjaWVfdGFibGVbcGNpZV9pbmRleF0ucGRldjsKPj4+PiArCj4+Pj4gKwkJcmV0 ID0gX19kd2NfcGNpZV9wbXVfcHJvYmUocHJpdiwgJnByaXYtPnBjaWVfdGFibGVbcGNpZV9pbmRl eF0pOwo+Pj4+ICsJCWlmIChyZXQpIHsKPj4+PiArCQkJZGV2X2VycigmcnAtPmRldiwgIlBDSWUg UE1VIHByb2JlIGZhaWxcbiIpOwo+Pj4+ICsJCQlnb3RvIHBtdV91bnJlZ2lzdGVyOwo+Pj4+ICsJ CX0KPj4+PiArCX0KPj4+PiArCWRldl9pbmZvKCZwZGV2LT5kZXYsICJQQ0llIFBNVXMgcmVnaXN0 ZXJlZFxuIik7ICAKPj4+Cj4+PiBOb2lzZSBpbiB0aGUgbG9ncy4gIFRoZXJlIGFyZSBsb3RzIG9m IHdheXMgdG8ga25vdyBpZiB3ZSByZWFjaGVkIHRoaXMgcG9pbnQKPj4+IHNvIHRoaXMgYWRkcyBu byB2YWx1ZS4gIAo+Pgo+PiBHb3QgaXQsIHdpbGwgZHJvcCB0aGlzIG91dCBpbiBuZXh0IHZlcnNp b24uCj4+Cj4+PiAgIAo+Pj4+ICsKPj4+PiArCXJldHVybiAwOwo+Pj4+ICsKPj4+PiArcG11X3Vu cmVnaXN0ZXI6Cj4+Pj4gKwlkd2NfcGNpZV9wbXVfcmVtb3ZlKHBkZXYpOyAgCj4+Pgo+Pj4gSSdk IG11Y2ggcmF0aGVyIHNlZSB0aGUgdW53aW5kIGhlcmUgZGlyZWN0bHkgc28gd2UgY2FuIGNsZWFy bHkgc2VlIHRoYXQgaXQgdW5kb2VzCj4+PiB0aGUgcmVzdWx0IG9mIGVycm9ycyBpbiB0aGlzIGZ1 bmN0aW9uLiAgVGhhdCByZW1vdmVzIHRoZSBuZWVkIHRvIHVzZSB0aGUKPj4+IGlzX3JlZ2lzdGVy ZWQgZmxhZyBpbiB0aGUgcmVtb3ZlKCkgZnVuY3Rpb24gc2ltcGxpZnlpbmcgdGhhdCBmbG93IGFz IHdlbGwuICAKPj4KPj4gRG8geW91IG1lYW4gdGhhdCBpZiBwZXJmX3BtdV9yZWdpc3RlciBmYWls cywgdGhlbiBqdW1wIHRvIHBtdV91bnJlZ2lzdGVyIGxhYmxlIGRpcmVjdGx5Pwo+PiBIb3cgY2Fu IHdlIHRlbGwgd2hpY2ggUE1VIGRpdmVpY2UgZmFpbHMgdG8gcmVpZ2lzdGVyPwo+IAo+IHBjaWVf aW5kZXggd2lsbCBiZSBzZXQgdG8gdGhlIGluZGV4IG9mIHRoZSBQTVUgZGV2aWNlIHRoYXQgZmFp bGVkIC0gc28gbG9vcHMgYmFja3dhcmRzCj4gZnJvbSB0aGF0IHJlbW92aW5nIHRoZW0uCgpHb29k IGlkZWEuIEkgd2lsbCBmaXggaXQgaW4gbmV4dCB2ZXJzaW9uLgoKCj4+Cj4gLgo+Pgo+Pj4gICAK Pj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgX19pbml0IGR3Y19wY2llX3BtdV9pbml0 KHZvaWQpCj4+Pj4gK3sKPj4+PiArCWludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gcGxhdGZv cm1fZHJpdmVyX3JlZ2lzdGVyKCZkd2NfcGNpZV9wbXVfZHJpdmVyKTsKPj4+PiArCj4+Pj4gKwlp ZiAocmV0KQo+Pj4+ICsJCXJldHVybiByZXQ7Cj4+Pj4gKwo+Pj4+ICsJZHdjX3BjaWVfcG11X2Rl diA9Cj4+Pj4gKwkgICAgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShERVZfTkFNRSwg LTEsIE5VTEwsIDApOyAgCj4+Pgo+Pj4gSSdkIG5vcm1hbGx5IGV4cGVjdCB0byBzZWUgdGhlIGRl dmljZSBjcmVhdGVkIGFzIGEgcmVzdWx0IG9mIGZpcm13YXJlCj4+PiBkZXNjcmlwdGlvbiAoQUNQ SSBEU0RUIC8gb3IgRGV2aWNlIHRyZWUpCj4+PiBJdCBpcyB1bnVzdWFsIHRvIGNyZWF0ZSBhICdy ZWFsJyBkZXZpY2UgZGlyZWN0bHkgaW4gdGhlIGRyaXZlcgo+Pj4gaW5pdCAtIHRoYXQncyBub3Jt YWxseSByZXNlcnZlZCBmb3IgdmFyaW91cyBmYWtlIC8gc29mdHdhcmUgZGV2aWNlcy4gIAo+Pgo+ PiBJIHNlZSB5b3VyIGNvbmNlcm5zLiBZb3UgbWVudGlvbmVkIHRoYXQKPj4KPj4gICAgPiBUaGUg cHJvYmluZyBzaG91bGQgYmUgZHJpdmVuIGZyb20gdGhlIGV4aXN0aW5nIFBDSSBkcml2ZXIgdG9w b2xvZ3kuICAKPj4KPj4gU2hvdWxkIHdlIGFkZCBhIGZha2UgZGV2aWNlIGluIGZpcm13YXJlIG9y IGRyaXZlIGZyb20gUENJIGRyaXZlciB0b3BvbG9neT8KPiAKPiBBaC4gSSB3YXMgcmV2aWV3aW5n IGJhY2t3YXJkcyBzbyB3aGVuIEkgd3JvdGUgdGhpcyBoYWRuJ3QgcmVhbGl6ZWQgeW91IHdhbGsK PiB0aGUgUENJIHRvcG9sb2d5LiAgIFBDSSBkcml2ZXIgdG9wb2xvZ3kgaXMgdGhlIHJpZ2h0IHNv bHV0aW9uIGhlcmUuCgpJIHNlZSwgSSB3aWxsIHVzZSBQQ0kgZHJpdmVyIHRvcG9sb2d5IGluc3Rl YWQuCgo+IAo+Pgo+PiBUaGFuayB5b3UuCj4+Cj4+IEJlc3QgUmVnYXJkcywKPj4gU2h1YWkKPj4K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK