From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [RFC 0/6] Non perf based Gen Graphics OA unit driver Date: Fri, 16 Oct 2015 11:43:06 +0200 Message-ID: <20151016094306.GA3604@twins.programming.kicks-ass.net> References: <1443537549-6905-1-git-send-email-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1443537549-6905-1-git-send-email-robert@sixbynine.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Robert Bragg Cc: Mark Rutland , Matt Fleming , dri-devel@lists.freedesktop.org, David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Alexander Shishkin , Sourab Gupta , linux-api@vger.kernel.org, Zheng Yan , Daniel Vetter , Ingo Molnar List-Id: linux-api@vger.kernel.org T24gVHVlLCBTZXAgMjksIDIwMTUgYXQgMDM6Mzk6MDNQTSArMDEwMCwgUm9iZXJ0IEJyYWdnIHdy b3RlOgo+IC0gV2UncmUgYnJpZGdpbmcgdHdvIGNvbXBsZXggYXJjaGl0ZWN0dXJlcwo+IAo+ICAg ICBUbyByZXZpZXcgdGhpcyB3b3JrIEkgdGhpbmsgaXQgd2lsbCBiZSByZWxldmFudCB0byBoYXZl IGEgZ29vZAo+ICAgICBnZW5lcmFsIGZhbWlsaWFyaXR5IHdpdGggR2VuIGdyYXBoaWNzIChlLmcu IHRoaW5raW5nIGFib3V0IHRoZSBPQQo+ICAgICB1bml0J3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUg Y29tbWFuZCBzdHJlYW1lciBhbmQgZXhlY2xpc3QKPiAgICAgc2NoZWR1bGluZykgYXMgd2VsbCBh cyBvdXIgdXNlcnNwYWNlIGFyY2hpdGVjdHVyZSBhbmQgaG93IHdlJ3JlCj4gICAgIGNvbnN1bWlu ZyBPQSBkYXRhIHdpdGhpbiBNZXNhIHRvIGltcGxlbWVudCB0aGUKPiAgICAgSU5URUxfcGVyZm9y bWFuY2VfcXVlcnkgZXh0ZW5zaW9uLgo+Cj4gICAgIE9uIHRoZSBmbGlwIHNpZGUgaGVyZSwgaXRz IG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHRoZSBwZXJmCj4gICAgIHVzZXJzcGFjZSBpbnRlcmZh Y2UgKGZvciBtb3N0IHRoaXMgaXMgaGlkZGVuIGJ5IHRvb2xzIHNvIHRoZSBkZXRhaWxzCj4gICAg IGFyZW4ndCBjb21tb24ga25vd2xlZGdlKSBhcyB3ZWxsIGFzIHRoZSBpbnRlcm5hbCBkZXNpZ24s IGNvbnNpZGVyaW5nCj4gICAgIHRoYXQgdGhlIFBNVSB3ZSdyZSBsb29raW5nIGF0IHNlZW1zIHRv IGJyZWFrIHNldmVyYWwgY3VycmVudCBkZXNpZ24KPiAgICAgYXNzdW1wdGlvbnMuIEkgY2FuIG9u bHkgY2xhaW0gYSBsaW1pdGVkIGZhbWlsaWFyaXR5IHdpdGggcGVyZidzCj4gICAgIGRlc2lnbiwg anVzdCBhcyBhIHJlc3VsdCBvZiB0aGlzIHdvcmsuCgpSaWdodDsgYnV0IGEgbGl0dGxlIGVmZm9y dCBhbmQgcGF0aWVuY2Ugb24gYm90aCBzaWRlcyBzaG91bGQgZ2V0IHVzCnRoZXJlIEkgdGhpbmsu IEF0IHdvcnN0IHdlJ2xsIGJvdGggbGVhcm4gc29tZXRoaW5nIG5ldyA7LSkKCj4gLSBUaGUgY3Vy cmVudCBPQSBQTVUgZHJpdmVyIGJyZWFrcyBzb21lIHNpZ25pZmljYW50IGRlc2lnbiBhc3N1bXB0 aW9ucy4KPiAKPiAgICAgRXhpc3RpbmcgcGVyZiBwbXVzIGFyZSB1c2VkIGZvciBwcm9maWxpbmcg d29yayBvbiBhIGNwdSBhbmQgd2UncmUKPiAgICAgaW50cm9kdWNpbmcgdGhlIGlkZWEgb2YgX0lT X0RFVklDRSBwbXVzIHdpdGggZGlmZmVyZW50IHNlY3VyaXR5Cj4gICAgIGltcGxpY2F0aW9ucywg dGhlIG5lZWQgdG8gZmFrZSBjcHUtcmVsYXRlZCBkYXRhIChzdWNoIGFzIHVzZXIva2VybmVsCj4g ICAgIHJlZ2lzdGVycykgdG8gZml0IHdpdGggcGVyZidzIGN1cnJlbnQgZGVzaWduLCBhbmQgYWRk aW5nIF9ERVZJQ0UKPiAgICAgcmVjb3JkcyBhcyBhIHdheSB0byBmb3J3YXJkIGRldmljZS1zcGVj aWZpYyBzdGF0dXMgcmVjb3Jkcy4KClRoZXJlIGFyZSBtb3JlIGRldmljZXMgd2l0aCBjb3VudGVy cyBvbiB0aGFuIEdQVXMsIHNvIEkgdGhpbmsgaXQgbWlnaHQKbWFrZSBzZW5zZSB0byBsb29rIGF0 IGV4dGVuZGluZyBwZXJmIHRvIGJldHRlciBkZWFsIHdpdGggdGhpcy4KCj4gICAgIFRoZSBPQSB1 bml0IHdyaXRlcyByZXBvcnRzIG9mIGNvdW50ZXJzIGludG8gYSBjaXJjdWxhciBidWZmZXIsCj4g ICAgIHdpdGhvdXQgaW52b2x2ZW1lbnQgZnJvbSB0aGUgQ1BVLCBtYWtpbmcgb3VyIFBNVSBkcml2 ZXIgdGhlIGZpcnN0IG9mCj4gICAgIGEga2luZC4KCkFncmVlZCwgdGhpcyBpcyBzb21ld2hhdCAn b2RkJyBmcm9tIHdoZXJlIHdlIGFyZSB0b2RheS4KCj4gICAgIFBlcmYgc3VwcG9ydHMgZ3JvdXBz IG9mIGNvdW50ZXJzIGFuZCBhbGxvd3MgdGhvc2UgdG8gYmUgcmVhZCB2aWEKPiAgICAgdHJhbnNh Y3Rpb25zIGludGVybmFsbHkgYnV0IHRyYW5zYWN0aW9ucyBjdXJyZW50bHkgc2VlbSBkZXNpZ25l ZCB0bwo+ICAgICBiZSBleHBsaWNpdGx5IGluaXRpYXRlZCBmcm9tIHRoZSBjcHUgKHNheSBpbiBy ZXNwb25zZSB0byBhIHVzZXJzcGFjZQo+ICAgICByZWFkKCkpIGFuZCB3aGlsZSB3ZSBjb3VsZCBw dWxsIGEgcmVwb3J0IG91dCBvZiB0aGUgT0EgYnVmZmVyIHdlCj4gICAgIGNhbid0IHRyaWdnZXIg YSByZXBvcnQgZnJvbSB0aGUgY3B1IG9uIGRlbWFuZC4KPgo+ICAgICBSZWxhdGVkIHRvIGJlaW5n IHJlcG9ydCBiYXNlZDsgdGhlIE9BIGNvdW50ZXJzIGFyZSBjb25maWd1cmVkIGluIEhXCj4gICAg IGFzIGEgc2V0IHdoaWxlIHBlcmYgZ2VuZXJhbGx5IGV4cGVjdHMgY291bnRlciBjb25maWd1cmF0 aW9ucyB0byBiZQo+ICAgICBvcnRob2dvbmFsLiBBbHRob3VnaCBjb3VudGVycyBjYW4gYmUgYXNz b2NpYXRlZCB3aXRoIGEgZ3JvdXAgbGVhZGVyCj4gICAgIGFzIHRoZXkgYXJlIG9wZW5lZCwgdGhl cmUncyBubyBjbGVhciBwcmVjZWRlbnQgZm9yIGJlaW5nIGFibGUgdG8KPiAgICAgcHJvdmlkZSBn cm91cC13aWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBhbmQgbm8gb2J2aW91cyBzb2x1dGlv bgo+ICAgICBhcyB5ZXQgdGhhdCdzIGV4cGVjdGVkIHRvIGJlIGFjY2VwdGFibGUgdG8gdXBzdHJl YW0gYW5kIG1lZXRzIG91cgo+ICAgICB1c2Vyc3BhY2UgbmVlZHMuCgpJJ20gbm90IGVudGlyZWx5 IHN1cmUgd2hhdCB5b3UgbWVhbiB3aXRoIGdyb3VwLXdpZGUgY29uZmlndXJhdGlvbgphdHRyaWJ1 dGVzOyBjb3VsZCB5b3UgZWxhYm9yYXRlPwoKPiAgICAgV2UgY3VycmVudGx5IGF2b2lkIHVzaW5n IHBlcmYncyBncm91cGluZyBmZWF0dXJlCj4gICAgIGFuZCBmb3J3YXJkIE9BIHJlcG9ydHMgdG8g dXNlcnNwYWNlIHZpYSBwZXJmJ3MgJ3Jhdycgc2FtcGxlIGZpZWxkLgo+ICAgICBUaGlzIHN1aXRz IG91ciB1c2Vyc3BhY2Ugd2VsbCBjb25zaWRlcmluZyBob3cgY291cGxlZCB0aGUgY291bnRlcnMK PiAgICAgYXJlIHdoZW4gZGVhbGluZyB3aXRoIG5vcm1hbGl6aW5nLiBJdCB3b3VsZCBiZSBpbmNv bnZlbmllbnQgdG8gc3BsaXQKPiAgICAgY291bnRlcnMgdXAgaW50byBzZXBhcmF0ZSBldmVudHMs IG9ubHkgdG8gcmVxdWlyZSB1c2Vyc3BhY2UgdG8KPiAgICAgcmVjb21iaW5lIHRoZW0uIAoKU28g SUYgeW91IHdlcmUgdXNpbmcgYSBncm91cCwgYSBzaW5nbGUgcmVhZCBmcm9tIHRoZSBsZWFkZXIg Y2FuIHJldHVybgp5b3UgYSB2ZWN0b3Igb2YgYWxsIHZhbHVlcyAoUEVSRl9GT1JNQVRfR1JPVVAp LCB0aGlzIGF2b2lkcyBoYXZpbmcgdG8KZG8gdGhhdCByZWNvbWJpbmUuCgpBbm90aGVyIG9wdGlv biB3b3VsZCBiZSB0byB2aWV3IHRoZSBhcnJpdmFsIG9mIGFuIE9BIHZlY3RvciBpbiB0aGUKZGF0 YXN0cmVhbSBhcyBhbiAnZXZlbnQnIGFuZCBnZW5lcmF0ZSBhIFBFUkZfUkVDT1JEX1JFQUQgaW4g dGhlIHBlcmYKYnVmZmVyICh3aGljaCBhZ2FpbiBjYW4gdXNlIHRoZSBHUk9VUCB2ZWN0b3IgZm9y bWF0KS4KCj4gICAgIFJlbGF0ZWQgdG8gY291bnRlciBvcnRob2dvbmFsaXR5OyB3ZSBjYW4ndCB0 aW1lIHNoYXJlIHRoZSBPQSB1bml0LAo+ICAgICB3aGlsZSBldmVudCBzY2hlZHVsaW5nIGlzIGEg Y2VudHJhbCBkZXNpZ24gaWRlYSB3aXRoaW4gcGVyZiBmb3IKPiAgICAgYWxsb3dpbmcgdXNlcnNw YWNlIHRvIG9wZW4gKyBlbmFibGUgbW9yZSBldmVudHMgdGhhbiBjYW4gYmUKPiAgICAgY29uZmln dXJlZCBpbiBIVyBhdCBhbnkgb25lIHRpbWUuCgpTbyB3ZSBoYXZlIG90aGVyIFBNVXMgdGhhdCBj YW5ub3QgZG8gdGhpczsgR2VuIE9BIHdvdWxkIG5vdCBiZSB1bmlxdWUgaW4KdGhpcy4gSW50ZWwg UFQgZm9yIGV4YW1wbGUgb25seSBhbGxvd3MgYSBzaW5nbGUgYWN0aXZlIGV2ZW50LgoKVGhhdCBz YWlkOyBlYXJsaWVyIHRvZGF5IEkgc2F3OgoKICBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRj aD92PTlKM0JRY0FlSHBJJmxpc3Q9UExlNkkzTktyLUk0SjJvTEdYaEdPZUJNRWpoOGgxMGpUMyZp bmRleD03Cgp3aGVyZSBleGFjdGx5IHRoaXMgZmVhdHVyZSB3YXMgbWVudGlvbmVkIGFzIG5vdCBm aXR0aW5nIHdlbGwgaW50byB0aGUKZXhpc3RpbmcgR1BVIHBlcmZvcm1hbmNlIGludGVyZmFjZXMg KEdMX0FNRF9wZXJmb3JtYW5jZV9tb25pdG9yIC8KR0xfSU5URUxfcGVyZm9ybWFuY2VfcXVlcnkp LgoKU28gdGhlcmUgaXMgaGFyZHdhcmUgKE52aWRpYSkgb3V0IHRoZXJlIHRoYXQgZG9lcyBzdXBw b3J0IHRoaXMuIEFsc28KbWVudGlvbmVkIHdhcyB0aGF0IHRoaXMgaGFyZHdhcmUgaGFzIGdsb2Jh bCBhbmQgbG9jYWwgY291bnRlcnMsIHdoZXJlCnRoZSBsb2NhbCBvbmVzIGFyZSBzcGVjaWZpYyB0 byBhIHJlbmRlcmluZyBjb250ZXh0LiBUaGF0IGlzIG5vdCB1bmxpa2UKdGhlIHBlci1jcHUgLyBw ZXItdGFzayBzdHVmZiBwZXJmIGRvZXMuCgo+ICAgICBUaGUgT0EgdW5pdCBpcyBub3QgZGVzaWdu ZWQgdG8KPiAgICAgYWxsb3cgcmUtY29uZmlndXJhdGlvbiB3aGlsZSBpbiB1c2UuIFdlIGNhbid0 IHJlY29uZmlndXJlIHRoZSBPQQo+ICAgICB1bml0IHdpdGhvdXQgbG9vc2luZyBpbnRlcm5hbCBP QSB1bml0IHN0YXRlIHdoaWNoIHdlIGNhbid0IGFjY2Vzcwo+ICAgICBleHBsaWNpdGx5IHRvIHNh dmUgYW5kIHJlc3RvcmUuIFJlY29uZmlndXJpbmcgdGhlIE9BIHVuaXQgaXMgYWxzbwo+ICAgICBy ZWxhdGl2ZWx5IHNsb3csIGludm9sdmluZyB+MTAwIHJlZ2lzdGVyIHdyaXRlcy4gRnJvbSB1c2Vy c3BhY2UgTWVzYQo+ICAgICBhbHNvIGRlcGVuZHMgb24gYSBzdGFibGUgT0EgY29uZmlndXJhdGlv biB3aGVuIGVtaXR0aW5nCj4gICAgIE1JX1JFUE9SVF9QRVJGX0NPVU5UIGNvbW1hbmRzIGFuZCBp bXBvcnRhbnRseSB0aGUgT0EgdW5pdCBjYW4ndCBiZQo+ICAgICBkaXNhYmxlZCB3aGlsZSB0aGVy ZSBhcmUgb3V0c3RhbmRpbmcgTUlfUlBDIGNvbW1hbmRzIGxlc3Qgd2UgaGFuZwo+ICAgICB0aGUg Y29tbWFuZCBzdHJlYW1lci4KClJpZ2h0OyBzZWUgdGhlIFBFUkZfUE1VX0NBUF9FWENMVVNJVkUg c3R1ZmYuCgo+IC0gV2UgbWF5IGJlIG1ha2luZyBzb21lIHRlY2huaWNhbCBjb21wcm9taXNlcyBh LnQubSBmb3IgdGhlIHNha2Ugb2YKPiAgIHVzaW5nIHBlcmYuCj4gCj4gICAgIHBlcmZfZXZlbnRf b3BlbigpIHJlcXVpcmVzIGV2ZW50cyB0byBlaXRoZXIgcmVsYXRlIHRvIGEgcGlkIG9yIGEKPiAg ICAgc3BlY2lmaWMgY3B1IGNvcmUsIHdoaWxlIG91ciBkZXZpY2UgcG11IHJlbGF0ZXMgdG8gbmVp dGhlci4gIEV2ZW50cwo+ICAgICBvcGVuZWQgd2l0aCBhIHBpZCB3aWxsIGJlIGF1dG9tYXRpY2Fs bHkgZW5hYmxlZC9kaXNhYmxlZCBhY2NvcmRpbmcKPiAgICAgdG8gdGhlIHNjaGVkdWxpbmcgb2Yg dGhhdCBwcm9jZXNzIC0gc28gbm90IGFwcHJvcHJpYXRlIGZvciB1cy4KClJpZ2h0OyB0aGUgdHJh ZGl0aW9uYWwgY3B1L3BpZCBtYXBwaW5nIGRvZXNuJ3Qgd29yayB3ZWxsIGZvciBkZXZpY2VzOwpi dXQgbWF5YmUsIHdpdGggc29tZSB3b3JrLCB3ZSBjYW4gY3JlYXRlIHNvbWV0aGluZyBsaWtlIHRo YXQKZ2xvYmFsL2xvY2FsIHJlbmRlciBjb250ZXh0IGZyb20gaXQ7IGFsdGhvdWdoIEkndmUgbm8g Y2x1ZSB3aGF0IGZvcm0KdGhhdCB3b3VsZCBuZWVkIGF0IHRoaXMgdGltZS4KCj4gICAgIFdoZW4K PiAgICAgYW4gZXZlbnQgaXMgcmVsYXRlZCB0byBhIGNwdSBpZCwgcGVyZiBlbnN1cmVzIHBtdSBt ZXRob2RzIHdpbGwgYmUKPiAgICAgaW52b2tlZCB2aWEgYW4gaW50ZXIgcHJvY2VzcyBpbnRlcnJ1 cHQgb24gdGhhdCBjb3JlLiBUbyBhdm9pZAo+ICAgICBpbnZhc2l2ZSBjaGFuZ2VzIG91ciB1c2Vy c3BhY2Ugb3BlbnMgT0EgcGVyZiBldmVudHMgZm9yIGEgc3BlY2lmaWMKPiAgICAgY3B1LiAKClNv bWUgb2YgdGhhdCBtaWdodCBzdGlsbCBtYWtlIHNlbnNlIGluIHRoZSBzZW5zZSB0aGF0IEdQVXMg YXJlIHN1YmplY3QKdG8gdGhlIE5VTUEgdG9wb2xvZ3kgb2YgbWFjaGluZXMuIEkgd291bGQgdGhp bmsgeW91IHdvdWxkIHdhbnQgbW9zdApzdWNoIHRoaW5ncyB0byBiZSBkb25lIG9uIHRoZSBub2Rl IHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8uCgpHcmFudGVkLCB0aGlzIG1pZ2h0IG5vdCBiZSBh IGNvbmNlcm4gZm9yIEludGVsIGdyYXBoaWNzLCBidXQgaXQgbWlnaHQgYmUKcmVsZXZhbnQgZm9y IHNvbWUgb2YgdGhlIGRpc2NyZXRlIEdQVXMuCgo+IC0gSSdtIG5vdCBjb25maWRlbnQgb3VyIHVz ZSBjYXNlIGJlbmVmaXRzIG11Y2ggZnJvbSBidWlsZGluZyBvbiBwZXJmOgo+IAo+ICAgICBXZSBh cmVuJ3QgdXNpbmcgZXhpc3RpbmcgcGVyZiBiYXNlZCB0b29saW5nIHdpdGggb3VyIFBNVS4gRXhp c3RpbmcKPiAgICAgdG9vbHMgdHlwaWNhbGx5IGFzc3VtZSB5b3UncmUgcHJvZmlsaW5nIHdvcmsg cnVubmluZyBvbiBhIGNwdSwgZS5nLgo+ICAgICBleHBlY3Rpbmcgc2FtcGxlcyB0byBiZSBhc3Nv Y2lhdGVkIHdpdGggaW5zdHJ1Y3Rpb24gcG9pbnRlcnMgYW5kCj4gICAgIHVzZXIva2VybmVsIHJl Z2lzdGVycyBhbmQgYWltaW5nIHRvIHJlcHJlc2VudCBtZXRyaWNzIGluIHJlbGF0aW9uCj4gICAg IHRvIGFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlLiBXZSdyZSBmb3J3YXJkaW5nIGZha2UgcmVnaXN0 ZXIgdmFsdWVzCj4gICAgIGFuZCB1c2Vyc3BhY2UgbmVlZHMgbmVlZHMgdG8ga25vdyBob3cgdG8g ZGVjb2RlIHRoZSByYXcgT0EgcmVwb3J0cwo+ICAgICBiZWZvcmUgYW55dGhpbmcgY2FuIGJlIHJl cG9ydGVkIHRvIGEgdXNlci4KPiAgICAgCj4gICAgIFdpdGggdGhlIGJ1ZmZlcmluZyBkb25lIGJ5 IHRoZSBPQSB1bml0IEkgZG9uJ3QgdGhpbmsgd2UgY3VycmVudGx5Cj4gICAgIGJlbmVmaXQgZnJv bSBwZXJmJ3MgbW1hcHBlZCBjaXJjdWxhciBidWZmZXIgaW50ZXJmYWNlLiBXZSBhbHJlYWR5Cj4g ICAgIGhhdmUgYSBkZWNvdXBsZWQgcHJvZHVjZXIgYW5kIGNvbnN1bWVyIGFuZCBzaW5jZSB3ZSBo YXZlIHRvIGNvcHkgb3V0Cj4gICAgIG9mIHRoZSBPQSBidWZmZXIsIGl0IHdvdWxkIHdvcmsgd2Vs bCBmb3IgdXMgdG8gaGlkZSB0aGF0IGNvcHkgaW4KPiAgICAgYSBzaW1wbGVyIHJlYWQoKSBiYXNl ZCBpbnRlcmZhY2UuCj4gCj4gCj4gLSBMb2dpc3RpY2FsbHkgaXQgbWlnaHQgYmUgbW9yZSBwcmFj dGljYWwgdG8gY29udGFpbiB0aGlzIHRvIHRoZQo+ICAgZ3JhcGhpY3Mgc3RhY2suCj4gCj4gICAg IEl0IHNlZW1zIGZhaXIgdG8gY29uc2lkZXIgdGhhdCBpZiB3ZSBjYW4ndCBzZWUgYSB2ZXJ5IGNv bXBlbGxpbmcKPiAgICAgYmVuZWZpdCB0byBidWlsZGluZyBvbiBwZXJmLCB0aGVuIGNvbnRhaW5p bmcgdGhpcyB3b3JrIHRvCj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1IG1heSBzaW1wbGlmeSB0 aGUgcmV2aWV3IHByb2Nlc3MgYXMgd2VsbCBhcwo+ICAgICBmdXR1cmUgbWFpbnRlbmFuY2UgYW5k IGRldmVsb3BtZW50LgoKPiBQZXRlcjsgSSB3b25kZXIgaWYgeW91IHdvdWxkIHRlbmQgdG8gYWdy ZWUgdG9vIHRoYXQgaXQgY291bGQgbWFrZSBzZW5zZQo+IGZvciB1cyB0byBnbyB3aXRoIG91ciBv d24gaW50ZXJmYWNlIGhlcmU/CgpTb3JyeSB0aGlzIHRvb2sgc28gbG9uZzsgdGhpcyB3YW50ZWQg YSB3ZWxsIGNvbnNpZGVyZWQgcmVzcG9uc2UgYW5kCnRob3NlIHRlbmQgdG8gZ2V0IGRlbGF5ZWQg aW4gbGlnaHQgb2YgJ3VyZ2VudCcgc3R1ZmYuCgpXaGlsZSBJIGNhbiBjZXJ0YWlubHkgc2VlIHRo ZSBwYWluIHBvaW50cyBhbmQgd2h5IHlvdSB3b3VsZCByYXRoZXIgbm90CmRlYWwgd2l0aCB0aGVt LiBJIHRoaW5rIGl0IHdvdWxkIG1ha2UgTGludXggYSBiZXR0ZXIgcGxhY2UgaWYgd2UgY291bGQK bWFuYWdlIHRvIGNvbWUgdXAgd2l0aCBhIGdlbmVyaWMgaW50ZXJmYWNlIHRoYXQgd291bGQgd29y ayBmb3IgJ2FsbCcKR1BVcyAoYW5kIHBvc3NpYmx5IG1vcmUgZGV2aWNlcykuCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==