From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH v3 07/10] drm/imx: atomic phase 3 step 1: Use atomic configuration Date: Mon, 4 Jul 2016 15:40:36 +0800 Message-ID: <1467618039-7457-8-git-send-email-gnuiyl@gmail.com> References: <1467618039-7457-1-git-send-email-gnuiyl@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0081.outbound.protection.outlook.com [104.47.32.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9818F6E3C9 for ; Mon, 4 Jul 2016 08:16:01 +0000 (UTC) In-Reply-To: <1467618039-7457-1-git-send-email-gnuiyl@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Russell King , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org UmVwbGFjaW5nIGRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnKCkgYnkgZHJtX2F0b21pY19oZWxw ZXJfc2V0X2NvbmZpZygpCmFuZCBjb252ZXJ0aW5nIHRoZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRp b25zIHRvIGF0b21pYyBtYWtlIHVzIGJlIGFibGUKdG8gdXNlIGF0b21pYyBjb25maWd1cmF0aW9u cy4gIEFsbCBvZiB0aGVzZSBhbGxvdyB1cyB0byByZW1vdmUgdGhlCmNydGNfZnVuY3MtPm1vZGVf c2V0IGNhbGxiYWNrIGFzIGl0IGlzIG5vIGxvbmdlciB1c2VkLiAgQWxzbywgY2hhbmdlCnRoZSBw bGFuZV9mdW5jcy0+dXBkYXRlL2Rpc2FibGVfcGxhbmUgY2FsbGJhY2tzIGZyb20gdGhlIHRyYW5z aXRpb25hbAp2ZXJzaW9uIHRvIHRoZSBhdG9taWMgdmVyc2lvbi4gIEZ1cnRoZXJtb3JlLCBzd2l0 Y2hpbmcgdG8gdGhlIHB1cmUgYXRvbWljCnZlcnNpb24gb2Ygc2V0X2NvbmZpZyBjYWxsYmFjayBt ZWFucyB0aGF0IHdlIG1heSBpbXBsZW1lbnQgQ1JUQy9wbGFuZQphdG9taWMgY2hlY2tzIGJ5IHVz aW5nIHRoZSBuZXcgQ1JUQy9wbGFuZSBzdGF0ZXMgaW5zdGVhZCBvZiB0aGUgbGVnYWN5Cm9uZXMg YW5kIHdlIG1heSByZW1vdmUgdGhlIHByaXZhdGUgaXB1X2NydGMtPmVuYWJsZWQgc3RhdGUgd2hp Y2ggd2FzIGxlZnQKdGhlcmUgZm9yIHRoZSB0cmFuc2l0aW9uYWwgYXRvbWljIGhlbHBlcnMgaW4g cGhhc2UgMS4gIFBhZ2UgZmxpcCBpcyBhbHNvCnN3aXRjaGVkIHRvIHRoZSBhdG9taWMgdmVyc2lv bi4gIExhc3QsIHRoZSBsZWdhY3kgZnVuY3Rpb24KZHJtX2hlbHBlcl9kaXNhYmxlX3VudXNlZF9m dW5jdGlvbnMoKSBpcyByZW1vdmVkIGZyb20gLT5sb2FkIGluIG9yZGVyCm5vdCB0byBjb25mdXNl IHRoZSBhdG9taWMgZHJpdmVyLgoKU2lnbmVkLW9mZi1ieTogTGl1IFlpbmcgPGdudWl5bEBnbWFp bC5jb20+Ci0tLQp2Mi0+djM6CiogTmV3bHkgaW50cm9kdWNlZCwgYnV0IHRoaXMgY29udGFpbnMg c29tZSBpbXBvcnRhbnQgbG9naWMgaW4gcGF0Y2ggMDYvMTAKICAsIDA3LzEwIGFuZCAwOS8xMCBv ZiB2MiB0byBzdXBwb3J0IG5vbmJsb2NrIGF0b21pYyBjb21taXQoaW5jbHVkaW5nIHBhZ2UKICBm bGlwKSAtIHRoZSAtPnNldF9jb25maWcgYW5kIC0+dXBkYXRlX3BsYW5lL2Rpc2FibGVfcGxhbmUg aG9va3MgYXJlIHVwZGF0ZWQKICB0byBiZSBwdXJlIGF0b21pYyB2ZXJzaW9uLCBhbmQgLT5hdG9t aWNfY2hlY2svYXRvbWljX2NvbW1pdCBob29rcyBvZgogIGRybV9tb2RlX2NvbmZpZ19mdW5jcyBh cmUgd2lyZWQgdXAuCgogZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuYyB8ICA3NiAr KysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1jcnRjLmMgICB8IDIwOSAr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14 L2lwdXYzLXBsYW5lLmMgIHwgMTM1ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2lteC9pcHV2My1wbGFuZS5oICB8ICAgMiAtCiA0IGZpbGVzIGNoYW5nZWQsIDExNCBp bnNlcnRpb25zKCspLCAzMDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2lteC9pbXgtZHJtLWNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3Jl LmMKaW5kZXggZjZlNDRjMi4uZjE0YWQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lt eC9pbXgtZHJtLWNvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5j CkBAIC0xNSwxMCArMTUsMTQgQEAKICAqLwogI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgog I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KICNp bmNsdWRlIDxsaW51eC9mYi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVs cGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9k cm1fZ2VtX2NtYV9oZWxwZXIuaD4KQEAgLTQxLDYgKzQ1LDcgQEAgc3RydWN0IGlteF9kcm1fZGV2 aWNlIHsKIAlzdHJ1Y3QgaW14X2RybV9jcnRjCQkJKmNydGNbTUFYX0NSVENdOwogCXVuc2lnbmVk IGludAkJCQlwaXBlczsKIAlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYQkJCSpmYmhlbHBlcjsKKwlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZQkJCSpzdGF0ZTsKIH07CiAKIHN0cnVjdCBpbXhfZHJtX2NydGMg ewpAQCAtMTY5LDYgKzE3NCw2MyBAQCBzdGF0aWMgdm9pZCBpbXhfZHJtX291dHB1dF9wb2xsX2No YW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21v ZGVfY29uZmlnX2Z1bmNzIGlteF9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7CiAJLmZiX2NyZWF0 ZSA9IGRybV9mYl9jbWFfY3JlYXRlLAogCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW14X2RybV9v dXRwdXRfcG9sbF9jaGFuZ2VkLAorCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9j aGVjaywKKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKK307CisK K3N0YXRpYyB2b2lkIGlteF9kcm1fYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsK KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCXN0cnVjdCBkcm1f Z2VtX2NtYV9vYmplY3QgKmNtYV9vYmo7CisJc3RydWN0IGZlbmNlICpleGNsOworCXVuc2lnbmVk IHNoYXJlZF9jb3VudDsKKwlzdHJ1Y3QgZmVuY2UgKipzaGFyZWQ7CisJdW5zaWduZWQgaW50IGks IGo7CisJaW50IHJldDsKKworCS8qIFdhaXQgZm9yIGZlbmNlcy4gKi8KKwlmb3JfZWFjaF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCXBsYW5lX3N0YXRlID0g Y3J0Yy0+cHJpbWFyeS0+c3RhdGU7CisJCWlmIChwbGFuZV9zdGF0ZS0+ZmIpIHsKKwkJCWNtYV9v YmogPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKHBsYW5lX3N0YXRlLT5mYiwgMCk7CisJCQlpZiAo Y21hX29iai0+YmFzZS5kbWFfYnVmKSB7CisJCQkJcmV0ID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dl dF9mZW5jZXNfcmN1KAorCQkJCQljbWFfb2JqLT5iYXNlLmRtYV9idWYtPnJlc3YsICZleGNsLAor CQkJCQkmc2hhcmVkX2NvdW50LCAmc2hhcmVkKTsKKwkJCQlpZiAodW5saWtlbHkocmV0KSkKKwkJ CQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyAiCisJCQkJCQkgICJmb3IgYnVmZmVy XG4iKTsKKworCQkJCWlmIChleGNsKSB7CisJCQkJCWZlbmNlX3dhaXQoZXhjbCwgZmFsc2UpOwor CQkJCQlmZW5jZV9wdXQoZXhjbCk7CisJCQkJfQorCQkJCWZvciAoaiA9IDA7IGogPCBzaGFyZWRf Y291bnQ7IGkrKykgeworCQkJCQlmZW5jZV93YWl0KHNoYXJlZFtqXSwgZmFsc2UpOworCQkJCQlm ZW5jZV9wdXQoc2hhcmVkW2pdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhkZXYsIHN0YXRlKTsKKworCWRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSwgdHJ1ZSk7CisKKwlkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKGRldiwgc3RhdGUpOworCisJZHJtX2F0b21p Y19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfd2Fp dF9mb3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBf cGxhbmVzKGRldiwgc3RhdGUpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19o ZWxwZXJfZnVuY3MgaW14X2RybV9tb2RlX2NvbmZpZ19oZWxwZXJzID0geworCS5hdG9taWNfY29t bWl0X3RhaWwgPSBpbXhfZHJtX2F0b21pY19jb21taXRfdGFpbCwKIH07CiAKIC8qCkBAIC0yMTAs NiArMjcyLDcgQEAgc3RhdGljIGludCBpbXhfZHJtX2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lk dGggPSA0MDk2OwogCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDQwOTY7CiAJZHJtLT5t b2RlX2NvbmZpZy5mdW5jcyA9ICZpbXhfZHJtX21vZGVfY29uZmlnX2Z1bmNzOworCWRybS0+bW9k ZV9jb25maWcuaGVscGVyX3ByaXZhdGUgPSAmaW14X2RybV9tb2RlX2NvbmZpZ19oZWxwZXJzOwog CiAJZHJtX21vZGVfY29uZmlnX2luaXQoZHJtKTsKIApAQCAtMjUyLDcgKzMxNSw2IEBAIHN0YXRp YyBpbnQgaW14X2RybV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25l ZCBsb25nIGZsYWdzKQogCQlkZXZfd2Fybihkcm0tPmRldiwgIkludmFsaWQgbGVnYWN5ZmJfZGVw dGguICBEZWZhdWx0aW5nIHRvIDE2YnBwXG4iKTsKIAkJbGVnYWN5ZmJfZGVwdGggPSAxNjsKIAl9 Ci0JZHJtX2hlbHBlcl9kaXNhYmxlX3VudXNlZF9mdW5jdGlvbnMoZHJtKTsKIAlpbXhkcm0tPmZi aGVscGVyID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRybSwgbGVnYWN5ZmJfZGVwdGgsCiAJCQkJZHJt LT5tb2RlX2NvbmZpZy5udW1fY3J0YywgTUFYX0NSVEMpOwogCWlmIChJU19FUlIoaW14ZHJtLT5m YmhlbHBlcikpIHsKQEAgLTQ1NCw2ICs1MTYsNyBAQCBzdGF0aWMgaW50IGlteF9kcm1fcGxhdGZv cm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiBzdGF0aWMgaW50IGlteF9k cm1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRy bV9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW14X2RybV9kZXZpY2UgKmlt eGRybTsKIAogCS8qIFRoZSBkcm1fZGV2IGlzIE5VTEwgYmVmb3JlIC5sb2FkIGhvb2sgaXMgY2Fs bGVkICovCiAJaWYgKGRybV9kZXYgPT0gTlVMTCkKQEAgLTQ2MSwxNyArNTI0LDI2IEBAIHN0YXRp YyBpbnQgaW14X2RybV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWRybV9rbXNfaGVs cGVyX3BvbGxfZGlzYWJsZShkcm1fZGV2KTsKIAorCWlteGRybSA9IGRybV9kZXYtPmRldl9wcml2 YXRlOworCWlteGRybS0+c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKGRybV9kZXYp OworCWlmIChJU19FUlIoaW14ZHJtLT5zdGF0ZSkpIHsKKwkJZHJtX2ttc19oZWxwZXJfcG9sbF9l bmFibGUoZHJtX2Rldik7CisJCXJldHVybiBQVFJfRVJSKGlteGRybS0+c3RhdGUpOworCX0KKwog CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGlteF9kcm1fcmVzdW1lKHN0cnVjdCBkZXZpY2Ug KmRldikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOworCXN0cnVjdCBpbXhfZHJtX2RldmljZSAqaW14X2RybTsKIAogCWlmIChkcm1fZGV2ID09 IE5VTEwpCiAJCXJldHVybiAwOwogCi0JZHJtX2hlbHBlcl9yZXN1bWVfZm9yY2VfbW9kZShkcm1f ZGV2KTsKKwlpbXhfZHJtID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7CisJZHJtX2F0b21pY19oZWxw ZXJfcmVzdW1lKGRybV9kZXYsIGlteF9kcm0tPnN0YXRlKTsKIAlkcm1fa21zX2hlbHBlcl9wb2xs X2VuYWJsZShkcm1fZGV2KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2lteC9pcHV2My1jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYwpp bmRleCBmOWQ1ZDdjLi4zZTgyNTM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lw dXYzLWNydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYwpAQCAtMjQs OCArMjQsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAjaW5jbHVkZSA8bGludXgvY2xrLmg+ CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlvbi5o PgotI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFf aGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+CiAKQEAgLTM1LDIz ICszMyw2IEBACiAKICNkZWZpbmUgRFJJVkVSX0RFU0MJCSJpLk1YIElQVXYzIEdyYXBoaWNzIgog Ci1lbnVtIGlwdV9mbGlwX3N0YXR1cyB7Ci0JSVBVX0ZMSVBfTk9ORSwKLQlJUFVfRkxJUF9QRU5E SU5HLAotCUlQVV9GTElQX1NVQk1JVFRFRCwKLX07Ci0KLXN0cnVjdCBpcHVfZmxpcF93b3JrIHsK LQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCXVucmVmX3dvcms7Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0 CQkqYm87Ci0Jc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqcGFnZV9mbGlwX2V2ZW50 OwotCXN0cnVjdCB3b3JrX3N0cnVjdAkJZmVuY2Vfd29yazsKLQlzdHJ1Y3QgaXB1X2NydGMJCQkq Y3J0YzsKLQlzdHJ1Y3QgZmVuY2UJCQkqZXhjbDsKLQl1bnNpZ25lZAkJCXNoYXJlZF9jb3VudDsK LQlzdHJ1Y3QgZmVuY2UJCQkqKnNoYXJlZDsKLX07Ci0KIHN0cnVjdCBpcHVfY3J0YyB7CiAJc3Ry dWN0IGRldmljZQkJKmRldjsKIAlzdHJ1Y3QgZHJtX2NydGMJCWJhc2U7CkBAIC02MiwxMCArNDMs NiBAQCBzdHJ1Y3QgaXB1X2NydGMgewogCiAJc3RydWN0IGlwdV9kYwkJKmRjOwogCXN0cnVjdCBp cHVfZGkJCSpkaTsKLQlpbnQJCQllbmFibGVkOwotCWVudW0gaXB1X2ZsaXBfc3RhdHVzCWZsaXBf c3RhdGU7Ci0Jc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmZsaXBfcXVldWU7Ci0Jc3RydWN0IGlw dV9mbGlwX3dvcmsJKmZsaXBfd29yazsKIAlpbnQJCQlpcnE7CiB9OwogCkBAIC03NSwzNCArNTIs MjYgQEAgc3RhdGljIHZvaWQgaXB1X2NydGNfZW5hYmxlKHN0cnVjdCBpcHVfY3J0YyAqaXB1X2Ny dGMpCiB7CiAJc3RydWN0IGlwdV9zb2MgKmlwdSA9IGRldl9nZXRfZHJ2ZGF0YShpcHVfY3J0Yy0+ ZGV2LT5wYXJlbnQpOwogCi0JaWYgKGlwdV9jcnRjLT5lbmFibGVkKQotCQlyZXR1cm47Ci0KIAlp cHVfZGNfZW5hYmxlKGlwdSk7CiAJaXB1X2RjX2VuYWJsZV9jaGFubmVsKGlwdV9jcnRjLT5kYyk7 CiAJaXB1X2RpX2VuYWJsZShpcHVfY3J0Yy0+ZGkpOwotCWlwdV9jcnRjLT5lbmFibGVkID0gMTsK LQotCS8qCi0JICogSW4gb3JkZXIgbm90IHRvIGJlIHdhcm5lZCBvbiBlbmFibGluZyB2Ymxhbmsg ZmFpbHVyZSwKLQkgKiB3ZSBzaG91bGQgY2FsbCBkcm1fY3J0Y192Ymxhbmtfb24oKSBhZnRlciAt PmVuYWJsZWQgaXMgc2V0IHRvIDEuCi0JICovCi0JZHJtX2NydGNfdmJsYW5rX29uKCZpcHVfY3J0 Yy0+YmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGlwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGlwdV9j cnRjICppcHVfY3J0YykKIHsKIAlzdHJ1Y3QgaXB1X3NvYyAqaXB1ID0gZGV2X2dldF9kcnZkYXRh KGlwdV9jcnRjLT5kZXYtPnBhcmVudCk7Ci0KLQlpZiAoIWlwdV9jcnRjLT5lbmFibGVkKQotCQly ZXR1cm47CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmlwdV9jcnRjLT5iYXNlOwogCiAJaXB1 X2RjX2Rpc2FibGVfY2hhbm5lbChpcHVfY3J0Yy0+ZGMpOwogCWlwdV9kaV9kaXNhYmxlKGlwdV9j cnRjLT5kaSk7CiAJaXB1X2RjX2Rpc2FibGUoaXB1KTsKLQlpcHVfY3J0Yy0+ZW5hYmxlZCA9IDA7 CiAKLQlkcm1fY3J0Y192Ymxhbmtfb2ZmKCZpcHVfY3J0Yy0+YmFzZSk7CisJc3Bpbl9sb2NrX2ly cSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKKwlpZiAoY3J0Yy0+c3RhdGUtPmV2ZW50KSB7CisJ CWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLT5ldmVudCk7CisJ CWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmY3J0Yy0+ ZGV2LT5ldmVudF9sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQgaXB1X2NydGNfZHBtcyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQpAQCAtMTIzLDE1MSArOTIsMjEgQEAgc3RhdGljIHZv aWQgaXB1X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQogCX0KIH0K IAotc3RhdGljIHZvaWQgaXB1X2ZsaXBfdW5yZWZfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVj dCAqX193b3JrKQotewotCXN0cnVjdCBpcHVfZmxpcF93b3JrICp3b3JrID0KLQkJCWNvbnRhaW5l cl9vZihfX3dvcmssIHN0cnVjdCBpcHVfZmxpcF93b3JrLCB1bnJlZl93b3JrKTsKLQotCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHdvcmstPmJvKTsKLQlrZnJlZSh3b3JrKTsK LX0KLQotc3RhdGljIHZvaWQgaXB1X2ZsaXBfZmVuY2Vfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0 cnVjdCAqX193b3JrKQotewotCXN0cnVjdCBpcHVfZmxpcF93b3JrICp3b3JrID0KLQkJCWNvbnRh aW5lcl9vZihfX3dvcmssIHN0cnVjdCBpcHVfZmxpcF93b3JrLCBmZW5jZV93b3JrKTsKLQlpbnQg aTsKLQotCS8qIHdhaXQgZm9yIGFsbCBmZW5jZXMgYXR0YWNoZWQgdG8gdGhlIEZCIG9iaiB0byBz aWduYWwgKi8KLQlpZiAod29yay0+ZXhjbCkgewotCQlmZW5jZV93YWl0KHdvcmstPmV4Y2wsIGZh bHNlKTsKLQkJZmVuY2VfcHV0KHdvcmstPmV4Y2wpOwotCX0KLQlmb3IgKGkgPSAwOyBpIDwgd29y ay0+c2hhcmVkX2NvdW50OyBpKyspIHsKLQkJZmVuY2Vfd2FpdCh3b3JrLT5zaGFyZWRbaV0sIGZh bHNlKTsKLQkJZmVuY2VfcHV0KHdvcmstPnNoYXJlZFtpXSk7Ci0JfQotCi0Jd29yay0+Y3J0Yy0+ ZmxpcF9zdGF0ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKLX0KLQotc3RhdGljIGludCBpcHVfcGFn ZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCi0JCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50LAotCQl1aW50MzJf dCBwYWdlX2ZsaXBfZmxhZ3MpCi17Ci0Jc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29i aiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOwotCXN0cnVjdCBpcHVfY3J0YyAqaXB1 X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgaXB1X2ZsaXBfd29yayAqZmxpcF93 b3JrOwotCWludCByZXQ7Ci0KLQlpZiAoaXB1X2NydGMtPmZsaXBfc3RhdGUgIT0gSVBVX0ZMSVBf Tk9ORSkKLQkJcmV0dXJuIC1FQlVTWTsKLQotCXJldCA9IGlteF9kcm1fY3J0Y192YmxhbmtfZ2V0 KGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0JaWYgKHJldCkgewotCQlkZXZfZGJnKGlwdV9jcnRjLT5k ZXYsICJmYWlsZWQgdG8gYWNxdWlyZSB2YmxhbmsgY291bnRlclxuIik7Ci0JCWxpc3RfZGVsKCZl dmVudC0+YmFzZS5saW5rKTsKLQotCQlyZXR1cm4gcmV0OwotCX0KLQotCWZsaXBfd29yayA9IGt6 YWxsb2Moc2l6ZW9mICpmbGlwX3dvcmssIEdGUF9LRVJORUwpOwotCWlmICghZmxpcF93b3JrKSB7 Ci0JCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gcHV0X3ZibGFuazsKLQl9Ci0JSU5JVF9XT1JLKCZm bGlwX3dvcmstPnVucmVmX3dvcmssIGlwdV9mbGlwX3VucmVmX3dvcmtfZnVuYyk7Ci0JZmxpcF93 b3JrLT5wYWdlX2ZsaXBfZXZlbnQgPSBldmVudDsKLQotCS8qIGdldCBCTyBiYWNraW5nIHRoZSBv bGQgZnJhbWVidWZmZXIgYW5kIHRha2UgYSByZWZlcmVuY2UgKi8KLQlmbGlwX3dvcmstPmJvID0g JmRybV9mYl9jbWFfZ2V0X2dlbV9vYmooY3J0Yy0+cHJpbWFyeS0+ZmIsIDApLT5iYXNlOwotCWRy bV9nZW1fb2JqZWN0X3JlZmVyZW5jZShmbGlwX3dvcmstPmJvKTsKLQotCWlwdV9jcnRjLT5mbGlw X3dvcmsgPSBmbGlwX3dvcms7Ci0JLyoKLQkgKiBJZiB0aGUgb2JqZWN0IGhhcyBhIERNQUJVRiBh dHRhY2hlZCwgd2UgbmVlZCB0byB3YWl0IG9uIGl0cyBmZW5jZXMKLQkgKiBpZiB0aGVyZSBhcmUg YW55LgotCSAqLwotCWlmIChjbWFfb2JqLT5iYXNlLmRtYV9idWYpIHsKLQkJSU5JVF9XT1JLKCZm bGlwX3dvcmstPmZlbmNlX3dvcmssIGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyk7Ci0JCWZsaXBf d29yay0+Y3J0YyA9IGlwdV9jcnRjOwotCi0JCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRf ZmVuY2VzX3JjdSgKLQkJCQljbWFfb2JqLT5iYXNlLmRtYV9idWYtPnJlc3YsICZmbGlwX3dvcmst PmV4Y2wsCi0JCQkJJmZsaXBfd29yay0+c2hhcmVkX2NvdW50LCAmZmxpcF93b3JrLT5zaGFyZWQp OwotCi0JCWlmICh1bmxpa2VseShyZXQpKSB7Ci0JCQlEUk1fRVJST1IoImZhaWxlZCB0byBnZXQg ZmVuY2VzIGZvciBidWZmZXJcbiIpOwotCQkJZ290byBmcmVlX2ZsaXBfd29yazsKLQkJfQotCi0J CS8qIE5vIG5lZWQgdG8gcXVldWUgdGhlIHdvcmtlciBpZiB0aGUgYXJlIG5vIGZlbmNlcyAqLwot CQlpZiAoIWZsaXBfd29yay0+ZXhjbCAmJiAhZmxpcF93b3JrLT5zaGFyZWRfY291bnQpIHsKLQkJ CWlwdV9jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZMSVBfU1VCTUlUVEVEOwotCQl9IGVsc2Ugewot CQkJaXB1X2NydGMtPmZsaXBfc3RhdGUgPSBJUFVfRkxJUF9QRU5ESU5HOwotCQkJcXVldWVfd29y ayhpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSwKLQkJCQkgICAmZmxpcF93b3JrLT5mZW5jZV93b3JrKTsK LQkJfQotCX0gZWxzZSB7Ci0JCWlwdV9jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZMSVBfU1VCTUlU VEVEOwotCX0KLQotCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZSkKLQkJZHJtX2F0b21pY19zZXRf ZmJfZm9yX3BsYW5lKGNydGMtPnByaW1hcnktPnN0YXRlLCBmYik7Ci0KLQlyZXR1cm4gMDsKLQot ZnJlZV9mbGlwX3dvcms6Ci0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoZmxp cF93b3JrLT5ibyk7Ci0Ja2ZyZWUoZmxpcF93b3JrKTsKLQlpcHVfY3J0Yy0+ZmxpcF93b3JrID0g TlVMTDsKLXB1dF92Ymxhbms6Ci0JaW14X2RybV9jcnRjX3ZibGFua19wdXQoaXB1X2NydGMtPmlt eF9jcnRjKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Ny dGNfZnVuY3MgaXB1X2NydGNfZnVuY3MgPSB7Ci0JLnNldF9jb25maWcgPSBkcm1fY3J0Y19oZWxw ZXJfc2V0X2NvbmZpZywKKwkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25m aWcsCiAJLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVhbnVwLAotCS5wYWdlX2ZsaXAgPSBpcHVfcGFn ZV9mbGlwLAorCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCiAJLnJl c2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKIH07 CiAKLXN0YXRpYyB2b2lkIGlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChzdHJ1Y3QgaXB1X2NydGMg KmlwdV9jcnRjKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRybSA9IGlwdV9jcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9 IGlwdV9jcnRjLT5mbGlwX3dvcms7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZHJtLT5ldmVudF9s b2NrLCBmbGFncyk7Ci0JaWYgKHdvcmstPnBhZ2VfZmxpcF9ldmVudCkKLQkJZHJtX2NydGNfc2Vu ZF92YmxhbmtfZXZlbnQoJmlwdV9jcnRjLT5iYXNlLAotCQkJCQkgICB3b3JrLT5wYWdlX2ZsaXBf ZXZlbnQpOwotCWlteF9kcm1fY3J0Y192YmxhbmtfcHV0KGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7Ci19Ci0KIHN0 YXRpYyBpcnFyZXR1cm5fdCBpcHVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQog ewogCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSBkZXZfaWQ7CiAKIAlpbXhfZHJtX2hhbmRs ZV92YmxhbmsoaXB1X2NydGMtPmlteF9jcnRjKTsKIAotCWlmIChpcHVfY3J0Yy0+ZmxpcF9zdGF0 ZSA9PSBJUFVfRkxJUF9TVUJNSVRURUQpIHsKLQkJc3RydWN0IGlwdV9wbGFuZSAqcGxhbmUgPSBp cHVfY3J0Yy0+cGxhbmVbMF07Ci0KLQkJaXB1X3BsYW5lX3NldF9iYXNlKHBsYW5lLCBpcHVfY3J0 Yy0+YmFzZS5wcmltYXJ5LT5mYik7Ci0JCWlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChpcHVfY3J0 Yyk7Ci0JCXF1ZXVlX3dvcmsoaXB1X2NydGMtPmZsaXBfcXVldWUsCi0JCQkgICAmaXB1X2NydGMt PmZsaXBfd29yay0+dW5yZWZfd29yayk7Ci0JCWlwdV9jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZM SVBfTk9ORTsKLQl9Ci0KIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKQEAgLTMxMCw5ICsxNDks MjYgQEAgc3RhdGljIHZvaWQgaXB1X2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IHN0YXRpYyBpbnQgaXB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAkJCQkgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKKwl1MzIgcHJpbWFyeV9wbGFu ZV9tYXNrID0gMSA8PCBkcm1fcGxhbmVfaW5kZXgoY3J0Yy0+cHJpbWFyeSk7CisKKwlpZiAoc3Rh dGUtPmFjdGl2ZSAmJiAocHJpbWFyeV9wbGFuZV9tYXNrICYgc3RhdGUtPnBsYW5lX21hc2spID09 IDApCisJCXJldHVybiAtRUlOVkFMOworCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGlw dV9jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreworCXNwaW5fbG9ja19pcnEoJmNydGMt PmRldi0+ZXZlbnRfbG9jayk7CisJaWYgKGNydGMtPnN0YXRlLT5ldmVudCkgeworCQlXQVJOX09O KGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykpOworCQlkcm1fY3J0Y19hcm1fdmJsYW5rX2V2ZW50 KGNydGMsIGNydGMtPnN0YXRlLT5ldmVudCk7CisJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7 CisJfQorCXNwaW5fdW5sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKK30KKwogc3Rh dGljIHZvaWQgaXB1X2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTM3MSwyNSArMjI3LDE3 IEBAIHN0YXRpYyB2b2lkIGlwdV9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpj cnRjKQogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaXB1X2hlbHBl cl9mdW5jcyA9IHsKIAkuZHBtcyA9IGlwdV9jcnRjX2RwbXMsCiAJLm1vZGVfZml4dXAgPSBpcHVf Y3J0Y19tb2RlX2ZpeHVwLAotCS5tb2RlX3NldCA9IGRybV9oZWxwZXJfY3J0Y19tb2RlX3NldCwK IAkubW9kZV9zZXRfbm9mYiA9IGlwdV9jcnRjX21vZGVfc2V0X25vZmIsCiAJLnByZXBhcmUgPSBp cHVfY3J0Y19wcmVwYXJlLAogCS5jb21taXQgPSBpcHVfY3J0Y19jb21taXQsCiAJLmF0b21pY19j aGVjayA9IGlwdV9jcnRjX2F0b21pY19jaGVjaywKKwkuYXRvbWljX2JlZ2luID0gaXB1X2NydGNf YXRvbWljX2JlZ2luLAogfTsKIAogc3RhdGljIGludCBpcHVfZW5hYmxlX3ZibGFuayhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YyA9IHRvX2lwdV9j cnRjKGNydGMpOwogCi0JLyoKLQkgKiAtPmNvbW1pdCBpcyBkb25lIGFmdGVyIC0+bW9kZV9zZXQg aW4gZHJtX2NydGNfaGVscGVyX3NldF9tb2RlKCksCi0JICogc28gd2FpdGluZyBmb3IgdmJsYW5r IGluIGRybV9wbGFuZV9oZWxwZXJfY29tbWl0KCkgd2lsbCB0aW1lb3V0LgotCSAqIENoZWNrIHRo ZSBzdGF0ZSBoZXJlIHRvIGF2b2lkIHRoZSB3YWl0aW5nLgotCSAqLwotCWlmICghaXB1X2NydGMt PmVuYWJsZWQpCi0JCXJldHVybiAtRUlOVkFMOwotCiAJZW5hYmxlX2lycShpcHVfY3J0Yy0+aXJx KTsKIAogCXJldHVybiAwOwpAQCAtNTA4LDggKzM1Niw2IEBAIHN0YXRpYyBpbnQgaXB1X2NydGNf aW5pdChzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjLAogCS8qIE9ubHkgZW5hYmxlIElSUSB3aGVu IHdlIGFjdHVhbGx5IG5lZWQgaXQgdG8gdHJpZ2dlciB3b3JrLiAqLwogCWRpc2FibGVfaXJxKGlw dV9jcnRjLT5pcnEpOwogCi0JaXB1X2NydGMtPmZsaXBfcXVldWUgPSBjcmVhdGVfc2luZ2xldGhy ZWFkX3dvcmtxdWV1ZSgiaXB1LWNydGMtZmxpcCIpOwotCiAJcmV0dXJuIDA7CiAKIGVycl9wdXRf cGxhbmUxX3JlczoKQEAgLTU1NCw3ICs0MDAsNiBAQCBzdGF0aWMgdm9pZCBpcHVfZHJtX3VuYmlu ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAogCWlteF9kcm1f cmVtb3ZlX2NydGMoaXB1X2NydGMtPmlteF9jcnRjKTsKIAotCWRlc3Ryb3lfd29ya3F1ZXVlKGlw dV9jcnRjLT5mbGlwX3F1ZXVlKTsKIAlpcHVfcHV0X3Jlc291cmNlcyhpcHVfY3J0Yyk7CiAJaWYg KGlwdV9jcnRjLT5wbGFuZVsxXSkKIAkJaXB1X3BsYW5lX3B1dF9yZXNvdXJjZXMoaXB1X2NydGMt PnBsYW5lWzFdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuYwppbmRleCAxYTEyNmZlLi4xNjQz MzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1wbGFuZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8K IAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CkBAIC01NSwx MjIgKzU2LDYgQEAgaW50IGlwdV9wbGFuZV9pcnEoc3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5l KQogCQkJCSAgICAgSVBVX0lSUV9FT0YpOwogfQogCi1pbnQgaXB1X3BsYW5lX3NldF9iYXNlKHN0 cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCi17 Ci0Jc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29ialszXSwgKm9sZF9jbWFfb2JqWzNd OwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gaXB1X3BsYW5lLT5iYXNlLnN0YXRl OwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IHN0YXRlLT5mYjsKLQl1bnNpZ25l ZCBsb25nIGViYSwgdWJvLCB2Ym8sIG9sZF9lYmEsIG9sZF91Ym8sIG9sZF92Ym87Ci0JaW50IGFj dGl2ZSwgaTsKLQlpbnQgeCA9IHN0YXRlLT5zcmNfeCA+PiAxNjsKLQlpbnQgeSA9IHN0YXRlLT5z cmNfeSA+PiAxNjsKLQotCWZvciAoaSA9IDA7IGkgPCBkcm1fZm9ybWF0X251bV9wbGFuZXMoZmIt PnBpeGVsX2Zvcm1hdCk7IGkrKykgewotCQljbWFfb2JqW2ldID0gZHJtX2ZiX2NtYV9nZXRfZ2Vt X29iaihmYiwgaSk7Ci0JCWlmICghY21hX29ialtpXSkgewotCQkJRFJNX0RFQlVHX0tNUygicGxh bmUgJWQgZW50cnkgaXMgbnVsbC5cbiIsIGkpOwotCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCX0KLQl9 Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZHJtX2Zvcm1hdF9udW1fcGxhbmVzKG9sZF9mYi0+cGl4ZWxf Zm9ybWF0KTsgaSsrKSB7Ci0JCW9sZF9jbWFfb2JqW2ldID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29i aihvbGRfZmIsIGkpOwotCQlpZiAoIW9sZF9jbWFfb2JqW2ldKSB7Ci0JCQlEUk1fREVCVUdfS01T KCJwbGFuZSAlZCBlbnRyeSBpcyBudWxsLlxuIiwgaSk7Ci0JCQlyZXR1cm4gLUVGQVVMVDsKLQkJ fQotCX0KLQotCWViYSA9IGNtYV9vYmpbMF0tPnBhZGRyICsgZmItPm9mZnNldHNbMF0gKwotCSAg ICAgIGZiLT5waXRjaGVzWzBdICogeSArIChmYi0+Yml0c19wZXJfcGl4ZWwgPj4gMykgKiB4Owot Ci0JaWYgKGViYSAmIDB4NykgewotCQlEUk1fREVCVUdfS01TKCJiYXNlIGFkZHJlc3MgbXVzdCBi ZSBhIG11bHRpcGxlIG9mIDguXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JaWYgKGZi LT5waXRjaGVzWzBdIDwgMSB8fCBmYi0+cGl0Y2hlc1swXSA+IDE2Mzg0KSB7Ci0JCURSTV9ERUJV R19LTVMoInBpdGNoZXMgb3V0IG9mIHJhbmdlLlxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0K LQotCWlmIChmYi0+cGl0Y2hlc1swXSAhPSBvbGRfZmItPnBpdGNoZXNbMF0pIHsKLQkJRFJNX0RF QlVHX0tNUygicGl0Y2hlcyBtdXN0IG5vdCBjaGFuZ2Ugd2hpbGUgcGxhbmUgaXMgZW5hYmxlZC5c biIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlzd2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQp IHsKLQljYXNlIERSTV9GT1JNQVRfWVVWNDIwOgotCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0MjA6Ci0J CS8qCi0JCSAqIE11bHRpcGxhbmFyIGZvcm1hdHMgaGF2ZSB0byBtZWV0IHRoZSBmb2xsb3dpbmcg cmVzdHJpY3Rpb25zOgotCQkgKiAtIFRoZSAodXAgdG8pIHRocmVlIHBsYW5lIGFkZHJlc3NlcyBh cmUgRUJBLCBFQkErVUJPLCBFQkErVkJPCi0JCSAqIC0gRUJBLCBVQk8gYW5kIFZCTyBhcmUgYSBt dWx0aXBsZSBvZiA4Ci0JCSAqIC0gVUJPIGFuZCBWQk8gYXJlIHVuc2lnbmVkIGFuZCBub3QgbGFy Z2VyIHRoYW4gMHhmZmZmZjgKLQkJICogLSBPbmx5IEVCQSBtYXkgYmUgY2hhbmdlZCB3aGlsZSBz Y2Fub3V0IGlzIGFjdGl2ZQotCQkgKiAtIFRoZSBzdHJpZGVzIG9mIFUgYW5kIFYgcGxhbmVzIG11 c3QgYmUgaWRlbnRpY2FsLgotCQkgKi8KLQkJdWJvID0gY21hX29ialsxXS0+cGFkZHIgKyBmYi0+ b2Zmc2V0c1sxXSArCi0JCSAgICAgIGZiLT5waXRjaGVzWzFdICogeSAvIDIgKyB4IC8gMiAtIGVi YTsKLQkJdmJvID0gY21hX29ialsyXS0+cGFkZHIgKyBmYi0+b2Zmc2V0c1syXSArCi0JCSAgICAg IGZiLT5waXRjaGVzWzJdICogeSAvIDIgKyB4IC8gMiAtIGViYTsKLQotCQlvbGRfZWJhID0gb2xk X2NtYV9vYmpbMF0tPnBhZGRyICsgb2xkX2ZiLT5vZmZzZXRzWzBdICsKLQkJICAgICAgb2xkX2Zi LT5waXRjaGVzWzBdICogeSArCi0JCSAgICAgIChvbGRfZmItPmJpdHNfcGVyX3BpeGVsID4+IDMp ICogeDsKLQkJb2xkX3VibyA9IG9sZF9jbWFfb2JqWzFdLT5wYWRkciArIG9sZF9mYi0+b2Zmc2V0 c1sxXSArCi0JCSAgICAgIG9sZF9mYi0+cGl0Y2hlc1sxXSAqIHkgLyAyICsgeCAvIDIgLSBvbGRf ZWJhOwotCQlvbGRfdmJvID0gb2xkX2NtYV9vYmpbMl0tPnBhZGRyICsgb2xkX2ZiLT5vZmZzZXRz WzJdICsKLQkJICAgICAgb2xkX2ZiLT5waXRjaGVzWzJdICogeSAvIDIgKyB4IC8gMiAtIG9sZF9l YmE7Ci0KLQkJaWYgKCh1Ym8gJiAweDcpIHx8ICh2Ym8gJiAweDcpKSB7Ci0JCQlEUk1fREVCVUdf S01TKCJVL1YgYnVmZmVyIG9mZnNldHMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDguXG4iKTsKLQkJ CXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJaWYgKCh1Ym8gPiAweGZmZmZmOCkgfHwgKHZibyA+ IDB4ZmZmZmY4KSkgewotCQkJRFJNX0RFQlVHX0tNUygiVS9WIGJ1ZmZlciBvZmZzZXRzIG11c3Qg YmUgcG9zaXRpdmUgYW5kIG5vdCBsYXJnZXIgdGhhbiAweGZmZmZmOC5cbiIpOwotCQkJcmV0dXJu IC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAob2xkX3VibyAhPSB1Ym8gfHwgb2xkX3ZibyAhPSB2Ym8p IHsKLQkJCURSTV9ERUJVR19LTVMoIlUvViBidWZmZXIgb2Zmc2V0cyBtdXN0IG5vdCBjaGFuZ2Ug d2hpbGUgcGxhbmUgaXMgZW5hYmxlZC5cbiIpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQot CQlpZiAoZmItPnBpdGNoZXNbMV0gIT0gZmItPnBpdGNoZXNbMl0pIHsKLQkJCURSTV9ERUJVR19L TVMoIlUvViBwaXRjaGVzIG11c3QgYmUgaWRlbnRpY2FsLlxuIik7Ci0JCQlyZXR1cm4gLUVJTlZB TDsKLQkJfQotCi0JCWlmIChmYi0+cGl0Y2hlc1sxXSA8IDEgfHwgZmItPnBpdGNoZXNbMV0gPiAx NjM4NCkgewotCQkJRFJNX0RFQlVHX0tNUygiVS9WIHBpdGNoZXMgb3V0IG9mIHJhbmdlLlxuIik7 Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWlmIChvbGRfZmItPnBpdGNoZXNbMV0gIT0g ZmItPnBpdGNoZXNbMV0pIHsKLQkJCURSTV9ERUJVR19LTVMoIlUvViBwaXRjaGVzIG11c3Qgbm90 IGNoYW5nZSB3aGlsZSBwbGFuZSBpcyBlbmFibGVkLlxuIik7Ci0JCQlyZXR1cm4gLUVJTlZBTDsK LQkJfQotCi0JCWRldl9kYmcoaXB1X3BsYW5lLT5iYXNlLmRldi0+ZGV2LAotCQkJInBoeXMgPSAl cGFkICVwYWQgJXBhZCwgeCA9ICVkLCB5ID0gJWQiLAotCQkJJmNtYV9vYmpbMF0tPnBhZGRyLCAm Y21hX29ialsxXS0+cGFkZHIsCi0JCQkmY21hX29ialsyXS0+cGFkZHIsIHgsIHkpOwotCQlicmVh azsKLQlkZWZhdWx0OgotCQlkZXZfZGJnKGlwdV9wbGFuZS0+YmFzZS5kZXYtPmRldiwgInBoeXMg PSAlcGFkLCB4ID0gJWQsIHkgPSAlZCIsCi0JCQkmY21hX29ialswXS0+cGFkZHIsIHgsIHkpOwot CQlicmVhazsKLQl9Ci0KLQlhY3RpdmUgPSBpcHVfaWRtYWNfZ2V0X2N1cnJlbnRfYnVmZmVyKGlw dV9wbGFuZS0+aXB1X2NoKTsKLQlpcHVfY3BtZW1fc2V0X2J1ZmZlcihpcHVfcGxhbmUtPmlwdV9j aCwgIWFjdGl2ZSwgZWJhKTsKLQlpcHVfaWRtYWNfc2VsZWN0X2J1ZmZlcihpcHVfcGxhbmUtPmlw dV9jaCwgIWFjdGl2ZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGlubGluZSB1bnNpZ25l ZCBsb25nCiBkcm1fcGxhbmVfc3RhdGVfdG9fZWJhKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0 YXRlKQogewpAQCAtMzYwLDggKzI0NSw4IEBAIHN0YXRpYyB2b2lkIGlwdV9wbGFuZV9kZXN0cm95 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w bGFuZV9mdW5jcyBpcHVfcGxhbmVfZnVuY3MgPSB7Ci0JLnVwZGF0ZV9wbGFuZQk9IGRybV9wbGFu ZV9oZWxwZXJfdXBkYXRlLAotCS5kaXNhYmxlX3BsYW5lCT0gZHJtX3BsYW5lX2hlbHBlcl9kaXNh YmxlLAorCS51cGRhdGVfcGxhbmUJPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCisJ LmRpc2FibGVfcGxhbmUJPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAogCS5kZXN0 cm95CT0gaXB1X3BsYW5lX2Rlc3Ryb3ksCiAJLnJlc2V0CQk9IGRybV9hdG9taWNfaGVscGVyX3Bs YW5lX3Jlc2V0LAogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlCT0gZHJtX2F0b21pY19oZWxwZXJf cGxhbmVfZHVwbGljYXRlX3N0YXRlLApAQCAtMzgwLDEwICsyNjUsMTggQEAgc3RhdGljIGludCBp cHVfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCiAJLyogT2sg dG8gZGlzYWJsZSAqLwogCWlmICghZmIpCi0JCXJldHVybiBvbGRfZmIgPyAwIDogLUVJTlZBTDsK KwkJcmV0dXJuIDA7CisKKwlpZiAoIXN0YXRlLT5jcnRjKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWNydGNfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LT5zdGF0ZSwgc3RhdGUtPmNydGMpOworCWlmIChXQVJOX09OKCFjcnRjX3N0YXRlKSkKKwkJcmV0 dXJuIC1FSU5WQUw7CiAKIAkvKiBDUlRDIHNob3VsZCBiZSBlbmFibGVkICovCi0JaWYgKCFzdGF0 ZS0+Y3J0Yy0+ZW5hYmxlZCkKKwlpZiAoIWNydGNfc3RhdGUtPmVuYWJsZSkKIAkJcmV0dXJuIC1F SU5WQUw7CiAKIAkvKiBubyBzY2FsaW5nICovCkBAIC0zOTEsOCArMjg0LDYgQEAgc3RhdGljIGlu dCBpcHVfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCSAgICBz dGF0ZS0+c3JjX2ggPj4gMTYgIT0gc3RhdGUtPmNydGNfaCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK LQljcnRjX3N0YXRlID0gc3RhdGUtPmNydGMtPnN0YXRlOwotCiAJc3dpdGNoIChwbGFuZS0+dHlw ZSkgewogCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKIAkJLyogZnVsbCBwbGFuZSBkb2Vz bid0IHN1cHBvcnQgcGFydGlhbCBvZmYgc2NyZWVuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaW14L2lwdXYzLXBsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5l LmgKaW5kZXggYzUxYTQ0Yi4uMzM4Yjg4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lt eC9pcHV2My1wbGFuZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuaApA QCAtMzcsOCArMzcsNiBAQCBpbnQgaXB1X3BsYW5lX21vZGVfc2V0KHN0cnVjdCBpcHVfcGxhbmUg KnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCSAgICAgICB1aW50MzJfdCBzcmNfeCwg dWludDMyX3Qgc3JjX3ksIHVpbnQzMl90IHNyY193LAogCQkgICAgICAgdWludDMyX3Qgc3JjX2gs IGJvb2wgaW50ZXJsYWNlZCk7CiAKLWludCBpcHVfcGxhbmVfc2V0X2Jhc2Uoc3RydWN0IGlwdV9w bGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKLQogaW50IGlwdV9wbGFu ZV9nZXRfcmVzb3VyY2VzKHN0cnVjdCBpcHVfcGxhbmUgKnBsYW5lKTsKIHZvaWQgaXB1X3BsYW5l X3B1dF9yZXNvdXJjZXMoc3RydWN0IGlwdV9wbGFuZSAqcGxhbmUpOwogCi0tIAoyLjcuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==