From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH 0/3] drm/panfrost: Expose HW counters to userspace Date: Mon, 13 May 2019 15:39:52 +0200 Message-ID: <20190513153952.68adf596@collabora.com> References: <20190404152051.17996-1-boris.brezillon@collabora.com> <20190430144238.49963521@collabora.com> <20190511223220.GA15155@rosenzweig.io> <20190512153803.471ef410@collabora.com> <028546a0-546a-b788-567a-a45623d16f5e@arm.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 [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3780889D5F for ; Mon, 13 May 2019 13:39:59 +0000 (UTC) In-Reply-To: <028546a0-546a-b788-567a-a45623d16f5e@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Steven Price Cc: Neil Armstrong , Emil Velikov , dri-devel@lists.freedesktop.org, Rob Herring , Mark Janes , kernel@collabora.com, Alyssa Rosenzweig List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCAxMyBNYXkgMjAxOSAxMzo0ODowOCArMDEwMApTdGV2ZW4gUHJpY2UgPHN0ZXZlbi5w cmljZUBhcm0uY29tPiB3cm90ZToKCj4gT24gMTIvMDUvMjAxOSAxNDozOCwgQm9yaXMgQnJlemls bG9uIHdyb3RlOgo+ID4gT24gU2F0LCAxMSBNYXkgMjAxOSAxNTozMjoyMCAtMDcwMAo+ID4gQWx5 c3NhIFJvc2VuendlaWcgPGFseXNzYUByb3Nlbnp3ZWlnLmlvPiB3cm90ZToKPiA+ICAgCj4gPj4g SGkgYWxsLAo+ID4+Cj4gPj4gQXMgU3RldmVuIFByaWNlIGV4cGxhaW5lZCwgdGhlICJHUFUgdG9w IiBrYmFzZSBhcHByb2FjaCBpcyBvZnRlbiBtb3JlCj4gPj4gdXNlZnVsIGFuZCBhY2N1cmF0ZSB0 aGFuIHBlci1kcmF3IHRpbWluZy4gCj4gPj4KPiA+PiBGb3IgYSAzRCBnYW1lIGluc2lkZSBhIEdQ VS1hY2NlbGVyYXRlZCBkZXNrdG9wLCB0aGUgZ2FtZXMnIGNvdW50ZXJzCj4gPj4gKnNob3VsZCog aW5jbHVkZSBkZXNrdG9wIG92ZXJoZWFkLiBUaGlzIGV4dGVybmFsIG92ZXJoZWFkIGRvZXMgYWZm ZWN0Cj4gPj4gdGhlIGdhbWUncyBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBpZiB0aGUgY29udGV4 dHMgYXJlIGNvbXBldGluZyBmb3IKPiA+PiByZXNvdXJjZXMgbGlrZSBtZW1vcnkgYmFuZHdpZHRo LiBBbiBpc29sYXRlZCBzYW1wbGUgaXMgZWFzeSB0byBhY2hpZXZlCj4gPj4gcnVubmluZyBvbmx5 IHRoZSBhcHAgb2YgaW50ZXJlc3Q7IGluIGlkZWFsIGNvbmRpdGlvbnMgKHplcm8tY29weQo+ID4+ IGZ1bGxzY3JlZW4pLCBkZXNrdG9wIGludGVyZmVyZW5jZSBpcyBuZWdsaWdpYmxlLiAKPiA+Pgo+ ID4+IEZvciBkcml2ZXIgZGV2ZWxvcGVycywgdGhlIHN5c3RlbS13aWRlIG1lYXN1cmVtZW50cyBh cmUgcHJlZmVyYWJsZSwKPiA+PiBwYWludGluZyBhIGNvbXBsZXRlIHN5c3RlbSBwaWN0dXJlIGFu ZCBhdm9pZGluZyBkaXNydXB0aW9ucy4gVGhlcmUgaXMgbm8KPiA+PiByaXNrIG9mIGNvbmZ1c2lv biwgYXMgdGhlIGRyaXZlciBkZXZlbG9wZXJzIHVuZGVyc3RhbmQgaG93IHRoZSBjb3VudGVycwo+ ID4+IGFyZSBleHBvc2VkLiBGdXJ0aGVyLCBiZW5jaG1hcmtzIHJlbmRlcmluZyBkaXJlY3QgdG8g YSBHQk0gc3VyZmFjZSBhcmUKPiA+PiBhdmFpbGFibGUgKGdsbWFyazItZXMyLWRybSksIGVsaW1p bmF0aW5nIGludGVyZmVyZW5jZSBldmVuIHdpdGggcG9vcgo+ID4+IGRlc2t0b3AgcGVyZm9ybWFu Y2UuCj4gPj4KPiA+PiBGb3IgYXBwIGRldmVsb3BlcnMsIHRoZSBjb25mdXNpb24gb2YgbXVsdGkt Y29udGV4dCBpbnRlcmZlcmVuY2UgaXMKPiA+PiB1bmZvcnR1bmF0ZS4gTmV2ZXJ0aGVsZXNzLCBp ZiBlbmFibGluZyBjb3VudGVycyB3ZXJlIHRvIHNsb3cgZG93biBhbgo+ID4+IGFwcCwgdGhlIGNv bmZ1c2lvbiBjb3VsZCBiZSB3b3JzZS4gQ29uc2lkZXIgc2Vjb25kLW9yZGVyIGNoYW5nZXMgaW4g dGhlCj4gPj4gYXBwJ3MgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGR1ZSB0byBzbG93ZG93 bjogaWYgdGVjaG5pcXVlcyBsaWtlCj4gPj4gZHluYW1pYyByZXNvbHV0aW9uIHNjYWxpbmcgYXJl IGVtcGxveWVkLCB0aGUgY291bnRlcnMnIHJlc3VsdHMgY2FuIGJlCj4gPj4gaW52YWxpZC4gIExp a2V3aXNlLCBldmVuIGlmIHRoZSBsb3dlci1wZXJmb3JtYW5jZSBjb3VudGVycyBhcmUKPiA+PiBh cHByb3ByaWF0ZSBmb3IgcHVyZWx5IGdyYXBoaWNhbCB3b3JrbG9hZHMsIGNvbXBsZXggYXBwcyB3 aXRoIHZhcmlhYmxlCj4gPj4gQ1BVIG92ZXJoZWFkIChlLmcuIGZyb20gYW4gRlBTLWRlcGVuZGVu dCBwaHlzaWNzIGVuZ2luZSkgY2FuIGZ1cnRoZXIKPiA+PiBjb25mb3VuZCBjb3VudGVycy4gTG93 LW92ZXJoZWFkIHN5c3RlbS13aWRlIG1lYXN1cmVtZW50cyBtaXRpZ2F0ZSB0aGVzZQo+ID4+IGNv bmNlcm5zLiAgCj4gPiAKPiA+IEknZCBqdXN0IGxpa2UgdG8gcG9pbnQgb3V0IHRoYXQgZHVtcGlu ZyBjb3VudGVycyB0aGUgd2F5Cj4gPiBtYWxpX2tiYXNlL2dhdG9yIGRvZXMgbGlrZWx5IGhhcyBh biBpbXBhY3Qgb24gcGVyZnMgKGF0IGxlYXN0IG9uIHNvbWUKPiA+IEdQVXMpIGJlY2F1c2Ugb2Yg dGhlIGNsZWFuK2ludmFsaWRhdGUtY2FjaGUgdGhhdCBoYXBwZW5zIGJlZm9yZSAob3IKPiA+IGFm dGVyLCBJIGRvbid0IHJlbWVtYmVyKSBlYWNoIGR1bXAuIElJVUMgYW5kIHRoaXMgY2FjaGUgaXMg YWN0dWFsbHkgIAo+IAo+IFRoZSBjbGVhbiBpcyByZXF1aXJlZCBhZnRlciB0aGUgZHVtcCB0byBl bnN1cmUgdGhhdCB0aGUgQ1BVIGNhbiBzZWUgdGhlCj4gZHVtcGVkIGNvdW50ZXJzIChvdGhlcndp c2UgdGhleSBjb3VsZCBiZSBzdHVjayBpbiB0aGUgR1BVJ3MgY2FjaGUpLgoKSnVzdCB0byBtYWtl IGl0IGNsZWFyLCBJIHdhcyBub3QgcXVlc3Rpb25pbmcgdGhlIG5lZWQgZm9yIGEgY2FjaGUgY2xl YW4KaGVyZSwgSSB3YXMgc2ltcGx5IHBvaW50aW5nIG91dCB0aGF0IGR1bXBpbmcgY291bnRlcnMg aXMgbm90IGZyZWUgZXZlbgp3aGVuIHdlIGRvbid0IGFkZCB0aG9zZSBzZXJpYWxpemF0aW9uIHBv aW50cy4gTm90ZSB0aGF0IGR1bXBpbmcKY291bnRlcnMgYWxzbyBoYXMgYW4gaW1wYWN0IG9uIHRo ZSBjYWNoZS1taXNzIGNvdW50ZXIgb2YgZnV0dXJlIGR1bXBzLApidXQgdGhlcmUncyBub3RoaW5n IHdlIGNhbiBkbyBhYm91dCB0aGF0IG5vIG1hdHRlciB0aGUgc29sdXRpb24gd2UgZ28KZm9yLgoK PiBOb3RlCj4gdGhhdCBpZiB5b3UgZG9uJ3QgaW1tZWRpYXRlbHkgbmVlZCB0byBvYnNlcnZlIHRo ZSB2YWx1ZXMgdGhlIGNsZWFuIGNhbgo+IGJlIGRlZmVycmVkLiBFLmcuIGlmIGVhY2ggZHVtcCB5 b3UgdGFyZ2V0IGEgZGlmZmVyZW50IG1lbW9yeSByZWdpb24gdGhlbgo+IHlvdSBjb3VsZCBwZXJm b3JtIGEgZmx1c2ggb25seSBhZnRlciBzZXZlcmFsIGR1bXBzLgoKQ29ycmVjdC4gSGF2aW5nIGEg cG9vbCBvZiBkdW1wIGJ1ZmZlcnMgbWlnaHQgYmUgYW4gb3B0aW9uIGlmIHdlIG5lZWQgdG8KbWlu aW1pemUgdGhlIGltcGFjdCBvZiBkdW1wcyBhdCBzb21lIHBvaW50LgoKPiAKPiA+IGdsb2JhbCBh bmQgbm90IGEgcGVyIGFkZHJlc3Mgc3BhY2UgdGhpbmcgKHdoaWNoIHdvdWxkIGJlIHBvc3NpYmxl IGlmIHRoZQo+ID4gY2FjaGUgbGluZXMgY29udGFpbiBhIHRhZyBhdHRhY2hpbmcgdGhlbSB0byBh IHNwZWNpZmljIGFkZHJlc3Mgc3BhY2UpLAo+ID4gdGhhdCBtZWFucyBhbGwgam9icyBydW5uaW5n IHdoZW4gdGhlIGNsZWFuK2ludmFsaWRhdGUgaGFwcGVucyB3aWxsIGhhdmUKPiA+IGV4dHJhIGNh Y2hlIG1pc3NlcyBhZnRlciBlYWNoIGR1bXAuIE9mIGNvdXJzZSwgdGhhdCdzIG5vdCBhcyBpbnZh c2l2ZSBhcwo+ID4gdGhlIGZ1bGwgc2VyaWFsaXphdGlvbiB0aGF0IGhhcHBlbnMgd2l0aCBteSBz b2x1dGlvbiwgYnV0IGl0J3Mgbm90IGZyZWUKPiA+IGVpdGhlci4gIAo+IAo+IENhY2hlIGNsZWFu cyAoYXQgdGhlIEwyIGNhY2hlIGxldmVsKSBhcmUgZ2xvYmFsLiBUaGVyZSBhcmUgTDEgY2FjaGVz Cj4gKGFuZCBUTEJzKSBidXQgdGhleSBhcmUgbm90IHJlbGV2YW50IHRvIGNvdW50ZXIgZHVtcGlu Zy4KCk9rYXkuCgo+IAo+IEluIHByYWN0aWNlIGNhY2hlIGNsZWFucyBhcmUgbm90IHRoYXQgZXhw ZW5zaXZlIG1vc3Qgb2YgdGhlIHRpbWUuIEFzIHlvdQo+IG5vdGUgLSBtYWxpX2tiYXNlIGRvZXNu J3QgYm90aGVyIHRvIGF2b2lkIHRoZW0gd2hlbiBkb2luZyBjb3VudGVyIGNhcHR1cmUuCj4gCj4g SXQgc2hvdWxkIGFsc28gYmUgdW5uZWNlc3NhcnkgdG8gImludmFsaWRhdGUiIC0gYSBjbGVhbiBz aG91bGQgYmUKPiBzdWZmaWNpZW50LiBUaGUgaW52YWxpZGF0ZSBpcyBvbmx5IHJlcXVpcmVkIGlm IGUuZy4gTU1VIHBhZ2UgdGFibGVzIGhhdmUKPiBiZWVuIG1vZGlmaWVkIGFzIHdlbGwuCgpJIGFs cmVhZHkgZHJvcHBlZCB0aGUgaW52YWxpZGF0ZSBpbiBteSBwYXRjaCBhcyB3ZSBvbmx5IGhhdmUg YSBnbG9iYWwKYWRkcmVzcyBzcGFjZSByaWdodCBub3cgYW5kIHRoZSBidWZmZXIgdXNlZCB0byBz dG9yZSBwZXJmY250IHZhbHVlcyBpcwphbHdheXMgdGhlIHNhbWUuIFdlJ2xsIGhhdmUgdG8gcmV3 b3JrIHRoYXQgd2hlbiBzdXBwb3J0IGZvciBwZXItY29udGV4dAphZGRyZXNzIHNwYWNlIGlzIGFk ZGVkLgoKPiBUaGF0IHdvdWxkIHJlZHVjZSB0aGUgYWZmZWN0IG9uIGN1cnJlbnRseSBydW5uaW5n Cj4gam9icy4gQnV0IEkgbm90aWNlIHRoYXQgbWFsaV9rYmFzZSBkb2Vzbid0IGFwcGVhciB0byB1 c2UgdGhlICJjbGVhbgo+IG9ubHkiIChHUFVfQ09NTUFORF9DTEVBTl9DQUNIRVMpIG9wdGlvbi4g SSdtIG5vdCBhd2FyZSBvZiBpdCBiZWluZwo+IGJyb2tlbiB0aG91Z2guCgonY2xlYW4tb25seScg c2VlbXMgdG8gd29yayBmaW5lIG9uIFQ4NjAgYXQgbGVhc3QuCgo+IAo+ID4+Cj4gPj4gQXMgUm9i IENsYXJrIHN1Z2dlc3RlZCwgc3lzdGVtLXdpZGUgY291bnRlcnMgY291bGQgYmUgZXhwb3NlZCB2 aWEgYQo+ID4+IHNlbWktc3RhbmRhcmRpemVkIGludGVyZmFjZSwgcGVyaGFwcyB3aXRoaW4gZGVi dWdmcy9zeXNmcy4gVGhlIGludGVyZmFjZQo+ID4+IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWx5IHN0 YW5kYXJkLCBhcyB0aGUgbGlzdCBvZiBjb3VudGVycyBleHBvc2VkIHZhcmllcwo+ID4+IHN1YnN0 YW50aWFsbHkgYnkgdmVuZG9yIGFuZCBtb2RlbC4gTmV2ZXJ0aGVsZXNzLCB0aGUgbWVjaGFuaWNz IG9mCj4gPj4gZGlzY292ZXJpbmcsIGVuYWJsaW5nLCByZWFkaW5nLCBhbmQgZGlzYWJsaW5nIGNv dW50ZXJzIGNhbiBiZQo+ID4+IHN0YW5kYXJkaXplZCwgYXMgY2FuIGEgc21hbGwgc2V0IG9mIHVu aXZlcnNhbGx5IG1lYW5pbmdmdWwgY291bnRlcnMgbGlrZQo+ID4+IHRvdGFsIEdQVSB1dGlsaXph dGlvbi4gVGhpcyB3b3VsZCBwZXJtaXQgYSB2ZW5kb3ItaW5kZXBlbmRlbnQgR1BVIHRvcAo+ID4+ IGFwcCBhcyBzdWdnZXN0ZWQsIGFzIGlzIEkgYmVsaWV2ZSBjdXJyZW50bHkgcG9zc2libGUgd2l0 aAo+ID4+IHZlbmRvci1zcGVjaWZpYyBkb3duc3RyZWFtIGtlcm5lbHMgKGUuZy4gdmlhIEdhdG9y L1N0cmVhbWxpbmUgZm9yIE1hbGkpCj4gPj4KPiA+PiBJdCBsb29rcyBsaWtlIHRoaXMgZGlzY3Vz c2lvbiBpcyBkb3JtYW50LiBDb3VsZCB3ZSB0cnkgdG8gZ2V0IHRoaXMKPiA+PiBzb3J0ZWQ/IEZv ciBQYW5mcm9zdCwgSSdtIGhpdHRpbmcgR1BVLXNpZGUgYm90dGxlbmVja3MgdGhhdCBJJ20gdW5h YmxlCj4gPj4gdG8gZGlhZ25vc2Ugd2l0aG91dCBhY2Nlc3MgdG8gdGhlIGNvdW50ZXJzLCBzbyBJ J20gZWFnZXIgZm9yIGEgbWFpbmxpbmUKPiA+PiBzb2x1dGlvbiB0byBiZSBpbXBsZW1lbnRlZC4g IAo+ID4gCj4gPiBJIHNwZW50IGEgYml0IG9mIHRpbWUgdGhpbmtpbmcgYWJvdXQgaXQgYW5kIGxv b2tpbmcgYXQgZGlmZmVyZW50Cj4gPiBzb2x1dGlvbnMuCj4gPiAKPiA+IGRlYnVnZnMvc3lzZnMg bWlnaHQgbm90IGJlIHRoZSBiZXN0IHNvbHV0aW9uLCBlc3BlY2lhbGx5IGlmIHdlIHRoaW5rCj4g PiBhYm91dCB0aGUgbXVsdGktdXNlciBjYXNlIChzZXZlcmFsIGluc3RhbmNlcyBvZiBHUFUgcGVy Zm1vbiB0b29sCj4gPiBydW5uaW5nIGluIHBhcmFsbGVsKSwgaWYgd2Ugd2FudCBpdCB0byB3b3Jr IHByb3Blcmx5IHdlIG5lZWQgYSB3YXkgdG8KPiA+IGluc3RhbnRpYXRlIHNldmVyYWwgcGVyZiBt b25pdG9ycyBhbmQgbGV0IHRoZSBkcml2ZXIgYWRkIHZhbHVlcyB0byBhbGwKPiA+IGFjdGl2ZSBw ZXJmbW9ucyBldmVyeXRpbWUgYSBkdW1wIGhhcHBlbnMgKG5vIG1hdHRlciB3aG8gdHJpZ2dlcmVk IHRoZQo+ID4gZHVtcCkuIFRoYXQncyBleGFjdGx5IHdoYXQgbWFsaV9rYmFzZS9nYXRvciBkb2Vz IEJUVy4gVGhhdCdzIGFjaGlldmFibGUKPiA+IHRocm91Z2ggZGVidWdzIGlmIHdlIGNvbnNpZGVy IGV4cG9zaW5nIGEga25vYiB0byBpbnN0YW50aWF0ZSBzdWNoCj4gPiBwZXJmbW9uIGluc3RhbmNl cywgYnV0IHRoYXQgYWxzbyBtZWFucyByaXNraW5nIHBlcmZtb24gbGVha3MgaWYgdGhlCj4gPiB1 c2VyIGRvZXMgbm90IHRha2UgY2FyZSBvZiBraWxsaW5nIHRoZSBwZXJmbW9uIGl0IGNyZWF0ZWQg d2hlbiBpdCdzIGRvbmUKPiA+IHdpdGggaXQgKG9yIHdoZW4gaXQgY3Jhc2hlcykuIEl0IG1pZ2h0 IGFsc28gcHJvdmUgaGFyZCB0byBleHBvc2UgdGhhdCB0bwo+ID4gbm9uLXJvb3QgdXNlcnMgaW4g YSBzZWN1cmUgd2F5LiAgCj4gCj4gTm90ZSB0aGF0IG1hbGlfa2Jhc2Ugb25seSBoYXMgdG8gbWFp bnRhaW4gbXVsdGlwbGUgc2V0cyBvZiB2YWx1ZXMKPiBiZWNhdXNlIGl0IHByb3ZpZGVzIGJhY2t3 YXJkcyBjb21wYXRpYmlsaXR5IHRvIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZQo+IGRyaXZlci4gWW91 IGNvdWxkIG1haW50YWluIG9uZSBzZXQgb2YgY291bnRlciB2YWx1ZXMgYW5kIHNpbXBseSBlbnN1 cmUKPiB0aGV5IGFyZSBiaWcgZW5vdWdoIG5vdCB0byB3cmFwIChvciBoYW5kbGUgd3JhcHBpbmcs IGJ1dCB0aGF0IGlzIHVnbHkKPiBhbmQgdW5saWtlbHkgdG8gaGFwcGVuKS4gVmVyeSBlYXJseSB2 ZXJzaW9ucyBvZiBrYmFzZSBzaW1wbHkgZXhwb3NlZCB0aGUKPiBoYXJkd2FyZSBmdW5jdGlvbmFs aXR5IChkdW1wIGNvdW50ZXJzIGFuZCByZXNldCkgYW5kIHRoZXJlZm9yZSBmYWNlZCB0aGUKPiBp c3N1ZSB0aGF0IHRoZXJlIGNvdWxkIG9ubHkgZXZlciBiZSBvbmUgdXNlciBvZiBjb3VudGVycyBh dCBhIHRpbWUuIFRoaXMKPiB3YXMgImZpeGVkIiBieSBlbXVsYXRpbmcgdGhlIGV4aXN0ZW5jZSBv ZiBtdWx0aXBsZSBpbnRlcmZhY2VzICh2aW5zdHIgLQo+ICJ2aXJ0dWFsIiBpbnN0cnVtZW50YXRp b24pLiBJZiBJIHdhcyByZWRlc2lnbmluZyBpdCBmcm9tIHNjcmF0Y2ggdGhlbgo+IEknZCBkZWZp bml0ZWx5IHJlbW92ZSB0aGUgInJlc2V0IiBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UgYW5kIGxlYXZl IGl0IGZvcgo+IHRoZSBjbGllbnRzIHRvIGxhdGNoIHRoZSBmaXJzdCB2YWx1ZSAob2YgZWFjaCBj b3VudGVyKSBhbmQgc3VidHJhY3QgdGhhdAo+IGZyb20gc3Vic2VxdWVudCBjb3VudGVyIHJlYWRz LgoKTm90ZWQuCgo+IAo+IFNhZGx5IHRoZSBoYXJkd2FyZSBkb2Vzbid0IGhlbHAgaGVyZSBhbmQg c29tZSAobW9zdD8pIEdQVSByZXZpc2lvbnMgd2lsbAo+IHNhdHVyYXRlIHRoZSBjb3VudGVycyBy YXRoZXIgdGhhbiB3cmFwcGluZy4gSGVuY2UgdGhlIG5lZWQgdG8gZnJlcXVlbnRseQo+IHBvbGwg YW5kIHJlc2V0IHRoZSBjb3VudGVycywgZXZlbiBpZiB5b3Ugb25seSB3YW50IHRoZSAnc3RhcnQn LydlbmQnIHZhbHVlcy4KCk5vdCBzdXJlIHdyYXBwaW5nIHdvdWxkIGJlIGJldHRlciwgYXMgeW91 IGNhbid0IHRlbGwgaG93IG1hbnkgdGltZXMKeW91J3ZlIHJlYWNoZWQgdGhlIG1heCB2YWwuCgpC VFcsIGNvdW50ZXJzIGFyZSByZXNldCBldmVyeSB0aW1lIHdlIGRvIGEgZHVtcCwgcmlnaHQ/IElm IHRoYXQncyB0aGUKY2FzZSwgdGhlcmUncyBubyByaXNrIHRvIGhhdmUgZW5kX3ZhbCA8IHN0YXJ0 X3ZhbCBhbmQgdGhlIG9ubHkgcmlzayBpcwp0byBnZXQgaW5hY2N1cmF0ZSB2YWx1ZXMgd2hlbiBj b3VudGVyX3ZhbCA+IFUzMl9NQVgsIGJ1dCByZWFjaGluZwpVMzJfTUFYIGFscmVhZHkgbWVhbnMg dGhhdCB0aGlzIGV2ZW50IG9jY3VycmVkIGEgbG90IGR1cmluZyB0aGUKbW9uaXRvcmluZyBwZXJp b2QuCgo+IAo+IEhhdmluZyBvbmx5IG9uZSBzZXQgb2YgY291bnRlcnMgbWlnaHQgc2ltcGxpZnkg dGhlIHBvdGVudGlhbCBmb3IgImxlYWtzIgo+IC0gYWx0aG91Z2ggeW91IHN0aWxsIHdhbnQgdG8g ZW5zdXJlIHRoYXQgaWYgbm9ib2R5IGNhcmVzIHlvdSBzdG9wCj4gY29sbGVjdGluZyBjb3VudGVy cy4uLgoKSGFuZGxpbmcgdGhhdCB3aXRoIGEgZGVidWdmcy1iYXNlZCBpZmFjZSBpbXBsaWVzIGlt cGxlbWVudGluZyBzb21lCmhldXJpc3RpYyBsaWtlICdjb3VudGVycyBoYXZlbid0IGJlZW4gZHVt cGVkIGZvciBhIGxvbmcgdGltZSwgbGV0J3MKc3RvcCBtb25pdG9yaW5nIHRoZW0nLCBhbmQgSSdt IG5vdCBhIGJpZyBmYW4gb2Ygc3VjaCB0aGluZ3MuCgpUaGlzIGJlaW5nIHNhaWQsIEkgdGhpbmsg SSdsbCBnbyBmb3IgYSBzaW1wbGUgZGVidWdmcy1iYXNlZCBpZmFjZSB0bwp1bmJsb2NrIEFseXNz YS4gZGVidWdmcyBpcyBub3QgcGFydCBvZiB0aGUgc3RhYmxlLUFCSSBhbmQgSSBndWVzcyB3ZQpj YW4gYWdyZWUgb24gZXhwbGljaXRseSBtYXJraW5nIGl0IGFzICJ1bnN0YWJsZSIgc28gdGhhdCB3 aGVuIHdlIHNldHRsZQpvbiBhIGdlbmVyaWMgaW50ZXJmYWNlIHRvIGV4cG9zZSBzdWNoIGNvdW50 ZXJzIHdlIGNhbiBnZXQgcmlkIG9mIHRoZQpvbGQgb25lLgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=