From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 04/13] drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM Date: Thu, 27 Aug 2015 15:55:53 +0300 Message-ID: <1440680153.2742.12.camel@gmail.com> References: <1440119524-13867-1-git-send-email-matthew.d.roper@intel.com> <1440119524-13867-5-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id B35546E849 for ; Thu, 27 Aug 2015 05:55:58 -0700 (PDT) Received: by pacgr6 with SMTP id gr6so7378404pac.3 for ; Thu, 27 Aug 2015 05:55:58 -0700 (PDT) In-Reply-To: <1440119524-13867-5-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 T24gVGh1LCAyMDE1LTA4LTIwIGF0IDE4OjExIC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IEp1 c3QgcHVsbCB0aGUgaW5mbyBvdXQgb2YgdGhlIHN0YXRlIHN0cnVjdHVyZXMgcmF0aGVyIHRoYW4g c3RhZ2luZwo+IGl0IGluIGFuIGFkZGl0aW9uYWwgc2V0IG9mIHN0cnVjdHVyZXMuCj4gCj4gU2ln bmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDMwNCArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9u cygrKSwgMTY5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4 IGI5YmNiODUuLjBjZmJhMGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMTc3 OSwxMyArMTc3OSw2IEBAIHN0YXRpYyB1aW50MzJfdCBpbGtfd21fZmJjKHVpbnQzMl90IHByaV92 YWwsIHVpbnQzMl90IGhvcml6X3BpeGVscywKPiAgCXJldHVybiBESVZfUk9VTkRfVVAocHJpX3Zh bCAqIDY0LCBob3Jpel9waXhlbHMgKiBieXRlc19wZXJfcGl4ZWwpICsgMjsKPiAgfQo+ICAKPiAt c3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgewo+IC0JYm9vbCBhY3RpdmU7Cj4gLQl1aW50 MzJfdCBwaXBlX2h0b3RhbDsKPiAtCXVpbnQzMl90IHBpeGVsX3JhdGU7IC8qIGluIEtIeiAqLwo+ IC0Jc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgcGxhbmVbSTkxNV9NQVhfUExBTkVT ICsgMV07Cj4gLX07Cj4gLQo+ICBzdHJ1Y3QgaWxrX3dtX21heGltdW1zIHsKPiAgCXVpbnQxNl90 IHByaTsKPiAgCXVpbnQxNl90IHNwcjsKPiBAQCAtMjgyNiwxOCArMjgxOSw0MCBAQCBzdGF0aWMg Ym9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAjZGVmaW5l IFNLTF9EREJfU0laRQkJODk2CS8qIGluIGJsb2NrcyAqLwo+ICAjZGVmaW5lIEJYVF9EREJfU0la RQkJNTEyCj4gIAo+ICsvKgo+ICsgKiBSZXR1cm4gdGhlIGluZGV4IG9mIGEgcGxhbmUgaW4gdGhl IFNLTCBEREIgYW5kIHdtIHJlc3VsdCBhcnJheXMuICBQcmltYXJ5Cj4gKyAqIHBsYW5lIGlzIGFs d2F5cyBpbiBzbG90IDAsIGN1cnNvciBpcyBhbHdheXMgaW4gc2xvdCBJOTE1X01BWF9QTEFORVMs IGFuZAo+ICsgKiBvdGhlciB1bml2ZXJzYWwgcGxhbmVzIGFyZSBpbiBpbmRpY2VzIDEuLm4uICBO b3RlIHRoYXQgdGhpcyBtYXkgbGVhdmUKPiArICogdW51c2VkIGluZGljZXMgYmV0d2VlbiB0aGUg dG9wICJzcHJpdGUiIHBsYW5lIGFuZCB0aGUgY3Vyc29yLgo+ICsgKi8KPiArc3RhdGljIGludAo+ ICtza2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiArewo+ ICsJc3dpdGNoIChwbGFuZS0+YmFzZS50eXBlKSB7Cj4gKwljYXNlIERSTV9QTEFORV9UWVBFX1BS SU1BUlk6Cj4gKwkJcmV0dXJuIDA7Cj4gKwljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKPiAr CQlyZXR1cm4gSTkxNV9NQVhfUExBTkVTOwo+ICsJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZ Ogo+ICsJCXJldHVybiBwbGFuZS0+cGxhbmU7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FT RShwbGFuZS0+YmFzZS50eXBlKTsKPiArCQlyZXR1cm4gcGxhbmUtPnBsYW5lOwo+ICsJfQo+ICt9 Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2NydGMgKmZvcl9j cnRjLAo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAo+IC0J CQkJICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFtcywKPiArCQkJ CSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAkJCQkgICBzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgLyogb3V0ICovKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Cj4gIAl1bnNpZ25lZCBpbnQgcGlwZV9zaXplLCBkZGJfc2l6ZTsKPiAgCWludCBu dGhfYWN0aXZlX3BpcGU7Cj4gIAo+IC0JaWYgKCFwYXJhbXMtPmFjdGl2ZSkgewo+ICsJaWYgKCFj c3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4gIAkJYWxsb2MtPnN0YXJ0ID0gMDsKPiAgCQlhbGxvYy0+ ZW5kID0gMDsKPiAgCQlyZXR1cm47Cj4gQEAgLTI5MDMsMTkgKzI5MTgsMjcgQEAgdm9pZCBza2xf ZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIH0K PiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQKPiAtc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0 ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcCwgaW50IHkpCj4gK3Nr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUsIGludCB5KQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoc3RhdGUtPmNydGMpOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBzdGF0ZS0+ZmI7Cj4gIAo+ICAJLyogZm9yIHBsYW5hciBmb3JtYXQgKi8KPiAtCWlmIChwLT55 X2J5dGVzX3Blcl9waXhlbCkgewo+ICsJaWYgKGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1B VF9OVjEyKSB7Cj4gIAkJaWYgKHkpICAvKiB5LXBsYW5lIGRhdGEgcmF0ZSAqLwo+IC0JCQlyZXR1 cm4gcC0+aG9yaXpfcGl4ZWxzICogcC0+dmVydF9waXhlbHMgKiBwLT55X2J5dGVzX3Blcl9waXhl bDsKPiArCQkJcmV0dXJuIGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAqCj4gKwkJCQlp bnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggKgo+ICsJCQkJZHJtX2Zvcm1hdF9wbGFuZV9j cHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gIAkJZWxzZSAgICAvKiB1di1wbGFuZSBkYXRhIHJh dGUgKi8KPiAtCQkJcmV0dXJuIChwLT5ob3Jpel9waXhlbHMvMikgKiAocC0+dmVydF9waXhlbHMv MikgKiBwLT5ieXRlc19wZXJfcGl4ZWw7Cj4gKwkJCXJldHVybiAoaW50ZWxfY3J0Yy0+Y29uZmln LT5waXBlX3NyY193LzIpICoKPiArCQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2gv MikgKgo+ICsJCQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMSk7Cj4g IAl9Cj4gIAo+ICAJLyogZm9yIHBhY2tlZCBmb3JtYXRzICovCj4gLQlyZXR1cm4gcC0+aG9yaXpf cGl4ZWxzICogcC0+dmVydF9waXhlbHMgKiBwLT5ieXRlc19wZXJfcGl4ZWw7Cj4gKwlyZXR1cm4g aW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193ICoKPiArCQlpbnRlbF9jcnRjLT5jb25maWct PnBpcGVfc3JjX2ggKgo+ICsJCWZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gIH0KPiAgCj4gIC8q Cj4gQEAgLTI5MjQsMjMgKzI5NDcsMjQgQEAgc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcCwgCj4gaW50IHkpCj4gICAq ICAgMyAqIDQwOTYgKiA4MTkyICAqIDQgPCAyXjMyCj4gICAqLwo+ICBzdGF0aWMgdW5zaWduZWQg aW50Cj4gLXNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAo+IC0JCQkJIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJz ICpwYXJhbXMpCj4gK3NrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lOwo+ICAJdW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZSA9IDA7Cj4gLQlpbnQg cGxhbmU7Cj4gIAo+IC0JZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgaW50ZWxfbnVtX3BsYW5lcyhp bnRlbF9jcnRjKTsgcGxhbmUrKykgewo+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV93bV9w YXJhbWV0ZXJzICpwOwo+ICsJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0YyhkZXYsIGludGVs X2NydGMsIGludGVsX3BsYW5lKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUgPSBpbnRlbF9wbGFuZS0+YmFzZS5zdGF0ZTsKPiAgCj4gLQkJcCA9ICZwYXJhbXMtPnBs YW5lW3BsYW5lXTsKPiAtCQlpZiAoIXAtPmVuYWJsZWQpCj4gKwkJaWYgKFdBUk5fT04oc3RhdGUt PmZiID09IE5VTEwpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJdG90YWxfZGF0YV9yYXRlICs9 IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUocCwgMCk7IC8qIHBhY2tlZC91diAqLwo+IC0J CWlmIChwLT55X2J5dGVzX3Blcl9waXhlbCkgewo+IC0JCQl0b3RhbF9kYXRhX3JhdGUgKz0gc2ts X3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShwLCAxKTsgLyogeS1wbGFuZSAqLwo+IC0JCX0KPiAr CQkvKiBwYWNrZWQvdXYgKi8KPiArCQl0b3RhbF9kYXRhX3JhdGUgKz0gc2tsX3BsYW5lX3JlbGF0 aXZlX2RhdGFfcmF0ZShzdGF0ZSwgMCk7Cj4gKwo+ICsJCWlmIChzdGF0ZS0+ZmItPnBpeGVsX2Zv cm1hdCA9PSBEUk1fRk9STUFUX05WMTIpCj4gKwkJCS8qIHktcGxhbmUgKi8KPiArCQkJdG90YWxf ZGF0YV9yYXRlICs9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RhdGUsIDEpOwo+ICAJ fQo+ICAKPiAgCXJldHVybiB0b3RhbF9kYXRhX3JhdGU7Cj4gQEAgLTI5NDksMjEgKzI5NzMsMjAg QEAgc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCj4gIHN0YXRpYyB2b2lkCj4gIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAq Y29uZmlnLAo+IC0JCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpw YXJhbXMsCj4gKwkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwK PiAgCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7Cj4gIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmZGRiLT5waXBlW3BpcGVdOwo+ ICAJdWludDE2X3QgYWxsb2Nfc2l6ZSwgc3RhcnQsIGN1cnNvcl9ibG9ja3M7Cj4gIAl1aW50MTZf dCBtaW5pbXVtW0k5MTVfTUFYX1BMQU5FU107Cj4gIAl1aW50MTZfdCB5X21pbmltdW1bSTkxNV9N QVhfUExBTkVTXTsKPiAgCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7Cj4gLQlpbnQgcGxh bmU7Cj4gIAo+IC0Jc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXYsIGNydGMs IGNvbmZpZywgcGFyYW1zLCBhbGxvYyk7Cj4gKwlza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25f bGltaXRzKGRldiwgY3J0YywgY29uZmlnLCBjc3RhdGUsIGFsbG9jKTsKPiAgCWFsbG9jX3NpemUg PSBza2xfZGRiX2VudHJ5X3NpemUoYWxsb2MpOwo+ICAJaWYgKGFsbG9jX3NpemUgPT0gMCkgewo+ ICAJCW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkp Owo+IEBAIC0yOTgwLDE3ICszMDAzLDIwIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIAlhbGxvYy0+ZW5kIC09IGN1cnNvcl9ibG9ja3M7Cj4gIAo+ICAJ LyogMS4gQWxsb2NhdGUgdGhlIG1pbmludW0gcmVxdWlyZWQgYmxvY2tzIGZvciBlYWNoIGFjdGl2 ZSBwbGFuZSAqLwo+IC0JZm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7Cj4g LQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgKnA7Cj4gKwlmb3JfZWFj aF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAr CQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKPiArCQlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5mYjsKPiArCQlpbnQgaWQgPSBza2xfd21f cGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ICAKPiAtCQlwID0gJnBhcmFtcy0+cGxhbmVbcGxhbmVd Owo+IC0JCWlmICghcC0+ZW5hYmxlZCkKPiArCQlpZiAoZmIgPT0gTlVMTCkKPiArCQkJY29udGlu dWU7Cj4gKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPiAgCQkJ Y29udGludWU7Cj4gIAo+IC0JCW1pbmltdW1bcGxhbmVdID0gODsKPiAtCQlhbGxvY19zaXplIC09 IG1pbmltdW1bcGxhbmVdOwo+IC0JCXlfbWluaW11bVtwbGFuZV0gPSBwLT55X2J5dGVzX3Blcl9w aXhlbCA/IDggOiAwOwo+IC0JCWFsbG9jX3NpemUgLT0geV9taW5pbXVtW3BsYW5lXTsKPiArCQlt aW5pbXVtW2lkXSA9IDg7Cj4gKwkJYWxsb2Nfc2l6ZSAtPSBtaW5pbXVtW2lkXTsKPiArCQl5X21p bmltdW1baWRdID0gKGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/IDggOiAw Owo+ICsJCWFsbG9jX3NpemUgLT0geV9taW5pbXVtW2lkXTsKPiAgCX0KPiAgCj4gIAkvKgo+IEBA IC0yOTk5LDQ1ICszMDI1LDQ1IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gIAkgKgo+ICAJICogRklYTUU6IHdlIG1heSBub3QgYWxsb2NhdGUgZXZlcnkg c2luZ2xlIGJsb2NrIGhlcmUuCj4gIAkgKi8KPiAtCXRvdGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRf dG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NydGMsIHBhcmFtcyk7Cj4gKwl0b3RhbF9k YXRhX3JhdGUgPSBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShpbnRlbF9jcnRjKTsK PiAgCj4gIAlzdGFydCA9IGFsbG9jLT5zdGFydDsKPiAtCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8 IGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0Yyk7IHBsYW5lKyspIHsKPiAtCQljb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcDsKPiArCWZvcl9lYWNoX2ludGVsX3BsYW5l X29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+ICsJCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnN0YXRlID0gaW50ZWxfcGxhbmUtPmJhc2Uuc3RhdGU7Cj4gIAkJdW5zaWdu ZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Cj4gIAkJdWludDE2X3QgcGxhbmVfYmxvY2tz LCB5X3BsYW5lX2Jsb2NrcyA9IDA7Cj4gKwkJaW50IGlkID0gc2tsX3dtX3BsYW5lX2lkKGludGVs X3BsYW5lKTsKPiAgCj4gLQkJcCA9ICZwYXJhbXMtPnBsYW5lW3BsYW5lXTsKPiAtCQlpZiAoIXAt PmVuYWJsZWQpCj4gKwkJaWYgKHN0YXRlLT5mYiA9PSBOVUxMKQo+ICAJCQljb250aW51ZTsKCkRv ZXNuJ3QgdGhpcyBuZWVkCgoJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNP UikKCQljb250aW51ZTsKCmxpa2UgYWJvdmU/Cgo+ICAKPiAtCQlkYXRhX3JhdGUgPSBza2xfcGxh bmVfcmVsYXRpdmVfZGF0YV9yYXRlKHAsIDApOwo+ICsJCWRhdGFfcmF0ZSA9IHNrbF9wbGFuZV9y ZWxhdGl2ZV9kYXRhX3JhdGUoc3RhdGUsIDApOwo+ICAKPiAgCQkvKgo+ICAJCSAqIGFsbG9jYXRp b24gZm9yIChwYWNrZWQgZm9ybWF0cykgb3IgKHV2LXBsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1h dCk6Cj4gIAkJICogcHJvbW90ZSB0aGUgZXhwcmVzc2lvbiB0byA2NCBiaXRzIHRvIGF2b2lkIG92 ZXJmbG93aW5nLCB0aGUKPiAgCQkgKiByZXN1bHQgaXMgPCBhdmFpbGFibGUgYXMgZGF0YV9yYXRl IC8gdG90YWxfZGF0YV9yYXRlIDwgMQo+ICAJCSAqLwo+IC0JCXBsYW5lX2Jsb2NrcyA9IG1pbmlt dW1bcGxhbmVdOwo+ICsJCXBsYW5lX2Jsb2NrcyA9IG1pbmltdW1baWRdOwo+ICAJCXBsYW5lX2Js b2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogZGF0YV9yYXRlLAo+ICAJCQkJ CXRvdGFsX2RhdGFfcmF0ZSk7Cj4gIAo+IC0JCWRkYi0+cGxhbmVbcGlwZV1bcGxhbmVdLnN0YXJ0 ID0gc3RhcnQ7Cj4gLQkJZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV0uZW5kID0gc3RhcnQgKyBwbGFu ZV9ibG9ja3M7Cj4gKwkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsKPiArCQlk ZGItPnBsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiAgCj4gIAkJ c3RhcnQgKz0gcGxhbmVfYmxvY2tzOwo+ICAKPiAgCQkvKgo+ICAJCSAqIGFsbG9jYXRpb24gZm9y IHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0Ogo+ICAJCSAqLwo+IC0JCWlmIChwLT55X2J5 dGVzX3Blcl9waXhlbCkgewo+IC0JCQl5X2RhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9k YXRhX3JhdGUocCwgMSk7Cj4gLQkJCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lXTsK PiArCQlpZiAoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7Cj4g KwkJCXlfZGF0YV9yYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShzdGF0ZSwgMSk7 Cj4gKwkJCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW2lkXTsKPiAgCQkJeV9wbGFuZV9ibG9j a3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIHlfZGF0YV9yYXRlLAo+ICAJCQkJ CQl0b3RhbF9kYXRhX3JhdGUpOwo+ICAKPiAtCQkJZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lXS5z dGFydCA9IHN0YXJ0Owo+IC0JCQlkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVdLmVuZCA9IHN0YXJ0 ICsgeV9wbGFuZV9ibG9ja3M7Cj4gKwkJCWRkYi0+eV9wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBz dGFydDsKPiArCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArIHlfcGxhbmVf YmxvY2tzOwo+ICAKPiAgCQkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7Cj4gIAkJfQo+IEBAIC0z MTM4LDcyICszMTY0LDE2IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX2dsb2JhbF9wYXJh bWV0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIHNrbF9jb21wdXRlX3dtX3BpcGVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gLQkJCQkJICAgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnApCj4gLXsKPiAtCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAtCXN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiOwo+IC0JaW50IGkgPSAxOyAvKiBJbmRleCBmb3Igc3ByaXRlIHBs YW5lcyBzdGFydCAqLwo+IC0KPiAtCXAtPmFjdGl2ZSA9IGludGVsX2NydGMtPmFjdGl2ZTsKPiAt CWlmIChwLT5hY3RpdmUpIHsKPiAtCQlwLT5waXBlX2h0b3RhbCA9IGludGVsX2NydGMtPmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwo+IC0JCXAtPnBpeGVsX3JhdGUgPSBz a2xfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNvbmZpZyk7Cj4gLQo+IC0JCWZiID0gY3J0 Yy0+cHJpbWFyeS0+c3RhdGUtPmZiOwo+IC0JCS8qIEZvciBwbGFuYXI6IEJwcCBpcyBmb3IgdXYg cGxhbmUsIHlfQnBwIGlzIGZvciB5IHBsYW5lICovCj4gLQkJaWYgKGZiKSB7Cj4gLQkJCXAtPnBs YW5lWzBdLmVuYWJsZWQgPSB0cnVlOwo+IC0JCQlwLT5wbGFuZVswXS5ieXRlc19wZXJfcGl4ZWwg PSBmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiA/Cj4gLQkJCQlkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAxKSA6IGZiLT5iaXRzX3Blcl9waXhlbCAvIAo+ IDg7Cj4gLQkJCXAtPnBsYW5lWzBdLnlfYnl0ZXNfcGVyX3BpeGVsID0gZmItPnBpeGVsX2Zvcm1h dCA9PSBEUk1fRk9STUFUX05WMTIgPwo+IC0JCQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBp eGVsX2Zvcm1hdCwgMCkgOiAwOwo+IC0JCQlwLT5wbGFuZVswXS50aWxpbmcgPSBmYi0+bW9kaWZp ZXJbMF07Cj4gLQkJfSBlbHNlIHsKPiAtCQkJcC0+cGxhbmVbMF0uZW5hYmxlZCA9IGZhbHNlOwo+ IC0JCQlwLT5wbGFuZVswXS5ieXRlc19wZXJfcGl4ZWwgPSAwOwo+IC0JCQlwLT5wbGFuZVswXS55 X2J5dGVzX3Blcl9waXhlbCA9IDA7Cj4gLQkJCXAtPnBsYW5lWzBdLnRpbGluZyA9IERSTV9GT1JN QVRfTU9EX05PTkU7Cj4gLQkJfQo+IC0JCXAtPnBsYW5lWzBdLmhvcml6X3BpeGVscyA9IGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdzsKPiAtCQlwLT5wbGFuZVswXS52ZXJ0X3BpeGVscyA9 IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaDsKPiAtCQlwLT5wbGFuZVswXS5yb3RhdGlv biA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbjsKPiAtCj4gLQkJZmIgPSBjcnRjLT5j dXJzb3ItPnN0YXRlLT5mYjsKPiAtCQlwLT5wbGFuZVtJOTE1X01BWF9QTEFORVNdLnlfYnl0ZXNf cGVyX3BpeGVsID0gMDsKPiAtCQlpZiAoZmIpIHsKPiAtCQkJcC0+cGxhbmVbSTkxNV9NQVhfUExB TkVTXS5lbmFibGVkID0gdHJ1ZTsKPiAtCQkJcC0+cGxhbmVbSTkxNV9NQVhfUExBTkVTXS5ieXRl c19wZXJfcGl4ZWwgPSBmYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+IC0JCQlwLT5wbGFuZVtJOTE1 X01BWF9QTEFORVNdLmhvcml6X3BpeGVscyA9IGNydGMtPmN1cnNvci0+c3RhdGUtPmNydGNfdzsK PiAtCQkJcC0+cGxhbmVbSTkxNV9NQVhfUExBTkVTXS52ZXJ0X3BpeGVscyA9IGNydGMtPmN1cnNv ci0+c3RhdGUtPmNydGNfaDsKPiAtCQl9IGVsc2Ugewo+IC0JCQlwLT5wbGFuZVtJOTE1X01BWF9Q TEFORVNdLmVuYWJsZWQgPSBmYWxzZTsKPiAtCQkJcC0+cGxhbmVbSTkxNV9NQVhfUExBTkVTXS5i eXRlc19wZXJfcGl4ZWwgPSAwOwo+IC0JCQlwLT5wbGFuZVtJOTE1X01BWF9QTEFORVNdLmhvcml6 X3BpeGVscyA9IDY0Owo+IC0JCQlwLT5wbGFuZVtJOTE1X01BWF9QTEFORVNdLnZlcnRfcGl4ZWxz ID0gNjQ7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocGxhbmUsICZk ZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGhlYWQpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+IC0KPiAtCQlpZiAoaW50 ZWxfcGxhbmUtPnBpcGUgPT0gcGlwZSAmJgo+IC0JCQlwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVf VFlQRV9PVkVSTEFZKQo+IC0JCQlwLT5wbGFuZVtpKytdID0gaW50ZWxfcGxhbmUtPndtOwo+IC0J fQo+IC19Cj4gLQo+ICBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkgc3RydWN0IHNrbF9waXBlX3dt X3BhcmFtZXRlcnMgKnAsCj4gLQkJCQkgc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMg KnBfcGFyYW1zLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICsJCQkJ IHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCj4gIAkJCQkgdWludDE2X3QgZGRiX2Fs bG9jYXRpb24sCj4gIAkJCQkgaW50IGxldmVsLAo+ICAJCQkJIHVpbnQxNl90ICpvdXRfYmxvY2tz LCAvKiBvdXQgKi8KPiAgCQkJCSB1aW50OF90ICpvdXRfbGluZXMgLyogb3V0ICovKQo+ICB7Cj4g KwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5mYjsKPiAgCXVpbnQzMl90IGxh dGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludDMyX3QgbWV0 aG9kMSwgbWV0aG9kMjsKPiAgCXVpbnQzMl90IHBsYW5lX2J5dGVzX3Blcl9saW5lLCBwbGFuZV9i bG9ja3NfcGVyX2xpbmU7Cj4gQEAgLTMyMTEsMzEgKzMxODEsMzUgQEAgc3RhdGljIGJvb2wgc2ts X2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJdWludDMyX3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ICAJdWludDhfdCBieXRlc19wZXJfcGl4 ZWw7Cj4gIAo+IC0JaWYgKGxhdGVuY3kgPT0gMCB8fCAhcC0+YWN0aXZlIHx8ICFwX3BhcmFtcy0+ ZW5hYmxlZCkKPiArCWlmIChsYXRlbmN5ID09IDAgfHwgIWludGVsX2NydGMtPmFjdGl2ZSB8fCAh ZmIpCgpJbiBvdGhlciBwbGFjZXMgeW91IHJlcGxhY2VkIHAtPmFjdGljZSB3aXRoIGNzdGF0ZS0+ YWN0aXZlLiBJcyB0aGVyZSBhIHJlYXNvbiB3aHkgdGhpcyBvbmUgZG9lc24ndApsb29rIGF0IHRo ZSBzdGF0ZT8gCgo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlieXRlc19wZXJfcGl4ZWwgPSBw X3BhcmFtcy0+eV9ieXRlc19wZXJfcGl4ZWwgPwo+IC0JCXBfcGFyYW1zLT55X2J5dGVzX3Blcl9w aXhlbCA6Cj4gLQkJcF9wYXJhbXMtPmJ5dGVzX3Blcl9waXhlbDsKPiAtCW1ldGhvZDEgPSBza2xf d21fbWV0aG9kMShwLT5waXhlbF9yYXRlLAo+ICsJYnl0ZXNfcGVyX3BpeGVsID0gKGZiLT5waXhl bF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAo RFJNX0ZPUk1BVF9OVjEyLCAwKSA6Cj4gKwkJZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCW1l dGhvZDEgPSBza2xfd21fbWV0aG9kMShza2xfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNv bmZpZyksCj4gIAkJCQkgYnl0ZXNfcGVyX3BpeGVsLAo+ICAJCQkJIGxhdGVuY3kpOwo+IC0JbWV0 aG9kMiA9IHNrbF93bV9tZXRob2QyKHAtPnBpeGVsX3JhdGUsCj4gLQkJCQkgcC0+cGlwZV9odG90 YWwsCj4gLQkJCQkgcF9wYXJhbXMtPmhvcml6X3BpeGVscywKPiArCW1ldGhvZDIgPSBza2xfd21f bWV0aG9kMihza2xfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNvbmZpZyksCj4gKwkJCQkg aW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gKwkJ CQkgaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193LAoKVGhlIG90aGVyIGZ1bmN0aW9ucyB3 ZXJlIGNoYW5nZWQgdG8gcmVjZWl2ZSB0aGUgY3J0YyBzdGF0ZSBhcyBhbiBhcmd1bWVudC4gTWF5 YmUgaXQgd291bGQgYmUgZ29vZCB0bwpkbyB0aGF0IGhlcmUgdG9vIGZvciBjb25zaXN0ZW5jeS4K CkFuZGVyCgo+ICAJCQkJIGJ5dGVzX3Blcl9waXhlbCwKPiAtCQkJCSBwX3BhcmFtcy0+dGlsaW5n LAo+ICsJCQkJIGZiLT5tb2RpZmllclswXSwKPiAgCQkJCSBsYXRlbmN5KTsKPiAgCj4gLQlwbGFu ZV9ieXRlc19wZXJfbGluZSA9IHBfcGFyYW1zLT5ob3Jpel9waXhlbHMgKiBieXRlc19wZXJfcGl4 ZWw7Cj4gKwlwbGFuZV9ieXRlc19wZXJfbGluZSA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9z cmNfdyAqIGJ5dGVzX3Blcl9waXhlbDsKPiAgCXBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9IERJVl9S T1VORF9VUChwbGFuZV9ieXRlc19wZXJfbGluZSwgNTEyKTsKPiAgCj4gLQlpZiAocF9wYXJhbXMt PnRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+IC0JICAgIHBfcGFyYW1zLT50 aWxpbmcgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7Cj4gKwlpZiAoZmItPm1vZGlmaWVy WzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gKwkgICAgZmItPm1vZGlmaWVyWzBd ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+ICAJCXVpbnQzMl90IG1pbl9zY2FubGlu ZXMgPSA0Owo+ICAJCXVpbnQzMl90IHlfdGlsZV9taW5pbXVtOwo+IC0JCWlmIChpbnRlbF9yb3Rh dGlvbl85MF9vcl8yNzAocF9wYXJhbXMtPnJvdGF0aW9uKSkgewo+IC0JCQlzd2l0Y2ggKHBfcGFy YW1zLT5ieXRlc19wZXJfcGl4ZWwpIHsKPiArCQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcw KHBsYW5lLT5zdGF0ZS0+cm90YXRpb24pKSB7Cj4gKwkJCWludCBicHAgPSAoZmItPnBpeGVsX2Zv cm1hdCA9PSBEUk1fRk9STUFUX05WMTIpID8KPiArCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZi LT5waXhlbF9mb3JtYXQsIDEpIDoKPiArCQkJCWZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gKwo+ ICsJCQlzd2l0Y2ggKGJwcCkgewo+ICAJCQljYXNlIDE6Cj4gIAkJCQltaW5fc2NhbmxpbmVzID0g MTY7Cj4gIAkJCQlicmVhazsKPiBAQCAtMzI1OSw4ICszMjMzLDggQEAgc3RhdGljIGJvb2wgc2ts X2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJcmVzX2xpbmVzID0gRElWX1JPVU5EX1VQKHNlbGVjdGVkX3Jlc3VsdCwgcGxhbmVfYmxv Y2tzX3Blcl9saW5lKTsKPiAgCj4gIAlpZiAobGV2ZWwgPj0gMSAmJiBsZXZlbCA8PSA3KSB7Cj4g LQkJaWYgKHBfcGFyYW1zLT50aWxpbmcgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiAt CQkgICAgcF9wYXJhbXMtPnRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCj4gKwkJ aWYgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ICsJCSAg ICBmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKQo+ICAJCQlyZXNf bGluZXMgKz0gNDsKPiAgCQllbHNlCj4gIAkJCXJlc19ibG9ja3MrKzsKPiBAQCAtMzI3Nyw2NSAr MzI1MSw2NCBAQCBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0 ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+IC0JCQkJIHN0cnVjdCBza2xfcGlw ZV93bV9wYXJhbWV0ZXJzICpwLAo+IC0JCQkJIGVudW0gcGlwZSBwaXBlLAo+ICsJCQkJIHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQkJIGludCBsZXZlbCwKPiAtCQkJCSBpbnQg bnVtX3BsYW5lcywKPiAgCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQpCj4gIHsKPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiArCXN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4gIAl1aW50MTZfdCBkZGJfYmxvY2tzOwo+IC0J aW50IGk7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwo+ICsJZm9y X2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0YyhkZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7 Cj4gKwkJaW50IGkgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ICAKPiAtCWZvciAo aSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspIHsKPiAgCQlkZGJfYmxvY2tzID0gc2tsX2RkYl9l bnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2ldKTsKPiAgCj4gIAkJcmVzdWx0LT5wbGFuZV9l bltpXSA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9wcml2LAo+IC0JCQkJCQlwLCAmcC0+cGxh bmVbaV0sCj4gKwkJCQkJCWludGVsX2NydGMsCj4gKwkJCQkJCWludGVsX3BsYW5lLAo+ICAJCQkJ CQlkZGJfYmxvY2tzLAo+ICAJCQkJCQlsZXZlbCwKPiAgCQkJCQkJJnJlc3VsdC0+cGxhbmVfcmVz X2JbaV0sCj4gIAkJCQkJCSZyZXN1bHQtPnBsYW5lX3Jlc19sW2ldKTsKPiAgCX0KPiAtCj4gLQlk ZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW0k5MTVfTUFY X1BMQU5FU10pOwo+IC0JcmVzdWx0LT5wbGFuZV9lbltJOTE1X01BWF9QTEFORVNdID0gc2tsX2Nv bXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsIHAsCj4gLQkJCQkJCSAmcC0+cGxhbmVbSTkxNV9NQVhf UExBTkVTXSwKPiAtCQkJCQkJIGRkYl9ibG9ja3MsIGxldmVsLAo+IC0JCQkJCQkgJnJlc3VsdC0+ cGxhbmVfcmVzX2JbSTkxNV9NQVhfUExBTkVTXSwKPiAtCQkJCQkJICZyZXN1bHQtPnBsYW5lX3Jl c19sW0k5MTVfTUFYX1BMQU5FU10pOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdWludDMyX3QKPiAtc2ts X2NvbXB1dGVfbGluZXRpbWVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3Qgc2tsX3Bp cGVfd21fcGFyYW1ldGVycyAqcCkKPiArc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiAgewo+IC0JaWYgKCF0b19pbnRlbF9jcnRjKGNydGMp LT5hY3RpdmUpCj4gKwlpZiAoIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+IC0JaWYgKFdBUk5fT04ocC0+cGl4ZWxfcmF0ZSA9PSAwKSkKPiArCWlmIChXQVJOX09OKHNr bF9waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSA9PSAwKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQly ZXR1cm4gRElWX1JPVU5EX1VQKDggKiBwLT5waXBlX2h0b3RhbCAqIDEwMDAsIHAtPnBpeGVsX3Jh dGUpOwo+ICsJcmV0dXJuIERJVl9ST1VORF9VUCg4ICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y19odG90YWwgKiAxMDAwLAo+ICsJCQkgICAgc2tsX3BpcGVfcGl4ZWxfcmF0ZShjc3Rh dGUpKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFy YW1ldGVycyAqcGFyYW1zLAo+ICtzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dt KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAkJCQkgICAgICBzdHJ1Y3Qgc2ts X3dtX2xldmVsICp0cmFuc193bSAvKiBvdXQgKi8pCj4gIHsKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JaW50IGk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lOwo+ICAKPiAtCWlmICghcGFyYW1zLT5hY3RpdmUpCj4gKwlpZiAoIWNz dGF0ZS0+YmFzZS5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIFVudGlsIHdlIGtub3cg bW9yZSwganVzdCBkaXNhYmxlIHRyYW5zaXRpb24gV01zICovCj4gLQlmb3IgKGkgPSAwOyBpIDwg aW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgaSsrKQo+ICsJZm9yX2VhY2hfaW50ZWxfcGxh bmVfb25fY3J0YyhjcnRjLT5kZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7Cj4gKwkJaW50 IGkgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ICsKPiAgCQl0cmFuc193bS0+cGxh bmVfZW5baV0gPSBmYWxzZTsKPiAtCXRyYW5zX3dtLT5wbGFuZV9lbltJOTE1X01BWF9QTEFORVNd ID0gZmFsc2U7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BpcGVf d20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlv biAqZGRiLAo+IC0JCQkJc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFtcywKPiAr CQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAkJCQlzdHJ1Y3Qgc2tsX3Bp cGVfd20gKnBpcGVfd20pCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Cj4gQEAgLTMzNDQsMTcgKzMzMTcsMTUgQEAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfcGlw ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGls a193bV9tYXhfbGV2ZWwoZGV2KTsKPiAgCj4gIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4 X2xldmVsOyBsZXZlbCsrKSB7Cj4gLQkJc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGRk YiwgcGFyYW1zLCBpbnRlbF9jcnRjLT5waXBlLAo+IC0JCQkJICAgICBsZXZlbCwgaW50ZWxfbnVt X3BsYW5lcyhpbnRlbF9jcnRjKSwKPiAtCQkJCSAgICAgJnBpcGVfd20tPndtW2xldmVsXSk7Cj4g KwkJc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGRkYiwgaW50ZWxfY3J0YywKPiArCQkJ CSAgICAgbGV2ZWwsICZwaXBlX3dtLT53bVtsZXZlbF0pOwo+ICAJfQo+IC0JcGlwZV93bS0+bGlu ZXRpbWUgPSBza2xfY29tcHV0ZV9saW5ldGltZV93bShjcnRjLCBwYXJhbXMpOwo+ICsJcGlwZV93 bS0+bGluZXRpbWUgPSBza2xfY29tcHV0ZV9saW5ldGltZV93bShjc3RhdGUpOwo+ICAKPiAtCXNr bF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3J0YywgcGFyYW1zLCAmcGlwZV93bS0+dHJhbnNfd20p Owo+ICsJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZwaXBlX3dtLT50cmFuc193 bSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJCSAgIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJz ICpwLAo+ICAJCQkJICAgc3RydWN0IHNrbF9waXBlX3dtICpwX3dtLAo+ICAJCQkJICAgc3RydWN0 IHNrbF93bV92YWx1ZXMgKnIsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiBAQCAtMzU5OCwxNiArMzU2OSwxNSBAQCBzdGF0aWMgdm9pZCBza2xfZmx1c2hfd21fdmFs dWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgfQo+ICAKPiAgc3RhdGlj IGJvb2wgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJICAg ICAgIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMsCj4gIAkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfd21fY29uZmlnICpjb25maWcsCj4gIAkJCSAgICAgICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIsIC8qIG91dCAqLwo+ICAJCQkgICAgICAgc3RydWN0IHNrbF9waXBl X3dtICpwaXBlX3dtIC8qIG91dCAqLykKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAKPiAtCXNrbF9j b21wdXRlX3dtX3BpcGVfcGFyYW1ldGVycyhjcnRjLCBwYXJhbXMpOwo+IC0Jc2tsX2FsbG9jYXRl X3BpcGVfZGRiKGNydGMsIGNvbmZpZywgcGFyYW1zLCBkZGIpOwo+IC0Jc2tsX2NvbXB1dGVfcGlw ZV93bShjcnRjLCBkZGIsIHBhcmFtcywgcGlwZV93bSk7Cj4gKwlza2xfYWxsb2NhdGVfcGlwZV9k ZGIoY3J0YywgY29uZmlnLCBjc3RhdGUsIGRkYik7Cj4gKwlza2xfY29tcHV0ZV9waXBlX3dtKGNy dGMsIGRkYiwgY3N0YXRlLCBwaXBlX3dtKTsKPiAgCj4gIAlpZiAoIW1lbWNtcCgmaW50ZWxfY3J0 Yy0+d20uc2tsX2FjdGl2ZSwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCj4gIAkJcmV0dXJu IGZhbHNlOwo+IEBAIC0zNjQwLDcgKzM2MTAsNiBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290 aGVyX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqLwo+ICAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShpbnRlbF9jcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsCj4gIAkJ CQliYXNlLmhlYWQpIHsKPiAtCQlzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyBwYXJhbXMg PSB7fTsKPiAgCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gcGlwZV93bSA9IHt9Owo+ICAJCWJvb2wgd21f Y2hhbmdlZDsKPiAgCj4gQEAgLTM2NTAsOCArMzYxOSw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRh dGVfb3RoZXJfcGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmICghaW50ZWxf Y3J0Yy0+YWN0aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJd21fY2hhbmdlZCA9IHNrbF91 cGRhdGVfcGlwZV93bSgmaW50ZWxfY3J0Yy0+YmFzZSwKPiAtCQkJCQkJJnBhcmFtcywgY29uZmln LAo+ICsJCXdtX2NoYW5nZWQgPSBza2xfdXBkYXRlX3BpcGVfd20oJmludGVsX2NydGMtPmJhc2Us IGNvbmZpZywKPiAgCQkJCQkJJnItPmRkYiwgJnBpcGVfd20pOwo+ICAKPiAgCQkvKgo+IEBAIC0z NjYxLDcgKzM2MjksNyBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVfd20oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkgKi8KPiAgCQlXQVJOX09OKCF3bV9jaGFuZ2VkKTsK PiAgCj4gLQkJc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsICZwYXJhbXMsICZwaXBlX3dtLCBy LCBpbnRlbF9jcnRjKTsKPiArCQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBpcGVfd20s IHIsIGludGVsX2NydGMpOwo+ICAJCXItPmRpcnR5W2ludGVsX2NydGMtPnBpcGVdID0gdHJ1ZTsK PiAgCX0KPiAgfQo+IEBAIC0zNjcxLDcgKzM2MzksNiBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRl X3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+IC0Jc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgcGFyYW1zID0ge307 Cj4gIAlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZkZXZfcHJpdi0+d20uc2tsX3Jl c3VsdHM7Cj4gIAlzdHJ1Y3Qgc2tsX3BpcGVfd20gcGlwZV93bSA9IHt9Owo+ICAJc3RydWN0IGlu dGVsX3dtX2NvbmZpZyBjb25maWcgPSB7fTsKPiBAQCAtMzY4MCwxMSArMzY0NywxMCBAQCBzdGF0 aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlza2xf Y29tcHV0ZV93bV9nbG9iYWxfcGFyYW1ldGVycyhkZXYsICZjb25maWcpOwo+ICAKPiAtCWlmICgh c2tsX3VwZGF0ZV9waXBlX3dtKGNydGMsICZwYXJhbXMsICZjb25maWcsCj4gLQkJCQkmcmVzdWx0 cy0+ZGRiLCAmcGlwZV93bSkpCj4gKwlpZiAoIXNrbF91cGRhdGVfcGlwZV93bShjcnRjLCAmY29u ZmlnLCAmcmVzdWx0cy0+ZGRiLCAmcGlwZV93bSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCXNrbF9j b21wdXRlX3dtX3Jlc3VsdHMoZGV2LCAmcGFyYW1zLCAmcGlwZV93bSwgcmVzdWx0cywgaW50ZWxf Y3J0Yyk7Cj4gKwlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBpcGVfd20sIHJlc3VsdHMs IGludGVsX2NydGMpOwo+ICAJcmVzdWx0cy0+ZGlydHlbaW50ZWxfY3J0Yy0+cGlwZV0gPSB0cnVl Owo+ICAKPiAgCXNrbF91cGRhdGVfb3RoZXJfcGlwZV93bShkZXYsIGNydGMsICZjb25maWcsIHJl c3VsdHMpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=