From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [RESEND PATCH v2 2/2] drm/panfrost: Expose perf counters through debugfs Date: Tue, 14 May 2019 15:55:03 +0200 Message-ID: <20190514155503.75742308@collabora.com> 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 bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id C88D089168 for ; Tue, 14 May 2019 13:55:07 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring Cc: dri-devel , Steven Price , kernel@collabora.com, Alyssa Rosenzweig List-Id: dri-devel@lists.freedesktop.org SGkgUm9iLAoKT24gVHVlLCAxNCBNYXkgMjAxOSAwODozMToyOSAtMDUwMApSb2IgSGVycmluZyA8 cm9iaCtkdEBrZXJuZWwub3JnPiB3cm90ZToKCgo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHBhbmZy b3N0X3BlcmZjbnRfc2V0dXAoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCj4gPiArewo+ ID4gKyAgICAgICB1MzIgY2ZnOwo+ID4gKwo+ID4gKyAgICAgICAvKgo+ID4gKyAgICAgICAgKiBB bHdheXMgdXNlIGFkZHJlc3Mgc3BhY2UgMCBmb3Igbm93Lgo+ID4gKyAgICAgICAgKiBGSVhNRTog dGhpcyBuZWVkcyB0byBiZSB1cGRhdGVkIHdoZW4gd2Ugc3RhcnQgdXNpbmcgZGlmZmVyZW50Cj4g PiArICAgICAgICAqIGFkZHJlc3Mgc3BhY2UuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBj ZmcgPSBHUFVfUEVSRkNOVF9DRkdfQVMoMCk7Cj4gPiArICAgICAgIGlmIChwYW5mcm9zdF9tb2Rl bF9jbXAocGZkZXYsIDB4MTAwMCkgPj0gMCkgIAo+IAo+IFlvdSd2ZSBnb3QgYSBjb3VwbGUgb2Yg dGhlc2UuIFBlcmhhcHMgd2Ugc2hvdWxkIGFkZCBlaXRoZXIgYQo+IG1vZGVsX2lzX2JpZnJvc3Qo KSBoZWxwZXIgb3IgYW4gaXNfYmlmcm9zdCB2YXJpYWJsZSB0byB1c2UuCgpPb3BzLCBBbHlzc2Eg YWxyZWFkeSBtZW50aW9uZWQgdGhhdCBpbiBoZXIgcmV2aWV3IGFuZCBJIGZvcmdvdCB0bwphZGRy ZXNzIGl0IGluIG15IHYyLiBJJ2xsIGFkZCBzdWNoIGFuIGhlbHBlciBpbiB2My4KCj4gCj4gPiAr ICAgICAgICAgICAgICAgY2ZnIHw9IEdQVV9QRVJGQ05UX0NGR19TRVRTRUwoMSk7Cj4gPiArCj4g PiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BFUkZDTlRfQ0ZHLAo+ID4gKyAgICAgICAg ICAgICAgICAgY2ZnIHwgR1BVX1BFUkZDTlRfQ0ZHX01PREUoR1BVX1BFUkZDTlRfQ0ZHX01PREVf T0ZGKSk7Cj4gPiArCj4gPiArICAgICAgIGlmICghcGZkZXYtPnBlcmZjbnQtPmVuYWJsZWQpCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgICBncHVfd3JpdGUocGZk ZXYsIEdQVV9QUkZDTlRfSk1fRU4sIDB4ZmZmZmZmZmYpOwo+ID4gKyAgICAgICBncHVfd3JpdGUo cGZkZXYsIEdQVV9QUkZDTlRfU0hBREVSX0VOLCAweGZmZmZmZmZmKTsKPiA+ICsgICAgICAgZ3B1 X3dyaXRlKHBmZGV2LCBHUFVfUFJGQ05UX01NVV9MMl9FTiwgMHhmZmZmZmZmZik7Cj4gPiArCj4g PiArICAgICAgIC8qCj4gPiArICAgICAgICAqIER1ZSB0byBQUkxBTS04MTg2IHdlIG5lZWQgdG8g ZGlzYWJsZSB0aGUgVGlsZXIgYmVmb3JlIHdlIGVuYWJsZSBIVwo+ID4gKyAgICAgICAgKiBjb3Vu dGVycy4gIAo+IAo+IFNlZW1zIGxpa2UgeW91IGNvdWxkIGp1c3QgYWx3YXlzIGFwcGx5IHRoZSB3 b3JrLWFyb3VuZD8gSXQgZG9lc24ndAo+IGxvb2sgbGlrZSBpdCB3b3VsZCBiZSBtdWNoIGRpZmZl cmVudC4KClllcywgdGhvdWdodCBhYm91dCBkb2luZyB0aGF0IHRvbywgYnV0IEkgZGVjaWRlZCB0 byBrZWVwIGl0IGFzIGRvbmUgaW4KbWFsaV9rYmFzZSBqdXN0IHRvIGJlIHNhZmUuCgo+IAo+ID4g KyAgICAgICAgKi8KPiA+ICsgICAgICAgaWYgKHBhbmZyb3N0X2hhc19od19pc3N1ZShwZmRldiwg SFdfSVNTVUVfODE4NikpCj4gPiArICAgICAgICAgICAgICAgZ3B1X3dyaXRlKHBmZGV2LCBHUFVf UFJGQ05UX1RJTEVSX0VOLCAwKTsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICAg IGdwdV93cml0ZShwZmRldiwgR1BVX1BSRkNOVF9USUxFUl9FTiwgMHhmZmZmZmZmZik7Cj4gPiAr Cj4gPiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BFUkZDTlRfQ0ZHLAo+ID4gKyAgICAg ICAgICAgICAgICAgY2ZnIHwgR1BVX1BFUkZDTlRfQ0ZHX01PREUoR1BVX1BFUkZDTlRfQ0ZHX01P REVfTUFOVUFMKSk7Cj4gPiArCj4gPiArICAgICAgIGlmIChwYW5mcm9zdF9oYXNfaHdfaXNzdWUo cGZkZXYsIEhXX0lTU1VFXzgxODYpKQo+ID4gKyAgICAgICAgICAgICAgIGdwdV93cml0ZShwZmRl diwgR1BVX1BSRkNOVF9USUxFUl9FTiwgMHhmZmZmZmZmZik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9kdW1wKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBm ZGV2KQo+ID4gK3sKPiA+ICsgICAgICAgdTY0IGdwdXZhOwo+ID4gKyAgICAgICBpbnQgcmV0Owo+ ID4gKwo+ID4gKyAgICAgICByZWluaXRfY29tcGxldGlvbigmcGZkZXYtPnBlcmZjbnQtPmR1bXBf Y29tcCk7Cj4gPiArICAgICAgIGdwdXZhID0gcGZkZXYtPnBlcmZjbnQtPmJvLT5ub2RlLnN0YXJ0 IDw8IFBBR0VfU0hJRlQ7Cj4gPiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX1BFUkZDTlRf QkFTRV9MTywgZ3B1dmEpOwo+ID4gKyAgICAgICBncHVfd3JpdGUocGZkZXYsIEdQVV9QRVJGQ05U X0JBU0VfSEksIGdwdXZhID4+IDMyKTsKPiA+ICsgICAgICAgZ3B1X3dyaXRlKHBmZGV2LCBHUFVf Q01ELCBHUFVfQ01EX1BFUkZDTlRfU0FNUExFKTsKPiA+ICsgICAgICAgcmV0ID0gd2FpdF9mb3Jf Y29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoJnBmZGV2LT5wZXJmY250LT5kdW1wX2Nv bXAsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwo+ID4gKyAgICAgICBpZiAoIXJldCkKPiA+ ICsgICAgICAgICAgICAgICByZXQgPSAtRVRJTUVET1VUOwo+ID4gKyAgICAgICBlbHNlIGlmIChy ZXQgPiAwKQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IDA7Cj4gPiArCj4gPiArICAgICAgIHJl dHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgcGFuZnJvc3RfcGVyZmNudF9yZXN1bWUo c3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpICAKPiAKPiBObyBzdXNwZW5kIGhhbmRsaW5n IG5lZWRlZD8KCk5vcGUsIHVubGVzcyB3ZSBjYXJlIGFib3V0IGR1bXBpbmcgdGhlIGNvdW50ZXJz IGJlZm9yZSBzdXNwZW5kaW5nIHRoZQpHUFUsIGJ1dCBnaXZlbiB0aGF0IHRoaXMgZHVtcCB3aWxs IGJlIG92ZXJyaWRkZW4gYnkgdGhlIG5leHQgb25lLCBJCmRvbid0IHNlZSB0aGUgcG9pbnQuIFdv dWxkIG1ha2Ugc2Vuc2UgdG8gZG8gaXQgaWYgdGhlICJ0cmlnZ2VyIGR1bXAiCmFuZCAicmVhZCBk dW1wZWQgdmFsdWVzIiB3ZXJlIDIgc2VwYXJhdGUgb3BlcmF0aW9ucyAoYmVoYXZpb3IgSSBjYW4K ZWFzaWx5IGltcGxlbWVudCBCVFcpLgoKPiAKPiA+ICt7Cj4gPiArICAgICAgIGlmIChwZmRldi0+ cGVyZmNudCkKPiA+ICsgICAgICAgICAgICAgICBwYW5mcm9zdF9wZXJmY250X3NldHVwKHBmZGV2 KTsKPiA+ICt9Cj4gPiArCgoKPiA+ICtpbnQgcGFuZnJvc3RfcGVyZmNudF9pbml0KHN0cnVjdCBw YW5mcm9zdF9kZXZpY2UgKnBmZGV2KQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IHBhbmZyb3N0 X3BlcmZjbnQgKnBlcmZjbnQ7Cj4gPiArICAgICAgIHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqYm87Cj4gPiArICAgICAgIHNpemVfdCBzaXplOwo+ID4gKyAgICAgICB1MzIgc3RhdHVzOwo+ ID4gKyAgICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgICBpZiAocGFuZnJvc3RfaGFzX2h3 X2ZlYXR1cmUocGZkZXYsIEhXX0ZFQVRVUkVfVjQpKSB7Cj4gPiArICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG5jb3JlZ3JvdXBzOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIG5jb3JlZ3Jv dXBzID0gaHdlaWdodDY0KHBmZGV2LT5mZWF0dXJlcy5sMl9wcmVzZW50KTsKPiA+ICsgICAgICAg ICAgICAgICBzaXplID0gbmNvcmVncm91cHMgKiBCTE9DS1NfUEVSX0NPUkVHUk9VUCAqCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIENPVU5URVJTX1BFUl9CTE9DSyAqIEJZVEVTX1BFUl9DT1VO VEVSOwo+ID4gKyAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBubDJjLCBuY29yZXM7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgLyoKPiA+ICsgICAgICAg ICAgICAgICAgKiBUT0RPOiBkZWZpbmUgYSBtYWNybyB0byBleHRyYWN0IHRoZSBudW1iZXIgb2Yg bDIgY2FjaGVzIGZyb20KPiA+ICsgICAgICAgICAgICAgICAgKiBtZW1fZmVhdHVyZXMuCj4gPiAr ICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgICAgbmwyYyA9ICgocGZkZXYtPmZl YXR1cmVzLm1lbV9mZWF0dXJlcyA+PiA4KSAmIEdFTk1BU0soMywgMCkpICsgMTsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgICAvKgo+ID4gKyAgICAgICAgICAgICAgICAqIFRoZSBBUk0gZHJpdmVy IGlzIGdyb3VwaW5nIGNvcmVzIHBlciBjb3JlIGdyb3VwIGFuZCB0aGVuCj4gPiArICAgICAgICAg ICAgICAgICogb25seSB1c2luZyB0aGUgbnVtYmVyIG9mIGNvcmVzIGluIGdyb3VwIDAgdG8gY2Fs Y3VsYXRlIHRoZQo+ID4gKyAgICAgICAgICAgICAgICAqIHNpemUuIE5vdCBzdXJlIHdoeSB0aGlz IGlzIGRvbmUgbGlrZSB0aGF0LCBidXQgSSBndWVzcwo+ID4gKyAgICAgICAgICAgICAgICAqIHNo YWRlcl9wcmVzZW50IHdpbGwgb25seSBzaG93IGNvcmVzIGluIHRoZSBmaXJzdCBncm91cAo+ID4g KyAgICAgICAgICAgICAgICAqIGFueXdheS4KPiA+ICsgICAgICAgICAgICAgICAgKi8KPiA+ICsg ICAgICAgICAgICAgICBuY29yZXMgPSBod2VpZ2h0NjQocGZkZXYtPmZlYXR1cmVzLnNoYWRlcl9w cmVzZW50KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAvKgo+ID4gKyAgICAgICAgICAgICAg ICAqIFRoZXJlJ3MgYWx3YXlzIG9uZSBKTSBhbmQgb25lIFRpbGVyIGJsb2NrLCBoZW5jZSB0aGUg JysgMicKPiA+ICsgICAgICAgICAgICAgICAgKiBoZXJlLgo+ID4gKyAgICAgICAgICAgICAgICAq Lwo+ID4gKyAgICAgICAgICAgICAgIHNpemUgPSAobmwyYyArIG5jb3JlcyArIDIpICoKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgQ09VTlRFUlNfUEVSX0JMT0NLICogQllURVNfUEVSX0NPVU5U RVI7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcGVyZmNudCA9IGRldm1fa3phbGxv YyhwZmRldi0+ZGV2LCBzaXplb2YoKnBlcmZjbnQpLCBHRlBfS0VSTkVMKTsKPiA+ICsgICAgICAg aWYgKCFwZXJmY250KQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ ID4gKyAgICAgICBibyA9IGRybV9nZW1fc2htZW1fY3JlYXRlKHBmZGV2LT5kZGV2LCBzaXplKTsK PiA+ICsgICAgICAgaWYgKElTX0VSUihibykpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIFBU Ul9FUlIoYm8pOwo+ID4gKwo+ID4gKyAgICAgICBwZXJmY250LT5ibyA9IHRvX3BhbmZyb3N0X2Jv KCZiby0+YmFzZSk7Cj4gPiArICAgICAgIHBlcmZjbnQtPmJvc2l6ZSA9IHNpemU7Cj4gPiArCj4g PiArICAgICAgIC8qCj4gPiArICAgICAgICAqIFdlIGFsd2F5cyB1c2UgdGhlIHNhbWUgYnVmZmVy LCBzbyBsZXQncyBtYXAgaXQgb25jZSBhbmQga2VlcCBpdAo+ID4gKyAgICAgICAgKiBtYXBwZWQg dW50aWwgdGhlIGRyaXZlciBpcyB1bmxvYWRlZC4gVGhpcyBtaWdodCBiZSBhIHByb2JsZW0gaWYK PiA+ICsgICAgICAgICogd2Ugc3RhcnQgdXNpbmcgZGlmZmVyZW50IEFTIGFuZCB0aGUgcGVyZmNu dCBCTyBpcyBub3QgbWFwcGVkIGF0Cj4gPiArICAgICAgICAqIHRoZSBzYW1lIEdQVSB2aXJ0dWFs IGFkZHJlc3MuICAKPiAKPiBQZXIgRkQgYWRkcmVzcyBzcGFjZSBpcyBuZXh0IHVwIG9uIG15IGxp c3QsIHNvIHdlJ2xsIG5lZWQgdG8gc29ydCB0aGlzCj4gb3V0IHNvb24uIEFzIHRoaXMgaW50ZXJm YWNlIGlzIG5vdCB0aWVkIHRvIGFueSBGRCwgdGhhdCB3b3VsZCBtZWFuIGl0Cj4gd2lsbCBuZWVk IGl0cyBvd24gYWRkcmVzcyBzcGFjZSAoSSBhc3N1bWUgaXQgZG9lc24ndCBuZWVkIHRvIGJlCj4g c2hhcmVkPykgYW5kIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIGF2YWlsYWJsZSB0byBvdGhlciBj bGllbnRzCj4gKHRob3VnaCBwcmVzdW1hYmx5IHRoZXkgd2lsbCB1c2Ugc29tZSBzb3J0IG9mIExS VSBzd2FwcGluZykuCj4gCj4gTWF5YmUgRW1pbCdzIHN1Z2dlc3Rpb24gb24gYSBtb2R1bGUgcGFy YW0gd291bGQgYmUgc3VmZmljaWVudCB0byBnbwo+IGFoZWFkIGFuZCBtYWtlIHRoaXMgYW4gaW9j dGwgaW50ZXJmYWNlIGluc3RlYWQuCgpPa2F5LiBJIHdhbnRlZCB0byBzdGF5IGF3YXkgZnJvbSBp b2N0bCgpcyBhcyB0aGlzIGZlYXR1cmUgaXMgc3VwcG9zZWQKdG8gYmUgcmVwbGFjZWQgYnkgc29t ZXRoaW5nIGVsc2UsIGJ1dCBpZiB5b3UgdGhpbmsgdGhhdCdzIG9rYXkgdG8KZGVwcmVjYXRlIHRo ZSBpb2N0bCgpcyBJJ20gZmluZSB3aXRoIHRoaXMgb3B0aW9uLgoKPiAKPiA+ICsgICAgICAgICov Cj4gPiArICAgICAgIHJldCA9IHBhbmZyb3N0X21tdV9tYXAocGVyZmNudC0+Ym8pOwo+ID4gKyAg ICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX3B1dF9ibzsKPiA+ICsK PiA+ICsgICAgICAgLyogRGlzYWJsZSBldmVyeXRoaW5nLiAqLwo+ID4gKyAgICAgICBncHVfd3Jp dGUocGZkZXYsIEdQVV9QRVJGQ05UX0NGRywKPiA+ICsgICAgICAgICAgICAgICAgIEdQVV9QRVJG Q05UX0NGR19BUygwKSB8Cj4gPiArICAgICAgICAgICAgICAgICBHUFVfUEVSRkNOVF9DRkdfTU9E RShHUFVfUEVSRkNOVF9DRkdfTU9ERV9PRkYpIHwKPiA+ICsgICAgICAgICAgICAgICAgIChwYW5m cm9zdF9tb2RlbF9jbXAocGZkZXYsIDB4MTAwMCkgPj0gMCA/Cj4gPiArICAgICAgICAgICAgICAg ICAgR1BVX1BFUkZDTlRfQ0ZHX1NFVFNFTCgxKSA6IDApKTsKPiA+ICsgICAgICAgZ3B1X3dyaXRl KHBmZGV2LCBHUFVfUFJGQ05UX0pNX0VOLCAwKTsKPiA+ICsgICAgICAgZ3B1X3dyaXRlKHBmZGV2 LCBHUFVfUFJGQ05UX1NIQURFUl9FTiwgMCk7Cj4gPiArICAgICAgIGdwdV93cml0ZShwZmRldiwg R1BVX1BSRkNOVF9NTVVfTDJfRU4sIDApOwo+ID4gKyAgICAgICBncHVfd3JpdGUocGZkZXYsIEdQ VV9QUkZDTlRfVElMRVJfRU4sIDApOwo+ID4gKwo+ID4gKyAgICAgICBwZXJmY250LT5idWYgPSBk cm1fZ2VtX3ZtYXAoJmJvLT5iYXNlKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihwZXJmY250LT5i dWYpKSB7Cj4gPiArICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihwZXJmY250LT5idWYpOwo+ ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX3B1dF9ibzsKPiA+ICsgICAgICAgfQo+ID4gKwo+ ID4gKyAgICAgICBpbml0X2NvbXBsZXRpb24oJnBlcmZjbnQtPmR1bXBfY29tcCk7Cj4gPiArICAg ICAgIG11dGV4X2luaXQoJnBlcmZjbnQtPmxvY2spOwo+ID4gKyAgICAgICBwZmRldi0+cGVyZmNu dCA9IHBlcmZjbnQ7Cj4gPiArCj4gPiArICAgICAgIC8qCj4gPiArICAgICAgICAqIEludmFsaWRh dGUgdGhlIGNhY2hlIGFuZCBjbGVhciB0aGUgY291bnRlcnMgdG8gc3RhcnQgZnJvbSBhIGZyZXNo Cj4gPiArICAgICAgICAqIHN0YXRlLgo+ID4gKyAgICAgICAgKi8KPiA+ICsgICAgICAgZ3B1X3dy aXRlKHBmZGV2LCBHUFVfSU5UX01BU0ssIDApOwo+ID4gKyAgICAgICBncHVfd3JpdGUocGZkZXYs IEdQVV9JTlRfQ0xFQVIsIEdQVV9JUlFfQ0xFQU5fQ0FDSEVTX0NPTVBMRVRFRCk7Cj4gPiArCj4g PiArICAgICAgIGdwdV93cml0ZShwZmRldiwgR1BVX0NNRCwgR1BVX0NNRF9QRVJGQ05UX0NMRUFS KTsKPiA+ICsgICAgICAgZ3B1X3dyaXRlKHBmZGV2LCBHUFVfQ01ELCBHUFVfQ01EX0NMRUFOX0lO Vl9DQUNIRVMpOwo+ID4gKyAgICAgICByZXQgPSByZWFkbF9yZWxheGVkX3BvbGxfdGltZW91dChw ZmRldi0+aW9tZW0gKyBHUFVfSU5UX1JBV1NUQVQsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdHVzICYKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1BVX0lSUV9DTEVBTl9DQUNIRVNfQ09NUExFVEVELAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAsIDEwMDAwKTsKPiA+ICsgICAgICAg aWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9nZW1fdnVubWFwOwo+ID4gKwo+ ID4gKyAgICAgICBncHVfd3JpdGUocGZkZXYsIEdQVV9JTlRfTUFTSywgR1BVX0lSUV9NQVNLX0FM TCk7ICAKPiAKPiBXZSBhbHJlYWR5IHNldHVwIEdQVV9JTlRfKiByZWdpc3RlcnMgZWxzZXdoZXJl LiBXZSBzaG91bGRuJ3QgaGF2ZSBpdAo+IGluIDIgcGxhY2VzLiBUaGlzIHdhcyB3aHkgdGhlIHJl Z2lzdGVyIGRlZmluaXRpb25zIHdlcmUgbG9jYWwgdG8gdGhlCj4gLmMgZmlsZXMuLi4KCldhcyBu ZWVkZWQgdG8gcHJldmVudCB0aGUgaXJxIGhhbmRsZXIgZnJvbSBjYWxsaW5nIHRoZQpzYW1wbGUv Y2xlYW5fY2FjaGVfZG9uZSgpIGZ1bmN0aW9ucy4gTm93IHRoYXQgdGhvc2UgZnVuY3Rpb25zIGp1 c3QgY2FsbApjb21wbGV0ZSgpIG9uIHRoZSAtPmR1bXBfY29tcCBmaWVsZCBpdCBzaG91bGQgYmUg c2FmZSB0byBnZXQgcmlkIG9mIHRoYXQKdHJpY2sgYW5kIHVzZSB3YWl0X2Zvcl9jb21wbGV0aW9u X3RpbWVvdXQoKSBpbnN0ZWFkIG9mIHJlYWRsX3BvbGwoKS4KCj4gCj4gPiArCj4gPiArICAgICAg IHJldHVybiAwOwo+ID4gKwo+ID4gK2Vycl9nZW1fdnVubWFwOgo+ID4gKyAgICAgICBkcm1fZ2Vt X3Z1bm1hcCgmcGZkZXYtPnBlcmZjbnQtPmJvLT5iYXNlLmJhc2UsIHBmZGV2LT5wZXJmY250LT5i dWYpOwo+ID4gKwo+ID4gK2Vycl9wdXRfYm86Cj4gPiArICAgICAgIGRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZCgmYm8tPmJhc2UpOwo+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ ICsKPiA+ICt2b2lkIHBhbmZyb3N0X3BlcmZjbnRfZmluaShzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNl ICpwZmRldikKPiA+ICt7ICAKPiAKPiBOZWVkIHRvIGRvIHNvbWUgaC93IGNsZWFuLXVwPwoKSSds bCBhZGQgY29kZSB0byBkaXNhYmxlIHRoZSBwZXJmIG1vbml0b3IuCgo+IAo+ID4gKyAgICAgICBk cm1fZ2VtX3Z1bm1hcCgmcGZkZXYtPnBlcmZjbnQtPmJvLT5iYXNlLmJhc2UsIHBmZGV2LT5wZXJm Y250LT5idWYpOwo+ID4gKyAgICAgICBkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJnBmZGV2 LT5wZXJmY250LT5iby0+YmFzZS5iYXNlKTsKPiA+ICt9CgoKVGhhbmtzIGZvciB0aGUgcmV2aWV3 LgoKUmVnYXJkcywKCkJvcmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA==