From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 17/26] drm/amdgpu: untie user ring ids from kernel ring ids v5 Date: Thu, 6 Apr 2017 02:21:30 -0400 Message-ID: <20170406062139.3335-18-andresx7@gmail.com> References: <20170406062139.3335-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170406062139.3335-1-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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org QWRkIGFtZGdwdV9xdWV1ZV9tZ3IsIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGRpc2pvaW50aW5n IHVzZXJtb2RlJ3MKcmluZyBpZHMgZnJvbSB0aGUga2VybmVsJ3MgcmluZyBpZHMuCgpUaGUgcXVl dWUgbWFuYWdlciBtYWludGFpbnMgYSBwZXItZmlsZSBkZXNjcmlwdG9yIG1hcCBvZiB1c2VyIHJp bmcgaWRzCnRvIGFtZGdwdV9yaW5nIHBvaW50ZXJzLiBPbmNlIGEgbWFwIGlzIGNyZWF0ZWQgaXQg aXMgcGVybWFuZW50ICh0aGlzIGlzCnJlcXVpcmVkIHRvIG1haW50YWluIEZJRk8gZXhlY3V0aW9u IGd1YXJhbnRlZXMgZm9yIGEgY29udGV4dCdzIHJpbmcpLgoKRGlmZmVyZW50IHF1ZXVlIG1hcCBw b2xpY2llcyBjYW4gYmUgY29uZmlndXJlZCBmb3IgZWFjaCBIVyBJUC4KQ3VycmVudGx5IGFsbCBI VyBJUHMgdXNlIHRoZSBpZGVudGl0eSBtYXBwZXIsIGkuZS4ga2VybmVsIHJpbmcgaWQgaXMKZXF1 YWwgdG8gdGhlIHVzZXIgcmluZyBpZC4KClRoZSBwdXJwb3NlIG9mIHRoaXMgbWVjaGFuaXNtIGlz IHRvIGRpc3RyaWJ1dGUgdGhlIGxvYWQgYWNyb3NzIG11bHRpcGxlCnF1ZXVlcyBtb3JlIGVmZmVj dGl2ZWx5IGZvciBIVyBJUHMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIHJpbmdzLgpVc2Vyc3BhY2Ug Y2xpZW50cyBhcmUgdW5hYmxlIHRvIGNoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyByZXNvdXJjZSBp cyBpbgp1c2UgYnkgYSBkaWZmZXJlbnQgY2xpZW50LiBUaGVyZWZvcmUsIGl0IGlzIHVwIHRvIHRo ZSBrZXJuZWwgZHJpdmVyIHRvCm1ha2UgdGhlIG9wdGltYWwgY2hvaWNlLgoKdjI6IHJlbW92ZSBh bWRncHVfcXVldWVfbWFwcGVyX2Z1bmNzCnYzOiBtYWRlIGFtZGdwdV9xdWV1ZV9tZ3IgcGVyIGNv bnRleHQgaW5zdGVhZCBvZiBwZXItZmQKdjQ6IGFkZCBjb250ZXh0X3B1dCBvbiBlcnJvciBwYXRo cwp2NTogbW92ZWQgcHJvdG90eXBlcyB0byBhbWRncHVfcXVldWVfbWdyLmgKClJldmlld2VkLWJ5 OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+ClNpZ25lZC1vZmYt Ynk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgICAgICAgIHwgMTE3ICsrKy0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYyAgICAgICB8ICAgNiArCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVmcy5oICAgICAgfCAgMjkgKysrKwogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5jIHwgMjMxICsrKysrKysr KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVl dWVfbWdyLmggfCAgNTEgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmluZy5jICAgICAgfCAgNDUgKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9yaW5nLmggICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDM5NSBpbnNlcnRpb25zKCsp LCA5NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGVmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9NYWtlZmlsZQppbmRleCA2NjA3ODZhLi5kZDQ4ZWIyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9NYWtlZmlsZQpAQCAtMTcsMjEgKzE3LDIyIEBAIGFtZGdwdS15IDo9IGFtZGdwdV9kcnYu bwogYW1kZ3B1LXkgKz0gYW1kZ3B1X2RldmljZS5vIGFtZGdwdV9rbXMubyBcCiAJYW1kZ3B1X2F0 b21iaW9zLm8gYXRvbWJpb3NfY3J0Yy5vIGFtZGdwdV9jb25uZWN0b3JzLm8gXAogCWF0b20ubyBh bWRncHVfZmVuY2UubyBhbWRncHVfdHRtLm8gYW1kZ3B1X29iamVjdC5vIGFtZGdwdV9nYXJ0Lm8g XAogCWFtZGdwdV9lbmNvZGVycy5vIGFtZGdwdV9kaXNwbGF5Lm8gYW1kZ3B1X2kyYy5vIFwKIAlh bWRncHVfZmIubyBhbWRncHVfZ2VtLm8gYW1kZ3B1X3JpbmcubyBcCiAJYW1kZ3B1X2NzLm8gYW1k Z3B1X2Jpb3MubyBhbWRncHVfYmVuY2htYXJrLm8gYW1kZ3B1X3Rlc3QubyBcCiAJYW1kZ3B1X3Bt Lm8gYXRvbWJpb3NfZHAubyBhbWRncHVfYWZtdC5vIGFtZGdwdV90cmFjZV9wb2ludHMubyBcCiAJ YXRvbWJpb3NfZW5jb2RlcnMubyBhbWRncHVfc2EubyBhdG9tYmlvc19pMmMubyBcCiAJYW1kZ3B1 X3ByaW1lLm8gYW1kZ3B1X3ZtLm8gYW1kZ3B1X2liLm8gYW1kZ3B1X3BsbC5vIFwKIAlhbWRncHVf dWNvZGUubyBhbWRncHVfYm9fbGlzdC5vIGFtZGdwdV9jdHgubyBhbWRncHVfc3luYy5vIFwKLQlh bWRncHVfZ3R0X21nci5vIGFtZGdwdV92cmFtX21nci5vIGFtZGdwdV92aXJ0Lm8gYW1kZ3B1X2F0 b21maXJtd2FyZS5vCisJYW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVf dmlydC5vIGFtZGdwdV9hdG9tZmlybXdhcmUubyBcCisJYW1kZ3B1X3F1ZXVlX21nci5vCiAKICMg YWRkIGFzaWMgc3BlY2lmaWMgYmxvY2sKIGFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX0NJSykr PSBjaWsubyBjaWtfaWgubyBrdl9zbWMubyBrdl9kcG0ubyBcCiAJY2lfc21jLm8gY2lfZHBtLm8g ZGNlX3Y4XzAubyBnZnhfdjdfMC5vIGNpa19zZG1hLm8gdXZkX3Y0XzIubyB2Y2VfdjJfMC5vIFwK IAlhbWRncHVfYW1ka2ZkX2dmeF92Ny5vCiAKIGFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX1NJ KSs9IHNpLm8gZ21jX3Y2XzAubyBnZnhfdjZfMC5vIHNpX2loLm8gc2lfZG1hLm8gZGNlX3Y2XzAu byBzaV9kcG0ubyBzaV9zbWMubwogCiBhbWRncHUteSArPSBcCiAJdmkubyBteGdwdV92aS5vIG5i aW9fdjZfMS5vIHNvYzE1Lm8gbXhncHVfYWkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aAppbmRleCA2ZmMwZTcwLi5jYTk2YWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aApAQCAtNDIsMjkgKzQyLDMxIEBACiAjaW5jbHVkZSA8dHRtL3R0bV9tb2R1bGUuaD4KICNpbmNs dWRlIDx0dG0vdHRtX2V4ZWNidWZfdXRpbC5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CiAKICNp bmNsdWRlIDxrZ2Rfa2ZkX2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAiYW1kX3NoYXJlZC5oIgor I2luY2x1ZGUgImFtZGdwdV9kZWZzLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X21vZGUuaCIKICNpbmNs dWRlICJhbWRncHVfaWguaCIKICNpbmNsdWRlICJhbWRncHVfaXJxLmgiCiAjaW5jbHVkZSAiYW1k Z3B1X3Vjb2RlLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3R0bS5oIgogI2luY2x1ZGUgImFtZGdwdV9w c3AuaCIKICNpbmNsdWRlICJhbWRncHVfZ2RzLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3N5bmMuaCIK ICNpbmNsdWRlICJhbWRncHVfcmluZy5oIgorI2luY2x1ZGUgImFtZGdwdV9xdWV1ZV9tZ3IuaCIK ICNpbmNsdWRlICJhbWRncHVfdm0uaCIKICNpbmNsdWRlICJhbWRfcG93ZXJwbGF5LmgiCiAjaW5j bHVkZSAiYW1kZ3B1X2RwbS5oIgogI2luY2x1ZGUgImFtZGdwdV9hY3AuaCIKICNpbmNsdWRlICJh bWRncHVfdXZkLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3ZjZS5oIgogCiAjaW5jbHVkZSAiZ3B1X3Nj aGVkdWxlci5oIgogI2luY2x1ZGUgImFtZGdwdV92aXJ0LmgiCiAKQEAgLTIwMCwyMiArMjAyLDIw IEBAIGludCBhbWRncHVfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkJCSAgZW51bSBhbWRfY2xvY2tnYXRpbmdfc3RhdGUgc3RhdGUpOwogaW50IGFt ZGdwdV9zZXRfcG93ZXJnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkJICBlbnVtIGFtZF9pcF9ibG9ja190eXBlIGJsb2NrX3R5cGUsCiAJCQkJICBlbnVtIGFtZF9w b3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSk7CiB2b2lkIGFtZGdwdV9nZXRfY2xvY2tnYXRpbmdfc3Rh dGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiAqZmxhZ3MpOwogaW50IGFtZGdwdV93 YWl0X2Zvcl9pZGxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJIGVudW0gYW1kX2lw X2Jsb2NrX3R5cGUgYmxvY2tfdHlwZSk7CiBib29sIGFtZGdwdV9pc19pZGxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkgICAgZW51bSBhbWRfaXBfYmxvY2tfdHlwZSBibG9ja190eXBl KTsKIAotI2RlZmluZSBBTURHUFVfTUFYX0lQX05VTSAxNgotCiBzdHJ1Y3QgYW1kZ3B1X2lwX2Js b2NrX3N0YXR1cyB7CiAJYm9vbCB2YWxpZDsKIAlib29sIHN3OwogCWJvb2wgaHc7CiAJYm9vbCBs YXRlX2luaXRpYWxpemVkOwogCWJvb2wgaGFuZzsKIH07CiAKIHN0cnVjdCBhbWRncHVfaXBfYmxv Y2tfdmVyc2lvbiB7CiAJY29uc3QgZW51bSBhbWRfaXBfYmxvY2tfdHlwZSB0eXBlOwpAQCAtNzc4 LDIwICs3NzgsMjEgQEAgaW50IGFtZGdwdV9qb2Jfc3VibWl0KHN0cnVjdCBhbWRncHVfam9iICpq b2IsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAogc3RydWN0IGFtZGdwdV9jdHhfcmluZyB7 CiAJdWludDY0X3QJCXNlcXVlbmNlOwogCXN0cnVjdCBkbWFfZmVuY2UJKipmZW5jZXM7CiAJc3Ry dWN0IGFtZF9zY2hlZF9lbnRpdHkJZW50aXR5OwogfTsKIAogc3RydWN0IGFtZGdwdV9jdHggewog CXN0cnVjdCBrcmVmCQlyZWZjb3VudDsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAgICAqYWRldjsK KwlzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciBxdWV1ZV9tZ3I7CiAJdW5zaWduZWQJCXJlc2V0X2Nv dW50ZXI7CiAJc3BpbmxvY2tfdAkJcmluZ19sb2NrOwogCXN0cnVjdCBkbWFfZmVuY2UJKipmZW5j ZXM7CiAJc3RydWN0IGFtZGdwdV9jdHhfcmluZwlyaW5nc1tBTURHUFVfTUFYX1JJTkdTXTsKIAli b29sIHByZWFtYmxlX3ByZXNlbnRlZDsKIH07CiAKIHN0cnVjdCBhbWRncHVfY3R4X21nciB7CiAJ c3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7CiAJc3RydWN0IG11dGV4CQlsb2NrOwpAQCAtMTg4 MiwyMyArMTg4MywyMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1X2lzX21lY19xdWV1ZV9l bmFibGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogI2RlZmluZSBhbWRncHVfcHNwX2No ZWNrX2Z3X2xvYWRpbmdfc3RhdHVzKGFkZXYsIGkpIChhZGV2KS0+ZmlybXdhcmUuZnVuY3MtPmNo ZWNrX2Z3X2xvYWRpbmdfc3RhdHVzKChhZGV2KSwgKGkpKQogCiAvKiBDb21tb24gZnVuY3Rpb25z ICovCiBpbnQgYW1kZ3B1X2dwdV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBi b29sIGFtZGdwdV9uZWVkX2JhY2t1cChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiB2b2lk IGFtZGdwdV9wY2lfY29uZmlnX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIGJv b2wgYW1kZ3B1X25lZWRfcG9zdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiB2b2lkIGFt ZGdwdV91cGRhdGVfZGlzcGxheV9wcmlvcml0eShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7 CiAKIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAs IHZvaWQgKmRhdGEpOwotaW50IGFtZGdwdV9jc19nZXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgdTMyIGlwX3R5cGUsCi0JCSAgICAgICB1MzIgaXBfaW5zdGFuY2UsIHUzMiByaW5n LAotCQkgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpOwogdm9pZCBhbWRncHVf Y3NfcmVwb3J0X21vdmVkX2J5dGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1NjQgbnVt X2J5dGVzKTsKIHZvaWQgYW1kZ3B1X3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4oc3RydWN0IGFt ZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKTsKIGJvb2wgYW1kZ3B1X3R0bV9ib19pc19hbWRncHVf Ym8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7CiBpbnQgYW1kZ3B1X3R0bV90dF9nZXRf dXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMpOwogaW50 IGFtZGdwdV90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtLCB1aW50NjRfdCBh ZGRyLAogCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpOwogYm9vbCBhbWRncHVfdHRtX3R0X2hhc191 c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSk7CiBzdHJ1Y3QgbW1fc3RydWN0ICphbWRncHVfdHRt X3R0X2dldF91c2VybW0oc3RydWN0IHR0bV90dCAqdHRtKTsKIGJvb2wgYW1kZ3B1X3R0bV90dF9h ZmZlY3RfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJ CQkJICB1bnNpZ25lZCBsb25nIGVuZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9j cy5jCmluZGV4IDljN2Y3ZWQuLjFkOTFlZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jcy5jCkBAIC0yMyw5MiArMjMsMjAgQEAKICAqCiAgKiBBdXRob3JzOgogICogICAgSmVy b21lIEdsaXNzZSA8Z2xpc3NlQGZyZWVkZXNrdG9wLm9yZz4KICAqLwogI2luY2x1ZGUgPGxpbnV4 L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9hbWRncHVf ZHJtLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3RyYWNlLmgiCiAK LWludCBhbWRncHVfY3NfZ2V0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiBp cF90eXBlLAotCQkgICAgICAgdTMyIGlwX2luc3RhbmNlLCB1MzIgcmluZywKLQkJICAgICAgIHN0 cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQotewotCS8qIFJpZ2h0IG5vdyBhbGwgSVBzIGhh dmUgb25seSBvbmUgaW5zdGFuY2UgLSBtdWx0aXBsZSByaW5ncy4gKi8KLQlpZiAoaXBfaW5zdGFu Y2UgIT0gMCkgewotCQlEUk1fRVJST1IoImludmFsaWQgaXAgaW5zdGFuY2U6ICVkXG4iLCBpcF9p bnN0YW5jZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAoaXBfdHlwZSkgewot CWRlZmF1bHQ6Ci0JCURSTV9FUlJPUigidW5rbm93biBpcCB0eXBlOiAlZFxuIiwgaXBfdHlwZSk7 Ci0JCXJldHVybiAtRUlOVkFMOwotCWNhc2UgQU1ER1BVX0hXX0lQX0dGWDoKLQkJaWYgKHJpbmcg PCBhZGV2LT5nZngubnVtX2dmeF9yaW5ncykgewotCQkJKm91dF9yaW5nID0gJmFkZXYtPmdmeC5n ZnhfcmluZ1tyaW5nXTsKLQkJfSBlbHNlIHsKLQkJCURSTV9FUlJPUigib25seSAlZCBnZnggcmlu Z3MgYXJlIHN1cHBvcnRlZCBub3dcbiIsCi0JCQkJICBhZGV2LT5nZngubnVtX2dmeF9yaW5ncyk7 Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9D T01QVVRFOgotCQlpZiAocmluZyA8IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncykgewotCQkJ Km91dF9yaW5nID0gJmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbcmluZ107Ci0JCX0gZWxzZSB7Ci0J CQlEUk1fRVJST1IoIm9ubHkgJWQgY29tcHV0ZSByaW5ncyBhcmUgc3VwcG9ydGVkIG5vd1xuIiwK LQkJCQkgIGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsK LQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9ETUE6Ci0JCWlmIChyaW5nIDwgYWRl di0+c2RtYS5udW1faW5zdGFuY2VzKSB7Ci0JCQkqb3V0X3JpbmcgPSAmYWRldi0+c2RtYS5pbnN0 YW5jZVtyaW5nXS5yaW5nOwotCQl9IGVsc2UgewotCQkJRFJNX0VSUk9SKCJvbmx5ICVkIFNETUEg cmluZ3MgYXJlIHN1cHBvcnRlZFxuIiwKLQkJCQkgIGFkZXYtPnNkbWEubnVtX2luc3RhbmNlcyk7 Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9V VkQ6Ci0JCSpvdXRfcmluZyA9ICZhZGV2LT51dmQucmluZzsKLQkJYnJlYWs7Ci0JY2FzZSBBTURH UFVfSFdfSVBfVkNFOgotCQlpZiAocmluZyA8IGFkZXYtPnZjZS5udW1fcmluZ3MpewotCQkJKm91 dF9yaW5nID0gJmFkZXYtPnZjZS5yaW5nW3JpbmddOwotCQl9IGVsc2UgewotCQkJRFJNX0VSUk9S KCJvbmx5ICVkIFZDRSByaW5ncyBhcmUgc3VwcG9ydGVkXG4iLCBhZGV2LT52Y2UubnVtX3Jpbmdz KTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JCWJyZWFrOwotCWNhc2UgQU1ER1BVX0hXX0lQ X1VWRF9FTkM6Ci0JCWlmIChyaW5nIDwgYWRldi0+dXZkLm51bV9lbmNfcmluZ3MpewotCQkJKm91 dF9yaW5nID0gJmFkZXYtPnV2ZC5yaW5nX2VuY1tyaW5nXTsKLQkJfSBlbHNlIHsKLQkJCURSTV9F UlJPUigib25seSAlZCBVVkQgRU5DIHJpbmdzIGFyZSBzdXBwb3J0ZWRcbiIsCi0JCQkJYWRldi0+ dXZkLm51bV9lbmNfcmluZ3MpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQkJYnJlYWs7Ci0J fQotCi0JaWYgKCEoKm91dF9yaW5nICYmICgqb3V0X3JpbmcpLT5hZGV2KSkgewotCQlEUk1fRVJS T1IoIlJpbmcgJWQgaXMgbm90IGluaXRpYWxpemVkIG9uIElQICVkXG4iLAotCQkJICByaW5nLCBp cF90eXBlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRp YyBpbnQgYW1kZ3B1X2NzX3VzZXJfZmVuY2VfY2h1bmsoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIg KnAsCiAJCQkJICAgICAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZmVuY2UgKmRhdGEsCiAJ CQkJICAgICAgdWludDMyX3QgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdv Ymo7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCiAJZ29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1 cChwLT5maWxwLCBkYXRhLT5oYW5kbGUpOwogCWlmIChnb2JqID09IE5VTEwpCiAJCXJldHVybiAt RUlOVkFMOwpAQCAtOTA5LDIzICs4MzcsMjIgQEAgc3RhdGljIGludCBhbWRncHVfY3NfaWJfZmls bChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJY2VfcHJlZW1wdCsrOwogCQkJCWVs c2UKIAkJCQkJZGVfcHJlZW1wdCsrOwogCQkJfQogCiAJCQkvKiBlYWNoIEdGWCBjb21tYW5kIHN1 Ym1pdCBhbGxvd3MgMCBvciAxIElCIHByZWVtcHRpYmxlIGZvciBDRSAmIERFICovCiAJCQlpZiAo Y2VfcHJlZW1wdCA+IDEgfHwgZGVfcHJlZW1wdCA+IDEpCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJ CX0KIAotCQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGNodW5rX2liLT5pcF90eXBlLAot CQkJCSAgICAgICBjaHVua19pYi0+aXBfaW5zdGFuY2UsIGNodW5rX2liLT5yaW5nLAotCQkJCSAg ICAgICAmcmluZyk7CisJCXIgPSBhbWRncHVfcXVldWVfbWdyX21hcChhZGV2LCAmcGFyc2VyLT5j dHgtPnF1ZXVlX21nciwgY2h1bmtfaWItPmlwX3R5cGUsCisJCQkJCSBjaHVua19pYi0+aXBfaW5z dGFuY2UsIGNodW5rX2liLT5yaW5nLCAmcmluZyk7CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7CiAK IAkJaWYgKGNodW5rX2liLT5mbGFncyAmIEFNREdQVV9JQl9GTEFHX1BSRUFNQkxFKSB7CiAJCQlw YXJzZXItPmpvYi0+cHJlYW1ibGVfc3RhdHVzIHw9IEFNREdQVV9QUkVBTUJMRV9JQl9QUkVTRU5U OwogCQkJaWYgKCFwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkKSB7CiAJCQkJcGFyc2Vy LT5qb2ItPnByZWFtYmxlX3N0YXR1cyB8PSBBTURHUFVfUFJFQU1CTEVfSUJfUFJFU0VOVF9GSVJT VDsKIAkJCQlwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkID0gdHJ1ZTsKIAkJCX0KIAkJ fQpAQCAtMTAxMywzMCArOTQwLDMzIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2RlcGVuZGVuY2ll cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCQlkZXBzID0gKHN0cnVjdCBkcm1fYW1k Z3B1X2NzX2NodW5rX2RlcCAqKWNodW5rLT5rZGF0YTsKIAkJbnVtX2RlcHMgPSBjaHVuay0+bGVu Z3RoX2R3ICogNCAvCiAJCQlzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZGVwKTsK IAogCQlmb3IgKGogPSAwOyBqIDwgbnVtX2RlcHM7ICsraikgewogCQkJc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nOwogCQkJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAkJCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOwogCi0JCQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGRlcHNbal0uaXBf dHlwZSwKLQkJCQkJICAgICAgIGRlcHNbal0uaXBfaW5zdGFuY2UsCi0JCQkJCSAgICAgICBkZXBz W2pdLnJpbmcsICZyaW5nKTsKLQkJCWlmIChyKQotCQkJCXJldHVybiByOwotCiAJCQljdHggPSBh bWRncHVfY3R4X2dldChmcHJpdiwgZGVwc1tqXS5jdHhfaWQpOwogCQkJaWYgKGN0eCA9PSBOVUxM KQogCQkJCXJldHVybiAtRUlOVkFMOwogCisJCQlyID0gYW1kZ3B1X3F1ZXVlX21ncl9tYXAoYWRl diwgJmN0eC0+cXVldWVfbWdyLAorCQkJCQkJIGRlcHNbal0uaXBfdHlwZSwKKwkJCQkJCSBkZXBz W2pdLmlwX2luc3RhbmNlLAorCQkJCQkJIGRlcHNbal0ucmluZywgJnJpbmcpOworCQkJaWYgKHIp IHsKKwkJCQlhbWRncHVfY3R4X3B1dChjdHgpOworCQkJCXJldHVybiByOworCQkJfQorCiAJCQlm ZW5jZSA9IGFtZGdwdV9jdHhfZ2V0X2ZlbmNlKGN0eCwgcmluZywKIAkJCQkJCSAgICAgZGVwc1tq XS5oYW5kbGUpOwogCQkJaWYgKElTX0VSUihmZW5jZSkpIHsKIAkJCQlyID0gUFRSX0VSUihmZW5j ZSk7CiAJCQkJYW1kZ3B1X2N0eF9wdXQoY3R4KTsKIAkJCQlyZXR1cm4gcjsKIAogCQkJfSBlbHNl IGlmIChmZW5jZSkgewogCQkJCXIgPSBhbWRncHVfc3luY19mZW5jZShhZGV2LCAmcC0+am9iLT5z eW5jLAogCQkJCQkJICAgICAgZmVuY2UpOwpAQCAtMTE0OCwyOSArMTA3OCwzMiBAQCBpbnQgYW1k Z3B1X2NzX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ CSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCiB7CiAJdW5pb24gZHJtX2FtZGdwdV93YWl0X2NzICp3 YWl0ID0gZGF0YTsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gYW1kZ3B1X2dlbV90aW1lb3V0KHdhaXQtPmlu LnRpbWVvdXQpOwogCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9IE5VTEw7CiAJc3RydWN0IGFt ZGdwdV9jdHggKmN0eDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlsb25nIHI7CiAKLQly ID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIHdhaXQtPmluLmlwX3R5cGUsIHdhaXQtPmluLmlw X2luc3RhbmNlLAotCQkJICAgICAgIHdhaXQtPmluLnJpbmcsICZyaW5nKTsKLQlpZiAocikKLQkJ cmV0dXJuIHI7Ci0KIAljdHggPSBhbWRncHVfY3R4X2dldChmaWxwLT5kcml2ZXJfcHJpdiwgd2Fp dC0+aW4uY3R4X2lkKTsKIAlpZiAoY3R4ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCisJ ciA9IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKGFkZXYsICZjdHgtPnF1ZXVlX21nciwKKwkJCQkgd2Fp dC0+aW4uaXBfdHlwZSwgd2FpdC0+aW4uaXBfaW5zdGFuY2UsCisJCQkJIHdhaXQtPmluLnJpbmcs ICZyaW5nKTsKKwlpZiAocikgeworCQlhbWRncHVfY3R4X3B1dChjdHgpOworCQlyZXR1cm4gcjsK Kwl9CisKIAlmZW5jZSA9IGFtZGdwdV9jdHhfZ2V0X2ZlbmNlKGN0eCwgcmluZywgd2FpdC0+aW4u aGFuZGxlKTsKIAlpZiAoSVNfRVJSKGZlbmNlKSkKIAkJciA9IFBUUl9FUlIoZmVuY2UpOwogCWVs c2UgaWYgKGZlbmNlKSB7CiAJCXIgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlLCB0cnVl LCB0aW1lb3V0KTsKIAkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CiAJfSBlbHNlCiAJCXIgPSAxOwog CiAJYW1kZ3B1X2N0eF9wdXQoY3R4KTsKQEAgLTExOTIsMjkgKzExMjUsMzEgQEAgaW50IGFtZGdw dV9jc193YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAgKi8K IHN0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICphbWRncHVfY3NfZ2V0X2ZlbmNlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCwKIAkJCQkJ ICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9mZW5jZSAqdXNlcikKIHsKIAlzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmc7CiAJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZTsKIAlpbnQgcjsKIAotCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwgdXNlci0+aXBf dHlwZSwgdXNlci0+aXBfaW5zdGFuY2UsCi0JCQkgICAgICAgdXNlci0+cmluZywgJnJpbmcpOwot CWlmIChyKQotCQlyZXR1cm4gRVJSX1BUUihyKTsKLQogCWN0eCA9IGFtZGdwdV9jdHhfZ2V0KGZp bHAtPmRyaXZlcl9wcml2LCB1c2VyLT5jdHhfaWQpOwogCWlmIChjdHggPT0gTlVMTCkKIAkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKKwlyID0gYW1kZ3B1X3F1ZXVlX21ncl9tYXAoYWRldiwg JmN0eC0+cXVldWVfbWdyLCB1c2VyLT5pcF90eXBlLAorCQkJCSB1c2VyLT5pcF9pbnN0YW5jZSwg dXNlci0+cmluZywgJnJpbmcpOworCWlmIChyKSB7CisJCWFtZGdwdV9jdHhfcHV0KGN0eCk7CisJ CXJldHVybiBFUlJfUFRSKHIpOworCX0KKwogCWZlbmNlID0gYW1kZ3B1X2N0eF9nZXRfZmVuY2Uo Y3R4LCByaW5nLCB1c2VyLT5zZXFfbm8pOwogCWFtZGdwdV9jdHhfcHV0KGN0eCk7CiAKIAlyZXR1 cm4gZmVuY2U7CiB9CiAKIC8qKgogICogYW1kZ3B1X2NzX3dhaXRfYWxsX2ZlbmNlIC0gd2FpdCBv biBhbGwgZmVuY2VzIHRvIHNpZ25hbAogICoKICAqIEBhZGV2OiBhbWRncHUgZGV2aWNlCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKaW5kZXggY2YwNTAwNi4uYjM4ZWRhYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwpAQCAtNTEsMjAgKzUxLDI0 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2N0eF9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCBzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4KQogCQlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBh ZGV2LT5yaW5nc1tpXTsKIAkJc3RydWN0IGFtZF9zY2hlZF9ycSAqcnE7CiAKIAkJcnEgPSAmcmlu Zy0+c2NoZWQuc2NoZWRfcnFbQU1EX1NDSEVEX1BSSU9SSVRZX05PUk1BTF07CiAJCXIgPSBhbWRf c2NoZWRfZW50aXR5X2luaXQoJnJpbmctPnNjaGVkLCAmY3R4LT5yaW5nc1tpXS5lbnRpdHksCiAJ CQkJCSAgcnEsIGFtZGdwdV9zY2hlZF9qb2JzKTsKIAkJaWYgKHIpCiAJCQlnb3RvIGZhaWxlZDsK IAl9CiAKKwlyID0gYW1kZ3B1X3F1ZXVlX21ncl9pbml0KGFkZXYsICZjdHgtPnF1ZXVlX21ncik7 CisJaWYgKHIpCisJCWdvdG8gZmFpbGVkOworCiAJcmV0dXJuIDA7CiAKIGZhaWxlZDoKIAlmb3Ig KGogPSAwOyBqIDwgaTsgaisrKQogCQlhbWRfc2NoZWRfZW50aXR5X2ZpbmkoJmFkZXYtPnJpbmdz W2pdLT5zY2hlZCwKIAkJCQkgICAgICAmY3R4LT5yaW5nc1tqXS5lbnRpdHkpOwogCWtmcmVlKGN0 eC0+ZmVuY2VzKTsKIAljdHgtPmZlbmNlcyA9IE5VTEw7CiAJcmV0dXJuIHI7CiB9CkBAIC03OSwy MCArODMsMjIgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2N0eF9maW5pKHN0cnVjdCBhbWRncHVfY3R4 ICpjdHgpCiAKIAlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytpKQogCQlmb3Ig KGogPSAwOyBqIDwgYW1kZ3B1X3NjaGVkX2pvYnM7ICsraikKIAkJCWRtYV9mZW5jZV9wdXQoY3R4 LT5yaW5nc1tpXS5mZW5jZXNbal0pOwogCWtmcmVlKGN0eC0+ZmVuY2VzKTsKIAljdHgtPmZlbmNl cyA9IE5VTEw7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+bnVtX3JpbmdzOyBpKyspCiAJCWFt ZF9zY2hlZF9lbnRpdHlfZmluaSgmYWRldi0+cmluZ3NbaV0tPnNjaGVkLAogCQkJCSAgICAgICZj dHgtPnJpbmdzW2ldLmVudGl0eSk7CisKKwlhbWRncHVfcXVldWVfbWdyX2ZpbmkoYWRldiwgJmN0 eC0+cXVldWVfbWdyKTsKIH0KIAogc3RhdGljIGludCBhbWRncHVfY3R4X2FsbG9jKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgIHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LAog CQkJICAgIHVpbnQzMl90ICppZCkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IgKm1nciA9ICZm cHJpdi0+Y3R4X21ncjsKIAlzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4OwogCWludCByOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVmcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RlZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mNWZmZTEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2RlZnMuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJp Z2h0IDIwMTcgVmFsdmUgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu CisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lm bmRlZiBfX0FNREdQVV9ERUZTX0hfXworI2RlZmluZSBfX0FNREdQVV9ERUZTX0hfXworCisjZGVm aW5lIEFNREdQVV9NQVhfSVBfTlVNIDE2CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjMzYWQ4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcXVldWVfbWdyLmMKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmln aHQgMjAxNyBWYWx2ZSBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6 IEFuZHJlcyBSb2RyaWd1ZXoKKyAqLworCisjaW5jbHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSAi YW1kZ3B1X3F1ZXVlX21nci5oIgorI2luY2x1ZGUgImFtZGdwdV9yaW5nLmgiCisKK3N0YXRpYyBp bnQgYW1kZ3B1X3F1ZXVlX21hcHBlcl9pbml0KHN0cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyICpt YXBwZXIsCisJCQkJICAgIGludCBod19pcCkKK3sKKwlpZiAoIW1hcHBlcikKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAoaHdfaXAgPiBBTURHUFVfTUFYX0lQX05VTSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwltYXBwZXItPmh3X2lwID0gaHdfaXA7CisJbXV0ZXhfaW5pdCgmbWFwcGVyLT5sb2Nr KTsKKworCW1lbXNldChtYXBwZXItPnF1ZXVlX21hcCwgMCwgc2l6ZW9mKG1hcHBlci0+cXVldWVf bWFwKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBhbWRncHVfcmluZyAqYW1k Z3B1X2dldF9jYWNoZWRfbWFwKHN0cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyICptYXBwZXIsCisJ CQkJCSAgaW50IHJpbmcpCit7CisJcmV0dXJuIG1hcHBlci0+cXVldWVfbWFwW3JpbmddOworfQor CitzdGF0aWMgaW50IGFtZGdwdV91cGRhdGVfY2FjaGVkX21hcChzdHJ1Y3QgYW1kZ3B1X3F1ZXVl X21hcHBlciAqbWFwcGVyLAorCQkJICAgICBpbnQgcmluZywgc3RydWN0IGFtZGdwdV9yaW5nICpw cmluZykKK3sKKwlpZiAoV0FSTl9PTihtYXBwZXItPnF1ZXVlX21hcFtyaW5nXSkpIHsKKwkJRFJN X0VSUk9SKCJVbi1leHBlY3RlZCByaW5nIHJlLW1hcFxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCW1hcHBlci0+cXVldWVfbWFwW3JpbmddID0gcHJpbmc7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBhbWRncHVfaWRlbnRpdHlfbWFwKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAorCQkJICAgICAgIHN0cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyICptYXBwZXIsCisJCQkg ICAgICAgaW50IHJpbmcsCisJCQkgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3Jpbmcp Cit7CisJc3dpdGNoIChtYXBwZXItPmh3X2lwKSB7CisJY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgor CQkqb3V0X3JpbmcgPSAmYWRldi0+Z2Z4LmdmeF9yaW5nW3JpbmddOworCQlicmVhazsKKwljYXNl IEFNREdQVV9IV19JUF9DT01QVVRFOgorCQkqb3V0X3JpbmcgPSAmYWRldi0+Z2Z4LmNvbXB1dGVf cmluZ1tyaW5nXTsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfRE1BOgorCQkqb3V0X3Jp bmcgPSAmYWRldi0+c2RtYS5pbnN0YW5jZVtyaW5nXS5yaW5nOworCQlicmVhazsKKwljYXNlIEFN REdQVV9IV19JUF9VVkQ6CisJCSpvdXRfcmluZyA9ICZhZGV2LT51dmQucmluZzsKKwkJYnJlYWs7 CisJY2FzZSBBTURHUFVfSFdfSVBfVkNFOgorCQkqb3V0X3JpbmcgPSAmYWRldi0+dmNlLnJpbmdb cmluZ107CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCSpvdXRfcmluZyA9IE5VTEw7CisJCURSTV9F UlJPUigidW5rbm93biBIVyBJUCB0eXBlOiAlZFxuIiwgbWFwcGVyLT5od19pcCk7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCXJldHVybiBhbWRncHVfdXBkYXRlX2NhY2hlZF9tYXAobWFwcGVy LCByaW5nLCAqb3V0X3JpbmcpOworfQorCisvKioKKyAqIGFtZGdwdV9xdWV1ZV9tZ3JfaW5pdCAt IGluaXQgYW4gYW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3QKKyAqCisgKiBAYWRldjogYW1kZ3B1X2Rl dmljZSBwb2ludGVyCisgKiBAbWdyOiBhbWRncHVfcXVldWVfbWdyIHN0cnVjdHVyZSBob2xkaW5n IHF1ZXVlIGluZm9ybWF0aW9uCisgKgorICogSW5pdGlhbGl6ZSB0aGUgdGhlIHNlbGVjdGVkIEBt Z3IgKGFsbCBhc2ljcykuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZh aWx1cmUuCisgKi8KK2ludCBhbWRncHVfcXVldWVfbWdyX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCisJCQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpCit7CisJaW50IGks IHI7CisKKwlpZiAoIWFkZXYgfHwgIW1ncikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltZW1zZXQo bWdyLCAwLCBzaXplb2YoKm1ncikpOworCisJZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfSVBf TlVNOyArK2kpIHsKKwkJciA9IGFtZGdwdV9xdWV1ZV9tYXBwZXJfaW5pdCgmbWdyLT5tYXBwZXJb aV0sIGkpOworCQlpZiAocikKKwkJCXJldHVybiByOworCX0KKworCXJldHVybiAwOworfQorCisv KioKKyAqIGFtZGdwdV9xdWV1ZV9tZ3JfZmluaSAtIGRlLWluaXRpYWxpemUgYW4gYW1kZ3B1X3F1 ZXVlX21nciBzdHJ1Y3QKKyAqCisgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKiBA bWdyOiBhbWRncHVfcXVldWVfbWdyIHN0cnVjdHVyZSBob2xkaW5nIHF1ZXVlIGluZm9ybWF0aW9u CisgKgorICogRGUtaW5pdGlhbGl6ZSB0aGUgdGhlIHNlbGVjdGVkIEBtZ3IgKGFsbCBhc2ljcyku CisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZhaWx1cmUuCisgKi8KK2lu dCBhbWRncHVfcXVldWVfbWdyX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkg IHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpCit7CisJcmV0dXJuIDA7Cit9CisKKy8qKgor ICogYW1kZ3B1X3F1ZXVlX21ncl9tYXAgLSBNYXAgYSB1c2Vyc3BhY2UgcmluZyBpZCB0byBhbiBh bWRncHVfcmluZworICoKKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKKyAqIEBtZ3I6 IGFtZGdwdV9xdWV1ZV9tZ3Igc3RydWN0dXJlIGhvbGRpbmcgcXVldWUgaW5mb3JtYXRpb24KKyAq IEBod19pcDogSFcgSVAgZW51bQorICogQGluc3RhbmNlOiBIVyBpbnN0YW5jZQorICogQHJpbmc6 IHVzZXIgcmluZyBpZAorICogQG91cl9yaW5nOiBwb2ludGVyIHRvIG1hcHBlZCBhbWRncHVfcmlu ZworICoKKyAqIE1hcCBhIHVzZXJzcGFjZSByaW5nIGlkIHRvIGFuIGFwcHJvcHJpYXRlIGtlcm5l bCByaW5nLiBEaWZmZXJlbnQKKyAqIHBvbGljaWVzIGFyZSBjb25maWd1cmFibGUgYXQgYSBIVyBJ UCBsZXZlbC4KKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4K KyAqLworaW50IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAorCQkJIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IsCisJCQkgaW50IGh3X2lwLCBpbnQg aW5zdGFuY2UsIGludCByaW5nLAorCQkJIHN0cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQor eworCWludCByLCBpcF9udW1fcmluZ3M7CisJc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXIgKm1h cHBlciA9ICZtZ3ItPm1hcHBlcltod19pcF07CisKKwlpZiAoIWFkZXYgfHwgIW1nciB8fCAhb3V0 X3JpbmcpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGh3X2lwID49IEFNREdQVV9NQVhfSVBf TlVNKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyaW5nID49IEFNREdQVV9NQVhfUklOR1Mp CisJCXJldHVybiAtRUlOVkFMOworCisJLyogUmlnaHQgbm93IGFsbCBJUHMgaGF2ZSBvbmx5IG9u ZSBpbnN0YW5jZSAtIG11bHRpcGxlIHJpbmdzLiAqLworCWlmIChpbnN0YW5jZSAhPSAwKSB7CisJ CURSTV9FUlJPUigiaW52YWxpZCBpcCBpbnN0YW5jZTogJWRcbiIsIGluc3RhbmNlKTsKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChod19pcCkgeworCWNhc2UgQU1ER1BVX0hXX0lQ X0dGWDoKKwkJaXBfbnVtX3JpbmdzID0gYWRldi0+Z2Z4Lm51bV9nZnhfcmluZ3M7CisJCWJyZWFr OworCWNhc2UgQU1ER1BVX0hXX0lQX0NPTVBVVEU6CisJCWlwX251bV9yaW5ncyA9IGFkZXYtPmdm eC5udW1fY29tcHV0ZV9yaW5nczsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfRE1BOgor CQlpcF9udW1fcmluZ3MgPSBhZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7CisJCWJyZWFrOworCWNh c2UgQU1ER1BVX0hXX0lQX1VWRDoKKwkJaXBfbnVtX3JpbmdzID0gMTsKKwkJYnJlYWs7CisJY2Fz ZSBBTURHUFVfSFdfSVBfVkNFOgorCQlpcF9udW1fcmluZ3MgPSBhZGV2LT52Y2UubnVtX3Jpbmdz OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoInVua25vd24gaXAgdHlwZTogJWRc biIsIGh3X2lwKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKHJpbmcgPj0gaXBfbnVt X3JpbmdzKSB7CisJCURSTV9FUlJPUigiUmluZyBpbmRleDolZCBleGNlZWRzIG1heGltdW06JWQg Zm9yIGlwOiVkXG4iLAorCQkJCXJpbmcsIGlwX251bV9yaW5ncywgaHdfaXApOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwltdXRleF9sb2NrKCZtYXBwZXItPmxvY2spOworCisJKm91dF9yaW5n ID0gYW1kZ3B1X2dldF9jYWNoZWRfbWFwKG1hcHBlciwgcmluZyk7CisJaWYgKCpvdXRfcmluZykg eworCQkvKiBjYWNoZSBoaXQgKi8KKwkJciA9IDA7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisK Kwlzd2l0Y2ggKG1hcHBlci0+aHdfaXApIHsKKwljYXNlIEFNREdQVV9IV19JUF9HRlg6CisJY2Fz ZSBBTURHUFVfSFdfSVBfQ09NUFVURToKKwljYXNlIEFNREdQVV9IV19JUF9ETUE6CisJY2FzZSBB TURHUFVfSFdfSVBfVVZEOgorCWNhc2UgQU1ER1BVX0hXX0lQX1ZDRToKKwkJciA9IGFtZGdwdV9p ZGVudGl0eV9tYXAoYWRldiwgbWFwcGVyLCByaW5nLCBvdXRfcmluZyk7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCSpvdXRfcmluZyA9IE5VTEw7CisJCXIgPSAtRUlOVkFMOworCQlEUk1fRVJST1Io InVua25vd24gSFcgSVAgdHlwZTogJWRcbiIsIG1hcHBlci0+aHdfaXApOworCX0KKworb3V0X3Vu bG9jazoKKwltdXRleF91bmxvY2soJm1hcHBlci0+bG9jayk7CisJcmV0dXJuIHI7Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1OThlMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuaApAQCAtMCwwICsxLDUxIEBA CisvKgorICogQ29weXJpZ2h0IDIwMTcgVmFsdmUgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFV VEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKiBBdXRob3JzOiBBbmRyZXMgUm9kcmlndWV6CisgKi8KKworI2lmbmRlZiBfX0FNREdQ VV9RVUVVRV9NR1JfSF9fCisjZGVmaW5lIF9fQU1ER1BVX1FVRVVFX01HUl9IX18KKworI2luY2x1 ZGUgImFtZGdwdV9kZWZzLmgiCisjaW5jbHVkZSAiYW1kZ3B1X3JpbmcuaCIKKworc3RydWN0IGFt ZGdwdV9xdWV1ZV9tYXBwZXIgeworCWludCAJCWh3X2lwOworCXN0cnVjdCBtdXRleAlsb2NrOwor CS8qIHByb3RlY3RlZCBieSBsb2NrICovCisJc3RydWN0IGFtZGdwdV9yaW5nICpxdWV1ZV9tYXBb QU1ER1BVX01BWF9SSU5HU107Cit9OworCitzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciB7CisJc3Ry dWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXIgbWFwcGVyW0FNREdQVV9NQVhfSVBfTlVNXTsKK307CisK K2ludCBhbWRncHVfcXVldWVfbWdyX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJ CQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpOworaW50IGFtZGdwdV9xdWV1ZV9tZ3Jf ZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgc3RydWN0IGFtZGdwdV9xdWV1 ZV9tZ3IgKm1ncik7CitpbnQgYW1kZ3B1X3F1ZXVlX21ncl9tYXAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCisJCQkgc3RydWN0IGFtZGdwdV9xdWV1ZV9tZ3IgKm1nciwKKwkJCSBpbnQgaHdf aXAsIGludCBpbnN0YW5jZSwgaW50IHJpbmcsCisJCQkgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0 X3JpbmcpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5j CmluZGV4IDZhODVkYjAuLjEyZmM4MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9yaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuYwpAQCAtNDUsMjAgKzQ1LDY1IEBACiAgKiBwb2ludGVycyBhcmUgZXF1YWwsIHRo ZSByaW5nIGlzIGlkbGUuICBXaGVuIHRoZSBob3N0CiAgKiB3cml0ZXMgY29tbWFuZHMgdG8gdGhl IHJpbmcgYnVmZmVyLCBpdCBpbmNyZW1lbnRzIHRoZQogICogd3B0ci4gIFRoZSBHUFUgdGhlbiBz dGFydHMgZmV0Y2hpbmcgY29tbWFuZHMgYW5kIGV4ZWN1dGVzCiAgKiB0aGVtIHVudGlsIHRoZSBw b2ludGVycyBhcmUgZXF1YWwgYWdhaW4uCiAgKi8KIHN0YXRpYyBpbnQgYW1kZ3B1X2RlYnVnZnNf cmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcpOwogc3RhdGljIHZvaWQgYW1kZ3B1X2RlYnVnZnNfcmluZ19maW5pKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZyk7CiAKIC8qKgorICogYW1kZ3B1X3JpbmdfaXNfdmFsaWRf aW5kZXggLSBjaGVjayBpZiBhIHJpbmcgaWRleCBpcyB2YWxpZCBmb3IgYSBIVyBJUAorICoKKyAq IEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKKyAqIEBpcF90eXBlOiBUaGUgSFcgSVAgdG8g Y2hlY2sgYWdhaW5zdAorICogQHJpbmc6IHRoZSByaW5nIGluZGV4CisgKgorICogQ2hlY2sgaWYg QHJpbmcgaXMgYSB2YWxpZCBpbmRleCBmb3IgQGlwX3R5cGUgKGFsbCBhc2ljcykuCisgKiBSZXR1 cm5zIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4KKyAqLworaW50IGFtZGdwdV9yaW5n X2lzX3ZhbGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgIGlu dCBpcF90eXBlLCBpbnQgcmluZykKK3sKKwlpbnQgaXBfbnVtX3JpbmdzOworCisJc3dpdGNoIChp cF90eXBlKSB7CisJY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgorCQlpcF9udW1fcmluZ3MgPSBhZGV2 LT5nZngubnVtX2dmeF9yaW5nczsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfQ09NUFVU RToKKwkJaXBfbnVtX3JpbmdzID0gYWRldi0+Z2Z4Lm51bV9jb21wdXRlX3JpbmdzOworCQlicmVh azsKKwljYXNlIEFNREdQVV9IV19JUF9ETUE6CisJCWlwX251bV9yaW5ncyA9IGFkZXYtPnNkbWEu bnVtX2luc3RhbmNlczsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfVVZEOgorCQlpcF9u dW1fcmluZ3MgPSAxOworCQlicmVhazsKKwljYXNlIEFNREdQVV9IV19JUF9WQ0U6CisJCWlwX251 bV9yaW5ncyA9IGFkZXYtPnZjZS5udW1fcmluZ3M7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURS TV9FUlJPUigidW5rbm93biBpcCB0eXBlOiAlZFxuIiwgaXBfdHlwZSk7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCWlmIChyaW5nID49IGlwX251bV9yaW5ncykgeworCQlEUk1fRVJST1IoIlJp bmcgaW5kZXg6JWQgZXhjZWVkcyBtYXhpbXVtOiVkIGZvciBpcDolZFxuIiwKKwkJCQlyaW5nLCBp cF9udW1fcmluZ3MsIGlwX3R5cGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4g MDsKK30KKworLyoqCiAgKiBhbWRncHVfcmluZ19hbGxvYyAtIGFsbG9jYXRlIHNwYWNlIG9uIHRo ZSByaW5nIGJ1ZmZlcgogICoKICAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKICAqIEBy aW5nOiBhbWRncHVfcmluZyBzdHJ1Y3R1cmUgaG9sZGluZyByaW5nIGluZm9ybWF0aW9uCiAgKiBA bmR3OiBudW1iZXIgb2YgZHdvcmRzIHRvIGFsbG9jYXRlIGluIHRoZSByaW5nIGJ1ZmZlcgogICoK ICAqIEFsbG9jYXRlIEBuZHcgZHdvcmRzIGluIHRoZSByaW5nIGJ1ZmZlciAoYWxsIGFzaWNzKS4K ICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJlLgogICovCiBpbnQgYW1k Z3B1X3JpbmdfYWxsb2Moc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25lZCBuZHcpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAppbmRleCA2M2U1NjM5Li5jZjQx MWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKQEAgLTE3Niwy MCArMTc2LDIyIEBAIHN0cnVjdCBhbWRncHVfcmluZyB7CiAJdWludDY0X3QJCWN1cnJlbnRfY3R4 OwogCWNoYXIJCQluYW1lWzE2XTsKIAl1bnNpZ25lZAkJY29uZF9leGVfb2ZmczsKIAl1NjQJCQlj b25kX2V4ZV9ncHVfYWRkcjsKIAl2b2xhdGlsZSB1MzIJCSpjb25kX2V4ZV9jcHVfYWRkcjsKICNp ZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKIAlzdHJ1Y3QgZGVudHJ5ICplbnQ7CiAjZW5kaWYK IH07CiAKK2ludCBhbWRncHVfcmluZ19pc192YWxpZF9pbmRleChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKKwkJCSAgICAgICBpbnQgaHdfaXAsIGludCByaW5nKTsKIGludCBhbWRncHVfcmlu Z19hbGxvYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVuc2lnbmVkIG5kdyk7CiB2b2lkIGFt ZGdwdV9yaW5nX2luc2VydF9ub3Aoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBj b3VudCk7CiB2b2lkIGFtZGdwdV9yaW5nX2dlbmVyaWNfcGFkX2liKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywgc3RydWN0IGFtZGdwdV9pYiAqaWIpOwogdm9pZCBhbWRncHVfcmluZ19jb21taXQo c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKIHZvaWQgYW1kZ3B1X3JpbmdfdW5kbyhzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpOwogaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAkJICAgICB1bnNpZ25lZCBy aW5nX3NpemUsIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqaXJxX3NyYywKIAkJICAgICB1bnNpZ25l ZCBpcnFfdHlwZSk7CiB2b2lkIGFtZGdwdV9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmluZ19jbGVhcl9yaW5nKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZykKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2FtZC1nZngK