From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kumar, Mahesh" Subject: Re: [PATCH] drm/i915/skl+: ddb allocation algorithm optimization Date: Wed, 23 May 2018 19:28:05 +0530 Message-ID: <37806411-35b8-4540-4049-256e78b93ced@intel.com> References: <20180521113605.29818-1-mahesh1.kumar@intel.com> <78f595ac-c697-2d06-10ed-f4194aa8ab4c@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3CB626E49A for ; Wed, 23 May 2018 13:58:08 +0000 (UTC) In-Reply-To: <78f595ac-c697-2d06-10ed-f4194aa8ab4c@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org CgpPbiA1LzIyLzIwMTggMToyNyBQTSwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4gSGV5LAo+ Cj4gT3AgMjEtMDUtMTggb20gMTM6MzYgc2NocmVlZiBNYWhlc2ggS3VtYXI6Cj4+IEZyb206ICJL dW1hciwgTWFoZXNoIiA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Cj4+Cj4+IFRoaXMgcGF0Y2gg aW1wbGVtZW50cyBuZXcgRERCIGFsbG9jYXRpb24gYWxnb3JpdGhtIGFzIHBlciBIVyB0ZWFtCj4+ IHJlY29tbWVuZGF0aW9uLiBUaGlzIGFsZ28gdGFrZWNhcmUgb2Ygc2NlbmFyaW8gd2hlcmUgd2Ug YWxsb2NhdGUgbGVzcyBEREIKPiB0YWtlcyBjYXJlKgo+PiBmb3IgdGhlIHBsYW5lcyB3aXRoIGxv d2VyIHJlbGF0aXZlIHBpeGVsIHJhdGUsIGJ1dCB0aGV5IHJlcXVpcmUgbW9yZSBEREIKPj4gdG8g d29yay4KPj4gSXQgYWxzbyB0YWtlcyBjYXJlIG9mIGVuYWJsaW5nIHNhbWUgd2F0ZXJtYXJrIGxl dmVsIGZvciBlYWNoCj4+IHBsYW5lIGluIGNydGMsIGZvciBlZmZpY2llbnQgcG93ZXIgc2F2aW5n Lgo+PiBUaGlzIGFsZ29yaXRobSB1c2VzIGZpeCBkZGIgYWxsb2NhdGlvbiBmb3IgY3Vyc29yIHBs YW5lcy4KPiBmaXhlZCoKPgo+IEJlY2F1c2UgdGhpcyBpcyBhIHJlc3VibWl0IGZvciBhIGNvbW1p dCB0aGF0IGhhcyBiZWVuIHJldmVydGVkLCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIGF0IGxl YXN0IHBvaW50IG91dCB3aGF0IHRoZSByZWdyZXNzaW9uIHdhcywgYW5kIHdoYXQgaGFzIGJlZW4g ZG9uZSB0byBmaXggaXQuIDopClRoYW5rcyBmb3IgcmV2aWV3LgphZ3JlZSwgd2lsbCBhZGQgY29t bWl0IG1zZyBpbiBuZXh0IHZlcnNpb24gb2YgcGF0Y2guCkp1c3QgdG8gc3VtbWFyaXplLCBSZWdy ZXNzaW9uIHdhcyBkdWUgdG8gdGhlIEN1cnNvci1QbGFuZSBXTSBmb3IgbGV2ZWwtMCAKZ2V0dGlu ZyBkaXNhYmxlZCBldmVuIGlmIGN1cnNvciBwbGFuZSB3YXMgZW5hYmxlZC4KV2l0aCBOZXcgYWxn b3JpdGhtIFdNIHJlcXVpcmVtZW50IGZvciBjdXJzb3IgcGxhbmUgd2FzIG1vcmUgJiB0aGlzIHdh cyAKcmVzdWx0aW5nICI4IGJsb2NrcyIgbm90IGJlaW5nIHN1ZmZpY2llbnQuIFRvIHNvbHZlIGFi b3ZlIGlzc3VlLCBlYXJsaWVyIApJIHByb3Bvc2VkIGR5bmFtaWMgRERCIGFsbG9jYXRpb24gZm9y IGN1cnNvciBwbGFuZS4KVGhlcmUgd2FzIG5vIGlzc3VlIHRpbGwgbm93IGZvciBjdXJzb3IgcGxh bmUgd2l0aCBmaXhlZCA4LzMyIGJsb2NrIAphbGxvY2F0aW9uLCBTbyBsYXRlciBkZWNpZGVkIHRv IHVzZSBvbGQgYXBwcm9hY2ggb2YgV00gY2FsY3VsYXRpb24gCipvbmx5KiBmb3IgY3Vyc29yIHBs YW5lIChmaXJzdCBhbGxvY2F0ZSBEREIgJiBsYXRlciBkZWNpZGUvY2FsY3VsYXRlIFdNKS4KCi1N YWhlc2gKPgo+IEkndmUgYWRkZWQgUm9kcmlnbyB0byBjYywgc2luY2UgaGUgcmV2ZXJ0ZWQgdGhl IG9yaWdpbmFsIGNvbW1pdC4KPj4gU2lnbmVkLW9mZi1ieTogTWFoZXNoIEt1bWFyIDxtYWhlc2gx Lmt1bWFyQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDMyNiAr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAgMiBmaWxlcyBjaGFu Z2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgMTQzIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPj4gaW5kZXggZTMzYzM4MGI0M2UzLi41ZmM4ZmI2N2Q1ZDEgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMTIwMiw2ICsxMjAyLDcgQEAgc3RydWN0IHNr bF93bV9sZXZlbCB7Cj4+ICAgCWJvb2wgcGxhbmVfZW47Cj4+ICAgCXVpbnQxNl90IHBsYW5lX3Jl c19iOwo+PiAgIAl1aW50OF90IHBsYW5lX3Jlc19sOwo+PiArCXVpbnQxNl90IG1pbl9kYnVmX3Jl cTsKPj4gICB9Owo+PiAgIAo+PiAgIC8qIFN0b3JlcyBwbGFuZSBzcGVjaWZpYyBXTSBwYXJhbWV0 ZXJzICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBpbmRleCBiODUyMjllMTUzYzQuLjMy NjY1YzdmY2IyYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+IEBAIC00MjcxLDEz ICs0MjcxLDU4IEBAIHNrbF9kZGJfY2FsY19taW4oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSwgaW50IG51bV9hY3RpdmUsCj4+ICAgCW1pbmltdW1bUExBTkVfQ1VSU09SXSA9 IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihudW1fYWN0aXZlKTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0 aWMgdm9pZAo+PiArc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArCQkJICAgdTE2IHBsYW5lX2RkYiwKPj4gKwkJCSAg IHUxNiBtYXhfbGV2ZWwsCj4+ICsJCQkgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSkKPj4gK3sK Pj4gKwlpbnQgbGV2ZWw7Cj4+ICsJLyoKPj4gKwkgKiBOb3cgZW5hYmxlIGFsbCBsZXZlbHMgaW4g V00gc3RydWN0dXJlIHdoaWNoIGNhbiBiZSBlbmFibGVkCj4+ICsJICogdXNpbmcgY3VycmVudCBE REIgYWxsb2NhdGlvbgo+PiArCSAqLwo+PiArCWZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldl9wcml2KTsgbGV2ZWwgPj0gMDsgbGV2ZWwtLSkgewo+PiArCQlzdHJ1Y3Qgc2tsX3dtX2xl dmVsICpsZXZlbF93bSA9ICZ3bS0+d21bbGV2ZWxdOwo+PiArCj4+ICsJCWlmIChsZXZlbCA+IG1h eF9sZXZlbCB8fCBsZXZlbF93bS0+bWluX2RidWZfcmVxID4gcGxhbmVfZGRiCj4+ICsJCQkJICAg ICAgfHwgKGxldmVsICYmIGxldmVsX3dtLT5wbGFuZV9yZXNfbCA+PSAzMSkKPj4gKwkJCQkgICAg ICB8fCBsZXZlbF93bS0+cGxhbmVfcmVzX2IgPT0gMCkgewo+PiArCQkJbGV2ZWxfd20tPnBsYW5l X2VuID0gZmFsc2U7Cj4+ICsJCQlsZXZlbF93bS0+cGxhbmVfcmVzX2IgPSAwOwo+PiArCQkJbGV2 ZWxfd20tPnBsYW5lX3Jlc19sID0gMDsKPj4gKwkJfSBlbHNlIHsKPj4gKwkJCWxldmVsX3dtLT5w bGFuZV9lbiA9IHRydWU7Cj4+ICsJCX0KPj4gKwo+PiArCQkvKgo+PiArCQkgKiBEaXNwbGF5IFdB ICM4MjYgKFNLTDpBTEwsIEJYVDpBTEwpICYgIzEwNTkgKENOTDpBKQo+PiArCQkgKiBkaXNhYmxl IHdtIGxldmVsIDEtNyBvbiBOVjEyIHBsYW5lcwo+PiArCQkgKi8KPj4gKwkJaWYgKHdtLT5pc19w bGFuYXIgJiYgbGV2ZWwgPj0gMSAmJgo+PiArCQkgICAgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8 IElTX0JST1hUT04oZGV2X3ByaXYpIHx8Cj4+ICsJCSAgICAgSVNfQ05MX1JFVklEKGRldl9wcml2 LCBDTkxfUkVWSURfQTAsIENOTF9SRVZJRF9BMCkpKSB7Cj4+ICsJCQlsZXZlbF93bS0+cGxhbmVf ZW4gPSBmYWxzZTsKPj4gKwkJCWxldmVsX3dtLT5wbGFuZV9yZXNfYiA9IDA7Cj4+ICsJCQlsZXZl bF93bS0+cGxhbmVfcmVzX2wgPSAwOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHdtLT50 cmFuc193bS5wbGFuZV9yZXNfYiAmJiB3bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IgPCBwbGFuZV9k ZGIpCj4+ICsJCXdtLT50cmFuc193bS5wbGFuZV9lbiA9IHRydWU7Cj4+ICsJZWxzZQo+PiArCQl3 bS0+dHJhbnNfd20ucGxhbmVfZW4gPSBmYWxzZTsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQK Pj4gICBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSwKPj4gKwkJICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLAo+PiAgIAkJICAgICAg c3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPj4gICB7Cj4+ICAgCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPj4gICAJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4+ICAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+ICAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPj4gICAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNzdGF0ZS0+ d20uc2tsLmRkYjsKPj4gQEAgLTQyOTAsNiArNDMzNSw4IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2Rk YihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAgIAl1bnNpZ25lZCBpbnQgcGxh bmVfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPj4gICAJdW5zaWduZWQgaW50IHV2 X3BsYW5lX2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4+ICAgCXVpbnQxNl90IHRv dGFsX21pbl9ibG9ja3MgPSAwOwo+PiArCXUxNiB0b3RhbF9sZXZlbF9kZGIsIHBsYW5lX2Jsb2Nr cyA9IDA7Cj4+ICsJaW50IG1heF9sZXZlbCwgbGV2ZWw7Cj4+ICAgCj4+ICAgCS8qIENsZWFyIHRo ZSBwYXJ0aXRpb25pbmcgZm9yIGRpc2FibGVkIHBsYW5lcy4gKi8KPj4gICAJbWVtc2V0KGRkYi0+ cGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnBsYW5lW3BpcGVdKSk7Cj4+IEBAIC00MzI1LDE2 ICs0MzcyLDUyIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlLAo+PiAgIAkJdG90YWxfbWluX2Jsb2NrcyArPSB1dl9taW5pbXVtW3BsYW5lX2lk XTsKPj4gICAJfQo+PiAgIAo+PiAtCWlmICh0b3RhbF9taW5fYmxvY2tzID4gYWxsb2Nfc2l6ZSkg ewo+PiArCWFsbG9jX3NpemUgLT0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+PiArCWRkYi0+cGxh bmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLQo+PiArCQkJCQkJCW1p bmltdW1bUExBTkVfQ1VSU09SXTsKPj4gKwlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0u ZW5kID0gYWxsb2MtPmVuZDsKPj4gKwo+PiArCWZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldl9wcml2KTsgbGV2ZWwgPj0gMDsgbGV2ZWwtLSkgewo+PiArCQl0b3RhbF9sZXZlbF9kZGIg PSAwOwo+PiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lk KSB7Cj4+ICsJCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxh bmVfaWRdOwo+PiArCQkJdTE2IHBsYW5lX3Jlc19iID0gd20tPndtW2xldmVsXS5taW5fZGJ1Zl9y ZXEgKwo+PiArCQkJCQkJd20tPnV2X3dtW2xldmVsXS5taW5fZGJ1Zl9yZXE7Cj4+ICsJCQl1MTYg bWluID0gbWluaW11bVtwbGFuZV9pZF0gKyB1dl9taW5pbXVtW3BsYW5lX2lkXTsKPj4gKwo+PiAr CQkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikKPj4gKwkJCQljb250aW51ZTsKPj4gKwo+ PiArCQkJdG90YWxfbGV2ZWxfZGRiICs9IG1heChwbGFuZV9yZXNfYiwgbWluKTsKPj4gKwkJfQo+ PiArCj4+ICsJCS8qCj4+ICsJCSAqIElmIFRoaXMgbGV2ZWwgY2FuIHN1Y2Nlc3NmdWxseSBiZSBl bmFibGVkIHdpdGggdGhlCj4+ICsJCSAqIHBpcGUncyBjdXJyZW50IEREQiBhbGxvY2F0aW9uLCB0 aGVuIGFsbCBsb3dlciBsZXZlbHMgYXJlCj4+ICsJCSAqIGd1YXJhbnRlZWQgdG8gc3VjY2VlZCBh cyB3ZWxsLgo+PiArCQkgKi8KPj4gKwkJaWYgKHRvdGFsX2xldmVsX2RkYiA8PSBhbGxvY19zaXpl KQo+PiArCQkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKChsZXZlbCA8IDApIHx8ICh0b3Rh bF9taW5fYmxvY2tzID4gYWxsb2Nfc2l6ZSkpIHsKPj4gICAJCURSTV9ERUJVR19LTVMoIlJlcXVl c3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gRERCIGxpbWl0YXRpb25z Iik7Cj4+IC0JCURSTV9ERUJVR19LTVMoIm1pbmltdW0gcmVxdWlyZWQgJWQvJWRcbiIsIHRvdGFs X21pbl9ibG9ja3MsCj4+IC0JCQkJCQkJYWxsb2Nfc2l6ZSk7Cj4+ICsJCURSTV9ERUJVR19LTVMo Im1pbmltdW0gcmVxdWlyZWQgJWQvJWRcbiIsIChsZXZlbCA8IDApID8KPj4gKwkJCQl0b3RhbF9s ZXZlbF9kZGIgOiB0b3RhbF9taW5fYmxvY2tzLCBhbGxvY19zaXplKTsKPj4gICAJCXJldHVybiAt RUlOVkFMOwo+PiAgIAl9Cj4+ICsJbWF4X2xldmVsID0gbGV2ZWw7Cj4+ICsJYWxsb2Nfc2l6ZSAt PSB0b3RhbF9sZXZlbF9kZGI7Cj4+ICAgCj4+IC0JYWxsb2Nfc2l6ZSAtPSB0b3RhbF9taW5fYmxv Y2tzOwo+PiAtCWRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5l bmQgLSBtaW5pbXVtW1BMQU5FX0NVUlNPUl07Cj4+IC0JZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7Cj4+ICsJLyoKPj4gKwkgKiBQTEFORV9DVVJTT1IgZGF0 YSByYXRlIGlzIG5vdCBpbmNsdWRlZCBpbiB0b3RhbF9kYXRhX3JhdGUuCj4+ICsJICogSWYgb25s eSBjdXJzb3IgcGxhbmUgaXMgZW5hYmxlZCB3ZSBoYXZlIHRvIGVuYWJsZSBpdHMgV00gbGV2ZWxz Cj4+ICsJICogZXhwbGljaXRseSBiZWZvcmUgcmV0dXJuaW5nLiBDdXJzb3IgaGFzIGZpeGVkIGRk YiBhbGxvY2F0aW9uLAo+PiArCSAqIFNvIGl0J3Mgb2sgdG8gYWx3YXlzIGNoZWNrIGN1cnNvciBX TSBlbmFibGluZyBiZWZvcmUgcmV0dXJuLgo+PiArCSAqLwo+PiArCXBsYW5lX2Jsb2NrcyA9IHNr bF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdKTsKPj4gKwlz a2xfZW5hYmxlX3BsYW5lX3dtX2xldmVscyhkZXZfcHJpdiwgcGxhbmVfYmxvY2tzLCBtYXhfbGV2 ZWwsCj4+ICsJCQkJICAgJnBpcGVfd20tPnBsYW5lc1tQTEFORV9DVVJTT1JdKTsKPj4gICAKPj4g ICAJLyoKPj4gICAJICogMi4gRGlzdHJpYnV0ZSB0aGUgcmVtYWluaW5nIHNwYWNlIGluIHByb3Bv cnRpb24gdG8gdGhlIGFtb3VudCBvZgo+PiBAQCAtNDM0OCw0NCArNDQzMSw0OSBAQCBza2xfYWxs b2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPj4gICAJc3Rh cnQgPSBhbGxvYy0+c3RhcnQ7Cj4+ICAgCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxf Y3J0YywgcGxhbmVfaWQpIHsKPj4gICAJCXVuc2lnbmVkIGludCBkYXRhX3JhdGUsIHV2X2RhdGFf cmF0ZTsKPj4gLQkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB1dl9wbGFuZV9ibG9ja3M7Cj4+ICsJ CXUxNiBwbGFuZV9ibG9ja3MgPSAwLCB1dl9wbGFuZV9ibG9ja3MgPSAwOwo+PiArCQlzdHJ1Y3Qg c2tsX3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwo+PiArCQl1MTYg bWluX3JlcV9ibGsgPSB3bS0+d21bbWF4X2xldmVsXS5taW5fZGJ1Zl9yZXE7Cj4+ICsJCXUxNiB1 dl9taW5fcmVxX2JsayA9IHdtLT51dl93bVttYXhfbGV2ZWxdLm1pbl9kYnVmX3JlcTsKPj4gICAK Pj4gICAJCWlmIChwbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4+ICAgCQkJY29udGludWU7Cj4+ ICAgCj4+ICAgCQlkYXRhX3JhdGUgPSBwbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdOwo+PiAgIAo+ PiAtCQkvKgo+PiAtCQkgKiBhbGxvY2F0aW9uIGZvciAocGFja2VkIGZvcm1hdHMpIG9yICh1di1w bGFuZSBwYXJ0IG9mIHBsYW5hciBmb3JtYXQpOgo+PiAtCQkgKiBwcm9tb3RlIHRoZSBleHByZXNz aW9uIHRvIDY0IGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3dpbmcsIHRoZQo+PiAtCQkgKiByZXN1bHQg aXMgPCBhdmFpbGFibGUgYXMgZGF0YV9yYXRlIC8gdG90YWxfZGF0YV9yYXRlIDwgMQo+PiAtCQkg Ki8KPj4gLQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtwbGFuZV9pZF07Cj4+IC0JCXBsYW5lX2Js b2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogZGF0YV9yYXRlLAo+PiAtCQkJ CQl0b3RhbF9kYXRhX3JhdGUpOwo+PiAtCj4+ICAgCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMg YXQgKDAsMCkgKi8KPj4gICAJCWlmIChkYXRhX3JhdGUpIHsKPj4gKwkJCS8qCj4+ICsJCQkgKiBh bGxvY2F0aW9uIGZvciAocGFja2VkIGZvcm1hdHMpIG9yICh1di1wbGFuZSBwYXJ0IG9mCj4+ICsJ CQkgKiBwbGFuYXIgZm9ybWF0KTogcHJvbW90ZSB0aGUgZXhwcmVzc2lvbiB0byA2NCBiaXRzIHRv Cj4+ICsJCQkgKiBhdm9pZCBvdmVyZmxvd2luZywgdGhlIHJlc3VsdCBpcyA8IGF2YWlsYWJsZSBh cwo+PiArCQkJICogZGF0YV9yYXRlIC8gdG90YWxfZGF0YV9yYXRlIDwgMQo+PiArCQkJICovCj4+ ICsKPj4gKwkJCXBsYW5lX2Jsb2NrcyA9IG1heChtaW5pbXVtW3BsYW5lX2lkXSwgbWluX3JlcV9i bGspOwo+PiArCQkJcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHU2NClhbGxvY19zaXplICoKPj4g KwkJCQkJCWRhdGFfcmF0ZSwgdG90YWxfZGF0YV9yYXRlKTsKPj4gICAJCQlkZGItPnBsYW5lW3Bp cGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+PiAgIAkJCWRkYi0+cGxhbmVbcGlwZV1bcGxh bmVfaWRdLmVuZCA9IHN0YXJ0ICsgcGxhbmVfYmxvY2tzOwo+PiArCQkJc3RhcnQgKz0gcGxhbmVf YmxvY2tzOwo+PiAgIAkJfQo+PiAgIAo+PiAtCQlzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4+IC0K Pj4gICAJCS8qIEFsbG9jYXRlIEREQiBmb3IgVVYgcGxhbmUgZm9yIHBsYW5hciBmb3JtYXQvTlYx MiAqLwo+PiAgIAkJdXZfZGF0YV9yYXRlID0gdXZfcGxhbmVfZGF0YV9yYXRlW3BsYW5lX2lkXTsK Pj4gICAKPj4gLQkJdXZfcGxhbmVfYmxvY2tzID0gdXZfbWluaW11bVtwbGFuZV9pZF07Cj4+IC0J CXV2X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogdXZfZGF0 YV9yYXRlLAo+PiAtCQkJCQkgICB0b3RhbF9kYXRhX3JhdGUpOwo+PiAtCj4+ICAgCQlpZiAodXZf ZGF0YV9yYXRlKSB7Cj4+ICsJCQl1dl9wbGFuZV9ibG9ja3MgPSBtYXgodXZfbWluaW11bVtwbGFu ZV9pZF0sCj4+ICsJCQkJCSAgICAgIHV2X21pbl9yZXFfYmxrKTsKPj4gKwkJCXV2X3BsYW5lX2Js b2NrcyArPSBkaXZfdTY0KCh1NjQpYWxsb2Nfc2l6ZSAqCj4+ICsJCQkJCQl1dl9kYXRhX3JhdGUs IHRvdGFsX2RhdGFfcmF0ZSk7Cj4+ICAgCQkJZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0u c3RhcnQgPSBzdGFydDsKPj4gLQkJCWRkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLmVuZCA9 Cj4+IC0JCQkJc3RhcnQgKyB1dl9wbGFuZV9ibG9ja3M7Cj4+ICsJCQlkZGItPnV2X3BsYW5lW3Bp cGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFydCArCj4+ICsJCQkJCQkJICAgIHV2X3BsYW5lX2Jsb2Nr czsKPj4gKwkJCXN0YXJ0ICs9IHV2X3BsYW5lX2Jsb2NrczsKPj4gICAJCX0KPj4gICAKPj4gLQkJ c3RhcnQgKz0gdXZfcGxhbmVfYmxvY2tzOwo+PiArCQlza2xfZW5hYmxlX3BsYW5lX3dtX2xldmVs cyhkZXZfcHJpdiwgcGxhbmVfYmxvY2tzLAo+PiArCQkJCQkgICBtYXhfbGV2ZWwsIHdtKTsKPj4g ICAJfQo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gQEAgLTQ1OTQsNyArNDY4Miw2IEBAIHN0YXRp YyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+PiAgIAkJCQljb25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHRfcHJl diwKPj4gICAJCQkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0IC8qIG91dCAqLykKPj4gICB7 Cj4+IC0JY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0 ZS0+YmFzZTsKPj4gICAJdWludDMyX3QgbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5j eVtsZXZlbF07Cj4+ICAgCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRob2QxLCBtZXRob2QyOwo+PiAg IAl1aW50X2ZpeGVkXzE2XzE2X3Qgc2VsZWN0ZWRfcmVzdWx0Owo+PiBAQCAtNDY5Myw2MSArNDc4 MCwyNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJCW1pbl9kaXNwX2J1Zl9uZWVkZWQgPSByZXNf YmxvY2tzOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKChsZXZlbCA+IDAgJiYgcmVzX2xpbmVzID4g MzEpIHx8Cj4+IC0JICAgIHJlc19ibG9ja3MgPj0gZGRiX2FsbG9jYXRpb24gfHwKPj4gLQkgICAg bWluX2Rpc3BfYnVmX25lZWRlZCA+PSBkZGJfYWxsb2NhdGlvbikgewo+PiAtCQlyZXN1bHQtPnBs YW5lX2VuID0gZmFsc2U7Cj4+IC0KPj4gLQkJLyoKPj4gLQkJICogSWYgdGhlcmUgYXJlIG5vIHZh bGlkIGxldmVsIDAgd2F0ZXJtYXJrcywgdGhlbiB3ZSBjYW4ndAo+PiAtCQkgKiBzdXBwb3J0IHRo aXMgZGlzcGxheSBjb25maWd1cmF0aW9uLgo+PiAtCQkgKi8KPj4gLQkJaWYgKGxldmVsKSB7Cj4+ IC0JCQlyZXR1cm4gMDsKPj4gLQkJfSBlbHNlIHsKPj4gLQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lID0gcHN0YXRlLT5wbGFuZTsKPj4gLQo+PiAtCQkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVk IGRpc3BsYXkgY29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlv bnNcbiIpOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVkOiVzXSBibG9ja3MgcmVxdWly ZWQgPSAldS8ldSwgbGluZXMgcmVxdWlyZWQgPSAldS8zMVxuIiwKPj4gLQkJCQkgICAgICBwbGFu ZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4+IC0JCQkJICAgICAgcmVzX2Jsb2NrcywgZGRiX2Fs bG9jYXRpb24sIHJlc19saW5lcyk7Cj4+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPj4gLQkJfQo+PiAt CX0KPj4gLQo+PiAtCS8qCj4+IC0JICogRGlzcGxheSBXQSAjODI2IChTS0w6QUxMLCBCWFQ6QUxM KSAmICMxMDU5IChDTkw6QSkKPj4gLQkgKiBkaXNhYmxlIHdtIGxldmVsIDEtNyBvbiBOVjEyIHBs YW5lcwo+PiAtCSAqLwo+PiAtCWlmICh3cC0+aXNfcGxhbmFyICYmIGxldmVsID49IDEgJiYKPj4g LQkgICAgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpIHx8Cj4+ IC0JICAgICBJU19DTkxfUkVWSUQoZGV2X3ByaXYsIENOTF9SRVZJRF9BMCwgQ05MX1JFVklEX0Ew KSkpIHsKPj4gLQkJcmVzdWx0LT5wbGFuZV9lbiA9IGZhbHNlOwo+PiAtCQlyZXR1cm4gMDsKPj4g LQl9Cj4+IC0KPj4gICAJLyogVGhlIG51bWJlciBvZiBsaW5lcyBhcmUgaWdub3JlZCBmb3IgdGhl IGxldmVsIDAgd2F0ZXJtYXJrLiAqLwo+PiAgIAlyZXN1bHQtPnBsYW5lX3Jlc19iID0gcmVzX2Js b2NrczsKPj4gKwlyZXN1bHQtPm1pbl9kYnVmX3JlcSA9IG1pbl9kaXNwX2J1Zl9uZWVkZWQgKyAx Owo+PiAgIAlyZXN1bHQtPnBsYW5lX3Jlc19sID0gcmVzX2xpbmVzOwo+PiAtCXJlc3VsdC0+cGxh bmVfZW4gPSB0cnVlOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICAgc3Rh dGljIGludAo+PiAgIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4+IC0JCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiwKPj4gICAJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4+ICAg CQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKPj4g ICAJCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3bV9wYXJhbXMsCj4+ICAgCQkg ICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSwKPj4gICAJCSAgICAgIGludCBwbGFuZV9pZCkK Pj4gICB7Cj4+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNzdGF0ZS0+YmFzZS5jcnRjKTsKPj4gICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBpbnRl bF9wc3RhdGUtPmJhc2UucGxhbmU7Cj4+ICAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4+IC0JdWludDE2X3QgZGRiX2Jsb2NrczsKPj4g LQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+ICsJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+PiArCQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNz dGF0ZS0+YmFzZS5zdGF0ZSk7Cj4+ICsJdWludDE2X3QgZGRiX2Jsb2NrcyA9IDA7Cj4+ICAgCWlu dCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4+ICAgCWVu dW0gcGxhbmVfaWQgaW50ZWxfcGxhbmVfaWQgPSBpbnRlbF9wbGFuZS0+aWQ7Cj4+ICAgCWludCBy ZXQ7Cj4+IEBAIC00NzU1LDkgKzQ4MDgsMTcgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJaWYgKFdBUk5fT04oIWlu dGVsX3BzdGF0ZS0+YmFzZS5mYikpCj4+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPj4gICAKPj4gLQlk ZGJfYmxvY2tzID0gcGxhbmVfaWQgPwo+PiAtCQkgICAgIHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRi LT51dl9wbGFuZVtwaXBlXVtpbnRlbF9wbGFuZV9pZF0pIDoKPj4gLQkJICAgICBza2xfZGRiX2Vu dHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1baW50ZWxfcGxhbmVfaWRdKTsKPj4gKwkvKiBGaXgg RERCIGFsbG9jYXRpb24gaXMgYXZhaWxhYmxlIG9ubHkgZm9yIGN1cnNvciBwbGFuZSAqLwo+PiAr CWlmIChpbnRlbF9wbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpIHsKPj4gKwkJaW50IG51bV9hY3Rp dmU7Cj4+ICsKPj4gKwkJaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQo+PiAr CQkJbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKTsKPj4g KwkJZWxzZQo+PiArCQkJbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZlX2Ny dGNzKTsKPj4gKwo+PiArCQlkZGJfYmxvY2tzID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9h Y3RpdmUpOwo+PiArCX0KPj4gICAKPj4gICAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9s ZXZlbDsgbGV2ZWwrKykgewo+PiAgIAkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0gcGxh bmVfaWQgPyAmd20tPnV2X3dtW2xldmVsXSA6Cj4+IEBAIC00ODE0LDcgKzQ4NzUsNiBAQCBza2xf Y29tcHV0ZV9saW5ldGltZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+PiAg IHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPj4gICAJCQkJICAgICAgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLAo+ PiAgIAkJCQkgICAgICBzdHJ1Y3Qgc2tsX3dtX2xldmVsICp3bV9sMCwKPj4gLQkJCQkgICAgICB1 aW50MTZfdCBkZGJfYWxsb2NhdGlvbiwKPj4gICAJCQkJICAgICAgc3RydWN0IHNrbF93bV9sZXZl bCAqdHJhbnNfd20gLyogb3V0ICovKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4+IEBAIC00ODUxLDIzICs0OTExLDE2IEBAIHN0 YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSwKPj4gICAJCS8qIFdBIEJVRzoxOTM4NDY2IGFkZCBvbmUgYmxvY2sgZm9yIG5v biB5LXRpbGUgcGxhbmVzICovCj4+ICAgCQlpZiAoSVNfQ05MX1JFVklEKGRldl9wcml2LCBDTkxf UkVWSURfQTAsIENOTF9SRVZJRF9BMCkpCj4+ICAgCQkJcmVzX2Jsb2NrcyArPSAxOwo+PiAtCj4+ ICAgCX0KPj4gICAKPj4gLQlyZXNfYmxvY2tzICs9IDE7Cj4+IC0KPj4gLQlpZiAocmVzX2Jsb2Nr cyA8IGRkYl9hbGxvY2F0aW9uKSB7Cj4+IC0JCXRyYW5zX3dtLT5wbGFuZV9yZXNfYiA9IHJlc19i bG9ja3M7Cj4+IC0JCXRyYW5zX3dtLT5wbGFuZV9lbiA9IHRydWU7Cj4+IC0JCXJldHVybjsKPj4g LQl9Cj4+ICsJdHJhbnNfd20tPnBsYW5lX3Jlc19iID0gcmVzX2Jsb2NrcyArIDE7Cj4+ICsJcmV0 dXJuOwo+PiAgIAo+PiAgIGV4aXQ6Cj4+IC0JdHJhbnNfd20tPnBsYW5lX2VuID0gZmFsc2U7Cj4+ ICsJdHJhbnNfd20tPnBsYW5lX3Jlc19iID0gMDsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGlu dCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAt CQkJICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4+ICAgCQkJICAgICBzdHJ1 Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20pCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3N0YXRlLT5iYXNlLmNydGMtPmRldjsKPj4gQEAgLTQ4ODksMjQgKzQ5NDIsMjEgQEAg c3RhdGljIGludCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+PiAgIAkJCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSk7Cj4+ICAgCQllbnVt IHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKPj4gICAJCXN0 cnVjdCBza2xfd21fcGFyYW1zIHdtX3BhcmFtczsKPj4gLQkJZW51bSBwaXBlIHBpcGUgPSB0b19p bnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPj4gLQkJdWludDE2X3QgZGRiX2Js b2NrczsKPj4gICAKPj4gICAJCXdtID0gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4+IC0J CWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVf aWRdKTsKPj4gICAKPj4gICAJCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhkZXZf cHJpdiwgY3N0YXRlLAo+PiAgIAkJCQkJCSAgaW50ZWxfcHN0YXRlLCAmd21fcGFyYW1zLCAwKTsK Pj4gICAJCWlmIChyZXQpCj4+ICAgCQkJcmV0dXJuIHJldDsKPj4gICAKPj4gLQkJcmV0ID0gc2ts X2NvbXB1dGVfd21fbGV2ZWxzKGRldl9wcml2LCBkZGIsIGNzdGF0ZSwKPj4gLQkJCQkJICAgIGlu dGVsX3BzdGF0ZSwgJndtX3BhcmFtcywgd20sIDApOwo+PiArCQlyZXQgPSBza2xfY29tcHV0ZV93 bV9sZXZlbHMoZGV2X3ByaXYsIGNzdGF0ZSwgaW50ZWxfcHN0YXRlLAo+PiArCQkJCQkgICAgJndt X3BhcmFtcywgd20sIDApOwo+PiAgIAkJaWYgKHJldCkKPj4gICAJCQlyZXR1cm4gcmV0Owo+PiAg IAo+PiAgIAkJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZ3bV9wYXJhbXMsICZ3 bS0+d21bMF0sCj4+IC0JCQkJCSAgZGRiX2Jsb2NrcywgJndtLT50cmFuc193bSk7Cj4+ICsJCQkJ CSAgJndtLT50cmFuc193bSk7Cj4+ICAgCj4+ICAgCQkvKiB1diBwbGFuZSB3YXRlcm1hcmtzIG11 c3QgYWxzbyBiZSB2YWxpZGF0ZWQgZm9yIE5WMTIvUGxhbmFyICovCj4+ICAgCQlpZiAod21fcGFy YW1zLmlzX3BsYW5hcikgewo+PiBAQCAtNDkxOSw3ICs0OTY5LDcgQEAgc3RhdGljIGludCBza2xf YnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAgIAkJCWlm IChyZXQpCj4+ICAgCQkJCXJldHVybiByZXQ7Cj4+ICAgCj4+IC0JCQlyZXQgPSBza2xfY29tcHV0 ZV93bV9sZXZlbHMoZGV2X3ByaXYsIGRkYiwgY3N0YXRlLAo+PiArCQkJcmV0ID0gc2tsX2NvbXB1 dGVfd21fbGV2ZWxzKGRldl9wcml2LCBjc3RhdGUsCj4+ICAgCQkJCQkJICAgIGludGVsX3BzdGF0 ZSwgJndtX3BhcmFtcywKPj4gICAJCQkJCQkgICAgd20sIDEpOwo+PiAgIAkJCWlmIChyZXQpCj4+ IEBAIC01MDUwLDQyICs1MTAwLDEwIEBAIGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJcmV0dXJuIGZhbHNlOwo+ PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAtCQkJICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dt ICpvbGRfcGlwZV93bSwKPj4gLQkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwg Lyogb3V0ICovCj4+IC0JCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsIC8q IG91dCAqLwo+PiAtCQkJICAgICAgYm9vbCAqY2hhbmdlZCAvKiBvdXQgKi8pCj4+IC17Cj4+IC0J c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3N0YXRlKTsKPj4gLQlpbnQgcmV0Owo+PiAtCj4+IC0JcmV0ID0gc2tsX2J1aWxkX3BpcGVf d20oaW50ZWxfY3N0YXRlLCBkZGIsIHBpcGVfd20pOwo+PiAtCWlmIChyZXQpCj4+IC0JCXJldHVy biByZXQ7Cj4+IC0KPj4gLQlpZiAoIW1lbWNtcChvbGRfcGlwZV93bSwgcGlwZV93bSwgc2l6ZW9m KCpwaXBlX3dtKSkpCj4+IC0JCSpjaGFuZ2VkID0gZmFsc2U7Cj4+IC0JZWxzZQo+PiAtCQkqY2hh bmdlZCA9IHRydWU7Cj4+IC0KPj4gLQlyZXR1cm4gMDsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHVp bnQzMl90Cj4+IC1waXBlc19tb2RpZmllZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4+IC17Cj4+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiAtCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3N0YXRlOwo+PiAtCXVpbnQzMl90IGksIHJldCA9IDA7Cj4+IC0KPj4gLQlmb3JfZWFj aF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKQo+PiAtCQlyZXQgfD0g ZHJtX2NydGNfbWFzayhjcnRjKTsKPj4gLQo+PiAtCXJldHVybiByZXQ7Cj4+IC19Cj4+IC0KPj4g ICBzdGF0aWMgaW50Cj4+IC1za2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSkKPj4gK3NrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiArCQkJICAgIGNvbnN0IHN0cnVjdCBza2xf cGlwZV93bSAqb2xkX3BpcGVfd20sCj4+ICsJCQkgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dt ICpwaXBlX3dtKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0g Y3N0YXRlLT5iYXNlLnN0YXRlOwo+PiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUt PmRldjsKPj4gQEAgLTUxMDEsMTEgKzUxMTksMTUgQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxh bmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4+ICAgCj4+ICAgCWRybV9mb3Jf ZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7Cj4+ ICAgCQllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsK Pj4gKwkJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmcGlwZV93bS0+cGxhbmVzW3Bs YW5lX2lkXTsKPj4gKwkJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqb2xkX3dtID0KPj4gKwkJ CQkJCSZvbGRfcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPj4gICAKPj4gLQkJaWYgKHNrbF9k ZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPj4gKwkJaWYg KChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4+ ICAgCQkJCQkmbmV3X2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKSAmJgo+PiAgIAkJICAgIHNr bF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPj4g LQkJCQkJJm5ld19kZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSkpCj4+ICsJCQkJCSZuZXdf ZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pKSAmJgo+PiArCQkgICAgIW1lbWNtcCh3bSwg b2xkX3dtLCBzaXplb2Yoc3RydWN0IHNrbF9wbGFuZV93bSkpKQo+PiAgIAkJCWNvbnRpbnVlOwo+ PiAgIAo+PiAgIAkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0 ZSwgcGxhbmUpOwo+PiBAQCAtNTExNiwzMSArNTEzOCw1MSBAQCBza2xfZGRiX2FkZF9hZmZlY3Rl ZF9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPj4gICAJcmV0dXJuIDA7 Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIGludAo+PiAtc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gK3N0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dt KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiArCQkJICAgICAgY29uc3Qgc3RydWN0 IHNrbF9waXBlX3dtICpvbGRfcGlwZV93bSwKPj4gKwkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93 bSAqcGlwZV93bSwgLyogb3V0ICovCj4+ICsJCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0 aW9uICpkZGIsIC8qIG91dCAqLwo+PiArCQkJICAgICAgYm9vbCAqY2hhbmdlZCAvKiBvdXQgKi8p Cj4+ICAgewo+PiAtCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoc3RhdGUtPmRldik7Cj4+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxf c3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+PiAtCXN0cnVjdCBza2xfZGRi X2FsbG9jYXRpb24gKmRkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kZGI7Cj4+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGM7Cj4+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZTsKPj4gLQlpbnQgcmV0LCBpOwo+PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9j c3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNzdGF0ZSk7Cj4+ICsJaW50IHJldDsKPj4gICAK Pj4gLQltZW1jcHkoZGRiLCAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGIsIHNpemVvZigqZGRiKSk7 Cj4+ICsJcmV0ID0gc2tsX2J1aWxkX3BpcGVfd20oaW50ZWxfY3N0YXRlLCBwaXBlX3dtKTsKPj4g KwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiAgIAo+PiAtCWZvcl9lYWNoX25ld19pbnRl bF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPj4gLQkJcmV0 ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKTsKPj4gLQkJaWYgKHJldCkKPj4g LQkJCXJldHVybiByZXQ7Cj4+ICsJcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGludGVsX2Nz dGF0ZSwgcGlwZV93bSwgZGRiKTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiAr CS8qCj4+ICsJICogVE9ETzogUGxhbmVzIGFyZSBpbmNsdWRlZCBpbiBzdGF0ZSB0byBhcm0gV00g cmVnaXN0ZXJzLgo+PiArCSAqIFNjb3BlIHRvIG9wdGltaXplIGZ1cnRoZXIsIGJ5IGp1c3QgcmV3 cml0aW5nIHBsYW5lIHN1cmYgcmVnaXN0ZXIuCj4+ICsJICovCj4+ICsJcmV0ID0gc2tsX2RkYl9h ZGRfYWZmZWN0ZWRfcGxhbmVzKGludGVsX2NzdGF0ZSwgb2xkX3BpcGVfd20sIHBpcGVfd20pOwo+ PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICAgCj4+IC0JCXJldCA9IHNrbF9kZGJf YWRkX2FmZmVjdGVkX3BsYW5lcyhjc3RhdGUpOwo+PiAtCQlpZiAocmV0KQo+PiAtCQkJcmV0dXJu IHJldDsKPj4gLQl9Cj4+ICsJaWYgKCFtZW1jbXAob2xkX3BpcGVfd20sIHBpcGVfd20sIHNpemVv ZigqcGlwZV93bSkpKQo+PiArCQkqY2hhbmdlZCA9IGZhbHNlOwo+PiArCWVsc2UKPj4gKwkJKmNo YW5nZWQgPSB0cnVlOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0 aWMgdWludDMyX3QKPj4gK3BpcGVzX21vZGlmaWVkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ICsJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjc3RhdGU7Cj4+ICsJdWludDMyX3QgaSwgcmV0ID0gMDsKPj4gKwo+PiArCWZv cl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpCj4+ICsJCXJl dCB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4g Kwo+PiAgIHN0YXRpYyB2b2lkCj4+ICAgc2tsX2NvcHlfZGRiX2Zvcl9waXBlKHN0cnVjdCBza2xf ZGRiX3ZhbHVlcyAqZHN0LAo+PiAgIAkJICAgICAgc3RydWN0IHNrbF9kZGJfdmFsdWVzICpzcmMs Cj4+IEBAIC01Mjg2LDYgKzUzMjgsNyBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4+ICAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gICAJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4+ICAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPj4gKwljb25zdCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ PiAgIAlzdHJ1Y3Qgc2tsX2RkYl92YWx1ZXMgKnJlc3VsdHMgPSAmaW50ZWxfc3RhdGUtPndtX3Jl c3VsdHM7Cj4+ICAgCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bTsKPj4gICAJYm9vbCBjaGFu Z2VkID0gZmFsc2U7Cj4+IEBAIC01Mjk4LDEwICs1MzQxLDcgQEAgc2tsX2NvbXB1dGVfd20oc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgIAlpZiAocmV0IHx8ICFjaGFuZ2VkKQo+ PiAgIAkJcmV0dXJuIHJldDsKPj4gICAKPj4gLQlyZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUp Owo+PiAtCWlmIChyZXQpCj4+IC0JCXJldHVybiByZXQ7Cj4+IC0KPj4gKwltZW1jcHkoJnJlc3Vs dHMtPmRkYiwgJmRldl9wcml2LT53bS5za2xfaHcuZGRiLCBzaXplb2YocmVzdWx0cy0+ZGRiKSk7 Cj4+ICAgCS8qCj4+ICAgCSAqIENhbGN1bGF0ZSBXTSdzIGZvciBhbGwgcGlwZXMgdGhhdCBhcmUg cGFydCBvZiB0aGlzIHRyYW5zYWN0aW9uLgo+PiAgIAkgKiBOb3RlIHRoYXQgdGhlIEREQiBhbGxv Y2F0aW9uIGFib3ZlIG1heSBoYXZlIGFkZGVkIG1vcmUgQ1JUQydzIHRoYXQKPgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==