From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: Re: [PATCH] drm/i915: Refactor work that can sleep out of commit (v4) Date: Fri, 12 Dec 2014 11:06:57 +0200 Message-ID: <548AB031.90106@gmail.com> References: <1418154823-10819-3-git-send-email-matthew.d.roper@intel.com> <1418342023-1786-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id D50A56E50F for ; Fri, 12 Dec 2014 01:06:55 -0800 (PST) In-Reply-To: <1418342023-1786-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTIvMTIvMjAxNCAwMTo1MyBBTSwgTWF0dCBSb3BlciB3cm90ZToKPiBPbmNlIHdlIGludGVn cmF0ZSBvdXIgd29yayBpbnRvIHRoZSBhdG9taWMgcGlwZWxpbmUsIHBsYW5lIGNvbW1pdAo+IG9w ZXJhdGlvbnMgd2lsbCBuZWVkIHRvIGhhcHBlbiB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQsIGR1 ZSB0byB2YmxhbmsKPiBldmFzaW9uLiAgT3VyIGNvbW1pdCBmdW5jdGlvbnMgdG9kYXkgaW5jbHVk ZSBzbGVlcGFibGUgd29yaywgc28gdGhvc2UKPiBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3BsaXQg b3V0IGFuZCBydW4gZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUKPiBhdG9taWMgcmVnaXN0ZXIg cHJvZ3JhbW1pbmcuCj4KPiBUaGUgc29sdXRpb24gaGVyZSBjYWxjdWxhdGVzIHdoaWNoIG9mIHRo b3NlIG9wZXJhdGlvbnMgd2lsbCBuZWVkIHRvIGJlCj4gcGVyZm9ybWVkIGR1cmluZyB0aGUgJ2No ZWNrJyBwaGFzZSBhbmQgc2V0cyBmbGFncyBpbiBhbiBpbnRlbF9jcnRjCj4gc3ViLXN0cnVjdC4g IE5ldyBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdCgpIGFuZAo+IGludGVsX2ZpbmlzaF9jcnRjX2Nv bW1pdCgpIGZ1bmN0aW9ucyBhcmUgYWRkZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUKPiBhY3R1YWwg cmVnaXN0ZXIgcHJvZ3JhbW1pbmc7IHRoZXNlIHdpbGwgZXZlbnR1YWxseSBiZSBjYWxsZWQgZnJv bSB0aGUKPiBhdG9taWMgcGxhbmUgaGVscGVyJ3MgLmF0b21pY19iZWdpbigpIGFuZCAuYXRvbWlj X2VuZCgpIGVudHJ5cG9pbnRzLgo+Cj4gdjI6IEZpeCBicm9rZW4gc3ByaXRlIGNvZGUgc3BsaXQK Pgo+IHYzOiBNYWtlIHRoZSBwcmUvcG9zdCBjb21taXQgd29yayBjcnRjLWJhc2VkIHRvIG1hdGNo IGhvdyB3ZSBldmVudHVhbGx5Cj4gICAgICB3YW50IHRoaXMgdG8gYmUgY2FsbGVkIGZyb20gdGhl IGF0b21pYyBwbGFuZSBoZWxwZXJzLgo+Cj4gdjQ6IFNvbWUgcGxhdGZvcm1zIHRoYXQgaGF2ZW4n dCBoYWQgdGhlaXIgd2F0ZXJtYXJrIGNvZGUgcmV3b3JrZWQgd2VyZQo+ICAgICAgd2FpdGluZyBm b3IgdmJsYW5rLCB0aGVuIGNhbGxpbmcgdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzIGluIHRoZWly Cj4gICAgICBwbGF0Zm9ybS1zcGVjaWZpYyBkaXNhYmxlIGNvZGUuICBUaGVzZSBhbHNvIG5lZWQg dG8gYmUgZmxhZ2dlZCBvdXQKPiAgICAgIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uLgo+Cj4gU2ln bmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE4MCArKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgIDMxICsrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMgIHwgIDc4ICsrKysrKy0tLS0tLS0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNzggaW5z ZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IGluZGV4IDMwNDRhZjUuLjVkOTAxMTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gQEAgLTExNzM3LDcgKzExNzM3LDExIEBAIHN0YXRpYyBpbnQKPiAg IGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJ CQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0g c3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBz dGF0ZS0+YmFzZS5mYjsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsK PiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwo+IEBAIC0xMTc1OCw2ICsx MTc2Miw0MCBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAgCQlyZXR1cm4gLUVCVVNZOwo+ICAgCX0KPgo+ICsJaWYgKGludGVsX2NydGMtPmFj dGl2ZSkgewo+ICsJCS8qCj4gKwkJICogRkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9y bXMgZm9yIHJvdGF0ZWQKPiArCQkgKiBwbGFuZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlv biBpcyBub3QgMCBhbmQKPiArCQkgKiB1cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFj ayB0byAwLgo+ICsJCSAqCj4gKwkJICogRklYTUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhl IGZiYyB1cGRhdGUgZG9uZSBpbgo+ICsJCSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5j dGlvbiBleGNlcHQgdGhhdCB0aGF0Cj4gKwkJICogb25lIGlzIGRvbmUgdG9vIGxhdGUuIFdlIGV2 ZW50dWFsbHkgbmVlZCB0byB1bmlmeQo+ICsJCSAqIHRoaXMuCj4gKwkJICovCj4gKwkJaWYgKGlu dGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCAmJgo+ICsJCSAgICBJTlRFTF9JTkZPKGRldiktPmdl biA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+ICsJCSAgICBkZXZfcHJpdi0+ZmJjLnBsYW5lID09 IGludGVsX2NydGMtPnBsYW5lICYmCj4gKwkJICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbiAhPSBC SVQoRFJNX1JPVEFURV8wKSkgewo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMg PSB0cnVlOwo+ICsJCX0KPiArCj4gKwkJaWYgKHN0YXRlLT52aXNpYmxlKSB7Cj4gKwkJCS8qCj4g KwkJCSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlhdGVseSBpZiB0aGUgcGxhbmUKPiAr CQkJICogaXMgZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Cj4g KwkJCSAqIGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZibGFuayA6KAo+ICsJCQkgKi8KPiAr CQkJaWYgKElTX0JST0FEV0VMTChkZXYpICYmICFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQp Cj4gKwkJCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0cnVlOwo+ICsJCX0KPiAr Cj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KPiArCQkJSU5URUxfRlJPTlRCVUZG RVJfUFJJTUFSWShpbnRlbF9jcnRjLT5waXBlKTsKPiArCj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWlj LnVwZGF0ZV9mYmMgPSB0cnVlOwo+ICsJfQo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IEBA IC0xMTc3MywxOCArMTE4MTEsNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g aW50ZWxfZmJfb2JqKGZiKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRl LT5zcmM7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+IC0KPiAtCWlm ICghZmIpIHsKPiAtCQkvKgo+IC0JCSAqICdwcmVwYXJlJyBpcyBuZXZlciBjYWxsZWQgd2hlbiBw bGFuZSBpcyBiZWluZyBkaXNhYmxlZCwgc28KPiAtCQkgKiB3ZSBuZWVkIHRvIGhhbmRsZSBmcm9u dGJ1ZmZlciB0cmFja2luZyBoZXJlCj4gLQkJICovCj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+IC0JCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIp LCBOVUxMLAo+IC0JCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKHBpcGUpKTsKPiAtCQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCX0KPgo+ICAgCXBsYW5lLT5mYiA9 IGZiOwo+ICAgCWNydGMtPnggPSBzcmMtPngxID4+IDE2Owo+IEBAIC0xMTgwMSwyNiArMTE4Mjcs NyBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgIAlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2 ZSkgewo+IC0JCS8qCj4gLQkJICogRkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMg Zm9yIHJvdGF0ZWQKPiAtCQkgKiBwbGFuZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlvbiBp cyBub3QgMCBhbmQKPiAtCQkgKiB1cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFjayB0 byAwLgo+IC0JCSAqCj4gLQkJICogRklYTUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhlIGZi YyB1cGRhdGUgZG9uZSBpbgo+IC0JCSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5jdGlv biBleGNlcHQgdGhhdCB0aGF0Cj4gLQkJICogb25lIGlzIGRvbmUgdG9vIGxhdGUuIFdlIGV2ZW50 dWFsbHkgbmVlZCB0byB1bmlmeQo+IC0JCSAqIHRoaXMuCj4gLQkJICovCj4gLQkJaWYgKGludGVs X2NydGMtPnByaW1hcnlfZW5hYmxlZCAmJgo+IC0JCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8 PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+IC0JCSAgICBkZXZfcHJpdi0+ZmJjLnBsYW5lID09IGlu dGVsX2NydGMtPnBsYW5lICYmCj4gLQkJICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbiAhPSBCSVQo RFJNX1JPVEFURV8wKSkgewo+IC0JCQlpbnRlbF9mYmNfZGlzYWJsZShkZXYpOwo+IC0JCX0KPiAt Cj4gICAJCWlmIChzdGF0ZS0+dmlzaWJsZSkgewo+IC0JCQlib29sIHdhc19lbmFibGVkID0gaW50 ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkOwo+IC0KPiAgIAkJCS8qIEZJWE1FOiBraWxsIHRoaXMg ZmFzdGJvb3QgaGFjayAqLwo+ICAgCQkJaW50ZWxfdXBkYXRlX3BpcGVfc2l6ZShpbnRlbF9jcnRj KTsKPgo+IEBAIC0xMTgyOCwxNCArMTE4MzUsNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPgo+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBk YXRlX3ByaW1hcnlfcGxhbmUoY3J0YywgcGxhbmUtPmZiLAo+ICAgCQkJCQljcnRjLT54LCBjcnRj LT55KTsKPiAtCj4gLQkJCS8qCj4gLQkJCSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlh dGVseSBpZiB0aGUgcGxhbmUKPiAtCQkJICogaXMgZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5l IGVuYWJsZSBpcyBhbHJlYWR5Cj4gLQkJCSAqIGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZi bGFuayA6KAo+IC0JCQkgKi8KPiAtCQkJaWYgKElTX0JST0FEV0VMTChkZXYpICYmICF3YXNfZW5h YmxlZCkKPiAtCQkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUp Owo+ICAgCQl9IGVsc2Ugewo+ICAgCQkJLyoKPiAgIAkJCSAqIElmIGNsaXBwaW5nIHJlc3VsdHMg aW4gYSBub24tdmlzaWJsZSBwcmltYXJ5IHBsYW5lLAo+IEBAIC0xMTg0NiwxMyArMTE4NDUsNTAg QEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g ICAJCQkgKi8KPiAgIAkJCWludGVsX2Rpc2FibGVfcHJpbWFyeV9od19wbGFuZShwbGFuZSwgY3J0 Yyk7Cj4gICAJCX0KPiArCX0KPiArfQo+Cj4gLQkJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYs IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkocGlwZSkpOwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9i ZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmF0b21p Yy5kaXNhYmxlX2ZiYykKPiArCQlpbnRlbF9mYmNfZGlzYWJsZShkZXYpOwo+ICsKPiArCWlmIChp bnRlbF9jcnRjLT5hdG9taWMucHJlX2Rpc2FibGVfcHJpbWFyeSkKPiArCQlpbnRlbF9wcmVfZGlz YWJsZV9wcmltYXJ5KGNydGMpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRl X3dtKQo+ICsJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICt9Cj4KPiArc3RhdGlj IHZvaWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAr ewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBkcm1f cGxhbmUgKnA7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuaykKPiAr CQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiArCj4gKwlp bnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRldiwgaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMpOwo+ ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX2ZiYykgewo+ICAgCQltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJCWludGVsX2ZiY191cGRhdGUoZGV2KTsKPiAg IAkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJfQo+ICsKPiArCWlmIChp bnRlbF9jcnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFyeSkKPiArCQlpbnRlbF9wb3N0X2Vu YWJsZV9wcmltYXJ5KGNydGMpOwo+ICsKPiArCWRybV9mb3JfZWFjaF9sZWdhY3lfcGxhbmUocCwg JmRldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCkKPiArCQlpZiAoaW50ZWxfY3J0Yy0+YXRvbWlj LnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyAmIGRybV9wbGFuZV9pbmRleChwKSkKPiArCQkJaW50 ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKHAsIGNydGMsIDAsIDAsIDAsCj4gKwkJCQkJCSAg ICAgICBmYWxzZSwgZmFsc2UpOwo+ICsKPiArCW1lbXNldCgmaW50ZWxfY3J0Yy0+YXRvbWljLCAw LCBzaXplb2YoaW50ZWxfY3J0Yy0+YXRvbWljKSk7Cj4gICB9Cj4KPiAgIGludAo+IEBAIC0xMTg2 NCw3ICsxMTkwMCw3IEBAIGludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgewo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IHBs YW5lLT5mYjsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZTsKPiArCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHt7IDAgfX07Cj4gICAJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gICAJaW50IHJldDsKPiBA QCAtMTE5MDIsNyArMTE5MzgsMzMgQEAgaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAg CX0KPgo+ICsJaWYgKCFzdGF0ZS5iYXNlLmZiKSB7Cj4gKwkJdW5zaWduZWQgZmJfYml0cyA9IDA7 Cj4gKwo+ICsJCXN3aXRjaCAocGxhbmUtPnR5cGUpIHsKPiArCQljYXNlIERSTV9QTEFORV9UWVBF X1BSSU1BUlk6Cj4gKwkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGludGVs X3BsYW5lLT5waXBlKTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJT T1I6Cj4gKwkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfcGxhbmUt PnBpcGUpOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Cj4g KwkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfcGxhbmUtPnBpcGUp Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCS8qCj4gKwkJICogJ3ByZXBhcmUnIGlzIG5l dmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkLCBzbwo+ICsJCSAqIHdlIG5l ZWQgdG8gaGFuZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGhlcmUKPiArCQkgKi8KPiArCQltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwkJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxf ZmJfb2JqKHBsYW5lLT5mYiksIE5VTEwsIGZiX2JpdHMpOwo+ICsJCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJfQo+ICsKPiArCWludGVsX2JlZ2luX2NydGNfY29tbWl0KGNy dGMpOwo+ICAgCWludGVsX3BsYW5lLT5jb21taXRfcGxhbmUocGxhbmUsICZzdGF0ZSk7Cj4gKwlp bnRlbF9maW5pc2hfY3J0Y19jb21taXQoY3J0Yyk7Cj4KPiAgIAlpZiAoZmIgIT0gb2xkX2ZiICYm IG9sZF9mYikgewo+ICAgCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+IEBAIC0xMjAwOSw2ICsx MjA3MSw3IEBAIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwo+ICAgCWNvbnN0IHN0 cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAlpbnQgY3J0Y193LCBjcnRj X2g7Cj4gICAJdW5zaWduZWQgc3RyaWRlOwo+ICAgCWludCByZXQ7Cj4gQEAgLTEyMDI0LDcgKzEy MDg3LDcgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+Cj4gICAJLyogaWYgd2Ugd2FudCB0byB0dXJuIG9mZiB0aGUgY3Vyc29yIGlnbm9yZSB3aWR0 aCBhbmQgaGVpZ2h0ICovCj4gICAJaWYgKCFvYmopCj4gLQkJcmV0dXJuIDA7Cj4gKwkJZ290byBm aW5pc2g7Cj4KPiAgIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQg Ki8KPiAgIAljcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiBAQCAt MTIwNTEsNiArMTIxMTQsMTYgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAgCX0KPiAgIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPgo+ICtmaW5pc2g6Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gKwkJaWYgKGlu dGVsX2NydGMtPmN1cnNvcl93aWR0aCAhPQo+ICsJCSAgICBkcm1fcmVjdF93aWR0aCgmc3RhdGUt Pm9yaWdfZHN0KSkKPiArCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bSA9IHRydWU7Cj4g Kwo+ICsJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Cj4gKwkJCUlOVEVMX0ZST05UQlVG RkVSX0NVUlNPUihpbnRlbF9jcnRjLT5waXBlKTsKPiArCX0KPiArCj4gICAJcmV0dXJuIHJldDsK PiAgIH0KPgo+IEBAIC0xMjA2Myw5ICsxMjEzNiw2IEBAIGludGVsX2NvbW1pdF9jdXJzb3JfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihzdGF0ZS0+YmFzZS5mYik7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+ZmIpOwo+ IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JdW5zaWduZWQgb2xkX3dp ZHRoOwo+ICAgCXVpbnQzMl90IGFkZHI7Cj4KPiAgIAlwbGFuZS0+ZmIgPSBzdGF0ZS0+YmFzZS5m YjsKPiBAQCAtMTIwODUsMTcgKzEyMTU1LDYgQEAgaW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvID09 IG9iaikKPiAgIAkJZ290byB1cGRhdGU7Cj4KPiAtCS8qCj4gLQkgKiAncHJlcGFyZScgaXMgb25s eSBjYWxsZWQgd2hlbiBmYiAhPSBOVUxMOyB3ZSBzdGlsbCBuZWVkIHRvIHVwZGF0ZQo+IC0JICog ZnJvbnRidWZmZXIgdHJhY2tpbmcgZm9yIHRoZSAnZGlzYWJsZScgY2FzZSBoZXJlLgo+IC0JICov Cj4gLQlpZiAoIW9iaikgewo+IC0JCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAt CQlpOTE1X2dlbV90cmFja19mYihvbGRfb2JqLCBOVUxMLAo+IC0JCQkJICBJTlRFTF9GUk9OVEJV RkZFUl9DVVJTT1IocGlwZSkpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+IC0JfQo+IC0KPiAgIAlpZiAoIW9iaikKPiAgIAkJYWRkciA9IDA7Cj4gICAJZWxzZSBpZiAo IUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKQo+IEBAIC0xMjEwNiwxOCAr MTIxNjUsMTEgQEAgaW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAgIAlpbnRlbF9jcnRjLT5jdXJzb3JfYWRkciA9IGFkZHI7Cj4gICAJaW50ZWxfY3J0 Yy0+Y3Vyc29yX2JvID0gb2JqOwo+ICAgdXBkYXRlOgo+IC0Jb2xkX3dpZHRoID0gaW50ZWxfY3J0 Yy0+Y3Vyc29yX3dpZHRoOwo+IC0KPiAgIAlpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGggPSBkcm1f cmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAgIAlpbnRlbF9jcnRjLT5jdXJzb3JfaGVp Z2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+b3JpZ19kc3QpOwo+Cj4gLQlpZiAoaW50ZWxf Y3J0Yy0+YWN0aXZlKSB7Cj4gLQkJaWYgKG9sZF93aWR0aCAhPSBpbnRlbF9jcnRjLT5jdXJzb3Jf d2lkdGgpCj4gLQkJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICsJaWYgKGludGVs X2NydGMtPmFjdGl2ZSkKPiAgIAkJaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKGNydGMsIHN0YXRl LT52aXNpYmxlKTsKPiAtCj4gLQkJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZS T05UQlVGRkVSX0NVUlNPUihwaXBlKSk7Cj4gLQl9Cj4gICB9Cj4KPiAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX2N1cnNvcl9wbGFuZV9mdW5jcyA9IHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDU4OGI2MTguLmEwM2JkNzIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNTEsNiArMjUxLDEyIEBAIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSB7Cj4gICAJc3RydWN0IGRybV9yZWN0IG9yaWdfc3JjOwo+ICAgCXN0cnVjdCBk cm1fcmVjdCBvcmlnX2RzdDsKPiAgIAlib29sIHZpc2libGU7Cj4gKwo+ICsJLyoKPiArCSAqIHVz ZWQgb25seSBmb3Igc3ByaXRlIHBsYW5lcyB0byBkZXRlcm1pbmUgd2hlbiB0byBpbXBsaWNpdGx5 Cj4gKwkgKiBlbmFibGUvZGlzYWJsZSB0aGUgcHJpbWFyeSBwbGFuZQo+ICsJICovCj4gKwlib29s IGhpZGVzX3ByaW1hcnk7Cj4gICB9Owo+Cj4gICBzdHJ1Y3QgaW50ZWxfcGxhbmVfY29uZmlnIHsK PiBAQCAtNDE1LDYgKzQyMSwyNyBAQCBzdHJ1Y3Qgc2tsX3BpcGVfd20gewo+ICAgCXVpbnQzMl90 IGxpbmV0aW1lOwo+ICAgfTsKPgo+ICsvKgo+ICsgKiBUcmFja2luZyBvZiBvcGVyYXRpb25zIHRo YXQgbmVlZCB0byBiZSBwZXJmb3JtZWQgYXQgdGhlIGJlZ2lubmluZy9lbmQgb2YgYW4KPiArICog YXRvbWljIGNvbW1pdCwgb3V0c2lkZSB0aGUgYXRvbWljIHNlY3Rpb24gd2hlcmUgaW50ZXJydXB0 cyBhcmUgZGlzYWJsZWQuCj4gKyAqIFRoZXNlIGFyZSBnZW5lcmFsbHkgb3BlcmF0aW9ucyB0aGF0 IGdyYWIgbXV0ZXhlcyBvciBtaWdodCBvdGhlcndpc2Ugc2xlZXAKPiArICogYW5kIHRodXMgY2Fu J3QgYmUgcnVuIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KPiArICovCj4gK3N0cnVjdCBpbnRl bF9jcnRjX2F0b21pY19jb21taXQgewo+ICsJLyogU2xlZXBhYmxlIG9wZXJhdGlvbnMgdG8gcGVy Zm9ybSBiZWZvcmUgY29tbWl0ICovCj4gKwlib29sIHdhaXRfZm9yX2ZsaXBzOwo+ICsJYm9vbCBk aXNhYmxlX2ZiYzsKPiArCWJvb2wgcHJlX2Rpc2FibGVfcHJpbWFyeTsKPiArCWJvb2wgdXBkYXRl X3dtOwo+ICsKPiArCS8qIFNsZWVwYWJsZSBvcGVyYXRpb25zIHRvIHBlcmZvcm0gYWZ0ZXIgY29t bWl0ICovCj4gKwl1bnNpZ25lZCBmYl9iaXRzOwo+ICsJYm9vbCB3YWl0X3ZibGFuazsKPiArCWJv b2wgdXBkYXRlX2ZiYzsKPiArCWJvb2wgcG9zdF9lbmFibGVfcHJpbWFyeTsKPiArCXVuc2lnbmVk IHVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrczsKPiArfTsKPiArCj4gICBzdHJ1Y3QgaW50ZWxfY3J0 YyB7Cj4gICAJc3RydWN0IGRybV9jcnRjIGJhc2U7Cj4gICAJZW51bSBwaXBlIHBpcGU7Cj4gQEAg LTQ2OCw2ICs0OTUsOCBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4KPiAgIAlpbnQgc2NhbmxpbmVf b2Zmc2V0Owo+ICAgCXN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgbW1pb19mbGlwOwo+ICsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjX2F0b21pY19jb21taXQgYXRvbWljOwo+ICAgfTsKPgo+ICAgc3RydWN0 IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgewo+IEBAIC0xMjEzLDYgKzEyNDIsOCBAQCBpbnQg aW50ZWxfc3ByaXRlX2dldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAgYm9vbCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgIAkJCSAgICAgdWludDMyX3QgKnN0YXJ0X3ZibF9jb3VudCk7Cj4gICB2b2lkIGlu dGVsX3BpcGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgdTMyIHN0YXJ0X3Zi bF9jb3VudCk7Cj4gK3ZvaWQgaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOwo+ICt2b2lkIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKPgo+ICAgLyogaW50ZWxfdHYuYyAqLwo+ICAgdm9pZCBpbnRlbF90dl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gaW5kZXggYzE4ZTU3ZC4uZjllMzc3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jCj4gQEAgLTc3MSw5ICs3NzEsOCBAQCBpdmJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgCSAqIEF2b2lkIHVuZGVy cnVucyB3aGVuIGRpc2FibGluZyB0aGUgc3ByaXRlLgo+ICAgCSAqIEZJWE1FIHJlbW92ZSBvbmNl IHdhdGVybWFyayB1cGRhdGVzIGFyZSBkb25lIHByb3Blcmx5Lgo+ICAgCSAqLwo+IC0JaW50ZWxf d2FpdF9mb3JfdmJsYW5rKGRldiwgcGlwZSk7Cj4gLQo+IC0JaW50ZWxfdXBkYXRlX3Nwcml0ZV93 YXRlcm1hcmtzKHBsYW5lLCBjcnRjLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UpOwo+ICsJaW50ZWxf Y3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0gdHJ1ZTsKPiArCWludGVsX2NydGMtPmF0b21pYy51 cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgfD0gKDEgPDwgZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7 Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQKPiBAQCAtOTc2LDEyICs5NzUsMTEgQEAgaWxrX2Rpc2Fi bGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiAgIAkgKiBBdm9pZCB1bmRlcnJ1bnMgd2hlbiBkaXNhYmxpbmcgdGhlIHNwcml0ZS4KPiAgIAkg KiBGSVhNRSByZW1vdmUgb25jZSB3YXRlcm1hcmsgdXBkYXRlcyBhcmUgZG9uZSBwcm9wZXJseS4K PiAgIAkgKi8KPiAtCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIHBpcGUpOwo+IC0KPiAtCWlu dGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhwbGFuZSwgY3J0YywgMCwgMCwgMCwgZmFsc2Us IGZhbHNlKTsKPiArCWludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuayA9IHRydWU7Cj4gKwlp bnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzIHw9ICgxIDw8IGRybV9w bGFuZV9pbmRleChwbGFuZSkpOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkCj4gK3ZvaWQKPiAgIGlu dGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAgLTEwMDgsNyArMTAwNiw3 IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAg CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lk Cj4gK3ZvaWQKPiAgIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAg LTExMTMsNyArMTExMSw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPgo+ICAgCWlmICghZmIpIHsKPiAgIAkJc3RhdGUtPnZpc2libGUgPSBmYWxz ZTsKPiAtCQlyZXR1cm4gMDsKPiArCQlnb3RvIGZpbmlzaDsKPiAgIAl9Cj4KPiAgIAkvKiBEb24n dCBtb2RpZnkgYW5vdGhlciBwaXBlJ3MgcGxhbmUgKi8KPiBAQCAtMTI2MCw2ICsxMjU4LDI5IEBA IGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlk c3QtPnkxID0gY3J0Y195Owo+ICAgCWRzdC0+eTIgPSBjcnRjX3kgKyBjcnRjX2g7Cj4KPiArZmlu aXNoOgo+ICsJLyoKPiArCSAqIElmIHRoZSBzcHJpdGUgaXMgY29tcGxldGVseSBjb3ZlcmluZyB0 aGUgcHJpbWFyeSBwbGFuZSwKPiArCSAqIHdlIGNhbiBkaXNhYmxlIHRoZSBwcmltYXJ5IGFuZCBz YXZlIHBvd2VyLgo+ICsJICovCj4gKwlzdGF0ZS0+aGlkZXNfcHJpbWFyeSA9IGRybV9yZWN0X2Vx dWFscyhkc3QsIGNsaXApICYmCj4gKwkJIWNvbG9ya2V5X2VuYWJsZWQoaW50ZWxfcGxhbmUpOwo+ ICsJV0FSTl9PTihzdGF0ZS0+aGlkZXNfcHJpbWFyeSAmJiAhc3RhdGUtPnZpc2libGUgJiYgaW50 ZWxfY3J0Yy0+YWN0aXZlKTsKPiArCj4gKwlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gKwkJ aWYgKGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCA9PSBzdGF0ZS0+aGlkZXNfcHJpbWFyeSkK PiArCQkJaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKCZpbnRlbF9jcnRjLT5iYXNl KTsKClNob3VsZG4ndCB0aGlzIHNldCBpbnRlbF9jcnRjLT5hdG9taWMud2FpdF9mb3JfZmxpcHMg aW5zdGVhZD8KCkFuZGVyCgo+ICsKPiArCQlpZiAoaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVk ICYmIHN0YXRlLT5oaWRlc19wcmltYXJ5KQo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMucHJlX2Rp c2FibGVfcHJpbWFyeSA9IHRydWU7Cj4gKwo+ICsJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRz IHw9Cj4gKwkJCUlOVEVMX0ZST05UQlVGRkVSX1NQUklURShpbnRlbF9jcnRjLT5waXBlKTsKPiAr Cj4gKwkJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgJiYgIXN0YXRlLT5oaWRlc19w cmltYXJ5KQo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFyeSA9IHRy dWU7Cj4gKwl9Cj4gKwo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gQEAgLTEyNjcsMzcgKzEyODgs MTQgQEAgc3RhdGljIHZvaWQKPiAgIGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCj4gICAJCQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUp Cj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgIAlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+ICAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+IC0JZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gc3RhdGUtPmJhc2UuZmI7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IGludGVsX2ZiX29iaihmYik7Cj4gICAJaW50IGNydGNfeCwgY3J0Y195Owo+ICAgCXVuc2lnbmVk IGludCBjcnRjX3csIGNydGNfaDsKPiAgIAl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBz cmNfaDsKPiAtCXN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5kc3Q7Cj4gLQljb25zdCBz dHJ1Y3QgZHJtX3JlY3QgKmNsaXAgPSAmc3RhdGUtPmNsaXA7Cj4gLQlib29sIHByaW1hcnlfZW5h YmxlZDsKPiAtCj4gLQkvKgo+IC0JICogJ3ByZXBhcmUnIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHBs YW5lIGlzIGJlaW5nIGRpc2FibGVkLCBzbyB3ZSBuZWVkCj4gLQkgKiB0byBoYW5kbGUgZnJvbnRi dWZmZXIgdHJhY2tpbmcgaGVyZQo+IC0JICovCj4gLQlpZiAoIWZiKSB7Cj4gLQkJbXV0ZXhfbG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29i aihwbGFuZS0+ZmIpLCBOVUxMLAo+IC0JCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUocGlw ZSkpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAt CS8qCj4gLQkgKiBJZiB0aGUgc3ByaXRlIGlzIGNvbXBsZXRlbHkgY292ZXJpbmcgdGhlIHByaW1h cnkgcGxhbmUsCj4gLQkgKiB3ZSBjYW4gZGlzYWJsZSB0aGUgcHJpbWFyeSBhbmQgc2F2ZSBwb3dl ci4KPiAtCSAqLwo+IC0JcHJpbWFyeV9lbmFibGVkID0gIWRybV9yZWN0X2VxdWFscyhkc3QsIGNs aXApIHx8IGNvbG9ya2V5X2VuYWJsZWQoaW50ZWxfcGxhbmUpOwo+IC0JV0FSTl9PTighcHJpbWFy eV9lbmFibGVkICYmICFzdGF0ZS0+dmlzaWJsZSAmJiBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+Cj4g ICAJaW50ZWxfcGxhbmUtPmNydGNfeCA9IHN0YXRlLT5vcmlnX2RzdC54MTsKPiAgIAlpbnRlbF9w bGFuZS0+Y3J0Y195ID0gc3RhdGUtPm9yaWdfZHN0LnkxOwo+IEBAIC0xMzEwLDE1ICsxMzA4LDcg QEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg IAlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkg ewo+IC0JCWJvb2wgcHJpbWFyeV93YXNfZW5hYmxlZCA9IGludGVsX2NydGMtPnByaW1hcnlfZW5h YmxlZDsKPiAtCj4gLQkJaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkID0gcHJpbWFyeV9lbmFi bGVkOwo+IC0KPiAtCQlpZiAocHJpbWFyeV93YXNfZW5hYmxlZCAhPSBwcmltYXJ5X2VuYWJsZWQp Cj4gLQkJCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhjcnRjKTsKPiAtCj4gLQkJ aWYgKHByaW1hcnlfd2FzX2VuYWJsZWQgJiYgIXByaW1hcnlfZW5hYmxlZCkKPiAtCQkJaW50ZWxf cHJlX2Rpc2FibGVfcHJpbWFyeShjcnRjKTsKPiArCQlpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJs ZWQgPSAhc3RhdGUtPmhpZGVzX3ByaW1hcnk7Cj4KPiAgIAkJaWYgKHN0YXRlLT52aXNpYmxlKSB7 Cj4gICAJCQljcnRjX3ggPSBzdGF0ZS0+ZHN0LngxOwo+IEBAIC0xMzM1LDEyICsxMzI1LDYgQEAg aW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJ fSBlbHNlIHsKPiAgIAkJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRjKTsK PiAgIAkJfQo+IC0KPiAtCj4gLQkJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZS T05UQlVGRkVSX1NQUklURShwaXBlKSk7Cj4gLQo+IC0JCWlmICghcHJpbWFyeV93YXNfZW5hYmxl ZCAmJiBwcmltYXJ5X2VuYWJsZWQpCj4gLQkJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoY3J0 Yyk7Cj4gICAJfQo+ICAgfQo+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==