From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 11/13] drm/i915: Add two-stage ILK-style watermark programming (v3) Date: Mon, 31 Aug 2015 17:36:29 +0300 Message-ID: <1441031789.3347.5.camel@gmail.com> References: <1440119524-13867-1-git-send-email-matthew.d.roper@intel.com> <1440119524-13867-12-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-f46.google.com (mail-pa0-f46.google.com [209.85.220.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 36EAB6E2F1 for ; Mon, 31 Aug 2015 07:36:36 -0700 (PDT) Received: by pabpg12 with SMTP id pg12so8768772pab.3 for ; Mon, 31 Aug 2015 07:36:35 -0700 (PDT) In-Reply-To: <1440119524-13867-12-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 T24gVGh1LCAyMDE1LTA4LTIwIGF0IDE4OjEyIC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IElu IGFkZGl0aW9uIHRvIGNhbGN1bGF0aW5nIGZpbmFsIHdhdGVybWFya3MsIGxldCdzIGFsc28gcHJl LWNhbGN1bGF0ZSBhCj4gc2V0IG9mIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgdmFsdWVzIGF0IGF0 b21pYyBjaGVjayB0aW1lLiAgVGhlc2UKPiBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcyBhcmUgYSBj b21iaW5hdGlvbiBvZiB0aGUgd2F0ZXJtYXJrcyBmb3IgdGhlIG9sZAo+IHN0YXRlIGFuZCB0aGUg bmV3IHN0YXRlOyB0aGV5IHNob3VsZCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgb2YgYm90aAo+ IHN0YXRlcyB3aGljaCBtZWFucyB0aGV5IGNhbiBiZSBwcm9ncmFtbWVkIGltbWVkaWF0ZWx5IHdo ZW4gd2UgY29tbWl0IHRoZQo+IGF0b21pYyBzdGF0ZSAod2l0aG91dCB3YWl0aW5nIGZvciBhIHZi bGFuaykuICBPbmNlIHRoZSB2YmxhbmsgZG9lcwo+IGhhcHBlbiwgd2UgY2FuIHRoZW4gcmUtcHJv Z3JhbSB3YXRlcm1hcmtzIHRvIHRoZSBtb3JlIG9wdGltYWwgZmluYWwKPiB2YWx1ZS4KPiAKPiB2 MjogU2lnbmlmaWNhbnQgcmViYXNpbmcvcmV3cml0aW5nLgo+IAo+IHYzOgo+ICAtIE1vdmUgJ25l ZWRfcG9zdHZibF91cGRhdGUnIGZsYWcgdG8gQ1JUQyBzdGF0ZSAoRGFuaWVsKQo+ICAtIERvbid0 IGZvcmdldCB0byBjaGVjayBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgdmFsaWRp dHkKPiAgICAoTWFhcnRlbikKPiAgLSBEb24ndCBkdWUgYXN5bmMgd2F0ZXJtYXJrIG9wdGltaXph dGlvbjsganVzdCBkbyBpdCBhdCB0aGUgZW5kIG9mIHRoZQo+ICAgIGF0b21pYyB0cmFuc2FjdGlv biwgYWZ0ZXIgd2FpdGluZyBmb3IgdmJsYW5rcy4gIFdlIGRvIHdhbnQgaXQgdG8gYmUKPiAgICBh c3luYyBldmVudHVhbGx5LCBidXQgYWRkaW5nIHRoYXQgbm93IHdpbGwgY2F1c2UgbW9yZSB0cm91 YmxlIGZvcgo+ICAgIE1hYXJ0ZW4ncyBpbi1wcm9ncmVzcyB3b3JrLiAgKE1hYXJ0ZW4pCj4gIC0g RG9uJ3QgYWxsb2NhdGUgc3BhY2UgaW4gY3J0Y19zdGF0ZSBmb3IgaW50ZXJtZWRpYXRlIHdhdGVy bWFya3Mgb24KPiAgICBwbGF0Zm9ybXMgdGhhdCBkb24ndCBuZWVkIGl0IChnZW45KykuCj4gIC0g TW92ZSBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiIGludG8gaW50ZWxfYmVnaW5f Y3J0Y19jb21taXQKPiAgICBub3cgdGhhdCBpbGtfdXBkYXRlX3dtIGlzIGdvbmUuCj4gCj4gU2ln bmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA1ICsrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA3NyArKysrKysrKysrKysrKysrKyst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAzMyArKysrKystLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAxNDQgKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9u cygrKSwgNTEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXgg YWMxM2NkNy4uYmU0MmRkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MjIs NiArNjIyLDExIEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgCQkJICBzdHJ1 Y3QgZHBsbCAqYmVzdF9jbG9jayk7Cj4gIAlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSk7Cj4gKwlpbnQgKCpjb21wdXRlX2ludGVybWVkaWF0ZV93bSkoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3c3RhdGUsCj4g KwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZHN0YXRlKTsKPiAr CXZvaWQgKCpwcm9ncmFtX3dhdGVybWFya3MpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gKwl2b2lkICgqb3B0aW1pemVfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSk7Cj4gIAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwo+ICAJaW50ICgqbW9kZXNldF9jYWxjX2NkY2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpOwo+ICAJdm9pZCAoKm1vZGVzZXRfY29tbWl0X2NkY2xrKShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBp bmRleCA4ZTlkODdhLi5mOTI5Njc2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IEBAIC0xMTYzNCw2ICsxMTYzNCwxMSBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2Nh bGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJfQo+ICAJ fSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZShwbGFuZSwgcGxhbmVfc3RhdGUpKSB7Cj4g IAkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bV9wcmUgPSB0cnVlOwo+ICsKPiArCQkvKiBQ cmUtZ2VuOSBwbGF0Zm9ybXMgbmVlZCB0d28tc3RlcCB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+ICsJ CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgJiYKPiArCQkgICAgZGV2X3ByaXYtPmRpc3Bs YXkucHJvZ3JhbV93YXRlcm1hcmtzKQo+ICsJCQljc3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRh dGUgPSB0cnVlOwo+ICAJfQo+ICAKPiAgCWlmICh2aXNpYmxlKQo+IEBAIC0xMTc2OSw2ICsxMTc3 NCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPiAgCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9waXBlX2NvbmZpZyA9Cj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRlLT5zdGF0 ZTsKPiAgCWludCByZXQ7Cj4gIAlib29sIG1vZGVfY2hhbmdlZCA9IG5lZWRzX21vZGVzZXQoY3J0 Y19zdGF0ZSk7Cj4gQEAgLTExNzkzLDggKzExODAwLDI4IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJcmV0ID0gMDsKPiAgCWlm IChkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20pIHsKPiAgCQlyZXQgPSBkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20oY3J0Yywgc3RhdGUpOwo+IC0JCWlmIChyZXQpCj4g KwkJaWYgKHJldCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJUYXJnZXQgcGlwZSB3YXRlcm1hcmtz IGFyZSBpbnZhbGlkXG4iKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ aWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKSB7Cj4gKwkJaWYg KFdBUk5fT04oIWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSkpCj4gKwkJCXJldHVy biAwOwo+ICsKPiArCQkvKgo+ICsJCSAqIENhbGN1bGF0ZSAnaW50ZXJtZWRpYXRlJyB3YXRlcm1h cmtzIHRoYXQgc2F0aXNmeSBib3RoIHRoZQo+ICsJCSAqIG9sZCBzdGF0ZSBhbmQgdGhlIG5ldyBz dGF0ZS4gIFdlIGNhbiBwcm9ncmFtIHRoZXNlCj4gKwkJICogaW1tZWRpYXRlbHkuCj4gKwkJICov Cj4gKwkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oY3J0 Yy0+ZGV2LAo+ICsJCQkJCQkJCXBpcGVfY29uZmlnLAo+ICsJCQkJCQkJCW9sZF9waXBlX2NvbmZp Zyk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJObyB2YWxpZCBpbnRlcm1l ZGlhdGUgcGlwZSB3YXRlcm1hcmtzIGFyZSBwb3NzaWJsZVxuIik7Cj4gIAkJCXJldHVybiByZXQ7 Cj4gKwkJfQo+ICAJfQo+ICAKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4g QEAgLTEzMTQ5LDYgKzEzMTc2LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmludGVsX2NzdGF0ZTsKPiAgCWludCByZXQgPSAwOwo+ICAJaW50IGk7Cj4gIAlib29sIGFu eV9tcyA9IGZhbHNlOwo+IEBAIC0xMzIxMyw2ICsxMzI0MSwyMSBAQCBzdGF0aWMgaW50IGludGVs X2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCS8qIEZJWE1FOiBhZGQg c3VicGl4ZWwgb3JkZXIgKi8KPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92Ymxh bmtzKGRldiwgc3RhdGUpOwo+ICsKPiArCS8qCj4gKwkgKiBOb3cgdGhhdCB0aGUgdmJsYW5rIGhh cyBwYXNzZWQsIHdlIGNhbiBnbyBhaGVhZCBhbmQgcHJvZ3JhbSB0aGUKPiArCSAqIG9wdGltYWwg d2F0ZXJtYXJrcyBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIHR3by1zdGVwIHdhdGVybWFyawo+ICsJ ICogcHJvZ3JhbW1pbmcuCj4gKwkgKgo+ICsJICogVE9ETzogTW92ZSB0aGlzIChhbmQgb3RoZXIg Y2xlYW51cCkgdG8gYW4gYXN5bmMgd29ya2VyIGV2ZW50dWFsbHkuCj4gKwkgKi8KPiArCWZvcl9l YWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCQlpbnRl bF9jc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiArCj4gKwkJaWYg KGludGVsX2NzdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSkKPiArCQkJZGV2X3ByaXYtPmRp c3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyhpbnRlbF9jc3RhdGUpOwo+ICsJfQo+ICsKPiAgCWRy bV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICAKPiAgCWlmIChh bnlfbXMpCj4gQEAgLTEzNTQ0LDEwICsxMzU4Nyw0MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdp bl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICAgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bV9w cmUpCj4gKwkvKgo+ICsJICogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIg d2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiArCSAqIG9uZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcg c2NhbGluZy4gIExQIHdhdGVybWFya3MgY2FuIGJlIHJlLWVuYWJsZWQKPiArCSAqIHdoZW4gc2Nh bGluZyBpcyBkaXNhYmxlZC4KPiArCSAqCj4gKwkgKiBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNj YWxpbmc6aXZiCj4gKwkgKi8KPiArCWlmICh0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KS0+ZGlzYWJsZV9scF93bSkgewo+ICsJCWlsa19kaXNhYmxlX2xwX3dtKGNydGMtPmRldik7Cj4g KwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGNydGMtPmRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4g Kwl9Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGF0b21pYyB3 YXRlcm1hcmtzLCBwcm9ncmFtIHRoZSAnYWN0aXZlJwo+ICsJICogd2F0ZXJtYXJrcyBpbW1lZGlh dGVseS4gIE9uIHByZS1nZW45IHBsYXRmb3JtcywgdGhlc2Ugd2lsbCBiZSB0aGUKPiArCSAqIGlu dGVybWVkaWF0ZSB2YWx1ZXMgdGhhdCBhcmUgc2FmZSBmb3IgYm90aCBwcmUtIGFuZCBwb3N0LSB2 Ymxhbms7Cj4gKwkgKiB3aGVuIHZibGFuayBoYXBwZW5zLCB0aGUgJ2FjdGl2ZScgdmFsdWVzIHdp bGwgYmUgc2V0IHRvIHRoZSBmaW5hbAo+ICsJICogJ3RhcmdldCcgdmFsdWVzIGFuZCB3ZSdsbCBk byB0aGlzIGFnYWluIHRvIGdldCB0aGUgb3B0aW1hbAo+ICsJICogd2F0ZXJtYXJrcy4gIEZvciBn ZW45KyBwbGF0Zm9ybXMsIHRoZSB2YWx1ZXMgd2UgcHJvZ3JhbSBoZXJlIHdpbGwgYmUKPiArCSAq IHRoZSBmaW5hbCB0YXJnZXQgdmFsdWVzIHdoaWNoIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgbGF0 Y2hlZCBhdAo+ICsJICogdmJsYW5rIHRpbWU7IG5vIGZ1cnRoZXIgcHJvZ3JhbW1pbmcgd2lsbCBi ZSBuZWNlc3NhcnkuCj4gKwkgKgo+ICsJICogSWYgYSBwbGF0Zm9ybSBoYXNuJ3QgYmVlbiB0cmFu c2l0aW9uZWQgdG8gYXRvbWljIHdhdGVybWFya3MgeWV0LAo+ICsJICogd2UnbGwgY29udGludWUg dG8gdXBkYXRlIHdhdGVybWFya3MgdGhlIG9sZCB3YXksIGlmIGZsYWdzIHRlbGwKPiArCSAqIHVz IHRvLgo+ICsJICovCj4gKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkucHJvZ3JhbV93YXRlcm1hcmtz ICE9IE5VTEwpIHsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MoZGV2 X3ByaXYpOwo+ICsJfSBlbHNlIGlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtX3ByZSkg ewo+ICAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICsJfQo+ICAKPiAgCS8qIFBl cmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNvbW1pdCBvcGVyYXRpb24gKi8KPiAgCWlmIChj cnRjLT5zdGF0ZS0+YWN0aXZlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNmFj MTAxMGMuLjZhNzNhNTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC00NzYs MTQgKzQ3NiwzNCBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gIAlib29sIGRpc2FibGVf bHBfd207Cj4gIAo+ICAJc3RydWN0IHsKPiAtCQkvKgo+IC0JCSAqIGZpbmFsIHdhdGVybWFya3Ms IHByb2dyYW1tZWQgcG9zdC12Ymxhbmsgd2hlbiB0aGlzIHN0YXRlCj4gLQkJICogaXMgY29tbWl0 dGVkCj4gLQkJICovCj4gIAkJdW5pb24gewo+IC0JCQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBpbGs7 Cj4gKwkJCXN0cnVjdCB7Cj4gKwkJCQkvKgo+ICsJCQkJICogRmluYWwsIHRhcmdldCB3YXRlcm1h cmtzIGZvciBzdGF0ZTsgdGhpcwo+ICsJCQkJICogbWlnaHQgbm90IGhhdmUgYmVlbiBwcm9ncmFt bWVkIHlldCBpZiBhCj4gKwkJCQkgKiB2YmxhbmsgaGFzbid0IGhhcHBlbmVkIHNpbmNlIHRoaXMg c3RhdGUKPiArCQkJCSAqIHdhcyBjb21taXR0ZWQuCj4gKwkJCQkgKi8KPiArCQkJCXN0cnVjdCBp bnRlbF9waXBlX3dtIHRhcmdldDsKPiArCj4gKwkJCQkvKgo+ICsJCQkJICogY3VycmVudGx5IHBy b2dyYW1tZWQgd2F0ZXJtYXJrOyB0aGlzIHdpbGwgYmUKPiArCQkJCSAqIHRoZSBpbnRlcm1lZGlh dGUgdmFsdWVzIGJlZm9yZSB2YmxhbmsgdGhlbgo+ICsJCQkJICogc3dpdGNoIHRvIG1hdGNoICd0 YXJnZXQnIGFmdGVyIHZibGFuayBmaXJlcwo+ICsJCQkJICovCj4gKwkJCQlzdHJ1Y3QgaW50ZWxf cGlwZV93bSBhY3RpdmU7Cj4gKwkJCX0gaWxrOwo+ICsKPiAgCQkJc3RydWN0IHNrbF9waXBlX3dt IHNrbDsKPiAtCQl9IGFjdGl2ZTsKPiArCQl9Owo+ICsKPiArCQkvKgo+ICsJCSAqIFBsYXRmb3Jt cyB3aXRoIHR3by1zdGVwIHdhdGVybWFyayBwcm9ncmFtbWluZyB3aWxsIG5lZWQgdG8KPiArCQkg KiB1cGRhdGUgd2F0ZXJtYXJrIHByb2dyYW1taW5nIHBvc3QtdmJsYW5rIHRvIHN3aXRjaCBmcm9t IHRoZQo+ICsJCSAqIHNhZmUgaW50ZXJtZWRpYXRlIHdhdGVybWFya3MgdG8gdGhlIG9wdGltYWwg ZmluYWwKPiArCQkgKiB3YXRlcm1hcmtzLgo+ICsJCSAqLwo+ICsJCWJvb2wgbmVlZF9wb3N0dmJs X3VwZGF0ZTsKPiAgCX0gd207Cj4gIH07Cj4gIAo+IEBAIC0xMzg1LDYgKzE0MDUsNyBAQCB2b2lk IHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgc2ts X2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pOwo+ICB1aW50MzJf dCBpbGtfcGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7Cj4gK2Jvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gIAo+ICAvKiBpbnRlbF9zZHZvLmMgKi8KPiAgYm9vbCBpbnRlbF9zZHZvX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3Qgc2R2b19yZWcsIGJvb2wgaXNfc2R2b2IpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGIzMmQ2YjAuLmUwYTRjNGQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjMxNSw2ICsyMzE1LDI5IEBAIHN0YXRpYyB2b2lk IHNrbF9zZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnRlbF9w cmludF93bV9sYXRlbmN5KGRldiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVu Y3kpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgYm9vbCBpbGtfdmFsaWRhdGVfcGlwZV93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ ICt7Cj4gKwkvKiBMUDAgd2F0ZXJtYXJrIG1heGltdW1zIGRlcGVuZCBvbiB0aGlzIHBpcGUgYWxv bmUgKi8KPiArCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0gewo+ICsJCS5u dW1fcGlwZXNfYWN0aXZlID0gMSwKPiArCQkuc3ByaXRlc19lbmFibGVkID0gcGlwZV93bS0+c3By aXRlc19lbmFibGVkLAo+ICsJCS5zcHJpdGVzX3NjYWxlZCA9IHBpcGVfd20tPnNwcml0ZXNfc2Nh bGVkLAo+ICsJfTsKPiArCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4Owo+ICsKPiArCS8qIExQ MCB3YXRlcm1hcmtzIGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRpb25pbmcgKi8KPiArCWlsa19j b21wdXRlX3dtX21heGltdW1zKGRldiwgMCwgJmNvbmZpZywgSU5URUxfRERCX1BBUlRfMV8yLCAm bWF4KTsKPiArCj4gKwkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLwo+ICsJaWYgKCFp bGtfdmFsaWRhdGVfd21fbGV2ZWwoMCwgJm1heCwgJnBpcGVfd20tPndtWzBdKSkgewo+ICsJCURS TV9ERUJVR19LTVMoIkxQMCB3YXRlcm1hcmsgaW52YWxpZFxuIik7Cj4gKwkJcmV0dXJuIGZhbHNl Owo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICAvKiBDb21wdXRlIG5ldyB3 YXRlcm1hcmtzIGZvciB0aGUgcGlwZSAqLwo+ICBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVf d20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+IEBAIC0yMzMxLDEwICsyMzU0LDYgQEAgc3RhdGljIGludCBpbGtfY29t cHV0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqc3Byc3RhdGUgPSBOVUxMOwo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpj dXJzdGF0ZSA9IE5VTEw7Cj4gIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2 ZWwoZGV2KTsKPiAtCS8qIExQMCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlw ZSBhbG9uZSAqLwo+IC0Jc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcgPSB7Cj4gLQkJLm51 bV9waXBlc19hY3RpdmUgPSAxLAo+IC0JfTsKPiAgCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4 Owo+ICAKPiAgCWNzID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4g QEAgLTIzNDMsNyArMjM2Miw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAllbHNlCj4gIAkJY3N0YXRlID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcyk7Cj4gIAo+IC0JcGlwZV93bSA9ICZjc3RhdGUtPndtLmFjdGl2ZS5pbGs7Cj4gKwlw aXBlX3dtID0gJmNzdGF0ZS0+d20uaWxrLnRhcmdldDsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9w bGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAgCQlwcyA9IGRy bV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLAo+IEBAIC0yMzU5LDIxICsyMzc4LDE4IEBA IHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJCWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+ICAJfQo+ICAKPiAtCWNv bmZpZy5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+dmlzaWJsZTsKPiAtCWNvbmZpZy5zcHJp dGVzX3NjYWxlZCA9Cj4gKwlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0 aXZlOwo+ICsJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4g KwlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9Cj4gIAkJZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRl LT5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZzcHJzdGF0ZS0+c3JjKSA+PiAxNiB8fAo+ICAJCWRy bV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0 ZS0+c3JjKSA+PiAxNjsKPiAgCj4gLQlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJh c2UuYWN0aXZlOwo+IC0JcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gY29uZmlnLnNwcml0ZXNf ZW5hYmxlZDsKPiAtCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gY29uZmlnLnNwcml0ZXNfc2Nh bGVkOwo+IC0KPiAgCS8qIElMSy9TTkI6IExQMisgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzcHJpdGVz ICovCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNiAmJiBzcHJzdGF0ZS0+dmlzaWJs ZSkKPiAgCQltYXhfbGV2ZWwgPSAxOwo+ICAKPiAgCS8qIElMSy9TTkIvSVZCOiBMUDErIHdhdGVy bWFya3Mgb25seSB3L28gc2NhbGluZyAqLwo+IC0JaWYgKGNvbmZpZy5zcHJpdGVzX3NjYWxlZCkK PiArCWlmIChwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCkKPiAgCQltYXhfbGV2ZWwgPSAwOwo+ICAK PiAgCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCAwLCBjc3RhdGUs Cj4gQEAgLTIzODIsMTIgKzIzOTgsOCBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9B RFdFTEwoZGV2KSkKPiAgCQlwaXBlX3dtLT5saW5ldGltZSA9IGhzd19jb21wdXRlX2xpbmV0aW1l X3dtKGRldiwgY3J0Yyk7Cj4gIAo+IC0JLyogTFAwIHdhdGVybWFya3MgYWx3YXlzIHVzZSAxLzIg RERCIHBhcnRpdGlvbmluZyAqLwo+IC0JaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAwLCAm Y29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsICZtYXgpOwo+IC0KPiAtCS8qIEF0IGxlYXN0IExQ MCBtdXN0IGJlIHZhbGlkICovCj4gLQlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZlbCgwLCAmbWF4 LCAmcGlwZV93bS0+d21bMF0pKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+ICsJaWYgKCFpbGtfdmFs aWRhdGVfcGlwZV93bShkZXYsIHBpcGVfd20pKQo+ICsJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlp bGtfY29tcHV0ZV93bV9yZWdfbWF4aW11bXMoZGV2LCAxLCAmbWF4KTsKPiAgCj4gQEAgLTI0MTIs NiArMjQyNCw2MCBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICB9Cj4gIAo+ICAvKgo+ICsgKiBCdWlsZCBhIHNldCBvZiAnaW50ZXJtZWRp YXRlJyB3YXRlcm1hcmsgdmFsdWVzIHRoYXQgc2F0aXNmeSBib3RoIHRoZSBvbGQKPiArICogc3Rh dGUgYW5kIHRoZSBuZXcgc3RhdGUuICBUaGVzZSBjYW4gYmUgcHJvZ3JhbW1lZCB0byB0aGUgaGFy ZHdhcmUKPiArICogaW1tZWRpYXRlbHkuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGlsa19jb21wdXRl X2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSwKPiArCQkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9waXBl X3dtICphID0gJm5ld3N0YXRlLT53bS5pbGsuYWN0aXZlOwoKU2hvdWxkbid0IHRoaXMgYmUgaWxr LnRhcmdldD8KCkFsc28sIEkgZ2V0IGEgYmxhY2sgc2NyZWVuIHdpdGggdGhpcyBwYXRjaCBvbiBt eSBIU1cgbGFwdG9wLiBPbiBib290LCB0aGUgbGV2ZWwgMCB3bSBoYXMgc3ByX3ZhbCBzZXQKdG8g NTYsIGJ1dCB0aGUgdGhlIGh3IHN0YXRlIHJlYWRvdXQgY29kZSBkb2Vzbid0IHNldCBzcHJpdGVz X2VuYWJsZWQgcHJvcGVybHkuIFdoZW4gdGhlIG1lcmdlZAphY3RpdmUgYW5kIHRhcmdldCB3YXRl cm1hcmtzIGFyZSBjaGVja2VkIGZvciB2YWxpZGl0eSwgdGhlIG1heCB2YWx1ZSBhbGxvd2VkIGZv ciBzcHJfdmFsIGlzIDAKYmVjYXVzZSBzcHJpdGVzX2VuYWJsZWQgaXMgMCwgYW5kIHRoYXQgY2F1 c2VzIGV2ZXJ5IG1vZGVzZXQgdG8gZmFpbC4KCkFuZGVyCgo+ICsJY29uc3Qgc3RydWN0IGludGVs X3BpcGVfd20gKmIgPSAmb2xkc3RhdGUtPndtLmlsay5hY3RpdmU7Cj4gKwlpbnQgbGV2ZWwsIG1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiArCj4gKwkvKgo+ICsJICogU3RhcnQg d2l0aCB0aGUgZmluYWwsIHRhcmdldCB3YXRlcm1hcmtzLCB0aGVuIGNvbWJpbmUgd2l0aCB0aGUK PiArCSAqIGN1cnJlbnQgc3RhdGUncyB3YXRlcm1hcmtzIHRvIGdldCB2YWx1ZXMgdGhhdCBhcmUg c2FmZSBib3RoCj4gKwkgKiBiZWZvcmUgYW5kIGFmdGVyIHRoZSB2YmxhbmsuCj4gKwkgKi8KPiAr CSphID0gbmV3c3RhdGUtPndtLmlsay50YXJnZXQ7Cj4gKwlhLT5waXBlX2VuYWJsZWQgfD0gYi0+ cGlwZV9lbmFibGVkOwo+ICsJYS0+c3ByaXRlc19lbmFibGVkIHw9IGItPnNwcml0ZXNfZW5hYmxl ZDsKPiArCWEtPnNwcml0ZXNfc2NhbGVkIHw9IGItPnNwcml0ZXNfc2NhbGVkOwo+ICsKPiArCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiArCQlzdHJ1Y3Qg aW50ZWxfd21fbGV2ZWwgKmFfd20gPSAmYS0+d21bbGV2ZWxdOwo+ICsJCWNvbnN0IHN0cnVjdCBp bnRlbF93bV9sZXZlbCAqYl93bSA9ICZiLT53bVtsZXZlbF07Cj4gKwo+ICsJCWFfd20tPmVuYWJs ZSAmPSBiX3dtLT5lbmFibGU7Cj4gKwkJYV93bS0+cHJpX3ZhbCA9IG1heChhX3dtLT5wcmlfdmFs LCBiX3dtLT5wcmlfdmFsKTsKPiArCQlhX3dtLT5zcHJfdmFsID0gbWF4KGFfd20tPnNwcl92YWws IGJfd20tPnNwcl92YWwpOwo+ICsJCWFfd20tPmN1cl92YWwgPSBtYXgoYV93bS0+Y3VyX3ZhbCwg Yl93bS0+Y3VyX3ZhbCk7Cj4gKwkJYV93bS0+ZmJjX3ZhbCA9IG1heChhX3dtLT5mYmNfdmFsLCBi X3dtLT5mYmNfdmFsKTsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogV2UgbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGVzZSBtZXJnZWQgd2F0ZXJtYXJrIHZhbHVlcyBhcmUKPiArCSAqIGFjdHVhbGx5 IGEgdmFsaWQgY29uZmlndXJhdGlvbiB0aGVtc2VsdmVzLiAgSWYgdGhleSdyZSBub3QsCj4gKwkg KiB0aGVyZSdzIG5vIHNhZmUgd2F5IHRvIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHN0YXRlIHRv Cj4gKwkgKiB0aGUgbmV3IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIGZhaWwgdGhlIGF0b21pYyB0cmFu c2FjdGlvbi4KPiArCSAqLwo+ICsJaWYgKCFpbGtfdmFsaWRhdGVfcGlwZV93bShkZXYsIGEpKQo+ ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCS8qCj4gKwkgKiBJZiBvdXIgaW50ZXJtZWRpYXRl IFdNIGFyZSBpZGVudGljYWwgdG8gdGhlIGZpbmFsIFdNLCB0aGVuIHdlIGNhbgo+ICsJICogb21p dCB0aGUgcG9zdC12YmxhbmsgcHJvZ3JhbW1pbmcuCj4gKwkgKi8KPiArCWlmICghbWVtY21wKCZu ZXdzdGF0ZS0+d20uaWxrLmFjdGl2ZSwgJm5ld3N0YXRlLT53bS5pbGsudGFyZ2V0LAo+ICsJCSAg ICBzaXplb2YgKmEpKQo+ICsJCW5ld3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gZmFs c2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gICAqIE1lcmdlIHRoZSB3YXRl cm1hcmtzIGZyb20gYWxsIGFjdGl2ZSBwaXBlcyBmb3IgYSBzcGVjaWZpYyBsZXZlbC4KPiAgICov Cj4gIHN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+IEBAIC0yNDI1LDcgKzI0OTEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfbWVyZ2Vfd21fbGV2ZWwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRl bF9jcnRjKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9Cj4g IAkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gLQkJY29u c3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndtLmFjdGl2ZS5pbGs7 Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndtLmls ay5hY3RpdmU7Cj4gIAkJY29uc3Qgc3RydWN0IGludGVsX3dtX2xldmVsICp3bSA9ICZhY3RpdmUt PndtW2xldmVsXTsKPiAgCj4gIAkJaWYgKCFhY3RpdmUtPnBpcGVfZW5hYmxlZCkKPiBAQCAtMjU3 NiwxMiArMjY0MiwxMiBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9yZXN1bHRzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSA9Cj4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSk7 Cj4gIAkJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JCWNvbnN0IHN0cnVj dCBpbnRlbF93bV9sZXZlbCAqciA9ICZjc3RhdGUtPndtLmFjdGl2ZS5pbGsud21bMF07Cj4gKwkJ Y29uc3Qgc3RydWN0IGludGVsX3dtX2xldmVsICpyID0gJmNzdGF0ZS0+d20uaWxrLmFjdGl2ZS53 bVswXTsKPiAgCj4gIAkJaWYgKFdBUk5fT04oIXItPmVuYWJsZSkpCj4gIAkJCWNvbnRpbnVlOwo+ ICAKPiAtCQlyZXN1bHRzLT53bV9saW5ldGltZVtwaXBlXSA9IGNzdGF0ZS0+d20uYWN0aXZlLmls ay5saW5ldGltZTsKPiArCQlyZXN1bHRzLT53bV9saW5ldGltZVtwaXBlXSA9IGNzdGF0ZS0+d20u aWxrLmFjdGl2ZS5saW5ldGltZTsKPiAgCj4gIAkJcmVzdWx0cy0+d21fcGlwZVtwaXBlXSA9Cj4g IAkJCShyLT5wcmlfdmFsIDw8IFdNMF9QSVBFX1BMQU5FX1NISUZUKSB8Cj4gQEAgLTI3ODgsNyAr Mjg1NCw3IEBAIHN0YXRpYyB2b2lkIGlsa193cml0ZV93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJZGV2X3ByaXYtPndtLmh3ID0gKnJlc3VsdHM7Cj4gIH0K PiAgCj4gLXN0YXRpYyBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gK2Jvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg ewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCj4gQEAgLTM1NDQsMTAgKzM2MTAsMTAgQEAgc3RhdGljIGJvb2wgc2tsX3VwZGF0ZV9w aXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXNrbF9hbGxvY2F0ZV9waXBlX2RkYihj cnRjLCBjc3RhdGUsIGRkYik7Cj4gIAlza2xfY29tcHV0ZV9waXBlX3dtKGNydGMsIGRkYiwgY3N0 YXRlLCBwaXBlX3dtKTsKPiAgCj4gLQlpZiAoIW1lbWNtcCgmY3N0YXRlLT53bS5hY3RpdmUuc2ts LCBwaXBlX3dtLCBzaXplb2YoKnBpcGVfd20pKSkKPiArCWlmICghbWVtY21wKCZjc3RhdGUtPndt LnNrbCwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAK PiAtCWNzdGF0ZS0+d20uYWN0aXZlLnNrbCA9ICpwaXBlX3dtOwo+ICsJY3N0YXRlLT53bS5za2wg PSAqcGlwZV93bTsKPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+IEBAIC0zNjUzLDI0ICszNzE5 LDExIEBAIHN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWxrX3dyaXRlX3dtX3ZhbHVlcyhkZXZfcHJpdiwgJnJl c3VsdHMpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaWxrX29wdGltaXplX3dhdGVybWFya3Moc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+IC0KPiAt CS8qCj4gLQkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxvdyBwb3dlciB3YXRlcm1h cmtzIGZvciBhdCBsZWFzdAo+IC0JICogb25lIGZyYW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5n LiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUgcmUtZW5hYmxlZAo+IC0JICogd2hlbiBzY2FsaW5nIGlz IGRpc2FibGVkLgo+IC0JICoKPiAtCSAqIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzpp dmIKPiAtCSAqLwo+IC0JaWYgKGNzdGF0ZS0+ZGlzYWJsZV9scF93bSkgewo+IC0JCWlsa19kaXNh YmxlX2xwX3dtKGNydGMtPmRldik7Cj4gLQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGNydGMtPmRl diwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gLQl9Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICAKPiArCWNzdGF0 ZS0+d20uaWxrLmFjdGl2ZSA9IGNzdGF0ZS0+d20uaWxrLnRhcmdldDsKPiAgCWlsa19wcm9ncmFt X3dhdGVybWFya3MoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+IEBAIC0zNzI1LDcgKzM3NzgsNyBAQCBz dGF0aWMgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICAJc3RydWN0IHNrbF93bV92YWx1ZXMgKmh3ID0gJmRldl9wcml2LT53bS5za2xfaHc7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7Cj4gLQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndt LmFjdGl2ZS5za2w7Cj4gKwlzdHJ1Y3Qgc2tsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndt LnNrbDsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWludCBsZXZl bCwgaSwgbWF4X2xldmVsOwo+ICAJdWludDMyX3QgdGVtcDsKPiBAQCAtMzc4OSw3ICszODQyLDcg QEAgc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCXN0cnVjdCBpbGtfd21fdmFsdWVzICpodyA9ICZkZXZfcHJpdi0+d20uaHc7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZlID0gJmNzdGF0ZS0+ d20uYWN0aXZlLmlsazsKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAmY3N0YXRl LT53bS5pbGsuYWN0aXZlOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ ICAJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB3bTBfcGlwZV9yZWdbXSA9IHsKPiAgCQlbUElQ RV9BXSA9IFdNMF9QSVBFQV9JTEssCj4gQEAgLTM4MjgsNiArMzg4MSw4IEBAIHN0YXRpYyB2b2lk IGlsa19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJZm9y IChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykKPiAgCQkJYWN0aXZlLT53 bVtsZXZlbF0uZW5hYmxlID0gdHJ1ZTsKPiAgCX0KPiArCj4gKwljc3RhdGUtPndtLmlsay50YXJn ZXQgPSAqYWN0aXZlOwo+ICB9Cj4gIAo+ICAjZGVmaW5lIF9GV19XTSh2YWx1ZSwgcGxhbmUpIFwK PiBAQCAtNjk0OSw4ICs3MDA0LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzFdICYmIGRldl9w cml2LT53bS5jdXJfbGF0ZW5jeVsxXSkgfHwKPiAgCQkgICAgKCFJU19HRU41KGRldikgJiYgZGV2 X3ByaXYtPndtLnByaV9sYXRlbmN5WzBdICYmCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xh dGVuY3lbMF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+IC0JCQlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfd20gPSBpbGtfdXBkYXRlX3dtOwo+ICAJCQlkZXZfcHJpdi0+ZGlz cGxheS5jb21wdXRlX3BpcGVfd20gPSBpbGtfY29tcHV0ZV9waXBlX3dtOwo+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bSA9Cj4gKwkJCQlpbGtfY29tcHV0ZV9p bnRlcm1lZGlhdGVfd207Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJr cyA9IGlsa19wcm9ncmFtX3dhdGVybWFya3M7Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGlt aXplX3dhdGVybWFya3MgPSBpbGtfb3B0aW1pemVfd2F0ZXJtYXJrczsKPiAgCQl9IGVsc2Ugewo+ ICAJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVuY3ku ICIKPiAgCQkJCSAgICAgICJEaXNhYmxlIEN4U1JcbiIpOwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=