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 smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 0CA1AC433F5 for ; Tue, 12 Apr 2022 07:41:25 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id B5F0960E36; Tue, 12 Apr 2022 07:41:24 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id C4Y3h-Rv0qza; Tue, 12 Apr 2022 07:41:23 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 38B1360881; Tue, 12 Apr 2022 07:41:23 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C73F7C0033; Tue, 12 Apr 2022 07:41:22 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 34B7BC002C for ; Tue, 12 Apr 2022 07:41:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 119BE41635 for ; Tue, 12 Apr 2022 07:41:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RKbhKV1KNslL for ; Tue, 12 Apr 2022 07:41:19 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by smtp4.osuosl.org (Postfix) with ESMTPS id 682BB415EB for ; Tue, 12 Apr 2022 07:41:19 +0000 (UTC) Received: from canpemm500009.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KcyJp6drzzFpnS; Tue, 12 Apr 2022 15:38:50 +0800 (CST) Received: from [10.67.102.169] (10.67.102.169) by canpemm500009.china.huawei.com (7.192.105.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 12 Apr 2022 15:41:14 +0800 Subject: Re: [PATCH v7 5/7] perf tool: Add support for HiSilicon PCIe Tune and Trace device driver To: John Garry , Yicong Yang , , , , , , , , , , , , , , , , , , , , , , , , References: <20220407125841.3678-1-yangyicong@hisilicon.com> <20220407125841.3678-6-yangyicong@hisilicon.com> <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> Message-ID: Date: Tue, 12 Apr 2022 15:41:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> X-Originating-IP: [10.67.102.169] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected Cc: zhangshaokun@hisilicon.com, liuqi115@huawei.com, linuxarm@huawei.com, prime.zeng@huawei.com X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Yicong Yang via iommu Reply-To: Yicong Yang Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gMjAyMi80LzEyIDE6MTksIEpvaG4gR2Fycnkgd3JvdGU6Cj4gT24gMDcvMDQvMjAyMiAxMzo1 OCwgWWljb25nIFlhbmcgd3JvdGU6Cj4+IEZyb206IFFpIExpdSA8bGl1cWkxMTVAaHVhd2VpLmNv bT4KPj4KPj4gJ3BlcmYgcmVjb3JkJyBhbmQgJ3BlcmYgcmVwb3J0IC0tZHVtcC1yYXctdHJhY2Un IHN1cHBvcnRlZCBpbiB0aGlzCj4+IHBhdGNoLgo+Pgo+PiBFeGFtcGxlIHVzYWdlOgo+Pgo+PiBP dXRwdXQgd2lsbCBjb250YWluIHJhdyBQVFQgZGF0YSBhbmQgaXRzIHRleHR1YWwgcmVwcmVzZW50 YXRpb24sIHN1Y2gKPj4gYXM6Cj4+Cj4+IDAgMCAweDU4MTAgWzB4MzBdOiBQRVJGX1JFQ09SRF9B VVhUUkFDRSBzaXplOiAweDQwMDAwMMKgIG9mZnNldDogMAo+PiByZWY6IDB4YTVkNTBjNzI1wqAg aWR4OiAwwqAgdGlkOiAtMcKgIGNwdTogMAo+PiAuCj4+IC4gLi4uIEhJU0kgUFRUIGRhdGE6IHNp emUgNDE5NDMwNCBieXRlcwo+PiAuwqAgMDAwMDAwMDA6IDAwIDAwIDAwIDAwwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQcmVm aXgKPj4gLsKgIDAwMDAwMDA0OiAwOCAyMCAwMCA2MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSGVhZGVyIERXMAo+PiAuwqAg MDAwMDAwMDg6IGZmIDAyIDAwIDAxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFkZXIgRFcxCj4+IC7CoCAwMDAwMDAwYzog MjAgMDggMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEhlYWRlciBEVzIKPj4gLsKgIDAwMDAwMDEwOiAxMCBlNyA0NCBh YsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgSGVhZGVyIERXMwo+PiAuwqAgMDAwMDAwMTQ6IDJhIGE4IDFlIDAxwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBU aW1lCj4+IC7CoCAwMDAwMDAyMDogMDAgMDAgMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFByZWZpeAo+PiAuwqAgMDAw MDAwMjQ6IDAxIDAwIDAwIDYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFkZXIgRFcwCj4+IC7CoCAwMDAwMDAyODogMGYg MWUgMDAgMDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEhlYWRlciBEVzEKPj4gLsKgIDAwMDAwMDJjOiAwNCAwMCAwMCAwMMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgSGVhZGVyIERXMgo+PiAuwqAgMDAwMDAwMzA6IDQwIDAwIDgxIDAywqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFk ZXIgRFczCj4+IC7CoCAwMDAwMDAzNDogZWUgMDIgMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRpbWUKPj4gLi4uLgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBRaSBMaXUgPGxpdXFpMTE1QGh1YXdlaS5jb20+Cj4+IFNpZ25l ZC1vZmYtYnk6IFlpY29uZyBZYW5nIDx5YW5neWljb25nQGhpc2lsaWNvbi5jb20+Cj4+IC0tLQo+ PiDCoCB0b29scy9wZXJmL2FyY2gvYXJtL3V0aWwvYXV4dHJhY2UuY8KgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCA3NiArKysrKy0KPj4gwqAgdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKwo+PiDCoCB0b29scy9wZXJmL2Fy Y2gvYXJtNjQvdXRpbC9CdWlsZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0K Pj4gwqAgdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvaGlzaV9wdHQuY8KgwqDCoMKgwqDCoMKg wqAgfCAxOTUgKysrKysrKysrKysrKysrKwo+PiDCoCB0b29scy9wZXJmL3V0aWwvQnVpbGTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+ IMKgIHRvb2xzL3BlcmYvdXRpbC9hdXh0cmFjZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNCArCj4+IMKgIHRvb2xzL3BlcmYvdXRpbC9hdXh0cmFjZS5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHRvb2xz L3BlcmYvdXRpbC9oaXNpLXB0dC1kZWNvZGVyL0J1aWxkwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSAr Cj4+IMKgIC4uLi9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBrdC1kZWNvZGVyLmPCoMKgIHwg MTcwICsrKysrKysrKysrKysrCj4+IMKgIC4uLi9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBr dC1kZWNvZGVyLmjCoMKgIHzCoCAyOCArKysKPj4gwqAgdG9vbHMvcGVyZi91dGlsL2hpc2lfcHR0 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDIxOCArKysrKysrKysr KysrKysrKysKPj4gwqAgdG9vbHMvcGVyZi91dGlsL2hpc2lfcHR0LmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKysrCj4+IMKgIDEyIGZpbGVzIGNoYW5nZWQs IDcyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvaGlzaV9wdHQuYwo+PiDCoCBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi91dGlsL2hpc2ktcHR0LWRlY29kZXIvQnVpbGQKPj4gwqAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0 LXBrdC1kZWNvZGVyLmMKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9o aXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBrdC1kZWNvZGVyLmgKPj4gwqAgY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9oaXNpX3B0dC5jCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9wZXJmL3V0aWwvaGlzaV9wdHQuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVy Zi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMgYi90b29scy9wZXJmL2FyY2gvYXJtL3V0aWwvYXV4 dHJhY2UuYwo+PiBpbmRleCA1ZmM2YTJhM2RiYzUuLjM5M2Y1NzU3YzAzOSAxMDA2NDQKPj4gLS0t IGEvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMKPj4gKysrIGIvdG9vbHMvcGVy Zi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMKPj4gQEAgLTQsOSArNCwxMSBAQAo+PiDCoMKgICog QXV0aG9yOiBNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgo+PiDC oMKgICovCj4+IMKgICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4+IMKgICNpbmNsdWRlIDxzdGRib29s Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9jb3Jlc2lnaHQtcG11Lmg+Cj4+IMKgICNpbmNsdWRl IDxsaW51eC96YWxsb2MuaD4KPj4gKyNpbmNsdWRlIDxhcGkvZnMvZnMuaD4KPj4gwqAgwqAgI2lu Y2x1ZGUgIi4uLy4uLy4uL3V0aWwvYXV4dHJhY2UuaCIKPj4gwqAgI2luY2x1ZGUgIi4uLy4uLy4u L3V0aWwvZGVidWcuaCIKPj4gQEAgLTE0LDYgKzE2LDcgQEAKPj4gwqAgI2luY2x1ZGUgIi4uLy4u Ly4uL3V0aWwvcG11LmgiCj4+IMKgICNpbmNsdWRlICJjcy1ldG0uaCIKPj4gwqAgI2luY2x1ZGUg ImFybS1zcGUuaCIKPj4gKyNpbmNsdWRlICJoaXNpX3B0dC5oIgo+PiDCoCDCoCBzdGF0aWMgc3Ry dWN0IHBlcmZfcG11ICoqZmluZF9hbGxfYXJtX3NwZV9wbXVzKGludCAqbnJfc3BlcywgaW50ICpl cnIpCj4+IMKgIHsKPj4gQEAgLTUwLDYgKzUzLDU4IEBAIHN0YXRpYyBzdHJ1Y3QgcGVyZl9wbXUg KipmaW5kX2FsbF9hcm1fc3BlX3BtdXMoaW50ICpucl9zcGVzLCBpbnQgKmVycikKPj4gwqDCoMKg wqDCoCByZXR1cm4gYXJtX3NwZV9wbXVzOwo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgc3RydWN0IHBl cmZfcG11ICoqZmluZF9hbGxfaGlzaV9wdHRfcG11cyhpbnQgKm5yX3B0dHMsIGludCAqZXJyKQo+ PiArewo+PiArwqDCoMKgIGNvbnN0IGNoYXIgKnN5c2ZzID0gc3lzZnNfX21vdW50cG9pbnQoKTsK Pj4gK8KgwqDCoCBzdHJ1Y3QgcGVyZl9wbXUgKipoaXNpX3B0dF9wbXVzID0gTlVMTDsKPj4gK8Kg wqDCoCBzdHJ1Y3QgZGlyZW50ICpkZW50Owo+PiArwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07 Cj4+ICvCoMKgwqAgRElSICpkaXIgPSBOVUxMOwo+PiArwqDCoMKgIGludCBpZHggPSAwOwo+PiAr Cj4+ICvCoMKgwqAgc25wcmludGYocGF0aCwgUEFUSF9NQVgsICIlcyIgRVZFTlRfU09VUkNFX0RF VklDRV9QQVRILCBzeXNmcyk7Cj4+ICvCoMKgwqAgZGlyID0gb3BlbmRpcihwYXRoKTsKPj4gK8Kg wqDCoCBpZiAoIWRpcikgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJjYW4ndCByZWFkIGRp cmVjdG9yeSAnJXMnXG4iLCBFVkVOVF9TT1VSQ0VfREVWSUNFX1BBVEgpOwo+PiArwqDCoMKgwqDC oMKgwqAgKmVyciA9IC1FSU5WQUw7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4gK8Kg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCB3aGlsZSAoKGRlbnQgPSByZWFkZGlyKGRpcikpKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoc3Ryc3RyKGRlbnQtPmRfbmFtZSwgSElTSV9QVFRfUE1VX05B TUUpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKm5yX3B0dHMpKys7Cj4+ICvCoMKgwqAg fQo+PiArCj4+ICvCoMKgwqAgaWYgKCEoKm5yX3B0dHMpKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290 byBvdXQ7Cj4+ICsKPj4gK8KgwqDCoCBoaXNpX3B0dF9wbXVzID0gemFsbG9jKHNpemVvZihzdHJ1 Y3QgcGVyZl9wbXUgKikgKiAoKm5yX3B0dHMpKTsKPj4gK8KgwqDCoCBpZiAoIWhpc2lfcHR0X3Bt dXMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByX2VycigiaGlzaV9wdHQgYWxsb2MgZmFpbGVkXG4i KTsKPj4gK8KgwqDCoMKgwqDCoMKgICplcnIgPSAtRU5PTUVNOwo+IAo+IHVzaW5nIFBUUl9FUlIg c2VlbXMgYmV0dGVyLCBpZiBwb3NzaWJsZQo+IAoKb2sgd2lsbCBjaGFuZ2UgdG8gdGhhdC4gKmVy ciA9IC1FTk9NRU0gaXMgdXNlZCBoZXJlIHRvIGtlZXAgY29uc2lzdGVuY2Ugd2l0aAp3aGF0IHNw ZSBkb2VzLgoKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgIH0KPj4gKwo+ PiArwqDCoMKgIHJld2luZGRpcihkaXIpOwo+PiArwqDCoMKgIHdoaWxlICgoZGVudCA9IHJlYWRk aXIoZGlyKSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzdHJzdHIoZGVudC0+ZF9uYW1lLCBI SVNJX1BUVF9QTVVfTkFNRSkgJiYgaWR4IDwgKCpucl9wdHRzKSkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBoaXNpX3B0dF9wbXVzW2lkeF0gPSBwZXJmX3BtdV9fZmluZChkZW50LT5kX25h bWUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaGlzaV9wdHRfcG11c1tpZHhdKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcyKCIlcyAlZDogaGlz aV9wdHRfcG11ICVkIHR5cGUgJWQgbmFtZSAlc1xuIiwKPiAKPiBkbyB5b3UgcmVhbGx5IG5lZWQg dGhpcz8KPiAKCkkgYXNrZWQgUWkgbWF5YmUgaXQncyB1bm5lY2Vzc2FyeSwgYnV0IHRvIGtlZXAg Y29uc2lzdGVuY2UgbGlrZSBhcm0gc3BlLgoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF9fZnVuY19fLCBfX0xJTkVfXywgaWR4LAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV9wdHRfcG11c1tpZHhdLT50eXBlLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV9wdHRfcG11c1tpZHhdLT5u YW1lKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlkeCsrOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4g K8KgwqDCoCB9Cj4+ICsKPj4gK291dDoKPj4gK8KgwqDCoCBjbG9zZWRpcihkaXIpOwo+PiArwqDC oMKgIHJldHVybiBoaXNpX3B0dF9wbXVzOwo+PiArfQo+PiArCj4+IMKgIHN0cnVjdCBhdXh0cmFj ZV9yZWNvcmQKPj4gwqAgKmF1eHRyYWNlX3JlY29yZF9faW5pdChzdHJ1Y3QgZXZsaXN0ICpldmxp c3QsIGludCAqZXJyKQo+PiDCoCB7Cj4+IEBAIC01Nyw4ICsxMTIsMTIgQEAgc3RydWN0IGF1eHRy YWNlX3JlY29yZAo+PiDCoMKgwqDCoMKgIHN0cnVjdCBldnNlbCAqZXZzZWw7Cj4+IMKgwqDCoMKg wqAgYm9vbCBmb3VuZF9ldG0gPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgcGVyZl9wbXUg KmZvdW5kX3NwZSA9IE5VTEw7Cj4+ICvCoMKgwqAgc3RydWN0IHBlcmZfcG11ICpmb3VuZF9wdHQg PSBOVUxMOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBwZXJmX3BtdSAqKmFybV9zcGVfcG11cyA9IE5V TEw7Cj4+ICvCoMKgwqAgc3RydWN0IHBlcmZfcG11ICoqaGlzaV9wdHRfcG11cyA9IE5VTEw7Cj4+ ICsKPj4gwqDCoMKgwqDCoCBpbnQgbnJfc3BlcyA9IDA7Cj4+ICvCoMKgwqAgaW50IG5yX3B0dHMg PSAwOwo+PiDCoMKgwqDCoMKgIGludCBpID0gMDsKPj4gwqAgwqDCoMKgwqDCoCBpZiAoIWV2bGlz dCkKPj4gQEAgLTY2LDEzICsxMjUsMTQgQEAgc3RydWN0IGF1eHRyYWNlX3JlY29yZAo+PiDCoCDC oMKgwqDCoMKgIGNzX2V0bV9wbXUgPSBwZXJmX3BtdV9fZmluZChDT1JFU0lHSFRfRVRNX1BNVV9O QU1FKTsKPj4gwqDCoMKgwqDCoCBhcm1fc3BlX3BtdXMgPSBmaW5kX2FsbF9hcm1fc3BlX3BtdXMo Jm5yX3NwZXMsIGVycik7Cj4+ICvCoMKgwqAgaGlzaV9wdHRfcG11cyA9IGZpbmRfYWxsX2hpc2lf cHR0X3BtdXMoJm5yX3B0dHMsIGVycik7Cj4+IMKgIMKgwqDCoMKgwqAgZXZsaXN0X19mb3JfZWFj aF9lbnRyeShldmxpc3QsIGV2c2VsKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY3NfZXRt X3BtdSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBldnNlbC0+Y29yZS5hdHRyLnR5 cGUgPT0gY3NfZXRtX3BtdS0+dHlwZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm91 bmRfZXRtID0gdHJ1ZTsKPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGlmICghbnJfc3BlcyB8fCBmb3Vu ZF9zcGUpCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKCFucl9zcGVzIHx8IGZvdW5kX3NwZSkgJiYg KCFucl9wdHRzIHx8IGZvdW5kX3B0dCkpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnRpbnVlOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX3NwZXM7 IGkrKykgewo+PiBAQCAtODEsMTEgKzE0MSwxOCBAQCBzdHJ1Y3QgYXV4dHJhY2VfcmVjb3JkCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKg wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX3B0dHM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoZXZzZWwtPmNvcmUuYXR0ci50eXBlID09IGhpc2lfcHR0X3BtdXNbaV0t PnR5cGUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3VuZF9wdHQgPSBo aXNpX3B0dF9wbXVzW2ldOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGZyZWUoYXJtX3NwZV9wbXVzKTsKPiAKPiBkbyB5b3Ug bmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhciBmb3IgaGlzaSBwdHQ/Cj4gCgp0aGFua3MgZm9y IGNhdGNoaW5nIHRoaXMuIGl0J3MgbWlzc2VkLiB3aWxsIGZpeC4KCj4+IMKgIC3CoMKgwqAgaWYg KGZvdW5kX2V0bSAmJiBmb3VuZF9zcGUpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHByX2VycigiQ29u Y3VycmVudCBBUk0gQ29yZXNpZ2h0IEVUTSBhbmQgU1BFIG9wZXJhdGlvbiBub3QgY3VycmVudGx5 IHN1cHBvcnRlZFxuIik7Cj4+ICvCoMKgwqAgaWYgKGZvdW5kX2V0bSAmJiBmb3VuZF9zcGUgJiYg Zm91bmRfcHR0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIkNvbmN1cnJlbnQgQVJNIENv cmVzaWdodCBFVE0gLFNQRSBhbmQgSGlTaWxpY29uIFBDSWUgVHJhY2Ugb3BlcmF0aW9uIG5vdCBj dXJyZW50bHkgc3VwcG9ydGVkXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICplcnIgPSAtRU9Q Tk9UU1VQUDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+PiDCoMKgwqDCoMKg IH0KPj4gQEAgLTk2LDYgKzE2Myw5IEBAIHN0cnVjdCBhdXh0cmFjZV9yZWNvcmQKPj4gwqAgI2lm IGRlZmluZWQoX19hYXJjaDY0X18pCj4+IMKgwqDCoMKgwqAgaWYgKGZvdW5kX3NwZSkKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBhcm1fc3BlX3JlY29yZGluZ19pbml0KGVyciwgZm91bmRf c3BlKTsKPj4gKwo+PiArwqDCoMKgIGlmIChmb3VuZF9wdHQpCj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gaGlzaV9wdHRfcmVjb3JkaW5nX2luaXQoZXJyLCBmb3VuZF9wdHQpOwo+PiDCoCAjZW5k aWYKPj4gwqAgwqDCoMKgwqDCoCAvKgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL2Fy bS91dGlsL3BtdS5jIGIvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jCj4+IGluZGV4IGI4 YjIzYjlkYzU5OC4uODlhM2NlZGI0NTU3IDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL2FyY2gv YXJtL3V0aWwvcG11LmMKPj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jCj4+ IEBAIC0xMCw2ICsxMCw3IEBACj4+IMKgICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KPj4gwqAg wqAgI2luY2x1ZGUgImFybS1zcGUuaCIKPj4gKyNpbmNsdWRlICJoaXNpX3B0dC5oIgo+PiDCoCAj aW5jbHVkZSAiLi4vLi4vLi4vdXRpbC9wbXUuaCIKPj4gwqAgwqAgc3RydWN0IHBlcmZfZXZlbnRf YXR0cgo+PiBAQCAtMjIsNiArMjMsOCBAQCBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyCj4+IMKgICNp ZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQo+PiDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoc3Ryc3RhcnRz KHBtdS0+bmFtZSwgQVJNX1NQRV9QTVVfTkFNRSkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBhcm1fc3BlX3BtdV9kZWZhdWx0X2NvbmZpZyhwbXUpOwo+PiArwqDCoMKgIH0gZWxzZSBp ZiAoc3Ryc3RhcnRzKHBtdS0+bmFtZSwgSElTSV9QVFRfUE1VX05BTUUpKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBwbXUtPnNlbGVjdGFibGUgPSB0cnVlOwo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDC oCB9Cj4+IMKgIGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9CdWlsZCBi L3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL0J1aWxkCj4+IGluZGV4IDlmY2I0ZTY4YWRkOS4u OGI3ZmQxZGM5ZjM3IDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9C dWlsZAo+PiArKysgYi90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9CdWlsZAo+PiBAQCAtMTEs NCArMTEsNCBAQCBwZXJmLSQoQ09ORklHX0xJQkRXX0RXQVJGX1VOV0lORCkgKz0gdW53aW5kLWxp YmR3Lm8KPj4gwqAgcGVyZi0kKENPTkZJR19BVVhUUkFDRSkgKz0gLi4vLi4vYXJtL3V0aWwvcG11 Lm8gXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuLi8uLi9hcm0v dXRpbC9hdXh0cmFjZS5vIFwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLi4vLi4vYXJtL3V0aWwvY3MtZXRtLm8gXAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhcm0tc3BlLm8gbWVtLWV2ZW50cy5vCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFybS1zcGUubyBtZW0tZXZlbnRzLm8gaGlzaV9wdHQubwo+IAo+IG5p dDogb3RoZXJzIHVzZSAnLScgaW4gdGhlIG5hbWUKPiAKCndpbGwgZm9sbG93IHRoZSBjb252ZW50 aW9uLgoKPiAKPiBJJ2xsIGNoZWNrIHRoZSByZXN0IHRvbW9ycm93LgoKVGhhbmtzLApZaWNvbmcK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppb21tdSBt YWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0 cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vaW9tbXU= 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 ABEB2C433EF for ; Tue, 12 Apr 2022 07:49:53 +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:MIME-Version:Date: Message-ID:From:References:To:Subject:CC:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=ROrgIRYDl83itME+iXMX8vaS0LlI10Ec9lp3oHsh5cA=; b=W/9b3t74ziaBUhNOfgZ5Sd3z7j Kg95ovlcoV9AleJkYfjbBTa9pDcOxtv0Z4BLBTA8/Ubo4UsOT6snsqCbWHBRKDAN9Qwv2GECyc7Do DM/OUPYYHLhyIdxYP/asPGlLrk/GX5KtzYtXcj6dMNkNa97YHoCCsnwIXYAN3O0Do1vsbc/47vZfL DJZLwO7S7/0vuCWWE3E/vH2m7fRwiqZrHXTtlugvyKdu3JMHJPgMCmxDNqRxxLtyeyHsLx0FnIiF1 dyrf+5CcZhJz7A+UhhYTCnIb9ylyxS5LhyNs99UnAfvMKqYRk2SI/8XI/Mh9L8xKf97uGO9kL1RVo dhJiWk9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1neBFx-00CJEq-P3; Tue, 12 Apr 2022 07:48:11 +0000 Received: from szxga02-in.huawei.com ([45.249.212.188]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1neB9K-00CFS4-6x for linux-arm-kernel@lists.infradead.org; Tue, 12 Apr 2022 07:41:21 +0000 Received: from canpemm500009.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KcyJp6drzzFpnS; Tue, 12 Apr 2022 15:38:50 +0800 (CST) Received: from [10.67.102.169] (10.67.102.169) by canpemm500009.china.huawei.com (7.192.105.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 12 Apr 2022 15:41:14 +0800 CC: , , , Subject: Re: [PATCH v7 5/7] perf tool: Add support for HiSilicon PCIe Tune and Trace device driver To: John Garry , Yicong Yang , , , , , , , , , , , , , , , , , , , , , , , , References: <20220407125841.3678-1-yangyicong@hisilicon.com> <20220407125841.3678-6-yangyicong@hisilicon.com> <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> From: Yicong Yang Message-ID: Date: Tue, 12 Apr 2022 15:41:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> X-Originating-IP: [10.67.102.169] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220412_004118_710008_1EF87172 X-CRM114-Status: GOOD ( 22.75 ) 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 T24gMjAyMi80LzEyIDE6MTksIEpvaG4gR2Fycnkgd3JvdGU6Cj4gT24gMDcvMDQvMjAyMiAxMzo1 OCwgWWljb25nIFlhbmcgd3JvdGU6Cj4+IEZyb206IFFpIExpdSA8bGl1cWkxMTVAaHVhd2VpLmNv bT4KPj4KPj4gJ3BlcmYgcmVjb3JkJyBhbmQgJ3BlcmYgcmVwb3J0IC0tZHVtcC1yYXctdHJhY2Un IHN1cHBvcnRlZCBpbiB0aGlzCj4+IHBhdGNoLgo+Pgo+PiBFeGFtcGxlIHVzYWdlOgo+Pgo+PiBP dXRwdXQgd2lsbCBjb250YWluIHJhdyBQVFQgZGF0YSBhbmQgaXRzIHRleHR1YWwgcmVwcmVzZW50 YXRpb24sIHN1Y2gKPj4gYXM6Cj4+Cj4+IDAgMCAweDU4MTAgWzB4MzBdOiBQRVJGX1JFQ09SRF9B VVhUUkFDRSBzaXplOiAweDQwMDAwMMKgIG9mZnNldDogMAo+PiByZWY6IDB4YTVkNTBjNzI1wqAg aWR4OiAwwqAgdGlkOiAtMcKgIGNwdTogMAo+PiAuCj4+IC4gLi4uIEhJU0kgUFRUIGRhdGE6IHNp emUgNDE5NDMwNCBieXRlcwo+PiAuwqAgMDAwMDAwMDA6IDAwIDAwIDAwIDAwwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQcmVm aXgKPj4gLsKgIDAwMDAwMDA0OiAwOCAyMCAwMCA2MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSGVhZGVyIERXMAo+PiAuwqAg MDAwMDAwMDg6IGZmIDAyIDAwIDAxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFkZXIgRFcxCj4+IC7CoCAwMDAwMDAwYzog MjAgMDggMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEhlYWRlciBEVzIKPj4gLsKgIDAwMDAwMDEwOiAxMCBlNyA0NCBh YsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgSGVhZGVyIERXMwo+PiAuwqAgMDAwMDAwMTQ6IDJhIGE4IDFlIDAxwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBU aW1lCj4+IC7CoCAwMDAwMDAyMDogMDAgMDAgMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFByZWZpeAo+PiAuwqAgMDAw MDAwMjQ6IDAxIDAwIDAwIDYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFkZXIgRFcwCj4+IC7CoCAwMDAwMDAyODogMGYg MWUgMDAgMDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEhlYWRlciBEVzEKPj4gLsKgIDAwMDAwMDJjOiAwNCAwMCAwMCAwMMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgSGVhZGVyIERXMgo+PiAuwqAgMDAwMDAwMzA6IDQwIDAwIDgxIDAywqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIZWFk ZXIgRFczCj4+IC7CoCAwMDAwMDAzNDogZWUgMDIgMDAgMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRpbWUKPj4gLi4uLgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBRaSBMaXUgPGxpdXFpMTE1QGh1YXdlaS5jb20+Cj4+IFNpZ25l ZC1vZmYtYnk6IFlpY29uZyBZYW5nIDx5YW5neWljb25nQGhpc2lsaWNvbi5jb20+Cj4+IC0tLQo+ PiDCoCB0b29scy9wZXJmL2FyY2gvYXJtL3V0aWwvYXV4dHJhY2UuY8KgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCA3NiArKysrKy0KPj4gwqAgdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKwo+PiDCoCB0b29scy9wZXJmL2Fy Y2gvYXJtNjQvdXRpbC9CdWlsZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0K Pj4gwqAgdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvaGlzaV9wdHQuY8KgwqDCoMKgwqDCoMKg wqAgfCAxOTUgKysrKysrKysrKysrKysrKwo+PiDCoCB0b29scy9wZXJmL3V0aWwvQnVpbGTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+ IMKgIHRvb2xzL3BlcmYvdXRpbC9hdXh0cmFjZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNCArCj4+IMKgIHRvb2xzL3BlcmYvdXRpbC9hdXh0cmFjZS5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHRvb2xz L3BlcmYvdXRpbC9oaXNpLXB0dC1kZWNvZGVyL0J1aWxkwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSAr Cj4+IMKgIC4uLi9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBrdC1kZWNvZGVyLmPCoMKgIHwg MTcwICsrKysrKysrKysrKysrCj4+IMKgIC4uLi9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBr dC1kZWNvZGVyLmjCoMKgIHzCoCAyOCArKysKPj4gwqAgdG9vbHMvcGVyZi91dGlsL2hpc2lfcHR0 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDIxOCArKysrKysrKysr KysrKysrKysKPj4gwqAgdG9vbHMvcGVyZi91dGlsL2hpc2lfcHR0LmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKysrCj4+IMKgIDEyIGZpbGVzIGNoYW5nZWQs IDcyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvaGlzaV9wdHQuYwo+PiDCoCBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi91dGlsL2hpc2ktcHR0LWRlY29kZXIvQnVpbGQKPj4gwqAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9oaXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0 LXBrdC1kZWNvZGVyLmMKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9o aXNpLXB0dC1kZWNvZGVyL2hpc2ktcHR0LXBrdC1kZWNvZGVyLmgKPj4gwqAgY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL3BlcmYvdXRpbC9oaXNpX3B0dC5jCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9wZXJmL3V0aWwvaGlzaV9wdHQuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVy Zi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMgYi90b29scy9wZXJmL2FyY2gvYXJtL3V0aWwvYXV4 dHJhY2UuYwo+PiBpbmRleCA1ZmM2YTJhM2RiYzUuLjM5M2Y1NzU3YzAzOSAxMDA2NDQKPj4gLS0t IGEvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMKPj4gKysrIGIvdG9vbHMvcGVy Zi9hcmNoL2FybS91dGlsL2F1eHRyYWNlLmMKPj4gQEAgLTQsOSArNCwxMSBAQAo+PiDCoMKgICog QXV0aG9yOiBNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgo+PiDC oMKgICovCj4+IMKgICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4+IMKgICNpbmNsdWRlIDxzdGRib29s Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9jb3Jlc2lnaHQtcG11Lmg+Cj4+IMKgICNpbmNsdWRl IDxsaW51eC96YWxsb2MuaD4KPj4gKyNpbmNsdWRlIDxhcGkvZnMvZnMuaD4KPj4gwqAgwqAgI2lu Y2x1ZGUgIi4uLy4uLy4uL3V0aWwvYXV4dHJhY2UuaCIKPj4gwqAgI2luY2x1ZGUgIi4uLy4uLy4u L3V0aWwvZGVidWcuaCIKPj4gQEAgLTE0LDYgKzE2LDcgQEAKPj4gwqAgI2luY2x1ZGUgIi4uLy4u Ly4uL3V0aWwvcG11LmgiCj4+IMKgICNpbmNsdWRlICJjcy1ldG0uaCIKPj4gwqAgI2luY2x1ZGUg ImFybS1zcGUuaCIKPj4gKyNpbmNsdWRlICJoaXNpX3B0dC5oIgo+PiDCoCDCoCBzdGF0aWMgc3Ry dWN0IHBlcmZfcG11ICoqZmluZF9hbGxfYXJtX3NwZV9wbXVzKGludCAqbnJfc3BlcywgaW50ICpl cnIpCj4+IMKgIHsKPj4gQEAgLTUwLDYgKzUzLDU4IEBAIHN0YXRpYyBzdHJ1Y3QgcGVyZl9wbXUg KipmaW5kX2FsbF9hcm1fc3BlX3BtdXMoaW50ICpucl9zcGVzLCBpbnQgKmVycikKPj4gwqDCoMKg wqDCoCByZXR1cm4gYXJtX3NwZV9wbXVzOwo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgc3RydWN0IHBl cmZfcG11ICoqZmluZF9hbGxfaGlzaV9wdHRfcG11cyhpbnQgKm5yX3B0dHMsIGludCAqZXJyKQo+ PiArewo+PiArwqDCoMKgIGNvbnN0IGNoYXIgKnN5c2ZzID0gc3lzZnNfX21vdW50cG9pbnQoKTsK Pj4gK8KgwqDCoCBzdHJ1Y3QgcGVyZl9wbXUgKipoaXNpX3B0dF9wbXVzID0gTlVMTDsKPj4gK8Kg wqDCoCBzdHJ1Y3QgZGlyZW50ICpkZW50Owo+PiArwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07 Cj4+ICvCoMKgwqAgRElSICpkaXIgPSBOVUxMOwo+PiArwqDCoMKgIGludCBpZHggPSAwOwo+PiAr Cj4+ICvCoMKgwqAgc25wcmludGYocGF0aCwgUEFUSF9NQVgsICIlcyIgRVZFTlRfU09VUkNFX0RF VklDRV9QQVRILCBzeXNmcyk7Cj4+ICvCoMKgwqAgZGlyID0gb3BlbmRpcihwYXRoKTsKPj4gK8Kg wqDCoCBpZiAoIWRpcikgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJjYW4ndCByZWFkIGRp cmVjdG9yeSAnJXMnXG4iLCBFVkVOVF9TT1VSQ0VfREVWSUNFX1BBVEgpOwo+PiArwqDCoMKgwqDC oMKgwqAgKmVyciA9IC1FSU5WQUw7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4gK8Kg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCB3aGlsZSAoKGRlbnQgPSByZWFkZGlyKGRpcikpKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoc3Ryc3RyKGRlbnQtPmRfbmFtZSwgSElTSV9QVFRfUE1VX05B TUUpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKm5yX3B0dHMpKys7Cj4+ICvCoMKgwqAg fQo+PiArCj4+ICvCoMKgwqAgaWYgKCEoKm5yX3B0dHMpKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290 byBvdXQ7Cj4+ICsKPj4gK8KgwqDCoCBoaXNpX3B0dF9wbXVzID0gemFsbG9jKHNpemVvZihzdHJ1 Y3QgcGVyZl9wbXUgKikgKiAoKm5yX3B0dHMpKTsKPj4gK8KgwqDCoCBpZiAoIWhpc2lfcHR0X3Bt dXMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByX2VycigiaGlzaV9wdHQgYWxsb2MgZmFpbGVkXG4i KTsKPj4gK8KgwqDCoMKgwqDCoMKgICplcnIgPSAtRU5PTUVNOwo+IAo+IHVzaW5nIFBUUl9FUlIg c2VlbXMgYmV0dGVyLCBpZiBwb3NzaWJsZQo+IAoKb2sgd2lsbCBjaGFuZ2UgdG8gdGhhdC4gKmVy ciA9IC1FTk9NRU0gaXMgdXNlZCBoZXJlIHRvIGtlZXAgY29uc2lzdGVuY2Ugd2l0aAp3aGF0IHNw ZSBkb2VzLgoKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgIH0KPj4gKwo+ PiArwqDCoMKgIHJld2luZGRpcihkaXIpOwo+PiArwqDCoMKgIHdoaWxlICgoZGVudCA9IHJlYWRk aXIoZGlyKSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzdHJzdHIoZGVudC0+ZF9uYW1lLCBI SVNJX1BUVF9QTVVfTkFNRSkgJiYgaWR4IDwgKCpucl9wdHRzKSkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBoaXNpX3B0dF9wbXVzW2lkeF0gPSBwZXJmX3BtdV9fZmluZChkZW50LT5kX25h bWUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaGlzaV9wdHRfcG11c1tpZHhdKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcyKCIlcyAlZDogaGlz aV9wdHRfcG11ICVkIHR5cGUgJWQgbmFtZSAlc1xuIiwKPiAKPiBkbyB5b3UgcmVhbGx5IG5lZWQg dGhpcz8KPiAKCkkgYXNrZWQgUWkgbWF5YmUgaXQncyB1bm5lY2Vzc2FyeSwgYnV0IHRvIGtlZXAg Y29uc2lzdGVuY2UgbGlrZSBhcm0gc3BlLgoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF9fZnVuY19fLCBfX0xJTkVfXywgaWR4LAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV9wdHRfcG11c1tpZHhdLT50eXBlLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlzaV9wdHRfcG11c1tpZHhdLT5u YW1lKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlkeCsrOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4g K8KgwqDCoCB9Cj4+ICsKPj4gK291dDoKPj4gK8KgwqDCoCBjbG9zZWRpcihkaXIpOwo+PiArwqDC oMKgIHJldHVybiBoaXNpX3B0dF9wbXVzOwo+PiArfQo+PiArCj4+IMKgIHN0cnVjdCBhdXh0cmFj ZV9yZWNvcmQKPj4gwqAgKmF1eHRyYWNlX3JlY29yZF9faW5pdChzdHJ1Y3QgZXZsaXN0ICpldmxp c3QsIGludCAqZXJyKQo+PiDCoCB7Cj4+IEBAIC01Nyw4ICsxMTIsMTIgQEAgc3RydWN0IGF1eHRy YWNlX3JlY29yZAo+PiDCoMKgwqDCoMKgIHN0cnVjdCBldnNlbCAqZXZzZWw7Cj4+IMKgwqDCoMKg wqAgYm9vbCBmb3VuZF9ldG0gPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgcGVyZl9wbXUg KmZvdW5kX3NwZSA9IE5VTEw7Cj4+ICvCoMKgwqAgc3RydWN0IHBlcmZfcG11ICpmb3VuZF9wdHQg PSBOVUxMOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBwZXJmX3BtdSAqKmFybV9zcGVfcG11cyA9IE5V TEw7Cj4+ICvCoMKgwqAgc3RydWN0IHBlcmZfcG11ICoqaGlzaV9wdHRfcG11cyA9IE5VTEw7Cj4+ ICsKPj4gwqDCoMKgwqDCoCBpbnQgbnJfc3BlcyA9IDA7Cj4+ICvCoMKgwqAgaW50IG5yX3B0dHMg PSAwOwo+PiDCoMKgwqDCoMKgIGludCBpID0gMDsKPj4gwqAgwqDCoMKgwqDCoCBpZiAoIWV2bGlz dCkKPj4gQEAgLTY2LDEzICsxMjUsMTQgQEAgc3RydWN0IGF1eHRyYWNlX3JlY29yZAo+PiDCoCDC oMKgwqDCoMKgIGNzX2V0bV9wbXUgPSBwZXJmX3BtdV9fZmluZChDT1JFU0lHSFRfRVRNX1BNVV9O QU1FKTsKPj4gwqDCoMKgwqDCoCBhcm1fc3BlX3BtdXMgPSBmaW5kX2FsbF9hcm1fc3BlX3BtdXMo Jm5yX3NwZXMsIGVycik7Cj4+ICvCoMKgwqAgaGlzaV9wdHRfcG11cyA9IGZpbmRfYWxsX2hpc2lf cHR0X3BtdXMoJm5yX3B0dHMsIGVycik7Cj4+IMKgIMKgwqDCoMKgwqAgZXZsaXN0X19mb3JfZWFj aF9lbnRyeShldmxpc3QsIGV2c2VsKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY3NfZXRt X3BtdSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBldnNlbC0+Y29yZS5hdHRyLnR5 cGUgPT0gY3NfZXRtX3BtdS0+dHlwZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm91 bmRfZXRtID0gdHJ1ZTsKPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGlmICghbnJfc3BlcyB8fCBmb3Vu ZF9zcGUpCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKCFucl9zcGVzIHx8IGZvdW5kX3NwZSkgJiYg KCFucl9wdHRzIHx8IGZvdW5kX3B0dCkpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnRpbnVlOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX3NwZXM7 IGkrKykgewo+PiBAQCAtODEsMTEgKzE0MSwxOCBAQCBzdHJ1Y3QgYXV4dHJhY2VfcmVjb3JkCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKg wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX3B0dHM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoZXZzZWwtPmNvcmUuYXR0ci50eXBlID09IGhpc2lfcHR0X3BtdXNbaV0t PnR5cGUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3VuZF9wdHQgPSBo aXNpX3B0dF9wbXVzW2ldOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGZyZWUoYXJtX3NwZV9wbXVzKTsKPiAKPiBkbyB5b3Ug bmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhciBmb3IgaGlzaSBwdHQ/Cj4gCgp0aGFua3MgZm9y IGNhdGNoaW5nIHRoaXMuIGl0J3MgbWlzc2VkLiB3aWxsIGZpeC4KCj4+IMKgIC3CoMKgwqAgaWYg KGZvdW5kX2V0bSAmJiBmb3VuZF9zcGUpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHByX2VycigiQ29u Y3VycmVudCBBUk0gQ29yZXNpZ2h0IEVUTSBhbmQgU1BFIG9wZXJhdGlvbiBub3QgY3VycmVudGx5 IHN1cHBvcnRlZFxuIik7Cj4+ICvCoMKgwqAgaWYgKGZvdW5kX2V0bSAmJiBmb3VuZF9zcGUgJiYg Zm91bmRfcHR0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIkNvbmN1cnJlbnQgQVJNIENv cmVzaWdodCBFVE0gLFNQRSBhbmQgSGlTaWxpY29uIFBDSWUgVHJhY2Ugb3BlcmF0aW9uIG5vdCBj dXJyZW50bHkgc3VwcG9ydGVkXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICplcnIgPSAtRU9Q Tk9UU1VQUDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+PiDCoMKgwqDCoMKg IH0KPj4gQEAgLTk2LDYgKzE2Myw5IEBAIHN0cnVjdCBhdXh0cmFjZV9yZWNvcmQKPj4gwqAgI2lm IGRlZmluZWQoX19hYXJjaDY0X18pCj4+IMKgwqDCoMKgwqAgaWYgKGZvdW5kX3NwZSkKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBhcm1fc3BlX3JlY29yZGluZ19pbml0KGVyciwgZm91bmRf c3BlKTsKPj4gKwo+PiArwqDCoMKgIGlmIChmb3VuZF9wdHQpCj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gaGlzaV9wdHRfcmVjb3JkaW5nX2luaXQoZXJyLCBmb3VuZF9wdHQpOwo+PiDCoCAjZW5k aWYKPj4gwqAgwqDCoMKgwqDCoCAvKgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL2Fy bS91dGlsL3BtdS5jIGIvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jCj4+IGluZGV4IGI4 YjIzYjlkYzU5OC4uODlhM2NlZGI0NTU3IDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL2FyY2gv YXJtL3V0aWwvcG11LmMKPj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BtdS5jCj4+ IEBAIC0xMCw2ICsxMCw3IEBACj4+IMKgICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KPj4gwqAg wqAgI2luY2x1ZGUgImFybS1zcGUuaCIKPj4gKyNpbmNsdWRlICJoaXNpX3B0dC5oIgo+PiDCoCAj aW5jbHVkZSAiLi4vLi4vLi4vdXRpbC9wbXUuaCIKPj4gwqAgwqAgc3RydWN0IHBlcmZfZXZlbnRf YXR0cgo+PiBAQCAtMjIsNiArMjMsOCBAQCBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyCj4+IMKgICNp ZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQo+PiDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoc3Ryc3RhcnRz KHBtdS0+bmFtZSwgQVJNX1NQRV9QTVVfTkFNRSkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBhcm1fc3BlX3BtdV9kZWZhdWx0X2NvbmZpZyhwbXUpOwo+PiArwqDCoMKgIH0gZWxzZSBp ZiAoc3Ryc3RhcnRzKHBtdS0+bmFtZSwgSElTSV9QVFRfUE1VX05BTUUpKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBwbXUtPnNlbGVjdGFibGUgPSB0cnVlOwo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDC oCB9Cj4+IMKgIGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9CdWlsZCBi L3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL0J1aWxkCj4+IGluZGV4IDlmY2I0ZTY4YWRkOS4u OGI3ZmQxZGM5ZjM3IDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9C dWlsZAo+PiArKysgYi90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9CdWlsZAo+PiBAQCAtMTEs NCArMTEsNCBAQCBwZXJmLSQoQ09ORklHX0xJQkRXX0RXQVJGX1VOV0lORCkgKz0gdW53aW5kLWxp YmR3Lm8KPj4gwqAgcGVyZi0kKENPTkZJR19BVVhUUkFDRSkgKz0gLi4vLi4vYXJtL3V0aWwvcG11 Lm8gXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuLi8uLi9hcm0v dXRpbC9hdXh0cmFjZS5vIFwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLi4vLi4vYXJtL3V0aWwvY3MtZXRtLm8gXAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhcm0tc3BlLm8gbWVtLWV2ZW50cy5vCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFybS1zcGUubyBtZW0tZXZlbnRzLm8gaGlzaV9wdHQubwo+IAo+IG5p dDogb3RoZXJzIHVzZSAnLScgaW4gdGhlIG5hbWUKPiAKCndpbGwgZm9sbG93IHRoZSBjb252ZW50 aW9uLgoKPiAKPiBJJ2xsIGNoZWNrIHRoZSByZXN0IHRvbW9ycm93LgoKVGhhbmtzLApZaWNvbmcK CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo= 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8AE33C4707F for ; Tue, 12 Apr 2022 09:28:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359236AbiDLJ1o (ORCPT ); Tue, 12 Apr 2022 05:27:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356506AbiDLIKh (ORCPT ); Tue, 12 Apr 2022 04:10:37 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DE8727A; Tue, 12 Apr 2022 00:41:17 -0700 (PDT) Received: from canpemm500009.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KcyJp6drzzFpnS; Tue, 12 Apr 2022 15:38:50 +0800 (CST) Received: from [10.67.102.169] (10.67.102.169) by canpemm500009.china.huawei.com (7.192.105.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 12 Apr 2022 15:41:14 +0800 CC: , , , Subject: Re: [PATCH v7 5/7] perf tool: Add support for HiSilicon PCIe Tune and Trace device driver To: John Garry , Yicong Yang , , , , , , , , , , , , , , , , , , , , , , , , References: <20220407125841.3678-1-yangyicong@hisilicon.com> <20220407125841.3678-6-yangyicong@hisilicon.com> <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> From: Yicong Yang Message-ID: Date: Tue, 12 Apr 2022 15:41:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <276c24d2-daf5-5eba-26b9-55edd4a45537@huawei.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.102.169] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/4/12 1:19, John Garry wrote: > On 07/04/2022 13:58, Yicong Yang wrote: >> From: Qi Liu >> >> 'perf record' and 'perf report --dump-raw-trace' supported in this >> patch. >> >> Example usage: >> >> Output will contain raw PTT data and its textual representation, such >> as: >> >> 0 0 0x5810 [0x30]: PERF_RECORD_AUXTRACE size: 0x400000  offset: 0 >> ref: 0xa5d50c725  idx: 0  tid: -1  cpu: 0 >> . >> . ... HISI PTT data: size 4194304 bytes >> .  00000000: 00 00 00 00                                 Prefix >> .  00000004: 08 20 00 60                                 Header DW0 >> .  00000008: ff 02 00 01                                 Header DW1 >> .  0000000c: 20 08 00 00                                 Header DW2 >> .  00000010: 10 e7 44 ab                                 Header DW3 >> .  00000014: 2a a8 1e 01                                 Time >> .  00000020: 00 00 00 00                                 Prefix >> .  00000024: 01 00 00 60                                 Header DW0 >> .  00000028: 0f 1e 00 01                                 Header DW1 >> .  0000002c: 04 00 00 00                                 Header DW2 >> .  00000030: 40 00 81 02                                 Header DW3 >> .  00000034: ee 02 00 00                                 Time >> .... >> >> Signed-off-by: Qi Liu >> Signed-off-by: Yicong Yang >> --- >>   tools/perf/arch/arm/util/auxtrace.c           |  76 +++++- >>   tools/perf/arch/arm/util/pmu.c                |   3 + >>   tools/perf/arch/arm64/util/Build              |   2 +- >>   tools/perf/arch/arm64/util/hisi_ptt.c         | 195 ++++++++++++++++ >>   tools/perf/util/Build                         |   2 + >>   tools/perf/util/auxtrace.c                    |   4 + >>   tools/perf/util/auxtrace.h                    |   1 + >>   tools/perf/util/hisi-ptt-decoder/Build        |   1 + >>   .../hisi-ptt-decoder/hisi-ptt-pkt-decoder.c   | 170 ++++++++++++++ >>   .../hisi-ptt-decoder/hisi-ptt-pkt-decoder.h   |  28 +++ >>   tools/perf/util/hisi_ptt.c                    | 218 ++++++++++++++++++ >>   tools/perf/util/hisi_ptt.h                    |  28 +++ >>   12 files changed, 724 insertions(+), 4 deletions(-) >>   create mode 100644 tools/perf/arch/arm64/util/hisi_ptt.c >>   create mode 100644 tools/perf/util/hisi-ptt-decoder/Build >>   create mode 100644 tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.c >>   create mode 100644 tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.h >>   create mode 100644 tools/perf/util/hisi_ptt.c >>   create mode 100644 tools/perf/util/hisi_ptt.h >> >> diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c >> index 5fc6a2a3dbc5..393f5757c039 100644 >> --- a/tools/perf/arch/arm/util/auxtrace.c >> +++ b/tools/perf/arch/arm/util/auxtrace.c >> @@ -4,9 +4,11 @@ >>    * Author: Mathieu Poirier >>    */ >>   +#include >>   #include >>   #include >>   #include >> +#include >>     #include "../../../util/auxtrace.h" >>   #include "../../../util/debug.h" >> @@ -14,6 +16,7 @@ >>   #include "../../../util/pmu.h" >>   #include "cs-etm.h" >>   #include "arm-spe.h" >> +#include "hisi_ptt.h" >>     static struct perf_pmu **find_all_arm_spe_pmus(int *nr_spes, int *err) >>   { >> @@ -50,6 +53,58 @@ static struct perf_pmu **find_all_arm_spe_pmus(int *nr_spes, int *err) >>       return arm_spe_pmus; >>   } >>   +static struct perf_pmu **find_all_hisi_ptt_pmus(int *nr_ptts, int *err) >> +{ >> +    const char *sysfs = sysfs__mountpoint(); >> +    struct perf_pmu **hisi_ptt_pmus = NULL; >> +    struct dirent *dent; >> +    char path[PATH_MAX]; >> +    DIR *dir = NULL; >> +    int idx = 0; >> + >> +    snprintf(path, PATH_MAX, "%s" EVENT_SOURCE_DEVICE_PATH, sysfs); >> +    dir = opendir(path); >> +    if (!dir) { >> +        pr_err("can't read directory '%s'\n", EVENT_SOURCE_DEVICE_PATH); >> +        *err = -EINVAL; >> +        goto out; >> +    } >> + >> +    while ((dent = readdir(dir))) { >> +        if (strstr(dent->d_name, HISI_PTT_PMU_NAME)) >> +            (*nr_ptts)++; >> +    } >> + >> +    if (!(*nr_ptts)) >> +        goto out; >> + >> +    hisi_ptt_pmus = zalloc(sizeof(struct perf_pmu *) * (*nr_ptts)); >> +    if (!hisi_ptt_pmus) { >> +        pr_err("hisi_ptt alloc failed\n"); >> +        *err = -ENOMEM; > > using PTR_ERR seems better, if possible > ok will change to that. *err = -ENOMEM is used here to keep consistence with what spe does. >> +        goto out; >> +    } >> + >> +    rewinddir(dir); >> +    while ((dent = readdir(dir))) { >> +        if (strstr(dent->d_name, HISI_PTT_PMU_NAME) && idx < (*nr_ptts)) { >> +            hisi_ptt_pmus[idx] = perf_pmu__find(dent->d_name); >> +            if (hisi_ptt_pmus[idx]) { >> +                pr_debug2("%s %d: hisi_ptt_pmu %d type %d name %s\n", > > do you really need this? > I asked Qi maybe it's unnecessary, but to keep consistence like arm spe. >> +                    __func__, __LINE__, idx, >> +                    hisi_ptt_pmus[idx]->type, >> +                    hisi_ptt_pmus[idx]->name); >> +                    idx++; >> +            } >> + >> +        } >> +    } >> + >> +out: >> +    closedir(dir); >> +    return hisi_ptt_pmus; >> +} >> + >>   struct auxtrace_record >>   *auxtrace_record__init(struct evlist *evlist, int *err) >>   { >> @@ -57,8 +112,12 @@ struct auxtrace_record >>       struct evsel *evsel; >>       bool found_etm = false; >>       struct perf_pmu *found_spe = NULL; >> +    struct perf_pmu *found_ptt = NULL; >>       struct perf_pmu **arm_spe_pmus = NULL; >> +    struct perf_pmu **hisi_ptt_pmus = NULL; >> + >>       int nr_spes = 0; >> +    int nr_ptts = 0; >>       int i = 0; >>         if (!evlist) >> @@ -66,13 +125,14 @@ struct auxtrace_record >>         cs_etm_pmu = perf_pmu__find(CORESIGHT_ETM_PMU_NAME); >>       arm_spe_pmus = find_all_arm_spe_pmus(&nr_spes, err); >> +    hisi_ptt_pmus = find_all_hisi_ptt_pmus(&nr_ptts, err); >>         evlist__for_each_entry(evlist, evsel) { >>           if (cs_etm_pmu && >>               evsel->core.attr.type == cs_etm_pmu->type) >>               found_etm = true; >>   -        if (!nr_spes || found_spe) >> +        if ((!nr_spes || found_spe) && (!nr_ptts || found_ptt)) >>               continue; >>             for (i = 0; i < nr_spes; i++) { >> @@ -81,11 +141,18 @@ struct auxtrace_record >>                   break; >>               } >>           } >> + >> +        for (i = 0; i < nr_ptts; i++) { >> +            if (evsel->core.attr.type == hisi_ptt_pmus[i]->type) { >> +                found_ptt = hisi_ptt_pmus[i]; >> +                break; >> +            } >> +        } >>       } >>       free(arm_spe_pmus); > > do you need to do something similar for hisi ptt? > thanks for catching this. it's missed. will fix. >>   -    if (found_etm && found_spe) { >> -        pr_err("Concurrent ARM Coresight ETM and SPE operation not currently supported\n"); >> +    if (found_etm && found_spe && found_ptt) { >> +        pr_err("Concurrent ARM Coresight ETM ,SPE and HiSilicon PCIe Trace operation not currently supported\n"); >>           *err = -EOPNOTSUPP; >>           return NULL; >>       } >> @@ -96,6 +163,9 @@ struct auxtrace_record >>   #if defined(__aarch64__) >>       if (found_spe) >>           return arm_spe_recording_init(err, found_spe); >> + >> +    if (found_ptt) >> +        return hisi_ptt_recording_init(err, found_ptt); >>   #endif >>         /* >> diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c >> index b8b23b9dc598..89a3cedb4557 100644 >> --- a/tools/perf/arch/arm/util/pmu.c >> +++ b/tools/perf/arch/arm/util/pmu.c >> @@ -10,6 +10,7 @@ >>   #include >>     #include "arm-spe.h" >> +#include "hisi_ptt.h" >>   #include "../../../util/pmu.h" >>     struct perf_event_attr >> @@ -22,6 +23,8 @@ struct perf_event_attr >>   #if defined(__aarch64__) >>       } else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) { >>           return arm_spe_pmu_default_config(pmu); >> +    } else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) { >> +        pmu->selectable = true; >>   #endif >>       } >>   diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build >> index 9fcb4e68add9..8b7fd1dc9f37 100644 >> --- a/tools/perf/arch/arm64/util/Build >> +++ b/tools/perf/arch/arm64/util/Build >> @@ -11,4 +11,4 @@ perf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o >>   perf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ >>                     ../../arm/util/auxtrace.o \ >>                     ../../arm/util/cs-etm.o \ >> -                  arm-spe.o mem-events.o >> +                  arm-spe.o mem-events.o hisi_ptt.o > > nit: others use '-' in the name > will follow the convention. > > I'll check the rest tomorrow. Thanks, Yicong