From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH v2 09/10] drm/imx: atomic phase 3 step 4: Use generic atomic page flip Date: Tue, 31 May 2016 17:24:30 +0800 Message-ID: <1464686671-20299-10-git-send-email-gnuiyl@gmail.com> References: <1464686671-20299-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 na01-by2-obe.outbound.protection.outlook.com (mail-by2on0067.outbound.protection.outlook.com [207.46.100.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id ACE826E374 for ; Tue, 31 May 2016 09:25:07 +0000 (UTC) In-Reply-To: <1464686671-20299-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 VG8gc3VwcG9ydCBnZW5lcmljIGF0b21pYyBwYWdlIGZsaXAsIHRoaXMgcGF0Y2ggY3VzdG9taXpl cyAtPmF0b21pY19jb21taXQKZm9yIG5vbmJsb2NrIGNvbW1pdHMuCgpTaWduZWQtb2ZmLWJ5OiBM aXUgWWluZyA8Z251aXlsQGdtYWlsLmNvbT4KLS0tCnYxLT52MjoKKiBzL2FzeW5jL25vbmJsb2Nr LyBvbiB0aGlzIHBhdGNoIHRvIGFkZHJlc3MgRGFuaWVsIFZldHRlcidzIGNvbW1lbnQuCiogV2Fp dCBmb3IgcGVuZGluZyBjb21taXQgb24gZWFjaCBDUlRDIGZvciBib3RoIGJsb2NrIGFuZCBub25i bG9jawogIGF0b21pYyBtb2RlIHNldHRpbmdzLiAgVGhpcyB3YXksIGEgYmxvY2sgY29tbWl0IHdp bGwgbm90IG92ZXJ3cml0ZQogIHRoZSBoYXJkd2FyZSBzZXR0aW5nIHdoZW4gYSBub25ibG9jayBw YWdlIGZsaXAgaXMgYWJvdXQgdG8gZmluaXNoLAogIHNvIHRoYXQgdGhlIHBhZ2UgZmxpcCBtYXkg d2FpdCBmb3IgdmJsYW5rIHN1Y2Nlc3NmdWxseS4KCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC1k cm0tY29yZS5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYyAgIHwgMTU2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDE0OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29y ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuYwppbmRleCAyYTJhYjhjLi5k MmJiNzQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMKQEAgLTE1LDEwICsxNSwxNCBA QAogICovCiAjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CiAjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+ CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KKyNpbmNsdWRlIDxsaW51eC93 YWl0Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5o PgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1f ZmJfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgpAQCAtNDgsNiAr NTIsMTQgQEAgc3RydWN0IGlteF9kcm1fZGV2aWNlIHsKIHN0cnVjdCBpbXhfZHJtX2NydGMgewog CXN0cnVjdCBkcm1fY3J0YwkJCQkqY3J0YzsKIAlzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9m dW5jcwlpbXhfZHJtX2hlbHBlcl9mdW5jczsKKwl3YWl0X3F1ZXVlX2hlYWRfdAkJCWNvbW1pdF93 YWl0OworCWJvb2wJCQkJCWNvbW1pdF9wZW5kaW5nOworfTsKKworc3RydWN0IGlteF9kcm1fY29t bWl0IHsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 OworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKIH07CiAKICNpZiBJU19FTkFCTEVE KENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKQpAQCAtMTY4LDExICsxODAsMTMwIEBAIHN0YXRp YyB2b2lkIGlteF9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJt KQogCWRybV9mYmRldl9jbWFfaG90cGx1Z19ldmVudChpbXhkcm0tPmZiaGVscGVyKTsKIH0KIAor c3RhdGljIHZvaWQgaW14X2RybV9hdG9taWNfY29tcGxldGUoc3RydWN0IGlteF9kcm1fY29tbWl0 ICpjb21taXQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbW1pdC0+ZGV2OworCXN0 cnVjdCBpbXhfZHJtX2RldmljZSAqaW14ZHJtID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qg aW14X2RybV9jcnRjICppbXhfY3J0YzsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlID0gY29tbWl0LT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2JqOworCXN0cnVj dCBmZW5jZSAqZXhjbDsKKwl1bnNpZ25lZCBzaGFyZWRfY291bnQ7CisJc3RydWN0IGZlbmNlICoq c2hhcmVkOworCXVuc2lnbmVkIGludCBpLCBqOworCWludCByZXQ7CisKKwkvKiBXYWl0IGZvciBm ZW5jZXMuICovCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBpKSB7CisJCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpIHsKKwkJCXBsYW5lX3N0 YXRlID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGU7CisJCQljbWFfb2JqID0gZHJtX2ZiX2NtYV9nZXRf Z2VtX29iaihwbGFuZV9zdGF0ZS0+ZmIsIDApOworCQkJaWYgKGNtYV9vYmotPmJhc2UuZG1hX2J1 ZikgeworCQkJCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZmVuY2VzX3JjdSgKKwkJCQkJ Y21hX29iai0+YmFzZS5kbWFfYnVmLT5yZXN2LCAmZXhjbCwKKwkJCQkJJnNoYXJlZF9jb3VudCwg JnNoYXJlZCk7CisJCQkJaWYgKHVubGlrZWx5KHJldCkpCisJCQkJCURSTV9FUlJPUigiZmFpbGVk IHRvIGdldCBmZW5jZXMgIgorCQkJCQkJICAiZm9yIGJ1ZmZlclxuIik7CisKKwkJCQlpZiAoZXhj bCkgeworCQkJCQlmZW5jZV93YWl0KGV4Y2wsIGZhbHNlKTsKKwkJCQkJZmVuY2VfcHV0KGV4Y2wp OworCQkJCX0KKwkJCQlmb3IgKGogPSAwOyBqIDwgc2hhcmVkX2NvdW50OyBpKyspIHsKKwkJCQkJ ZmVuY2Vfd2FpdChzaGFyZWRbal0sIGZhbHNlKTsKKwkJCQkJZmVuY2VfcHV0KHNoYXJlZFtqXSk7 CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQXBwbHkgdGhlIGF0b21pYyB1cGRhdGUuICov CisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZGlzYWJsZXMoZGV2LCBvbGRfc3Rh dGUpOworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoZGV2LCBvbGRf c3RhdGUpOworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUs IGZhbHNlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgb2xkX3N0 YXRlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7 CisKKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIGkpIHsKKwkJaW14X2NydGMgPSBpbXhkcm0tPmNydGNbaV07CisKKwkJLyogQ29tcGxldGUg dGhlIGNvbW1pdCwgd2FrZSB1cCBhbnkgd2FpdGVyLiAqLworCQlzcGluX2xvY2soJmlteF9jcnRj LT5jb21taXRfd2FpdC5sb2NrKTsKKwkJaW14X2NydGMtPmNvbW1pdF9wZW5kaW5nID0gZmFsc2U7 CisJCXdha2VfdXBfYWxsX2xvY2tlZCgmaW14X2NydGMtPmNvbW1pdF93YWl0KTsKKwkJc3Bpbl91 bmxvY2soJmlteF9jcnRjLT5jb21taXRfd2FpdC5sb2NrKTsKKwl9CisKKwlkcm1fYXRvbWljX3N0 YXRlX2ZyZWUob2xkX3N0YXRlKTsKKworCWtmcmVlKGNvbW1pdCk7Cit9CisKK3N0YXRpYyB2b2lk IGlteF9kcm1fYXRvbWljX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVj dCBpbXhfZHJtX2NvbW1pdCAqY29tbWl0ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBp bXhfZHJtX2NvbW1pdCwgd29yayk7CisKKwlpbXhfZHJtX2F0b21pY19jb21wbGV0ZShjb21taXQp OworfQorCitzdGF0aWMgaW50IGlteF9kcm1fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGJvb2wgbm9uYmxv Y2spCit7CisJc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhkcm0gPSBkZXYtPmRldl9wcml2YXRl OworCXN0cnVjdCBpbXhfZHJtX2NydGMgKmlteF9jcnRjOworCXN0cnVjdCBpbXhfZHJtX2NvbW1p dCAqY29tbWl0OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGU7CisJdW5zaWduZWQgaW50IGk7CisJaW50IHJldDsKKworCWNvbW1pdCA9 IGt6YWxsb2Moc2l6ZW9mKCpjb21taXQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoY29tbWl0ID09IE5V TEwpCisJCXJldHVybiAtRU5PTUVNOworCisJY29tbWl0LT5kZXYgPSBkZXY7CisJY29tbWl0LT5z dGF0ZSA9IHN0YXRlOworCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgeworCQlpbXhfY3J0YyA9IGlteGRybS0+Y3J0Y1tpXTsKKworCQlzcGluX2xv Y2soJmlteF9jcnRjLT5jb21taXRfd2FpdC5sb2NrKTsKKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRl cnJ1cHRpYmxlX2xvY2tlZCgKKwkJCQlpbXhfY3J0Yy0+Y29tbWl0X3dhaXQsCisJCQkJIWlteF9j cnRjLT5jb21taXRfcGVuZGluZyk7CisJCWlmIChyZXQgPT0gMCkKKwkJCWlteF9jcnRjLT5jb21t aXRfcGVuZGluZyA9IHRydWU7CisJCXNwaW5fdW5sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQu bG9jayk7CisKKwkJaWYgKHJldCkgeworCQkJa2ZyZWUoY29tbWl0KTsKKwkJCXJldHVybiByZXQ7 CisJCX0KKwl9CisKKwlpZiAobm9uYmxvY2spCisJCUlOSVRfV09SSygmY29tbWl0LT53b3JrLCBp bXhfZHJtX2F0b21pY193b3JrKTsKKworCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2 LCBzdGF0ZSk7CisKKwlpZiAobm9uYmxvY2spCisJCXNjaGVkdWxlX3dvcmsoJmNvbW1pdC0+d29y ayk7CisJZWxzZQorCQlpbXhfZHJtX2F0b21pY19jb21wbGV0ZShjb21taXQpOworCisJcmV0dXJu IDA7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGlteF9k cm1fbW9kZV9jb25maWdfZnVuY3MgPSB7CiAJLmZiX2NyZWF0ZSA9IGRybV9mYl9jbWFfY3JlYXRl LAogCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW14X2RybV9vdXRwdXRfcG9sbF9jaGFuZ2VkLAog CS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKLQkuYXRvbWljX2NvbW1p dCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKKwkuYXRvbWljX2NvbW1pdCA9IGlteF9kcm1f YXRvbWljX2NvbW1pdCwKIH07CiAKIC8qCkBAIC0zMDcsNiArNDM4LDggQEAgaW50IGlteF9kcm1f YWRkX2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAog CWlteF9kcm1fY3J0Yy0+aW14X2RybV9oZWxwZXJfZnVuY3MgPSAqaW14X2RybV9oZWxwZXJfZnVu Y3M7CiAJaW14X2RybV9jcnRjLT5jcnRjID0gY3J0YzsKIAorCWluaXRfd2FpdHF1ZXVlX2hlYWQo JmlteF9kcm1fY3J0Yy0+Y29tbWl0X3dhaXQpOworCiAJY3J0Yy0+cG9ydCA9IHBvcnQ7CiAKIAlp bXhkcm0tPmNydGNbaW14ZHJtLT5waXBlcysrXSA9IGlteF9kcm1fY3J0YzsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9p cHV2My1jcnRjLmMKaW5kZXggZjIwMzQwZi4uN2VlNTFkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2lteC9pcHV2My1jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1j cnRjLmMKQEAgLTI0LDggKzI0LDYgQEAKICNpbmNsdWRlIDxsaW51eC9mYi5oPgogI2luY2x1ZGUg PGxpbnV4L2Nsay5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0jaW5jbHVkZSA8bGludXgv cmVzZXJ2YXRpb24uaD4KLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9nZW1fY21hX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5o PgogCkBAIC0zNSwyMyArMzMsNiBAQAogCiAjZGVmaW5lIERSSVZFUl9ERVNDCQkiaS5NWCBJUFV2 MyBHcmFwaGljcyIKIAotZW51bSBpcHVfZmxpcF9zdGF0dXMgewotCUlQVV9GTElQX05PTkUsCi0J SVBVX0ZMSVBfUEVORElORywKLQlJUFVfRkxJUF9TVUJNSVRURUQsCi19OwotCi1zdHJ1Y3QgaXB1 X2ZsaXBfd29yayB7Ci0Jc3RydWN0IHdvcmtfc3RydWN0CQl1bnJlZl93b3JrOwotCXN0cnVjdCBk cm1fZ2VtX29iamVjdAkJKmJvOwotCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKnBh Z2VfZmxpcF9ldmVudDsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCWZlbmNlX3dvcms7Ci0Jc3RydWN0 IGlwdV9jcnRjCQkJKmNydGM7Ci0Jc3RydWN0IGZlbmNlCQkJKmV4Y2w7Ci0JdW5zaWduZWQJCQlz aGFyZWRfY291bnQ7Ci0Jc3RydWN0IGZlbmNlCQkJKipzaGFyZWQ7Ci19OwotCiBzdHJ1Y3QgaXB1 X2NydGMgewogCXN0cnVjdCBkZXZpY2UJCSpkZXY7CiAJc3RydWN0IGRybV9jcnRjCQliYXNlOwpA QCAtNjIsOSArNDMsNiBAQCBzdHJ1Y3QgaXB1X2NydGMgewogCiAJc3RydWN0IGlwdV9kYwkJKmRj OwogCXN0cnVjdCBpcHVfZGkJCSpkaTsKLQllbnVtIGlwdV9mbGlwX3N0YXR1cwlmbGlwX3N0YXRl OwotCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpmbGlwX3F1ZXVlOwotCXN0cnVjdCBpcHVfZmxp cF93b3JrCSpmbGlwX3dvcms7CiAJaW50CQkJaXJxOwogfTsKIApAQCAtOTIsMTUwICs3MCwzNSBA QCBzdGF0aWMgdm9pZCBpcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlk cm1fY3J0Y192Ymxhbmtfb2ZmKCZpcHVfY3J0Yy0+YmFzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGlw dV9mbGlwX3VucmVmX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKLXsKLQlz dHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9Ci0JCQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1 Y3QgaXB1X2ZsaXBfd29yaywgdW5yZWZfd29yayk7Ci0KLQlkcm1fZ2VtX29iamVjdF91bnJlZmVy ZW5jZV91bmxvY2tlZCh3b3JrLT5ibyk7Ci0Ja2ZyZWUod29yayk7Ci19Ci0KLXN0YXRpYyB2b2lk IGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKLXsK LQlzdHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9Ci0JCQljb250YWluZXJfb2YoX193b3JrLCBz dHJ1Y3QgaXB1X2ZsaXBfd29yaywgZmVuY2Vfd29yayk7Ci0JaW50IGk7Ci0KLQkvKiB3YWl0IGZv ciBhbGwgZmVuY2VzIGF0dGFjaGVkIHRvIHRoZSBGQiBvYmogdG8gc2lnbmFsICovCi0JaWYgKHdv cmstPmV4Y2wpIHsKLQkJZmVuY2Vfd2FpdCh3b3JrLT5leGNsLCBmYWxzZSk7Ci0JCWZlbmNlX3B1 dCh3b3JrLT5leGNsKTsKLQl9Ci0JZm9yIChpID0gMDsgaSA8IHdvcmstPnNoYXJlZF9jb3VudDsg aSsrKSB7Ci0JCWZlbmNlX3dhaXQod29yay0+c2hhcmVkW2ldLCBmYWxzZSk7Ci0JCWZlbmNlX3B1 dCh3b3JrLT5zaGFyZWRbaV0pOwotCX0KLQotCXdvcmstPmNydGMtPmZsaXBfc3RhdGUgPSBJUFVf RkxJUF9TVUJNSVRURUQ7Ci19Ci0KLXN0YXRpYyBpbnQgaXB1X3BhZ2VfZmxpcChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCi0JCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAotCQlzdHJ1Y3QgZHJt X3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKLQkJdWludDMyX3QgcGFnZV9mbGlwX2ZsYWdz KQotewotCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmogPSBkcm1fZmJfY21hX2dl dF9nZW1fb2JqKGZiLCAwKTsKLQlzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjID0gdG9faXB1X2Ny dGMoY3J0Yyk7Ci0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKmZsaXBfd29yazsKLQlpbnQgcmV0Owot Ci0JaWYgKGlwdV9jcnRjLT5mbGlwX3N0YXRlICE9IElQVV9GTElQX05PTkUpCi0JCXJldHVybiAt RUJVU1k7Ci0KLQlyZXQgPSBpbXhfZHJtX2NydGNfdmJsYW5rX2dldChpcHVfY3J0Yy0+aW14X2Ny dGMpOwotCWlmIChyZXQpIHsKLQkJZGV2X2RiZyhpcHVfY3J0Yy0+ZGV2LCAiZmFpbGVkIHRvIGFj cXVpcmUgdmJsYW5rIGNvdW50ZXJcbiIpOwotCQlsaXN0X2RlbCgmZXZlbnQtPmJhc2UubGluayk7 Ci0KLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlmbGlwX3dvcmsgPSBremFsbG9jKHNpemVvZiAqZmxp cF93b3JrLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWZsaXBfd29yaykgewotCQlyZXQgPSAtRU5PTUVN OwotCQlnb3RvIHB1dF92Ymxhbms7Ci0JfQotCUlOSVRfV09SSygmZmxpcF93b3JrLT51bnJlZl93 b3JrLCBpcHVfZmxpcF91bnJlZl93b3JrX2Z1bmMpOwotCWZsaXBfd29yay0+cGFnZV9mbGlwX2V2 ZW50ID0gZXZlbnQ7Ci0KLQkvKiBnZXQgQk8gYmFja2luZyB0aGUgb2xkIGZyYW1lYnVmZmVyIGFu ZCB0YWtlIGEgcmVmZXJlbmNlICovCi0JZmxpcF93b3JrLT5ibyA9ICZkcm1fZmJfY21hX2dldF9n ZW1fb2JqKGNydGMtPnByaW1hcnktPmZiLCAwKS0+YmFzZTsKLQlkcm1fZ2VtX29iamVjdF9yZWZl cmVuY2UoZmxpcF93b3JrLT5ibyk7Ci0KLQlpcHVfY3J0Yy0+ZmxpcF93b3JrID0gZmxpcF93b3Jr OwotCS8qCi0JICogSWYgdGhlIG9iamVjdCBoYXMgYSBETUFCVUYgYXR0YWNoZWQsIHdlIG5lZWQg dG8gd2FpdCBvbiBpdHMgZmVuY2VzCi0JICogaWYgdGhlcmUgYXJlIGFueS4KLQkgKi8KLQlpZiAo Y21hX29iai0+YmFzZS5kbWFfYnVmKSB7Ci0JCUlOSVRfV09SSygmZmxpcF93b3JrLT5mZW5jZV93 b3JrLCBpcHVfZmxpcF9mZW5jZV93b3JrX2Z1bmMpOwotCQlmbGlwX3dvcmstPmNydGMgPSBpcHVf Y3J0YzsKLQotCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3UoCi0JCQkJ Y21hX29iai0+YmFzZS5kbWFfYnVmLT5yZXN2LCAmZmxpcF93b3JrLT5leGNsLAotCQkJCSZmbGlw X3dvcmstPnNoYXJlZF9jb3VudCwgJmZsaXBfd29yay0+c2hhcmVkKTsKLQotCQlpZiAodW5saWtl bHkocmV0KSkgewotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyBmb3IgYnVmZmVy XG4iKTsKLQkJCWdvdG8gZnJlZV9mbGlwX3dvcms7Ci0JCX0KLQotCQkvKiBObyBuZWVkIHRvIHF1 ZXVlIHRoZSB3b3JrZXIgaWYgdGhlIGFyZSBubyBmZW5jZXMgKi8KLQkJaWYgKCFmbGlwX3dvcmst PmV4Y2wgJiYgIWZsaXBfd29yay0+c2hhcmVkX2NvdW50KSB7Ci0JCQlpcHVfY3J0Yy0+ZmxpcF9z dGF0ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKLQkJfSBlbHNlIHsKLQkJCWlwdV9jcnRjLT5mbGlw X3N0YXRlID0gSVBVX0ZMSVBfUEVORElORzsKLQkJCXF1ZXVlX3dvcmsoaXB1X2NydGMtPmZsaXBf cXVldWUsCi0JCQkJICAgJmZsaXBfd29yay0+ZmVuY2Vfd29yayk7Ci0JCX0KLQl9IGVsc2Ugewot CQlpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKLQl9Ci0KLQlpZiAo Y3J0Yy0+cHJpbWFyeS0+c3RhdGUpCi0JCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShjcnRj LT5wcmltYXJ5LT5zdGF0ZSwgZmIpOwotCi0JcmV0dXJuIDA7Ci0KLWZyZWVfZmxpcF93b3JrOgot CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGZsaXBfd29yay0+Ym8pOwotCWtm cmVlKGZsaXBfd29yayk7Ci0JaXB1X2NydGMtPmZsaXBfd29yayA9IE5VTEw7Ci1wdXRfdmJsYW5r OgotCWlteF9kcm1fY3J0Y192YmxhbmtfcHV0KGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0KLQlyZXR1 cm4gcmV0OwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGlwdV9jcnRj X2Z1bmNzID0gewogCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywK IAkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCi0JLnBhZ2VfZmxpcCA9IGlwdV9wYWdlX2Zs aXAsCisJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKIAkucmVzZXQg PSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0 cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAogfTsKIAot c3RhdGljIHZvaWQgaXB1X2NydGNfaGFuZGxlX3BhZ2VmbGlwKHN0cnVjdCBpcHVfY3J0YyAqaXB1 X2NydGMpCitzdGF0aWMgdm9pZCBpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoc3RydWN0IGRybV9j cnRjICpjcnRjKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7CiAJdW5z aWduZWQgbG9uZyBmbGFnczsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXB1X2NydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBpcHVfZmxpcF93b3JrICp3b3JrID0gaXB1X2NydGMtPmZsaXBfd29y azsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkcm0tPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQlpZiAo d29yay0+cGFnZV9mbGlwX2V2ZW50KQotCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgmaXB1 X2NydGMtPmJhc2UsCi0JCQkJCSAgIHdvcmstPnBhZ2VfZmxpcF9ldmVudCk7Ci0JaW14X2RybV9j cnRjX3ZibGFua19wdXQoaXB1X2NydGMtPmlteF9jcnRjKTsKKwlkcm1fY3J0Y19zZW5kX3ZibGFu a19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOworCWNydGMtPnN0YXRlLT5ldmVudCA9 IE5VTEw7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7 CiB9CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBpcHVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq ZGV2X2lkKQogewogCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSBkZXZfaWQ7CisJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gJmlwdV9jcnRjLT5iYXNlOwogCiAJaW14X2RybV9oYW5kbGVfdmJs YW5rKGlwdV9jcnRjLT5pbXhfY3J0Yyk7CiAKLQlpZiAoaXB1X2NydGMtPmZsaXBfc3RhdGUgPT0g SVBVX0ZMSVBfU1VCTUlUVEVEKSB7Ci0JCXN0cnVjdCBpcHVfcGxhbmUgKnBsYW5lID0gaXB1X2Ny dGMtPnBsYW5lWzBdOwotCi0JCWlwdV9wbGFuZV9zZXRfYmFzZShwbGFuZSwgaXB1X2NydGMtPmJh c2UucHJpbWFyeS0+ZmIpOwotCQlpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoaXB1X2NydGMpOwot CQlxdWV1ZV93b3JrKGlwdV9jcnRjLT5mbGlwX3F1ZXVlLAotCQkJICAgJmlwdV9jcnRjLT5mbGlw X3dvcmstPnVucmVmX3dvcmspOwotCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX05P TkU7Ci0JfQorCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpCisJCWlwdV9jcnRjX2hhbmRsZV9wYWdl ZmxpcChjcnRjKTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTQ1OCw4ICszMjEsNiBA QCBzdGF0aWMgaW50IGlwdV9jcnRjX2luaXQoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywKIAkv KiBPbmx5IGVuYWJsZSBJUlEgd2hlbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIHRyaWdnZXIgd29y ay4gKi8KIAlkaXNhYmxlX2lycShpcHVfY3J0Yy0+aXJxKTsKIAotCWlwdV9jcnRjLT5mbGlwX3F1 ZXVlID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoImlwdS1jcnRjLWZsaXAiKTsKLQog CXJldHVybiAwOwogCiBlcnJfcHV0X3BsYW5lMV9yZXM6CkBAIC01MDQsNyArMzY1LDYgQEAgc3Rh dGljIHZvaWQgaXB1X2RybV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsCiAKIAlpbXhfZHJtX3JlbW92ZV9jcnRjKGlwdV9jcnRjLT5pbXhfY3J0Yyk7CiAK LQlkZXN0cm95X3dvcmtxdWV1ZShpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSk7CiAJaXB1X3B1dF9yZXNv dXJjZXMoaXB1X2NydGMpOwogCWlmIChpcHVfY3J0Yy0+cGxhbmVbMV0pCiAJCWlwdV9wbGFuZV9w dXRfcmVzb3VyY2VzKGlwdV9jcnRjLT5wbGFuZVsxXSk7Ci0tIAoyLjcuNAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==