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 64785C6FA8B for ; Fri, 23 Sep 2022 14:47:34 +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=vRkdvR+w1/z9MNaqUNaDDhO3WQJPK4vsIM6BsbZYAfc=; b=x9q2tfGYBmUHhM lDa7Nlgi4Fg5YfCgeO+CQEvDtHNpgHhHc0FHa3mF7PlfycR5f/b96+XyoILV652KdX+SFXI94zVui IKVMwijMugsOvjl8gwDLWIMrhlqYFePLf4cRWcqTf/TwokeBSvCdT7PX3nM1tu2GbkKAYpGtvm05T 9BVTQAgDamVD+UYGQKz2+x1pWbehGmVH3R+00WD9yD0lWnxoFi3k8/cVjHB0bmuFZKdskWalFXSeY xyBvJp6aTuV/xuJgXQsIyx+2dFRXNzoROwXGox6ZBLAWR8fdKd11LmUQGySD/9f+c0ihlSDoOCrZO 2VJOZEd3KYmTOElV6EBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1objwc-004g5K-Px; Fri, 23 Sep 2022 14:46:22 +0000 Received: from out30-132.freemail.mail.aliyun.com ([115.124.30.132]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1objwY-004g44-GA for linux-arm-kernel@lists.infradead.org; Fri, 23 Sep 2022 14:46:21 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R981e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045192;MF=xueshuai@linux.alibaba.com;NM=1;PH=DS;RN=11;SR=0;TI=SMTPD_---0VQXPcOU_1663944369; Received: from 30.240.121.51(mailfrom:xueshuai@linux.alibaba.com fp:SMTPD_---0VQXPcOU_1663944369) by smtp.aliyun-inc.com; Fri, 23 Sep 2022 22:46:11 +0800 Message-ID: Date: Fri, 23 Sep 2022 22:46:09 +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: Bjorn Helgaas Cc: will@kernel.org, Jonathan.Cameron@Huawei.com, 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: <20220922173607.GA1318619@bhelgaas> From: Shuai Xue In-Reply-To: <20220922173607.GA1318619@bhelgaas> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220923_074618_911443_6FA68AA2 X-CRM114-Status: GOOD ( 38.16 ) 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 CgrlnKggMjAyMi85LzIzIEFNMTozNiwgQmpvcm4gSGVsZ2FhcyDlhpnpgZM6Cj4gWytjYyBsaW51 eC1wY2ldCj4gCj4gT24gU2F0LCBTZXAgMTcsIDIwMjIgYXQgMDg6MTA6MzVQTSArMDgwMCwgU2h1 YWkgWHVlIHdyb3RlOgo+PiBUaGlzIGNvbW1pdCBhZGRzIHRoZSBQQ0llIFBlcmZvcm1hbmNlIE1v bml0b3JpbmcgVW5pdCAoUE1VKSBkcml2ZXIgc3VwcG9ydAo+PiBmb3IgVC1IZWFkIFlpdGlhbiBT b0MgY2hpcC4gWWl0aWFuIGlzIGJhc2VkIG9uIHRoZSBTeW5vcHN5cyBQQ0kgRXhwcmVzcwo+PiBD b3JlIGNvbnRyb2xsZXIgSVAgd2hpY2ggcHJvdmlkZXMgc3RhdGlzdGljcyBmZWF0dXJlLiBUaGUg UE1VIGlzIG5vdCBhIFBDSWUKPj4gUm9vdCBDb21wbGV4IGludGVncmF0ZWQgRW5kIFBvaW50KFJD aUVQKSBkZXZpY2UgYnV0IG9ubHkgcmVnaXN0ZXIgY291bnRlcnMKPj4gcHJvdmlkZWQgYnkgZWFj aCBQQ0llIFJvb3QgUG9ydC4KPj4KPj4gVG8gZmFjaWxpdGF0ZSBjb2xsZWN0aW9uIG9mIHN0YXRp c3RpY3MgdGhlIGNvbnRyb2xsZXIgcHJvdmlkZXMgdGhlCj4+IGZvbGxvd2luZyB0d28gZmVhdHVy ZXMgZm9yIGVhY2ggUm9vdCBQb3J0Ogo+Pgo+PiAtIFRpbWUgQmFzZWQgQW5hbHlzaXMgKFJYL1RY IGRhdGEgdGhyb3VnaHB1dCBhbmQgdGltZSBzcGVudCBpbiBlYWNoCj4+ICAgbG93LXBvd2VyIExU U1NNIHN0YXRlKQo+PiAtIEV2ZW50IGNvdW50ZXJzIChFcnJvciBhbmQgTm9uLUVycm9yIGZvciBs YW5lcykKPj4KPj4gTm90ZSwgb25seSBvbmUgY291bnRlciBmb3IgZWFjaCB0eXBlLgo+Pgo+PiBU aGlzIGRyaXZlciBhZGQgUE1VIGRldmljZXMgZm9yIGVhY2ggUENJZSBSb290IFBvcnQuIEFuZCB0 aGUgUE1VIGRldmljZSBpcwo+PiBuYW1lZCBiYXNlZCB0aGUgQkRGIG9mIFJvb3QgUG9ydC4gRm9y IGV4YW1wbGUsCj4+Cj4+ICAgICAxMDowMC4wIFBDSSBicmlkZ2U6IERldmljZSAxZGVkOjgwMDAg KHJldiAwMSkKPj4KPj4gdGhlIFBNVSBkZXZpY2UgbmFtZSBmb3IgdGhpcyBSb290IFBvcnQgaXMg cGNpZV9iZGZfMTAwMDAwLgo+Pgo+PiBFeGFtcGxlIHVzYWdlIG9mIGNvdW50aW5nIFBDSWUgUlgg VExQIGRhdGEgcGF5bG9hZCAoVW5pdHMgb2YgMTYgYnl0ZXMpOjoKPj4KPj4gICAgICQjIHBlcmYg c3RhdCAtYSAtZSBwY2llX2JkZl8yMDAvUnhfUENJZV9UTFBfRGF0YV9QYXlsb2FkLwo+Pgo+PiBh dmVyYWdlIFJYIGJhbmR3aWR0aCBjYW4gYmUgY2FsY3VsYXRlZCBsaWtlIHRoaXM6Cj4+Cj4+ICAg ICBQQ0llIFRYIEJhbmR3aWR0aCA9IFBDSUVfVFhfREFUQSAqIDE2QiAvIE1lYXN1cmVfVGltZV9X aW5kb3cKPj4KPj4gU2lnbmVkLW9mZi1ieTogU2h1YWkgWHVlIDx4dWVzaHVhaUBsaW51eC5hbGli YWJhLmNvbT4KPiAKPj4gKysrIGIvZHJpdmVycy9wZXJmL2R3Y19wY2llX3BtdS5jCj4+IC4uLgo+ PiArI2RlZmluZSBEV0NfUENJRV9WU0VDX0lECQkJMHgwMgo+IAo+IEkgZG9uJ3QgdGhpbmsgRFdD X1BDSUVfVlNFQ19JRCBpcyBhIHZlcnkgZ29vZCBuYW1lIGJlY2F1c2UgaXQgZG9lc24ndAo+IHRl bGwgdXMgYW55dGhpbmcgYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhlIGNhcGFiaWxpdHkuICBTb21l dGhpbmcgbGlrZQo+IERXQ19QQ0lFX1JBU19ERVNfVlNFQ19JRCB3b3VsZCBiZSBtb3JlIHVzZWZ1 bCB0byByZWFkZXJzLgoKR29vZCBpZGVhLCB3aWxsIHVzZSBEV0NfUENJRV9SQVNfREVTX1ZTRUNf SUQgaW5zdGVhZCBpbiBuZXh0IHZlcnNpb24uCgo+IAo+PiArI2RlZmluZSBEV0NfUENJRV9MSU5L X0NBUEFCSUxJVElFU19SRUcJCTB4Qwo+PiArI2RlZmluZSBEV0NfUENJRV9MQU5FX1NISUZUCQkJ NAo+PiArI2RlZmluZSBEV0NfUENJRV9MQU5FX01BU0sJCQlHRU5NQVNLKDksIDQpCj4gCj4gU2hv dWxkbid0IG5lZWQgdGhlc2UgYXQgYWxsOyBzZWUgYmVsb3cuCj4gCj4+ICtzdHJ1Y3QgZHdjX3Bj aWVfaW5mb190YWJsZSB7Cj4+ICsJdTMyIGJkZjsKPj4gKwl1MzIgY2FwX3BvczsKPiAKPiBXb3Vs ZCBiZSB1c2VmdWwgdG8gbmFtZSB0aGlzICJyYXNfZGVzIiBvciBzaW1pbGFyIHNvIHdlIGhhdmUg YSBoaW50Cj4gYWJvdXQgd2hhdCB3ZSdyZSByZWFkaW5nL3dyaXRpbmcgd2hlbiB1c2luZyAicGNp ZV9pbmZvLT5jYXBfcG9zIiBiZWxvdy4KCkdvb2QgaWRlYSwgd2lsbCB1c2UgcmFzX2RlcyBpbnN0 ZWFkIGluIG5leHQgdmVyc2lvbi4KCj4gCj4+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZHdjX3BjaWVfcG11X2NwdW1hc2tfYXR0ciA9Cj4+ICtfX0FUVFIoY3B1bWFzaywgMDQ0NCwg ZHdjX3BjaWVfcG11X2NwdW1hc2tfc2hvdywgTlVMTCk7Cj4gCj4gREVWSUNFX0FUVFJfUk8oKT8K PiAKPj4gKyNkZWZpbmUgX2R3Y19wY2llX2Zvcm1hdF9hdHRyKF9uYW1lLCBfY2ZnLCBfZmxkKQkJ CQlcCj4+ICsJKCYoKHN0cnVjdCBkd2NfcGNpZV9mb3JtYXRfYXR0cltdKSB7ewkJCQlcCj4+ICsJ CS5hdHRyID0gX19BVFRSKF9uYW1lLCAwNDQ0LCBkd2NfcGNpZV9wbXVfZm9ybWF0X3Nob3csIE5V TEwpLAlcCj4gCj4gRGl0dG8uCj4gCj4+ICsjZGVmaW5lIERXQ19QQ0lFX0VWRU5UX0FUVFIoX25h bWUsIF90eXBlLCBfZXZlbnRpZCwgX2xhbmUpCQlcCj4+ICsJKCYoKHN0cnVjdCBkd2NfcGNpZV9l dmVudF9hdHRyW10pIHt7CQkJCVwKPj4gKwkJLmF0dHIgPSBfX0FUVFIoX25hbWUsIDA0NDQsIGR3 Y19wY2llX2V2ZW50X3Nob3csIE5VTEwpLAlcCj4gCj4gRGl0dG8uCgpERVZJQ0VfQVRUUl9STyBt YXkgYSBnb29kIGNob2ljZS4gQnV0IGRvZXMgaXQgZml0IHRoZSBjb2RlIHN0eWxlIHRvIHVzZQpE RVZJQ0VfQVRUUl9STyBpbiBkcml2ZXJzL3BlcmY/IEFzIGZhciBhcyBrbm93LCBDQ04sIENDSSwg U01NVSwKcWNvbV9sMl9wbXUgdXNlICJzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSIgZGlyZWN0bHku Cgo+IAo+PiArc3RhdGljIGludCBkd2NfcGNpZV9wbXVfZGlzY292ZXIoc3RydWN0IGR3Y19wY2ll X3BtdV9wcml2ICpwcml2KQo+PiArewo+PiArCWludCB2YWwsIHdoZXJlLCBpbmRleCA9IDA7Cj4+ ICsJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMOwo+PiArCXN0cnVjdCBkd2NfcGNpZV9pbmZv X3RhYmxlICpwY2llX2luZm87Cj4+ICsKPj4gKwlwcml2LT5wY2llX3RhYmxlID0KPj4gKwkgICAg ZGV2bV9rY2FsbG9jKHByaXYtPmRldiwgUlBfTlVNX01BWCwgc2l6ZW9mKCpwY2llX2luZm8pLCBH RlBfS0VSTkVMKTsKPj4gKwlpZiAoIXByaXYtPnBjaWVfdGFibGUpCj4+ICsJCXJldHVybiAtRUlO VkFMOwo+PiArCj4+ICsJcGNpZV9pbmZvID0gcHJpdi0+cGNpZV90YWJsZTsKPj4gKwl3aGlsZSAo KHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBwZGV2KSkgIT0g TlVMTCAmJgo+PiArCSAgICAgICBpbmRleCA8IFJQX05VTV9NQVgpIHsKPj4gKwkJaWYgKCFwY2lf ZGV2X2lzX3Jvb3Rwb3J0KHBkZXYpKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJcGNpZV9p bmZvW2luZGV4XS5iZGYgPSBkd2NfcGNpZV9nZXRfYmRmKHBkZXYpOwo+PiArCQlwY2llX2luZm9b aW5kZXhdLnBkZXYgPSBwZGV2Owo+PiArCj4+ICsJCWlmIChkd2NfcGNpZV9maW5kX3Jhc19kZXNf Y2FwX3Bvc2l0aW9uKHBkZXYsICZ3aGVyZSkpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQlw Y2llX2luZm9baW5kZXhdLmNhcF9wb3MgPSB3aGVyZTsKPj4gKwo+PiArCQlwY2lfcmVhZF9jb25m aWdfZHdvcmQocGRldiwKPj4gKwkJCQlwZGV2LT5wY2llX2NhcCArIERXQ19QQ0lFX0xJTktfQ0FQ QUJJTElUSUVTX1JFRywKPj4gKwkJCQkmdmFsKTsKPj4gKwkJcGNpZV9pbmZvW2luZGV4XS5udW1f bGFuZXMgPQo+PiArCQkJKHZhbCAmIERXQ19QQ0lFX0xBTkVfTUFTSykgPj4gRFdDX1BDSUVfTEFO RV9TSElGVDsKPiAKPiBJIHRoaW5rIHlvdSBjYW4gdXNlIHBjaWVfZ2V0X3dpZHRoX2NhcCgpIGhl cmUuCgpZb3UgYXJlIHJpZ2h0LCB3aWxsIHVzZSBwY2llX2dldF93aWR0aF9jYXAoKSBpbnN0ZWFk IGluIG5leHQgdmVyc2lvbi4KCj4+ICtzdGF0aWMgaW50IGR3Y19wY2llX3BtdV9zZXRfZXZlbnRf aWQoc3RydWN0IGR3Y19wY2llX2luZm9fdGFibGUgKnBjaWVfaW5mbywKPj4gKwkJCQkgICAgIGlu dCBldmVudF9pZCkKPj4gK3sKPj4gKwlpbnQgcmV0Owo+PiArCXUzMiB2YWw7Cj4+ICsKPj4gKwly ZXQgPSBkd2NfcGNpZV9wbXVfcmVhZF9kd29yZChwY2llX2luZm8sIERXQ19QQ0lFX0VWRU5UX0NO VF9DVFJMLCAmdmFsKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCXBjaV9lcnIocGNpZV9pbmZvLT5w ZGV2LCAiUENJZSByZWFkIGZhaWxcbiIpOwo+IAo+IE1heWJlICNkZWZpbmUgZGV2X2ZtdCBhYm92 ZSB0byBhZGQgYSBwcmVmaXggdG8gdGhlc2UgbWVzc2FnZXM/Cj4gT3RoZXJ3aXNlIEkgdGhpbmsg dGhleSB3aWxsIGxvb2sgbGlrZToKPiAKPiAgIHBjaWVwb3J0IDAwMDA6MDA6MWMuMDogUENJZSBy ZWFkIGZhaWwKPiAKPiB3aGljaCBzdWdnZXN0cyBpdCdzIHJlbGF0ZWQgdG8gcGNpZXBvcnQsIGJ1 dCB0aGF0J3MgdGhlIHdyb25nIHBsYWNlIHRvCj4gbG9vay4KPiAKPiBJIHRoaW5rIGV2ZXJ5IGNh bGxlciBvZiBkd2NfcGNpZV9wbXVfcmVhZF9kd29yZCgpIG1ha2VzIHRoZSBzYW1lIGNoZWNrCj4g YW5kIHByaW50cyB0aGUgc2FtZSBtZXNzYWdlOyBtYXliZSB0aGUgbWVzc2FnZSBzaG91bGQgYmUg bW92ZWQgaW5zaWRlCj4gZHdjX3BjaWVfcG11X3JlYWRfZHdvcmQoKT8KPiAKPiBTYW1lIHdpdGgg ZHdjX3BjaWVfcG11X3dyaXRlX2R3b3JkKCk7IG1vdmluZyB0aGUgbWVzc2FnZSB0aGVyZSB3b3Vs ZAo+IHNpbXBsaWZ5IGFsbCBjYWxsZXJzLgoKSSB3b3VsZCBsaWtlIHRvIHdyYXAgZHdjX3BjaWVf cG11X3t3cml0ZX1fZHdvcmQgb3V0LCB1c2UgcGNpX3tyZWFkfV9jb25maWdfZHdvcmQKYW5kIGRy b3AgdGhlIHNuYWl0eSBjaGVjayBvZiByZXR1cm4gdmFsdWUgYXMgSm9uYXRoYW4gc3VnZ2VzdHMu CkhvdyBkaWQgeW91IGxpa2UgaXQ/Cgo+IAo+PiArc3RhdGljIGludCBkd2NfcGNpZV9wbXVfZXZl bnRfZW5hYmxlKHN0cnVjdCBkd2NfcGNpZV9pbmZvX3RhYmxlICpwY2llX2luZm8sCj4+ICsJCQkJ ICAgICB1MzIgZW5hYmxlKQo+PiArewo+PiArCXUzMiByZXQ7Cj4+ICsJdTMyIHZhbDsKPj4gKwo+ PiArCXJldCA9IGR3Y19wY2llX3BtdV9yZWFkX2R3b3JkKHBjaWVfaW5mbywgRFdDX1BDSUVfRVZF TlRfQ05UX0NUUkwsICZ2YWwpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJcGNpX2VycihwY2llX2lu Zm8tPnBkZXYsICJQQ0llIHJlYWQgZmFpbFxuIik7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+ PiArCj4+ICsJdmFsICY9IH4oRFdDX1BDSUVfX0NOVF9FTkFCTEVfTUFTSyk7Cj4gCj4gU3VwZXJm bHVvdXMgcGFyZW5zLgoKV2lsbCB1c2UgcmVjYXAgaW4gbmV4dCB2ZXJzaW9uLgoKPiAKPj4gK3N0 YXRpYyBpbnQgZHdjX3BjaWVfcG11X2Jhc2VfdGltZV9hZGRfcHJlcGFyZShzdHJ1Y3QgZHdjX3Bj aWVfaW5mb190YWJsZQo+PiArCQkJCQkgICAgICAqcGNpZV9pbmZvLCB1MzIgZXZlbnRfaWQpCj4+ ICt7Cj4+ICsJdTMyIHJldDsKPj4gKwl1MzIgdmFsOwo+PiArCj4+ICsJcmV0ID0gZHdjX3BjaWVf cG11X3JlYWRfZHdvcmQocGNpZV9pbmZvLAo+PiArCQkJCSAgICAgIERXQ19QQ0lFX1RJTUVfQkFT RURfQU5BTFlTSVNfQ1RSTCwgJnZhbCk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlwY2lfZXJyKHBj aWVfaW5mby0+cGRldiwgIlBDSWUgcmVhZCBmYWlsXG4iKTsKPj4gKwkJcmV0dXJuIHJldDsKPj4g Kwl9Cj4+ICsKPj4gKwl2YWwgJj0gfkRXQ19QQ0lFX19USU1FX0JBU0VEX1JFUE9SVF9TRUxFQ1Rf TUFTSzsKPj4gKwl2YWwgfD0gZXZlbnRfaWQgPDwgRFdDX1BDSUVfX1RJTUVfQkFTRURfUkVQT1JU X1NFTEVDVF9TSElGVDsKPj4gKwl2YWwgJj0gfkRXQ19QQ0lFX19USU1FX0JBU0VEX0RVUkFUSU9O X1NFTEVDVDsKPj4gKwo+PiArCS8qCj4+ICsJICogVElNRV9CQVNFRF9BTkFMWVNJU19EQVRBX1JF RyBpcyBhIDY0IGJpdCByZWdpc3Rlciwgd2UgY2FuIHNhZmVseQo+PiArCSAqIHVzZSBpdCB3aXRo IGFueSBtYW51YWxseSBjb250cm9sbGVyZWQgZHVyYXRpb24uCj4gCj4gcy9jb250cm9sbGVyZWQv Y29udHJvbGxlZC8gPyAgTm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zLiAgTWF5YmUgdGhhdAo+IDY0 IGJpdHMgaXMgd2lkZSBlbm91Z2ggeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgcm9sbG92 ZXI/CgpZZXMsIDY0IGJpdHMgaXMgd2lkZSBlbm91Z2ggc28gd2UgZG8gbm90IG5lZWQgdG8gd29y cnkgYWJvdXQgcm9sbG92ZXIuClNvcnJ5IGZvciB0aGlzIHR5cG8uCgo+PiArc3RhdGljIHN0cnVj dCBkd2NfcGNpZV9pbmZvX3RhYmxlICpwbXVfdG9fcGNpZV9pbmZvKHN0cnVjdCBwbXUgKnBtdSkK Pj4gK3sKPj4gKwlzdHJ1Y3QgZHdjX3BjaWVfaW5mb190YWJsZSAqcGNpZV9pbmZvOwo+PiArCXN0 cnVjdCBkd2NfcGNpZV9wbXUgKnBjaWVfcG11ID0gdG9fcGNpZV9wbXUocG11KTsKPj4gKwo+PiAr CXBjaWVfaW5mbyA9IGNvbnRhaW5lcl9vZihwY2llX3BtdSwgc3RydWN0IGR3Y19wY2llX2luZm9f dGFibGUsIHBjaWVfcG11KTsKPj4gKwlpZiAocGNpZV9pbmZvID09IE5VTEwpCj4+ICsJCXBjaV9l cnIocGNpZV9pbmZvLT5wZGV2LCAiQ2FuJ3QgZ2V0IHBjaWUgaW5mb1xuIik7Cj4gCj4gSXQgc2hv dWxkbid0IGJlIHBvc3NpYmxlIHRvIGdldCBoZXJlIGZvciBhIHBtdSB3aXRoIG5vIHBjaWVfaW5m bywgYW5kCj4gY2FsbGVycyBkb24ndCBjaGVjayBmb3IgYSBOVUxMIHBvaW50ZXIgcmV0dXJuIHZh bHVlIGJlZm9yZQo+IGRlcmVmZXJlbmNpbmcgaXQsIHNvIEkgZ3Vlc3MgYWxsIHRoaXMgYWRkcyBp cyBhbiBlcnJvciBtZXNzYWdlIGJlZm9yZQo+IGEgTlVMTCBwb2ludGVyIG9vcHM/ICBOb3Qgc3Vy ZSB0aGUgY29kZSBjbHV0dGVyIGlzIHdvcnRoIGl0LgoKRG8geW91IG1lYW4gdG8gZHJvcCB0aGUg c25haXR5IGNoZWNrIG9mIGNvbnRhaW5lcl9vZj8KCj4+ICsJcmV0dXJuIHBjaWVfaW5mbzsKPj4g K30KPiAKPj4gK3N0YXRpYyBpbnQgZHdjX3BjaWVfcG11X2V2ZW50X2luaXQoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50KQo+PiArewo+PiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZl bnQtPmh3Owo+PiArCXN0cnVjdCBkd2NfcGNpZV9wbXUgKnBjaWVfcG11ID0gdG9fcGNpZV9wbXUo ZXZlbnQtPnBtdSk7Cj4+ICsJc3RydWN0IHBlcmZfZXZlbnQgKnNpYmxpbmc7Cj4+ICsKPj4gKwlp ZiAoZXZlbnQtPmF0dHIudHlwZSAhPSBldmVudC0+cG11LT50eXBlKQo+PiArCQlyZXR1cm4gLUVO T0VOVDsKPj4gKwo+PiArCWlmIChod2MtPnNhbXBsZV9wZXJpb2QpIHsKPj4gKwkJZGV2X2RiZyhw Y2llX3BtdS0+ZGV2LCAiU2FtcGxpbmcgbm90IHN1cHBvcnRlZFxuIik7Cj4+ICsJCXJldHVybiAt RU9QTk9UU1VQUDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAoZXZlbnQtPmNwdSA8IDApIHsKPj4gKwkJ ZGV2X2RiZyhwY2llX3BtdS0+ZGV2LCAiUGVyLXRhc2sgbW9kZSBub3Qgc3VwcG9ydGVkXG4iKTsK Pj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+PiArCX0KPj4gKwo+PiArCWV2ZW50LT5jcHUgPSBw Y2llX3BtdS0+b25fY3B1Owo+PiArCj4+ICsJaWYgKGV2ZW50LT5ncm91cF9sZWFkZXIgIT0gZXZl bnQgJiYKPj4gKwkgICAgIWlzX3NvZnR3YXJlX2V2ZW50KGV2ZW50LT5ncm91cF9sZWFkZXIpKSB7 Cj4+ICsJCWRldl9kYmcocGNpZV9wbXUtPmRldiwgIkRyaXZlIHdheSBvbmx5IGFsbG93IG9uZSBl dmVudCFcbiIpOwo+IAo+ICJEcml2ZSB3YXkiPyAgLUVOT1BBUlNFIGZvciBtZSA6KQoKR29vZCBj YXRjaCwgaXRzIGEgdHlwbyBhbmQgSSB1c2VkIHRoaXMgaW4gRERSIERyaXZld2F5IFBNVSBkZWJ1 Zy4gV2lsbCBkcm9wCml0IGluIG5leHQgdmVyc2lvbi4KCj4gCj4+ICsJCXJldHVybiAtRUlOVkFM Owo+PiArCX0KPj4gKwo+PiArCWZvcl9lYWNoX3NpYmxpbmdfZXZlbnQoc2libGluZywgZXZlbnQt Pmdyb3VwX2xlYWRlcikgewo+PiArCQlpZiAoc2libGluZyAhPSBldmVudCAmJiAhaXNfc29mdHdh cmVfZXZlbnQoc2libGluZykpIHsKPj4gKwkJCWRldl9kYmcocGNpZV9wbXUtPmRldiwgIkRyaXZl IHdheSBldmVudCBub3QgYWxsb3dlZCFcbiIpOwo+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJ CX0KPj4gKwl9Cj4gCj4+ICtzdGF0aWMgdm9pZCBkd2NfcGNpZV9wbXVfc2V0X3BlcmlvZChzdHJ1 Y3QgaHdfcGVyZl9ldmVudCAqaHdjKQo+PiArewo+PiArCXU2NCBuZXcgPSAwOwo+IAo+IFN1cGVy Zmx1b3VzIHZhcmlhYmxlLgo+IAo+PiArCWxvY2FsNjRfc2V0KCZod2MtPnByZXZfY291bnQsIG5l dyk7Cj4+ICt9CgpJIHdpbGwgc2V0IHdpdGggMCBpbnN0ZWFkIGluIG5leHQgdmVyc2lvbi4KCj4g Cj4+ICtzdGF0aWMgaW50IF9fZHdjX3BjaWVfcG11X3Byb2JlKHN0cnVjdCBkd2NfcGNpZV9wbXVf cHJpdiAqcHJpdiwKPj4gKwkJCQlzdHJ1Y3QgZHdjX3BjaWVfaW5mb190YWJsZSAqcGNpZV9pbmZv KQo+PiArewo+PiArCWludCByZXQ7Cj4+ICsJY2hhciAqbmFtZTsKPj4gKwlzdHJ1Y3QgZHdjX3Bj aWVfcG11ICpwY2llX3BtdTsKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICsKPj4gKwlpZiAo IXBjaWVfaW5mbyB8fCAhcGNpZV9pbmZvLT5wZGV2KSB7Cj4+ICsJCXBjaV9lcnIocGNpZV9pbmZv LT5wZGV2LCAiSW5wdXQgcGFyYW1ldGVyIGlzIGludmFsaWRcbiIpOwo+IAo+IFRoZXJlIGFyZSBh IGxvdCBvZiAiSW5wdXQgcGFyYW1ldGVyIGlzIGludmFsaWQiIG1lc3NhZ2VzLiAgSWYgc29tZWJv ZHkKPiBzZWVzIHRoYXQsIHRoZXJlJ3Mgbm8gaGludCBhYm91dCB3aGljaCBvbmUgdG8gbG9vayBh dC4gIE1lc3NhZ2VzIHRoYXQKPiBhcmUgY29uc3RhbnQgc3RyaW5ncyBhcmUgdXN1YWxseSBhIGhp bnQgdGhhdCB0aGV5IGNvdWxkIGluY2x1ZGUgbW9yZQo+IGluZm9ybWF0aW9uLgoKSSBzZWUgeW91 ciBwb2ludHMuIFdpbGwgZ2l2ZSBhIG1vcmUgYWNjdXJhdGUgaGludC4KCj4+ICtzdGF0aWMgaW50 IGR3Y19wY2llX3BtdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+ PiArCWludCByZXQgPSAwOwo+PiArCWludCBwY2llX2luZGV4Owo+PiArCXN0cnVjdCBkd2NfcGNp ZV9wbXVfcHJpdiAqcHJpdjsKPj4gKwo+PiArCXByaXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRl diwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFwcml2KQo+PiArCQlyZXR1 cm4gLUVOT01FTTsKPj4gKwlwcml2LT5kZXYgPSAmcGRldi0+ZGV2Owo+PiArCXBsYXRmb3JtX3Nl dF9kcnZkYXRhKHBkZXYsIHByaXYpOwo+PiArCj4+ICsJLyogSWYgUE1VIGlzIG5vdCBzdXBwb3J0 IG9uIGN1cnJlbnQgcGxhdGZvcm0sIGtlZXAgc2xpZW50ICovCj4gCj4gcy9ub3Qgc3VwcG9ydC9u b3Qgc3VwcG9ydGVkLwo+IHMvc2xpZW50L3NpbGVudC8KClNvcnJ5IGZvciB0aGVzZSB0eXBvcywg d2lsbCBmaXggaW4gbmV4dCB2ZXJzaW9uLgoKPiAKPiBCam9ybgoKVGhhbmsgeW91IGZvciB5b3Vy IHZhbHVhYmxlIGNvbW1lbnRzLgoKQmVzdCBSZWdhcmRzLApTaHVhaQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK