From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH v4 07/10] drm/imx: atomic phase 3 step 1: Use atomic configuration Date: Fri, 8 Jul 2016 17:40:59 +0800 Message-ID: <1467970862-28012-8-git-send-email-gnuiyl@gmail.com> References: <1467970862-28012-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 NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0078.outbound.protection.outlook.com [104.47.36.78]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3984D6E188 for ; Fri, 8 Jul 2016 09:41:36 +0000 (UTC) In-Reply-To: <1467970862-28012-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+Ci0tLQp2My0+djQ6CiogTm9uZS4KCnYyLT52MzoKKiBOZXdseSBpbnRyb2R1Y2VkLCBi dXQgdGhpcyBjb250YWlucyBzb21lIGltcG9ydGFudCBsb2dpYyBpbiBwYXRjaCAwNi8xMAogICwg MDcvMTAgYW5kIDA5LzEwIG9mIHYyIHRvIHN1cHBvcnQgbm9uYmxvY2sgYXRvbWljIGNvbW1pdChp bmNsdWRpbmcgcGFnZQogIGZsaXApIC0gdGhlIC0+c2V0X2NvbmZpZyBhbmQgLT51cGRhdGVfcGxh bmUvZGlzYWJsZV9wbGFuZSBob29rcyBhcmUgdXBkYXRlZAogIHRvIGJlIHB1cmUgYXRvbWljIHZl cnNpb24sIGFuZCAtPmF0b21pY19jaGVjay9hdG9taWNfY29tbWl0IGhvb2tzIG9mCiAgZHJtX21v ZGVfY29uZmlnX2Z1bmNzIGFyZSB3aXJlZCB1cC4KCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC1k cm0tY29yZS5jIHwgIDc2ICsrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYz LWNydGMuYyAgIHwgMjA5ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuYyAgfCAxMzUgKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmggIHwgICAyIC0KIDQgZmls ZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDMwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jIGIvZHJpdmVycy9ncHUvZHJt L2lteC9pbXgtZHJtLWNvcmUuYwppbmRleCBmNmU0NGMyLi5mMTRhZDJiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p bXgvaW14LWRybS1jb3JlLmMKQEAgLTE1LDEwICsxNSwxNCBAQAogICovCiAjaW5jbHVkZSA8bGlu dXgvY29tcG9uZW50Lmg+CiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVk ZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgpAQCAtNDEsNiArNDUsNyBAQCBz dHJ1Y3QgaW14X2RybV9kZXZpY2UgewogCXN0cnVjdCBpbXhfZHJtX2NydGMJCQkqY3J0Y1tNQVhf Q1JUQ107CiAJdW5zaWduZWQgaW50CQkJCXBpcGVzOwogCXN0cnVjdCBkcm1fZmJkZXZfY21hCQkJ KmZiaGVscGVyOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCQkJKnN0YXRlOwogfTsKIAogc3Ry dWN0IGlteF9kcm1fY3J0YyB7CkBAIC0xNjksNiArMTc0LDYzIEBAIHN0YXRpYyB2b2lkIGlteF9k cm1fb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgaW14X2RybV9tb2RlX2NvbmZpZ19mdW5j cyA9IHsKIAkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCiAJLm91dHB1dF9wb2xsX2No YW5nZWQgPSBpbXhfZHJtX291dHB1dF9wb2xsX2NoYW5nZWQsCisJLmF0b21pY19jaGVjayA9IGRy bV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29tbWl0LAorfTsKKworc3RhdGljIHZvaWQgaW14X2RybV9hdG9taWNfY29tbWl0X3RhaWwo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+ZGV2OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGU7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iajsKKwlzdHJ1Y3QgZmVuY2Ug KmV4Y2w7CisJdW5zaWduZWQgc2hhcmVkX2NvdW50OworCXN0cnVjdCBmZW5jZSAqKnNoYXJlZDsK Kwl1bnNpZ25lZCBpbnQgaSwgajsKKwlpbnQgcmV0OworCisJLyogV2FpdCBmb3IgZmVuY2VzLiAq LworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsK KwkJcGxhbmVfc3RhdGUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZTsKKwkJaWYgKHBsYW5lX3N0YXRl LT5mYikgeworCQkJY21hX29iaiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmoocGxhbmVfc3RhdGUt PmZiLCAwKTsKKwkJCWlmIChjbWFfb2JqLT5iYXNlLmRtYV9idWYpIHsKKwkJCQlyZXQgPSByZXNl cnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3UoCisJCQkJCWNtYV9vYmotPmJhc2UuZG1hX2J1 Zi0+cmVzdiwgJmV4Y2wsCisJCQkJCSZzaGFyZWRfY291bnQsICZzaGFyZWQpOworCQkJCWlmICh1 bmxpa2VseShyZXQpKQorCQkJCQlEUk1fRVJST1IoImZhaWxlZCB0byBnZXQgZmVuY2VzICIKKwkJ CQkJCSAgImZvciBidWZmZXJcbiIpOworCisJCQkJaWYgKGV4Y2wpIHsKKwkJCQkJZmVuY2Vfd2Fp dChleGNsLCBmYWxzZSk7CisJCQkJCWZlbmNlX3B1dChleGNsKTsKKwkJCQl9CisJCQkJZm9yIChq ID0gMDsgaiA8IHNoYXJlZF9jb3VudDsgaSsrKSB7CisJCQkJCWZlbmNlX3dhaXQoc2hhcmVkW2pd LCBmYWxzZSk7CisJCQkJCWZlbmNlX3B1dChzaGFyZWRbal0pOworCQkJCX0KKwkJCX0KKwkJfQor CX0KKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKGRldiwgc3Rh dGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIHN0YXRlLCB0cnVl KTsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoZGV2LCBzdGF0 ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdGF0ZSk7CisKKwlkcm1f YXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOworCisJZHJtX2F0b21p Y19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZHJtX21vZGVfY29uZmlnX2hlbHBlcl9mdW5jcyBpbXhfZHJtX21vZGVfY29uZmlnX2hlbHBlcnMg PSB7CisJLmF0b21pY19jb21taXRfdGFpbCA9IGlteF9kcm1fYXRvbWljX2NvbW1pdF90YWlsLAog fTsKIAogLyoKQEAgLTIxMCw2ICsyNzIsNyBAQCBzdGF0aWMgaW50IGlteF9kcm1fZHJpdmVyX2xv YWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdW5zaWduZWQgbG9uZyBmbGFncykKIAlkcm0tPm1v ZGVfY29uZmlnLm1heF93aWR0aCA9IDQwOTY7CiAJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0 ID0gNDA5NjsKIAlkcm0tPm1vZGVfY29uZmlnLmZ1bmNzID0gJmlteF9kcm1fbW9kZV9jb25maWdf ZnVuY3M7CisJZHJtLT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9ICZpbXhfZHJtX21vZGVf Y29uZmlnX2hlbHBlcnM7CiAKIAlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwogCkBAIC0yNTIs NyArMzE1LDYgQEAgc3RhdGljIGludCBpbXhfZHJtX2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJCWRldl93YXJuKGRybS0+ZGV2LCAiSW52 YWxpZCBsZWdhY3lmYl9kZXB0aC4gIERlZmF1bHRpbmcgdG8gMTZicHBcbiIpOwogCQlsZWdhY3lm Yl9kZXB0aCA9IDE2OwogCX0KLQlkcm1faGVscGVyX2Rpc2FibGVfdW51c2VkX2Z1bmN0aW9ucyhk cm0pOwogCWlteGRybS0+ZmJoZWxwZXIgPSBkcm1fZmJkZXZfY21hX2luaXQoZHJtLCBsZWdhY3lm Yl9kZXB0aCwKIAkJCQlkcm0tPm1vZGVfY29uZmlnLm51bV9jcnRjLCBNQVhfQ1JUQyk7CiAJaWYg KElTX0VSUihpbXhkcm0tPmZiaGVscGVyKSkgewpAQCAtNDU0LDYgKzUxNiw3IEBAIHN0YXRpYyBp bnQgaW14X2RybV9wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IHN0YXRpYyBpbnQgaW14X2RybV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBp bXhfZHJtX2RldmljZSAqaW14ZHJtOwogCiAJLyogVGhlIGRybV9kZXYgaXMgTlVMTCBiZWZvcmUg LmxvYWQgaG9vayBpcyBjYWxsZWQgKi8KIAlpZiAoZHJtX2RldiA9PSBOVUxMKQpAQCAtNDYxLDE3 ICs1MjQsMjYgQEAgc3RhdGljIGludCBpbXhfZHJtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2 KQogCiAJZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGRybV9kZXYpOwogCisJaW14ZHJtID0g ZHJtX2Rldi0+ZGV2X3ByaXZhdGU7CisJaW14ZHJtLT5zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVy X3N1c3BlbmQoZHJtX2Rldik7CisJaWYgKElTX0VSUihpbXhkcm0tPnN0YXRlKSkgeworCQlkcm1f a21zX2hlbHBlcl9wb2xsX2VuYWJsZShkcm1fZGV2KTsKKwkJcmV0dXJuIFBUUl9FUlIoaW14ZHJt LT5zdGF0ZSk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaW14X2RybV9yZXN1 bWUoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhfZHJtOwog CiAJaWYgKGRybV9kZXYgPT0gTlVMTCkKIAkJcmV0dXJuIDA7CiAKLQlkcm1faGVscGVyX3Jlc3Vt ZV9mb3JjZV9tb2RlKGRybV9kZXYpOworCWlteF9kcm0gPSBkcm1fZGV2LT5kZXZfcHJpdmF0ZTsK Kwlkcm1fYXRvbWljX2hlbHBlcl9yZXN1bWUoZHJtX2RldiwgaW14X2RybS0+c3RhdGUpOwogCWRy bV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKGRybV9kZXYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p bXgvaXB1djMtY3J0Yy5jCmluZGV4IGY5ZDVkN2MuLjNlODI1MzQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1 djMtY3J0Yy5jCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSA8bGludXgvZmIuaD4KICNpbmNs dWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxp bnV4L3Jlc2VydmF0aW9uLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxw ZXIuaD4KIApAQCAtMzUsMjMgKzMzLDYgQEAKIAogI2RlZmluZSBEUklWRVJfREVTQwkJImkuTVgg SVBVdjMgR3JhcGhpY3MiCiAKLWVudW0gaXB1X2ZsaXBfc3RhdHVzIHsKLQlJUFVfRkxJUF9OT05F LAotCUlQVV9GTElQX1BFTkRJTkcsCi0JSVBVX0ZMSVBfU1VCTUlUVEVELAotfTsKLQotc3RydWN0 IGlwdV9mbGlwX3dvcmsgewotCXN0cnVjdCB3b3JrX3N0cnVjdAkJdW5yZWZfd29yazsKLQlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QJCSpibzsKLQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50 ICpwYWdlX2ZsaXBfZXZlbnQ7Ci0Jc3RydWN0IHdvcmtfc3RydWN0CQlmZW5jZV93b3JrOwotCXN0 cnVjdCBpcHVfY3J0YwkJCSpjcnRjOwotCXN0cnVjdCBmZW5jZQkJCSpleGNsOwotCXVuc2lnbmVk CQkJc2hhcmVkX2NvdW50OwotCXN0cnVjdCBmZW5jZQkJCSoqc2hhcmVkOwotfTsKLQogc3RydWN0 IGlwdV9jcnRjIHsKIAlzdHJ1Y3QgZGV2aWNlCQkqZGV2OwogCXN0cnVjdCBkcm1fY3J0YwkJYmFz ZTsKQEAgLTYyLDEwICs0Myw2IEBAIHN0cnVjdCBpcHVfY3J0YyB7CiAKIAlzdHJ1Y3QgaXB1X2Rj CQkqZGM7CiAJc3RydWN0IGlwdV9kaQkJKmRpOwotCWludAkJCWVuYWJsZWQ7Ci0JZW51bSBpcHVf ZmxpcF9zdGF0dXMJZmxpcF9zdGF0ZTsKLQlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqZmxpcF9x dWV1ZTsKLQlzdHJ1Y3QgaXB1X2ZsaXBfd29yawkqZmxpcF93b3JrOwogCWludAkJCWlycTsKIH07 CiAKQEAgLTc1LDM0ICs1MiwyNiBAQCBzdGF0aWMgdm9pZCBpcHVfY3J0Y19lbmFibGUoc3RydWN0 IGlwdV9jcnRjICppcHVfY3J0YykKIHsKIAlzdHJ1Y3QgaXB1X3NvYyAqaXB1ID0gZGV2X2dldF9k cnZkYXRhKGlwdV9jcnRjLT5kZXYtPnBhcmVudCk7CiAKLQlpZiAoaXB1X2NydGMtPmVuYWJsZWQp Ci0JCXJldHVybjsKLQogCWlwdV9kY19lbmFibGUoaXB1KTsKIAlpcHVfZGNfZW5hYmxlX2NoYW5u ZWwoaXB1X2NydGMtPmRjKTsKIAlpcHVfZGlfZW5hYmxlKGlwdV9jcnRjLT5kaSk7Ci0JaXB1X2Ny dGMtPmVuYWJsZWQgPSAxOwotCi0JLyoKLQkgKiBJbiBvcmRlciBub3QgdG8gYmUgd2FybmVkIG9u IGVuYWJsaW5nIHZibGFuayBmYWlsdXJlLAotCSAqIHdlIHNob3VsZCBjYWxsIGRybV9jcnRjX3Zi bGFua19vbigpIGFmdGVyIC0+ZW5hYmxlZCBpcyBzZXQgdG8gMS4KLQkgKi8KLQlkcm1fY3J0Y192 Ymxhbmtfb24oJmlwdV9jcnRjLT5iYXNlKTsKIH0KIAogc3RhdGljIHZvaWQgaXB1X2NydGNfZGlz YWJsZShzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjKQogewogCXN0cnVjdCBpcHVfc29jICppcHUg PSBkZXZfZ2V0X2RydmRhdGEoaXB1X2NydGMtPmRldi0+cGFyZW50KTsKLQotCWlmICghaXB1X2Ny dGMtPmVuYWJsZWQpCi0JCXJldHVybjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmaXB1X2Ny dGMtPmJhc2U7CiAKIAlpcHVfZGNfZGlzYWJsZV9jaGFubmVsKGlwdV9jcnRjLT5kYyk7CiAJaXB1 X2RpX2Rpc2FibGUoaXB1X2NydGMtPmRpKTsKIAlpcHVfZGNfZGlzYWJsZShpcHUpOwotCWlwdV9j cnRjLT5lbmFibGVkID0gMDsKIAotCWRybV9jcnRjX3ZibGFua19vZmYoJmlwdV9jcnRjLT5iYXNl KTsKKwlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOworCWlmIChjcnRjLT5z dGF0ZS0+ZXZlbnQpIHsKKwkJZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoY3J0YywgY3J0Yy0+ c3RhdGUtPmV2ZW50KTsKKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKKwl9CisJc3Bpbl91 bmxvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBpcHVf Y3J0Y19kcG1zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IG1vZGUpCkBAIC0xMjMsMTUxICs5 MiwyMSBAQCBzdGF0aWMgdm9pZCBpcHVfY3J0Y19kcG1zKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg aW50IG1vZGUpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBpcHVfZmxpcF91bnJlZl93b3JrX2Z1bmMo c3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCi17Ci0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKndv cmsgPQotCQkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGlwdV9mbGlwX3dvcmssIHVucmVm X3dvcmspOwotCi0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQod29yay0+Ym8p OwotCWtmcmVlKHdvcmspOwotfQotCi1zdGF0aWMgdm9pZCBpcHVfZmxpcF9mZW5jZV93b3JrX2Z1 bmMoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCi17Ci0Jc3RydWN0IGlwdV9mbGlwX3dvcmsg KndvcmsgPQotCQkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGlwdV9mbGlwX3dvcmssIGZl bmNlX3dvcmspOwotCWludCBpOwotCi0JLyogd2FpdCBmb3IgYWxsIGZlbmNlcyBhdHRhY2hlZCB0 byB0aGUgRkIgb2JqIHRvIHNpZ25hbCAqLwotCWlmICh3b3JrLT5leGNsKSB7Ci0JCWZlbmNlX3dh aXQod29yay0+ZXhjbCwgZmFsc2UpOwotCQlmZW5jZV9wdXQod29yay0+ZXhjbCk7Ci0JfQotCWZv ciAoaSA9IDA7IGkgPCB3b3JrLT5zaGFyZWRfY291bnQ7IGkrKykgewotCQlmZW5jZV93YWl0KHdv cmstPnNoYXJlZFtpXSwgZmFsc2UpOwotCQlmZW5jZV9wdXQod29yay0+c2hhcmVkW2ldKTsKLQl9 Ci0KLQl3b3JrLT5jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZMSVBfU1VCTUlUVEVEOwotfQotCi1z dGF0aWMgaW50IGlwdV9wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAq ZXZlbnQsCi0JCXVpbnQzMl90IHBhZ2VfZmxpcF9mbGFncykKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9j bWFfb2JqZWN0ICpjbWFfb2JqID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7Ci0Jc3Ry dWN0IGlwdV9jcnRjICppcHVfY3J0YyA9IHRvX2lwdV9jcnRjKGNydGMpOwotCXN0cnVjdCBpcHVf ZmxpcF93b3JrICpmbGlwX3dvcms7Ci0JaW50IHJldDsKLQotCWlmIChpcHVfY3J0Yy0+ZmxpcF9z dGF0ZSAhPSBJUFVfRkxJUF9OT05FKQotCQlyZXR1cm4gLUVCVVNZOwotCi0JcmV0ID0gaW14X2Ry bV9jcnRjX3ZibGFua19nZXQoaXB1X2NydGMtPmlteF9jcnRjKTsKLQlpZiAocmV0KSB7Ci0JCWRl dl9kYmcoaXB1X2NydGMtPmRldiwgImZhaWxlZCB0byBhY3F1aXJlIHZibGFuayBjb3VudGVyXG4i KTsKLQkJbGlzdF9kZWwoJmV2ZW50LT5iYXNlLmxpbmspOwotCi0JCXJldHVybiByZXQ7Ci0JfQot Ci0JZmxpcF93b3JrID0ga3phbGxvYyhzaXplb2YgKmZsaXBfd29yaywgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFmbGlwX3dvcmspIHsKLQkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBwdXRfdmJsYW5rOwot CX0KLQlJTklUX1dPUksoJmZsaXBfd29yay0+dW5yZWZfd29yaywgaXB1X2ZsaXBfdW5yZWZfd29y a19mdW5jKTsKLQlmbGlwX3dvcmstPnBhZ2VfZmxpcF9ldmVudCA9IGV2ZW50OwotCi0JLyogZ2V0 IEJPIGJhY2tpbmcgdGhlIG9sZCBmcmFtZWJ1ZmZlciBhbmQgdGFrZSBhIHJlZmVyZW5jZSAqLwot CWZsaXBfd29yay0+Ym8gPSAmZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihjcnRjLT5wcmltYXJ5LT5m YiwgMCktPmJhc2U7Ci0JZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKGZsaXBfd29yay0+Ym8pOwot Ci0JaXB1X2NydGMtPmZsaXBfd29yayA9IGZsaXBfd29yazsKLQkvKgotCSAqIElmIHRoZSBvYmpl Y3QgaGFzIGEgRE1BQlVGIGF0dGFjaGVkLCB3ZSBuZWVkIHRvIHdhaXQgb24gaXRzIGZlbmNlcwot CSAqIGlmIHRoZXJlIGFyZSBhbnkuCi0JICovCi0JaWYgKGNtYV9vYmotPmJhc2UuZG1hX2J1Zikg ewotCQlJTklUX1dPUksoJmZsaXBfd29yay0+ZmVuY2Vfd29yaywgaXB1X2ZsaXBfZmVuY2Vfd29y a19mdW5jKTsKLQkJZmxpcF93b3JrLT5jcnRjID0gaXB1X2NydGM7Ci0KLQkJcmV0ID0gcmVzZXJ2 YXRpb25fb2JqZWN0X2dldF9mZW5jZXNfcmN1KAotCQkJCWNtYV9vYmotPmJhc2UuZG1hX2J1Zi0+ cmVzdiwgJmZsaXBfd29yay0+ZXhjbCwKLQkJCQkmZmxpcF93b3JrLT5zaGFyZWRfY291bnQsICZm bGlwX3dvcmstPnNoYXJlZCk7Ci0KLQkJaWYgKHVubGlrZWx5KHJldCkpIHsKLQkJCURSTV9FUlJP UigiZmFpbGVkIHRvIGdldCBmZW5jZXMgZm9yIGJ1ZmZlclxuIik7Ci0JCQlnb3RvIGZyZWVfZmxp cF93b3JrOwotCQl9Ci0KLQkJLyogTm8gbmVlZCB0byBxdWV1ZSB0aGUgd29ya2VyIGlmIHRoZSBh cmUgbm8gZmVuY2VzICovCi0JCWlmICghZmxpcF93b3JrLT5leGNsICYmICFmbGlwX3dvcmstPnNo YXJlZF9jb3VudCkgewotCQkJaXB1X2NydGMtPmZsaXBfc3RhdGUgPSBJUFVfRkxJUF9TVUJNSVRU RUQ7Ci0JCX0gZWxzZSB7Ci0JCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX1BFTkRJ Tkc7Ci0JCQlxdWV1ZV93b3JrKGlwdV9jcnRjLT5mbGlwX3F1ZXVlLAotCQkJCSAgICZmbGlwX3dv cmstPmZlbmNlX3dvcmspOwotCQl9Ci0JfSBlbHNlIHsKLQkJaXB1X2NydGMtPmZsaXBfc3RhdGUg PSBJUFVfRkxJUF9TVUJNSVRURUQ7Ci0JfQotCi0JaWYgKGNydGMtPnByaW1hcnktPnN0YXRlKQot CQlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUoY3J0Yy0+cHJpbWFyeS0+c3RhdGUsIGZiKTsK LQotCXJldHVybiAwOwotCi1mcmVlX2ZsaXBfd29yazoKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVy ZW5jZV91bmxvY2tlZChmbGlwX3dvcmstPmJvKTsKLQlrZnJlZShmbGlwX3dvcmspOwotCWlwdV9j cnRjLT5mbGlwX3dvcmsgPSBOVUxMOwotcHV0X3ZibGFuazoKLQlpbXhfZHJtX2NydGNfdmJsYW5r X3B1dChpcHVfY3J0Yy0+aW14X2NydGMpOwotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpcHVfY3J0Y19mdW5jcyA9IHsKLQkuc2V0X2NvbmZp ZyA9IGRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnLAorCS5zZXRfY29uZmlnID0gZHJtX2F0b21p Y19oZWxwZXJfc2V0X2NvbmZpZywKIAkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCi0JLnBh Z2VfZmxpcCA9IGlwdV9wYWdlX2ZsaXAsCisJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVy X3BhZ2VfZmxpcCwKIAkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAogCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVf c3RhdGUsCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19k ZXN0cm95X3N0YXRlLAogfTsKIAotc3RhdGljIHZvaWQgaXB1X2NydGNfaGFuZGxlX3BhZ2VmbGlw KHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXB1X2NydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBpcHVf ZmxpcF93b3JrICp3b3JrID0gaXB1X2NydGMtPmZsaXBfd29yazsKLQotCXNwaW5fbG9ja19pcnFz YXZlKCZkcm0tPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQlpZiAod29yay0+cGFnZV9mbGlwX2V2ZW50 KQotCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgmaXB1X2NydGMtPmJhc2UsCi0JCQkJCSAg IHdvcmstPnBhZ2VfZmxpcF9ldmVudCk7Ci0JaW14X2RybV9jcnRjX3ZibGFua19wdXQoaXB1X2Ny dGMtPmlteF9jcnRjKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcm0tPmV2ZW50X2xvY2ss IGZsYWdzKTsKLX0KLQogc3RhdGljIGlycXJldHVybl90IGlwdV9pcnFfaGFuZGxlcihpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YyA9IGRldl9pZDsK IAogCWlteF9kcm1faGFuZGxlX3ZibGFuayhpcHVfY3J0Yy0+aW14X2NydGMpOwogCi0JaWYgKGlw dV9jcnRjLT5mbGlwX3N0YXRlID09IElQVV9GTElQX1NVQk1JVFRFRCkgewotCQlzdHJ1Y3QgaXB1 X3BsYW5lICpwbGFuZSA9IGlwdV9jcnRjLT5wbGFuZVswXTsKLQotCQlpcHVfcGxhbmVfc2V0X2Jh c2UocGxhbmUsIGlwdV9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKLQkJaXB1X2NydGNfaGFuZGxl X3BhZ2VmbGlwKGlwdV9jcnRjKTsKLQkJcXVldWVfd29yayhpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSwK LQkJCSAgICZpcHVfY3J0Yy0+ZmxpcF93b3JrLT51bnJlZl93b3JrKTsKLQkJaXB1X2NydGMtPmZs aXBfc3RhdGUgPSBJUFVfRkxJUF9OT05FOwotCX0KLQogCXJldHVybiBJUlFfSEFORExFRDsKIH0K IApAQCAtMzEwLDkgKzE0OSwyNiBAQCBzdGF0aWMgdm9pZCBpcHVfY3J0Y19jb21taXQoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogc3RhdGljIGludCBpcHVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQogewor CXUzMiBwcmltYXJ5X3BsYW5lX21hc2sgPSAxIDw8IGRybV9wbGFuZV9pbmRleChjcnRjLT5wcmlt YXJ5KTsKKworCWlmIChzdGF0ZS0+YWN0aXZlICYmIChwcmltYXJ5X3BsYW5lX21hc2sgJiBzdGF0 ZS0+cGxhbmVfbWFzaykgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlyZXR1cm4gMDsKIH0K IAorc3RhdGljIHZvaWQgaXB1X2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKKwkJCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCit7CisJc3Bp bl9sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKKwlpZiAoY3J0Yy0+c3RhdGUtPmV2 ZW50KSB7CisJCVdBUk5fT04oZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSk7CisJCWRybV9jcnRj X2FybV92YmxhbmtfZXZlbnQoY3J0YywgY3J0Yy0+c3RhdGUtPmV2ZW50KTsKKwkJY3J0Yy0+c3Rh dGUtPmV2ZW50ID0gTlVMTDsKKwl9CisJc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50 X2xvY2spOworfQorCiBzdGF0aWMgdm9pZCBpcHVfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwpA QCAtMzcxLDI1ICsyMjcsMTcgQEAgc3RhdGljIHZvaWQgaXB1X2NydGNfbW9kZV9zZXRfbm9mYihz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBl cl9mdW5jcyBpcHVfaGVscGVyX2Z1bmNzID0gewogCS5kcG1zID0gaXB1X2NydGNfZHBtcywKIAku bW9kZV9maXh1cCA9IGlwdV9jcnRjX21vZGVfZml4dXAsCi0JLm1vZGVfc2V0ID0gZHJtX2hlbHBl cl9jcnRjX21vZGVfc2V0LAogCS5tb2RlX3NldF9ub2ZiID0gaXB1X2NydGNfbW9kZV9zZXRfbm9m YiwKIAkucHJlcGFyZSA9IGlwdV9jcnRjX3ByZXBhcmUsCiAJLmNvbW1pdCA9IGlwdV9jcnRjX2Nv bW1pdCwKIAkuYXRvbWljX2NoZWNrID0gaXB1X2NydGNfYXRvbWljX2NoZWNrLAorCS5hdG9taWNf YmVnaW4gPSBpcHVfY3J0Y19hdG9taWNfYmVnaW4sCiB9OwogCiBzdGF0aWMgaW50IGlwdV9lbmFi bGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgaXB1X2NydGMgKmlw dV9jcnRjID0gdG9faXB1X2NydGMoY3J0Yyk7CiAKLQkvKgotCSAqIC0+Y29tbWl0IGlzIGRvbmUg YWZ0ZXIgLT5tb2RlX3NldCBpbiBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoKSwKLQkgKiBzbyB3 YWl0aW5nIGZvciB2YmxhbmsgaW4gZHJtX3BsYW5lX2hlbHBlcl9jb21taXQoKSB3aWxsIHRpbWVv dXQuCi0JICogQ2hlY2sgdGhlIHN0YXRlIGhlcmUgdG8gYXZvaWQgdGhlIHdhaXRpbmcuCi0JICov Ci0JaWYgKCFpcHVfY3J0Yy0+ZW5hYmxlZCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAllbmFibGVf aXJxKGlwdV9jcnRjLT5pcnEpOwogCiAJcmV0dXJuIDA7CkBAIC01MDgsOCArMzU2LDYgQEAgc3Rh dGljIGludCBpcHVfY3J0Y19pbml0KHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMsCiAJLyogT25s eSBlbmFibGUgSVJRIHdoZW4gd2UgYWN0dWFsbHkgbmVlZCBpdCB0byB0cmlnZ2VyIHdvcmsuICov CiAJZGlzYWJsZV9pcnEoaXB1X2NydGMtPmlycSk7CiAKLQlpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSA9 IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJpcHUtY3J0Yy1mbGlwIik7Ci0KIAlyZXR1 cm4gMDsKIAogZXJyX3B1dF9wbGFuZTFfcmVzOgpAQCAtNTU0LDcgKzQwMCw2IEBAIHN0YXRpYyB2 b2lkIGlwdV9kcm1fdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLAogCiAJaW14X2RybV9yZW1vdmVfY3J0YyhpcHVfY3J0Yy0+aW14X2NydGMpOwogCi0JZGVz dHJveV93b3JrcXVldWUoaXB1X2NydGMtPmZsaXBfcXVldWUpOwogCWlwdV9wdXRfcmVzb3VyY2Vz KGlwdV9jcnRjKTsKIAlpZiAoaXB1X2NydGMtPnBsYW5lWzFdKQogCQlpcHVfcGxhbmVfcHV0X3Jl c291cmNlcyhpcHVfY3J0Yy0+cGxhbmVbMV0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2lteC9pcHV2My1wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1wbGFuZS5jCmlu ZGV4IGFmYmM3NDAuLjNmNWY5NTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1 djMtcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMKQEAgLTE0 LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pYy5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9o ZWxwZXIuaD4KQEAgLTU1LDEyMiArNTYsNiBAQCBpbnQgaXB1X3BsYW5lX2lycShzdHJ1Y3QgaXB1 X3BsYW5lICppcHVfcGxhbmUpCiAJCQkJICAgICBJUFVfSVJRX0VPRik7CiB9CiAKLWludCBpcHVf cGxhbmVfc2V0X2Jhc2Uoc3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5lLCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYikKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2JqWzNd LCAqb2xkX2NtYV9vYmpbM107Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBpcHVf cGxhbmUtPmJhc2Uuc3RhdGU7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gc3Rh dGUtPmZiOwotCXVuc2lnbmVkIGxvbmcgZWJhLCB1Ym8sIHZibywgb2xkX2ViYSwgb2xkX3Vibywg b2xkX3ZibzsKLQlpbnQgYWN0aXZlLCBpOwotCWludCB4ID0gc3RhdGUtPnNyY194ID4+IDE2Owot CWludCB5ID0gc3RhdGUtPnNyY195ID4+IDE2OwotCi0JZm9yIChpID0gMDsgaSA8IGRybV9mb3Jt YXRfbnVtX3BsYW5lcyhmYi0+cGl4ZWxfZm9ybWF0KTsgaSsrKSB7Ci0JCWNtYV9vYmpbaV0gPSBk cm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCBpKTsKLQkJaWYgKCFjbWFfb2JqW2ldKSB7Ci0JCQlE Uk1fREVCVUdfS01TKCJwbGFuZSAlZCBlbnRyeSBpcyBudWxsLlxuIiwgaSk7Ci0JCQlyZXR1cm4g LUVGQVVMVDsKLQkJfQotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBkcm1fZm9ybWF0X251bV9wbGFu ZXMob2xkX2ZiLT5waXhlbF9mb3JtYXQpOyBpKyspIHsKLQkJb2xkX2NtYV9vYmpbaV0gPSBkcm1f ZmJfY21hX2dldF9nZW1fb2JqKG9sZF9mYiwgaSk7Ci0JCWlmICghb2xkX2NtYV9vYmpbaV0pIHsK LQkJCURSTV9ERUJVR19LTVMoInBsYW5lICVkIGVudHJ5IGlzIG51bGwuXG4iLCBpKTsKLQkJCXJl dHVybiAtRUZBVUxUOwotCQl9Ci0JfQotCi0JZWJhID0gY21hX29ialswXS0+cGFkZHIgKyBmYi0+ b2Zmc2V0c1swXSArCi0JICAgICAgZmItPnBpdGNoZXNbMF0gKiB5ICsgKGZiLT5iaXRzX3Blcl9w aXhlbCA+PiAzKSAqIHg7Ci0KLQlpZiAoZWJhICYgMHg3KSB7Ci0JCURSTV9ERUJVR19LTVMoImJh c2UgYWRkcmVzcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOC5cbiIpOwotCQlyZXR1cm4gLUVJTlZB TDsKLQl9Ci0KLQlpZiAoZmItPnBpdGNoZXNbMF0gPCAxIHx8IGZiLT5waXRjaGVzWzBdID4gMTYz ODQpIHsKLQkJRFJNX0RFQlVHX0tNUygicGl0Y2hlcyBvdXQgb2YgcmFuZ2UuXG4iKTsKLQkJcmV0 dXJuIC1FSU5WQUw7Ci0JfQotCi0JaWYgKGZiLT5waXRjaGVzWzBdICE9IG9sZF9mYi0+cGl0Y2hl c1swXSkgewotCQlEUk1fREVCVUdfS01TKCJwaXRjaGVzIG11c3Qgbm90IGNoYW5nZSB3aGlsZSBw bGFuZSBpcyBlbmFibGVkLlxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAo ZmItPnBpeGVsX2Zvcm1hdCkgewotCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjA6Ci0JY2FzZSBEUk1f Rk9STUFUX1lWVTQyMDoKLQkJLyoKLQkJICogTXVsdGlwbGFuYXIgZm9ybWF0cyBoYXZlIHRvIG1l ZXQgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci0JCSAqIC0gVGhlICh1cCB0bykgdGhyZWUg cGxhbmUgYWRkcmVzc2VzIGFyZSBFQkEsIEVCQStVQk8sIEVCQStWQk8KLQkJICogLSBFQkEsIFVC TyBhbmQgVkJPIGFyZSBhIG11bHRpcGxlIG9mIDgKLQkJICogLSBVQk8gYW5kIFZCTyBhcmUgdW5z aWduZWQgYW5kIG5vdCBsYXJnZXIgdGhhbiAweGZmZmZmOAotCQkgKiAtIE9ubHkgRUJBIG1heSBi ZSBjaGFuZ2VkIHdoaWxlIHNjYW5vdXQgaXMgYWN0aXZlCi0JCSAqIC0gVGhlIHN0cmlkZXMgb2Yg VSBhbmQgViBwbGFuZXMgbXVzdCBiZSBpZGVudGljYWwuCi0JCSAqLwotCQl1Ym8gPSBjbWFfb2Jq WzFdLT5wYWRkciArIGZiLT5vZmZzZXRzWzFdICsKLQkJICAgICAgZmItPnBpdGNoZXNbMV0gKiB5 IC8gMiArIHggLyAyIC0gZWJhOwotCQl2Ym8gPSBjbWFfb2JqWzJdLT5wYWRkciArIGZiLT5vZmZz ZXRzWzJdICsKLQkJICAgICAgZmItPnBpdGNoZXNbMl0gKiB5IC8gMiArIHggLyAyIC0gZWJhOwot Ci0JCW9sZF9lYmEgPSBvbGRfY21hX29ialswXS0+cGFkZHIgKyBvbGRfZmItPm9mZnNldHNbMF0g KwotCQkgICAgICBvbGRfZmItPnBpdGNoZXNbMF0gKiB5ICsKLQkJICAgICAgKG9sZF9mYi0+Yml0 c19wZXJfcGl4ZWwgPj4gMykgKiB4OwotCQlvbGRfdWJvID0gb2xkX2NtYV9vYmpbMV0tPnBhZGRy ICsgb2xkX2ZiLT5vZmZzZXRzWzFdICsKLQkJICAgICAgb2xkX2ZiLT5waXRjaGVzWzFdICogeSAv IDIgKyB4IC8gMiAtIG9sZF9lYmE7Ci0JCW9sZF92Ym8gPSBvbGRfY21hX29ialsyXS0+cGFkZHIg KyBvbGRfZmItPm9mZnNldHNbMl0gKwotCQkgICAgICBvbGRfZmItPnBpdGNoZXNbMl0gKiB5IC8g MiArIHggLyAyIC0gb2xkX2ViYTsKLQotCQlpZiAoKHVibyAmIDB4NykgfHwgKHZibyAmIDB4Nykp IHsKLQkJCURSTV9ERUJVR19LTVMoIlUvViBidWZmZXIgb2Zmc2V0cyBtdXN0IGJlIGEgbXVsdGlw bGUgb2YgOC5cbiIpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoKHVibyA+IDB4 ZmZmZmY4KSB8fCAodmJvID4gMHhmZmZmZjgpKSB7Ci0JCQlEUk1fREVCVUdfS01TKCJVL1YgYnVm ZmVyIG9mZnNldHMgbXVzdCBiZSBwb3NpdGl2ZSBhbmQgbm90IGxhcmdlciB0aGFuIDB4ZmZmZmY4 LlxuIik7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWlmIChvbGRfdWJvICE9IHVibyB8 fCBvbGRfdmJvICE9IHZibykgewotCQkJRFJNX0RFQlVHX0tNUygiVS9WIGJ1ZmZlciBvZmZzZXRz IG11c3Qgbm90IGNoYW5nZSB3aGlsZSBwbGFuZSBpcyBlbmFibGVkLlxuIik7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQotCi0JCWlmIChmYi0+cGl0Y2hlc1sxXSAhPSBmYi0+cGl0Y2hlc1syXSkg ewotCQkJRFJNX0RFQlVHX0tNUygiVS9WIHBpdGNoZXMgbXVzdCBiZSBpZGVudGljYWwuXG4iKTsK LQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJaWYgKGZiLT5waXRjaGVzWzFdIDwgMSB8fCBm Yi0+cGl0Y2hlc1sxXSA+IDE2Mzg0KSB7Ci0JCQlEUk1fREVCVUdfS01TKCJVL1YgcGl0Y2hlcyBv dXQgb2YgcmFuZ2UuXG4iKTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJaWYgKG9sZF9m Yi0+cGl0Y2hlc1sxXSAhPSBmYi0+cGl0Y2hlc1sxXSkgewotCQkJRFJNX0RFQlVHX0tNUygiVS9W IHBpdGNoZXMgbXVzdCBub3QgY2hhbmdlIHdoaWxlIHBsYW5lIGlzIGVuYWJsZWQuXG4iKTsKLQkJ CXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X2RiZyhpcHVfcGxhbmUtPmJhc2UuZGV2LT5k ZXYsCi0JCQkicGh5cyA9ICVwYWQgJXBhZCAlcGFkLCB4ID0gJWQsIHkgPSAlZCIsCi0JCQkmY21h X29ialswXS0+cGFkZHIsICZjbWFfb2JqWzFdLT5wYWRkciwKLQkJCSZjbWFfb2JqWzJdLT5wYWRk ciwgeCwgeSk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWRldl9kYmcoaXB1X3BsYW5lLT5iYXNl LmRldi0+ZGV2LCAicGh5cyA9ICVwYWQsIHggPSAlZCwgeSA9ICVkIiwKLQkJCSZjbWFfb2JqWzBd LT5wYWRkciwgeCwgeSk7Ci0JCWJyZWFrOwotCX0KLQotCWFjdGl2ZSA9IGlwdV9pZG1hY19nZXRf Y3VycmVudF9idWZmZXIoaXB1X3BsYW5lLT5pcHVfY2gpOwotCWlwdV9jcG1lbV9zZXRfYnVmZmVy KGlwdV9wbGFuZS0+aXB1X2NoLCAhYWN0aXZlLCBlYmEpOwotCWlwdV9pZG1hY19zZWxlY3RfYnVm ZmVyKGlwdV9wbGFuZS0+aXB1X2NoLCAhYWN0aXZlKTsKLQotCXJldHVybiAwOwotfQotCiBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIGRybV9wbGFuZV9zdGF0ZV90b19lYmEoc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7CkBAIC0zNjAsOCArMjQ1LDggQEAgc3RhdGljIHZvaWQg aXB1X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB9CiAKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGlwdV9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRl X3BsYW5lCT0gZHJtX3BsYW5lX2hlbHBlcl91cGRhdGUsCi0JLmRpc2FibGVfcGxhbmUJPSBkcm1f cGxhbmVfaGVscGVyX2Rpc2FibGUsCisJLnVwZGF0ZV9wbGFuZQk9IGRybV9hdG9taWNfaGVscGVy X3VwZGF0ZV9wbGFuZSwKKwkuZGlzYWJsZV9wbGFuZQk9IGRybV9hdG9taWNfaGVscGVyX2Rpc2Fi bGVfcGxhbmUsCiAJLmRlc3Ryb3kJPSBpcHVfcGxhbmVfZGVzdHJveSwKIAkucmVzZXQJCT0gZHJt X2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUJPSBk cm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCkBAIC0zODAsMTAgKzI2NSwx OCBAQCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiAKIAkvKiBPayB0byBkaXNhYmxlICovCiAJaWYgKCFmYikKLQkJcmV0dXJuIG9sZF9m YiA/IDAgOiAtRUlOVkFMOworCQlyZXR1cm4gMDsKKworCWlmICghc3RhdGUtPmNydGMpCisJCXJl dHVybiAtRUlOVkFMOworCisJY3J0Y19zdGF0ZSA9CisJCWRybV9hdG9taWNfZ2V0X2V4aXN0aW5n X2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+Y3J0Yyk7CisJaWYgKFdBUk5fT04oIWNy dGNfc3RhdGUpKQorCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIENSVEMgc2hvdWxkIGJlIGVuYWJs ZWQgKi8KLQlpZiAoIXN0YXRlLT5jcnRjLT5lbmFibGVkKQorCWlmICghY3J0Y19zdGF0ZS0+ZW5h YmxlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIG5vIHNjYWxpbmcgKi8KQEAgLTM5MSw4ICsy ODQsNiBAQCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJICAgIHN0YXRlLT5zcmNfaCA+PiAxNiAhPSBzdGF0ZS0+Y3J0Y19oKQogCQly ZXR1cm4gLUVJTlZBTDsKIAotCWNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Yy0+c3RhdGU7Ci0KIAlz d2l0Y2ggKHBsYW5lLT50eXBlKSB7CiAJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgogCQkv KiBmdWxsIHBsYW5lIGRvZXNuJ3Qgc3VwcG9ydCBwYXJ0aWFsIG9mZiBzY3JlZW4gKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pbXgvaXB1djMtcGxhbmUuaAppbmRleCBjNTFhNDRiLi4zMzhiODhhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lt eC9pcHV2My1wbGFuZS5oCkBAIC0zNyw4ICszNyw2IEBAIGludCBpcHVfcGxhbmVfbW9kZV9zZXQo c3RydWN0IGlwdV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJICAgICAg IHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwgdWludDMyX3Qgc3JjX3csCiAJCSAgICAg ICB1aW50MzJfdCBzcmNfaCwgYm9vbCBpbnRlcmxhY2VkKTsKIAotaW50IGlwdV9wbGFuZV9zZXRf YmFzZShzdHJ1Y3QgaXB1X3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp OwotCiBpbnQgaXB1X3BsYW5lX2dldF9yZXNvdXJjZXMoc3RydWN0IGlwdV9wbGFuZSAqcGxhbmUp Owogdm9pZCBpcHVfcGxhbmVfcHV0X3Jlc291cmNlcyhzdHJ1Y3QgaXB1X3BsYW5lICpwbGFuZSk7 CiAKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK