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 17:08:45 +0300 Message-ID: <87a80cfzte.fsf@gaia.fi.intel.com> References: <20171026140144.12267-1-mika.kuoppala@linux.intel.com> <20171027140421.15752-1-mika.kuoppala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DDF46E941 for ; Fri, 27 Oct 2017 14:10:05 +0000 (UTC) In-Reply-To: <20171027140421.15752-1-mika.kuoppala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org TWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+IHdyaXRlczoKCj4g VGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvbiBnZW45IGhhcmR3YXJlIHRvIG1pc3MgdGhlIGZvcmNl d2FrZSBhY2sKPiBtZXNzYWdlLiBUaGUgcmVjb21tZW5kZWQgd29ya2Fyb3VuZCBpcyB0byB1c2Ug YW5vdGhlciBmcmVlCj4gYml0IGFuZCB0b2dnbGUgaXQgdW50aWwgb3JpZ2luYWwgYml0IGlzIHN1 Y2Nlc3NmdWxseSBhY2tub3dsZWRnZWQuCj4KPiBTb21lIGZ1dHVyZSBnZW45IHJldnMgbWlnaHQg b3IgbWlnaHQgbm90IGZpeCB0aGUgdW5kZXJseWluZyBpc3N1ZSBidXQKPiB0aGUgZmFsbGJhY2sg dG8gcmVzZXJ2ZSBiaXQgZGFuY2UgY2FuIGJlIGNvbnNpZGVyZWQgYXMgaGFybWxlc3M6Cj4gd2l0 aG91dCB0aGUgYWNrIHRpbWVvdXQgd2UgbmV2ZXIgcmVhY2ggdGhlIHJlc2VydmUgYml0IGZvcmNl d2FrZS4KPiBUaHVzIGFzIG9mIG5vdyB3ZSBhZG9wdCBhIGJsYW5rZXQgYXBwcm9hY2ggZm9yIGFs bCBnZW45IGFuZCBsZWF2ZQo+IHRoZSBieXBhc3NpbmcgdGhlIHJlc2VydmUgYml0IGFwcHJvYWNo IGZvciBmdXR1cmUgcGF0Y2hlcyBpZgo+IGNvcnJlc3BvbmRpbmcgaHcgcmV2aXNpb25zIGRvIGFw cGVhci4KPgo+IENvbW1pdCA4M2UzMzM3MjA0YjIgKCJkcm0vaTkxNTogSW5jcmVhc2UgbWF4aW11 bSBwb2xsaW5nIHRpbWUgdG8gNTBtcwo+IGZvciBmb3JjZXdha2UgcmVxdWVzdC9jbGVhciBhY2si KSBkaWQgaW5jcmVhc2UgdGhlIGZvcmNld2FrZSB0aW1lb3V0Lgo+IElmIHRoZSBpc3N1ZSB3YXMg YSBkZWxheWVkIGFjaywgZnV0dXJlIHdvcmsgY291bGQgaW5jbHVkZSBmaW5kaW5nCj4gYSBzdWl0 YWJsZSB0aW1lb3V0IHZhbHVlIGJvdGggZm9yIHByaW1hcnkgYWNrIGFuZCByZXNlcnZlIHRvZ2ds ZQo+IHRvIHJlZHVjZSB0aGUgd29yc3QgY2FzZSBsYXRlbmN5Lgo+Cj4gdjI6IHVzZSBiaXQgMTUs IG5hbWluZywgY29tbWVudCAoQ2hyaXMpLCBvbmx5IHdhaXQgZmFsbGJhY2sgYWNrCj4KCkFuZCB0 aGVuIEkgZm9yZ290IHRvIGNoYW5nZSB0aGUgbmFtaW5nIGluIHRoZSBzdWJqZWN0IGFuZApjb21t aXQgbWVzc2FnZS4gU2lnaAotTWlrYQoKCj4gUmVmZXJlbmNlczogSFNERVMgIzE2MDQyNTQ1MjQK PiBSZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD0xMDIwNTEKPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g Q2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IENjOiBTYWdhciBBcnVuIEthbWJsZSA8 c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS3VvcHBhbGEg PG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oICAgICB8ICAgNSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYyB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAg MiBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA4Yzc3NWU5NmI0ZTQuLmYwZjhmNjA1OTY1MiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03Nzc0LDggKzc3NzQsOSBAQCBlbnVt IHsKPiAgI2RlZmluZSAgRk9SQ0VXQUtFX0FDS19NRURJQV9HRU45CQlfTU1JTygweDBEODgpCj4g ICNkZWZpbmUgIEZPUkNFV0FLRV9BQ0tfUkVOREVSX0dFTjkJCV9NTUlPKDB4MEQ4NCkKPiAgI2Rl ZmluZSAgRk9SQ0VXQUtFX0FDS19CTElUVEVSX0dFTjkJCV9NTUlPKDB4MTMwMDQ0KQo+IC0jZGVm aW5lICAgRk9SQ0VXQUtFX0tFUk5FTAkJCTB4MQo+IC0jZGVmaW5lICAgRk9SQ0VXQUtFX1VTRVIJ CQkweDIKPiArI2RlZmluZSAgIEZPUkNFV0FLRV9LRVJORUwJCQlCSVQoMCkKPiArI2RlZmluZSAg IEZPUkNFV0FLRV9VU0VSCQkJQklUKDEpCj4gKyNkZWZpbmUgICBGT1JDRVdBS0VfS0VSTkVMX0ZB TExCQUNLCQlCSVQoMTUpCj4gICNkZWZpbmUgIEZPUkNFV0FLRV9NVF9BQ0sJCQlfTU1JTygweDEz MDA0MCkKPiAgI2RlZmluZSAgRUNPQlVTCQkJCQlfTU1JTygweGExODApCj4gICNkZWZpbmUgICAg Rk9SQ0VXQUtFX01UX0VOQUJMRQkJCSgxPDw1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29y ZS5jCj4gaW5kZXggOTZlZTZiMjc1NGJlLi41ODhhZTM1YzhjOWEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC02OSwxNyArNjksMTA4IEBAIGZ3X2RvbWFpbl9hcm1f dGltZXIoc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpkKQo+ICAJCQkgICAg ICAgSFJUSU1FUl9NT0RFX1JFTCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgaW50Cj4gK19f d2FpdF9mb3JfYWNrKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJICAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCwKPiArCSAg ICAgICBjb25zdCB1MzIgYWNrLAo+ICsJICAgICAgIGNvbnN0IHUzMiB2YWx1ZSkKPiArewo+ICsJ cmV0dXJuIHdhaXRfZm9yX2F0b21pYygoX19yYXdfaTkxNV9yZWFkMzIoaTkxNSwgZC0+cmVnX2Fj aykgJiBhY2spID09IHZhbHVlLAo+ICsJCQkgICAgICAgRk9SQ0VXQUtFX0FDS19USU1FT1VUX01T KTsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50Cj4gK3dhaXRfYWNrX2NsZWFyKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJICAgICAgIGNvbnN0IHN0cnVj dCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCwKPiArCSAgICAgICBjb25zdCB1MzIg YWNrKQo+ICt7Cj4gKwlyZXR1cm4gX193YWl0X2Zvcl9hY2soaTkxNSwgZCwgYWNrLCAwKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQKPiArd2FpdF9hY2tfc2V0KGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9kb21haW4gKmQsCj4gKwkgICAgIGNvbnN0IHUzMiBhY2spCj4gK3sKPiArCXJl dHVybiBfX3dhaXRfZm9yX2FjayhpOTE1LCBkLCBhY2ssIGFjayk7Cj4gK30KPiArCj4gIHN0YXRp YyBpbmxpbmUgdm9pZAo+ICBmd19kb21haW5fd2FpdF9hY2tfY2xlYXIoY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9kb21haW4gKmQpCj4gIHsKPiAtCWlmICh3YWl0X2Zvcl9hdG9taWMoKF9fcmF3X2k5 MTVfcmVhZDMyKGk5MTUsIGQtPnJlZ19hY2spICYKPiAtCQkJICAgICBGT1JDRVdBS0VfS0VSTkVM KSA9PSAwLAo+IC0JCQkgICAgRk9SQ0VXQUtFX0FDS19USU1FT1VUX01TKSkKPiArCWlmICh3YWl0 X2Fja19jbGVhcihpOTE1LCBkLCBGT1JDRVdBS0VfS0VSTkVMKSkKPiAgCQlEUk1fRVJST1IoIiVz OiB0aW1lZCBvdXQgd2FpdGluZyBmb3IgZm9yY2V3YWtlIGFjayB0byBjbGVhci5cbiIsCj4gIAkJ CSAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW5fdG9fc3RyKGQtPmlkKSk7Cj4gIH0KPiAg Cj4gK3N0YXRpYyBpbnQKPiArd2FpdF9hY2tfd2l0aF9mYWxsYmFjayhjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3VuY29y ZV9mb3JjZXdha2VfZG9tYWluICpkLAo+ICsJCSAgICAgICBjb25zdCB1MzIgYWNrLAo+ICsJCSAg ICAgICBjb25zdCB1MzIgdmFsdWUpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJLyoKPiArCSAq IFRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgZHJpdmVyJ3Mgd2FrZSByZXF1ZXN0IGNvbGxpZGlu Zwo+ICsJICogd2l0aCBoYXJkd2FyZSdzIG93biB3YWtlIHJlcXVlc3RzIGFuZCB0aGF0IGNhbiBj YXVzZQo+ICsJICogaGFyZHdhcmUgdG8gbm90IGRlbGl2ZXIgdGhlIGRyaXZlcidzIGFjayBtZXNz YWdlLgo+ICsJICoKPiArCSAqIFVzZSBhIGZhbGxiYWNrIGJpdCB0b2dnbGUgdG8ga2ljayB0aGUg Z3B1IHN0YXRlIG1hY2hpbmUKPiArCSAqIGluIGhvcGVzIHRoYXQgdGhlIG9yaWdpbmFsIGFjayB3 aWxsIGJlIGRlbGl2ZXJlZCBhbG9uZyB3aXRoCj4gKwkgKiB0aGUgZmFsbGJhY2sgYWNrLgo+ICsJ ICoKPiArCSAqIFRoaXMgd29ya2Fyb3VuZCBpcyBkZXNjcmliZWQgaW4gSFNERVMgIzE2MDQyNTQ1 MjQKPiArCSAqLwo+ICsKPiArCXdhaXRfYWNrX2NsZWFyKGk5MTUsIGQsIEZPUkNFV0FLRV9LRVJO RUxfRkFMTEJBQ0spOwo+ICsJX19yYXdfaTkxNV93cml0ZTMyKGk5MTUsIGQtPnJlZ19zZXQsCj4g KwkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShGT1JDRVdBS0VfS0VSTkVMX0ZBTExCQUNLKSk7Cj4g Kwl3YWl0X2Fja19zZXQoaTkxNSwgZCwgRk9SQ0VXQUtFX0tFUk5FTF9GQUxMQkFDSyk7Cj4gKwo+ ICsJcmV0ID0gKF9fcmF3X2k5MTVfcmVhZDMyKGk5MTUsIGQtPnJlZ19hY2spICYgYWNrKSA9PSB2 YWx1ZTsKPiArCj4gKwlfX3Jhd19pOTE1X3dyaXRlMzIoaTkxNSwgZC0+cmVnX3NldCwKPiArCQkJ ICAgX01BU0tFRF9CSVRfRElTQUJMRShGT1JDRVdBS0VfS0VSTkVMX0ZBTExCQUNLKSk7Cj4gKwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArZW51bSBhY2tfdHlwZSB7Cj4gKwlBQ0tfQ0xFQVIg PSAwLAo+ICsJQUNLX1NFVAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtmd19kb21haW5fd2Fp dF9hY2tfd2l0aF9mYWxsYmFjayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK PiArCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQsCj4g KwkJCQkgY29uc3QgZW51bSBhY2tfdHlwZSB0eXBlKQo+ICt7Cj4gKwlpbnQgcmV0cnkgPSAxMDsK PiArCWludCByZXQ7Cj4gKwo+ICsJZG8gewo+ICsJCXJldCA9IHdhaXRfYWNrX3dpdGhfZmFsbGJh Y2soaTkxNSwgZCwgRk9SQ0VXQUtFX0tFUk5FTCwKPiArCQkJCQkgICAgIHR5cGUgPT0gQUNLX1NF VCA/Cj4gKwkJCQkJICAgICBGT1JDRVdBS0VfS0VSTkVMIDogMCk7Cj4gKwl9IHdoaWxlIChyZXQg JiYgLS1yZXRyeSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlubGlu ZSB2b2lkCj4gK2Z3X2RvbWFpbl93YWl0X2Fja19jbGVhcl9mYWxsYmFjayhjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX3VuY29y ZV9mb3JjZXdha2VfZG9tYWluICpkKQo+ICt7Cj4gKwlpZiAobGlrZWx5KCF3YWl0X2Fja19jbGVh cihpOTE1LCBkLCBGT1JDRVdBS0VfS0VSTkVMKSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChm d19kb21haW5fd2FpdF9hY2tfd2l0aF9mYWxsYmFjayhpOTE1LCBkLCBBQ0tfQ0xFQVIpKQo+ICsJ CWZ3X2RvbWFpbl93YWl0X2Fja19jbGVhcihpOTE1LCBkKTsKPiArfQo+ICsKPiAgc3RhdGljIGlu bGluZSB2b2lkCj4gIGZ3X2RvbWFpbl9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gIAkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQp Cj4gQEAgLTg4LDE3ICsxNzksMjYgQEAgZndfZG9tYWluX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gLWZ3X2RvbWFpbl93 YWl0X2Fjayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQpCj4gK2Z3X2RvbWFpbl93 YWl0X2Fja19zZXQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJICAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCkKPiAgewo+ IC0JaWYgKHdhaXRfZm9yX2F0b21pYygoX19yYXdfaTkxNV9yZWFkMzIoaTkxNSwgZC0+cmVnX2Fj aykgJgo+IC0JCQkgICAgIEZPUkNFV0FLRV9LRVJORUwpLAo+IC0JCQkgICAgRk9SQ0VXQUtFX0FD S19USU1FT1VUX01TKSkKPiArCWlmICh3YWl0X2Fja19zZXQoaTkxNSwgZCwgRk9SQ0VXQUtFX0tF Uk5FTCkpCj4gIAkJRFJNX0VSUk9SKCIlczogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGZvcmNld2Fr ZSBhY2sgcmVxdWVzdC5cbiIsCj4gIAkJCSAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW5f dG9fc3RyKGQtPmlkKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+ICtmd19kb21h aW5fd2FpdF9hY2tfc2V0X2ZhbGxiYWNrKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICsJCQkJY29uc3Qgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpk KQo+ICt7Cj4gKwlpZiAobGlrZWx5KCF3YWl0X2Fja19zZXQoaTkxNSwgZCwgRk9SQ0VXQUtFX0tF Uk5FTCkpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoZndfZG9tYWluX3dhaXRfYWNrX3dpdGhf ZmFsbGJhY2soaTkxNSwgZCwgQUNLX1NFVCkpCj4gKwkJZndfZG9tYWluX3dhaXRfYWNrX3NldChp OTE1LCBkKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gIGZ3X2RvbWFpbl9wdXQo Y29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQpCj4gIHsKPiBAQCAtMTE5LDcgKzIx OSwyNyBAQCBmd19kb21haW5zX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZW51 bSBmb3JjZXdha2VfZG9tYWlucyBmd19kb21haW5zKQo+ICAJfQo+ICAKPiAgCWZvcl9lYWNoX2Z3 X2RvbWFpbl9tYXNrZWQoZCwgZndfZG9tYWlucywgaTkxNSwgdG1wKQo+IC0JCWZ3X2RvbWFpbl93 YWl0X2FjayhpOTE1LCBkKTsKPiArCQlmd19kb21haW5fd2FpdF9hY2tfc2V0KGk5MTUsIGQpOwo+ ICsKPiArCWk5MTUtPnVuY29yZS5md19kb21haW5zX2FjdGl2ZSB8PSBmd19kb21haW5zOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtmd19kb21haW5zX2dldF93aXRoX2ZhbGxiYWNrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJCQkgICAgIGVudW0gZm9yY2V3YWtlX2RvbWFp bnMgZndfZG9tYWlucykKPiArewo+ICsJc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9t YWluICpkOwo+ICsJdW5zaWduZWQgaW50IHRtcDsKPiArCj4gKwlHRU1fQlVHX09OKGZ3X2RvbWFp bnMgJiB+aTkxNS0+dW5jb3JlLmZ3X2RvbWFpbnMpOwo+ICsKPiArCWZvcl9lYWNoX2Z3X2RvbWFp bl9tYXNrZWQoZCwgZndfZG9tYWlucywgaTkxNSwgdG1wKSB7Cj4gKwkJZndfZG9tYWluX3dhaXRf YWNrX2NsZWFyX2ZhbGxiYWNrKGk5MTUsIGQpOwo+ICsJCWZ3X2RvbWFpbl9nZXQoaTkxNSwgZCk7 Cj4gKwl9Cj4gKwo+ICsJZm9yX2VhY2hfZndfZG9tYWluX21hc2tlZChkLCBmd19kb21haW5zLCBp OTE1LCB0bXApCj4gKwkJZndfZG9tYWluX3dhaXRfYWNrX3NldF9mYWxsYmFjayhpOTE1LCBkKTsK PiAgCj4gIAlpOTE1LT51bmNvcmUuZndfZG9tYWluc19hY3RpdmUgfD0gZndfZG9tYWluczsKPiAg fQo+IEBAIC0xMTQyLDcgKzEyNjIsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9t YWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCX0KPiAgCj4g IAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gLQkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+ICsJCWRldl9wcml2LT51bmNv cmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICsJCQlmd19kb21haW5zX2dldF93aXRoX2ZhbGxi YWNrOwo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBmd19kb21h aW5zX3B1dDsKPiAgCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX1JFTkRF UiwKPiAgCQkJICAgICAgIEZPUkNFV0FLRV9SRU5ERVJfR0VOOSwKPiAtLSAKPiAyLjExLjAKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==