From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 06/20] drm/i915: Handle log buffer flush interrupt event from GuC Date: Fri, 12 Aug 2016 15:07:19 +0100 Message-ID: <57ADD817.50309@linux.intel.com> References: <1470983123-22127-1-git-send-email-akash.goel@intel.com> <1470983123-22127-7-git-send-email-akash.goel@intel.com> <57ADCC71.9060801@linux.intel.com> <670b6e54-9bc0-a30e-8fee-d5c9927c713f@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 8F85D6EBB7 for ; Fri, 12 Aug 2016 14:08:39 +0000 (UTC) In-Reply-To: <670b6e54-9bc0-a30e-8fee-d5c9927c713f@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 Ck9uIDEyLzA4LzE2IDE0OjQ1LCBHb2VsLCBBa2FzaCB3cm90ZToKPgo+Cj4gT24gOC8xMi8yMDE2 IDY6NDcgUE0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBPbiAxMi8wOC8xNiAwNzoyNSwg YWthc2guZ29lbEBpbnRlbC5jb20gd3JvdGU6Cj4+PiBGcm9tOiBTYWdhciBBcnVuIEthbWJsZSA8 c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+Pj4KPj4+IEd1QyB1a2VybmVsIHNlbmRzIGFuIGlu dGVycnVwdCB0byBIb3N0IHRvIGZsdXNoIHRoZSBsb2cgYnVmZmVyCj4+PiBhbmQgZXhwZWN0cyBI b3N0IHRvIGNvcnJlc3BvbmRpbmdseSB1cGRhdGUgdGhlIHJlYWQgcG9pbnRlcgo+Pj4gaW5mb3Jt YXRpb24gaW4gdGhlIHN0YXRlIHN0cnVjdHVyZSwgb25jZSBpdCBoYXMgY29uc3VtZWQgdGhlCj4+ PiBsb2cgYnVmZmVyIGNvbnRlbnRzIGJ5IGNvcHlpbmcgdGhlbSB0byBhIGZpbGUgb3IgYnVmZmVy Lgo+Pj4gRXZlbiBpZiBIb3N0IGNvdWxkbid0IGNvcHkgdGhlIGNvbnRlbnRzLCBpdCBjYW4gc3Rp bGwgdXBkYXRlIHRoZQo+Pj4gcmVhZCBwb2ludGVyIHNvIHRoYXQgbG9nZ2luZyBzdGF0ZSBpcyBu b3QgZGlzdHVyYmVkIG9uIEd1QyBzaWRlLgo+Pj4KPj4+IHYyOgo+Pj4gLSBVc2UgYSBkZWRpY2F0 ZWQgd29ya3F1ZXVlIGZvciBoYW5kbGluZyBmbHVzaCBpbnRlcnJ1cHQuIChUdnJ0a28pCj4+PiAt IFJlZHVjZSB0aGUgb3ZlcmFsbCBsb2cgYnVmZmVyIGNvcHlpbmcgdGltZSBieSBza2lwcGluZyB0 aGUgY29weSBvZgo+Pj4gICAgY3Jhc2ggYnVmZmVyIGFyZWEgZm9yIHJlZ3VsYXIgY2FzZXMgYW5k IGNvcHlpbmcgb25seSB0aGUgc3RhdGUKPj4+ICAgIHN0cnVjdHVyZSBkYXRhIGluIGZpcnN0IHBh Z2UuCj4+Pgo+Pj4gdjM6Cj4+PiAgIC0gQ3JlYXRlIGEgdm1hbGxvYyBtYXBwaW5nIG9mIGxvZyBi dWZmZXIuIChDaHJpcykKPj4+ICAgLSBDb3ZlciB0aGUgZmx1c2ggYWNrbm93bGVkZ21lbnQgdW5k ZXIgcnBtIGdldCAmIHB1dC4oQ2hyaXMpCj4+PiAgIC0gUmV2ZXJ0IHRoZSBjaGFuZ2Ugb2Ygc2tp cHBpbmcgdGhlIGNvcHkgb2YgY3Jhc2ggZHVtcCBhcmVhLCBhcwo+Pj4gICAgIG5vdCByZWFsbHkg bmVlZGVkLCB3aWxsIGJlIGNvdmVyZWQgYnkgc3Vic2VxdWVudCBwYXRjaC4KPj4+Cj4+PiB2NDoK Pj4+ICAgLSBEZXN0cm95IHRoZSB3cSB1bmRlciB0aGUgc2FtZSBjb25kaXRpb24gaW4gd2hpY2gg aXQgd2FzIGNyZWF0ZWQsCj4+PiAgICAgcGFzcyBkZXZfcGl2IHBvaW50ZXIgaW5zdGVhZCBvZiBk ZXYgdG8gbmV3bHkgYWRkZWQgR3VDIGZ1bmN0aW9uLAo+Pj4gICAgIGFkZCBtb3JlIGNvbW1lbnRz ICYgcmVuYW1lIHZhcmlhYmxlIGZvciBjbGFyaXR5LiAoVHZydGtvKQo+Pj4KPj4+IFNpZ25lZC1v ZmYtYnk6IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+PiBT aWduZWQtb2ZmLWJ5OiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KPj4+IC0tLQo+ Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgMTQgKysr Cj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDE1MAo+ Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgICA1ICstCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgMyArCj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwg MTcwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+Pj4gaW5kZXggMGZjZDFjMC4uZmMyZGEzMiAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPj4+IEBAIC03NzAsOCArNzcwLDIwIEBAIHN0YXRpYyBpbnQgaTkxNV93 b3JrcXVldWVzX2luaXQoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+ ICAgICAgIGlmIChkZXZfcHJpdi0+aG90cGx1Zy5kcF93cSA9PSBOVUxMKQo+Pj4gICAgICAgICAg IGdvdG8gb3V0X2ZyZWVfd3E7Cj4+Pgo+Pj4gKyAgICBpZiAoSEFTX0dVQ19TQ0hFRChkZXZfcHJp dikpIHsKPj4KPj4gVGhpcyBqdXN0IHJlbWluZGVkIG1lIHRoYXQgYSBwcmV2aW91cyBwYXRjaCBo YWQ6Cj4+Cj4+ICsgICAgaWYgKEhBU19HVUNfVUNPREUoZGV2KSkKPj4gKyAgICAgICAgZGV2X3By aXYtPnBtX2d1Y19ldmVudHMgPSBHRU45X0dVQ19UT19IT1NUX0lOVF9FVkVOVDsKPj4KPj4gSW4g dGhlIGludGVycnVwdCBzZXR1cC4gSSBkb24ndCB0aGluayB0aGVyZSBpcyBhIGJ1ZyByaWdodCBu b3csIGJ1dAo+PiB0aGVyZSBpcyBhIGRpc2FncmVlbWVudCBiZXR3ZWVuIHRoZSB0d28gd2hpY2gg d291bGQgYmUgZ29vZCB0byByZXNvbHZlLgo+Pgo+PiBUaGlzIEhBU19HVUNfVUNPREUgaW4gdGhl IG90aGVyIHBhdGNoIHNob3VsZCBwcm9iYWJseSBiZSBIQVNfR1VDX1NDSEVECj4+IGZvciBjb3Jy ZWN0bmVzcy4gSSB0aGluay4KPgo+IFNvcnJ5IGZvciBpbmNvbnNpc3RlbmN5LCBXaWxsIHVzZSBI QVNfR1VDX1NDSEVEIGluIHRoZSBwcmV2aW91cyBwYXRjaC4KPgo+IEFzIHBlciBDaHJpcydzIGNv bW1lbnRzIHdpbGwgbW92ZSB0aGUgd3EgaW5pdC9kZXN0cm95IHRvIHRoZSBHdUMgbG9nZ2luZwo+ IHNldHVwL3RlYXJkb3duIHJvdXRpbmVzIChndWNfY3JlYXRlX2xvZ19leHRyYXMsIGd1Y19sb2df Y2xlYW51cCkKPiBZb3UgYXJlIGZpbmUgd2l0aCB0aGF0ID8uCgpZZXMgdGhhdHMgT0sgSSB0aGlu ay4KCj4+Cj4+PiArICAgICAgICAvKiBOZWVkIGEgZGVkaWNhdGVkIHdxIHRvIHByb2Nlc3MgbG9n IGJ1ZmZlciBmbHVzaCBpbnRlcnJ1cHRzCj4+PiArICAgICAgICAgKiBmcm9tIEd1QyB3aXRob3V0 IG11Y2ggZGVsYXkgc28gYXMgdG8gYXZvaWQgYW55IGxvc3Mgb2YgbG9ncy4KPj4+ICsgICAgICAg ICAqLwo+Pj4gKyAgICAgICAgZGV2X3ByaXYtPmd1Yy5sb2cud3EgPQo+Pj4gKyAgICAgICAgICAg IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWd1Y19sb2ciLCAwKTsKPj4+ICsgICAgICAg IGlmIChkZXZfcHJpdi0+Z3VjLmxvZy53cSA9PSBOVUxMKQo+Pj4gKyAgICAgICAgICAgIGdvdG8g b3V0X2ZyZWVfaG90cGx1Z19kcF93cTsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gICAgICAgcmV0dXJu IDA7Cj4+Pgo+Pj4gK291dF9mcmVlX2hvdHBsdWdfZHBfd3E6Cj4+PiArICAgIGRlc3Ryb3lfd29y a3F1ZXVlKGRldl9wcml2LT5ob3RwbHVnLmRwX3dxKTsKPj4+ICAgb3V0X2ZyZWVfd3E6Cj4+PiAg ICAgICBkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+Pj4gICBvdXRfZXJyOgo+Pj4g QEAgLTc4Miw2ICs3OTQsOCBAQCBvdXRfZXJyOgo+Pj4KPj4+ICAgc3RhdGljIHZvaWQgaTkxNV93 b3JrcXVldWVzX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4g ICB7Cj4+PiArICAgIGlmIChIQVNfR1VDX1NDSEVEKGRldl9wcml2KSkKPj4+ICsgICAgICAgIGRl c3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5ndWMubG9nLndxKTsKPj4+ICAgICAgIGRlc3Ryb3lf d29ya3F1ZXVlKGRldl9wcml2LT5ob3RwbHVnLmRwX3dxKTsKPj4+ICAgICAgIGRlc3Ryb3lfd29y a3F1ZXVlKGRldl9wcml2LT53cSk7Cj4+PiAgIH0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+PiBpbmRleCBjN2M2NzlmLi4yNjM1YjY3IDEwMDY0 NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4+IEBA IC0xNzIsNiArMTcyLDE1IEBAIHN0YXRpYyBpbnQgaG9zdDJndWNfc2FtcGxlX2ZvcmNld2FrZShz dHJ1Y3QKPj4+IGludGVsX2d1YyAqZ3VjLAo+Pj4gICAgICAgcmV0dXJuIGhvc3QyZ3VjX2FjdGlv bihndWMsIGRhdGEsIEFSUkFZX1NJWkUoZGF0YSkpOwo+Pj4gICB9Cj4+Pgo+Pj4gK3N0YXRpYyBp bnQgaG9zdDJndWNfbG9nYnVmZmVyX2ZsdXNoX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPj4+ICt7Cj4+PiArICAgIHUzMiBkYXRhWzFdOwo+Pj4gKwo+Pj4gKyAgICBkYXRhWzBdID0g SE9TVDJHVUNfQUNUSU9OX0xPR19CVUZGRVJfRklMRV9GTFVTSF9DT01QTEVURTsKPj4+ICsKPj4+ ICsgICAgcmV0dXJuIGhvc3QyZ3VjX2FjdGlvbihndWMsIGRhdGEsIDEpOwo+Pj4gK30KPj4+ICsK Pj4+ICAgLyoKPj4+ICAgICogSW5pdGlhbGlzZSwgdXBkYXRlLCBvciBjbGVhciBkb29yYmVsbCBk YXRhIHNoYXJlZCB3aXRoIHRoZSBHdUMKPj4+ICAgICoKPj4+IEBAIC04NDAsNiArODQ5LDEyNyBA QCBlcnI6Cj4+PiAgICAgICByZXR1cm4gTlVMTDsKPj4+ICAgfQo+Pj4KPj4+ICtzdGF0aWMgdm9p ZCBndWNfbW92ZV90b19uZXh0X2J1ZihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+PiArewo+Pj4g KyAgICByZXR1cm47Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkKiBndWNfZ2V0X3dyaXRl X2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+PiArewo+Pj4gKyAgICByZXR1cm4gTlVM TDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xvZ19idWZm ZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0IGd1Y19sb2df YnVmZmVyX3N0YXRlICpsb2dfYnVmZmVyX3N0YXRlLAo+Pj4gKmxvZ19idWZmZXJfc25hcHNob3Rf c3RhdGU7Cj4+PiArICAgIHN0cnVjdCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSBsb2dfYnVmZmVyX3N0 YXRlX2xvY2FsOwo+Pj4gKyAgICB2b2lkICpzcmNfZGF0YV9wdHIsICpkc3RfZGF0YV9wdHI7Cj4+ PiArICAgIHUzMiBpLCBidWZmZXJfc2l6ZTsKPj4KPj4gdW5zaWduZWQgaW50IGkgaWYgeW91IGNh biBiZSBib3RoZXJlZC4KPgo+IEZpbmUgd2lsbCBkbyB0aGF0IGZvciBib3RoIGkgJiBidWZmZXJf c2l6ZS4KCmJ1ZmZlcl9zaXplIGNhbiBtYXRjaCB0aGUgdHlwZSBvZiBsb2dfYnVmZmVyX3N0YXRl X2xvY2FsLnNpemUgb3IgdXNlIApzb21ldGhpbmcgZWxzZSBpZiBtb3JlIGFwcHJvcHJpYXRlLgoK PiBCdXQgSSByZW1lbWJlciBlYXJsaWVyIGluIG9uZSBvZiB0aGUgcGF0Y2gsIHlvdSBzdWdnZXN0 ZWQgdG8gdXNlIHUzMiBhcwo+IGEgdHlwZSBmb3Igc29tZSB2YXJpYWJsZXMuCj4gUGxlYXNlIGNv dWxkIHlvdSBzaGFyZSB0aGUgZ3VpZGVsaW5lLgo+IFNob3VsZCB1MzIsIHU2NCBiZSB1c2VkIHdl IGFyZSBleGFjdGx5IHN1cmUgb2YgdGhlIHJhbmdlIG9mIHRoZQo+IHZhcmlhYmxlLCBsaWtlIGZv ciB2YXJpYWJsZXMgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIgdmFsdWVzID8KCkRlcGVuZHMgd2hh dCB0aGUgdmFyaWFibGUgaXMuICJpIiBpbiB0aGlzIGNhc2UgaXMganVzdCBhIHN0YW5kYXJkIApj b3VudGVyIHNvIG5vdCBhcHByb3ByaWF0ZSB0byB1c2UgdTMyLiBJdCBpcyBub3QgdGhhdCB3cm9u ZyBvbiB4ODYsIGp1c3QgCmxvb2tzIGEgYml0IG91dCBvZiBwbGFjZS4KCmdyZXAgInUzMiBpOyIg aGFzIG5vIGhpdHMgaW4gaTkxNS4gOikKClRoZXkgY2FuL3Nob3VsZCBiZSB1c2VkIGZvciB2YXJp YWJsZXMgdGllZCB3aXRoIGhhcmR3YXJlIG9yIHByb3RvY29scy4gCk9yIGluIHNvbWUgY2FzZXMg d2hlcmUgeW91IHJlYWxseSB3YW50IHRvIHNhdmUgc3BhY2UgYnkgdXNpbmcgYSBzbWFsbCB0eXBl LgoKPgo+Pgo+Pj4gKwo+Pj4gKyAgICBpZiAoIWd1Yy0+bG9nLmJ1Zl9hZGRyKQo+Pj4gKyAgICAg ICAgcmV0dXJuOwo+Pgo+PiBDYW4gaXQgaGl0IHRoaXM/IElmIHllcywgSSB0aGluayBiZXR0ZXIg ZGlzYWJsZSBHdUMgbG9nZ2luZyB3aGVuIHBpbiBtYXAKPj4gb24gdGhlIG9iamVjdCBmYWlscyBy YXRoZXIgdGhhbiBsZXQgaXQgZ2VuZXJhdGUgaW50ZXJydXB0cyBpbiB2YWluLgo+Pgo+Pj4gKwo+ Pj4gKyAgICAvKiBHZXQgdGhlIHBvaW50ZXIgdG8gc2hhcmVkIEd1QyBsb2cgYnVmZmVyICovCj4+ PiArICAgIGxvZ19idWZmZXJfc3RhdGUgPSBzcmNfZGF0YV9wdHIgPSBndWMtPmxvZy5idWZfYWRk cjsKPj4+ICsKPj4+ICsgICAgLyogR2V0IHRoZSBwb2ludGVyIHRvIGxvY2FsIGJ1ZmZlciB0byBz dG9yZSB0aGUgbG9ncyAqLwo+Pj4gKyAgICBkc3RfZGF0YV9wdHIgPSBsb2dfYnVmZmVyX3NuYXBz aG90X3N0YXRlID0KPj4+IGd1Y19nZXRfd3JpdGVfYnVmZmVyKGd1Yyk7Cj4+PiArCj4+PiArICAg IC8qIEFjdHVhbCBsb2dzIGFyZSBwcmVzZW50IGZyb20gdGhlIDJuZCBwYWdlICovCj4+PiArICAg IHNyY19kYXRhX3B0ciArPSBQQUdFX1NJWkU7Cj4+PiArICAgIGRzdF9kYXRhX3B0ciArPSBQQUdF X1NJWkU7Cj4+PiArCj4+PiArICAgIGZvciAoaSA9IDA7IGkgPCBHVUNfTUFYX0xPR19CVUZGRVI7 IGkrKykgewo+Pj4gKyAgICAgICAgLyogTWFrZSBhIGNvcHkgb2YgdGhlIHN0YXRlIHN0cnVjdHVy ZSBpbiBHdUMgbG9nIGJ1ZmZlciAod2hpY2gKPj4+ICsgICAgICAgICAqIGlzIHVuY2FjaGVkIG1h cHBlZCkgb24gdGhlIHN0YWNrIHRvIGF2b2lkIHJlYWRpbmcgZnJvbSBpdAo+Pj4gKyAgICAgICAg ICogbXVsdGlwbGUgdGltZXMuCj4+PiArICAgICAgICAgKi8KPj4+ICsgICAgICAgIG1lbWNweSgm bG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbCwgbG9nX2J1ZmZlcl9zdGF0ZSwKPj4+ICsgICAgICAgICAg ICAgICAgc2l6ZW9mKHN0cnVjdCBndWNfbG9nX2J1ZmZlcl9zdGF0ZSkpOwo+Pj4gKyAgICAgICAg YnVmZmVyX3NpemUgPSBsb2dfYnVmZmVyX3N0YXRlX2xvY2FsLnNpemU7Cj4+Cj4+IE5lZWRzIGNo ZWNraW5nIChhbmQgbG9nZ2luZykgdGhhdCBhIGJhZCBmaXJtd2FyZSBvciBzb21lIG90aGVyIGVy cm9yCj4+IGRvZXMgbm90IHJlcG9ydCBhIGRhbmdlcm91cyBzaXplICh0b28gYmlnKSB3aGljaCB3 b3VsZCB0aGVuIG92ZXJ3cml0ZQo+PiBtZW1vcnkgcG9pbnRlZCBieSBkc3RfZGF0YV9wdHIgbWVt b3J5LiAoQW5kL29yIHJlYWQgZnJvbSByYW5kb20gbWVtb3J5LikKPj4KPiBIYXZlIGRvbmUgdGhl IHJhbmdlIGNoZWNraW5nIGZvciB0aGUgcmVhZC93cml0ZSBvZmZzZXQgdmFsdWVzLCB3aGljaCBh cmUKPiB1cGRhdGVkIHJlcGVhdGVkbHkgYnkgR3VDIGZpcm13YXJlLgo+IFRoZSBidWZmZXIgc2l6 ZSBpcyB1cGRhdGVkIG9ubHkgYXQgaW5pdCB0aW1lIGJ5IEd1QyBmaXJtd2FyZSwgaGVuY2UgbGVz cwo+IHZ1bG5lcmFibGUuCj4KPiBCdXQgbmV2ZXJ0aGVsZXNzIHdpbGwgYWRkIHRoZSBjaGVja3Mu CgpPayBnb29kLgoKPj4+ICsKPj4+ICsgICAgICAgIGlmIChsb2dfYnVmZmVyX3NuYXBzaG90X3N0 YXRlKSB7Cj4+PiArICAgICAgICAgICAgLyogRmlyc3QgY29weSB0aGUgc3RhdGUgc3RydWN0dXJl IGluIGxvY2FsIGJ1ZmZlciAqLwo+Pgo+PiBNYXliZSAiZGVzdGluYXRpb24gYnVmZmVyIiB3b3Vs ZCBiZSBjbGVhcmVyPwo+Cj4gU29ycnkgbXkgYmFkLCB3ZWxsIHNwb3R0ZWQuCj4KPj4KPj4+ICsg ICAgICAgICAgICBtZW1jcHkobG9nX2J1ZmZlcl9zbmFwc2hvdF9zdGF0ZSwgJmxvZ19idWZmZXJf c3RhdGVfbG9jYWwsCj4+PiArICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGd1Y19s b2dfYnVmZmVyX3N0YXRlKSk7Cj4+PiArCj4+PiArICAgICAgICAgICAgLyogVGhlIHdyaXRlIHBv aW50ZXIgY291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIEd1Qwo+Pj4gKyAgICAgICAgICAg ICAqIGZpcm13YXJlLCBhZnRlciBzZW5kaW5nIHRoZSBmbHVzaCBpbnRlcnJ1cHQgdG8gSG9zdCwK Pj4+ICsgICAgICAgICAgICAgKiBmb3IgY29uc2lzdGVuY3kgc2V0IHRoZSB3cml0ZSBwb2ludGVy IHZhbHVlIHRvIHNhbWUKPj4+ICsgICAgICAgICAgICAgKiB2YWx1ZSBvZiBzYW1wbGVkX3dyaXRl X3B0ciBpbiB0aGUgc25hcHNob3QgYnVmZmVyLgo+Pj4gKyAgICAgICAgICAgICAqLwo+Pj4gKyAg ICAgICAgICAgIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUtPndyaXRlX3B0ciA9Cj4+PiArICAg ICAgICAgICAgICAgIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUtPnNhbXBsZWRfd3JpdGVfcHRy Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUrKzsKPj4+ ICsKPj4+ICsgICAgICAgICAgICAvKiBOb3cgY29weSB0aGUgYWN0dWFsIGxvZ3MgKi8KPj4+ICsg ICAgICAgICAgICBtZW1jcHkoZHN0X2RhdGFfcHRyLCBzcmNfZGF0YV9wdHIsIGJ1ZmZlcl9zaXpl KTsKPj4+ICsKPj4+ICsgICAgICAgICAgICBzcmNfZGF0YV9wdHIgKz0gYnVmZmVyX3NpemU7Cj4+ PiArICAgICAgICAgICAgZHN0X2RhdGFfcHRyICs9IGJ1ZmZlcl9zaXplOwo+Pj4gKyAgICAgICAg fQo+Pj4gKwo+Pj4gKyAgICAgICAgLyogRklYTUU6IGludmFsaWRhdGUvZmx1c2ggZm9yIGxvZyBi dWZmZXIgbmVlZGVkICovCj4+Cj4+IFllcyBubyBtYXliZT8gOikKPgo+IFdpbGwgbGlrZSB0byBr ZWVwIGl0LCBpZiB5b3UgYWxsb3cuCgpJIHRoaW5rIHlvdSBuZWVkIGEgcmVhbGx5IGdvb2QganVz dGlmaWNhdGlvbiB0byBnZXQgci1iIG9uIHBhdGNoZXMgd2l0aCAKRklYTUVzLCBlc3BlY2lhbGx5 IGxpa2UgdGhpcyBvbmUuIERvIHlvdSBtYXliZSBoYW5kbGUgaXQgb3IgcmVtb3ZlIGl0IGluIAph IGZvbGxvd2luZyBwYXRjaCBvciBzb21ldGhpbmc/CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=