From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Check for a stalled page flip after each vblank Date: Tue, 24 Jun 2014 15:44:19 +0300 Message-ID: <87tx7a8okc.fsf@intel.com> References: <1402404416-12127-1-git-send-email-chris@chris-wilson.co.uk> <1402483650-26232-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id A58C36E10E for ; Tue, 24 Jun 2014 05:44:23 -0700 (PDT) In-Reply-To: <1402483650-26232-1-git-send-email-chris@chris-wilson.co.uk> 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: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org CkNocmlzLCBJJ20gbG9zdCB3aXRoIHRoZSBzdGF0ZSBvZiB0aGlzIHNlcmllcy4gUGF0Y2h3b3Jr IGFuZCBhIG1haWwgZnJvbQpEYW5pZWwgY2xhaW0gdGhhdCBzb21lIG9mIHRoZSBwYXRjaGVzIHdl cmUgbWVyZ2VkLCBidXQgdGhleSBhcmUgbm93aGVyZQp0byBiZSBmb3VuZC4gRGlkIERhbmllbCBm aXJzdCBwdXNoIGFuZCB0aGVuIGNoYW5nZSBoaXMgbWluZD8KCkJSLApKYW5pLgoKCk9uIFdlZCwg MTEgSnVuIDIwMTQsIENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiB3cm90 ZToKPiBMb25nIGFnbywgYmFjayBpbiB0aGUgcmFjeSBoYXlkYXlzIG9mIDkxNWdtIGludGVycnVw dCBoYW5kbGluZywgcGFnZQo+IGZsaXBzIHdvdWxkIG9jY2FzaW9uYWxseSBnbyBhc3RyYXkgYW5k IGxlYXZlIHRoZSBoYXJkd2FyZSBzdHVjaywgYW5kIHRoZQo+IGRpc3BsYXkgbm90IHVwZGF0aW5n LiBUaGlzIGFubm95ZWQgcGVvcGxlIHdobyByZWxpZWQgb24gdGhlaXIgc3lzdGVtcwo+IGJlaW5n IGFibGUgdG8gZGlzcGxheSBjb250aW51b3VzbHkgdXBkYXRpbmcgaW5mb3JtYXRpb24gMjQvNywg YW5kIHNvCj4gc29tZSBjb2RlIHRvIGRldGVjdCB3aGVuIHRoZSBkcml2ZXIgbWlzc2VkIHRoZSBw YWdlIGZsaXAgY29tcGxldGlvbgo+IHNpZ25hbCB3YXMgYWRkZWQuIFVudGlsIHJlY2VudGx5LCBp dCB3YXMgcHJlc3VtZWQgdGhhdCB0aGUgaW50ZXJydXB0Cj4gaGFuZGxpbmcgd2FzIG5vdyBmbGF3 bGVzcywgYnV0IG9uY2UgYWdhaW4gU2ltb24gRmFybnN3b3J0aCBoYXMgZm91bmQgYQo+IHN5c3Rl bSB3aG9zZSBkaXNwbGF5IHdpbGwgc3RhbGwuIFJlaW5zdGF0ZSB0aGUgcGFnZWZsaXAgc3RhbGwg ZGV0ZWN0aW9uLAo+IHdoaWNoIHdvcmtzIGJ5IGNoZWNraW5nIHRvIHNlZSBpZiB0aGUgaGFyZHdh cmUgaGFzIGJlZW4gdXBkYXRlZCB0byB0aGUKPiBuZXcgZnJhbWVidWZmZXIgYWRkcmVzcyBmb2xs b3dpbmcgZWFjaCB2YmxhbmsuIElmIHRoZSBoYXJkd2FyZSBpcwo+IHNjYW5uaW5nIG91dCBmcm9t IHRoZSBuZXcgZnJhbWVidWZmZXIsIGJ1dCB3ZSBzdGlsbCB0aGluayB0aGUgZmxpcCBpcwo+IHBl bmRpbmcsIHRoZW4gd2Uga2ljayBvdXIgZHJpdmVyIGludG8gc3VibWlzaW9uLgo+Cj4gVGhpcyBp cyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgZWZmb3J0IHN0YXJ0ZWQgd2l0aAo+IGNvbW1pdCA0ZTUz NTljZDA1M2JmYjdkOGRhYmU0YTYzNjI0YTU3MjY4NDhmZmJjCj4gQXV0aG9yOiBTaW1vbiBGYXJu c3dvcnRoIDxzaW1vbi5mYXJuc3dvcnRoQG9uZWxhbi5jby51az4KPiBEYXRlOiAgIFdlZCBTZXAg MSAxNzo0Nzo1MiAyMDEwICswMTAwCj4KPiAgICAgZHJtL2k5MTU6IEF2b2lkIHBhZ2VmbGlwcGlu ZyBmcmVlemUgd2hlbiB3ZSBtaXNzIHRoZSBmbGlwIHByZXBhcmUgaW50ZXJydXB0Cj4KPiBUaGlz IG5vdyBpbmNsdWRlcyBhIGJlbHQtYW5kLWJyYWNlcyBhcHByb2FjaCB0byBtYWtlIHN1cmUgdGhl IGRyaXZlcgo+IChvciB0aGUgaGFyZHdhcmUpIGRvZXNuJ3QgbWlzcyBhbiBpbnRlcnJ1cHQgYW5k IGNhdXNlIHVzIHRvIHN0b3AKPiB1cGRhdGluZyB0aGUgZGlzcGxheSBzaG91bGQgdGhlIHVudGhp bmthYmxlIGhhcHBlbiBhbmQgdGhlIHBhZ2VmbGlwIGZhaWwgLSBpLmUuCj4gdGhhdCB0aGUgdXNl ciBpcyBhYmxlIHRvIGNvbnRpbnVlIHN1Ym1pdHRpbmcgZmxpcHMuCj4KPiB2MjogQ2xlYW51cCwg cmVmYWN0b3IsIGFuZCByZW5hbWUKPiB2MzogT25seSBzdGFydCBjb3VudGluZyB2YmxhbmtzIGFm dGVyIHRoZSBmbGlwIGNvbW1hbmQgaGFzIGJlZW4gc2VlbiBieQo+ICAgICB0aGUgaGFyZHdhcmUu Cj4gdjQ6IFJlY29yZCB0aGUgc2Vxbm8gYWZ0ZXIgd2UgdG91Y2ggdGhlIHJpbmcsIG9yIGVsc2Ug dGhlcmUgbWF5IGJlIG5vCj4gICAgIHNlcW5vIGFsbG9jYXRlZCB5ZXQuCj4KPiBSZXBvcnRlZC1i eTogU2ltb24gRmFybnN3b3J0aCA8c2ltb25AZmFybnoub3JnLnVrPgo+IEJ1Z3ppbGxhOiBodHRw czovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUwMgo+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IENjOiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAgMjkgKysrKystLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgIHwgIDg1ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMjQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgICA1ICsrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDkz IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBl OGVhMWVmZDM4MTAuLmVhZmZmZmUxYTE4NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gQEAgLTU4MSw2ICs1ODEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3BhZ2VmbGlw X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2luZm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbm9kZS0+bWlub3ItPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJc3RydWN0 IGludGVsX2NydGMgKmNydGM7Cj4gIAo+IEBAIC01OTUsNiArNTk2LDggQEAgc3RhdGljIGludCBp OTE1X2dlbV9wYWdlZmxpcF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAg CQkJc2VxX3ByaW50ZihtLCAiTm8gZmxpcCBkdWUgb24gcGlwZSAlYyAocGxhbmUgJWMpXG4iLAo+ ICAJCQkJICAgcGlwZSwgcGxhbmUpOwo+ICAJCX0gZWxzZSB7Cj4gKwkJCXUzMiBhZGRyOwo+ICsK PiAgCQkJaWYgKGF0b21pY19yZWFkKCZ3b3JrLT5wZW5kaW5nKSA8IElOVEVMX0ZMSVBfQ09NUExF VEUpIHsKPiAgCQkJCXNlcV9wcmludGYobSwgIkZsaXAgcXVldWVkIG9uIHBpcGUgJWMgKHBsYW5l ICVjKVxuIiwKPiAgCQkJCQkgICBwaXBlLCBwbGFuZSk7Cj4gQEAgLTYwMiwyMyArNjA1LDI5IEBA IHN0YXRpYyBpbnQgaTkxNV9nZW1fcGFnZWZsaXBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCj4gIAkJCQlzZXFfcHJpbnRmKG0sICJGbGlwIHBlbmRpbmcgKHdhaXRpbmcgZm9y IHZzeW5jKSBvbiBwaXBlICVjIChwbGFuZSAlYylcbiIsCj4gIAkJCQkJICAgcGlwZSwgcGxhbmUp Owo+ICAJCQl9Cj4gKwkJCXNlcV9wcmludGYobSwgIkZsaXAgcXVldWVkIG9uICVzIGF0IHNlcW5v ICV1LCBub3cgJXVcbiIsCj4gKwkJCQkgICB3b3JrLT5yaW5nLT5uYW1lLAo+ICsJCQkJICAgd29y ay0+ZmxpcF9xdWV1ZWRfc2Vxbm8sCj4gKwkJCQkgICB3b3JrLT5yaW5nLT5nZXRfc2Vxbm8od29y ay0+cmluZywgdHJ1ZSkpOwo+ICsJCQlzZXFfcHJpbnRmKG0sICJGbGlwIHF1ZXVlZCBvbiBmcmFt ZSAlZCwgKHdhcyByZWFkeSBvbiBmcmFtZSAlZCksIG5vdyAlZFxuIiwKPiArCQkJCSAgIHdvcmst PmZsaXBfcXVldWVkX3ZibGFuaywKPiArCQkJCSAgIHdvcmstPmZsaXBfcmVhZHlfdmJsYW5rLAo+ ICsJCQkJICAgZHJtX3ZibGFua19jb3VudChkZXYsIGNydGMtPnBpcGUpKTsKPiAgCQkJaWYgKHdv cmstPmVuYWJsZV9zdGFsbF9jaGVjaykKPiAgCQkJCXNlcV9wdXRzKG0sICJTdGFsbCBjaGVjayBl bmFibGVkLCAiKTsKPiAgCQkJZWxzZQo+ICAJCQkJc2VxX3B1dHMobSwgIlN0YWxsIGNoZWNrIHdh aXRpbmcgZm9yIHBhZ2UgZmxpcCBpb2N0bCwgIik7Cj4gIAkJCXNlcV9wcmludGYobSwgIiVkIHBy ZXBhcmVzXG4iLCBhdG9taWNfcmVhZCgmd29yay0+cGVuZGluZykpOwo+ICAKPiAtCQkJaWYgKHdv cmstPm9sZF9mYl9vYmopIHsKPiAtCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB3b3JrLT5vbGRfZmJfb2JqOwo+IC0JCQkJaWYgKG9iaikKPiAtCQkJCQlzZXFfcHJpbnRmKG0s ICJPbGQgZnJhbWVidWZmZXIgZ3R0X29mZnNldCAweCUwOGx4XG4iLAo+IC0JCQkJCQkgICBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSk7Cj4gLQkJCX0KPiArCQkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDQpCj4gKwkJCQlhZGRyID0gSTkxNV9ISV9ESVNQQkFTRShJOTE1X1JFQUQo RFNQU1VSRihjcnRjLT5wbGFuZSkpKTsKPiArCQkJZWxzZQo+ICsJCQkJYWRkciA9IEk5MTVfUkVB RChEU1BBRERSKGNydGMtPnBsYW5lKSk7Cj4gKwkJCXNlcV9wcmludGYobSwgIkN1cnJlbnQgc2Nh bm91dCBhZGRyZXNzIDB4JTA4eFxuIiwgYWRkcik7Cj4gKwo+ICAJCQlpZiAod29yay0+cGVuZGlu Z19mbGlwX29iaikgewo+IC0JCQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHdv cmstPnBlbmRpbmdfZmxpcF9vYmo7Cj4gLQkJCQlpZiAob2JqKQo+IC0JCQkJCXNlcV9wcmludGYo bSwgIk5ldyBmcmFtZWJ1ZmZlciBndHRfb2Zmc2V0IDB4JTA4bHhcbiIsCj4gLQkJCQkJCSAgIGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopKTsKPiArCQkJCXNlcV9wcmludGYobSwgIk5ldyBm cmFtZWJ1ZmZlciBhZGRyZXNzIDB4JTA4bHhcbiIsIChsb25nKXdvcmstPmd0dF9vZmZzZXQpOwo+ ICsJCQkJc2VxX3ByaW50ZihtLCAiTU1JTyB1cGRhdGUgY29tcGxldGVkPyAlZFxuIiwgIGFkZHIg PT0gd29yay0+Z3R0X29mZnNldCk7Cj4gIAkJCX0KPiAgCQl9Cj4gIAkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j Cj4gaW5kZXggM2VmMWI3ZTQ4ZjA3Li5kNWZjYWMxZjQ0NjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiBAQCAtMTgwMiw4ICsxODAyLDkgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19w aXBlc3RhdF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaWlyKQo+ICAJ c3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gIAo+ICAJZm9yX2VhY2hfcGlwZShw aXBlKSB7Cj4gLQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX1NUQVJUX1ZCTEFOS19JTlRF UlJVUFRfU1RBVFVTKQo+IC0JCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsK PiArCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9T VEFUVVMgJiYKPiArCQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCj4g KwkJCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+ICAKPiAgCQlpZiAocGlwZV9z dGF0c1twaXBlXSAmIFBMQU5FX0ZMSVBfRE9ORV9JTlRfU1RBVFVTX1ZMVikgewo+ICAJCQlpbnRl bF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+IEBAIC0yMDc5LDggKzIwODAsOSBAQCBz dGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1MzIgZGVfaWlyKQo+ICAJCURSTV9FUlJPUigiUG9pc29uIGludGVycnVwdFxuIik7Cj4gIAo+ ICAJZm9yX2VhY2hfcGlwZShwaXBlKSB7Cj4gLQkJaWYgKGRlX2lpciAmIERFX1BJUEVfVkJMQU5L KHBpcGUpKQo+IC0JCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiArCQlp ZiAoZGVfaWlyICYgREVfUElQRV9WQkxBTksocGlwZSkgJiYKPiArCQkgICAgaW50ZWxfcGlwZV9o YW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCj4gKwkJCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYs IHBpcGUpOwo+ICAKPiAgCQlpZiAoZGVfaWlyICYgREVfUElQRV9GSUZPX1VOREVSUlVOKHBpcGUp KQo+ICAJCQlpZiAoaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBp cGUsIGZhbHNlKSkKPiBAQCAtMjEyOSw4ICsyMTMxLDkgQEAgc3RhdGljIHZvaWQgaXZiX2Rpc3Bs YXlfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGRlX2lpcikKPiAgCQlp bnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoZGV2KTsKPiAgCj4gIAlmb3JfZWFjaF9waXBlKHBpcGUp IHsKPiAtCQlpZiAoZGVfaWlyICYgKERFX1BJUEVfVkJMQU5LX0lWQihwaXBlKSkpCj4gLQkJCWlu dGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpOwo+ICsJCWlmIChkZV9paXIgJiAoREVf UElQRV9WQkxBTktfSVZCKHBpcGUpKSAmJgo+ICsJCSAgICBpbnRlbF9waXBlX2hhbmRsZV92Ymxh bmsoZGV2LCBwaXBlKSkKPiArCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldiwgcGlwZSk7Cj4g IAo+ICAJCS8qIHBsYW5lL3BpcGVzIG1hcCAxOjEgb24gaWxrKyAqLwo+ICAJCWlmIChkZV9paXIg JiBERV9QTEFORV9GTElQX0RPTkVfSVZCKHBpcGUpKSB7Cj4gQEAgLTIyNjUsOCArMjI2OCwxMCBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgZ2VuOF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwaXBlX2lpciA9IEk5MTVfUkVBRChHRU44X0RFX1BJ UEVfSUlSKHBpcGUpKTsKPiAtCQlpZiAocGlwZV9paXIgJiBHRU44X1BJUEVfVkJMQU5LKQo+IC0J CQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiArCj4gKwkJaWYgKHBpcGVf aWlyICYgR0VOOF9QSVBFX1ZCTEFOSyAmJgo+ICsJCSAgICBpbnRlbF9waXBlX2hhbmRsZV92Ymxh bmsoZGV2LCBwaXBlKSkKPiArCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldiwgcGlwZSk7Cj4g IAo+ICAJCWlmIChwaXBlX2lpciAmIEdFTjhfUElQRV9QUklNQVJZX0ZMSVBfRE9ORSkgewo+ICAJ CQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+IEBAIC0yNTc1LDUyICsyNTgw LDYgQEAgdm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29s IHdlZGdlZCwKPiAgCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5ncHVfZXJyb3Iud29yayk7Cj4g IH0KPiAgCj4gLXN0YXRpYyB2b2lkIF9fYWx3YXlzX3VudXNlZCBpOTE1X3BhZ2VmbGlwX3N0YWxs X2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0 IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+ IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVjdCBpbnRlbF91bnBp bl93b3JrICp3b3JrOwo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCWJvb2wgc3RhbGxfZGV0 ZWN0ZWQ7Cj4gLQo+IC0JLyogSWdub3JlIGVhcmx5IHZibGFuayBpcnFzICovCj4gLQlpZiAoaW50 ZWxfY3J0YyA9PSBOVUxMKQo+IC0JCXJldHVybjsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgm ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gLQl3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29y azsKPiAtCj4gLQlpZiAod29yayA9PSBOVUxMIHx8Cj4gLQkgICAgYXRvbWljX3JlYWQoJndvcmst PnBlbmRpbmcpID49IElOVEVMX0ZMSVBfQ09NUExFVEUgfHwKPiAtCSAgICAhd29yay0+ZW5hYmxl X3N0YWxsX2NoZWNrKSB7Cj4gLQkJLyogRWl0aGVyIHRoZSBwZW5kaW5nIGZsaXAgSVJRIGFycml2 ZWQsIG9yIHdlJ3JlIHRvbyBlYXJseS4gRG9uJ3QgY2hlY2sgKi8KPiAtCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4g LQo+IC0JLyogUG90ZW50aWFsIHN0YWxsIC0gaWYgd2Ugc2VlIHRoYXQgdGhlIGZsaXAgaGFzIGhh cHBlbmVkLCBhc3N1bWUgYSBtaXNzZWQgaW50ZXJydXB0ICovCj4gLQlvYmogPSB3b3JrLT5wZW5k aW5nX2ZsaXBfb2JqOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiAtCQlp bnQgZHNwc3VyZiA9IERTUFNVUkYoaW50ZWxfY3J0Yy0+cGxhbmUpOwo+IC0JCXN0YWxsX2RldGVj dGVkID0gSTkxNV9ISV9ESVNQQkFTRShJOTE1X1JFQUQoZHNwc3VyZikpID09Cj4gLQkJCQkJaTkx NV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7Cj4gLQl9IGVsc2Ugewo+IC0JCWludCBkc3BhZGRy ID0gRFNQQUREUihpbnRlbF9jcnRjLT5wbGFuZSk7Cj4gLQkJc3RhbGxfZGV0ZWN0ZWQgPSBJOTE1 X1JFQUQoZHNwYWRkcikgPT0gKGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsKPiAtCQkJ CQkJCWNydGMtPnkgKiBjcnRjLT5wcmltYXJ5LT5mYi0+cGl0Y2hlc1swXSArCj4gLQkJCQkJCQlj cnRjLT54ICogY3J0Yy0+cHJpbWFyeS0+ZmItPmJpdHNfcGVyX3BpeGVsLzgpOwo+IC0JfQo+IC0K PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0K PiAtCWlmIChzdGFsbF9kZXRlY3RlZCkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIlBhZ2VmbGlw IHN0YWxsIGRldGVjdGVkXG4iKTsKPiAtCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIGlu dGVsX2NydGMtPnBsYW5lKTsKPiAtCX0KPiAtfQo+IC0KPiAgLyogQ2FsbGVkIGZyb20gZHJtIGdl bmVyaWMgY29kZSwgcGFzc2VkICdjcnRjJyB3aGljaAo+ICAgKiB3ZSB1c2UgYXMgYSBwaXBlIGlu ZGV4Cj4gICAqLwo+IEBAIC0zNzM2LDcgKzM2OTUsNyBAQCBzdGF0aWMgYm9vbCBpOHh4X2hhbmRs ZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ ICAJaWYgKChpaXIgJiBmbGlwX3BlbmRpbmcpID09IDApCj4gLQkJcmV0dXJuIGZhbHNlOwo+ICsJ CWdvdG8gY2hlY2tfcGFnZV9mbGlwOwo+ICAKPiAgCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRl diwgcGxhbmUpOwo+ICAKPiBAQCAtMzc0NywxMSArMzcwNiwxNCBAQCBzdGF0aWMgYm9vbCBpOHh4 X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqIGFuIGludGVycnVw dCBwZXIgc2UsIHdlIHdhdGNoIGZvciB0aGUgY2hhbmdlIGF0IHZibGFuay4KPiAgCSAqLwo+ICAJ aWYgKEk5MTVfUkVBRDE2KElTUikgJiBmbGlwX3BlbmRpbmcpCj4gLQkJcmV0dXJuIGZhbHNlOwo+ ICsJCWdvdG8gY2hlY2tfcGFnZV9mbGlwOwo+ICAKPiAgCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXAo ZGV2LCBwaXBlKTsKPiAtCj4gIAlyZXR1cm4gdHJ1ZTsKPiArCj4gK2NoZWNrX3BhZ2VfZmxpcDoK PiArCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+ICsJcmV0dXJuIGZhbHNlOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgaXJxcmV0dXJuX3QgaTh4eF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2 b2lkICphcmcpCj4gQEAgLTM5MjEsNyArMzg4Myw3IEBAIHN0YXRpYyBib29sIGk5MTVfaGFuZGxl X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4g IAlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkJ Z290byBjaGVja19wYWdlX2ZsaXA7Cj4gIAo+ICAJaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoZGV2 LCBwbGFuZSk7Cj4gIAo+IEBAIC0zOTMyLDExICszODk0LDE0IEBAIHN0YXRpYyBib29sIGk5MTVf aGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogYW4gaW50ZXJydXB0 IHBlciBzZSwgd2Ugd2F0Y2ggZm9yIHRoZSBjaGFuZ2UgYXQgdmJsYW5rLgo+ICAJICovCj4gIAlp ZiAoSTkxNV9SRUFEKElTUikgJiBmbGlwX3BlbmRpbmcpCj4gLQkJcmV0dXJuIGZhbHNlOwo+ICsJ CWdvdG8gY2hlY2tfcGFnZV9mbGlwOwo+ICAKPiAgCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoZGV2 LCBwaXBlKTsKPiAtCj4gIAlyZXR1cm4gdHJ1ZTsKPiArCj4gK2NoZWNrX3BhZ2VfZmxpcDoKPiAr CWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+ICsJcmV0dXJuIGZhbHNlOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgaXJxcmV0dXJuX3QgaTkxNV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICphcmcpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGI1Y2JiMjgz MDQyMC4uZjQ4OWY0MGU0M2NmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IEBAIC0zMzMwLDYgKzMzMzAsMjkgQEAgYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBp bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIGZhbHNlOwo+ICB9Cj4gIAo+ICtz dGF0aWMgdm9pZCBwYWdlX2ZsaXBfY29tcGxldGVkKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3Jr ID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKPiArCj4gKwkvKiBlbnN1cmUgdGhhdCB0aGUgdW5w aW4gd29yayBpcyBjb25zaXN0ZW50IHdydCAtPnBlbmRpbmcuICovCj4gKwlzbXBfcm1iKCk7Cj4g KwlpbnRlbF9jcnRjLT51bnBpbl93b3JrID0gTlVMTDsKPiArCj4gKwlpZiAod29yay0+ZXZlbnQp Cj4gKwkJZHJtX3NlbmRfdmJsYW5rX2V2ZW50KGludGVsX2NydGMtPmJhc2UuZGV2LAo+ICsJCQkJ ICAgICAgaW50ZWxfY3J0Yy0+cGlwZSwKPiArCQkJCSAgICAgIHdvcmstPmV2ZW50KTsKPiArCj4g Kwlkcm1fY3J0Y192YmxhbmtfcHV0KCZpbnRlbF9jcnRjLT5iYXNlKTsKPiArCj4gKwl3YWtlX3Vw X2FsbCgmZGV2X3ByaXYtPnBlbmRpbmdfZmxpcF9xdWV1ZSk7Cj4gKwlxdWV1ZV93b3JrKGRldl9w cml2LT53cSwgJndvcmstPndvcmspOwo+ICsKPiArCXRyYWNlX2k5MTVfZmxpcF9jb21wbGV0ZShp bnRlbF9jcnRjLT5wbGFuZSwKPiArCQkJCSB3b3JrLT5wZW5kaW5nX2ZsaXBfb2JqKTsKPiArfQo+ ICsKPiAgdm9pZCBpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ IEBAIC04ODk1LDcgKzg5MTgsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bnBpbl93b3JrX2ZuKHN0 cnVjdCB3b3JrX3N0cnVjdCAqX193b3JrKQo+ICBzdGF0aWMgdm9pZCBkb19pbnRlbF9maW5pc2hf cGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICAgICBzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKPiAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gQEAgLTg5MTUsMjMgKzg5MzcsOSBAQCBzdGF0aWMgdm9p ZCBkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ cmV0dXJuOwo+ICAJfQo+ICAKPiAtCS8qIGFuZCB0aGF0IHRoZSB1bnBpbiB3b3JrIGlzIGNvbnNp c3RlbnQgd3J0IC0+cGVuZGluZy4gKi8KPiAtCXNtcF9ybWIoKTsKPiAtCj4gLQlpbnRlbF9jcnRj LT51bnBpbl93b3JrID0gTlVMTDsKPiAtCj4gLQlpZiAod29yay0+ZXZlbnQpCj4gLQkJZHJtX3Nl bmRfdmJsYW5rX2V2ZW50KGRldiwgaW50ZWxfY3J0Yy0+cGlwZSwgd29yay0+ZXZlbnQpOwo+IC0K PiAtCWRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7Cj4gKwlwYWdlX2ZsaXBfY29tcGxldGVkKGlu dGVsX2NydGMpOwo+ICAKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9j aywgZmxhZ3MpOwo+IC0KPiAtCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1 ZXVlKTsKPiAtCj4gLQlxdWV1ZV93b3JrKGRldl9wcml2LT53cSwgJndvcmstPndvcmspOwo+IC0K PiAtCXRyYWNlX2k5MTVfZmxpcF9jb21wbGV0ZShpbnRlbF9jcnRjLT5wbGFuZSwgd29yay0+cGVu ZGluZ19mbGlwX29iaik7Cj4gIH0KPiAgCj4gIHZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKPiBAQCAtOTI2NSw2ICs5MjczLDY0IEBA IHN0YXRpYyBpbnQgaW50ZWxfZGVmYXVsdF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlyZXR1cm4gLUVOT0RFVjsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgX19pbnRlbF9w YWdlZmxpcF9zdGFsbF9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJCSBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29y ayA9IGludGVsX2NydGMtPnVucGluX3dvcms7Cj4gKwl1MzIgYWRkcjsKPiArCj4gKwlpZiAoYXRv bWljX3JlYWQoJndvcmstPnBlbmRpbmcpID49IElOVEVMX0ZMSVBfQ09NUExFVEUpCj4gKwkJcmV0 dXJuIHRydWU7Cj4gKwo+ICsJaWYgKCF3b3JrLT5lbmFibGVfc3RhbGxfY2hlY2spCj4gKwkJcmV0 dXJuIGZhbHNlOwo+ICsKPiArCWlmICh3b3JrLT5mbGlwX3JlYWR5X3ZibGFuayA9PSAwKSB7Cj4g KwkJaWYgKCFpOTE1X3NlcW5vX3Bhc3NlZCh3b3JrLT5yaW5nLT5nZXRfc2Vxbm8od29yay0+cmlu ZywgdHJ1ZSksCj4gKwkJCQkgICAgICB3b3JrLT5mbGlwX3F1ZXVlZF9zZXFubykpCj4gKwkJCXJl dHVybiBmYWxzZTsKPiArCj4gKwkJd29yay0+ZmxpcF9yZWFkeV92YmxhbmsgPSBkcm1fdmJsYW5r X2NvdW50KGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRybV92Ymxh bmtfY291bnQoZGV2LCBpbnRlbF9jcnRjLT5waXBlKSAtIHdvcmstPmZsaXBfcmVhZHlfdmJsYW5r IDwgMykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyogUG90ZW50aWFsIHN0YWxsIC0gaWYg d2Ugc2VlIHRoYXQgdGhlIGZsaXAgaGFzIGhhcHBlbmVkLAo+ICsJICogYXNzdW1lIGEgbWlzc2Vk IGludGVycnVwdC4gKi8KPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICsJCWFk ZHIgPSBJOTE1X0hJX0RJU1BCQVNFKEk5MTVfUkVBRChEU1BTVVJGKGludGVsX2NydGMtPnBsYW5l KSkpOwo+ICsJZWxzZQo+ICsJCWFkZHIgPSBJOTE1X1JFQUQoRFNQQUREUihpbnRlbF9jcnRjLT5w bGFuZSkpOwo+ICsKPiArCS8qIFRoZXJlIGlzIGEgcG90ZW50aWFsIGlzc3VlIGhlcmUgd2l0aCBh IGZhbHNlIHBvc2l0aXZlIGFmdGVyIGEgZmxpcAo+ICsJICogdG8gdGhlIHNhbWUgYWRkcmVzcy4g V2UgY291bGQgYWRkcmVzcyB0aGlzIGJ5IGNoZWNraW5nIGZvciBhCj4gKwkgKiBub24taW5jcmVt ZW50aW5nIGZyYW1lIGNvdW50ZXIuCj4gKwkgKi8KPiArCXJldHVybiBhZGRyID09IHdvcmstPmd0 dF9vZmZzZXQ7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfY2hlY2tfcGFnZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJdW5zaWduZWQgbG9u ZyBmbGFnczsKPiArCj4gKwlpZiAoY3J0YyA9PSBOVUxMKQo+ICsJCXJldHVybjsKPiArCj4gKwlz cGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gKwlpZiAoaW50ZWxf Y3J0Yy0+dW5waW5fd29yayAmJiBfX2ludGVsX3BhZ2VmbGlwX3N0YWxsX2NoZWNrKGRldiwgY3J0 YykpIHsKPiArCQlXQVJOX09OQ0UoMSwgIktpY2tpbmcgc3R1Y2sgcGFnZSBmbGlwOiBxdWV1ZWQg YXQgJWQsIG5vdyAlZFxuIiwKPiArCQkJIGludGVsX2NydGMtPnVucGluX3dvcmstPmZsaXBfcXVl dWVkX3ZibGFuaywgZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpKTsKPiArCQlwYWdlX2ZsaXBf Y29tcGxldGVkKGludGVsX2NydGMpOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCj4gIAkJCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVu dCwKPiBAQCAtOTMxMiwxMiArOTM3OCwyMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCS8qIFdlIGJvcnJvdyB0aGUgZXZlbnQgc3Bp biBsb2NrIGZvciBwcm90ZWN0aW5nIHVucGluX3dvcmsgKi8KPiAgCXNwaW5fbG9ja19pcnFzYXZl KCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAgCWlmIChpbnRlbF9jcnRjLT51bnBpbl93b3Jr KSB7Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7 Cj4gLQkJa2ZyZWUod29yayk7Cj4gLQkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKPiArCQkv KiBCZWZvcmUgZGVjbGFyaW5nIHRoZSBmbGlwIHF1ZXVlIHdlZGdlZCwgY2hlY2sgaWYKPiArCQkg KiB0aGUgaGFyZHdhcmUgY29tcGxldGVkIHRoZSBvcGVyYXRpb24gYmVoaW5kIG91ciBiYWNrcy4K PiArCQkgKi8KPiArCQlpZiAoX19pbnRlbF9wYWdlZmxpcF9zdGFsbF9jaGVjayhkZXYsIGNydGMp KSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoImZsaXAgcXVldWU6IHByZXZpb3VzIGZsaXAgY29t cGxldGVkLCBjb250aW51aW5nXG4iKTsKPiArCQkJcGFnZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9j cnRjKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJmbGlwIHF1ZXVlOiBj cnRjIGFscmVhZHkgYnVzeVxuIik7Cj4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ICAKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCJmbGlwIHF1ZXVl OiBjcnRjIGFscmVhZHkgYnVzeVxuIik7Cj4gLQkJcmV0dXJuIC1FQlVTWTsKPiArCQkJZHJtX2Ny dGNfdmJsYW5rX3B1dChjcnRjKTsKPiArCQkJa2ZyZWUod29yayk7Cj4gKwkJCXJldHVybiAtRUJV U1k7Cj4gKwkJfQo+ICAJfQo+ICAJaW50ZWxfY3J0Yy0+dW5waW5fd29yayA9IHdvcms7Cj4gIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiBAQCAtOTMz Nyw4ICs5NDExLDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAo+ICAJd29yay0+cGVuZGluZ19mbGlwX29iaiA9IG9iajsKPiAgCj4g LQl3b3JrLT5lbmFibGVfc3RhbGxfY2hlY2sgPSB0cnVlOwo+IC0KPiAgCWF0b21pY19pbmMoJmlu dGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwo+ICAJaW50ZWxfY3J0Yy0+cmVzZXRfY291bnRl ciA9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpOwo+ICAK PiBAQCAtOTM2Niw2ICs5NDM4LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGNsZWFudXBfdW5w aW47Cj4gIAo+ICsJd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID0gZHJtX3ZibGFua19jb3VudChk ZXYsIGludGVsX2NydGMtPnBpcGUpOwo+ICsJd29yay0+ZmxpcF9xdWV1ZWRfc2Vxbm8gPSBpbnRl bF9yaW5nX2dldF9zZXFubyhyaW5nKTsKPiArCXdvcmstPnJpbmcgPSByaW5nOwo+ICsKPiArCXdv cmstPmVuYWJsZV9zdGFsbF9jaGVjayA9IHRydWU7Cj4gKwo+ICAJaW50ZWxfZGlzYWJsZV9mYmMo ZGV2KTsKPiAgCWludGVsX21hcmtfZmJfYnVzeShvYmosIE5VTEwpOwo+ICAJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA3 OGQ0MTI0ZGJhODQuLjEwNjY1NzE2ZWIxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTYxMiwxMiArNjEyLDE2IEBAIHN0cnVjdCBpbnRlbF91bnBpbl93b3JrIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfZmJfb2JqOwo+ICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnBlbmRpbmdfZmxpcF9vYmo7Cj4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICpldmVudDsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7Cj4gIAlh dG9taWNfdCBwZW5kaW5nOwo+ICAjZGVmaW5lIElOVEVMX0ZMSVBfSU5BQ1RJVkUJMAo+ICAjZGVm aW5lIElOVEVMX0ZMSVBfUEVORElORwkxCj4gICNkZWZpbmUgSU5URUxfRkxJUF9DT01QTEVURQky Cj4gIAl1MzIgZmxpcF9jb3VudDsKPiAgCXUzMiBndHRfb2Zmc2V0Owo+ICsJdTMyIGZsaXBfcXVl dWVkX3NlcW5vOwo+ICsJaW50IGZsaXBfcXVldWVkX3ZibGFuazsKPiArCWludCBmbGlwX3JlYWR5 X3ZibGFuazsKPiAgCWJvb2wgZW5hYmxlX3N0YWxsX2NoZWNrOwo+ICB9Owo+ICAKPiBAQCAtNzYz LDYgKzc2Nyw3IEBAIF9faW50ZWxfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIHZvaWQgaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IHBsYW5lKTsKPiAgdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlKTsKPiAgdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlw X3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSk7Cj4gK3ZvaWQgaW50ZWxf Y2hlY2tfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKTsKPiAgc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKTsKPiAgdm9pZCBhc3NlcnRfc2hhcmVkX2RwbGwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bCwKPiAtLSAKPiAyLjAuMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK