From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 06/19] drm/i915: Handle log buffer flush interrupt event from GuC Date: Wed, 17 Aug 2016 12:35:16 +0100 Message-ID: <57B44BF4.30301@linux.intel.com> References: <1471428859-10339-1-git-send-email-akash.goel@intel.com> <1471428859-10339-7-git-send-email-akash.goel@intel.com> <57B4458D.4000908@linux.intel.com> <9f742262-6a45-6155-e2db-e530188da642@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 8C0276E833 for ; Wed, 17 Aug 2016 11:35:18 +0000 (UTC) In-Reply-To: <9f742262-6a45-6155-e2db-e530188da642@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Goel, Akash" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzA4LzE2IDEyOjI0LCBHb2VsLCBBa2FzaCB3cm90ZToKPiBPbiA4LzE3LzIwMTYgNDoz NyBQTSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Cj4+IE9uIDE3LzA4LzE2IDExOjE0LCBha2Fz aC5nb2VsQGludGVsLmNvbSB3cm90ZToKPj4+IEZyb206IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdh ci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+Pgo+Pj4gR3VDIHVrZXJuZWwgc2VuZHMgYW4gaW50ZXJy dXB0IHRvIEhvc3QgdG8gZmx1c2ggdGhlIGxvZyBidWZmZXIKPj4+IGFuZCBleHBlY3RzIEhvc3Qg dG8gY29ycmVzcG9uZGluZ2x5IHVwZGF0ZSB0aGUgcmVhZCBwb2ludGVyCj4+PiBpbmZvcm1hdGlv biBpbiB0aGUgc3RhdGUgc3RydWN0dXJlLCBvbmNlIGl0IGhhcyBjb25zdW1lZCB0aGUKPj4+IGxv ZyBidWZmZXIgY29udGVudHMgYnkgY29weWluZyB0aGVtIHRvIGEgZmlsZSBvciBidWZmZXIuCj4+ PiBFdmVuIGlmIEhvc3QgY291bGRuJ3QgY29weSB0aGUgY29udGVudHMsIGl0IGNhbiBzdGlsbCB1 cGRhdGUgdGhlCj4+PiByZWFkIHBvaW50ZXIgc28gdGhhdCBsb2dnaW5nIHN0YXRlIGlzIG5vdCBk aXN0dXJiZWQgb24gR3VDIHNpZGUuCj4+Pgo+Pj4gdjI6Cj4+PiAtIFVzZSBhIGRlZGljYXRlZCB3 b3JrcXVldWUgZm9yIGhhbmRsaW5nIGZsdXNoIGludGVycnVwdC4gKFR2cnRrbykKPj4+IC0gUmVk dWNlIHRoZSBvdmVyYWxsIGxvZyBidWZmZXIgY29weWluZyB0aW1lIGJ5IHNraXBwaW5nIHRoZSBj b3B5IG9mCj4+PiAgICBjcmFzaCBidWZmZXIgYXJlYSBmb3IgcmVndWxhciBjYXNlcyBhbmQgY29w eWluZyBvbmx5IHRoZSBzdGF0ZQo+Pj4gICAgc3RydWN0dXJlIGRhdGEgaW4gZmlyc3QgcGFnZS4K Pj4+Cj4+PiB2MzoKPj4+ICAgLSBDcmVhdGUgYSB2bWFsbG9jIG1hcHBpbmcgb2YgbG9nIGJ1ZmZl ci4gKENocmlzKQo+Pj4gICAtIENvdmVyIHRoZSBmbHVzaCBhY2tub3dsZWRnbWVudCB1bmRlciBy cG0gZ2V0ICYgcHV0LihDaHJpcykKPj4+ICAgLSBSZXZlcnQgdGhlIGNoYW5nZSBvZiBza2lwcGlu ZyB0aGUgY29weSBvZiBjcmFzaCBkdW1wIGFyZWEsIGFzCj4+PiAgICAgbm90IHJlYWxseSBuZWVk ZWQsIHdpbGwgYmUgY292ZXJlZCBieSBzdWJzZXF1ZW50IHBhdGNoLgo+Pj4KPj4+IHY0Ogo+Pj4g ICAtIERlc3Ryb3kgdGhlIHdxIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbiBpbiB3aGljaCBpdCB3 YXMgY3JlYXRlZCwKPj4+ICAgICBwYXNzIGRldl9waXYgcG9pbnRlciBpbnN0ZWFkIG9mIGRldiB0 byBuZXdseSBhZGRlZCBHdUMgZnVuY3Rpb24sCj4+PiAgICAgYWRkIG1vcmUgY29tbWVudHMgJiBy ZW5hbWUgdmFyaWFibGUgZm9yIGNsYXJpdHkuIChUdnJ0a28pCj4+Pgo+Pj4gdjU6Cj4+PiAtIEFs bG9jYXRlICYgZGVzdHJveSB0aGUgZGVkaWNhdGVkIHdxLCBmb3IgaGFuZGxpbmcgZmx1c2ggaW50 ZXJydXB0LAo+Pj4gICAgZnJvbSB0aGUgc2V0dXAvdGVhcmRvd24gcm91dGluZXMgb2YgR3VDIGxv Z2dpbmcuIChDaHJpcykKPj4+IC0gVmFsaWRhdGUgdGhlIGxvZyBidWZmZXIgc2l6ZSB2YWx1ZSBy ZXRyaWV2ZWQgZnJvbSBzdGF0ZSBzdHJ1Y3R1cmUKPj4+ICAgIGFuZCBkbyBzb21lIG1pbm9yIGNs ZWFudXAuIChUdnJ0a28pCj4+PiAtIEZpeCBlcnJvci93YXJuaW5ncyByZXBvcnRlZCBieSBjaGVj a3BhdGNoLiAoVHZydGtvKQo+Pj4gLSBSZWJhc2UuCj4+Pgo+Pj4gdjY6Cj4+PiAgIC0gUmVtb3Zl IHRoZSBpbnRlcnJ1cHRzX2VuYWJsZWQgY2hlY2sgZnJvbSBndWNfY2FwdHVyZV9sb2dzX3dvcmss IG5lZWQKPj4+ICAgICB0byBwcm9jZXNzIHRoYXQgbGFzdCB3b3JrIGl0ZW0gYWxzbywgcXVldWVk IGp1c3QgYmVmb3JlIGRpc2FibGluZwo+Pj4gdGhlCj4+PiAgICAgaW50ZXJydXB0IGFzIGxvZyBi dWZmZXIgZmx1c2ggaW50ZXJydXB0IGhhbmRsaW5nIGlzIGEgYml0IGRpZmZlcmVudAo+Pj4gICAg IGNhc2Ugd2hlcmUgR3VDIGlzIGFjdHVhbGx5IGV4cGVjdGluZyBhbiBBQ0sgZnJvbSBob3N0LCB3 aGljaAo+Pj4gc2hvdWxkIGJlCj4+PiAgICAgcHJvdmlkZWQgdG8ga2VlcCB0aGUgbG9nZ2luZyBn b2luZy4KPj4+ICAgICBTeW5jIGFnYWluc3QgdGhlIHdvcmsgd2lsbCBiZSBkb25lIGJ5IGNhbGxl ciBkaXNhYmxpbmcgdGhlCj4+PiBpbnRlcnJ1cHQuCj4+PiAgIC0gRG9uJ3Qgc2FtcGxlIHRoZSBs b2cgYnVmZmVyIHNpemUgdmFsdWUgZnJvbSBzdGF0ZSBzdHJ1Y3R1cmUsCj4+PiBkaXJlY3RseQo+ Pj4gICAgIHVzZSB0aGUgZXhwZWN0ZWQgdmFsdWUgdG8gbW92ZSB0aGUgcG9pbnRlciAmIGRvIHRo ZSBjb3B5IGFuZCB0aGF0Cj4+PiBjYW5ub3QKPj4+ICAgICBnbyB3cm9uZyAob3V0IG9mIGJvdW5k cykgYXMgRHJpdmVyIG9ubHkgYWxsb2NhdGVkIHRoZSBsb2cgYnVmZmVyCj4+PiBhbmQgdGhlCj4+ PiAgICAgcmVsYXkgYnVmZmVycy4gRHJpdmVyIHNob3VsZCByZWZyYWluIGZyb20gaW50ZXJwcmV0 aW5nIHRoZSBsb2cKPj4+IHBhY2tldCwKPj4+ICAgICBhcyBtdWNoIHBvc3NpYmxlIGFuZCBsZXQg VXNlcnNwYWNlIHBhcnNlciBkZXRlY3QgdGhlIGFub21hbHkuCj4+PiAoQ2hyaXMpCj4+Pgo+Pj4g U2lnbmVkLW9mZi1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNv bT4KPj4+IFNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+ Pj4gLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8 IDE4Ngo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDI4ICsrKystCj4+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgNCArCj4+PiAgIDMgZmlsZXMg Y2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+Cj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+Pj4gaW5kZXggYjA2MmRh Ni4uYWRlNTFjYiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3N1Ym1pc3Npb24uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCj4+PiBAQCAtMTcyLDYgKzE3MiwxNSBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX3Nh bXBsZV9mb3JjZXdha2Uoc3RydWN0Cj4+PiBpbnRlbF9ndWMgKmd1YywKPj4+ICAgICAgIHJldHVy biBob3N0Mmd1Y19hY3Rpb24oZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKPj4+ICAgfQo+ Pj4KPj4+ICtzdGF0aWMgaW50IGhvc3QyZ3VjX2xvZ2J1ZmZlcl9mbHVzaF9jb21wbGV0ZShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCj4+PiArewo+Pj4gKyAgICB1MzIgZGF0YVsxXTsKPj4+ICsKPj4+ ICsgICAgZGF0YVswXSA9IEhPU1QyR1VDX0FDVElPTl9MT0dfQlVGRkVSX0ZJTEVfRkxVU0hfQ09N UExFVEU7Cj4+PiArCj4+PiArICAgIHJldHVybiBob3N0Mmd1Y19hY3Rpb24oZ3VjLCBkYXRhLCAx KTsKPj4+ICt9Cj4+PiArCj4+PiAgIC8qCj4+PiAgICAqIEluaXRpYWxpc2UsIHVwZGF0ZSwgb3Ig Y2xlYXIgZG9vcmJlbGwgZGF0YSBzaGFyZWQgd2l0aCB0aGUgR3VDCj4+PiAgICAqCj4+PiBAQCAt ODI4LDYgKzgzNywxNjMgQEAgZXJyOgo+Pj4gICAgICAgcmV0dXJuIE5VTEw7Cj4+PiAgIH0KPj4+ Cj4+PiArc3RhdGljIHZvaWQgZ3VjX21vdmVfdG9fbmV4dF9idWYoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+Pj4gK3sKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgKmd1Y19nZXRfd3JpdGVf YnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICt7Cj4+PiArICAgIHJldHVybiBOVUxM Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IGd1Y19nZXRfbG9nX2J1ZmZl cl9zaXplKGVudW0gZ3VjX2xvZ19idWZmZXJfdHlwZQo+Pj4gdHlwZSkKPj4+ICt7Cj4+PiArICAg IGlmICh0eXBlID09IEdVQ19JU1JfTE9HX0JVRkZFUikKPj4+ICsgICAgICAgIHJldHVybiAoR1VD X0xPR19JU1JfUEFHRVMgKyAxKSAqIFBBR0VfU0laRTsKPj4+ICsgICAgZWxzZSBpZiAodHlwZSA9 PSBHVUNfRFBDX0xPR19CVUZGRVIpCj4+PiArICAgICAgICByZXR1cm4gKEdVQ19MT0dfRFBDX1BB R0VTICsgMSkgKiBQQUdFX1NJWkU7Cj4+PiArICAgIGVsc2UKPj4+ICsgICAgICAgIHJldHVybiAo R1VDX0xPR19DUkFTSF9QQUdFUyArIDEpICogUEFHRV9TSVpFOwo+Pj4gK30KPj4KPj4gQ291bGQg ZG8gaXQgd2l0aCBhIHN3aXRjaCBzdGF0ZW1lbnQgdG8gZ2V0IGF1dG9tYXRpYyByZW1pbmRlciBv ZiBzaXplCj4+IG5vdCBiZWluZyBoYW5kbGVkIGlmIHNvbWUgZGF5IGEgbmV3IGxvZyBidWZmZXIg dHlwZSBnZXRzIGFkZGVkLiBJdCB3b3VsZAo+PiBwcm9iYWJseSBtb3JlIGluIHRoZSBzdHlsZSBv ZiB0aGUgcmVzdCBvZiB0aGUgZHJpdmVyIGFzIHdlbGwuCj4+Cj4gRmluZSB3aWxsIHVzZSBzd2l0 Y2ggc3RhdGVtZW50IGhlcmUuCj4KPiBTaG91bGQgSSB1c2UgQlVHX09OIGZvciB0aGUgZGVmYXVs dC91bmhhbmRsZWQgY2FzZSA/Cj4gICAgICBjYXNlIEdVQ19JU1JfTE9HX0JVRkZFUgo+Cj4gICAg ICBjYXNlIEdVQ19EUENfTE9HX0JVRkZFUgo+Cj4gICAgICBjYXNlIEdVQ19MT0dfQ1JBU0hfUEFH RVMKPgo+ICAgICAgZGVmYXVsdAo+ICAgICAgICAgIEJVR19PTigxKQoKWW91IGNvdWxkIHVzZSBN SVNTSU5HX0NBU0UsIGJ1dCBJIHRoaW5rIGNvbXBpbGVyIHNob3VsZCBjb21wbGFpbiBhcyAKd2Vs bC4gU3VwcG9zZSBNSVNTSU5HX0NBU0UgaXMgc2FmZXIuCgo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lk IGd1Y19yZWFkX3VwZGF0ZV9sb2dfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICt7 Cj4+PiArICAgIHN0cnVjdCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSAqbG9nX2J1ZmZlcl9zdGF0ZSwK Pj4+ICpsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlOwo+Pj4gKyAgICBzdHJ1Y3QgZ3VjX2xvZ19i dWZmZXJfc3RhdGUgbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbDsKPj4+ICsgICAgdm9pZCAqc3JjX2Rh dGFfcHRyLCAqZHN0X2RhdGFfcHRyOwo+Pj4gKyAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemU7 Cj4+PiArICAgIGVudW0gZ3VjX2xvZ19idWZmZXJfdHlwZSB0eXBlOwo+Pj4gKwo+Pj4gKyAgICBp ZiAoV0FSTl9PTighZ3VjLT5sb2cuYnVmX2FkZHIpKQo+Pj4gKyAgICAgICAgcmV0dXJuOwo+Pj4g Kwo+Pj4gKyAgICAvKiBHZXQgdGhlIHBvaW50ZXIgdG8gc2hhcmVkIEd1QyBsb2cgYnVmZmVyICov Cj4+PiArICAgIGxvZ19idWZmZXJfc3RhdGUgPSBzcmNfZGF0YV9wdHIgPSBndWMtPmxvZy5idWZf YWRkcjsKPj4+ICsKPj4+ICsgICAgLyogR2V0IHRoZSBwb2ludGVyIHRvIGxvY2FsIGJ1ZmZlciB0 byBzdG9yZSB0aGUgbG9ncyAqLwo+Pj4gKyAgICBkc3RfZGF0YV9wdHIgPSBsb2dfYnVmZmVyX3Nu YXBzaG90X3N0YXRlID0KPj4+IGd1Y19nZXRfd3JpdGVfYnVmZmVyKGd1Yyk7Cj4+PiArCj4+PiAr ICAgIC8qIEFjdHVhbCBsb2dzIGFyZSBwcmVzZW50IGZyb20gdGhlIDJuZCBwYWdlICovCj4+PiAr ICAgIHNyY19kYXRhX3B0ciArPSBQQUdFX1NJWkU7Cj4+PiArICAgIGRzdF9kYXRhX3B0ciArPSBQ QUdFX1NJWkU7Cj4+PiArCj4+PiArICAgIGZvciAodHlwZSA9IEdVQ19JU1JfTE9HX0JVRkZFUjsg dHlwZSA8IEdVQ19NQVhfTE9HX0JVRkZFUjsKPj4+IHR5cGUrKykgewo+Pj4gKyAgICAgICAgLyog TWFrZSBhIGNvcHkgb2YgdGhlIHN0YXRlIHN0cnVjdHVyZSBpbiBHdUMgbG9nIGJ1ZmZlciAod2hp Y2gKPj4+ICsgICAgICAgICAqIGlzIHVuY2FjaGVkIG1hcHBlZCkgb24gdGhlIHN0YWNrIHRvIGF2 b2lkIHJlYWRpbmcgZnJvbSBpdAo+Pj4gKyAgICAgICAgICogbXVsdGlwbGUgdGltZXMuCj4+PiAr ICAgICAgICAgKi8KPj4+ICsgICAgICAgIG1lbWNweSgmbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbCwg bG9nX2J1ZmZlcl9zdGF0ZSwKPj4+ICsgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGd1Y19s b2dfYnVmZmVyX3N0YXRlKSk7Cj4+PiArICAgICAgICBidWZmZXJfc2l6ZSA9IGd1Y19nZXRfbG9n X2J1ZmZlcl9zaXplKHR5cGUpOwo+Pj4gKwo+Pj4gKyAgICAgICAgaWYgKGxvZ19idWZmZXJfc25h cHNob3Rfc3RhdGUpIHsKPj4+ICsgICAgICAgICAgICAvKiBGaXJzdCBjb3B5IHRoZSBzdGF0ZSBz dHJ1Y3R1cmUgaW4gc25hcHNob3QgYnVmZmVyICovCj4+PiArICAgICAgICAgICAgbWVtY3B5KGxv Z19idWZmZXJfc25hcHNob3Rfc3RhdGUsICZsb2dfYnVmZmVyX3N0YXRlX2xvY2FsLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlKSk7Cj4+ Cj4+IEkndmUgbm90aWNlZCBub3cgbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbCBpcyB1c2VkIG9ubHkg Zm9yIHRoZQo+PiBzYW1wbGVfd3JpdGVfcHRyIGJlbG93IGFuZCBvdGhlcndpc2UgaXQgY2F1c2Vz IHR3byBjb3BpZXMgb2YgdGhlIHNhbWUKPj4gZGF0YS4KPj4KPiBBY3R1YWxseSBsb2dfYnVmZmVy X3N0YXRlX2xvY2FsIGdldHMgdXNlZCBtb3JlIGluIHRoZSBzdWJzZXF1ZW50Cj4gcGF0Y2hlcywg d2hlcmUgd2UgZG8gdGhlIGJvb2trZWVwaW5nIGFuZCBvcHRpbWl6ZSB0aGUgY29weWluZy4KPgo+ IFtQQVRDSCAxMC8xOV0gZHJtL2k5MTU6IEFkZCBzdGF0cyBmb3IgR3VDIGxvZyBidWZmZXIgZmx1 c2ggaW50ZXJydXB0cwo+IFtQQVRDSCAxMS8xOV0gZHJtL2k5MTU6IE9wdGltaXphdGlvbiB0byBy ZWR1Y2UgdGhlIHNhbXBsaW5nIHRpbWUgb2YgR3VDCj4gbG9nIGJ1ZmZlcgo+Cj4+IFNpbmNlIHRo aXMgYnJhbmNoIGlzIGFuIGludGVyZXN0aW5nIG9uZSwgeW91IGNvdWxkIGF2b2lkIG9uZSBjb3B5 IGJ5Cj4+IHVwZGF0aW5nIHRoZSBsb2dfYnVmZmVyX3N0YXRlLT5yZWFkX3B0ciBmcm9tIHRoZQo+ PiBsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlIGluIHRoaXMgYnJhbmNoLCBhbmQgYWRkIGFuIGVs c2UgYnJhbmNoIHRvCj4+IHVwZGF0ZSBpdCBkaXJlY3RseSBmcm9tIGxvZ19idWZmZXJfc3RhdGUg d2hlbiBsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlCj4+IGlzIG5vdCBhdmFpbGFibGUuCj4+Cj4+ IFNvdW5kcyBsaWtlIGl0IHdvdWxkIGJlIHdvcnRoIGVsaW1pbmF0aW5nIGRvdWJsZSBtZW1jcHks IHdoYXQgZG8geW91Cj4+IHRoaW5rPgo+Pgo+IFdvbid0IHRoZSAybmQgbWVtY3B5IChmcm9tIHRo ZSBjb3B5IG9uIHN0YWNrIHRvIHRoZSByZWxheSBidWZmZXIpIGJlCj4gcmVhbGx5IGZhc3QgPwo+ IFRoZSBjb3B5IG9uIHN0YWNrICgxNiBieXRlcykgd2lsbCBtb3N0IGxpa2VseSBiZSBpbiB0aGUg Q1BVIGNhY2hlIGFuZAo+IHRoZSBzYW1lIGFyZWEgaXMgdXNlZCBmb3IgYWxsIDMgYnVmZmVyIHR5 cGVzLgoKWWVzIEkgcmVhbGl6ZWQgbGF0ZXIgeW91IHVzZSBpdCBtb3JlIGluIGxhdGVyIHBhdGNo ZXMuCgpJIGRvbid0IHRoaW5rIGl0IGlzIHNsb3cgYnV0IHdhcyBqdXN0IHdvbmRlcmluZyBpZiBp dCBjb3VsZCBiZSBtYWRlIAp0aWRpZXIgYnkgZ2V0dGluZyByaWQgb2Ygb25lIGNvcHkuCgpXb3Vs ZCBoYXZlIHRvIGFwcGx5IHRoZSBzZXJpZXMgdG8gc2VlIGhvdyB0aGUgZmluYWwgbG9vcCBsb29r cyBsaWtlLCBidXQgCndvdWxkIHNvbWV0aGluZyBsaWtlIHRoZSBiZWxvdyBiZSBwb3NzaWJsZToK CglpZiAoIWxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUpIHsKCQkuLiByZWFkX3B0ciB1cGRhdGUg ZnJvbSB3YyAuLgoJCWNvbnRpbnVlOwoJfQoKCW1lbWNweSBmcm9tIHdjIHRvIGZpbmFsIGJ1ZmZl cgoKCS4uIHRoZSByZXN0IG9mIHByb2Nlc3NpbmcgeW91IGRvIHJlYWRpbmcgZnJvbSB0aGUgY29w eSAuLgoKPwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK