From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: Re: [PATCH 1/5] drm/i915: Refactor work that can sleep out of commit (v7) Date: Fri, 09 Jan 2015 14:09:32 +0200 Message-ID: <54AFC4FC.6050805@gmail.com> References: <1419360113-10972-2-git-send-email-matthew.d.roper@intel.com> <1419436746-5928-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 mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 34C176E8B5 for ; Fri, 9 Jan 2015 04:09:43 -0800 (PST) Received: by mail-wi0-f171.google.com with SMTP id bs8so1839450wib.4 for ; Fri, 09 Jan 2015 04:09:42 -0800 (PST) In-Reply-To: <1419436746-5928-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 UmV2aWV3ZWQtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Y29uc2VsdmFuMkBnbWFp bC5jb20+CgpPbiAxMi8yNC8yMDE0IDA1OjU5IFBNLCBNYXR0IFJvcGVyIHdyb3RlOgo+IE9uY2Ug d2UgaW50ZWdyYXRlIG91ciB3b3JrIGludG8gdGhlIGF0b21pYyBwaXBlbGluZSwgcGxhbmUgY29t bWl0Cj4gb3BlcmF0aW9ucyB3aWxsIG5lZWQgdG8gaGFwcGVuIHdpdGggaW50ZXJydXB0cyBkaXNh YmxlZCwgZHVlIHRvIHZibGFuawo+IGV2YXNpb24uICBPdXIgY29tbWl0IGZ1bmN0aW9ucyB0b2Rh eSBpbmNsdWRlIHNsZWVwYWJsZSB3b3JrLCBzbyB0aG9zZQo+IG9wZXJhdGlvbnMgbmVlZCB0byBi ZSBzcGxpdCBvdXQgYW5kIHJ1biBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZQo+IGF0b21pYyBy ZWdpc3RlciBwcm9ncmFtbWluZy4KPgo+IFRoZSBzb2x1dGlvbiBoZXJlIGNhbGN1bGF0ZXMgd2hp Y2ggb2YgdGhvc2Ugb3BlcmF0aW9ucyB3aWxsIG5lZWQgdG8gYmUKPiBwZXJmb3JtZWQgZHVyaW5n IHRoZSAnY2hlY2snIHBoYXNlIGFuZCBzZXRzIGZsYWdzIGluIGFuIGludGVsX2NydGMKPiBzdWIt c3RydWN0LiAgTmV3IGludGVsX2JlZ2luX2NydGNfY29tbWl0KCkgYW5kCj4gaW50ZWxfZmluaXNo X2NydGNfY29tbWl0KCkgZnVuY3Rpb25zIGFyZSBhZGRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZQo+ IGFjdHVhbCByZWdpc3RlciBwcm9ncmFtbWluZzsgdGhlc2Ugd2lsbCBldmVudHVhbGx5IGJlIGNh bGxlZCBmcm9tIHRoZQo+IGF0b21pYyBwbGFuZSBoZWxwZXIncyAuYXRvbWljX2JlZ2luKCkgYW5k IC5hdG9taWNfZW5kKCkgZW50cnlwb2ludHMuCj4KPiB2MjogRml4IGJyb2tlbiBzcHJpdGUgY29k ZSBzcGxpdAo+Cj4gdjM6IE1ha2UgdGhlIHByZS9wb3N0IGNvbW1pdCB3b3JrIGNydGMtYmFzZWQg dG8gbWF0Y2ggaG93IHdlIGV2ZW50dWFsbHkKPiAgICAgIHdhbnQgdGhpcyB0byBiZSBjYWxsZWQg ZnJvbSB0aGUgYXRvbWljIHBsYW5lIGhlbHBlcnMuCj4KPiB2NDogU29tZSBwbGF0Zm9ybXMgdGhh dCBoYXZlbid0IGhhZCB0aGVpciB3YXRlcm1hcmsgY29kZSByZXdvcmtlZCB3ZXJlCj4gICAgICB3 YWl0aW5nIGZvciB2YmxhbmssIHRoZW4gY2FsbGluZyB1cGRhdGVfc3ByaXRlX3dhdGVybWFya3Mg aW4gdGhlaXIKPiAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGRpc2FibGUgY29kZS4gIFRoZXNlIGFs c28gbmVlZCB0byBiZSBmbGFnZ2VkIG91dAo+ICAgICAgb2YgdGhlIGNyaXRpY2FsIHNlY3Rpb24u Cj4KPiB2NTogU3ByaXRlIHBsYW5lIHRlc3QgZm9yIHByaW1hcnkgc2hvdy9oaWRlIHNob3VsZCBq dXN0IHNldCB0aGUgZmxhZyB0bwo+ICAgICAgd2FpdCBmb3IgcGVuZGluZyBmbGlwcywgbm90IGFj dHVhbGx5IHBlcmZvcm0gdGhlIHdhaXQuICAoQW5kZXIpCj4KPiB2NjoKPiAgIC0gUmViYXNlIG9u dG8gbGF0ZXN0IGRpLW5pZ2h0bHk7IHBpY2tzIHVwIGFuIGltcG9ydGFudCBydW50aW1lIFBNIGZp eC4KPiAgIC0gSGFuZGxlICd3YWl0X2Zvcl9mbGlwcycgZmxhZyBpbiBpbnRlbF9iZWdpbl9jcnRj X2NvbW1pdCgpLiAoQW5kZXIpCj4gICAtIFVzZSB3YWl0X2Zvcl9mbGlwcyBmbGFnIGZvciBwcmlt YXJ5IHBsYW5lIHVwZGF0ZSByYXRoZXIgdGhhbgo+ICAgICBwZXJmb3JtaW5nIHRoZSB3YWl0IGlu IHRoZSBjaGVjayByb3V0aW5lLgo+ICAgLSBBZGRlZCBrZXJuZWxkb2MgdG8gcHJlX2Rpc2FibGUv cG9zdF9lbmFibGUgZnVuY3Rpb25zIHRoYXQgYXJlIG5vCj4gICAgIGxvbmdlciBzdGF0aWMuICAo QW5kZXIpCj4gICAtIFJlcGxhY2UgYXNzZXJ0X3BpcGVfZW5hYmxlZCgpIGluIGludGVsX2Rpc2Fi bGVfcHJpbWFyeV9od19wbGFuZSgpCj4gICAgIHdpdGggYW4gaW50ZWxfY3J0Yy0+YWN0aXZlIHRl c3Q7IGl0IHR1cm5zIG91dCBhc3NlcnRfcGlwZV9lbmFibGVkKCkKPiAgICAgZ3JhYnMgc29tZSBt dXRleGVzIGFuZCBjYW4gc2xlZXAsIHdoaWNoIHdlIGNhbid0IGRvIHdpdGggaW50ZXJydXB0cwo+ ICAgICBkaXNhYmxlZC4KPgo+IHY3Ogo+ICAgLSBDaGVjayBmb3IgZmIgIT0gTlVMTCB3aGVuIGRl Y2lkaW5nIHdoZXRoZXIgdGhlIHNwcml0ZSBwbGFuZSBoaWRlcyB0aGUKPiAgICAgcHJpbWFyeSBw bGFuZSBkdXJpbmcgYSBzcHJpdGUgdXBkYXRlLiAgKFBSVFMpCj4KPiBTaWduZWQtb2ZmLWJ5OiBN YXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTk5ICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg MzEgKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgOTgg KysrKysrKystLS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyks IDExOSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBp bmRleCBhMDM5NTVkLi42YmQ0NGYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IEBAIC0yMTY1LDcgKzIxNjUsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3By aW1hcnlfaHdfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4KPiAtCWFzc2VydF9w aXBlX2VuYWJsZWQoZGV2X3ByaXYsIGludGVsX2NydGMtPnBpcGUpOwo+ICsJaWYgKFdBUk5fT04o IWludGVsX2NydGMtPmFjdGl2ZSkpCj4gKwkJcmV0dXJuOwo+Cj4gICAJaWYgKCFpbnRlbF9jcnRj LT5wcmltYXJ5X2VuYWJsZWQpCj4gICAJCXJldHVybjsKPiBAQCAtMTE3MzcsNyArMTE3MzgsMTEg QEAgc3RhdGljIGludAo+ICAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAg IHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqZGVz dCA9ICZzdGF0ZS0+ZHN0Owo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7 Cj4gQEAgLTExNzUyLDEwICsxMTc1Nyw0MCBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4K PiAtCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhjcnRjKTsKPiAtCWlmIChpbnRl bF9jcnRjX2hhc19wZW5kaW5nX2ZsaXAoY3J0YykpIHsKPiAtCQlEUk1fRVJST1IoInBpcGUgaXMg c3RpbGwgYnVzeSB3aXRoIGFuIG9sZCBwYWdlZmxpcFxuIik7Cj4gLQkJcmV0dXJuIC1FQlVTWTsK PiArCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCQlpbnRlbF9jcnRjLT5hdG9taWMud2Fp dF9mb3JfZmxpcHMgPSB0cnVlOwo+ICsKPiArCQkvKgo+ICsJCSAqIEZCQyBkb2VzIG5vdCB3b3Jr IG9uIHNvbWUgcGxhdGZvcm1zIGZvciByb3RhdGVkCj4gKwkJICogcGxhbmVzLCBzbyBkaXNhYmxl IGl0IHdoZW4gcm90YXRpb24gaXMgbm90IDAgYW5kCj4gKwkJICogdXBkYXRlIGl0IHdoZW4gcm90 YXRpb24gaXMgc2V0IGJhY2sgdG8gMC4KPiArCQkgKgo+ICsJCSAqIEZJWE1FOiBUaGlzIGlzIHJl ZHVuZGFudCB3aXRoIHRoZSBmYmMgdXBkYXRlIGRvbmUgaW4KPiArCQkgKiB0aGUgcHJpbWFyeSBw bGFuZSBlbmFibGUgZnVuY3Rpb24gZXhjZXB0IHRoYXQgdGhhdAo+ICsJCSAqIG9uZSBpcyBkb25l IHRvbyBsYXRlLiBXZSBldmVudHVhbGx5IG5lZWQgdG8gdW5pZnkKPiArCQkgKiB0aGlzLgo+ICsJ CSAqLwo+ICsJCWlmIChpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgJiYKPiArCQkgICAgSU5U RUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzRYKGRldikgJiYKPiArCQkgICAgZGV2X3By aXYtPmZiYy5wbGFuZSA9PSBpbnRlbF9jcnRjLT5wbGFuZSAmJgo+ICsJCSAgICBpbnRlbF9wbGFu ZS0+cm90YXRpb24gIT0gQklUKERSTV9ST1RBVEVfMCkpIHsKPiArCQkJaW50ZWxfY3J0Yy0+YXRv bWljLmRpc2FibGVfZmJjID0gdHJ1ZTsKPiArCQl9Cj4gKwo+ICsJCWlmIChzdGF0ZS0+dmlzaWJs ZSkgewo+ICsJCQkvKgo+ICsJCQkgKiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRlbHkg aWYgdGhlIHBsYW5lCj4gKwkJCSAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRoZSBwbGFuZSBlbmFi bGUgaXMgYWxyZWFkeQo+ICsJCQkgKiBhcm1lZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2Ymxhbmsg OigKPiArCQkJICovCj4gKwkJCWlmIChJU19CUk9BRFdFTEwoZGV2KSAmJiAhaW50ZWxfY3J0Yy0+ cHJpbWFyeV9lbmFibGVkKQo+ICsJCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0g dHJ1ZTsKPiArCQl9Cj4gKwo+ICsJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Cj4gKwkJ CUlOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwo+ICsJCWlu dGVsX2NydGMtPmF0b21pYy51cGRhdGVfZmJjID0gdHJ1ZTsKPiAgIAl9Cj4KPiAgIAlyZXR1cm4g MDsKPiBAQCAtMTE3NzMsMTggKzExODA4LDYgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9w bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZzdGF0ZS0+c3JjOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAt Cj4gLQlpZiAoIWZiKSB7Cj4gLQkJLyoKPiAtCQkgKiAncHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVk IHdoZW4gcGxhbmUgaXMgYmVpbmcgZGlzYWJsZWQsIHNvCj4gLQkJICogd2UgbmVlZCB0byBoYW5k bGUgZnJvbnRidWZmZXIgdHJhY2tpbmcgaGVyZQo+IC0JCSAqLwo+IC0JCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiAtCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocGxh bmUtPmZiKSwgTlVMTCwKPiAtCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKSk7 Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQl9Cj4KPiAgIAlwbGFu ZS0+ZmIgPSBmYjsKPiAgIAljcnRjLT54ID0gc3JjLT54MSA+PiAxNjsKPiBAQCAtMTE4MDEsMjYg KzExODI0LDcgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gICAJaW50ZWxfcGxhbmUtPm9iaiA9IG9iajsKPgo+ICAgCWlmIChpbnRlbF9jcnRj LT5hY3RpdmUpIHsKPiAtCQkvKgo+IC0JCSAqIEZCQyBkb2VzIG5vdCB3b3JrIG9uIHNvbWUgcGxh dGZvcm1zIGZvciByb3RhdGVkCj4gLQkJICogcGxhbmVzLCBzbyBkaXNhYmxlIGl0IHdoZW4gcm90 YXRpb24gaXMgbm90IDAgYW5kCj4gLQkJICogdXBkYXRlIGl0IHdoZW4gcm90YXRpb24gaXMgc2V0 IGJhY2sgdG8gMC4KPiAtCQkgKgo+IC0JCSAqIEZJWE1FOiBUaGlzIGlzIHJlZHVuZGFudCB3aXRo IHRoZSBmYmMgdXBkYXRlIGRvbmUgaW4KPiAtCQkgKiB0aGUgcHJpbWFyeSBwbGFuZSBlbmFibGUg ZnVuY3Rpb24gZXhjZXB0IHRoYXQgdGhhdAo+IC0JCSAqIG9uZSBpcyBkb25lIHRvbyBsYXRlLiBX ZSBldmVudHVhbGx5IG5lZWQgdG8gdW5pZnkKPiAtCQkgKiB0aGlzLgo+IC0JCSAqLwo+IC0JCWlm IChpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgJiYKPiAtCQkgICAgSU5URUxfSU5GTyhkZXYp LT5nZW4gPD0gNCAmJiAhSVNfRzRYKGRldikgJiYKPiAtCQkgICAgZGV2X3ByaXYtPmZiYy5wbGFu ZSA9PSBpbnRlbF9jcnRjLT5wbGFuZSAmJgo+IC0JCSAgICBpbnRlbF9wbGFuZS0+cm90YXRpb24g IT0gQklUKERSTV9ST1RBVEVfMCkpIHsKPiAtCQkJaW50ZWxfZmJjX2Rpc2FibGUoZGV2KTsKPiAt CQl9Cj4gLQo+ICAgCQlpZiAoc3RhdGUtPnZpc2libGUpIHsKPiAtCQkJYm9vbCB3YXNfZW5hYmxl ZCA9IGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZDsKPiAtCj4gICAJCQkvKiBGSVhNRToga2ls bCB0aGlzIGZhc3Rib290IGhhY2sgKi8KPiAgIAkJCWludGVsX3VwZGF0ZV9waXBlX3NpemUoaW50 ZWxfY3J0Yyk7Cj4KPiBAQCAtMTE4MjgsMTQgKzExODMyLDYgQEAgaW50ZWxfY29tbWl0X3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4KPiAgIAkJCWRldl9wcml2LT5kaXNw bGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBsYW5lLT5mYiwKPiAgIAkJCQkJY3J0Yy0+ eCwgY3J0Yy0+eSk7Cj4gLQo+IC0JCQkvKgo+IC0JCQkgKiBCRFcgc2lnbmFscyBmbGlwIGRvbmUg aW1tZWRpYXRlbHkgaWYgdGhlIHBsYW5lCj4gLQkJCSAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRo ZSBwbGFuZSBlbmFibGUgaXMgYWxyZWFkeQo+IC0JCQkgKiBhcm1lZCB0byBvY2N1ciBhdCB0aGUg bmV4dCB2YmxhbmsgOigKPiAtCQkJICovCj4gLQkJCWlmIChJU19CUk9BRFdFTEwoZGV2KSAmJiAh d2FzX2VuYWJsZWQpCj4gLQkJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRj LT5waXBlKTsKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCS8qCj4gICAJCQkgKiBJZiBjbGlwcGluZyBy ZXN1bHRzIGluIGEgbm9uLXZpc2libGUgcHJpbWFyeSBwbGFuZSwKPiBAQCAtMTE4NDYsMTMgKzEx ODQyLDU5IEBAIGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAgCQkJICovCj4gICAJCQlpbnRlbF9kaXNhYmxlX3ByaW1hcnlfaHdfcGxhbmUocGxh bmUsIGNydGMpOwo+ICAgCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsX2Jl Z2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4KPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlw KGRldiwgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKSk7Cj4gKwlpZiAoaW50ZWxfY3J0 Yy0+YXRvbWljLndhaXRfZm9yX2ZsaXBzKQo+ICsJCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGlu Z19mbGlwcyhjcnRjKTsKPgo+ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYykK PiArCQlpbnRlbF9mYmNfZGlzYWJsZShkZXYpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9t aWMucHJlX2Rpc2FibGVfcHJpbWFyeSkKPiArCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KGNy dGMpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtKQo+ICsJCWludGVs X3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICsKPiArCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwOwo+ICsKPiArCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKPiArCj4gKwlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRf dmJsYW5rKQo+ICsJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUp Owo+ICsKPiArCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBpbnRlbF9jcnRjLT5hdG9taWMu ZmJfYml0cyk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy51cGRhdGVfZmJjKSB7Cj4g ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAkJaW50ZWxfZmJjX3VwZGF0 ZShkZXYpOwo+ICAgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAl9Cj4g Kwo+ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy5wb3N0X2VuYWJsZV9wcmltYXJ5KQo+ICsJCWlu dGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoY3J0Yyk7Cj4gKwo+ICsJZHJtX2Zvcl9lYWNoX2xlZ2Fj eV9wbGFuZShwLCAmZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0KQo+ICsJCWlmIChpbnRlbF9j cnRjLT5hdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzICYgZHJtX3BsYW5lX2luZGV4KHAp KQo+ICsJCQlpbnRlbF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3MocCwgY3J0YywgMCwgMCwgMCwK PiArCQkJCQkJICAgICAgIGZhbHNlLCBmYWxzZSk7Cj4gKwo+ICsJbWVtc2V0KCZpbnRlbF9jcnRj LT5hdG9taWMsIDAsIHNpemVvZihpbnRlbF9jcnRjLT5hdG9taWMpKTsKPiAgIH0KPgo+ICAgaW50 Cj4gQEAgLTExODYzLDkgKzExOTA1LDggQEAgaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJCSAgIHVpbnQzMl90IHNy Y193LCB1aW50MzJfdCBzcmNfaCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g cGxhbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gcGxhbmUt PmZiOwo+IC0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHN0YXRlOwo+ICsJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlIHN0YXRlID0ge3sgMCB9fTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAlpbnQgcmV0Owo+IEBAIC0x MTkwMyw5ICsxMTk0NCwzMyBAQCBpbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgIAkJCXJldHVybiByZXQ7Cj4gICAJfQo+ Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwlpZiAoIXN0YXRlLmJhc2Uu ZmIpIHsKPiArCQl1bnNpZ25lZCBmYl9iaXRzID0gMDsKPiArCj4gKwkJc3dpdGNoIChwbGFuZS0+ dHlwZSkgewo+ICsJCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKPiArCQkJZmJfYml0cyA9 IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ICsJCQlicmVh azsKPiArCQljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKPiArCQkJZmJfYml0cyA9IElOVEVM X0ZST05UQlVGRkVSX0NVUlNPUihpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gKwkJCWJyZWFrOwo+ICsJ CWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKPiArCQkJZmJfYml0cyA9IElOVEVMX0ZST05U QlVGRkVSX1NQUklURShpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiAr Cj4gKwkJLyoKPiArCQkgKiAncHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVkIHdoZW4gcGxhbmUgaXMg YmVpbmcgZGlzYWJsZWQsIHNvCj4gKwkJICogd2UgbmVlZCB0byBoYW5kbGUgZnJvbnRidWZmZXIg dHJhY2tpbmcgaGVyZQo+ICsJCSAqLwo+ICsJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiArCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocGxhbmUtPmZiKSwgTlVMTCwg ZmJfYml0cyk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwl9Cj4g Kwo+ICsJaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoY3J0Yyk7Cj4gICAJaW50ZWxfcGxhbmUtPmNv bW1pdF9wbGFuZShwbGFuZSwgJnN0YXRlKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKPiArCWludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChjcnRjKTsKPgo+ICAgCWlmIChmYiAh PSBvbGRfZmIgJiYgb2xkX2ZiKSB7Cj4gICAJCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCj4gQEAg LTEyMDEyLDYgKzEyMDc3LDcgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7Cj4g ICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+ICAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICsJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAgCWludCBj cnRjX3csIGNydGNfaDsKPiAgIAl1bnNpZ25lZCBzdHJpZGU7Cj4gICAJaW50IHJldDsKPiBAQCAt MTIwMjcsNyArMTIwOTMsNyBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4KPiAgIAkvKiBpZiB3ZSB3YW50IHRvIHR1cm4gb2ZmIHRoZSBjdXJzb3Ig aWdub3JlIHdpZHRoIGFuZCBoZWlnaHQgKi8KPiAgIAlpZiAoIW9iaikKPiAtCQlyZXR1cm4gMDsK PiArCQlnb3RvIGZpbmlzaDsKPgo+ICAgCS8qIENoZWNrIGZvciB3aGljaCBjdXJzb3IgdHlwZXMg d2Ugc3VwcG9ydCAqLwo+ICAgCWNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19k c3QpOwo+IEBAIC0xMjA1NCw2ICsxMjEyMCwxNiBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJfQo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+Cj4gK2ZpbmlzaDoKPiArCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsK PiArCQlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoICE9Cj4gKwkJICAgIGRybV9yZWN0X3dp ZHRoKCZzdGF0ZS0+b3JpZ19kc3QpKQo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dt ID0gdHJ1ZTsKPiArCj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KPiArCQkJSU5U RUxfRlJPTlRCVUZGRVJfQ1VSU09SKGludGVsX2NydGMtPnBpcGUpOwo+ICsJfQo+ICsKPiAgIAly ZXR1cm4gcmV0Owo+ICAgfQo+Cj4gQEAgLTEyMDY2LDkgKzEyMTQyLDYgQEAgaW50ZWxfY29tbWl0 X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gICAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKHN0YXRlLT5iYXNlLmZiKTsK PiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxfZmJfb2JqKHBs YW5lLT5mYik7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gLQl1bnNp Z25lZCBvbGRfd2lkdGg7Cj4gICAJdWludDMyX3QgYWRkcjsKPgo+ICAgCXBsYW5lLT5mYiA9IHN0 YXRlLT5iYXNlLmZiOwo+IEBAIC0xMjA4OCwxNyArMTIxNjEsNiBAQCBpbnRlbF9jb21taXRfY3Vy c29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWlmIChpbnRlbF9jcnRjLT5j dXJzb3JfYm8gPT0gb2JqKQo+ICAgCQlnb3RvIHVwZGF0ZTsKPgo+IC0JLyoKPiAtCSAqICdwcmVw YXJlJyBpcyBvbmx5IGNhbGxlZCB3aGVuIGZiICE9IE5VTEw7IHdlIHN0aWxsIG5lZWQgdG8gdXBk YXRlCj4gLQkgKiBmcm9udGJ1ZmZlciB0cmFja2luZyBmb3IgdGhlICdkaXNhYmxlJyBjYXNlIGhl cmUuCj4gLQkgKi8KPiAtCWlmICghb2JqKSB7Cj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JCWk5MTVfZ2VtX3RyYWNrX2ZiKG9sZF9vYmosIE5VTEwsCj4gLQkJCQkgIElO VEVMX0ZST05UQlVGRkVSX0NVUlNPUihwaXBlKSk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gLQl9Cj4gLQo+ICAgCWlmICghb2JqKQo+ICAgCQlhZGRyID0gMDsKPiAg IAllbHNlIGlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpCj4gQEAg LTEyMTA5LDE4ICsxMjE3MSwxMSBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAgCWludGVsX2NydGMtPmN1cnNvcl9hZGRyID0gYWRkcjsKPiAg IAlpbnRlbF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7Cj4gICB1cGRhdGU6Cj4gLQlvbGRfd2lkdGgg PSBpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGg7Cj4gLQo+ICAgCWludGVsX2NydGMtPmN1cnNvcl93 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+ICAgCWludGVsX2NydGMt PmN1cnNvcl9oZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Cj4KPiAt CWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiAtCQlpZiAob2xkX3dpZHRoICE9IGludGVsX2Ny dGMtPmN1cnNvcl93aWR0aCkKPiAtCQkJaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7Cj4g KwlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICAgCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Io Y3J0Yywgc3RhdGUtPnZpc2libGUpOwo+IC0KPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRl diwgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBpcGUpKTsKPiAtCX0KPiAgIH0KPgo+ICAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNz ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNTg4YjYxOC4uYTAzYmQ3MiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI1MSw2ICsyNTEsMTIgQEAgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3Qgb3JpZ19zcmM7Cj4g ICAJc3RydWN0IGRybV9yZWN0IG9yaWdfZHN0Owo+ICAgCWJvb2wgdmlzaWJsZTsKPiArCj4gKwkv Kgo+ICsJICogdXNlZCBvbmx5IGZvciBzcHJpdGUgcGxhbmVzIHRvIGRldGVybWluZSB3aGVuIHRv IGltcGxpY2l0bHkKPiArCSAqIGVuYWJsZS9kaXNhYmxlIHRoZSBwcmltYXJ5IHBsYW5lCj4gKwkg Ki8KPiArCWJvb2wgaGlkZXNfcHJpbWFyeTsKPiAgIH07Cj4KPiAgIHN0cnVjdCBpbnRlbF9wbGFu ZV9jb25maWcgewo+IEBAIC00MTUsNiArNDIxLDI3IEBAIHN0cnVjdCBza2xfcGlwZV93bSB7Cj4g ICAJdWludDMyX3QgbGluZXRpbWU7Cj4gICB9Owo+Cj4gKy8qCj4gKyAqIFRyYWNraW5nIG9mIG9w ZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBlcmZvcm1lZCBhdCB0aGUgYmVnaW5uaW5nL2VuZCBv ZiBhbgo+ICsgKiBhdG9taWMgY29tbWl0LCBvdXRzaWRlIHRoZSBhdG9taWMgc2VjdGlvbiB3aGVy ZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4KPiArICogVGhlc2UgYXJlIGdlbmVyYWxseSBvcGVy YXRpb25zIHRoYXQgZ3JhYiBtdXRleGVzIG9yIG1pZ2h0IG90aGVyd2lzZSBzbGVlcAo+ICsgKiBh bmQgdGh1cyBjYW4ndCBiZSBydW4gd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLgo+ICsgKi8KPiAr c3RydWN0IGludGVsX2NydGNfYXRvbWljX2NvbW1pdCB7Cj4gKwkvKiBTbGVlcGFibGUgb3BlcmF0 aW9ucyB0byBwZXJmb3JtIGJlZm9yZSBjb21taXQgKi8KPiArCWJvb2wgd2FpdF9mb3JfZmxpcHM7 Cj4gKwlib29sIGRpc2FibGVfZmJjOwo+ICsJYm9vbCBwcmVfZGlzYWJsZV9wcmltYXJ5Owo+ICsJ Ym9vbCB1cGRhdGVfd207Cj4gKwo+ICsJLyogU2xlZXBhYmxlIG9wZXJhdGlvbnMgdG8gcGVyZm9y bSBhZnRlciBjb21taXQgKi8KPiArCXVuc2lnbmVkIGZiX2JpdHM7Cj4gKwlib29sIHdhaXRfdmJs YW5rOwo+ICsJYm9vbCB1cGRhdGVfZmJjOwo+ICsJYm9vbCBwb3N0X2VuYWJsZV9wcmltYXJ5Owo+ ICsJdW5zaWduZWQgdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzOwo+ICt9Owo+ICsKPiAgIHN0cnVj dCBpbnRlbF9jcnRjIHsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgYmFzZTsKPiAgIAllbnVtIHBpcGUg cGlwZTsKPiBAQCAtNDY4LDYgKzQ5NSw4IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPgo+ICAgCWlu dCBzY2FubGluZV9vZmZzZXQ7Cj4gICAJc3RydWN0IGludGVsX21taW9fZmxpcCBtbWlvX2ZsaXA7 Cj4gKwo+ICsJc3RydWN0IGludGVsX2NydGNfYXRvbWljX2NvbW1pdCBhdG9taWM7Cj4gICB9Owo+ Cj4gICBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyB7Cj4gQEAgLTEyMTMsNiArMTI0 Miw4IEBAIGludCBpbnRlbF9zcHJpdGVfZ2V0X2NvbG9ya2V5KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gICBib29sIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAgCQkJICAgICB1aW50MzJfdCAqc3RhcnRfdmJsX2NvdW50KTsK PiAgIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1 MzIgc3RhcnRfdmJsX2NvdW50KTsKPiArdm9pZCBpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KHN0 cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK3ZvaWQgaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+Cj4gICAvKiBpbnRlbF90di5jICovCj4gICB2b2lkIGlu dGVsX3R2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiBpbmRleCBjMThlNTdkLi4zZTZlOTVmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtNzcxLDkgKzc3MSw4IEBAIGl2Yl9kaXNhYmxlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICAJICog QXZvaWQgdW5kZXJydW5zIHdoZW4gZGlzYWJsaW5nIHRoZSBzcHJpdGUuCj4gICAJICogRklYTUUg cmVtb3ZlIG9uY2Ugd2F0ZXJtYXJrIHVwZGF0ZXMgYXJlIGRvbmUgcHJvcGVybHkuCj4gICAJICov Cj4gLQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKPiAtCj4gLQlpbnRlbF91cGRh dGVfc3ByaXRlX3dhdGVybWFya3MocGxhbmUsIGNydGMsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSk7 Cj4gKwlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0cnVlOwo+ICsJaW50ZWxfY3J0 Yy0+YXRvbWljLnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyB8PSAoMSA8PCBkcm1fcGxhbmVfaW5k ZXgocGxhbmUpKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludAo+IEBAIC05NzYsMTIgKzk3NSwyMSBA QCBpbGtfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICAgCSAqIEF2b2lkIHVuZGVycnVucyB3aGVuIGRpc2FibGluZyB0aGUgc3By aXRlLgo+ICAgCSAqIEZJWE1FIHJlbW92ZSBvbmNlIHdhdGVybWFyayB1cGRhdGVzIGFyZSBkb25l IHByb3Blcmx5Lgo+ICAgCSAqLwo+IC0JaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgcGlwZSk7 Cj4gLQo+IC0JaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKHBsYW5lLCBjcnRjLCAwLCAw LCAwLCBmYWxzZSwgZmFsc2UpOwo+ICsJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0g dHJ1ZTsKPiArCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgfD0g KDEgPDwgZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQKPiAr LyoqCj4gKyAqIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkgLSBQZXJmb3JtIG9wZXJhdGlvbnMg YWZ0ZXIgZW5hYmxpbmcgcHJpbWFyeSBwbGFuZQo+ICsgKiBAY3J0YzogdGhlIENSVEMgd2hvc2Ug cHJpbWFyeSBwbGFuZSB3YXMganVzdCBlbmFibGVkCj4gKyAqCj4gKyAqIFBlcmZvcm1zIHBvdGVu dGlhbGx5IHNsZWVwaW5nIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGJlIGRvbmUgYWZ0ZXIgdGhlIHBy aW1hcnkKPiArICogcGxhbmUgaXMgZW5hYmxlZCwgc3VjaCBhcyB1cGRhdGluZyBGQkMgYW5kIElQ Uy4gIE5vdGUgdGhhdCB0aGlzIG1heSBiZQo+ICsgKiBjYWxsZWQgZHVlIHRvIGFuIGV4cGxpY2l0 IHByaW1hcnkgcGxhbmUgdXBkYXRlLCBvciBkdWUgdG8gYW4gaW1wbGljaXQKPiArICogcmUtZW5h YmxlIHRoYXQgaXMgY2F1c2VkIHdoZW4gYSBzcHJpdGUgcGxhbmUgaXMgdXBkYXRlZCB0byBubyBs b25nZXIKPiArICogY29tcGxldGVseSBoaWRlIHRoZSBwcmltYXJ5IHBsYW5lLgo+ICsgKi8KPiAr dm9pZAo+ICAgaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMTAw OCw3ICsxMDE2LDE3IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgfQo+Cj4g LXN0YXRpYyB2b2lkCj4gKy8qKgo+ICsgKiBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5IC0gUGVy Zm9ybSBvcGVyYXRpb25zIGJlZm9yZSBkaXNhYmxpbmcgcHJpbWFyeSBwbGFuZQo+ICsgKiBAY3J0 YzogdGhlIENSVEMgd2hvc2UgcHJpbWFyeSBwbGFuZSBpcyB0byBiZSBkaXNhYmxlZAo+ICsgKgo+ ICsgKiBQZXJmb3JtcyBwb3RlbnRpYWxseSBzbGVlcGluZyBvcGVyYXRpb25zIHRoYXQgbXVzdCBi ZSBkb25lIGJlZm9yZSB0aGUKPiArICogcHJpbWFyeSBwbGFuZSBpcyBlbmFibGVkLCBzdWNoIGFz IHVwZGF0aW5nIEZCQyBhbmQgSVBTLiAgTm90ZSB0aGF0IHRoaXMgbWF5Cj4gKyAqIGJlIGNhbGxl ZCBkdWUgdG8gYW4gZXhwbGljaXQgcHJpbWFyeSBwbGFuZSB1cGRhdGUsIG9yIGR1ZSB0byBhbiBp bXBsaWNpdAo+ICsgKiBkaXNhYmxlIHRoYXQgaXMgY2F1c2VkIHdoZW4gYSBzcHJpdGUgcGxhbmUg Y29tcGxldGVseSBoaWRlcyB0aGUgcHJpbWFyeQo+ICsgKiBwbGFuZS4KPiArICovCj4gK3ZvaWQK PiAgIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAg ewo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAgLTExMTMsNyAr MTEzMSw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPgo+ICAgCWlmICghZmIpIHsKPiAgIAkJc3RhdGUtPnZpc2libGUgPSBmYWxzZTsKPiAtCQly ZXR1cm4gMDsKPiArCQlnb3RvIGZpbmlzaDsKPiAgIAl9Cj4KPiAgIAkvKiBEb24ndCBtb2RpZnkg YW5vdGhlciBwaXBlJ3MgcGxhbmUgKi8KPiBAQCAtMTI2MCw2ICsxMjc4LDI5IEBAIGludGVsX2No ZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlkc3QtPnkxID0g Y3J0Y195Owo+ICAgCWRzdC0+eTIgPSBjcnRjX3kgKyBjcnRjX2g7Cj4KPiArZmluaXNoOgo+ICsJ LyoKPiArCSAqIElmIHRoZSBzcHJpdGUgaXMgY29tcGxldGVseSBjb3ZlcmluZyB0aGUgcHJpbWFy eSBwbGFuZSwKPiArCSAqIHdlIGNhbiBkaXNhYmxlIHRoZSBwcmltYXJ5IGFuZCBzYXZlIHBvd2Vy Lgo+ICsJICovCj4gKwlzdGF0ZS0+aGlkZXNfcHJpbWFyeSA9IGZiICE9IE5VTEwgJiYgZHJtX3Jl Y3RfZXF1YWxzKGRzdCwgY2xpcCkgJiYKPiArCQkhY29sb3JrZXlfZW5hYmxlZChpbnRlbF9wbGFu ZSk7Cj4gKwlXQVJOX09OKHN0YXRlLT5oaWRlc19wcmltYXJ5ICYmICFzdGF0ZS0+dmlzaWJsZSAm JiBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsK PiArCQlpZiAoaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkID09IHN0YXRlLT5oaWRlc19wcmlt YXJ5KQo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF9mb3JfZmxpcHMgPSB0cnVlOwo+ICsK PiArCQlpZiAoaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkICYmIHN0YXRlLT5oaWRlc19wcmlt YXJ5KQo+ICsJCQlpbnRlbF9jcnRjLT5hdG9taWMucHJlX2Rpc2FibGVfcHJpbWFyeSA9IHRydWU7 Cj4gKwo+ICsJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Cj4gKwkJCUlOVEVMX0ZST05U QlVGRkVSX1NQUklURShpbnRlbF9jcnRjLT5waXBlKTsKPiArCj4gKwkJaWYgKCFpbnRlbF9jcnRj LT5wcmltYXJ5X2VuYWJsZWQgJiYgIXN0YXRlLT5oaWRlc19wcmltYXJ5KQo+ICsJCQlpbnRlbF9j cnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFyeSA9IHRydWU7Cj4gKwl9Cj4gKwo+ICAgCXJl dHVybiAwOwo+ICAgfQo+Cj4gQEAgLTEyNjcsMzcgKzEzMDgsMTQgQEAgc3RhdGljIHZvaWQKPiAg IGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJ CQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBz dGF0ZS0+YmFzZS5jcnRjOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4g ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4g ICAJaW50IGNydGNfeCwgY3J0Y195Owo+ICAgCXVuc2lnbmVkIGludCBjcnRjX3csIGNydGNfaDsK PiAgIAl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKPiAtCXN0cnVjdCBkcm1f cmVjdCAqZHN0ID0gJnN0YXRlLT5kc3Q7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmNsaXAg PSAmc3RhdGUtPmNsaXA7Cj4gLQlib29sIHByaW1hcnlfZW5hYmxlZDsKPiAtCj4gLQkvKgo+IC0J ICogJ3ByZXBhcmUnIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVk LCBzbyB3ZSBuZWVkCj4gLQkgKiB0byBoYW5kbGUgZnJvbnRidWZmZXIgdHJhY2tpbmcgaGVyZQo+ IC0JICovCj4gLQlpZiAoIWZiKSB7Cj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+IC0JCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIpLCBOVUxMLAo+ IC0JCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUocGlwZSkpOwo+IC0JCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBJZiB0aGUgc3By aXRlIGlzIGNvbXBsZXRlbHkgY292ZXJpbmcgdGhlIHByaW1hcnkgcGxhbmUsCj4gLQkgKiB3ZSBj YW4gZGlzYWJsZSB0aGUgcHJpbWFyeSBhbmQgc2F2ZSBwb3dlci4KPiAtCSAqLwo+IC0JcHJpbWFy eV9lbmFibGVkID0gIWRybV9yZWN0X2VxdWFscyhkc3QsIGNsaXApIHx8IGNvbG9ya2V5X2VuYWJs ZWQoaW50ZWxfcGxhbmUpOwo+IC0JV0FSTl9PTighcHJpbWFyeV9lbmFibGVkICYmICFzdGF0ZS0+ dmlzaWJsZSAmJiBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+Cj4gICAJaW50ZWxfcGxhbmUtPmNydGNf eCA9IHN0YXRlLT5vcmlnX2RzdC54MTsKPiAgIAlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUt Pm9yaWdfZHN0LnkxOwo+IEBAIC0xMzEwLDE1ICsxMzI4LDcgQEAgaW50ZWxfY29tbWl0X3Nwcml0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlpbnRlbF9wbGFuZS0+b2JqID0g b2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+IC0JCWJvb2wgcHJpbWFyeV93 YXNfZW5hYmxlZCA9IGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZDsKPiAtCj4gLQkJaW50ZWxf Y3J0Yy0+cHJpbWFyeV9lbmFibGVkID0gcHJpbWFyeV9lbmFibGVkOwo+IC0KPiAtCQlpZiAocHJp bWFyeV93YXNfZW5hYmxlZCAhPSBwcmltYXJ5X2VuYWJsZWQpCj4gLQkJCWludGVsX2NydGNfd2Fp dF9mb3JfcGVuZGluZ19mbGlwcyhjcnRjKTsKPiAtCj4gLQkJaWYgKHByaW1hcnlfd2FzX2VuYWJs ZWQgJiYgIXByaW1hcnlfZW5hYmxlZCkKPiAtCQkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShj cnRjKTsKPiArCQlpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgPSAhc3RhdGUtPmhpZGVzX3By aW1hcnk7Cj4KPiAgIAkJaWYgKHN0YXRlLT52aXNpYmxlKSB7Cj4gICAJCQljcnRjX3ggPSBzdGF0 ZS0+ZHN0LngxOwo+IEBAIC0xMzM1LDEyICsxMzQ1LDYgQEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCWludGVs X3BsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRjKTsKPiAgIAkJfQo+IC0KPiAtCj4gLQkJ aW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVSX1NQUklURShwaXBl KSk7Cj4gLQo+IC0JCWlmICghcHJpbWFyeV93YXNfZW5hYmxlZCAmJiBwcmltYXJ5X2VuYWJsZWQp Cj4gLQkJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoY3J0Yyk7Cj4gICAJfQo+ICAgfQo+Cj4K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==