From: Tvrtko Ursulin Subject: Re: [PATCH 8/8] drm/i915: Expose RPCS (SSEU) configuration to userspace Date: Tue, 14 Aug 2018 19:44:09 +0100 Message-ID: <3254030e-a692-4c19-4744-983737d89a20@linux.intel.com> References: <20180814144058.19286-1-tvrtko.ursulin@linux.intel.com> <20180814144058.19286-9-tvrtko.ursulin@linux.intel.com> <153425879298.3371.14123667677790689667@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 124816E158 for ; Tue, 14 Aug 2018 18:44:12 +0000 (UTC) In-Reply-To: <153425879298.3371.14123667677790689667@skylake-alporthouse-com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE0LzA4LzIwMTggMTU6NTksIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTA4LTE0IDE1OjQwOjU4KQo+PiBGcm9tOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4KPj4gV2Ugd2FudCB0byBhbGxvdyB1c2Vyc3BhY2Ug dG8gcmVjb25maWd1cmUgdGhlIHN1YnNsaWNlIGNvbmZpZ3VyYXRpb24gZm9yCj4+IGl0cyBvd24g dXNlIGNhc2UuIFRvIGRvIHNvLCB3ZSBleHBvc2UgYSBjb250ZXh0IHBhcmFtZXRlciB0byBhbGxv dwo+PiBhZGp1c3RtZW50IG9mIHRoZSBSUENTIHJlZ2lzdGVyIHN0b3JlZCB3aXRoaW4gdGhlIGNv bnRleHQgaW1hZ2UgKGFuZAo+PiBjdXJyZW50bHkgbm90IGFjY2Vzc2libGUgdmlhIExSSSkuIElm IHRoZSBjb250ZXh0IGlzIGFkanVzdGVkIGJlZm9yZQo+PiBmaXJzdCB1c2UsIHRoZSBhZGp1c3Rt ZW50IGlzIGZvciAiZnJlZSI7IG90aGVyd2lzZSBpZiB0aGUgY29udGV4dCBpcwo+PiBhY3RpdmUg d2UgZmx1c2ggdGhlIGNvbnRleHQgb2ZmIHRoZSBHUFUgKHN0YWxsaW5nIGFsbCB1c2VycykgYW5k IGZvcmNpbmcKPj4gdGhlIEdQVSB0byBzYXZlIHRoZSBjb250ZXh0IHRvIG1lbW9yeSB3aGVyZSB3 ZSBjYW4gbW9kaWZ5IGl0IGFuZCBzbwo+PiBlbnN1cmUgdGhhdCB0aGUgcmVnaXN0ZXIgaXMgcmVs b2FkZWQgb24gbmV4dCBleGVjdXRpb24uCj4+Cj4+IFRoZSBvdmVyaGVhZCBvZiBtYW5hZ2luZyBh ZGRpdGlvbmFsIEVVIHN1YnNsaWNlcyBjYW4gYmUgc2lnbmlmaWNhbnQsCj4+IGVzcGVjaWFsbHkg aW4gbXVsdGktY29udGV4dCB3b3JrbG9hZHMuIE5vbi1HUEdQVSBjb250ZXh0cyBzaG91bGQKPj4g cHJlZmVyYWJseSBkaXNhYmxlIHRoZSBzdWJzbGljZXMgaXQgaXMgbm90IHVzaW5nLCBhbmQgb3Ro ZXJzIHNob3VsZAo+PiBmaW5lLXR1bmUgdGhlIG51bWJlciB0byBtYXRjaCB0aGVpciB3b3JrbG9h ZC4KPj4KPj4gV2UgZXhwb3NlIGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB0aGUgUlBDUyByZWdpc3Rl ciwgYWxsb3dpbmcKPj4gY29uZmlndXJhdGlvbiBvZiBzbGljZS9zdWJzbGljZSwgdmlhIG1hc2tz IHBhY2tlZCBpbnRvIGEgdTY0IGZvcgo+PiBzaW1wbGljaXR5LiBGb3IgZXhhbXBsZSwKPj4KPj4g ICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZzsKPj4gICAgICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgc3NldSA9IHsgLmNsYXNz ID0gMCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLmluc3RhbmNlID0gMCwgfTsKPj4KPj4gICAgICAgICAgbWVtc2V0KCZhcmcsIDAs IHNpemVvZihhcmcpKTsKPj4gICAgICAgICAgYXJnLmN0eF9pZCA9IGN0eDsKPj4gICAgICAgICAg YXJnLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVU7Cj4+ICAgICAgICAgIGFyZy52YWx1 ZSA9ICh1aW50cHRyX3QpICZzc2V1Owo+PiAgICAgICAgICBpZiAoZHJtSW9jdGwoZmQsIERSTV9J T0NUTF9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCAmYXJnKSA9PSAwKSB7Cj4+ICAgICAgICAg ICAgICAgICAgc3NldS5wYWNrZWQuc3Vic2xpY2VfbWFzayA9IDA7Cj4+Cj4+ICAgICAgICAgICAg ICAgICAgZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNLCAm YXJnKTsKPj4gICAgICAgICAgfQo+Pgo+PiBjb3VsZCBiZSB1c2VkIHRvIGRpc2FibGUgYWxsIHN1 YnNsaWNlcyB3aGVyZSBzdXBwb3J0ZWQuCj4+Cj4+IHYyOiBGaXggb2Zmc2V0IG9mIENUWF9SX1BX Ul9DTEtfU1RBVEUgaW4gaW50ZWxfbHJfY29udGV4dF9zZXRfc3NldSgpIChMaW9uZWwpCj4+Cj4+ IHYzOiBBZGQgYWJpbGl0eSB0byBwcm9ncmFtIHRoaXMgcGVyIGVuZ2luZSAoQ2hyaXMpCj4+Cj4+ IHY0OiBNb3ZlIG1vc3QgZ2V0X3NzZXUoKSBpbnRvIGk5MTVfZ2VtX2NvbnRleHQuYyAoTGlvbmVs KQo+Pgo+PiB2NTogVmFsaWRhdGUgc3NldSBjb25maWd1cmF0aW9uIGFnYWluc3QgdGhlIGRldmlj ZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVsKQo+Pgo+PiB2NjogQ2hhbmdlIGNvbnRleHQgcG93ZXJn YXRpbmcgc2V0dGluZ3MgdGhyb3VnaCBNSV9TRE0gb24ga2VybmVsIGNvbnRleHQgKENocmlzKQo+ Pgo+PiB2NzogU3luY2hyb25pemUgdGhlIHJlcXVlc3RzIGZvbGxvd2luZyBhIHBvd2VyZ2F0aW5n IHNldHRpbmcgY2hhbmdlIHVzaW5nIGEgZ2xvYmFsCj4+ICAgICAgZGVwZW5kZW5jeSAoQ2hyaXMp Cj4+ICAgICAgSXRlcmF0ZSB0aW1lbGluZXMgdGhyb3VnaCBkZXZfcHJpdi5ndC5hY3RpdmVfcmlu Z3MgKFR2cnRrbykKPj4gICAgICBEaXNhYmxlIFJQQ1MgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZv ciBub24gY2FwYWJsZSB1c2VycyAoTGlvbmVsL1R2cnRrbykKPj4KPj4gdjg6IHMvdW5pb24gaW50 ZWxfc3NldS9zdHJ1Y3QgaW50ZWxfc3NldS8gKExpb25lbCkKPj4gICAgICBzL2Rldl9wcml2L2k5 MTUvIChUdnJ0a28pCj4+ICAgICAgQ2hhbmdlIHVhcGkgY2xhc3MvaW5zdGFuY2UgZmllbGRzIHRv IHUxNiAoVHZydGtvKQo+PiAgICAgIEJ1bXAgbWFzayBmaWVsZHMgdG8gNjRiaXRzIChMaW9uZWwp Cj4+ICAgICAgRG9uJ3QgcmV0dXJuIEVQRVJNIHdoZW4gZHluYW1pYyBzc2V1IGlzIGRpc2FibGVk IChUdnJ0a28pCj4+Cj4+IHY5OiBJbXBvcnQgY29udGV4dCBpbWFnZSBpbnRvIGtlcm5lbCBjb250 ZXh0J3MgcHBndHQgb25seSB3aGVuCj4+ICAgICAgcmVjb25maWd1cmluZyBwb3dlcmdhdGVkIHNs aWNlL3N1YnNsaWNlcyAoQ2hyaXMpCj4+ICAgICAgVXNlIGFsaWFzaW5nIHBwZ3R0IHdoZW4gbmVl ZGVkIChNaWNoZWwpCj4+Cj4+IFR2cnRrbyBVcnN1bGluOgo+Pgo+PiB2MTA6Cj4+ICAgKiBVcGRh dGUgZm9yIHVwc3RyZWFtIGNoYW5nZXMuCj4+ICAgKiBSZXF1ZXN0IHN1Ym1pdCBuZWVkcyBhIFJQ TSByZWZlcmVuY2UuCj4+ICAgKiBSZWplY3Qgb24gIUZVTExfUFBHVFQgZm9yIHNpbXBsaWNpdHku Cj4+ICAgKiBQdWxsIG91dCBnZXQvc2V0IHBhcmFtIHRvIGhlbHBlcnMgZm9yIHJlYWRhYmlsaXR5 IGFuZCBsZXNzIGluZGVudC4KPj4gICAqIFVzZSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNl IGluIGFkZF9nbG9iYWxfYmFycmllciB0byBza2lwIHdhaXRzCj4+ICAgICBvbiB0aGUgc2FtZSB0 aW1lbGluZSBhbmQgYXZvaWQgR0VNX0JVR19PTi4KPj4gICAqIE5vIG5lZWQgdG8gZXhwbGljaXRs eSBhc3NpZ24gYSBOVUxMIHBvaW50ZXIgdG8gZW5naW5lIGluIGxlZ2FjeSBtb2RlLgo+PiAgICog Tm8gbmVlZCB0byBtb3ZlIGdlbjhfbWFrZV9ycGNzIHVwLgo+PiAgICogRmFjdG9yZWQgb3V0IGds b2JhbCBiYXJyaWVyIGFzIHByZXAgcGF0Y2guCj4+ICAgKiBBbGxvdyB0byBvbmx5IENBUF9TWVNf QURNSU4gaWYgIUdlbjExLgo+Pgo+PiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODk5Cj4+IElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20v aW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vlcy8yNjcKPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBM YW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KPj4gQ2M6IERtaXRyeSBS b2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+Cj4+IENjOiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiBDYzogWmhpcGVuZyBHb25nIDx6aGlw ZW5nLmdvbmdAaW50ZWwuY29tPgo+PiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGlu ZW5AbGludXguaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgfCAxODcgKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgIDU1ICsrKysrKysKPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDQgKwo+PiAgIGluY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA0MyArKysrKysKPj4gICA0IGZp bGVzIGNoYW5nZWQsIDI4OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4gaW5kZXggOGExMjk4NGU3NDk1Li42 ZDYyMjA2MzRlOWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKPj4gQEAgLTc3Myw2ICs3NzMsOTEgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgICAgICAgICByZXR1 cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgaW50Cj4+ICtpOTE1X2dlbV9jb250ZXh0X3Jl Y29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNz ZXUpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgt Pmk5MTU7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4+ICsgICAgICAgc3Ry dWN0IGludGVsX3JpbmcgKnJpbmc7Cj4+ICsgICAgICAgaW50IHJldDsKPj4gKwo+PiArICAgICAg IGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArCj4+ICsg ICAgICAgLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMgbmVlZHMgdGhlIGh3IGF3YWtlLiAqLwo+ PiArICAgICAgIGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+PiArCj4+ICsgICAgICAgaTkx NV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gCj4gPwoKSSB3b25kZXJlZCBteXNlbGYgYnV0IGRp ZCBub3QgbWFrZSBteXNlbGYgZGlnIHRocm91Z2ggYWxsIHRoZSBoaXN0b3J5IG9mIAp0aGUgc2Vy aWVzLiBDYW5ub3QgdGhpbmsgdGhhdCBpdCBkb2VzIGFueXRoaW5nIHVzZWZ1bCBpbiB0aGUgY3Vy cmVudCBkZXNpZ24uCgo+PiArCj4+ICsgICAgICAgLyogTm93IHVzZSB0aGUgUkNTIHRvIGFjdHVh bGx5IHJlY29uZmlndXJlLiAqLwo+PiArICAgICAgIGVuZ2luZSA9IGk5MTUtPmVuZ2luZVtSQ1Nd Owo+IAo+ID8gTW9kaWZ5aW5nIHJlZ2lzdGVycyBzdG9yZWQgaW4gYW5vdGhlciBlbmdpbmUncyBj b250ZXh0IGltYWdlLgoKV2VsbCwgSSB3YXMgaG9waW5nIGRlc2lnbiB3YXMga2luZCBvZiBhZ3Jl ZWQgYnkgbm93LgoKPj4gKwo+PiArICAgICAgIHJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+PiArICAgICAgIGlmIChJU19FUlIocnEpKSB7Cj4+ ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKHJxKTsKPj4gKyAgICAgICAgICAgICAgIGdv dG8gb3V0X3B1dDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXQgPSBlbmdpbmUtPmVt aXRfcnBjc19jb25maWcocnEsIGN0eCwgc3NldSk7Cj4gCj4gSXQncyBqdXN0IGFuIExSSSwgSSdk IHJhdGhlciB3ZSBkbyBpdCBkaXJlY3RseSB1bmxlc3MgdGhlcmUncyBldmlkZW5jZQo+IHRoYXQg dGhlcmUgd2lsbCBiZSBuYSBleHBsaWNpdCBycGNzIGNvbmZpZyBpbnN0cnVjdGlvbiBpbiBmdXR1 cmUuIEl0Cj4ganVzdCBkb2Vzbid0IHNlZW0gZ2VuZXJhbCBlbm91Z2guCgpObyBjb21wbGFpbnRz LCBjYW4gZG8uCgo+PiArICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91 dF9hZGQ7Cj4+ICsKPj4gKyAgICAgICAvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3Ro ZXIgYWN0aXZpdHkgKi8KPiAKPiBPbmx5IG5lZWRzIHRvIGJlIGFmdGVyIHRoZSB0YXJnZXQgY3R4 LgoKVHJ1ZSwgc28gZmluZCBqdXN0IHRoZSB0aW1lbGluZSBiZWxvbmdpbmcgdG8gdGFyZ2V0IGNv bnRleHQuIFNvbWUgCmJhY2twb2ludGVycyB3b3VsZCBiZSBuZWVkZWQgdG8gZmluZCBpdC4gT3Ig YSB3YWxrIGFuZCBjb21wYXJlIGFnYWluc3QgCnRhcmdldCBjZS0+cmluZy0+dGltZWxpbmUtPmZl bmNlX2NvbnRleHQuIFNvdW5kcyBsaWtlIG1vcmUgdGhhbiB0aGUgCmxhdHRlciBpc24ndCBqdXN0 aWZpZWQgZm9yIHRoaXMgdXNlIGNhc2UuCgo+IAo+PiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkocmluZywgJmk5MTUtPmd0LmFjdGl2ZV9yaW5ncywgYWN0aXZlX2xpbmspIHsKPj4gKyAgICAg ICAgICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXY7Cj4+ICsKPj4gKyAgICAgICAgICAg ICAgIHByZXYgPSBsYXN0X3JlcXVlc3Rfb25fZW5naW5lKHJpbmctPnRpbWVsaW5lLCBlbmdpbmUp Owo+IAo+IEFzIGNvbnN0cnVjdGVkIGFib3ZlIHlvdSBuZWVkIHRhcmdldC1lbmdpbmUgKyBSQ1Mu CgpUYXJnZXQgZW5naW5lIGlzIGFsd2F5cyBSQ1MuIExvb2tzIGxpa2UgdGhlIGVuZ2luZSBwYXJh bSB0byB0aGlzIApmdW5jdGlvbiBpcyBwb2ludGxlc3MuCgo+IAo+PiArICAgICAgICAgICAgICAg aWYgKHByZXYpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfc3dfZmVuY2VfYXdhaXRf c3dfZmVuY2VfZ2ZwKCZycS0+c3VibWl0LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldi0+c3VibWl0LAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X0ZFTkNF X0dGUCk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgaTkxNV9nZW1fc2V0X2dsb2JhbF9i YXJyaWVyKGk5MTUsIHJxKTsKPiAKPiBUaGlzIGlzIGp1c3QgZm9yIGEgbGluayBmcm9tIGN0eC1l bmdpbmUgdG8gdGhpcyBycS4gT3ZlcmtpbGwgbXVjaD8KPiBQcmVzdW1hYmx5IHRoaXMgc3RlbXMg ZnJvbSB1c2luZyB0aGUgd3JvbmcgZW5naW5lLgoKQUZBSVUgdGhpcyBpcyB0byBlbnN1cmUgdGFy Z2V0IGNvbnRleHQgY2Fubm90IGdldCBhaGVhZCBvZiB0aGlzIHJlcXVlc3QuIApXaXRob3V0IGl0 IGNvdWxkIG92ZXJ0YWtlIGFuZCB0aGVuIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBleGVjYnVmcyAK Zm9sbG93aW5nIHNldCBwYXJhbSB3aWxsIGJlIHdpdGggbmV3IFNTRVUgY29uZmlndXJhdGlvbi4K PiAKPj4gKwo+PiArb3V0X2FkZDoKPj4gKyAgICAgICBpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAK PiBBbmQgSSdkIHN0aWxsIHJlY29tbWVuZCBub3QgdXNpbmcgaW5kaXJlY3QgYWNjZXNzIGlmIHdl IGNhbiBhcHBseSB0aGUKPiBjaGFuZ2VzIGltbWVkaWF0ZWx5LgoKRGlyZWN0IChDUFUpIGFjY2Vz cyBtZWFucyBibG9ja2luZyBpbiBzZXQgcGFyYW0gdW50aWwgdGhlIGNvbnRleHQgaXMgCmlkbGUu IEFGQUlSIGluIG9uZSBvZiB0aGUgZWFybGllciB2ZXJzaW9uIEdQVSBpZGxpbmcgYXBwcm9hY2gg d2FzIHVzZWQgCmJ1dCBJIHRob3VnaHQgdGhhdCBpcyB2ZXJ5IGRhbmdlcm91cyBBUEkuIENhbiB3 ZSBzb21laG93IHRha2UganVzdCBvbmUgCmNvbnRleHQgb3V0IG9mIGNpcmN1bGF0aW9uPyBTdGls bCBoYXZlIHRvIGlkbGUgc2luY2UgaXQgY291bGQgYmUgZGVlcCBpbiAKdGhlIHF1ZXVlLiBUaGUg Y3VycmVudCBhcHByb2FjaCBpcyBuaWNlbHkgYXN5bmMuIEFuZCBJIGRvbid0IGxpa2UgaGF2aW5n IAp0d28gcGF0aHMgLSBkaXJlY3QgaWYgdW5waW5uZWQsIG9yIHZpYSBHUFUgaWYgcGlubmVkLiBJ biBmYWN0IGl0IHdvdWxkIApldmVuIGJlIGEgdGhpcmQgcGF0aCBzaW5jZSBub3JtYWxseSBpdCBo YXBwZW5zIHZpYSBpbml0X3JlZ19zdGF0ZSBvZiAKcHJpc3RpbmUgY29udGV4dHMuCgpSZWdhcmRz LAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=