From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH 09/25] drm/amdgpu: allow split of queues with kfd at queue granularity v2 Date: Tue, 4 Apr 2017 23:16:34 -0400 Message-ID: References: <20170404220551.8669-1-andresx7@gmail.com> <20170404220551.8669-10-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-10-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Andres Rodriguez Cc: amd-gfx list T24gVHVlLCBBcHIgNCwgMjAxNyBhdCA2OjA1IFBNLCBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4 N0BnbWFpbC5jb20+IHdyb3RlOgo+IFByZXZpb3VzbHkgdGhlIHF1ZXVlL3BpcGUgc3BsaXQgd2l0 aCBrZmQgb3BlcmF0ZWQgd2l0aCBwaXBlCj4gZ3JhbnVsYXJpdHkuIFRoaXMgcGF0Y2ggYWxsb3dz IGFtZGdwdSB0byB0YWtlIG93bmVyc2hpcCBvZiBhbiBhcmJpdHJhcnkKPiBzZXQgb2YgcXVldWVz Lgo+Cj4gSXQgYWxzbyBjb25zb2xpZGF0ZXMgdGhlIGxhc3QgZmV3IG1hZ2ljIG51bWJlcnMgaW4g dGhlIGNvbXB1dGUKPiBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGludG8gbWVjX2luaXQuCj4KPiB2 Mjogc3VwcG9ydCBmb3IgZ2Z4OQo+Cj4gUmV2aWV3ZWQtYnk6IEVkd2FyZCBPJ0NhbGxhZ2hhbiA8 ZnVuZnVuY3RvckBmb2xrbG9yZTE5ODQubmV0Pgo+IEFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmln IDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmVzIFJvZHJp Z3VleiA8YW5kcmVzeDdAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHUuaCAgICAgICAgICAgICB8ICA3ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nZnhfdjdfMC5jICAgICAgICAgICB8IDgzICsrKysrKysrKysrKysrKysrLS0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jICAgICAgICAgICB8IDgx ICsrKysrKysrKysrKysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n ZnhfdjlfMC5jICAgICAgICAgICB8IDg0ICsrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmggfCAgMSArCj4gIDUg ZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPiBpbmRleCBiOTJmNmNiLi5lMmQ4MjQzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPiBAQCAtMzksMjAgKzM5LDIyIEBACj4g ICNpbmNsdWRlIDx0dG0vdHRtX2JvX2FwaS5oPgo+ICAjaW5jbHVkZSA8dHRtL3R0bV9ib19kcml2 ZXIuaD4KPiAgI2luY2x1ZGUgPHR0bS90dG1fcGxhY2VtZW50Lmg+Cj4gICNpbmNsdWRlIDx0dG0v dHRtX21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8dHRtL3R0bV9leGVjYnVmX3V0aWwuaD4KPgo+ICAj aW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gICNpbmNs dWRlIDxkcm0vYW1kZ3B1X2RybS5oPgo+Cj4gKyNpbmNsdWRlIDxrZ2Rfa2ZkX2ludGVyZmFjZS5o Pgo+ICsKPiAgI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKPiAgI2luY2x1ZGUgImFtZGdwdV9tb2Rl LmgiCj4gICNpbmNsdWRlICJhbWRncHVfaWguaCIKPiAgI2luY2x1ZGUgImFtZGdwdV9pcnEuaCIK PiAgI2luY2x1ZGUgImFtZGdwdV91Y29kZS5oIgo+ICAjaW5jbHVkZSAiYW1kZ3B1X3R0bS5oIgo+ ICAjaW5jbHVkZSAiYW1kZ3B1X3BzcC5oIgo+ICAjaW5jbHVkZSAiYW1kZ3B1X2dkcy5oIgo+ICAj aW5jbHVkZSAiYW1kZ3B1X3N5bmMuaCIKPiAgI2luY2x1ZGUgImFtZGdwdV9yaW5nLmgiCj4gQEAg LTg5OSwyOSArOTAxLDM0IEBAIHN0cnVjdCBhbWRncHVfcmxjIHsKPiAgICAgICAgIHUzMiByZWdf bGlzdF9mb3JtYXRfc3RhcnQ7Cj4gICAgICAgICB1MzIgcmVnX2xpc3RfZm9ybWF0X3NlcGFyYXRl X3N0YXJ0Owo+ICAgICAgICAgdTMyIHN0YXJ0aW5nX29mZnNldHNfc3RhcnQ7Cj4gICAgICAgICB1 MzIgcmVnX2xpc3RfZm9ybWF0X3NpemVfYnl0ZXM7Cj4gICAgICAgICB1MzIgcmVnX2xpc3Rfc2l6 ZV9ieXRlczsKPgo+ICAgICAgICAgdTMyICpyZWdpc3Rlcl9saXN0X2Zvcm1hdDsKPiAgICAgICAg IHUzMiAqcmVnaXN0ZXJfcmVzdG9yZTsKPiAgfTsKPgo+ICsjZGVmaW5lIEFNREdQVV9NQVhfUVVF VUVTIEtHRF9NQVhfUVVFVUVTCgpDYW4gd2UgcmVuYW1lIHRoaXMgdG8gQU1ER1BVX01BWF9DT01Q VVRFX1FVRVVFUyBvciBiZXR0ZXIgeWV0LCB1bmlmeQppdCB3aXRoIEFNREdQVV9NQVhfQ09NUFVU RV9SSU5HUz8gIEkgZG9uJ3QgbGlrZSBoYXZpbmcgdHdvIGRlZmluZXMgZm9yCnRoZSBzYW1lIHRo aW5nLgoKPiArCj4gIHN0cnVjdCBhbWRncHVfbWVjIHsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVf Ym8gICAgICAgICpocGRfZW9wX29iajsKPiAgICAgICAgIHU2NCAgICAgICAgICAgICAgICAgICAg IGhwZF9lb3BfZ3B1X2FkZHI7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICAgICAgICAqbWVj X2Z3X29iajsKPiAgICAgICAgIHU2NCAgICAgICAgICAgICAgICAgICAgIG1lY19md19ncHVfYWRk cjsKPiAgICAgICAgIHUzMiBudW1fbWVjOwo+ICAgICAgICAgdTMyIG51bV9waXBlX3Blcl9tZWM7 Cj4gICAgICAgICB1MzIgbnVtX3F1ZXVlX3Blcl9waXBlOwo+ICAgICAgICAgdm9pZCAgICAgICAg ICAgICAgICAgICAgKm1xZF9iYWNrdXBbQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTICsgMV07Cj4g Kwo+ICsgICAgICAgLyogVGhlc2UgYXJlIHRoZSByZXNvdXJjZXMgZm9yIHdoaWNoIGFtZGdwdSB0 YWtlcyBvd25lcnNoaXAgKi8KPiArICAgICAgIERFQ0xBUkVfQklUTUFQKHF1ZXVlX2JpdG1hcCwg QU1ER1BVX01BWF9RVUVVRVMpOwo+ICB9Owo+Cj4gIHN0cnVjdCBhbWRncHVfa2lxIHsKPiAgICAg ICAgIHU2NCAgICAgICAgICAgICAgICAgICAgIGVvcF9ncHVfYWRkcjsKPiAgICAgICAgIHN0cnVj dCBhbWRncHVfYm8gICAgICAgICplb3Bfb2JqOwo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9yaW5n ICAgICAgcmluZzsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAgIGlycTsKPiAgfTsK Pgo+ICAvKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdf MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwo+IGluZGV4IDMzNDAw MTIuLjA1ODZmMWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4 X3Y3XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPiBA QCAtNDIsMjEgKzQyLDIwIEBACj4gICNpbmNsdWRlICJnY2EvZ2Z4XzdfMl9lbnVtLmgiCj4gICNp bmNsdWRlICJnY2EvZ2Z4XzdfMl9zaF9tYXNrLmgiCj4KPiAgI2luY2x1ZGUgImdtYy9nbWNfN18w X2QuaCIKPiAgI2luY2x1ZGUgImdtYy9nbWNfN18wX3NoX21hc2suaCIKPgo+ICAjaW5jbHVkZSAi b3NzL29zc18yXzBfZC5oIgo+ICAjaW5jbHVkZSAib3NzL29zc18yXzBfc2hfbWFzay5oIgo+Cj4g ICNkZWZpbmUgR0ZYN19OVU1fR0ZYX1JJTkdTICAgICAxCj4gLSNkZWZpbmUgR0ZYN19OVU1fQ09N UFVURV9SSU5HUyA4CgpDYW4gd2Uga2VlcCB0aGUgbG9jYWwgY29tcHV0ZSBxdWV1ZSBOVU0gZGVm aW5lcz8gIFRoaXMgd2F5IHdlIGNhbgpjaGFuZ2UgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIGdm eCB2ZXJzaW9uIHdpdGhvdXQgYWZmZWN0aW5nCmV2ZXJ5dGhpbmcuCgpBbGV4Cgo+ICAjZGVmaW5l IEdGWDdfTUVDX0hQRF9TSVpFICAgICAgMjA0OAo+Cj4KPiAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBf c2V0X3JpbmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+ICBzdGF0aWMgdm9p ZCBnZnhfdjdfMF9zZXRfaXJxX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKPiAg c3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0X2dkc19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KTsKPgo+ICBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9ib25haXJlX3BmcC5iaW4iKTsKPiAg TU9EVUxFX0ZJUk1XQVJFKCJyYWRlb24vYm9uYWlyZV9tZS5iaW4iKTsKPiAgTU9EVUxFX0ZJUk1X QVJFKCJyYWRlb24vYm9uYWlyZV9jZS5iaW4iKTsKPiBAQCAtMjgxNyw0NyArMjgxNiw3OSBAQCBz dGF0aWMgdm9pZCBnZnhfdjdfMF9tZWNfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK PiAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KHIgIT0gMCkpCj4gICAgICAgICAgICAgICAg ICAgICAgICAgZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSByZXNlcnZlIEhQRCBFT1AgYm8gZmFp bGVkXG4iLCByKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2JvX3VucGluKGFkZXYtPmdmeC5t ZWMuaHBkX2VvcF9vYmopOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfYm9fdW5yZXNlcnZlKGFk ZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwo+Cj4gICAgICAgICAgICAgICAgIGFtZGdwdV9ib191 bnJlZigmYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7Cj4gICAgICAgICAgICAgICAgIGFkZXYt PmdmeC5tZWMuaHBkX2VvcF9vYmogPSBOVUxMOwo+ICAgICAgICAgfQo+ICB9Cj4KPiArc3RhdGlj IHZvaWQgZ2Z4X3Y3XzBfY29tcHV0ZV9xdWV1ZV9hY3F1aXJlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQo+ICt7Cj4gKyAgICAgICBpbnQgaSwgcXVldWUsIHBpcGUsIG1lYzsKPiArCj4gKyAg ICAgICAvKiBwb2xpY3kgZm9yIGFtZGdwdSBjb21wdXRlIHF1ZXVlIG93bmVyc2hpcCAqLwo+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUVVFVUVTOyArK2kpIHsKPiArICAgICAg ICAgICAgICAgcXVldWUgPSBpICUgYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGU7Cj4g KyAgICAgICAgICAgICAgIHBpcGUgPSAoaSAvIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9w aXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICUgYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9w ZXJfbWVjOwo+ICsgICAgICAgICAgICAgICBtZWMgPSAoaSAvIGFkZXYtPmdmeC5tZWMubnVtX3F1 ZXVlX3Blcl9waXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8gYWRldi0+Z2Z4Lm1lYy5u dW1fcGlwZV9wZXJfbWVjOwo+ICsKPiArICAgICAgICAgICAgICAgLyogd2UndmUgcnVuIG91dCBv ZiBIVyAqLwo+ICsgICAgICAgICAgICAgICBpZiAobWVjID4gYWRldi0+Z2Z4Lm1lYy5udW1fbWVj KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICAgICAgICAg LyogcG9saWN5OiBhbWRncHUgb3ducyBhbGwgcXVldWVzIGluIHRoZSBmaXJzdCBwaXBlICovCj4g KyAgICAgICAgICAgICAgIGlmIChtZWMgPT0gMCAmJiBwaXBlID09IDApCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2V0X2JpdChpLCBhZGV2LT5nZngubWVjLnF1ZXVlX2JpdG1hcCk7Cj4gKyAg ICAgICB9Cj4gKwo+ICsgICAgICAgLyogdXBkYXRlIHRoZSBudW1iZXIgb2YgYWN0aXZlIGNvbXB1 dGUgcmluZ3MgKi8KPiArICAgICAgIGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyA9Cj4gKyAg ICAgICAgICAgICAgIGJpdG1hcF93ZWlnaHQoYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXAsIEFN REdQVV9NQVhfUVVFVUVTKTsKPiArCj4gKyAgICAgICAvKiBJZiB5b3UgaGl0IHRoaXMgY2FzZSBh bmQgZWRpdGVkIHRoZSBwb2xpY3ksIHlvdSBwcm9iYWJseSBqdXN0Cj4gKyAgICAgICAgKiBuZWVk IHRvIGluY3JlYXNlIEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUyAqLwo+ICsgICAgICAgV0FSTl9P TihhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3MgPiBBTURHUFVfTUFYX0NPTVBVVEVfUklOR1Mp Owo+ICsgICAgICAgaWYgKGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyA+IEFNREdQVV9NQVhf Q09NUFVURV9SSU5HUykKPiArICAgICAgICAgICAgICAgYWRldi0+Z2Z4Lm51bV9jb21wdXRlX3Jp bmdzID0gQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGdm eF92N18wX21lY19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICB7Cj4gICAgICAg ICBpbnQgcjsKPiAgICAgICAgIHUzMiAqaHBkOwo+ICAgICAgICAgc2l6ZV90IG1lY19ocGRfc2l6 ZTsKPgo+IC0gICAgICAgLyoKPiAtICAgICAgICAqIEtWOiAgICAyIE1FQywgNCBQaXBlcy9NRUMs IDggUXVldWVzL1BpcGUgLSA2NCBRdWV1ZXMgdG90YWwKPiAtICAgICAgICAqIENJL0tCOiAxIE1F QywgNCBQaXBlcy9NRUMsIDggUXVldWVzL1BpcGUgLSAzMiBRdWV1ZXMgdG90YWwKPiAtICAgICAg ICAqIE5vbmV0aGVsZXNzLCB3ZSBhc3NpZ24gb25seSAxIHBpcGUgYmVjYXVzZSBhbGwgb3RoZXIg cGlwZXMgd2lsbAo+IC0gICAgICAgICogYmUgaGFuZGxlZCBieSBLRkQKPiAtICAgICAgICAqLwo+ ICsgICAgICAgYml0bWFwX3plcm8oYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXAsIEFNREdQVV9N QVhfUVVFVUVTKTsKPiArCj4gICAgICAgICBzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgewo+ICAg ICAgICAgY2FzZSBDSElQX0tBVkVSSToKPiAgICAgICAgICAgICAgICAgYWRldi0+Z2Z4Lm1lYy5u dW1fbWVjID0gMjsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICBjYXNlIENISVBf Qk9OQUlSRToKPiAgICAgICAgIGNhc2UgQ0hJUF9IQVdBSUk6Cj4gICAgICAgICBjYXNlIENISVBf S0FCSU5JOgo+ICAgICAgICAgY2FzZSBDSElQX01VTExJTlM6Cj4gICAgICAgICBkZWZhdWx0Ogo+ ICAgICAgICAgICAgICAgICBhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOwo+ICAgICAgICAgICAg ICAgICBicmVhazsKPiAgICAgICAgIH0KPiAgICAgICAgIGFkZXYtPmdmeC5tZWMubnVtX3BpcGVf cGVyX21lYyA9IDQ7Cj4gICAgICAgICBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSA9 IDg7Cj4KPiArICAgICAgIC8qIHRha2Ugb3duZXJzaGlwIG9mIHRoZSByZWxldmFudCBjb21wdXRl IHF1ZXVlcyAqLwo+ICsgICAgICAgZ2Z4X3Y3XzBfY29tcHV0ZV9xdWV1ZV9hY3F1aXJlKGFkZXYp Owo+ICsKPiArICAgICAgIC8qIGFsbG9jYXRlIHNwYWNlIGZvciBBTEwgcGlwZXMgKGV2ZW4gdGhl IG9uZXMgd2UgZG9uJ3Qgb3duKSAqLwo+ICAgICAgICAgbWVjX2hwZF9zaXplID0gYWRldi0+Z2Z4 Lm1lYy5udW1fbWVjICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVjCj4gICAgICAgICAg ICAgICAgICogR0ZYN19NRUNfSFBEX1NJWkUgKiAyOwo+ICAgICAgICAgaWYgKGFkZXYtPmdmeC5t ZWMuaHBkX2VvcF9vYmogPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICByID0gYW1kZ3B1X2Jv X2NyZWF0ZShhZGV2LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNf aHBkX3NpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfU0la RSwgdHJ1ZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1ER1BVX0dF TV9ET01BSU5fR1RULCAwLCBOVUxMLCBOVUxMLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7Cj4gICAgICAgICAgICAgICAg IGlmIChyKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oYWRldi0+ZGV2LCAi KCVkKSBjcmVhdGUgSERQIEVPUCBibyBmYWlsZWRcbiIsIHIpOwo+IEBAIC00NTIyLDIxICs0NTUz LDIxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2dmeF9mdW5jcyBnZnhfdjdfMF9nZnhf ZnVuY3MgPSB7Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3JsY19mdW5jcyBnZnhfdjdf MF9ybGNfZnVuY3MgPSB7Cj4gICAgICAgICAuZW50ZXJfc2FmZV9tb2RlID0gZ2Z4X3Y3XzBfZW50 ZXJfcmxjX3NhZmVfbW9kZSwKPiAgICAgICAgIC5leGl0X3NhZmVfbW9kZSA9IGdmeF92N18wX2V4 aXRfcmxjX3NhZmVfbW9kZQo+ICB9Owo+Cj4gIHN0YXRpYyBpbnQgZ2Z4X3Y3XzBfZWFybHlfaW5p dCh2b2lkICpoYW5kbGUpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+Cj4gICAgICAgICBhZGV2LT5nZngu bnVtX2dmeF9yaW5ncyA9IEdGWDdfTlVNX0dGWF9SSU5HUzsKPiAtICAgICAgIGFkZXYtPmdmeC5u dW1fY29tcHV0ZV9yaW5ncyA9IEdGWDdfTlVNX0NPTVBVVEVfUklOR1M7Cj4gKyAgICAgICBhZGV2 LT5nZngubnVtX2NvbXB1dGVfcmluZ3MgPSBBTURHUFVfTUFYX0NPTVBVVEVfUklOR1M7Cj4gICAg ICAgICBhZGV2LT5nZnguZnVuY3MgPSAmZ2Z4X3Y3XzBfZ2Z4X2Z1bmNzOwo+ICAgICAgICAgYWRl di0+Z2Z4LnJsYy5mdW5jcyA9ICZnZnhfdjdfMF9ybGNfZnVuY3M7Cj4gICAgICAgICBnZnhfdjdf MF9zZXRfcmluZ19mdW5jcyhhZGV2KTsKPiAgICAgICAgIGdmeF92N18wX3NldF9pcnFfZnVuY3Mo YWRldik7Cj4gICAgICAgICBnZnhfdjdfMF9zZXRfZ2RzX2luaXQoYWRldik7Cj4KPiAgICAgICAg IHJldHVybiAwOwo+ICB9Cj4KPiAgc3RhdGljIGludCBnZnhfdjdfMF9sYXRlX2luaXQodm9pZCAq aGFuZGxlKQo+IEBAIC00NzE4LDIxICs0NzQ5LDIxIEBAIHN0YXRpYyB2b2lkIGdmeF92N18wX2dw dV9lYXJseV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgICAgICAgICAgICAg ICBnYl9hZGRyX2NvbmZpZyB8PSAoMiA8PCBHQl9BRERSX0NPTkZJR19fUk9XX1NJWkVfX1NISUZU KTsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICB9Cj4gICAgICAgICBhZGV2LT5n ZnguY29uZmlnLmdiX2FkZHJfY29uZmlnID0gZ2JfYWRkcl9jb25maWc7Cj4gIH0KPgo+ICBzdGF0 aWMgaW50IGdmeF92N18wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmc7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPiAtICAgICAgIGludCBpLCByOwo+ ICsgICAgICAgaW50IGksIHIsIHJpbmdfaWQ7Cj4KPiAgICAgICAgIC8qIEVPUCBFdmVudCAqLwo+ ICAgICAgICAgciA9IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIEFNREdQVV9JSF9DTElFTlRJRF9M RUdBQ1ksIDE4MSwgJmFkZXYtPmdmeC5lb3BfaXJxKTsKPiAgICAgICAgIGlmIChyKQo+ICAgICAg ICAgICAgICAgICByZXR1cm4gcjsKPgo+ICAgICAgICAgLyogUHJpdmlsZWdlZCByZWcgKi8KPiAg ICAgICAgIHIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBBTURHUFVfSUhfQ0xJRU5USURfTEVH QUNZLCAxODQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZXYtPmdmeC5wcml2 X3JlZ19pcnEpOwo+ICAgICAgICAgaWYgKHIpCj4gQEAgLTQ3NjksNDIgKzQ4MDAsNTIgQEAgc3Rh dGljIGludCBnZnhfdjdfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPiAgICAgICAgICAgICAgICAg cmluZyA9ICZhZGV2LT5nZnguZ2Z4X3JpbmdbaV07Cj4gICAgICAgICAgICAgICAgIHJpbmctPnJp bmdfb2JqID0gTlVMTDsKPiAgICAgICAgICAgICAgICAgc3ByaW50ZihyaW5nLT5uYW1lLCAiZ2Z4 Iik7Cj4gICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYsIHJpbmcsIDEw MjQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGV2LT5nZnguZW9w X2lycSwgQU1ER1BVX0NQX0lSUV9HRlhfRU9QKTsKPiAgICAgICAgICAgICAgICAgaWYgKHIpCj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4gICAgICAgICB9Cj4KPiAgICAgICAg IC8qIHNldCB1cCB0aGUgY29tcHV0ZSBxdWV1ZXMgKi8KPiAtICAgICAgIGZvciAoaSA9IDA7IGkg PCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7IGkrKykgewo+ICsgICAgICAgZm9yIChpID0g MCwgcmluZ19pZCA9IDA7IGkgPCBBTURHUFVfTUFYX1FVRVVFUzsgaSsrKSB7Cj4gICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGlycV90eXBlOwo+Cj4gLSAgICAgICAgICAgICAgIC8qIG1heCAzMiBx dWV1ZXMgcGVyIE1FQyAqLwo+IC0gICAgICAgICAgICAgICBpZiAoKGkgPj0gMzIpIHx8IChpID49 IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUykpIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBE Uk1fRVJST1IoIlRvbyBtYW55ICglZCkgY29tcHV0ZSByaW5ncyFcbiIsIGkpOwo+IC0gICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAg ICAgIHJpbmcgPSAmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXTsKPiArICAgICAgICAgICAgICAg aWYgKCF0ZXN0X2JpdChpLCBhZGV2LT5nZngubWVjLnF1ZXVlX2JpdG1hcCkpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICByaW5nID0gJmFk ZXYtPmdmeC5jb21wdXRlX3JpbmdbcmluZ19pZF07Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBt ZWMwIGlzIG1lMSAqLwo+ICsgICAgICAgICAgICAgICByaW5nLT5tZSA9ICgoaSAvIGFkZXYtPmdm eC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArIDE7Cj4gKyAgICAgICAgICAgICAgIHJpbmctPnBpcGUgPSAoaSAvIGFk ZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJSBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWM7Cj4gKyAgICAgICAgICAg ICAgIHJpbmctPnF1ZXVlID0gaSAlIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlOwo+ ICsKPiAgICAgICAgICAgICAgICAgcmluZy0+cmluZ19vYmogPSBOVUxMOwo+ICAgICAgICAgICAg ICAgICByaW5nLT51c2VfZG9vcmJlbGwgPSB0cnVlOwo+IC0gICAgICAgICAgICAgICByaW5nLT5k b29yYmVsbF9pbmRleCA9IEFNREdQVV9ET09SQkVMTF9NRUNfUklORzAgKyBpOwo+IC0gICAgICAg ICAgICAgICByaW5nLT5tZSA9IDE7IC8qIGZpcnN0IE1FQyAqLwo+IC0gICAgICAgICAgICAgICBy aW5nLT5waXBlID0gaSAvIDg7Cj4gLSAgICAgICAgICAgICAgIHJpbmctPnF1ZXVlID0gaSAlIDg7 Cj4gKyAgICAgICAgICAgICAgIHJpbmctPmRvb3JiZWxsX2luZGV4ID0gQU1ER1BVX0RPT1JCRUxM X01FQ19SSU5HMCArIHJpbmdfaWQ7Cj4gICAgICAgICAgICAgICAgIHNwcmludGYocmluZy0+bmFt ZSwgImNvbXBfJWQuJWQuJWQiLCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUpOwo+ IC0gICAgICAgICAgICAgICBpcnFfdHlwZSA9IEFNREdQVV9DUF9JUlFfQ09NUFVURV9NRUMxX1BJ UEUwX0VPUCArIHJpbmctPnBpcGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpcnFfdHlwZSA9IEFN REdQVV9DUF9JUlFfQ09NUFVURV9NRUMxX1BJUEUwX0VPUAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICsgKChyaW5nLT5tZSAtIDEpICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVjKQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICsgcmluZy0+cGlwZTsKPiArCj4gICAgICAgICAgICAg ICAgIC8qIHR5cGUtMiBwYWNrZXRzIGFyZSBkZXByZWNhdGVkIG9uIE1FQywgdXNlIHR5cGUtMyBp bnN0ZWFkICovCj4gICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYsIHJp bmcsIDEwMjQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGV2LT5n ZnguZW9wX2lycSwgaXJxX3R5cGUpOwo+ICAgICAgICAgICAgICAgICBpZiAocikKPiAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPiArCj4gKyAgICAgICAgICAgICAgIHJpbmdfaWQr KzsKPiAgICAgICAgIH0KPgo+ICAgICAgICAgLyogcmVzZXJ2ZSBHRFMsIEdXUyBhbmQgT0EgcmVz b3VyY2UgZm9yIGdmeCAqLwo+ICAgICAgICAgciA9IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFk ZXYsIGFkZXYtPmdkcy5tZW0uZ2Z4X3BhcnRpdGlvbl9zaXplLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBBR0VfU0laRSwgQU1ER1BVX0dFTV9ET01BSU5fR0RTLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGV2LT5nZHMuZ2RzX2dmeF9ibywg TlVMTCwgTlVMTCk7Cj4gICAgICAgICBpZiAocikKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHI7 Cj4KPiAgICAgICAgIHIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LCBhZGV2LT5nZHMu Z3dzLmdmeF9wYXJ0aXRpb25fc2l6ZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3Y4XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8w LmMKPiBpbmRleCA4NmNkY2I4Li4xNzc5OTJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjhfMC5jCj4gQEAgLTQ1LDIxICs0NSwyMCBAQAo+ICAjaW5jbHVkZSAiZ2NhL2dmeF84 XzBfZW51bS5oIgo+ICAjaW5jbHVkZSAiZ2NhL2dmeF84XzBfc2hfbWFzay5oIgo+ICAjaW5jbHVk ZSAiZ2NhL2dmeF84XzBfZW51bS5oIgo+Cj4gICNpbmNsdWRlICJkY2UvZGNlXzEwXzBfZC5oIgo+ ICAjaW5jbHVkZSAiZGNlL2RjZV8xMF8wX3NoX21hc2suaCIKPgo+ICAjaW5jbHVkZSAic211L3Nt dV83XzFfM19kLmgiCj4KPiAgI2RlZmluZSBHRlg4X05VTV9HRlhfUklOR1MgICAgIDEKPiAtI2Rl ZmluZSBHRlg4X05VTV9DT01QVVRFX1JJTkdTIDgKPiAgI2RlZmluZSBHRlg4X01FQ19IUERfU0la RSAyMDQ4Cj4KPgo+ICAjZGVmaW5lIFRPUEFaX0dCX0FERFJfQ09ORklHX0dPTERFTiAweDIyMDEw MDAxCj4gICNkZWZpbmUgQ0FSUklaT19HQl9BRERSX0NPTkZJR19HT0xERU4gMHgyMjAxMDAwMQo+ ICAjZGVmaW5lIFBPTEFSSVMxMV9HQl9BRERSX0NPTkZJR19HT0xERU4gMHgyMjAxMTAwMgo+ICAj ZGVmaW5lIFRPTkdBX0dCX0FERFJfQ09ORklHX0dPTERFTiAweDIyMDExMDAzCj4KPiAgI2RlZmlu ZSBBUlJBWV9NT0RFKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoeCkgPDwg R0JfVElMRV9NT0RFMF9fQVJSQVlfTU9ERV9fU0hJRlQpCj4gICNkZWZpbmUgUElQRV9DT05GSUco eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHgpIDw8IEdCX1RJTEVfTU9ERTBf X1BJUEVfQ09ORklHX19TSElGVCkKPiBAQCAtMTQxMCw0NyArMTQwOSw4MiBAQCBzdGF0aWMgaW50 IGdmeF92OF8wX2tpcV9pbml0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gIH0K PiAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfa2lxX2ZyZWVfcmluZyhzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X2lycV9zcmMgKmlycSkKPiAgewo+ICAgICAgICAgYW1kZ3B1X3diX2ZyZWUocmluZy0+YWRldiwg cmluZy0+YWRldi0+dmlydC5yZWdfdmFsX29mZnMpOwo+ICAgICAgICAgYW1kZ3B1X3JpbmdfZmlu aShyaW5nKTsKPiAgfQo+Cj4gICNkZWZpbmUgR0ZYOF9NRUNfSFBEX1NJWkUgMjA0OAo+Cj4gK3N0 YXRpYyB2b2lkIGdmeF92OF8wX2NvbXB1dGVfcXVldWVfYWNxdWlyZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKPiArewo+ICsgICAgICAgaW50IGksIHF1ZXVlLCBwaXBlLCBtZWM7Cj4gKwo+ ICsgICAgICAgLyogcG9saWN5IGZvciBhbWRncHUgY29tcHV0ZSBxdWV1ZSBvd25lcnNoaXAgKi8K PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1FVRVVFUzsgKytpKSB7Cj4gKyAg ICAgICAgICAgICAgIHF1ZXVlID0gaSAlIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBl Owo+ICsgICAgICAgICAgICAgICBwaXBlID0gKGkgLyBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9w ZXJfcGlwZSkKPiArICAgICAgICAgICAgICAgICAgICAgICAlIGFkZXYtPmdmeC5tZWMubnVtX3Bp cGVfcGVyX21lYzsKPiArICAgICAgICAgICAgICAgbWVjID0gKGkgLyBhZGV2LT5nZngubWVjLm51 bV9xdWV1ZV9wZXJfcGlwZSkKPiArICAgICAgICAgICAgICAgICAgICAgICAvIGFkZXYtPmdmeC5t ZWMubnVtX3BpcGVfcGVyX21lYzsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIHdlJ3ZlIHJ1biBv dXQgb2YgSFcgKi8KPiArICAgICAgICAgICAgICAgaWYgKG1lYyA+IGFkZXYtPmdmeC5tZWMubnVt X21lYykKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAg ICAgIC8qIHBvbGljeTogYW1kZ3B1IG93bnMgYWxsIHF1ZXVlcyBpbiB0aGUgZmlyc3QgcGlwZSAq Lwo+ICsgICAgICAgICAgICAgICBpZiAobWVjID09IDAgJiYgcGlwZSA9PSAwKQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHNldF9iaXQoaSwgYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXApOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBj b21wdXRlIHJpbmdzICovCj4gKyAgICAgICBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3MgPQo+ ICsgICAgICAgICAgICAgICBiaXRtYXBfd2VpZ2h0KGFkZXYtPmdmeC5tZWMucXVldWVfYml0bWFw LCBBTURHUFVfTUFYX1FVRVVFUyk7Cj4gKwo+ICsgICAgICAgLyogSWYgeW91IGhpdCB0aGlzIGNh c2UgYW5kIGVkaXRlZCB0aGUgcG9saWN5LCB5b3UgcHJvYmFibHkganVzdAo+ICsgICAgICAgICog bmVlZCB0byBpbmNyZWFzZSBBTURHUFVfTUFYX0NPTVBVVEVfUklOR1MgKi8KPiArICAgICAgIGlm IChXQVJOX09OKGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyA+IEFNREdQVV9NQVhfQ09NUFVU RV9SSU5HUykpCj4gKyAgICAgICAgICAgICAgIGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyA9 IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUzsKPiArfQo+ICsKPiAgc3RhdGljIGludCBnZnhfdjhf MF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgewo+ICAgICAgICAgaW50 IHI7Cj4gICAgICAgICB1MzIgKmhwZDsKPiAgICAgICAgIHNpemVfdCBtZWNfaHBkX3NpemU7Cj4K PiArICAgICAgIGJpdG1hcF96ZXJvKGFkZXYtPmdmeC5tZWMucXVldWVfYml0bWFwLCBBTURHUFVf TUFYX1FVRVVFUyk7Cj4gKwo+ICAgICAgICAgc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsKPiAg ICAgICAgIGNhc2UgQ0hJUF9GSUpJOgo+ICAgICAgICAgY2FzZSBDSElQX1RPTkdBOgo+ICAgICAg ICAgY2FzZSBDSElQX1BPTEFSSVMxMToKPiAgICAgICAgIGNhc2UgQ0hJUF9QT0xBUklTMTI6Cj4g ICAgICAgICBjYXNlIENISVBfUE9MQVJJUzEwOgo+ICAgICAgICAgY2FzZSBDSElQX0NBUlJJWk86 Cj4gICAgICAgICAgICAgICAgIGFkZXYtPmdmeC5tZWMubnVtX21lYyA9IDI7Cj4gICAgICAgICAg ICAgICAgIGJyZWFrOwo+ICAgICAgICAgY2FzZSBDSElQX1RPUEFaOgo+ICAgICAgICAgY2FzZSBD SElQX1NUT05FWToKPiAgICAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgICAgICAgIGFkZXYtPmdm eC5tZWMubnVtX21lYyA9IDE7Cj4gICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgfQo+ Cj4gICAgICAgICBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMgPSA0Owo+ICAgICAgICAg YWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGUgPSA4Owo+Cj4gLSAgICAgICAvKiBvbmx5 IDEgcGlwZSBvZiB0aGUgZmlyc3QgTUVDIGlzIG93bmVkIGJ5IGFtZGdwdSAqLwo+IC0gICAgICAg bWVjX2hwZF9zaXplID0gMSAqIDEgKiBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSAq IEdGWDhfTUVDX0hQRF9TSVpFOwo+ICsgICAgICAgLyogdGFrZSBvd25lcnNoaXAgb2YgdGhlIHJl bGV2YW50IGNvbXB1dGUgcXVldWVzICovCj4gKyAgICAgICBnZnhfdjhfMF9jb21wdXRlX3F1ZXVl X2FjcXVpcmUoYWRldik7Cj4gKwo+ICsgICAgICAgbWVjX2hwZF9zaXplID0gYWRldi0+Z2Z4Lm51 bV9jb21wdXRlX3JpbmdzICogR0ZYOF9NRUNfSFBEX1NJWkU7Cj4KPiAgICAgICAgIGlmIChhZGV2 LT5nZngubWVjLmhwZF9lb3Bfb2JqID09IE5VTEwpIHsKPiAgICAgICAgICAgICAgICAgciA9IGFt ZGdwdV9ib19jcmVhdGUoYWRldiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWVjX2hwZF9zaXplLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ QUdFX1NJWkUsIHRydWUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFN REdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwgTlVMTCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwo+ICAgICAgICAg ICAgICAgICBpZiAocikgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKGFkZXYt PmRldiwgIiglZCkgY3JlYXRlIEhEUCBFT1AgYm8gZmFpbGVkXG4iLCByKTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcjsKPiBAQCAtMjA4MywyMSArMjExNywyMSBAQCBzdGF0aWMg aW50IGdmeF92OF8wX2dwdV9lYXJseV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgICAgICAgICAgICAgICBnYl9hZGRyX2NvbmZpZyA9IFJFR19TRVRfRklFTEQoZ2JfYWRkcl9j b25maWcsIEdCX0FERFJfQ09ORklHLCBST1dfU0laRSwgMik7Cj4gICAgICAgICAgICAgICAgIGJy ZWFrOwo+ICAgICAgICAgfQo+ICAgICAgICAgYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZp ZyA9IGdiX2FkZHJfY29uZmlnOwo+Cj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gIHN0YXRp YyBpbnQgZ2Z4X3Y4XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4gIHsKPiAtICAgICAgIGludCBp LCByOwo+ICsgICAgICAgaW50IGksIHIsIHJpbmdfaWQ7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmc7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxOwo+ICAgICAgICAg c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5k bGU7Cj4KPiAgICAgICAgIC8qIEtJUSBldmVudCAqLwo+ICAgICAgICAgciA9IGFtZGdwdV9pcnFf YWRkX2lkKGFkZXYsIEFNREdQVV9JSF9DTElFTlRJRF9MRUdBQ1ksIDE3OCwgJmFkZXYtPmdmeC5r aXEuaXJxKTsKPiAgICAgICAgIGlmIChyKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPgo+ ICAgICAgICAgLyogRU9QIEV2ZW50ICovCj4gQEAgLTIxNTAsNDMgKzIxODQsNTYgQEAgc3RhdGlj IGludCBnZnhfdjhfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPiAgICAgICAgICAgICAgICAgICAg ICAgICByaW5nLT5kb29yYmVsbF9pbmRleCA9IEFNREdQVV9ET09SQkVMTF9HRlhfUklORzA7Cj4g ICAgICAgICAgICAgICAgIH0KPgo+ICAgICAgICAgICAgICAgICByID0gYW1kZ3B1X3JpbmdfaW5p dChhZGV2LCByaW5nLCAxMDI0LCAmYWRldi0+Z2Z4LmVvcF9pcnEsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFNREdQVV9DUF9JUlFfR0ZYX0VPUCk7Cj4gICAgICAgICAg ICAgICAgIGlmIChyKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+ICAgICAg ICAgfQo+Cj4gICAgICAgICAvKiBzZXQgdXAgdGhlIGNvbXB1dGUgcXVldWVzICovCj4gLSAgICAg ICBmb3IgKGkgPSAwOyBpIDwgYWRldi0+Z2Z4Lm51bV9jb21wdXRlX3JpbmdzOyBpKyspIHsKPiAr ICAgICAgIGZvciAoaSA9IDAsIHJpbmdfaWQgPSAwOyBpIDwgQU1ER1BVX01BWF9RVUVVRVM7IGkr Kykgewo+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpcnFfdHlwZTsKPgo+IC0gICAgICAgICAg ICAgICAvKiBtYXggMzIgcXVldWVzIHBlciBNRUMgKi8KPiAtICAgICAgICAgICAgICAgaWYgKChp ID49IDMyKSB8fCAoaSA+PSBBTURHUFVfTUFYX0NPTVBVVEVfUklOR1MpKSB7Cj4gLSAgICAgICAg ICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJUb28gbWFueSAoJWQpIGNvbXB1dGUgcmluZ3MhXG4i LCBpKTsKPiArICAgICAgICAgICAgICAgaWYgKCF0ZXN0X2JpdChpLCBhZGV2LT5nZngubWVjLnF1 ZXVlX2JpdG1hcCkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsg ICAgICAgICAgICAgICBpZiAoV0FSTl9PTihyaW5nX2lkID49IEFNREdQVV9NQVhfQ09NUFVURV9S SU5HUykpCj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICAgICAgICAg IH0KPiAtICAgICAgICAgICAgICAgcmluZyA9ICZhZGV2LT5nZnguY29tcHV0ZV9yaW5nW2ldOwo+ ICsKPiArICAgICAgICAgICAgICAgcmluZyA9ICZhZGV2LT5nZnguY29tcHV0ZV9yaW5nW3Jpbmdf aWRdOwo+ICsKPiArICAgICAgICAgICAgICAgLyogbWVjMCBpcyBtZTEgKi8KPiArICAgICAgICAg ICAgICAgcmluZy0+bWUgPSAoKGkgLyBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSkK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gYWRldi0+Z2Z4Lm1lYy5udW1fcGlw ZV9wZXJfbWVjKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxOwo+ICsgICAg ICAgICAgICAgICByaW5nLT5waXBlID0gKGkgLyBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJf cGlwZSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRldi0+Z2Z4Lm1lYy5u dW1fcGlwZV9wZXJfbWVjOwo+ICsgICAgICAgICAgICAgICByaW5nLT5xdWV1ZSA9IGkgJSBhZGV2 LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZTsKPiArCj4gICAgICAgICAgICAgICAgIHJpbmct PnJpbmdfb2JqID0gTlVMTDsKPiAgICAgICAgICAgICAgICAgcmluZy0+dXNlX2Rvb3JiZWxsID0g dHJ1ZTsKPiAtICAgICAgICAgICAgICAgcmluZy0+ZG9vcmJlbGxfaW5kZXggPSBBTURHUFVfRE9P UkJFTExfTUVDX1JJTkcwICsgaTsKPiAtICAgICAgICAgICAgICAgcmluZy0+bWUgPSAxOyAvKiBm aXJzdCBNRUMgKi8KPiAtICAgICAgICAgICAgICAgcmluZy0+cGlwZSA9IGkgLyA4Owo+IC0gICAg ICAgICAgICAgICByaW5nLT5xdWV1ZSA9IGkgJSA4Owo+IC0gICAgICAgICAgICAgICByaW5nLT5l b3BfZ3B1X2FkZHIgPSBhZGV2LT5nZngubWVjLmhwZF9lb3BfZ3B1X2FkZHIgKyAoaSAqIEdGWDhf TUVDX0hQRF9TSVpFKTsKPiArICAgICAgICAgICAgICAgcmluZy0+ZW9wX2dwdV9hZGRyID0gYWRl di0+Z2Z4Lm1lYy5ocGRfZW9wX2dwdV9hZGRyICsgKHJpbmdfaWQgKiBHRlg4X01FQ19IUERfU0la RSk7Cj4gKyAgICAgICAgICAgICAgIHJpbmctPmRvb3JiZWxsX2luZGV4ID0gQU1ER1BVX0RPT1JC RUxMX01FQ19SSU5HMCArIHJpbmdfaWQ7Cj4gICAgICAgICAgICAgICAgIHNwcmludGYocmluZy0+ bmFtZSwgImNvbXBfJWQuJWQuJWQiLCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUp Owo+IC0gICAgICAgICAgICAgICBpcnFfdHlwZSA9IEFNREdQVV9DUF9JUlFfQ09NUFVURV9NRUMx X1BJUEUwX0VPUCArIHJpbmctPnBpcGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpcnFfdHlwZSA9 IEFNREdQVV9DUF9JUlFfQ09NUFVURV9NRUMxX1BJUEUwX0VPUAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICsgKChyaW5nLT5tZSAtIDEpICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVj KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICsgcmluZy0+cGlwZTsKPiArCj4gICAgICAgICAg ICAgICAgIC8qIHR5cGUtMiBwYWNrZXRzIGFyZSBkZXByZWNhdGVkIG9uIE1FQywgdXNlIHR5cGUt MyBpbnN0ZWFkICovCj4gICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYs IHJpbmcsIDEwMjQsICZhZGV2LT5nZnguZW9wX2lycSwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXJxX3R5cGUpOwo+ICAgICAgICAgICAgICAgICBpZiAocikKPiAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPiArCj4gKyAgICAgICAgICAgICAgIHJpbmdf aWQrKzsKPiAgICAgICAgIH0KPgo+ICAgICAgICAgciA9IGdmeF92OF8wX2tpcV9pbml0KGFkZXYp Owo+ICAgICAgICAgaWYgKHIpIHsKPiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQg dG8gaW5pdCBLSVEgQk9zIVxuIik7Cj4gICAgICAgICAgICAgICAgIHJldHVybiByOwo+ICAgICAg ICAgfQo+Cj4gICAgICAgICBraXEgPSAmYWRldi0+Z2Z4LmtpcTsKPiAgICAgICAgIHIgPSBnZnhf djhfMF9raXFfaW5pdF9yaW5nKGFkZXYsICZraXEtPnJpbmcsICZraXEtPmlycSk7Cj4gQEAgLTU2 ODYsMjEgKzU3MzMsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfZ2Z4X2Z1bmNzIGdm eF92OF8wX2dmeF9mdW5jcyA9IHsKPiAgICAgICAgIC5zZWxlY3Rfc2Vfc2ggPSAmZ2Z4X3Y4XzBf c2VsZWN0X3NlX3NoLAo+ICAgICAgICAgLnJlYWRfd2F2ZV9kYXRhID0gJmdmeF92OF8wX3JlYWRf d2F2ZV9kYXRhLAo+ICAgICAgICAgLnJlYWRfd2F2ZV9zZ3BycyA9ICZnZnhfdjhfMF9yZWFkX3dh dmVfc2dwcnMsCj4gIH07Cj4KPiAgc3RhdGljIGludCBnZnhfdjhfMF9lYXJseV9pbml0KHZvaWQg KmhhbmRsZSkKPiAgewo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4KPiAgICAgICAgIGFkZXYtPmdmeC5udW1fZ2Z4 X3JpbmdzID0gR0ZYOF9OVU1fR0ZYX1JJTkdTOwo+IC0gICAgICAgYWRldi0+Z2Z4Lm51bV9jb21w dXRlX3JpbmdzID0gR0ZYOF9OVU1fQ09NUFVURV9SSU5HUzsKPiArICAgICAgIGFkZXYtPmdmeC5u dW1fY29tcHV0ZV9yaW5ncyA9IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUzsKPiAgICAgICAgIGFk ZXYtPmdmeC5mdW5jcyA9ICZnZnhfdjhfMF9nZnhfZnVuY3M7Cj4gICAgICAgICBnZnhfdjhfMF9z ZXRfcmluZ19mdW5jcyhhZGV2KTsKPiAgICAgICAgIGdmeF92OF8wX3NldF9pcnFfZnVuY3MoYWRl dik7Cj4gICAgICAgICBnZnhfdjhfMF9zZXRfZ2RzX2luaXQoYWRldik7Cj4gICAgICAgICBnZnhf djhfMF9zZXRfcmxjX2Z1bmNzKGFkZXYpOwo+Cj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4g IHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfbGF0ZV9pbml0KHZvaWQgKmhhbmRsZSkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKPiBpbmRleCAxYTdiNzQzLi5kZTZlNTM3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCj4gQEAgLTMxLDIxICszMSwyMCBAQAo+ ICAjaW5jbHVkZSAidmVnYTEwL0dDL2djXzlfMF9vZmZzZXQuaCIKPiAgI2luY2x1ZGUgInZlZ2Ex MC9HQy9nY185XzBfc2hfbWFzay5oIgo+ICAjaW5jbHVkZSAidmVnYTEwL3ZlZ2ExMF9lbnVtLmgi Cj4gICNpbmNsdWRlICJ2ZWdhMTAvSERQL2hkcF80XzBfb2Zmc2V0LmgiCj4KPiAgI2luY2x1ZGUg InNvYzE1X2NvbW1vbi5oIgo+ICAjaW5jbHVkZSAiY2xlYXJzdGF0ZV9nZng5LmgiCj4gICNpbmNs dWRlICJ2OV9zdHJ1Y3RzLmgiCj4KPiAgI2RlZmluZSBHRlg5X05VTV9HRlhfUklOR1MgICAgIDEK PiAtI2RlZmluZSBHRlg5X05VTV9DT01QVVRFX1JJTkdTIDgKPiAgI2RlZmluZSBHRlg5X05VTV9T RSAgICAgICAgICAgIDQKPiAgI2RlZmluZSBSTENHX1VDT0RFX0xPQURJTkdfU1RBUlRfQUREUkVT UyAweDIwMDAKPgo+ICBNT0RVTEVfRklSTVdBUkUoImFtZGdwdS92ZWdhMTBfY2UuYmluIik7Cj4g IE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9wZnAuYmluIik7Cj4gIE1PRFVMRV9GSVJN V0FSRSgiYW1kZ3B1L3ZlZ2ExMF9tZS5iaW4iKTsKPiAgTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUv dmVnYTEwX21lYy5iaW4iKTsKPiAgTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUvdmVnYTEwX21lYzIu YmluIik7Cj4gIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9ybGMuYmluIik7Cj4KPiBA QCAtNDY5LDQ1ICs0NjgsNzkgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y5XzBfbWVjX2Zpbmkoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAgICAgICAgICAgICAgIGFtZGdwdV9ib191bnBpbihh ZGV2LT5nZngubWVjLm1lY19md19vYmopOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfYm9fdW5y ZXNlcnZlKGFkZXYtPmdmeC5tZWMubWVjX2Z3X29iaik7Cj4KPiAgICAgICAgICAgICAgICAgYW1k Z3B1X2JvX3VucmVmKCZhZGV2LT5nZngubWVjLm1lY19md19vYmopOwo+ICAgICAgICAgICAgICAg ICBhZGV2LT5nZngubWVjLm1lY19md19vYmogPSBOVUxMOwo+ICAgICAgICAgfQo+ICB9Cj4KPiAg I2RlZmluZSBNRUNfSFBEX1NJWkUgMjA0OAo+Cj4gK3N0YXRpYyB2b2lkIGdmeF92OV8wX2NvbXB1 dGVfcXVldWVfYWNxdWlyZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArewo+ICsgICAg ICAgaW50IGksIHF1ZXVlLCBwaXBlLCBtZWM7Cj4gKwo+ICsgICAgICAgLyogcG9saWN5IGZvciBh bWRncHUgY29tcHV0ZSBxdWV1ZSBvd25lcnNoaXAgKi8KPiArICAgICAgIGZvciAoaSA9IDA7IGkg PCBBTURHUFVfTUFYX1FVRVVFUzsgKytpKSB7Cj4gKyAgICAgICAgICAgICAgIHF1ZXVlID0gaSAl IGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlOwo+ICsgICAgICAgICAgICAgICBwaXBl ID0gKGkgLyBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSkKPiArICAgICAgICAgICAg ICAgICAgICAgICAlIGFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYzsKPiArICAgICAgICAg ICAgICAgbWVjID0gKGkgLyBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZSkKPiArICAg ICAgICAgICAgICAgICAgICAgICAvIGFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYzsKPiAr Cj4gKyAgICAgICAgICAgICAgIC8qIHdlJ3ZlIHJ1biBvdXQgb2YgSFcgKi8KPiArICAgICAgICAg ICAgICAgaWYgKG1lYyA+IGFkZXYtPmdmeC5tZWMubnVtX21lYykKPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIHBvbGljeTogYW1kZ3B1IG93 bnMgYWxsIHF1ZXVlcyBpbiB0aGUgZmlyc3QgcGlwZSAqLwo+ICsgICAgICAgICAgICAgICBpZiAo bWVjID09IDAgJiYgcGlwZSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNldF9iaXQo aSwgYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg IC8qIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjb21wdXRlIHJpbmdzICovCj4gKyAgICAg ICBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3MgPQo+ICsgICAgICAgICAgICAgICBiaXRtYXBf d2VpZ2h0KGFkZXYtPmdmeC5tZWMucXVldWVfYml0bWFwLCBBTURHUFVfTUFYX1FVRVVFUyk7Cj4g Kwo+ICsgICAgICAgLyogSWYgeW91IGhpdCB0aGlzIGNhc2UgYW5kIGVkaXRlZCB0aGUgcG9saWN5 LCB5b3UgcHJvYmFibHkganVzdAo+ICsgICAgICAgICogbmVlZCB0byBpbmNyZWFzZSBBTURHUFVf TUFYX0NPTVBVVEVfUklOR1MgKi8KPiArICAgICAgIGlmIChXQVJOX09OKGFkZXYtPmdmeC5udW1f Y29tcHV0ZV9yaW5ncyA+IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUykpCj4gKyAgICAgICAgICAg ICAgIGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyA9IEFNREdQVV9NQVhfQ09NUFVURV9SSU5H UzsKPiArfQo+ICsKPiAgc3RhdGljIGludCBnZnhfdjlfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKPiAgewo+ICAgICAgICAgaW50IHI7Cj4gICAgICAgICB1MzIgKmhwZDsK PiAgICAgICAgIGNvbnN0IF9fbGUzMiAqZndfZGF0YTsKPiAgICAgICAgIHVuc2lnbmVkIGZ3X3Np emU7Cj4gICAgICAgICB1MzIgKmZ3Owo+ICAgICAgICAgc2l6ZV90IG1lY19ocGRfc2l6ZTsKPgo+ ICAgICAgICAgY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqbWVjX2hkcjsK Pgo+ICsgICAgICAgYml0bWFwX3plcm8oYWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXAsIEFNREdQ VV9NQVhfUVVFVUVTKTsKPiArCj4gICAgICAgICBzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgewo+ ICAgICAgICAgY2FzZSBDSElQX1ZFR0ExMDoKPiAgICAgICAgICAgICAgICAgYWRldi0+Z2Z4Lm1l Yy5udW1fbWVjID0gMjsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICBkZWZhdWx0 Ogo+ICAgICAgICAgICAgICAgICBhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOwo+ICAgICAgICAg ICAgICAgICBicmVhazsKPiAgICAgICAgIH0KPgo+ICAgICAgICAgYWRldi0+Z2Z4Lm1lYy5udW1f cGlwZV9wZXJfbWVjID0gNDsKPiAgICAgICAgIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9w aXBlID0gODsKPgo+IC0gICAgICAgLyogb25seSAxIHBpcGUgb2YgdGhlIGZpcnN0IE1FQyBpcyBv d25lZCBieSBhbWRncHUgKi8KPiAtICAgICAgIG1lY19ocGRfc2l6ZSA9IDEgKiAxICogYWRldi0+ Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGUgKiBNRUNfSFBEX1NJWkU7Cj4gKyAgICAgICAvKiB0 YWtlIG93bmVyc2hpcCBvZiB0aGUgcmVsZXZhbnQgY29tcHV0ZSBxdWV1ZXMgKi8KPiArICAgICAg IGdmeF92OV8wX2NvbXB1dGVfcXVldWVfYWNxdWlyZShhZGV2KTsKPiArICAgICAgIG1lY19ocGRf c2l6ZSA9IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyAqIE1FQ19IUERfU0laRTsKPgo+ICAg ICAgICAgaWYgKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmogPT0gTlVMTCkgewo+ICAgICAgICAg ICAgICAgICByID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtZWNfaHBkX3NpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBBR0VfU0laRSwgdHJ1ZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLCBOVUxMLCBOVUxMLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29i aik7Cj4gICAgICAgICAgICAgICAgIGlmIChyKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg ZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSBjcmVhdGUgSERQIEVPUCBibyBmYWlsZWRcbiIsIHIp Owo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+IEBAIC0xMDI0LDIxICsxMDU3 LDIxIEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfbmdnX2VuKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQo+ICAgICAgICAgZ2Z4X3Y5XzBfd3JpdGVfZGF0YV90b19yZWcocmluZywgMCwgZmFsc2Us Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZ2RzX3JlZ19vZmZz ZXRbMF0ubWVtX3NpemUsIDApOwo+Cj4gICAgICAgICBhbWRncHVfcmluZ19jb21taXQocmluZyk7 Cj4KPiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAgc3RhdGljIGludCBnZnhfdjlfMF9zd19p bml0KHZvaWQgKmhhbmRsZSkKPiAgewo+IC0gICAgICAgaW50IGksIHI7Cj4gKyAgICAgICBpbnQg aSwgciwgcmluZ19pZDsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZzsKPiAgICAg ICAgIHN0cnVjdCBhbWRncHVfa2lxICpraXE7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPgo+ICAgICAgICAgLyog S0lRIGV2ZW50ICovCj4gICAgICAgICByID0gYW1kZ3B1X2lycV9hZGRfaWQoYWRldiwgQU1ER1BV X0lIX0NMSUVOVElEX0dSQk1fQ1AsIDE3OCwgJmFkZXYtPmdmeC5raXEuaXJxKTsKPiAgICAgICAg IGlmIChyKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPgo+ICAgICAgICAgLyogRU9QIEV2 ZW50ICovCj4gQEAgLTEwODEsMjEgKzExMTQsNjAgQEAgc3RhdGljIGludCBnZnhfdjlfMF9zd19p bml0KHZvaWQgKmhhbmRsZSkKPiAgICAgICAgICAgICAgICAgc3ByaW50ZihyaW5nLT5uYW1lLCAi Z2Z4Iik7Cj4gICAgICAgICAgICAgICAgIHJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7Cj4gICAg ICAgICAgICAgICAgIHJpbmctPmRvb3JiZWxsX2luZGV4ID0gQU1ER1BVX0RPT1JCRUxMNjRfR0ZY X1JJTkcwIDw8IDE7Cj4gICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYs IHJpbmcsIDEwMjQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGV2 LT5nZnguZW9wX2lycSwgQU1ER1BVX0NQX0lSUV9HRlhfRU9QKTsKPiAgICAgICAgICAgICAgICAg aWYgKHIpCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4gICAgICAgICB9Cj4K PiAgICAgICAgIC8qIHNldCB1cCB0aGUgY29tcHV0ZSBxdWV1ZXMgKi8KPiAtICAgICAgIGZvciAo aSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7IGkrKykgewo+ICsgICAgICAg Zm9yIChpID0gMCwgcmluZ19pZCA9IDA7IGkgPCBBTURHUFVfTUFYX1FVRVVFUzsgaSsrKSB7Cj4g KyAgICAgICAgICAgICAgIHVuc2lnbmVkIGlycV90eXBlOwo+ICsKPiArICAgICAgICAgICAgICAg aWYgKCF0ZXN0X2JpdChpLCBhZGV2LT5nZngubWVjLnF1ZXVlX2JpdG1hcCkpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoV0FSTl9P TihyaW5nX2lkID49IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUykpCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICByaW5nID0gJmFkZXYtPmdmeC5j b21wdXRlX3JpbmdbcmluZ19pZF07Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBtZWMwIGlzIG1l MSAqLwo+ICsgICAgICAgICAgICAgICByaW5nLT5tZSA9ICgoaSAvIGFkZXYtPmdmeC5tZWMubnVt X3F1ZXVlX3Blcl9waXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBhZGV2 LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArIDE7Cj4gKyAgICAgICAgICAgICAgIHJpbmctPnBpcGUgPSAoaSAvIGFkZXYtPmdmeC5t ZWMubnVtX3F1ZXVlX3Blcl9waXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JSBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWM7Cj4gKyAgICAgICAgICAgICAgIHJpbmct PnF1ZXVlID0gaSAlIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlX3Blcl9waXBlOwo+ICsKPiArICAg ICAgICAgICAgICAgcmluZy0+cmluZ19vYmogPSBOVUxMOwo+ICsgICAgICAgICAgICAgICByaW5n LT51c2VfZG9vcmJlbGwgPSB0cnVlOwo+ICsgICAgICAgICAgICAgICByaW5nLT5lb3BfZ3B1X2Fk ZHIgPSBhZGV2LT5nZngubWVjLmhwZF9lb3BfZ3B1X2FkZHIgKyAocmluZ19pZCAqIE1FQ19IUERf U0laRSk7Cj4gKyAgICAgICAgICAgICAgIHJpbmctPmRvb3JiZWxsX2luZGV4ID0gQU1ER1BVX0RP T1JCRUxMX01FQ19SSU5HMCArIHJpbmdfaWQ7Cj4gKyAgICAgICAgICAgICAgIHNwcmludGYocmlu Zy0+bmFtZSwgImNvbXBfJWQuJWQuJWQiLCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVl dWUpOwo+ICsKPiArICAgICAgICAgICAgICAgaXJxX3R5cGUgPSBBTURHUFVfQ1BfSVJRX0NPTVBV VEVfTUVDMV9QSVBFMF9FT1AKPiArICAgICAgICAgICAgICAgICAgICAgICArICgocmluZy0+bWUg LSAxKSAqIGFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYykKPiArICAgICAgICAgICAgICAg ICAgICAgICArIHJpbmctPnBpcGU7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiB0eXBlLTIgcGFj a2V0cyBhcmUgZGVwcmVjYXRlZCBvbiBNRUMsIHVzZSB0eXBlLTMgaW5zdGVhZCAqLwo+ICsgICAg ICAgICAgICAgICByID0gYW1kZ3B1X3JpbmdfaW5pdChhZGV2LCByaW5nLCAxMDI0LCAmYWRldi0+ Z2Z4LmVvcF9pcnEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlycV90 eXBlKTsKPiArICAgICAgICAgICAgICAgaWYgKHIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHI7Cj4gKwo+ICsgICAgICAgICAgICAgICByaW5nX2lkKys7Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgLyogc2V0IHVwIHRoZSBjb21wdXRlIHF1ZXVlcyAqLwo+ICsgICAgICAgZm9y IChpID0gMCwgcmluZ19pZCA9IDA7IGkgPCBBTURHUFVfTUFYX1FVRVVFUzsgaSsrKSB7Cj4gICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGlycV90eXBlOwo+Cj4gICAgICAgICAgICAgICAgIC8qIG1h eCAzMiBxdWV1ZXMgcGVyIE1FQyAqLwo+ICAgICAgICAgICAgICAgICBpZiAoKGkgPj0gMzIpIHx8 IChpID49IEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUykpIHsKPiAgICAgICAgICAgICAgICAgICAg ICAgICBEUk1fRVJST1IoIlRvbyBtYW55ICglZCkgY29tcHV0ZSByaW5ncyFcbiIsIGkpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgICAgICB9Cj4gICAgICAg ICAgICAgICAgIHJpbmcgPSAmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXTsKPiAgICAgICAgICAg ICAgICAgcmluZy0+cmluZ19vYmogPSBOVUxMOwo+ICAgICAgICAgICAgICAgICByaW5nLT51c2Vf ZG9vcmJlbGwgPSB0cnVlOwo+IEBAIC0yNjU1LDIxICsyNzI3LDIxIEBAIHN0YXRpYyB2b2lkIGdm eF92OV8wX3JpbmdfZW1pdF9nZHNfc3dpdGNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAg ICAgICAgIGdmeF92OV8wX3dyaXRlX2RhdGFfdG9fcmVnKHJpbmcsIDAsIGZhbHNlLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRd Lm9hLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgKG9hX3NpemUg KyBvYV9iYXNlKSkgLSAoMSA8PCBvYV9iYXNlKSk7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IGdmeF92 OV8wX2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPgo+ICAgICAg ICAgYWRldi0+Z2Z4Lm51bV9nZnhfcmluZ3MgPSBHRlg5X05VTV9HRlhfUklOR1M7Cj4gLSAgICAg ICBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3MgPSBHRlg5X05VTV9DT01QVVRFX1JJTkdTOwo+ ICsgICAgICAgYWRldi0+Z2Z4Lm51bV9jb21wdXRlX3JpbmdzID0gQU1ER1BVX01BWF9DT01QVVRF X1JJTkdTOwo+ICAgICAgICAgZ2Z4X3Y5XzBfc2V0X3JpbmdfZnVuY3MoYWRldik7Cj4gICAgICAg ICBnZnhfdjlfMF9zZXRfaXJxX2Z1bmNzKGFkZXYpOwo+ICAgICAgICAgZ2Z4X3Y5XzBfc2V0X2dk c19pbml0KGFkZXYpOwo+ICAgICAgICAgZ2Z4X3Y5XzBfc2V0X3JsY19mdW5jcyhhZGV2KTsKPgo+ ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IGdmeF92OV8wX2xhdGVfaW5p dCh2b2lkICpoYW5kbGUpCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUv a2dkX2tmZF9pbnRlcmZhY2UuaAo+IGluZGV4IGEwOWQ5ZjMuLjY3ZjZkMTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX2tmZF9pbnRlcmZhY2UuaAo+IEBAIC0y NiwyMCArMjYsMjEgQEAKPiAgICovCj4KPiAgI2lmbmRlZiBLR0RfS0ZEX0lOVEVSRkFDRV9IX0lO Q0xVREVECj4gICNkZWZpbmUgS0dEX0tGRF9JTlRFUkZBQ0VfSF9JTkNMVURFRAo+Cj4gICNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgo+Cj4gIHN0cnVjdCBwY2lfZGV2Owo+Cj4gICNkZWZpbmUgS0ZE X0lOVEVSRkFDRV9WRVJTSU9OIDEKPiArI2RlZmluZSBLR0RfTUFYX1FVRVVFUyAxMjgKPgo+ICBz dHJ1Y3Qga2ZkX2RldjsKPiAgc3RydWN0IGtnZF9kZXY7Cj4KPiAgc3RydWN0IGtnZF9tZW07Cj4K PiAgZW51bSBrZ2RfbWVtb3J5X3Bvb2wgewo+ICAgICAgICAgS0dEX1BPT0xfU1lTVEVNX0NBQ0hF QUJMRSA9IDEsCj4gICAgICAgICBLR0RfUE9PTF9TWVNURU1fV1JJVEVDT01CSU5FID0gMiwKPiAg ICAgICAgIEtHRF9QT09MX0ZSQU1FQlVGRkVSID0gMywKPiAtLQo+IDIuOS4zCj4KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGlu ZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==