From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH 13/14] drm/imx: atomic phase 3 step 4: Use generic atomic page flip Date: Tue, 24 May 2016 18:10:52 +0800 Message-ID: <1464084653-16684-14-git-send-email-gnuiyl@gmail.com> References: <1464084653-16684-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-bn1-obe.outbound.protection.outlook.com (mail-bn1on0080.outbound.protection.outlook.com [157.56.110.80]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6EAE36E6F7 for ; Tue, 24 May 2016 10:26:44 +0000 (UTC) In-Reply-To: <1464084653-16684-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 List-Id: dri-devel@lists.freedesktop.org VG8gc3VwcG9ydCBnZW5lcmljIGF0b21pYyBwYWdlIGZsaXAsIHRoaXMgcGF0Y2ggY3VzdG9taXpl cyAtPmF0b21pY19jb21taXQKZm9yIGFzeW5jIGNvbW1pdHMuCgpTaWduZWQtb2ZmLWJ5OiBMaXUg WWluZyA8Z251aXlsQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0t Y29yZS5jIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dw dS9kcm0vaW14L2lwdXYzLWNydGMuYyAgIHwgMTU2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDE0OSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5j IGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuYwppbmRleCAyZmEwNGEwLi5jYjUy MWNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMKQEAgLTE1LDEwICsxNSwxNCBAQAog ICovCiAjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CiAjaW5jbHVkZSA8bGludXgvZGV2aWNl Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0 Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgog I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJf aGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgpAQCAtNDgsNiArNTIs MTQgQEAgc3RydWN0IGlteF9kcm1fZGV2aWNlIHsKIHN0cnVjdCBpbXhfZHJtX2NydGMgewogCXN0 cnVjdCBkcm1fY3J0YwkJCQkqY3J0YzsKIAlzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9mdW5j cwlpbXhfZHJtX2hlbHBlcl9mdW5jczsKKwl3YWl0X3F1ZXVlX2hlYWRfdAkJCWNvbW1pdF93YWl0 OworCWJvb2wJCQkJCWNvbW1pdF9wZW5kaW5nOworfTsKKworc3RydWN0IGlteF9kcm1fY29tbWl0 IHsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owor CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKIH07CiAKICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKQpAQCAtMTY4LDExICsxODAsMTMyIEBAIHN0YXRpYyB2 b2lkIGlteF9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQog CWRybV9mYmRldl9jbWFfaG90cGx1Z19ldmVudChpbXhkcm0tPmZiaGVscGVyKTsKIH0KIAorc3Rh dGljIHZvaWQgaW14X2RybV9hdG9taWNfY29tcGxldGUoc3RydWN0IGlteF9kcm1fY29tbWl0ICpj b21taXQsIGJvb2wgYXN5bmMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbW1pdC0+ ZGV2OworCXN0cnVjdCBpbXhfZHJtX2RldmljZSAqaW14ZHJtID0gZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfY3J0YzsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlID0gY29tbWl0LT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2Jq OworCXN0cnVjdCBmZW5jZSAqZXhjbDsKKwl1bnNpZ25lZCBzaGFyZWRfY291bnQ7CisJc3RydWN0 IGZlbmNlICoqc2hhcmVkOworCXVuc2lnbmVkIGludCBpLCBqOworCWludCByZXQ7CisKKwkvKiBX YWl0IGZvciBmZW5jZXMuICovCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNy dGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CisJCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpIHsKKwkJ CXBsYW5lX3N0YXRlID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGU7CisJCQljbWFfb2JqID0gZHJtX2Zi X2NtYV9nZXRfZ2VtX29iaihwbGFuZV9zdGF0ZS0+ZmIsIDApOworCQkJaWYgKGNtYV9vYmotPmJh c2UuZG1hX2J1ZikgeworCQkJCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZmVuY2VzX3Jj dSgKKwkJCQkJY21hX29iai0+YmFzZS5kbWFfYnVmLT5yZXN2LCAmZXhjbCwKKwkJCQkJJnNoYXJl ZF9jb3VudCwgJnNoYXJlZCk7CisJCQkJaWYgKHVubGlrZWx5KHJldCkpCisJCQkJCURSTV9FUlJP UigiZmFpbGVkIHRvIGdldCBmZW5jZXMgIgorCQkJCQkJICAiZm9yIGJ1ZmZlclxuIik7CisKKwkJ CQlpZiAoZXhjbCkgeworCQkJCQlmZW5jZV93YWl0KGV4Y2wsIGZhbHNlKTsKKwkJCQkJZmVuY2Vf cHV0KGV4Y2wpOworCQkJCX0KKwkJCQlmb3IgKGogPSAwOyBqIDwgc2hhcmVkX2NvdW50OyBpKysp IHsKKwkJCQkJZmVuY2Vfd2FpdChzaGFyZWRbal0sIGZhbHNlKTsKKwkJCQkJZmVuY2VfcHV0KHNo YXJlZFtqXSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQXBwbHkgdGhlIGF0b21pYyB1 cGRhdGUuICovCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZGlzYWJsZXMoZGV2 LCBvbGRfc3RhdGUpOworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMo ZGV2LCBvbGRfc3RhdGUpOworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBv bGRfc3RhdGUsIGZhbHNlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRl diwgb2xkX3N0YXRlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9s ZF9zdGF0ZSk7CisKKwlpZiAoYXN5bmMpCisJCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0 YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgeworCQkJaW14X2NydGMgPSBpbXhkcm0tPmNy dGNbaV07CisKKwkJCS8qIENvbXBsZXRlIHRoZSBjb21taXQsIHdha2UgdXAgYW55IHdhaXRlci4g Ki8KKwkJCXNwaW5fbG9jaygmaW14X2NydGMtPmNvbW1pdF93YWl0LmxvY2spOworCQkJaW14X2Ny dGMtPmNvbW1pdF9wZW5kaW5nID0gZmFsc2U7CisJCQl3YWtlX3VwX2FsbF9sb2NrZWQoJmlteF9j cnRjLT5jb21taXRfd2FpdCk7CisJCQlzcGluX3VubG9jaygmaW14X2NydGMtPmNvbW1pdF93YWl0 LmxvY2spOworCQl9CisKKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUob2xkX3N0YXRlKTsKKworCWtm cmVlKGNvbW1pdCk7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9kcm1fYXRvbWljX3dvcmsoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBpbXhfZHJtX2NvbW1pdCAqY29tbWl0ID0K KwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbXhfZHJtX2NvbW1pdCwgd29yayk7CisKKwlp bXhfZHJtX2F0b21pY19jb21wbGV0ZShjb21taXQsIHRydWUpOworfQorCitzdGF0aWMgaW50IGlt eF9kcm1fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGJvb2wgYXN5bmMpCit7CisJc3RydWN0IGlteF9kcm1f ZGV2aWNlICppbXhkcm0gPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbXhfZHJtX2NydGMg KmlteF9jcnRjOworCXN0cnVjdCBpbXhfZHJtX2NvbW1pdCAqY29tbWl0OworCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJdW5zaWdu ZWQgaW50IGk7CisJaW50IHJldDsKKworCWNvbW1pdCA9IGt6YWxsb2Moc2l6ZW9mKCpjb21taXQp LCBHRlBfS0VSTkVMKTsKKwlpZiAoY29tbWl0ID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOwor CisJY29tbWl0LT5kZXYgPSBkZXY7CisJY29tbWl0LT5zdGF0ZSA9IHN0YXRlOworCisJaWYgKGFz eW5jKSB7CisJCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUs IGkpIHsKKwkJCWlteF9jcnRjID0gaW14ZHJtLT5jcnRjW2ldOworCisJCQlzcGluX2xvY2soJmlt eF9jcnRjLT5jb21taXRfd2FpdC5sb2NrKTsKKwkJCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0 aWJsZV9sb2NrZWQoCisJCQkJCWlteF9jcnRjLT5jb21taXRfd2FpdCwKKwkJCQkJIWlteF9jcnRj LT5jb21taXRfcGVuZGluZyk7CisJCQlpZiAocmV0ID09IDApCisJCQkJaW14X2NydGMtPmNvbW1p dF9wZW5kaW5nID0gdHJ1ZTsKKwkJCXNwaW5fdW5sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQu bG9jayk7CisKKwkJCWlmIChyZXQpIHsKKwkJCQlrZnJlZShjb21taXQpOworCQkJCXJldHVybiBy ZXQ7CisJCQl9CisJCX0KKworCQlJTklUX1dPUksoJmNvbW1pdC0+d29yaywgaW14X2RybV9hdG9t aWNfd29yayk7CisJfQorCisJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRl KTsKKworCWlmIChhc3luYykKKwkJc2NoZWR1bGVfd29yaygmY29tbWl0LT53b3JrKTsKKwllbHNl CisJCWlteF9kcm1fYXRvbWljX2NvbXBsZXRlKGNvbW1pdCwgYXN5bmMpOworCisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGlteF9kcm1f bW9kZV9jb25maWdfZnVuY3MgPSB7CiAJLmZiX2NyZWF0ZSA9IGRybV9mYl9jbWFfY3JlYXRlLAog CS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW14X2RybV9vdXRwdXRfcG9sbF9jaGFuZ2VkLAogCS5h dG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKLQkuYXRvbWljX2NvbW1pdCA9 IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKKwkuYXRvbWljX2NvbW1pdCA9IGlteF9kcm1fYXRv bWljX2NvbW1pdCwKIH07CiAKIC8qCkBAIC0zMTUsNiArNDQ4LDggQEAgaW50IGlteF9kcm1fYWRk X2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWlt eF9kcm1fY3J0Yy0+aW14X2RybV9oZWxwZXJfZnVuY3MgPSAqaW14X2RybV9oZWxwZXJfZnVuY3M7 CiAJaW14X2RybV9jcnRjLT5jcnRjID0gY3J0YzsKIAorCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmlt eF9kcm1fY3J0Yy0+Y29tbWl0X3dhaXQpOworCiAJY3J0Yy0+cG9ydCA9IHBvcnQ7CiAKIAlpbXhk cm0tPmNydGNbaW14ZHJtLT5waXBlcysrXSA9IGlteF9kcm1fY3J0YzsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2 My1jcnRjLmMKaW5kZXggNGQxYjkxMS4uZGNiZWI1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2lteC9pcHV2My1jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1jcnRj LmMKQEAgLTI0LDggKzI0LDYgQEAKICNpbmNsdWRlIDxsaW51eC9mYi5oPgogI2luY2x1ZGUgPGxp bnV4L2Nsay5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0jaW5jbHVkZSA8bGludXgvcmVz ZXJ2YXRpb24uaD4KLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fY21hX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgog CkBAIC0zNSwyMyArMzMsNiBAQAogCiAjZGVmaW5lIERSSVZFUl9ERVNDCQkiaS5NWCBJUFV2MyBH cmFwaGljcyIKIAotZW51bSBpcHVfZmxpcF9zdGF0dXMgewotCUlQVV9GTElQX05PTkUsCi0JSVBV X0ZMSVBfUEVORElORywKLQlJUFVfRkxJUF9TVUJNSVRURUQsCi19OwotCi1zdHJ1Y3QgaXB1X2Zs aXBfd29yayB7Ci0Jc3RydWN0IHdvcmtfc3RydWN0CQl1bnJlZl93b3JrOwotCXN0cnVjdCBkcm1f Z2VtX29iamVjdAkJKmJvOwotCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKnBhZ2Vf ZmxpcF9ldmVudDsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCWZlbmNlX3dvcms7Ci0Jc3RydWN0IGlw dV9jcnRjCQkJKmNydGM7Ci0Jc3RydWN0IGZlbmNlCQkJKmV4Y2w7Ci0JdW5zaWduZWQJCQlzaGFy ZWRfY291bnQ7Ci0Jc3RydWN0IGZlbmNlCQkJKipzaGFyZWQ7Ci19OwotCiBzdHJ1Y3QgaXB1X2Ny dGMgewogCXN0cnVjdCBkZXZpY2UJCSpkZXY7CiAJc3RydWN0IGRybV9jcnRjCQliYXNlOwpAQCAt NjIsOSArNDMsNiBAQCBzdHJ1Y3QgaXB1X2NydGMgewogCiAJc3RydWN0IGlwdV9kYwkJKmRjOwog CXN0cnVjdCBpcHVfZGkJCSpkaTsKLQllbnVtIGlwdV9mbGlwX3N0YXR1cwlmbGlwX3N0YXRlOwot CXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpmbGlwX3F1ZXVlOwotCXN0cnVjdCBpcHVfZmxpcF93 b3JrCSpmbGlwX3dvcms7CiAJaW50CQkJaXJxOwogfTsKIApAQCAtOTQsMTUwICs3MiwzNSBAQCBz dGF0aWMgdm9pZCBpcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcm1f Y3J0Y192Ymxhbmtfb2ZmKCZpcHVfY3J0Yy0+YmFzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGlwdV9m bGlwX3VucmVmX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKLXsKLQlzdHJ1 Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9Ci0JCQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1Y3Qg aXB1X2ZsaXBfd29yaywgdW5yZWZfd29yayk7Ci0KLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZV91bmxvY2tlZCh3b3JrLT5ibyk7Ci0Ja2ZyZWUod29yayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGlw dV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKLXsKLQlz dHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9Ci0JCQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1 Y3QgaXB1X2ZsaXBfd29yaywgZmVuY2Vfd29yayk7Ci0JaW50IGk7Ci0KLQkvKiB3YWl0IGZvciBh bGwgZmVuY2VzIGF0dGFjaGVkIHRvIHRoZSBGQiBvYmogdG8gc2lnbmFsICovCi0JaWYgKHdvcmst PmV4Y2wpIHsKLQkJZmVuY2Vfd2FpdCh3b3JrLT5leGNsLCBmYWxzZSk7Ci0JCWZlbmNlX3B1dCh3 b3JrLT5leGNsKTsKLQl9Ci0JZm9yIChpID0gMDsgaSA8IHdvcmstPnNoYXJlZF9jb3VudDsgaSsr KSB7Ci0JCWZlbmNlX3dhaXQod29yay0+c2hhcmVkW2ldLCBmYWxzZSk7Ci0JCWZlbmNlX3B1dCh3 b3JrLT5zaGFyZWRbaV0pOwotCX0KLQotCXdvcmstPmNydGMtPmZsaXBfc3RhdGUgPSBJUFVfRkxJ UF9TVUJNSVRURUQ7Ci19Ci0KLXN0YXRpYyBpbnQgaXB1X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCi0JCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAotCQlzdHJ1Y3QgZHJtX3Bl bmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKLQkJdWludDMyX3QgcGFnZV9mbGlwX2ZsYWdzKQot ewotCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmogPSBkcm1fZmJfY21hX2dldF9n ZW1fb2JqKGZiLCAwKTsKLQlzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjID0gdG9faXB1X2NydGMo Y3J0Yyk7Ci0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKmZsaXBfd29yazsKLQlpbnQgcmV0OwotCi0J aWYgKGlwdV9jcnRjLT5mbGlwX3N0YXRlICE9IElQVV9GTElQX05PTkUpCi0JCXJldHVybiAtRUJV U1k7Ci0KLQlyZXQgPSBpbXhfZHJtX2NydGNfdmJsYW5rX2dldChpcHVfY3J0Yy0+aW14X2NydGMp OwotCWlmIChyZXQpIHsKLQkJZGV2X2RiZyhpcHVfY3J0Yy0+ZGV2LCAiZmFpbGVkIHRvIGFjcXVp cmUgdmJsYW5rIGNvdW50ZXJcbiIpOwotCQlsaXN0X2RlbCgmZXZlbnQtPmJhc2UubGluayk7Ci0K LQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlmbGlwX3dvcmsgPSBremFsbG9jKHNpemVvZiAqZmxpcF93 b3JrLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWZsaXBfd29yaykgewotCQlyZXQgPSAtRU5PTUVNOwot CQlnb3RvIHB1dF92Ymxhbms7Ci0JfQotCUlOSVRfV09SSygmZmxpcF93b3JrLT51bnJlZl93b3Jr LCBpcHVfZmxpcF91bnJlZl93b3JrX2Z1bmMpOwotCWZsaXBfd29yay0+cGFnZV9mbGlwX2V2ZW50 ID0gZXZlbnQ7Ci0KLQkvKiBnZXQgQk8gYmFja2luZyB0aGUgb2xkIGZyYW1lYnVmZmVyIGFuZCB0 YWtlIGEgcmVmZXJlbmNlICovCi0JZmxpcF93b3JrLT5ibyA9ICZkcm1fZmJfY21hX2dldF9nZW1f b2JqKGNydGMtPnByaW1hcnktPmZiLCAwKS0+YmFzZTsKLQlkcm1fZ2VtX29iamVjdF9yZWZlcmVu Y2UoZmxpcF93b3JrLT5ibyk7Ci0KLQlpcHVfY3J0Yy0+ZmxpcF93b3JrID0gZmxpcF93b3JrOwot CS8qCi0JICogSWYgdGhlIG9iamVjdCBoYXMgYSBETUFCVUYgYXR0YWNoZWQsIHdlIG5lZWQgdG8g d2FpdCBvbiBpdHMgZmVuY2VzCi0JICogaWYgdGhlcmUgYXJlIGFueS4KLQkgKi8KLQlpZiAoY21h X29iai0+YmFzZS5kbWFfYnVmKSB7Ci0JCUlOSVRfV09SSygmZmxpcF93b3JrLT5mZW5jZV93b3Jr LCBpcHVfZmxpcF9mZW5jZV93b3JrX2Z1bmMpOwotCQlmbGlwX3dvcmstPmNydGMgPSBpcHVfY3J0 YzsKLQotCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3UoCi0JCQkJY21h X29iai0+YmFzZS5kbWFfYnVmLT5yZXN2LCAmZmxpcF93b3JrLT5leGNsLAotCQkJCSZmbGlwX3dv cmstPnNoYXJlZF9jb3VudCwgJmZsaXBfd29yay0+c2hhcmVkKTsKLQotCQlpZiAodW5saWtlbHko cmV0KSkgewotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyBmb3IgYnVmZmVyXG4i KTsKLQkJCWdvdG8gZnJlZV9mbGlwX3dvcms7Ci0JCX0KLQotCQkvKiBObyBuZWVkIHRvIHF1ZXVl IHRoZSB3b3JrZXIgaWYgdGhlIGFyZSBubyBmZW5jZXMgKi8KLQkJaWYgKCFmbGlwX3dvcmstPmV4 Y2wgJiYgIWZsaXBfd29yay0+c2hhcmVkX2NvdW50KSB7Ci0JCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0 ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKLQkJfSBlbHNlIHsKLQkJCWlwdV9jcnRjLT5mbGlwX3N0 YXRlID0gSVBVX0ZMSVBfUEVORElORzsKLQkJCXF1ZXVlX3dvcmsoaXB1X2NydGMtPmZsaXBfcXVl dWUsCi0JCQkJICAgJmZsaXBfd29yay0+ZmVuY2Vfd29yayk7Ci0JCX0KLQl9IGVsc2UgewotCQlp cHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKLQl9Ci0KLQlpZiAoY3J0 Yy0+cHJpbWFyeS0+c3RhdGUpCi0JCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShjcnRjLT5w cmltYXJ5LT5zdGF0ZSwgZmIpOwotCi0JcmV0dXJuIDA7Ci0KLWZyZWVfZmxpcF93b3JrOgotCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGZsaXBfd29yay0+Ym8pOwotCWtmcmVl KGZsaXBfd29yayk7Ci0JaXB1X2NydGMtPmZsaXBfd29yayA9IE5VTEw7Ci1wdXRfdmJsYW5rOgot CWlteF9kcm1fY3J0Y192YmxhbmtfcHV0KGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0KLQlyZXR1cm4g cmV0OwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGlwdV9jcnRjX2Z1 bmNzID0gewogCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKIAku ZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCi0JLnBhZ2VfZmxpcCA9IGlwdV9wYWdlX2ZsaXAs CisJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKIAkucmVzZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0g ZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0cm95 X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAogfTsKIAotc3Rh dGljIHZvaWQgaXB1X2NydGNfaGFuZGxlX3BhZ2VmbGlwKHN0cnVjdCBpcHVfY3J0YyAqaXB1X2Ny dGMpCitzdGF0aWMgdm9pZCBpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gaXB1X2NydGMtPmJhc2Uu ZGV2OwotCXN0cnVjdCBpcHVfZmxpcF93b3JrICp3b3JrID0gaXB1X2NydGMtPmZsaXBfd29yazsK IAogCXNwaW5fbG9ja19pcnFzYXZlKCZkcm0tPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQlpZiAod29y ay0+cGFnZV9mbGlwX2V2ZW50KQotCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgmaXB1X2Ny dGMtPmJhc2UsCi0JCQkJCSAgIHdvcmstPnBhZ2VfZmxpcF9ldmVudCk7Ci0JaW14X2RybV9jcnRj X3ZibGFua19wdXQoaXB1X2NydGMtPmlteF9jcnRjKTsKKwlkcm1fY3J0Y19zZW5kX3ZibGFua19l dmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOworCWNydGMtPnN0YXRlLT5ldmVudCA9IE5V TEw7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7CiB9 CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBpcHVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2 X2lkKQogewogCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSBkZXZfaWQ7CisJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gJmlwdV9jcnRjLT5iYXNlOwogCiAJaW14X2RybV9oYW5kbGVfdmJsYW5r KGlwdV9jcnRjLT5pbXhfY3J0Yyk7CiAKLQlpZiAoaXB1X2NydGMtPmZsaXBfc3RhdGUgPT0gSVBV X0ZMSVBfU1VCTUlUVEVEKSB7Ci0JCXN0cnVjdCBpcHVfcGxhbmUgKnBsYW5lID0gaXB1X2NydGMt PnBsYW5lWzBdOwotCi0JCWlwdV9wbGFuZV9zZXRfYmFzZShwbGFuZSwgaXB1X2NydGMtPmJhc2Uu cHJpbWFyeS0+ZmIpOwotCQlpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoaXB1X2NydGMpOwotCQlx dWV1ZV93b3JrKGlwdV9jcnRjLT5mbGlwX3F1ZXVlLAotCQkJICAgJmlwdV9jcnRjLT5mbGlwX3dv cmstPnVucmVmX3dvcmspOwotCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX05PTkU7 Ci0JfQorCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpCisJCWlwdV9jcnRjX2hhbmRsZV9wYWdlZmxp cChjcnRjKTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTQ1Miw4ICszMTUsNiBAQCBz dGF0aWMgaW50IGlwdV9jcnRjX2luaXQoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywKIAogCWlw dV9wbGFuZV9wdXRfcmVzb3VyY2VzKGlwdV9jcnRjLT5wbGFuZVswXSk7CiAKLQlpcHVfY3J0Yy0+ ZmxpcF9xdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJpcHUtY3J0Yy1mbGlw Iik7Ci0KIAlyZXR1cm4gMDsKIAogZXJyX3B1dF9wbGFuZV9yZXM6CkBAIC00OTUsNyArMzU2LDYg QEAgc3RhdGljIHZvaWQgaXB1X2RybV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXIsCiAKIAlpbXhfZHJtX3JlbW92ZV9jcnRjKGlwdV9jcnRjLT5pbXhfY3J0 Yyk7CiAKLQlkZXN0cm95X3dvcmtxdWV1ZShpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSk7CiAJaXB1X3B1 dF9yZXNvdXJjZXMoaXB1X2NydGMpOwogfQogCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==