From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Price Subject: Re: [RESEND PATCH v2 2/2] drm/panfrost: Expose perf counters through debugfs Date: Thu, 16 May 2019 17:21:39 +0100 Message-ID: References: <20190514104801.20448-1-boris.brezillon@collabora.com> <20190514104801.20448-3-boris.brezillon@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id 4E9D589781 for ; Thu, 16 May 2019 16:21:42 +0000 (UTC) In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Boris Brezillon Cc: kernel@collabora.com, Alyssa Rosenzweig , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gMTQvMDUvMjAxOSAxNDozMSwgUm9iIEhlcnJpbmcgd3JvdGU6Cj4gT24gVHVlLCBNYXkgMTQs IDIwMTkgYXQgNTo0OCBBTSBCb3JpcyBCcmV6aWxsb24KPiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxh Ym9yYS5jb20+IHdyb3RlOgo+Pgo+PiBBZGQgYSB3YXkgdG8gZHVtcCBwZXJmIGNvdW50ZXJzIHRo cm91Z2ggZGVidWdmcy4gVGhlIGltcGxlbWVudGF0aW9uIGlzCj4+IGtlcHQgc2ltcGxlIGFuZCBo YXMgYSBudW1iZXIgb2YgbGltaXRhdGlvbnM6Cj4+Cj4+ICogaXQncyBub3QgZGVzaWduZWQgZm9y IG11bHRpLXVzZXIgdXNhZ2UgYXMgdGhlIGNvdW50ZXIgdmFsdWVzIGFyZQo+PiAgIHJlc2V0IGFm dGVyIGVhY2ggZHVtcCBhbmQgdGhlcmUncyBubyBwZXItdXNlciBjb250ZXh0Cj4+ICogb25seSBh Y2Nlc3NpYmxlIHRvIHJvb3QgdXNlcnMKPj4gKiBubyBjb3VudGVycyBuYW1pbmcvcG9zaXRpb24g YWJzdHJhY3Rpb24uIFRoaW5ncyBhcmUgZHVtcGVkIGluIGEgcmF3Cj4+ICAgZm9ybWF0IHRoYXQg aGFzIHRvIGJlIHBhcnNlZCBieSB0aGUgdXNlciB3aG8gaGFzIHRvIGtub3cgd2hlcmUgdGhlCj4+ ICAgcmVsZXZhbnQgdmFsdWVzIGFyZSBhbmQgd2hhdCB0aGV5IG1lYW4KPj4KPj4gVGhpcyBpbXBs ZW1lbnRhdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IG1lc2EgZGV2ZWxvcGVycyB0byBo ZWxwCj4+IGRlYnVnIHBlcmYtcmVsYXRlZCBpc3N1ZXMgd2hpbGUgd2Ugd29yayBvbiBhIG1vcmUg Z2VuZXJpYyBhcHByb2FjaCB0aGF0Cj4+IHdvdWxkIGFsbG93IGFsbCBHUFUgZHJpdmVycyB0byBl eHBvc2UgdGhlaXIgY291bnRlcnMgaW4gYSBjb25zaXN0ZW50Cj4+IHdheS4gQXMgYSByZXN1bHQs IHRoaXMgZGVidWdmcyBpbnRlcmZhY2UgaXMgY29uc2lkZXJlZCB1bnN0YWJsZSBhbmQKPj4gbWln aHQgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBCb3Jp cyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+PiAtLS0KPj4gQ2hh bmdlcyBpbiB2MjoKPj4gKiBFeHBvc2UgY291bnRlcnMgdGhyb3VnaCBkZWJ1Z2ZzIGFuZCBrZWVw IHRoaW5ncyBzaW1wbGUgZm9yIG5vdyAod2UnbGwKPj4gICB3b3JrIG9uIGEgZ2VuZXJpYyBzb2x1 dGlvbiBpbiBwYXJhbGxlbCkKPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvTWFr ZWZpbGUgICAgICAgICAgIHwgICAzICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZGV2aWNlLmMgIHwgICA5ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5m cm9zdF9kZXZpY2UuaCAgfCAgIDMgKwo+PiAgZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZy b3N0X2Rydi5jICAgICB8ICAgNyArCj4+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3RfZ3B1LmMgICAgIHwgICA3ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9wZXJmY250LmMgfCAzMzkgKysrKysrKysrKysrKysrKysrKysKPj4gIGRyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmggfCAgMTUgKwo+PiAgZHJpdmVycy9ncHUvZHJt L3BhbmZyb3N0L3BhbmZyb3N0X3JlZ3MuaCAgICB8ICAxOSArKwo+PiAgOCBmaWxlcyBjaGFuZ2Vk LCA0MDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmMKPj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5oCj4+ ClsuLi5dCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODA5 Mzc4M2E1YTI2Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X3BlcmZjbnQuYwo+PiBAQCAtMCwwICsxLDMzOSBAQAo+PiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qIENvcHlyaWdodCAyMDE5IENvbGxhYm9y YSBMdGQgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgo+PiArI2luY2x1ZGUg PGRybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5oPgo+PiArI2luY2x1ZGUgPGRybS9wYW5mcm9zdF9k cm0uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvZGVidWdmcy5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L3BtX3J1bnRpbWUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+PiArCj4+ICsjaW5jbHVkZSAicGFuZnJvc3RfZGV2aWNl LmgiCj4+ICsjaW5jbHVkZSAicGFuZnJvc3RfZmVhdHVyZXMuaCIKPj4gKyNpbmNsdWRlICJwYW5m cm9zdF9nZW0uaCIKPj4gKyNpbmNsdWRlICJwYW5mcm9zdF9pc3N1ZXMuaCIKPj4gKyNpbmNsdWRl ICJwYW5mcm9zdF9qb2IuaCIKPj4gKyNpbmNsdWRlICJwYW5mcm9zdF9tbXUuaCIKPj4gKyNpbmNs dWRlICJwYW5mcm9zdF9yZWdzLmgiCj4+ICsKPj4gKyNkZWZpbmUgQ09VTlRFUlNfUEVSX0JMT0NL ICAgICAgICAgICAgIDY0Cj4+ICsjZGVmaW5lIEJZVEVTX1BFUl9DT1VOVEVSICAgICAgICAgICAg ICA0Cj4+ICsjZGVmaW5lIEJMT0NLU19QRVJfQ09SRUdST1VQICAgICAgICAgICA4Cj4+ICsjZGVm aW5lIFY0X1NIQURFUlNfUEVSX0NPUkVHUk9VUCAgICAgICA0Cj4+ICsKPj4gK3N0cnVjdCBwYW5m cm9zdF9wZXJmY250IHsKPj4gKyAgICAgICBzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm87 Cj4+ICsgICAgICAgc2l6ZV90IGJvc2l6ZTsKPj4gKyAgICAgICB2b2lkICpidWY7Cj4+ICsgICAg ICAgYm9vbCBlbmFibGVkOwo+PiArICAgICAgIHN0cnVjdCBtdXRleCBsb2NrOwo+PiArICAgICAg IHN0cnVjdCBjb21wbGV0aW9uIGR1bXBfY29tcDsKPj4gK307Cj4+ICsKPj4gK3ZvaWQgcGFuZnJv c3RfcGVyZmNudF9jbGVhbl9jYWNoZV9kb25lKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2 KQo+PiArewo+PiArICAgICAgIGNvbXBsZXRlKCZwZmRldi0+cGVyZmNudC0+ZHVtcF9jb21wKTsK Pj4gK30KPj4gKwo+PiArdm9pZCBwYW5mcm9zdF9wZXJmY250X3NhbXBsZV9kb25lKHN0cnVjdCBw YW5mcm9zdF9kZXZpY2UgKnBmZGV2KQo+PiArewo+PiArICAgICAgIGdwdV93cml0ZShwZmRldiwg R1BVX0NNRCwgR1BVX0NNRF9DTEVBTl9DQUNIRVMpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9p ZCBwYW5mcm9zdF9wZXJmY250X3NldHVwKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2KQo+ PiArewo+PiArICAgICAgIHUzMiBjZmc7Cj4+ICsKPj4gKyAgICAgICAvKgo+PiArICAgICAgICAq IEFsd2F5cyB1c2UgYWRkcmVzcyBzcGFjZSAwIGZvciBub3cuCj4+ICsgICAgICAgICogRklYTUU6 IHRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aGVuIHdlIHN0YXJ0IHVzaW5nIGRpZmZlcmVudAo+ PiArICAgICAgICAqIGFkZHJlc3Mgc3BhY2UuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgY2Zn ID0gR1BVX1BFUkZDTlRfQ0ZHX0FTKDApOwo+PiArICAgICAgIGlmIChwYW5mcm9zdF9tb2RlbF9j bXAocGZkZXYsIDB4MTAwMCkgPj0gMCkKPiAKPiBZb3UndmUgZ290IGEgY291cGxlIG9mIHRoZXNl LiBQZXJoYXBzIHdlIHNob3VsZCBhZGQgZWl0aGVyIGEKPiBtb2RlbF9pc19iaWZyb3N0KCkgaGVs cGVyIG9yIGFuIGlzX2JpZnJvc3QgdmFyaWFibGUgdG8gdXNlLgo+IAo+PiArICAgICAgICAgICAg ICAgY2ZnIHw9IEdQVV9QRVJGQ05UX0NGR19TRVRTRUwoMSk7CgptYWxpX2tiYXNlIG9ubHkgc2V0 cyB0aGlzIGlmIENPTkZJR19NQUxJX1BSRkNOVF9TRVRfU0VDT05EQVJZIGlzIGRlZmluZWQKLSBp LmUuIHRoaXMgc2VsZWN0cyBhIGRpZmZlcmVudCBzZWxlY3Rpb24gb2YgY291bnRlcnMuIEF0IGF0 IHRoZSB2ZXJ5CmxlYXN0IHRoaXMgc2hvdWxkIGJlIGFuIG9wdGlvbmFsIGZsYWcgdGhhdCBjYW4g YmUgc2V0LCBidXQgSSBzdXNwZWN0IHRoZQpwcmltYXJ5IHNldCBhcmUgdGhlIG9uZXMgeW91IGFy ZSBpbnRlcmVzdGVkIGluLgoKPj4gKwo+PiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BF UkZDTlRfQ0ZHLAo+PiArICAgICAgICAgICAgICAgICBjZmcgfCBHUFVfUEVSRkNOVF9DRkdfTU9E RShHUFVfUEVSRkNOVF9DRkdfTU9ERV9PRkYpKTsKPj4gKwo+PiArICAgICAgIGlmICghcGZkZXYt PnBlcmZjbnQtPmVuYWJsZWQpCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAg ICAgICBncHVfd3JpdGUocGZkZXYsIEdQVV9QUkZDTlRfSk1fRU4sIDB4ZmZmZmZmZmYpOwo+PiAr ICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BSRkNOVF9TSEFERVJfRU4sIDB4ZmZmZmZmZmYp Owo+PiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BSRkNOVF9NTVVfTDJfRU4sIDB4ZmZm ZmZmZmYpOwo+PiArCj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBEdWUgdG8gUFJMQU0tODE4 NiB3ZSBuZWVkIHRvIGRpc2FibGUgdGhlIFRpbGVyIGJlZm9yZSB3ZSBlbmFibGUgSFcKPj4gKyAg ICAgICAgKiBjb3VudGVycy4KPiAKPiBTZWVtcyBsaWtlIHlvdSBjb3VsZCBqdXN0IGFsd2F5cyBh cHBseSB0aGUgd29yay1hcm91bmQ/IEl0IGRvZXNuJ3QKPiBsb29rIGxpa2UgaXQgd291bGQgYmUg bXVjaCBkaWZmZXJlbnQuCgpUZWNobmljYWxseSB0aGUgd29ya2Fyb3VuZCBjYXVzZXMgdGhlIGRy aXZlciB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24gaW4KdGhlIHdyb25nIG9yZGVyIGJlbG93ICh3 cml0ZSBUSUxFUl9FTiB3aGVuIHRoZSBtb2RlIGlzIE1BTlVBTCkgLSB0aGlzIGlzCmEgd29ya2Fy b3VuZCBmb3IgdGhlIGhhcmR3YXJlIGlzc3VlIChhbmQgdGhlcmVmb3JlIHdvcmtzIG9uIHRoYXQK aGFyZHdhcmUpLiBCdXQgSSB3b3VsZG4ndCBsaWtlIHRvIHNheSBpdCB3b3JrcyBvbiBvdGhlciBo YXJkd2FyZSB3aGljaApkb2Vzbid0IGhhdmUgdGhlIGlzc3VlLgoKPj4gKyAgICAgICAgKi8KPj4g KyAgICAgICBpZiAocGFuZnJvc3RfaGFzX2h3X2lzc3VlKHBmZGV2LCBIV19JU1NVRV84MTg2KSkK Pj4gKyAgICAgICAgICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BSRkNOVF9USUxFUl9FTiwg MCk7Cj4+ICsgICAgICAgZWxzZQo+PiArICAgICAgICAgICAgICAgZ3B1X3dyaXRlKHBmZGV2LCBH UFVfUFJGQ05UX1RJTEVSX0VOLCAweGZmZmZmZmZmKTsKPj4gKwo+PiArICAgICAgIGdwdV93cml0 ZShwZmRldiwgR1BVX1BFUkZDTlRfQ0ZHLAo+PiArICAgICAgICAgICAgICAgICBjZmcgfCBHUFVf UEVSRkNOVF9DRkdfTU9ERShHUFVfUEVSRkNOVF9DRkdfTU9ERV9NQU5VQUwpKTsKPj4gKwo+PiAr ICAgICAgIGlmIChwYW5mcm9zdF9oYXNfaHdfaXNzdWUocGZkZXYsIEhXX0lTU1VFXzgxODYpKQo+ PiArICAgICAgICAgICAgICAgZ3B1X3dyaXRlKHBmZGV2LCBHUFVfUFJGQ05UX1RJTEVSX0VOLCAw eGZmZmZmZmZmKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2R1 bXAoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCj4+ICt7Cj4+ICsgICAgICAgdTY0IGdw dXZhOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZWluaXRfY29tcGxldGlv bigmcGZkZXYtPnBlcmZjbnQtPmR1bXBfY29tcCk7Cj4+ICsgICAgICAgZ3B1dmEgPSBwZmRldi0+ cGVyZmNudC0+Ym8tPm5vZGUuc3RhcnQgPDwgUEFHRV9TSElGVDsKPj4gKyAgICAgICBncHVfd3Jp dGUocGZkZXYsIEdQVV9QRVJGQ05UX0JBU0VfTE8sIGdwdXZhKTsKPj4gKyAgICAgICBncHVfd3Jp dGUocGZkZXYsIEdQVV9QRVJGQ05UX0JBU0VfSEksIGdwdXZhID4+IDMyKTsKPj4gKyAgICAgICBn cHVfd3JpdGUocGZkZXYsIEdQVV9DTUQsIEdQVV9DTURfUEVSRkNOVF9TQU1QTEUpOwo+PiArICAg ICAgIHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCZwZmRl di0+cGVyZmNudC0+ZHVtcF9jb21wLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwo+PiArICAg ICAgIGlmICghcmV0KQo+PiArICAgICAgICAgICAgICAgcmV0ID0gLUVUSU1FRE9VVDsKPj4gKyAg ICAgICBlbHNlIGlmIChyZXQgPiAwKQo+PiArICAgICAgICAgICAgICAgcmV0ID0gMDsKPj4gKwo+ PiArICAgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgcGFuZnJvc3RfcGVyZmNu dF9yZXN1bWUoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCj4gCj4gTm8gc3VzcGVuZCBo YW5kbGluZyBuZWVkZWQ/Cj4gCj4+ICt7Cj4+ICsgICAgICAgaWYgKHBmZGV2LT5wZXJmY250KQo+ PiArICAgICAgICAgICAgICAgcGFuZnJvc3RfcGVyZmNudF9zZXR1cChwZmRldik7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBzc2l6ZV90IHBhbmZyb3N0X3BlcmZjbnRfZW5hYmxlX3JlYWQoc3RydWN0 IGZpbGUgKmZpbGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQo+PiArewo+PiArICAg ICAgIHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ PiArICAgICAgIHNzaXplX3QgcmV0Owo+PiArCj4+ICsgICAgICAgbXV0ZXhfbG9jaygmcGZkZXYt PnBlcmZjbnQtPmxvY2spOwo+PiArICAgICAgIHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVy KHVzZXJfYnVmLCBjb3VudCwgcHBvcywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZmRldi0+cGVyZmNudC0+ZW5hYmxlZCA/ICJZXG4iIDogIk5cbiIsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMik7Cj4+ICsgICAgICAgbXV0ZXhfdW5s b2NrKCZwZmRldi0+cGVyZmNudC0+bG9jayk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gcmV0Owo+ PiArfQo+PiArCj4+ICtzdGF0aWMgc3NpemVfdCBwYW5mcm9zdF9wZXJmY250X2VuYWJsZV93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBv cykKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiA9IGZpbGUt PnByaXZhdGVfZGF0YTsKPj4gKyAgICAgICBib29sIGVuYWJsZTsKPj4gKyAgICAgICBpbnQgcmV0 Owo+PiArCj4+ICsgICAgICAgcmV0ID0ga3N0cnRvYm9vbF9mcm9tX3VzZXIodXNlcl9idWYsIGNv dW50LCAmZW5hYmxlKTsKPj4gKyAgICAgICBpZiAocmV0KQo+PiArICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPj4gKwo+PiArICAgICAgIHJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMocGZkZXYt PmRldik7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4g cmV0Owo+PiArCj4+ICsgICAgICAgbXV0ZXhfbG9jaygmcGZkZXYtPnBlcmZjbnQtPmxvY2spOwo+ PiArICAgICAgIGlmIChlbmFibGUgIT0gcGZkZXYtPnBlcmZjbnQtPmVuYWJsZWQpIHsKPj4gKyAg ICAgICAgICAgICAgIHBmZGV2LT5wZXJmY250LT5lbmFibGVkID0gZW5hYmxlOwo+PiArICAgICAg ICAgICAgICAgcGFuZnJvc3RfcGVyZmNudF9zZXR1cChwZmRldik7Cj4+ICsgICAgICAgfQo+PiAr ICAgICAgIG11dGV4X3VubG9jaygmcGZkZXYtPnBlcmZjbnQtPmxvY2spOwo+PiArCj4+ICsgICAg ICAgcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShwZmRldi0+ZGV2KTsKPj4gKyAgICAgICBwbV9y dW50aW1lX3B1dF9hdXRvc3VzcGVuZChwZmRldi0+ZGV2KTsKPj4gKwo+PiArICAgICAgIHJldHVy biBjb3VudDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfZm9wcyA9IHsKPj4gKyAgICAgICAucmVhZCA9IHBh bmZyb3N0X3BlcmZjbnRfZW5hYmxlX3JlYWQsCj4+ICsgICAgICAgLndyaXRlID0gcGFuZnJvc3Rf cGVyZmNudF9lbmFibGVfd3JpdGUsCj4+ICsgICAgICAgLm9wZW4gPSBzaW1wbGVfb3BlbiwKPj4g KyAgICAgICAubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMg c3NpemVfdCBwYW5mcm9zdF9wZXJmY250X2R1bXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3VzZXIgKnVz ZXJfYnVmLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgY291bnQsIGxvZmZfdCAqcHBvcykKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgcGFuZnJvc3Rf ZGV2aWNlICpwZmRldiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPj4gKyAgICAgICBzc2l6ZV90IHJl dDsKPj4gKwo+PiArICAgICAgIHJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMocGZkZXYtPmRldik7 Cj4+ICsgICAgICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ PiArCj4+ICsgICAgICAgbXV0ZXhfbG9jaygmcGZkZXYtPnBlcmZjbnQtPmxvY2spOwo+PiArICAg ICAgIGlmICghcGZkZXYtPnBlcmZjbnQtPmVuYWJsZWQpIHsKPj4gKyAgICAgICAgICAgICAgIHJl dCA9IC1FSU5WQUw7Cj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gKyAgICAgICB9Cj4+ ICsKPj4gKyAgICAgICByZXQgPSBwYW5mcm9zdF9wZXJmY250X2R1bXAocGZkZXYpOwo+PiArICAg ICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gKwo+PiArICAgICAg IHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZmRldi0+cGVyZmNudC0+YnVm LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmZGV2LT5wZXJmY250 LT5ib3NpemUpOwo+PiArCj4+ICtvdXQ6Cj4+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZwZmRldi0+ cGVyZmNudC0+bG9jayk7Cj4+ICsgICAgICAgcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShwZmRl di0+ZGV2KTsKPj4gKyAgICAgICBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChwZmRldi0+ZGV2 KTsKPj4gKwo+PiArICAgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHBhbmZyb3N0X3BlcmZjbnRfZHVtcF9mb3BzID0gewo+ PiArICAgICAgIC5yZWFkID0gcGFuZnJvc3RfcGVyZmNudF9kdW1wX3JlYWQsCj4+ICsgICAgICAg Lm9wZW4gPSBzaW1wbGVfb3BlbiwKPj4gKyAgICAgICAubGxzZWVrID0gZGVmYXVsdF9sbHNlZWss Cj4+ICt9Owo+PiArCj4+ICtpbnQgcGFuZnJvc3RfcGVyZmNudF9kZWJ1Z2ZzX2luaXQoc3RydWN0 IGRybV9taW5vciAqbWlub3IpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHBhbmZyb3N0X2Rldmlj ZSAqcGZkZXYgPSB0b19wYW5mcm9zdF9kZXZpY2UobWlub3ItPmRldik7Cj4+ICsgICAgICAgc3Ry dWN0IGRlbnRyeSAqZmlsZSwgKmRpcjsKPj4gKwo+PiArICAgICAgIGRpciA9IGRlYnVnZnNfY3Jl YXRlX2RpcigicGVyZmNudCIsIG1pbm9yLT5kZWJ1Z2ZzX3Jvb3QpOwo+PiArICAgICAgIGlmIChJ U19FUlIoZGlyKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRpcik7Cj4+ICsK Pj4gKyAgICAgICBmaWxlID0gZGVidWdmc19jcmVhdGVfZmlsZSgiZHVtcCIsIDA0MDAsIGRpciwg cGZkZXYsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhbmZyb3N0X3Bl cmZjbnRfZHVtcF9mb3BzKTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKGZpbGUpKQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4+ICsKPj4gKyAgICAgICBmaWxlID0gZGVi dWdmc19jcmVhdGVfZmlsZSgiZW5hYmxlIiwgMDYwMCwgZGlyLCBwZmRldiwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfZm9wcyk7 Cj4+ICsgICAgICAgaWYgKElTX0VSUihmaWxlKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQ VFJfRVJSKGZpbGUpOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2lu dCBwYW5mcm9zdF9wZXJmY250X2luaXQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCj4+ ICt7Cj4+ICsgICAgICAgc3RydWN0IHBhbmZyb3N0X3BlcmZjbnQgKnBlcmZjbnQ7Cj4+ICsgICAg ICAgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpibzsKPj4gKyAgICAgICBzaXplX3Qgc2l6 ZTsKPj4gKyAgICAgICB1MzIgc3RhdHVzOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAg ICAgICBpZiAocGFuZnJvc3RfaGFzX2h3X2ZlYXR1cmUocGZkZXYsIEhXX0ZFQVRVUkVfVjQpKSB7 Cj4+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmNvcmVncm91cHM7Cj4+ICsKPj4gKyAg ICAgICAgICAgICAgIG5jb3JlZ3JvdXBzID0gaHdlaWdodDY0KHBmZGV2LT5mZWF0dXJlcy5sMl9w cmVzZW50KTsKPj4gKyAgICAgICAgICAgICAgIHNpemUgPSBuY29yZWdyb3VwcyAqIEJMT0NLU19Q RVJfQ09SRUdST1VQICoKPj4gKyAgICAgICAgICAgICAgICAgICAgICBDT1VOVEVSU19QRVJfQkxP Q0sgKiBCWVRFU19QRVJfQ09VTlRFUjsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IG5sMmMsIG5jb3JlczsKPj4gKwo+PiArICAgICAgICAgICAgICAg LyoKPj4gKyAgICAgICAgICAgICAgICAqIFRPRE86IGRlZmluZSBhIG1hY3JvIHRvIGV4dHJhY3Qg dGhlIG51bWJlciBvZiBsMiBjYWNoZXMgZnJvbQo+PiArICAgICAgICAgICAgICAgICogbWVtX2Zl YXR1cmVzLgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBubDJjID0g KChwZmRldi0+ZmVhdHVyZXMubWVtX2ZlYXR1cmVzID4+IDgpICYgR0VOTUFTSygzLCAwKSkgKyAx Owo+PiArCj4+ICsgICAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICAgICogVGhlIEFS TSBkcml2ZXIgaXMgZ3JvdXBpbmcgY29yZXMgcGVyIGNvcmUgZ3JvdXAgYW5kIHRoZW4KPj4gKyAg ICAgICAgICAgICAgICAqIG9ubHkgdXNpbmcgdGhlIG51bWJlciBvZiBjb3JlcyBpbiBncm91cCAw IHRvIGNhbGN1bGF0ZSB0aGUKPj4gKyAgICAgICAgICAgICAgICAqIHNpemUuIE5vdCBzdXJlIHdo eSB0aGlzIGlzIGRvbmUgbGlrZSB0aGF0LCBidXQgSSBndWVzcwo+PiArICAgICAgICAgICAgICAg ICogc2hhZGVyX3ByZXNlbnQgd2lsbCBvbmx5IHNob3cgY29yZXMgaW4gdGhlIGZpcnN0IGdyb3Vw Cj4+ICsgICAgICAgICAgICAgICAgKiBhbnl3YXkuCj4+ICsgICAgICAgICAgICAgICAgKi8KCkkn bSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBjb21tZW50LiBJJ20gbm90IHN1cmUgd2hpY2gg dmVyc2lvbiBvZgp0aGUgZHJpdmVyIHlvdSBhcmUgbG9va2luZyBhdCwgYnV0IHNoYWRlcl9wcmVz ZW50IHNob3VsZCBjb250YWluIGFsbCB0aGUKY29yZXMgKGluIGV2ZXJ5IGNvcmUgZ3JvdXApLgoK VGhlIGtiYXNlIGRyaXZlciAoaW4gcGFuZnJvc3QncyBnaXQgdHJlZVsxXSksIGNvbnRhaW5zOgoK CWJhc2VfZ3B1X3Byb3BzICpwcm9wcyA9ICZrYmRldi0+Z3B1X3Byb3BzLnByb3BzOwoJdTMyIG5y X2wyID0gcHJvcHMtPmwyX3Byb3BzLm51bV9sMl9zbGljZXM7Cgl1NjQgY29yZV9tYXNrID0gcHJv cHMtPmNvaGVyZW5jeV9pbmZvLmdyb3VwWzBdLmNvcmVfbWFzazsKCgl1MzIgbnJfYmxvY2tzID0g ZmxzNjQoY29yZV9tYXNrKTsKCgkvKiBKTSBhbmQgdGlsZXIgY291bnRlciBibG9ja3MgYXJlIGFs d2F5cyBwcmVzZW50ICovCglkdW1wX3NpemUgPSAoMiArIG5yX2wyICsgbnJfYmxvY2tzKSAqCgkJ CU5SX0NOVF9QRVJfQkxPQ0sgKgoJCQlOUl9CWVRFU19QRVJfQ05UOwoKWzFdCmh0dHBzOi8vZ2l0 bGFiLmZyZWVkZXNrdG9wLm9yZy9wYW5mcm9zdC9tYWxpX2tiYXNlL2Jsb2IvbWFzdGVyL2RyaXZl ci9wcm9kdWN0L2tlcm5lbC9kcml2ZXJzL2dwdS9hcm0vbWlkZ2FyZC9tYWxpX2tiYXNlX3ZpbnN0 ci5jCgppLmUuIHRoZSBudW1iZXIgb2YgY29yZXMgKyBudW1iZXIgb2YgTDIgY2FjaGVzIChwbHVz IDIgZm9yIEpNL3RpbGVyKQptdWx0aXBsaWVkIGJ5IHRoZSBibG9jayBzaXplLgoKQWxzbyBhbm90 aGVyIGRpZmZlcmVuY2Ugd2l0aCB0aGUgYmVsb3cgaXMgdGhhdCBmbHM2NCBhbmQgaHdlaWdodDY0 IGRvbid0CnJldHVybiB0aGUgc2FtZSBudW1iZXJzLiBJZiB0aGUgY29yZSBtYXNrIGlzIG5vbi1j b250aWd1b3VzIHRoaXMgd2lsbApyZXR1cm4gZGlmZmVyZW50IHZhbHVlcy4KCj4+ICsgICAgICAg ICAgICAgICBuY29yZXMgPSBod2VpZ2h0NjQocGZkZXYtPmZlYXR1cmVzLnNoYWRlcl9wcmVzZW50 KTsKPj4gKwo+PiArICAgICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAgICAgICAqIFRoZXJl J3MgYWx3YXlzIG9uZSBKTSBhbmQgb25lIFRpbGVyIGJsb2NrLCBoZW5jZSB0aGUgJysgMicKPj4g KyAgICAgICAgICAgICAgICAqIGhlcmUuCj4+ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAg ICAgICAgICAgIHNpemUgPSAobmwyYyArIG5jb3JlcyArIDIpICoKPj4gKyAgICAgICAgICAgICAg ICAgICAgICBDT1VOVEVSU19QRVJfQkxPQ0sgKiBCWVRFU19QRVJfQ09VTlRFUjsKPj4gKyAgICAg ICB9Cj4+ICsKPj4gKyAgICAgICBwZXJmY250ID0gZGV2bV9remFsbG9jKHBmZGV2LT5kZXYsIHNp emVvZigqcGVyZmNudCksIEdGUF9LRVJORUwpOwo+PiArICAgICAgIGlmICghcGVyZmNudCkKPj4g KyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwpbLi4uXQoKU3RldmUKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs