From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King Subject: [PATCH 15/20] drm/armada: switch overlay plane to atomic modeset Date: Tue, 10 Jul 2018 11:42:29 +0100 Message-ID: References: <20180710104027.GJ17271@n2100.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by gabe.freedesktop.org (Postfix) with ESMTPS id 957E76E908 for ; Tue, 10 Jul 2018 10:42:33 +0000 (UTC) In-Reply-To: <20180710104027.GJ17271@n2100.armlinux.org.uk> Content-Disposition: inline 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: David Airlie List-Id: dri-devel@lists.freedesktop.org U3dpdGNoIHRoZSBvdmVybGF5IHBsYW5lIGF3YXkgZnJvbSB0aGUgdHJhbnNpdGlvbmFsIGhlbHBl cnMgYW5kIGxlZ2FjeQptZXRob2RzLCBhbmQgdXNlIGF0b21pYyBoZWxwZXJzIGluc3RlYWQgdG8g aW1wbGVtZW50IHRoZSBsZWdhY3kKc2V0X3BsYW5lIGlvY3RsIG1ldGhvZHMuCgpTaWduZWQtb2Zm LWJ5OiBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX2NydGMuYyAgICB8ICA4OSAtLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfY3J0Yy5oICAgIHwgIDE5IC0tLS0KIGRy aXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX292ZXJsYXkuYyB8IDE3MiArKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAy NDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1h ZGFfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfY3J0Yy5jCmluZGV4IGEy NTA5NGJiZWIyYy4uZWJjYjk5MzE2Yzk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJt YWRhL2FybWFkYV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfY3J0 Yy5jCkBAIC0xMTcsODAgKzExNyw2IEBAIHN0YXRpYyB2b2lkIGFybWFkYV9kcm1fY3J0Y191cGRh dGUoc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YywgYm9vbCBlbmFibGUpCiAJCSAgICAgICBkY3J0 Yy0+YmFzZSArIExDRF9TUFVfRFVNQl9DVFJMKTsKIH0KIAotc3RhdGljIHZvaWQgYXJtYWRhX2Ry bV9wbGFuZV93b3JrX2NhbGwoc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YywKLQlzdHJ1Y3QgYXJt YWRhX3BsYW5lX3dvcmsgKndvcmssCi0Jdm9pZCAoKmZuKShzdHJ1Y3QgYXJtYWRhX2NydGMgKiwg c3RydWN0IGFybWFkYV9wbGFuZV93b3JrICopKQotewotCXN0cnVjdCBhcm1hZGFfcGxhbmUgKmRw bGFuZSA9IGRybV90b19hcm1hZGFfcGxhbmUod29yay0+cGxhbmUpOwotCXN0cnVjdCBkcm1fcGVu ZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwot Ci0JaWYgKGZuKQotCQlmbihkY3J0Yywgd29yayk7Ci0JZHJtX2NydGNfdmJsYW5rX3B1dCgmZGNy dGMtPmNydGMpOwotCi0JZXZlbnQgPSB3b3JrLT5ldmVudDsKLQlmYiA9IHdvcmstPm9sZF9mYjsK LQlpZiAoZXZlbnQgfHwgZmIpIHsKLQkJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRjcnRjLT5j cnRjLmRldjsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCQlzcGluX2xvY2tfaXJxc2F2ZSgm ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0JCWlmIChldmVudCkKLQkJCWRybV9jcnRjX3NlbmRf dmJsYW5rX2V2ZW50KCZkY3J0Yy0+Y3J0YywgZXZlbnQpOwotCQlpZiAoZmIpCi0JCQlfX2FybWFk YV9kcm1fcXVldWVfdW5yZWZfd29yayhkZXYsIGZiKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0JfQotCi0JaWYgKHdvcmstPm5lZWRfa2ZyZWUp Ci0JCWtmcmVlKHdvcmspOwotCi0Jd2FrZV91cCgmZHBsYW5lLT5mcmFtZV93YWl0KTsKLX0KLQot c3RhdGljIHZvaWQgYXJtYWRhX2RybV9wbGFuZV93b3JrX3J1bihzdHJ1Y3QgYXJtYWRhX2NydGMg KmRjcnRjLAotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQotewotCXN0cnVjdCBhcm1hZGFfcGxh bmUgKmRwbGFuZSA9IGRybV90b19hcm1hZGFfcGxhbmUocGxhbmUpOwotCXN0cnVjdCBhcm1hZGFf cGxhbmVfd29yayAqd29yayA9IHhjaGcoJmRwbGFuZS0+d29yaywgTlVMTCk7Ci0KLQkvKiBIYW5k bGUgYW55IHBlbmRpbmcgZnJhbWUgd29yay4gKi8KLQlpZiAod29yaykKLQkJYXJtYWRhX2RybV9w bGFuZV93b3JrX2NhbGwoZGNydGMsIHdvcmssIHdvcmstPmZuKTsKLX0KLQotaW50IGFybWFkYV9k cm1fcGxhbmVfd29ya19xdWV1ZShzdHJ1Y3QgYXJtYWRhX2NydGMgKmRjcnRjLAotCXN0cnVjdCBh cm1hZGFfcGxhbmVfd29yayAqd29yaykKLXsKLQlzdHJ1Y3QgYXJtYWRhX3BsYW5lICpwbGFuZSA9 IGRybV90b19hcm1hZGFfcGxhbmUod29yay0+cGxhbmUpOwotCWludCByZXQ7Ci0KLQlyZXQgPSBk cm1fY3J0Y192YmxhbmtfZ2V0KCZkY3J0Yy0+Y3J0Yyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKLQotCXJldCA9IGNtcHhjaGcoJnBsYW5lLT53b3JrLCBOVUxMLCB3b3JrKSA/IC1FQlVTWSA6 IDA7Ci0JaWYgKHJldCkKLQkJZHJtX2NydGNfdmJsYW5rX3B1dCgmZGNydGMtPmNydGMpOwotCi0J cmV0dXJuIHJldDsKLX0KLQotaW50IGFybWFkYV9kcm1fcGxhbmVfd29ya193YWl0KHN0cnVjdCBh cm1hZGFfcGxhbmUgKnBsYW5lLCBsb25nIHRpbWVvdXQpCi17Ci0JcmV0dXJuIHdhaXRfZXZlbnRf dGltZW91dChwbGFuZS0+ZnJhbWVfd2FpdCwgIXBsYW5lLT53b3JrLCB0aW1lb3V0KTsKLX0KLQot dm9pZCBhcm1hZGFfZHJtX3BsYW5lX3dvcmtfY2FuY2VsKHN0cnVjdCBhcm1hZGFfY3J0YyAqZGNy dGMsCi0Jc3RydWN0IGFybWFkYV9wbGFuZSAqZHBsYW5lKQotewotCXN0cnVjdCBhcm1hZGFfcGxh bmVfd29yayAqd29yayA9IHhjaGcoJmRwbGFuZS0+d29yaywgTlVMTCk7Ci0KLQlpZiAod29yaykK LQkJYXJtYWRhX2RybV9wbGFuZV93b3JrX2NhbGwoZGNydGMsIHdvcmssIHdvcmstPmNhbmNlbCk7 Ci19Ci0KIHN0YXRpYyB2b2lkIGFybWFkYV9kcm1fY3J0Y19xdWV1ZV9zdGF0ZV9ldmVudChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YyA9IGRybV90 b19hcm1hZGFfY3J0YyhjcnRjKTsKQEAgLTI0Nyw3ICsxNzMsNiBAQCBzdGF0aWMgdm9pZCBhcm1h ZGFfZHJtX2NydGNfaXJxKHN0cnVjdCBhcm1hZGFfY3J0YyAqZGNydGMsIHUzMiBzdGF0KQogewog CXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwogCXZvaWQgX19pb21lbSAq YmFzZSA9IGRjcnRjLT5iYXNlOwotCXN0cnVjdCBkcm1fcGxhbmUgKm92bF9wbGFuZTsKIAogCWlm IChzdGF0ICYgRE1BX0ZGX1VOREVSRkxPVykKIAkJRFJNX0VSUk9SKCJ2aWRlbyB1bmRlcmZsb3cg b24gY3J0YyAldVxuIiwgZGNydGMtPm51bSk7CkBAIC0yNTcsMTAgKzE4Miw2IEBAIHN0YXRpYyB2 b2lkIGFybWFkYV9kcm1fY3J0Y19pcnEoc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YywgdTMyIHN0 YXQpCiAJaWYgKHN0YXQgJiBWU1lOQ19JUlEpCiAJCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmRj cnRjLT5jcnRjKTsKIAotCW92bF9wbGFuZSA9IGRjcnRjLT5wbGFuZTsKLQlpZiAob3ZsX3BsYW5l KQotCQlhcm1hZGFfZHJtX3BsYW5lX3dvcmtfcnVuKGRjcnRjLCBvdmxfcGxhbmUpOwotCiAJc3Bp bl9sb2NrKCZkY3J0Yy0+aXJxX2xvY2spOwogCWlmIChzdGF0ICYgR1JBX0ZSQU1FX0lSUSAmJiBk Y3J0Yy0+aW50ZXJsYWNlZCkgewogCQlpbnQgaSA9IHN0YXQgJiBHUkFfRlJBTUVfSVJRMCA/IDAg OiAxOwpAQCAtNDYyLDE5ICszODMsOSBAQCBzdGF0aWMgdm9pZCBhcm1hZGFfZHJtX2NydGNfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogewogCXN0cnVjdCBhcm1hZGFfY3J0 YyAqZGNydGMgPSBkcm1fdG9fYXJtYWRhX2NydGMoY3J0Yyk7CiAJc3RydWN0IGRybV9wZW5kaW5n X3ZibGFua19ldmVudCAqZXZlbnQ7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAKIAlEUk1f REVCVUdfS01TKCJbQ1JUQzolZDolc11cbiIsIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwog Ci0JLyoKLQkgKiBGb3IgdHJhbnNpdGlvbiBvbmx5IC0gd2UgbXVzdCB3YWl0IGZvciBjb21wbGV0 aW9uIG9mIG91cgotCSAqIHVudHJhbnNpdGlvbmVkIHBhdGhzIGJlZm9yZSBjaGFuZ2luZyBhbnl0 aGluZy4KLQkgKi8KLQlwbGFuZSA9IGRjcnRjLT5wbGFuZTsKLQlpZiAocGxhbmUpCi0JCVdBUk5f T04oIWFybWFkYV9kcm1fcGxhbmVfd29ya193YWl0KGRybV90b19hcm1hZGFfcGxhbmUocGxhbmUp LAotCQkJCQkJICAgIEhaKSk7Ci0KIAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwogCWFybWFk YV9kcm1fY3J0Y191cGRhdGUoZGNydGMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FybWFkYS9hcm1hZGFfY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1h ZGFfY3J0Yy5oCmluZGV4IGFmYzkyNjZiYzFlMi4uNWI2MDdkNDVmNDY5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9jcnRjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FybWFkYS9hcm1hZGFfY3J0Yy5oCkBAIC0zNSwyOSArMzUsMTIgQEAgc3RydWN0IGFybWFkYV9j cnRjOwogc3RydWN0IGFybWFkYV9wbGFuZTsKIHN0cnVjdCBhcm1hZGFfdmFyaWFudDsKIAotc3Ry dWN0IGFybWFkYV9wbGFuZV93b3JrIHsKLQl2b2lkICgqZm4pKHN0cnVjdCBhcm1hZGFfY3J0YyAq LCBzdHJ1Y3QgYXJtYWRhX3BsYW5lX3dvcmsgKik7Ci0Jdm9pZCAoKmNhbmNlbCkoc3RydWN0IGFy bWFkYV9jcnRjICosIHN0cnVjdCBhcm1hZGFfcGxhbmVfd29yayAqKTsKLQlib29sIG5lZWRfa2Zy ZWU7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq b2xkX2ZiOwotCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwotCXN0cnVj dCBhcm1hZGFfcmVncyByZWdzWzI0XTsKLX07Ci0KIHN0cnVjdCBhcm1hZGFfcGxhbmUgewogCXN0 cnVjdCBkcm1fcGxhbmUJYmFzZTsKIAl3YWl0X3F1ZXVlX2hlYWRfdAlmcmFtZV93YWl0OwotCXN0 cnVjdCBhcm1hZGFfcGxhbmVfd29yayAqd29yazsKIH07CiAjZGVmaW5lIGRybV90b19hcm1hZGFf cGxhbmUocCkgY29udGFpbmVyX29mKHAsIHN0cnVjdCBhcm1hZGFfcGxhbmUsIGJhc2UpCiAKLWlu dCBhcm1hZGFfZHJtX3BsYW5lX3dvcmtfcXVldWUoc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YywK LQlzdHJ1Y3QgYXJtYWRhX3BsYW5lX3dvcmsgKndvcmspOwotaW50IGFybWFkYV9kcm1fcGxhbmVf d29ya193YWl0KHN0cnVjdCBhcm1hZGFfcGxhbmUgKnBsYW5lLCBsb25nIHRpbWVvdXQpOwotdm9p ZCBhcm1hZGFfZHJtX3BsYW5lX3dvcmtfY2FuY2VsKHN0cnVjdCBhcm1hZGFfY3J0YyAqZGNydGMs Ci0Jc3RydWN0IGFybWFkYV9wbGFuZSAqcGxhbmUpOwotCiBzdHJ1Y3QgYXJtYWRhX2NydGMgewog CXN0cnVjdCBkcm1fY3J0YwkJY3J0YzsKIAljb25zdCBzdHJ1Y3QgYXJtYWRhX3ZhcmlhbnQgKnZh cmlhbnQ7CkBAIC03Myw4ICs1Niw2IEBAIHN0cnVjdCBhcm1hZGFfY3J0YyB7CiAJYm9vbAkJCWlu dGVybGFjZWQ7CiAJYm9vbAkJCWN1cnNvcl91cGRhdGU7CiAKLQlzdHJ1Y3QgZHJtX3BsYW5lCSpw bGFuZTsKLQogCXN0cnVjdCBhcm1hZGFfZ2VtX29iamVjdAkqY3Vyc29yX29iajsKIAlpbnQJCQlj dXJzb3JfeDsKIAlpbnQJCQljdXJzb3JfeTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h cm1hZGEvYXJtYWRhX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX292 ZXJsYXkuYwppbmRleCA3ZGU4YjZiZDc4NDcuLmVjMjA0M2I2ZjYxZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfb3ZlcmxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm1hZGEvYXJtYWRhX292ZXJsYXkuYwpAQCAtMjcsOSArMjcsNiBAQAogCiBzdHJ1Y3QgYXJt YWRhX292bF9wbGFuZSB7CiAJc3RydWN0IGFybWFkYV9wbGFuZSBiYXNlOwotCXN0cnVjdCBhcm1h ZGFfcGxhbmVfd29yayB3b3Jrc1syXTsKLQlib29sIG5leHRfd29yazsKLQlib29sIHdhaXRfdmJs YW5rOwogfTsKICNkZWZpbmUgZHJtX3RvX2FybWFkYV9vdmxfcGxhbmUocCkgXAogCWNvbnRhaW5l cl9vZihwLCBzdHJ1Y3QgYXJtYWRhX292bF9wbGFuZSwgYmFzZS5iYXNlKQpAQCAtNzQsMTggKzcx LDYgQEAgc3RhdGljIGlubGluZSB1MzIgYXJtYWRhX2NzYyhzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSkKIH0KIAogLyogPT09IFBsYW5lIHN1cHBvcnQgPT09ICovCi1zdGF0aWMgdm9pZCBh cm1hZGFfb3ZsX3BsYW5lX3dvcmsoc3RydWN0IGFybWFkYV9jcnRjICpkY3J0YywKLQlzdHJ1Y3Qg YXJtYWRhX3BsYW5lX3dvcmsgKndvcmspCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCXRy YWNlX2FybWFkYV9vdmxfcGxhbmVfd29yaygmZGNydGMtPmNydGMsIHdvcmstPnBsYW5lKTsKLQot CXNwaW5fbG9ja19pcnFzYXZlKCZkY3J0Yy0+aXJxX2xvY2ssIGZsYWdzKTsKLQlhcm1hZGFfZHJt X2NydGNfdXBkYXRlX3JlZ3MoZGNydGMsIHdvcmstPnJlZ3MpOwotCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRjcnRjLT5pcnFfbG9jaywgZmxhZ3MpOwotfQotCiBzdGF0aWMgdm9pZCBhcm1hZGFf ZHJtX292ZXJsYXlfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCiB7CkBAIC0xMDksOCArOTQsNiBA QCBzdGF0aWMgdm9pZCBhcm1hZGFfZHJtX292ZXJsYXlfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlkY3J0YyA9IGRybV90b19hcm1hZGFfY3J0YyhzdGF0ZS0+ Y3J0Yyk7CiAJcmVncyA9IGRjcnRjLT5yZWdzICsgZGNydGMtPnJlZ3NfaWR4OwogCi0JZHJtX3Rv X2FybWFkYV9vdmxfcGxhbmUocGxhbmUpLT53YWl0X3ZibGFuayA9IGZhbHNlOwotCiAJaWR4ID0g MDsKIAlpZiAoIW9sZF9zdGF0ZS0+dmlzaWJsZSAmJiBzdGF0ZS0+dmlzaWJsZSkKIAkJYXJtYWRh X3JlZ19xdWV1ZV9tb2QocmVncywgaWR4LApAQCAtMTczLDggKzE1Niw2IEBAIHN0YXRpYyB2b2lk IGFybWFkYV9kcm1fb3ZlcmxheV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCQkJCSAgICAgICBDRkdfU1dBUFlVIHwgQ0ZHX1lVVjJSR0IpIHwKIAkJCSAgIENG R19ETUFfRlRPR0dMRSB8IENGR19ETUFfVFNUTU9ERSB8CiAJCQkgICBDRkdfRE1BX0VOQTsKLQot CQlkcm1fdG9fYXJtYWRhX292bF9wbGFuZShwbGFuZSktPndhaXRfdmJsYW5rID0gdHJ1ZTsKIAl9 IGVsc2UgaWYgKG9sZF9zdGF0ZS0+dmlzaWJsZSAhPSBzdGF0ZS0+dmlzaWJsZSkgewogCQljZmcg PSBzdGF0ZS0+dmlzaWJsZSA/IENGR19ETUFfRU5BIDogMDsKIAkJY2ZnX21hc2sgPSBDRkdfRE1B X0VOQTsKQEAgLTI2Miw5ICsyNDMsNiBAQCBzdGF0aWMgdm9pZCBhcm1hZGFfZHJtX292ZXJsYXlf cGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgICAgIExD RF9TUFVfU1JBTV9QQVJBMSk7CiAKIAlkY3J0Yy0+cmVnc19pZHggKz0gaWR4OwotCi0JaWYgKGRj cnRjLT5wbGFuZSA9PSBwbGFuZSkKLQkJZGNydGMtPnBsYW5lID0gTlVMTDsKIH0KIAogc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGFybWFkYV9vdmVybGF5X3BsYW5l X2hlbHBlcl9mdW5jcyA9IHsKQEAgLTI3NSwxMDggKzI1Myw1MCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgYXJtYWRhX292ZXJsYXlfcGxhbmVfaGVscGVyX2Z1 bmNzID0gewogCS5hdG9taWNfZGlzYWJsZQk9IGFybWFkYV9kcm1fb3ZlcmxheV9wbGFuZV9hdG9t aWNfZGlzYWJsZSwKIH07CiAKLXN0YXRpYyBpbnQgYXJtYWRhX292ZXJsYXlfY29tbWl0KHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQotewot CXN0cnVjdCBhcm1hZGFfb3ZsX3BsYW5lICpkcGxhbmUgPSBkcm1fdG9fYXJtYWRhX292bF9wbGFu ZShwbGFuZSk7Ci0JY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKnBsYW5lX2Z1 bmNzOwotCXN0cnVjdCBhcm1hZGFfY3J0YyAqZGNydGMgPSBkcm1fdG9fYXJtYWRhX2NydGMoc3Rh dGUtPmNydGMpOwotCXN0cnVjdCBhcm1hZGFfcGxhbmVfd29yayAqd29yazsKLQlpbnQgcmV0Owot Ci0JcGxhbmVfZnVuY3MgPSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7Ci0JcmV0ID0gcGxhbmVfZnVu Y3MtPmF0b21pY19jaGVjayhwbGFuZSwgc3RhdGUpOwotCWlmIChyZXQpCi0JCWdvdG8gcHV0X3N0 YXRlOwotCi0Jd29yayA9ICZkcGxhbmUtPndvcmtzW2RwbGFuZS0+bmV4dF93b3JrXTsKLQotCWlm IChwbGFuZS0+c3RhdGUtPmZiICE9IHN0YXRlLT5mYikgewotCQkvKgotCQkgKiBUYWtlIGEgcmVm ZXJlbmNlIG9uIHRoZSBuZXcgZnJhbWVidWZmZXIgLSB3ZSB3YW50IHRvCi0JCSAqIGhvbGQgb24g dG8gaXQgd2hpbGUgdGhlIGhhcmR3YXJlIGlzIGRpc3BsYXlpbmcgaXQuCi0JCSAqLwotCQlkcm1f ZnJhbWVidWZmZXJfcmVmZXJlbmNlKHN0YXRlLT5mYik7Ci0KLQkJd29yay0+b2xkX2ZiID0gcGxh bmUtPnN0YXRlLT5mYjsKLQl9IGVsc2UgewotCQl3b3JrLT5vbGRfZmIgPSBOVUxMOwotCX0KLQot CS8qIFBvaW50IG9mIG5vIHJldHVybiAqLwotCXN3YXAocGxhbmUtPnN0YXRlLCBzdGF0ZSk7Ci0K LQkvKiBObyBDUlRDLCBjYW4ndCB1cGRhdGUgKi8KLQlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YykK LQkJZ290byBwdXRfc3RhdGU7Ci0KLQlkY3J0Yy0+cmVnc19pZHggPSAwOwotCWRjcnRjLT5yZWdz ID0gd29yay0+cmVnczsKLQotCXBsYW5lX2Z1bmNzLT5hdG9taWNfdXBkYXRlKHBsYW5lLCBzdGF0 ZSk7Ci0KLQkvKiBJZiBub3RoaW5nIHdhcyB1cGRhdGVkLCBzaG9ydC1jaXJjdWl0ICovCi0JaWYg KGRjcnRjLT5yZWdzX2lkeCA9PSAwKQotCQlnb3RvIHB1dF9zdGF0ZTsKLQotCWFybWFkYV9yZWdf cXVldWVfZW5kKGRjcnRjLT5yZWdzLCBkY3J0Yy0+cmVnc19pZHgpOwotCi0JLyogV2FpdCBmb3Ig cGVuZGluZyB3b3JrIHRvIGNvbXBsZXRlICovCi0JaWYgKGFybWFkYV9kcm1fcGxhbmVfd29ya193 YWl0KCZkcGxhbmUtPmJhc2UsIEhaIC8gMjUpID09IDApCi0JCWFybWFkYV9kcm1fcGxhbmVfd29y a19jYW5jZWwoZGNydGMsICZkcGxhbmUtPmJhc2UpOwotCi0JLyogSnVzdCB1cGRhdGluZyB0aGUg cG9zaXRpb24vc2l6ZT8gKi8KLQlpZiAoIWRwbGFuZS0+d2FpdF92YmxhbmspIHsKLQkJYXJtYWRh X292bF9wbGFuZV93b3JrKGRjcnRjLCB3b3JrKTsKLQkJZ290byBwdXRfc3RhdGU7Ci0JfQotCi0J ZGNydGMtPnBsYW5lID0gcGxhbmU7Ci0KLQkvKiBRdWV1ZSBpdCBmb3IgdXBkYXRlIG9uIHRoZSBu ZXh0IGludGVycnVwdCBpZiB3ZSBhcmUgZW5hYmxlZCAqLwotCXJldCA9IGFybWFkYV9kcm1fcGxh bmVfd29ya19xdWV1ZShkY3J0Yywgd29yayk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoImZh aWxlZCB0byBxdWV1ZSBwbGFuZSB3b3JrOiAlZFxuIiwgcmV0KTsKLQkJcmV0ID0gMDsKLQl9Ci0K LQlkcGxhbmUtPm5leHRfd29yayA9ICFkcGxhbmUtPm5leHRfd29yazsKLQotcHV0X3N0YXRlOgot CXBsYW5lLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlKTsKLQlyZXR1 cm4gcmV0OwotfQotCiBzdGF0aWMgaW50Ci1hcm1hZGFfb3ZsX3BsYW5lX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAorYXJtYWRhX292ZXJsYXlf cGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJaW50IGNydGNfeCwgaW50IGNydGNf eSwgdW5zaWduZWQgY3J0Y193LCB1bnNpZ25lZCBjcnRjX2gsCiAJdWludDMyX3Qgc3JjX3gsIHVp bnQzMl90IHNyY195LCB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsCiAJc3RydWN0IGRy bV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpCiB7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGU7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCWludCByZXQgPSAwOwogCiAJdHJhY2VfYXJtYWRhX292 bF9wbGFuZV91cGRhdGUocGxhbmUsIGNydGMsIGZiLAogCQkJCSBjcnRjX3gsIGNydGNfeSwgY3J0 Y193LCBjcnRjX2gsCiAJCQkJIHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oKTsKIAotCS8qIENv bnN0cnVjdCBuZXcgc3RhdGUgZm9yIHRoZSBvdmVybGF5IHBsYW5lICovCi0Jc3RhdGUgPSBwbGFu ZS0+ZnVuY3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUocGxhbmUpOworCXN0YXRlID0gZHJtX2F0 b21pY19zdGF0ZV9hbGxvYyhwbGFuZS0+ZGV2KTsKIAlpZiAoIXN0YXRlKQogCQlyZXR1cm4gLUVO T01FTTsKIAotCXN0YXRlLT5jcnRjID0gY3J0YzsKLQlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxh bmUoc3RhdGUsIGZiKTsKLQlzdGF0ZS0+Y3J0Y194ID0gY3J0Y194OwotCXN0YXRlLT5jcnRjX3kg PSBjcnRjX3k7Ci0Jc3RhdGUtPmNydGNfaCA9IGNydGNfaDsKLQlzdGF0ZS0+Y3J0Y193ID0gY3J0 Y193OwotCXN0YXRlLT5zcmNfeCA9IHNyY194OwotCXN0YXRlLT5zcmNfeSA9IHNyY195OwotCXN0 YXRlLT5zcmNfaCA9IHNyY19oOwotCXN0YXRlLT5zcmNfdyA9IHNyY193OwotCi0JcmV0dXJuIGFy bWFkYV9vdmVybGF5X2NvbW1pdChwbGFuZSwgc3RhdGUpOworCXN0YXRlLT5hY3F1aXJlX2N0eCA9 IGN0eDsKKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBw bGFuZSk7CisJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihwbGFu ZV9zdGF0ZSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRj X2Zvcl9wbGFuZShwbGFuZV9zdGF0ZSwgY3J0Yyk7CisJaWYgKHJldCAhPSAwKQorCQlnb3RvIGZh aWw7CisKKwlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUocGxhbmVfc3RhdGUsIGZiKTsKKwlw bGFuZV9zdGF0ZS0+Y3J0Y194ID0gY3J0Y194OworCXBsYW5lX3N0YXRlLT5jcnRjX3kgPSBjcnRj X3k7CisJcGxhbmVfc3RhdGUtPmNydGNfaCA9IGNydGNfaDsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y193 ID0gY3J0Y193OworCXBsYW5lX3N0YXRlLT5zcmNfeCA9IHNyY194OworCXBsYW5lX3N0YXRlLT5z cmNfeSA9IHNyY195OworCXBsYW5lX3N0YXRlLT5zcmNfaCA9IHNyY19oOworCXBsYW5lX3N0YXRl LT5zcmNfdyA9IHNyY193OworCisJcmV0ID0gZHJtX2F0b21pY19ub25ibG9ja2luZ19jb21taXQo c3RhdGUpOworZmFpbDoKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CisJcmV0dXJuIHJl dDsKIH0KIAogc3RhdGljIHZvaWQgYXJtYWRhX292bF9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKQpAQCAtMzg4LDI1ICszMDgsNiBAQCBzdGF0aWMgdm9pZCBhcm1hZGFfb3Zs X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJa2ZyZWUoZHBsYW5lKTsK IH0KIAotc3RhdGljIGludCBhcm1hZGFfb3ZsX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKLQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwgdWludDY0X3Qg dmFsKQotewotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlOwotCWludCByZXQ7Ci0KLQlz dGF0ZSA9IHBsYW5lLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSk7Ci0JaWYg KCFzdGF0ZSkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlyZXQgPSBwbGFuZS0+ZnVuY3MtPmF0b21p Y19zZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKLQlpZiAocmV0KSB7 Ci0JCXBsYW5lLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlKTsKLQkJ cmV0dXJuIHJldDsKLQl9Ci0KLQlyZXR1cm4gYXJtYWRhX292ZXJsYXlfY29tbWl0KHBsYW5lLCBz dGF0ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGFybWFkYV9vdmVybGF5X3Jlc2V0KHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKQogewogCXN0cnVjdCBhcm1hZGFfb3ZlcmxheV9zdGF0ZSAqc3RhdGU7CkBA IC01MTAsOSArNDExLDYgQEAgc3RhdGljIGludCBhcm1hZGFfb3ZlcmxheV9zZXRfcHJvcGVydHko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCWRybV90b19vdmVybGF5X3N0YXRlKHN0YXRlKS0+ Y29udHJhc3QgPSB2YWw7CiAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwcml2LT5zYXR1cmF0aW9u X3Byb3ApIHsKIAkJZHJtX3RvX292ZXJsYXlfc3RhdGUoc3RhdGUpLT5zYXR1cmF0aW9uID0gdmFs OwotCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9yX2VuY29kaW5nX3Byb3BlcnR5 KSB7Ci0JCS8qIHRyYW5zaXRpb25hbCBvbmx5ICovCi0JCXN0YXRlLT5jb2xvcl9lbmNvZGluZyA9 IHZhbDsKIAl9IGVsc2UgewogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC01NzIsMTAgKzQ3MCw5 IEBAIHN0YXRpYyBpbnQgYXJtYWRhX292ZXJsYXlfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBhcm1h ZGFfb3ZsX3BsYW5lX2Z1bmNzID0gewotCS51cGRhdGVfcGxhbmUJPSBhcm1hZGFfb3ZsX3BsYW5l X3VwZGF0ZSwKLQkuZGlzYWJsZV9wbGFuZQk9IGRybV9wbGFuZV9oZWxwZXJfZGlzYWJsZSwKKwku dXBkYXRlX3BsYW5lCT0gYXJtYWRhX292ZXJsYXlfcGxhbmVfdXBkYXRlLAorCS5kaXNhYmxlX3Bs YW5lCT0gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZSwKIAkuZGVzdHJveQk9IGFybWFk YV9vdmxfcGxhbmVfZGVzdHJveSwKLQkuc2V0X3Byb3BlcnR5CT0gYXJtYWRhX292bF9wbGFuZV9z ZXRfcHJvcGVydHksCiAJLnJlc2V0CQk9IGFybWFkYV9vdmVybGF5X3Jlc2V0LAogCS5hdG9taWNf ZHVwbGljYXRlX3N0YXRlID0gYXJtYWRhX292ZXJsYXlfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUs CkBAIC02NzAsMTEgKzU2Nyw2IEBAIGludCBhcm1hZGFfb3ZlcmxheV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBjcnRjcykKIAkJcmV0dXJuIHJldDsK IAl9CiAKLQlkcGxhbmUtPndvcmtzWzBdLnBsYW5lID0gJmRwbGFuZS0+YmFzZS5iYXNlOwotCWRw bGFuZS0+d29ya3NbMF0uZm4gPSBhcm1hZGFfb3ZsX3BsYW5lX3dvcms7Ci0JZHBsYW5lLT53b3Jr c1sxXS5wbGFuZSA9ICZkcGxhbmUtPmJhc2UuYmFzZTsKLQlkcGxhbmUtPndvcmtzWzFdLmZuID0g YXJtYWRhX292bF9wbGFuZV93b3JrOwotCiAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmRwbGFuZS0+ YmFzZS5iYXNlLAogCQkJICAgICAmYXJtYWRhX292ZXJsYXlfcGxhbmVfaGVscGVyX2Z1bmNzKTsK IAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=