From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915: Fallback to reserve forcewake if primary ack missing Date: Fri, 27 Oct 2017 09:34:12 +0300 Message-ID: <87po99f6aj.fsf@gaia.fi.intel.com> References: <20171026140144.12267-1-mika.kuoppala@linux.intel.com> <150902846142.2864.3111506897671151039@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id EBF236E88A for ; Fri, 27 Oct 2017 06:34:31 +0000 (UTC) In-Reply-To: <150902846142.2864.3111506897671151039@mail.alporthouse.com> 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 Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gUXVvdGlu ZyBNaWthIEt1b3BwYWxhICgyMDE3LTEwLTI2IDE1OjAxOjQ0KQo+PiBUaGVyZSBpcyBhIHBvc3Np YmlsaXR5IG9uIGdlbjkgaGFyZHdhcmUgdG8gbWlzcyB0aGUgZm9yY2V3YWtlIGFjawo+PiBtZXNz YWdlLiBUaGUgcmVjb21tZW5kZWQgd29ya2Fyb3VuZCBpcyB0byB1c2UgYW5vdGhlciBmcmVlCj4+ IGJpdCBhbmQgdG9nZ2xlIGl0IHVudGlsIG9yaWdpbmFsIGJpdCBpcyBzdWNjZXNzZnVsbHkgYWNr bm93bGVkZ2VkLgo+PiAKPj4gVGhlIHdvcmthcm91bmQgaXMgYSBiaXQgbWlzbGVhZGluZ2x5IG5h bWVkIGFzIFdhUnNGb3JjZXdha2VBZGREZWxheUZvckFjay4KPj4gVGhlIHJlYXNvbiBmb3IgbmFt aW5nIGlzIG1vc3QgbGlrZWx5IHRoYXQgd29ya2Fyb3VuZCB3YXMgbmFtZWQgYmVmb3JlCj4+IHRo ZSBtb3N0IHJlY2VudCByZWNvbW1lbmRhdGlvbiBldm9sdmVkIHRvIHVzZSB0aGUgcmVzZXJ2ZSBi aXQuCj4+IAo+PiBTb21lIGZ1dHVyZSBnZW45IHJldnMgbWlnaHQgb3IgbWlnaHQgbm90IGZpeCB0 aGUgdW5kZXJseWluZyBpc3N1ZSBidXQKPj4gdGhlIGZhbGxiYWNrIHRvIHJlc2VydmUgYml0IGRh bmNlIGNhbiBiZSBjb25zaWRlcmVkIGFzIGhhcm1sZXNzOgo+PiB3aXRob3V0IHRoZSBhY2sgdGlt ZW91dCB3ZSBuZXZlciByZWFjaCB0aGUgcmVzZXJ2ZSBiaXQgZm9yY2V3YWtlLgo+PiBUaHVzIGFz IG9mIG5vdyB3ZSBhZG9wdCBhIGJsYW5rZXQgYXBwcm9hY2ggZm9yIGFsbCBnZW45IGFuZCBsZWF2 ZQo+PiB0aGUgYnlwYXNzaW5nIHRoZSByZXNlcnZlIGJpdCBhcHByb2FjaCBmb3IgZnV0dXJlIHBh dGNoZXMgaWYKPj4gY29ycmVzcG9uZGluZyBodyByZXZpc2lvbnMgZG8gYXBwZWFyLgo+PiAKPj4g Q29tbWl0IDgzZTMzMzcyMDRiMiAoImRybS9pOTE1OiBJbmNyZWFzZSBtYXhpbXVtIHBvbGxpbmcg dGltZSB0byA1MG1zCj4+IGZvciBmb3JjZXdha2UgcmVxdWVzdC9jbGVhciBhY2siKSBkaWQgaW5j cmVhc2UgdGhlIGZvcmNld2FrZSB0aW1lb3V0Lgo+PiBJZiB0aGUgaXNzdWUgd2FzIGEgZGVsYXll ZCBhY2ssIGZ1dHVyZSB3b3JrIGNvdWxkIGluY2x1ZGUgZmluZGluZwo+PiBhIHN1aXRhYmxlIHRp bWVvdXQgdmFsdWUgYm90aCBmb3IgcHJpbWFyeSBhY2sgYW5kIHJlc2VydmUgdG9nZ2xlCj4+IHRv IHJlZHVjZSB0aGUgd29yc3QgY2FzZSBsYXRlbmN5Lgo+PiAKPj4gUmVmZXJlbmNlczogSFNERVMg IzE2MDQyNTQ1MjQKPj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MTAyMDUxCj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KPj4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4K Pj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+IENjOiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBT YWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+PiBTaWduZWQtb2Zm LWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KPj4gLS0t Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICB8ICAgNSArLQo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgfCAxMTIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IGluZGV4IGYx MzhlYWU4MmJmMC4uYzA0YzYzNGFmNWFlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK Pj4gQEAgLTc3NzQsOCArNzc3NCw5IEBAIGVudW0gewo+PiAgI2RlZmluZSAgRk9SQ0VXQUtFX0FD S19NRURJQV9HRU45ICAgICAgICAgICAgICBfTU1JTygweDBEODgpCj4+ICAjZGVmaW5lICBGT1JD RVdBS0VfQUNLX1JFTkRFUl9HRU45ICAgICAgICAgICAgIF9NTUlPKDB4MEQ4NCkKPj4gICNkZWZp bmUgIEZPUkNFV0FLRV9BQ0tfQkxJVFRFUl9HRU45ICAgICAgICAgICAgX01NSU8oMHgxMzAwNDQp Cj4+IC0jZGVmaW5lICAgRk9SQ0VXQUtFX0tFUk5FTCAgICAgICAgICAgICAgICAgICAgIDB4MQo+ PiAtI2RlZmluZSAgIEZPUkNFV0FLRV9VU0VSICAgICAgICAgICAgICAgICAgICAgICAweDIKPj4g KyNkZWZpbmUgICBGT1JDRVdBS0VfS0VSTkVMICAgICAgICAgICAgICAgICAgICAgQklUKDApCj4+ ICsjZGVmaW5lICAgRk9SQ0VXQUtFX1VTRVIgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxKQo+ PiArI2RlZmluZSAgIEZPUkNFV0FLRV9SRVNFUlZFICAgICAgICAgICAgICAgICAgICBCSVQoMTIp Cj4KPiBXaHkgMTI/IEhvdyBhYm91dCAxNT8KPgoKSSBqdXN0IG1pbWljZWQgdGhlIHBzZXVkb2Nv ZGUgZnJvbSBhbiBlcnJhdGEgc2hlZXQgc2xhdmlzaGx5LgoKQUZBSUsgMTUgc2hvdWxkIHdvcmsg YXMgd2VsbCBhcyAxMiBzbyAxNS4KCj4gRk9SQ0VXQUtFX0tFUk5FTDIgb3IgRk9SQ0VXQUtFX0tF Uk5FTF9GQUxMQkFDSwoKS0VSTkVMMiB3b3VsZCBpbXBseSBzaW1pbGFyIG1lY2hhbmlzbS4gRmFs bGJhY2sgSSBsaWtlIG1vcmUKYXMgdGhpcyBpcyBqdXN0IHVuZGVyIHRoZSBob29kIHRvZ2dsaW5n IGZvciB3YWtpbmcgdXAKdGhlIHJlYWwgYml0LgoKPgo+IFJlc2VydmVkIHRlbmRzIHRvIGltcGx5 IGZ1dHVyZSBodyBiaXRzLiBTbyBJIHRoaW5rIHMvcmVzZXJ2ZS9mYWxsYmFjay8KPiB3b3JrcyB0 aHJvdWdob3V0IHRoZSBwYXRjaC4KPgoKWXVwLCBmYWxsYmFjayBpcyBiZXR0ZXIuCgo+PiAgI2Rl ZmluZSAgRk9SQ0VXQUtFX01UX0FDSyAgICAgICAgICAgICAgICAgICAgICBfTU1JTygweDEzMDA0 MCkKPj4gICNkZWZpbmUgIEVDT0JVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfTU1JTygweGExODApCj4+ICAjZGVmaW5lICAgIEZPUkNFV0FLRV9NVF9FTkFCTEUgICAg ICAgICAgICAgICAgICgxPDw1KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBp bmRleCAyMGUzYzY1YzA5OTkuLmZjNmQwOTAyNDRjNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPj4gQEAgLTY5LDE3ICs2OSw4MCBAQCBmd19kb21haW5fYXJtX3RpbWVy KHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCkKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEhSVElNRVJfTU9ERV9SRUwpOwo+PiAgfQo+PiAgCj4+ICtzdGF0 aWMgaW5saW5lIGJvb2wKPj4gK3dhaXRfYWNrX2NsZWFyKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+PiArICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9kb21haW4gKmQsCj4+ICsgICAgICAgICAgICAgIGNvbnN0IHUzMiBhY2spCj4+ ICt7Cj4+ICsgICAgICAgcmV0dXJuIHdhaXRfZm9yX2F0b21pYygoX19yYXdfaTkxNV9yZWFkMzIo aTkxNSwgZC0+cmVnX2FjaykgJiBhY2spID09IDAsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGT1JDRVdBS0VfQUNLX1RJTUVPVVRfTVMpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW5saW5lIGJvb2wKPj4gK3dhaXRfYWNrX3NldChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPj4gKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2RvbWFpbiAqZCwKPj4gKyAgICAgICAgICAgIGNvbnN0IHUzMiBhY2spCj4+ICt7Cj4+ICsg ICAgICAgcmV0dXJuIHdhaXRfZm9yX2F0b21pYygoX19yYXdfaTkxNV9yZWFkMzIoaTkxNSwgZC0+ cmVnX2FjaykgJiBhY2spLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9SQ0VX QUtFX0FDS19USU1FT1VUX01TKTsKPj4gK30KPgo+IExldCdzIG1ha2UgdGhlc2Ugb25lIGZ1bmN0 aW9uLCB0byBjdXQgZG93biBvbiB0aGUgd2FpdF9mb3IoKSBleHBhbnNpb25zLgo+Cj4gS2VlcGlu ZyB0aGUgd2FpdF9hY2tfY2xlYXIvd2FpdF9hY2tfc2V0IHdyYXBwZXJzLgo+Cj4gc3RhdGljIGlu bGluZSBpbnQKPiBfX3dhaXRfZm9yX2FjayhpOTE1LCBkLCBhY2ssIHZhbHVlKQo+IHsKPiAJcmV0 dXJuIHdhaXRfZm9yX2F0b21pYygoKF9fcmF3X2k5MTVfcmVhZDMyKGk5MTUsIGQtPnJlZ19hY2sp ICYgYWNrKSkgPT0gdmFsdWUsCj4gCQkJCUZPUkNFV0FLRV9BQ0tfVElNRU9VVF9NUyk7Cj4gfQo+ Cj4gc3RhdGljIGlubGluZSBpbnQgd2FpdF9hY2tfY2xlYXIoKSB7IHJldHVybiBfX3dhaXRfZm9y X2FjayhpOTE1LCBkLCBhY2ssIDApKTsKPiBzdGF0aWMgaW5saW5lIGludCB3YWl0X2Fja19zZXQo KSB7IHJldHVybiBfX3dhaXRfZm9yX2FjayhpOTE1LCBkLCBhY2ssIGFjaykpOwo+Cj4+ICBzdGF0 aWMgaW5saW5lIHZvaWQKPj4gIGZ3X2RvbWFpbl93YWl0X2Fja19jbGVhcihjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCkKPj4gIHsKPj4gLSAgICAg ICBpZiAod2FpdF9mb3JfYXRvbWljKChfX3Jhd19pOTE1X3JlYWQzMihpOTE1LCBkLT5yZWdfYWNr KSAmCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9SQ0VXQUtFX0tFUk5FTCkgPT0g MCwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUkNFV0FLRV9BQ0tfVElNRU9VVF9N UykpCj4+ICsgICAgICAgaWYgKHdhaXRfYWNrX2NsZWFyKGk5MTUsIGQsIEZPUkNFV0FLRV9LRVJO RUwpKQo+PiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCIlczogdGltZWQgb3V0IHdhaXRpbmcg Zm9yIGZvcmNld2FrZSBhY2sgdG8gY2xlYXIuXG4iLAo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluX3RvX3N0cihkLT5pZCkpOwo+PiAgfQo+ PiAgCj4+ICtlbnVtIGFja190eXBlIHsKPj4gKyAgICAgICBBQ0tfQ0xFQVIgPSAwLAo+PiArICAg ICAgIEFDS19TRVQKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBib29sCj4+ICtmd19kb21haW5fcmVz ZXJ2ZV9mYWxsYmFjayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdh a2VfZG9tYWluICpkLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIGFj a190eXBlIHR5cGUpCj4+ICt7Cj4+ICsgICAgICAgYm9vbCB0aW1lb3V0Owo+PiArICAgICAgIGlu dCByZXRyeSA9IDEwOwo+PiArCj4+ICsgICAgICAgLyogRmFsbGJhY2sgdG8gdG9nZ2xlIGFub3Ro ZXIgZncgYml0IHRvIHdha2UgdXAgdGhlIGdwdSAqLwo+Cj4gVGhlIGNvbW1lbnQgbmVlZHMgc29t ZSB3b3JrOyB0aGUgZmlyc3QgYml0IGl0c2VsZiB3YXMgbWVhbnQgdG8gd2FrZSB0aGUKPiBncHUs IHNvIHdoeSBpcyB0aGlzIGJpdCBhbnkgbW9yZSBsaWtlbHkgdG8gd29yaz8KPgoKWWVhaCwgdGhp cyBuZWVkcyByZXdvcmsuIEl0IGlzIG1vcmUgbGlrZSB0b2dnbGluZyBhbiB1bnJlbGF0ZWQgYml0 CndpbGwgbWFrZSB0aGUgJ2xvc3Qgb3IgcGVuZGluZycgYWNrIG1lc3NhZ2UgZm9yIHRoZSBLRVJO RUwgYml0IHRvCm1hdGVyaWFsaXplLgoKSSB0aG91Z2h0IHRoYXQgc2hvdWxkIHdlIGFsc28gcmV0 b2dnbGUgdGhlIEtFUk5FTCBvbmUgYnV0CmFnYWluLCB0aGlzIHBhdGNoIG1pbWljcyB0aGUgcHNl dWRvY29kZSBJIGZvdW5kIDE6MS4gVGhlcmUKYXJlIGhpbnRzIHRoYXQgYm90aCBkZWxheWluZyB3 YWl0IGFuZCBhIHJlZ3RvZ2dpbmcgb2YgdGhlCm9yaWdpbmFsIGJpdCB3YXMgdXNlZCBhdCBzb21l IHBvaW50IG9mIHRpbWUgYXMgYSB3b3JrYXJvdW5kLgoKVGhpcyBpcyBfc3VwcG9zZWRfIHRvIGJl IHRoZSBsYXRlc3QgcmVjb21tZW5kYXRpb24gdG8gY29tYmF0CnRoZSBpc3N1ZS4gRWZmb3J0cyBh bmQgc3VjY2VzcyB0byByZXByb2R1Y2Ugd291bGQgZ2l2ZSB1cwp2ZW51ZSB0byBtZWFzdXJlIGlm IGl0IGlzIHRoZSBiZXN0IGtub3duLgoKPj4gKyAgICAgICBkbyB7Cj4+ICsgICAgICAgICAgICAg ICB3YWl0X2Fja19jbGVhcihpOTE1LCBkLCBGT1JDRVdBS0VfUkVTRVJWRSk7Cj4+ICsgICAgICAg ICAgICAgICBfX3Jhd19pOTE1X3dyaXRlMzIoaTkxNSwgZC0+cmVnX3NldCwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfTUFTS0VEX0JJVF9FTkFCTEUoRk9SQ0VXQUtFX1JF U0VSVkUpKTsKPj4gKyAgICAgICAgICAgICAgIHdhaXRfYWNrX3NldChpOTE1LCBkLCBGT1JDRVdB S0VfUkVTRVJWRSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmICh0eXBlID09IEFDS19DTEVB UikKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHdhaXRfYWNrX2NsZWFyKGk5 MTUsIGQsIEZPUkNFV0FLRV9LRVJORUwpOwo+PiArICAgICAgICAgICAgICAgZWxzZQo+PiArICAg ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gd2FpdF9hY2tfc2V0KGk5MTUsIGQsIEZPUkNF V0FLRV9LRVJORUwpOwo+PiArCj4+ICsgICAgICAgICAgICAgICBfX3Jhd19pOTE1X3dyaXRlMzIo aTkxNSwgZC0+cmVnX3NldCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf TUFTS0VEX0JJVF9ESVNBQkxFKEZPUkNFV0FLRV9SRVNFUlZFKSk7Cj4KPiBCbGluZGx5IHRvZ2ds aW5nIGFub3RoZXIgYml0IHRvIGVuY291cmFnZSB0aGUgZmlyc3QgdG8gc3VjY2VlZC4KPgo+IFdo eSBzdG9wIGF0IDEgZXh0cmEgYml0Pz8/PwoKQWdhaW4gMToxIG1pbWljIG9mIHBzZXVkb2NvZGUu CgpXaGF0IHdlIGNvdWxkIGRvIGluc3RlYWQgb2YgdGhpcyB0b2dnbGUgaGFtbWVyaW5nLCBpcyB0 byBnbwp0aHJvdWdoIGFsbCB1bnJlc2VydmVkIGJpdHMgdW50aWwgb25lIGFjayBhcHBlYXJzIG9u IGFueSBhbmQKYmUgaGFwcHkuCgo+Cj4gSWYgdGhlIHdhaXRfYWNrX3NldChSU1ZEKSBmYWlscywg eW91IG1pZ2h0IGFzIHdlbGwgYWJvcnQ/Cj4KCkZvciBtZSBpdCBsb29rcyBsaWtlIHRoaXMgdG9n Z2xlIGhhbW1lcmluZyB3aWxsIGtpY2sKdGhlIHN0YXRlIG1hY2hpbmUgdG8gc3BpdCBvdXQgdGhl IGZpcnN0IGFjayBtZXNzYWdlCnRoYXQgd2FzIHNvbWVob3cgbG9zdC4gSSBkaWQgYWdhaW4gZm9s bG93IHRoZQpyZWNvbWVubmRlZCBwcm9jZWR1cmUgcHJlY2lzZWx5LgoKPiBPdGhlciB0aGFuIG15 IGZhY2UgaGl0dGluZyB0aGUgZGVzaywgdGhlIGxvZ2ljIG1ha2VzIHNlbnNlIHRvIG1lOgo+Cj4g CUFzc2VydCBzZWNvbmQgZncgYml0OyBjaGVjayBvcmlnaW5hbCBiaXQ7IGNsZWFyIHNlY29uZCBm dyBiaXQgKHNvIHdlCj4gCWRvbid0IGtlZXAgZncgbG9uZ2VyIHRoYW4gcmVxdWlyZWQpLgo+Cj4g VGhpcyBiYXNpY2FsbHkgYWxzbyBoYXMgdGhlIHNpZGUtZWZmZWN0IG9mIG1ha2luZyB0aGUgdGlt ZW91dCAxMngKPiBsb25nZXIuCj4KCkluIHRoZSB3b3JzdCBjYXNlIHllcy4gQnV0IHRoZSBmaXJz dCB0b2dnbGUgc2hvdWxkIGFscmVhZHkgdW50YW5nbGUKdGhlIG1lc3MuIFByb2JhYmlsaXR5IHRo YXQgd2UgZW5kIHVwIHJldHJ5aW5nIGFsbCB0aGUgd2F5IHRocm91Z2gKaXMgdmVyeSB1bmxpa2Vs eS4gTm93IHRoYXQgSSBoYXZlIHNhaWQgaXQsIGl0IHdpbGwgaGFwcGVuIDopCgpUaGFuayB5b3Ug Zm9yIHRoZSBjb21tZW50cy4KCi1NaWthCgo+PiArICAgICAgIH0gd2hpbGUgKHRpbWVvdXQgJiYg LS1yZXRyeSk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gdGltZW91dDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGlubGluZSB2b2lkCj4+ICtmd19kb21haW5fd2FpdF9hY2tfY2xlYXJfcmVzZXJ2ZShj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWlu ICpkKQo+PiArewo+PiArICAgICAgIGJvb2wgdGltZW91dDsKPiBib29sIGVycjsgb3Igbm9uZSBh dCBhbGwuCj4KPiB0aW1lb3V0IHRlbmRzIHRvIGJlIGEgdmFsdWUgd2UgcGFzcyBhcm91bmQgdGVs bGluZyB1cyBob3cgbG9uZyB1bnRpbCB0aGUKPiB0aW1lb3V0OyBub3QgdGhlIHN0YXR1cywgd2hp Y2ggd291bGQgYmUgdGltZWRvdXQuCj4KPj4gKwo+PiArICAgICAgIHRpbWVvdXQgPSB3YWl0X2Fj a19jbGVhcihpOTE1LCBkLCBGT1JDRVdBS0VfS0VSTkVMKTsKPj4gKyAgICAgICBpZiAobGlrZWx5 KCF0aW1lb3V0KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgICAgIHRp bWVvdXQgPSBmd19kb21haW5fcmVzZXJ2ZV9mYWxsYmFjayhpOTE1LCBkLCBBQ0tfQ0xFQVIpOwo+ PiArICAgICAgIGlmICh0aW1lb3V0KQo+PiArICAgICAgICAgICAgICAgZndfZG9tYWluX3dhaXRf YWNrX2NsZWFyKGk5MTUsIGQpOwo+Cj4gT2ssIG9uZSBsYXN0IHRyeSBhbmQgcmFpc2UgYW4gZXJy b3IgaWYgaXQgZmFpbHMuCj4KPj4gK30KPj4gKwo+PiAgc3RhdGljIGlubGluZSB2b2lkCj4+ICBm d19kb21haW5fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCkKPj4gQEAg LTkxLDE0ICsxNTQsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkCj4+ICBmd19kb21haW5fd2FpdF9h Y2soY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQpCj4+ICB7 Cj4+IC0gICAgICAgaWYgKHdhaXRfZm9yX2F0b21pYygoX19yYXdfaTkxNV9yZWFkMzIoaTkxNSwg ZC0+cmVnX2FjaykgJgo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUkNFV0FLRV9L RVJORUwpLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9SQ0VXQUtFX0FDS19USU1F T1VUX01TKSkKPj4gKyAgICAgICBpZiAod2FpdF9hY2tfc2V0KGk5MTUsIGQsIEZPUkNFV0FLRV9L RVJORUwpKQo+PiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCIlczogdGltZWQgb3V0IHdhaXRp bmcgZm9yIGZvcmNld2FrZSBhY2sgcmVxdWVzdC5cbiIsCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW5fdG9fc3RyKGQtPmlkKSk7Cj4+ICB9 Cj4+ICAKPj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+PiArZndfZG9tYWluX3dhaXRfYWNrX3NldF9y ZXNlcnZlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2Vf ZG9tYWluICpkKQo+PiArewo+PiArICAgICAgIGJvb2wgdGltZW91dDsKPj4gKwo+PiArICAgICAg IHRpbWVvdXQgPSB3YWl0X2Fja19zZXQoaTkxNSwgZCwgRk9SQ0VXQUtFX0tFUk5FTCk7Cj4+ICsg ICAgICAgaWYgKGxpa2VseSghdGltZW91dCkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ ICsKPj4gKyAgICAgICB0aW1lb3V0ID0gZndfZG9tYWluX3Jlc2VydmVfZmFsbGJhY2soaTkxNSwg ZCwgQUNLX1NFVCk7Cj4+ICsgICAgICAgaWYgKHRpbWVvdXQpCj4+ICsgICAgICAgICAgICAgICBm d19kb21haW5fd2FpdF9hY2soaTkxNSwgZCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUg dm9pZAo+PiAgZndfZG9tYWluX3B1dChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPj4gICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9k b21haW4gKmQpCj4+ICB7Cj4+IEBAIC0xMjUsNiArMjAxLDI2IEBAIGZ3X2RvbWFpbnNfZ2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBlbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2Rv bWFpbnMpCj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyB2b2lkCj4+ICtmd19kb21haW5zX2dldF93aXRo X3Jlc2VydmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnMpCj4+ICt7Cj4+ ICsgICAgICAgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpkOwo+PiArICAg ICAgIHVuc2lnbmVkIGludCB0bXA7Cj4+ICsKPj4gKyAgICAgICBHRU1fQlVHX09OKGZ3X2RvbWFp bnMgJiB+aTkxNS0+dW5jb3JlLmZ3X2RvbWFpbnMpOwo+PiArCj4+ICsgICAgICAgZm9yX2VhY2hf ZndfZG9tYWluX21hc2tlZChkLCBmd19kb21haW5zLCBpOTE1LCB0bXApIHsKPj4gKyAgICAgICAg ICAgICAgIGZ3X2RvbWFpbl93YWl0X2Fja19jbGVhcl9yZXNlcnZlKGk5MTUsIGQpOwo+PiArICAg ICAgICAgICAgICAgZndfZG9tYWluX2dldChpOTE1LCBkKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4g KyAgICAgICBmb3JfZWFjaF9md19kb21haW5fbWFza2VkKGQsIGZ3X2RvbWFpbnMsIGk5MTUsIHRt cCkKPj4gKyAgICAgICAgICAgICAgIGZ3X2RvbWFpbl93YWl0X2Fja19zZXRfcmVzZXJ2ZShpOTE1 LCBkKTsKPj4gKwo+PiArICAgICAgIGk5MTUtPnVuY29yZS5md19kb21haW5zX2FjdGl2ZSB8PSBm d19kb21haW5zOwo+Cj4gT2suCj4KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gIGZ3X2Rv bWFpbnNfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBlbnVtIGZvcmNld2FrZV9k b21haW5zIGZ3X2RvbWFpbnMpCj4+ICB7Cj4+ICAgICAgICAgc3RydWN0IGludGVsX3VuY29yZV9m b3JjZXdha2VfZG9tYWluICpkOwo+PiBAQCAtMTE0Miw3ICsxMjM4LDkgQEAgc3RhdGljIHZvaWQg aW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+ICAgICAgICAgfQo+PiAgCj4+ICAgICAgICAgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewo+PiAtICAgICAgICAgICAgICAgZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3Jj ZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+PiArICAgICAgICAgICAgICAgLyogV2FSc0Zv cmNld2FrZUFkZERlbGF5Rm9yQWNrOnNrbCxieHQsa2JsLGdsayxjZmwsY25sICovCj4+ICsgICAg ICAgICAgICAgICBkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZndfZG9tYWluc19nZXRfd2l0aF9yZXNlcnZlOwo+PiAgICAg ICAgICAgICAgICAgZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3X2Rv bWFpbnNfcHV0Owo+PiAgICAgICAgICAgICAgICAgZndfZG9tYWluX2luaXQoZGV2X3ByaXYsIEZX X0RPTUFJTl9JRF9SRU5ERVIsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JD RVdBS0VfUkVOREVSX0dFTjksCj4+IC0tIAo+PiAyLjExLjAKPj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=