From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 4/9] drm/i915: Rework intel_crtc_page_flip to be almost atomic, v4. Date: Thu, 26 May 2016 12:38:00 +0200 Message-ID: <1464259085-13604-5-git-send-email-maarten.lankhorst@linux.intel.com> References: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7AA216EA8E for ; Thu, 26 May 2016 10:38:10 +0000 (UTC) In-Reply-To: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q3JlYXRlIGEgd29yayBzdHJ1Y3R1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBjaGFuZ2Vz LiBUaGlzIHdpbGwKYmUgdXNlZCBsYXRlciBvbiBpbiB0aGUgYXRvbWljIGNvbW1pdCBmdW5jdGlv bi4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gRnJlZSBvbGRfY3J0Y19zdGF0ZSBmcm9tIHVucGluX3dv cmtfZm4gcHJvcGVybHkuCkNoYW5nZXMgc2luY2UgdjI6Ci0gQWRkIGh1bmsgZm9yIGNhbGxpbmcg aHcgc3RhdGUgdmVyaWZpZXIuCi0gQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgY29sb3Igc3BhY2Vz LgpDaGFuZ2VzIHNpbmNlIHYzOgotIFVwZGF0ZSBmb3IgbGVnYWN5IGN1cnNvciB3b3JrLgotIG51 bGwgcG9pbnRlciB0byByZXF1ZXN0X3VucmVmZXJlbmNlIGlzIG5vIGxvbmdlciBhbGxvd2VkLgoK U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAg MzYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDY3NiArKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgIDE3ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRpb25zKCspLCAy ODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBjY2Vk NTI3YWYxMDkuLmI1MmMxYTVmMzQ1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK QEAgLTYyNywyOSArNjI3LDQzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZHVtcF9wYWdlZmxpcChzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgICAgICAgc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykK IHsKIAljb25zdCBjaGFyIHBpcGUgPSBwaXBlX25hbWUoY3J0Yy0+cGlwZSk7Ci0JY29uc3QgY2hh ciBwbGFuZSA9IHBsYW5lX25hbWUoY3J0Yy0+cGxhbmUpOwogCXUzMiBwZW5kaW5nOwogCXUzMiBh ZGRyOworCWludCBpOwogCiAJcGVuZGluZyA9IGF0b21pY19yZWFkKCZ3b3JrLT5wZW5kaW5nKTsK IAlpZiAocGVuZGluZykgewogCQlzZXFfcHJpbnRmKG0sICJGbGlwIGlvY3RsIHByZXBhcmluZyBv biBwaXBlICVjIChwbGFuZSAlYylcbiIsCi0JCQkgICBwaXBlLCBwbGFuZSk7CisJCQkgICBwaXBl LCBwbGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7CiAJfSBlbHNlIHsKIAkJc2VxX3ByaW50ZihtLCAi RmxpcCBwZW5kaW5nICh3YWl0aW5nIGZvciB2c3luYykgb24gcGlwZSAlYyAocGxhbmUgJWMpXG4i LAotCQkJICAgcGlwZSwgcGxhbmUpOworCQkJICAgcGlwZSwgcGxhbmVfbmFtZShjcnRjLT5wbGFu ZSkpOwogCX0KLQlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxKSB7Ci0JCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZSh3b3JrLT5mbGlw X3F1ZXVlZF9yZXEpOwogCi0JCXNlcV9wcmludGYobSwgIkZsaXAgcXVldWVkIG9uICVzIGF0IHNl cW5vICV4LCBuZXh0IHNlcW5vICV4IFtjdXJyZW50IGJyZWFkY3J1bWIgJXhdLCBjb21wbGV0ZWQ/ ICVkXG4iLAorCisJZm9yIChpID0gMDsgaSA8IHdvcmstPm51bV9wbGFuZXM7IGkrKykgeworCQlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9IHdvcmstPm9sZF9wbGFu ZV9zdGF0ZVtpXTsKKwkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBvbGRfcGxhbmVfc3RhdGUt PmJhc2UucGxhbmU7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gb2xkX3Bs YW5lX3N0YXRlLT53YWl0X3JlcTsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwor CisJCXNlcV9wcmludGYobSwgIltQTEFORTolaV0gcGFydCBvZiBmbGlwLlxuIiwgcGxhbmUtPmJh c2UuaWQpOworCisJCWlmICghcmVxKSB7CisJCQlzZXFfcHJpbnRmKG0sICJQbGFuZSBub3QgYXNz b2NpYXRlZCB3aXRoIGFueSBlbmdpbmVcbiIpOworCQkJY29udGludWU7CisJCX0KKworCQllbmdp bmUgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUocmVxKTsKKworCQlzZXFfcHJpbnRmKG0s ICJQbGFuZSBibG9ja2VkIG9uICVzIGF0IHNlcW5vICV4LCBuZXh0IHNlcW5vICV4IFtjdXJyZW50 IGJyZWFkY3J1bWIgJXhdLCBjb21wbGV0ZWQ/ICVkXG4iLAogCQkJICAgZW5naW5lLT5uYW1lLAot CQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8od29yay0+ZmxpcF9xdWV1ZWRfcmVxKSwK KwkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSksCiAJCQkgICBkZXZfcHJpdi0+ bmV4dF9zZXFubywKIAkJCSAgIGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSksCi0JCQkgICBpOTE1 X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHRydWUpKTsKLQl9 IGVsc2UKLQkJc2VxX3ByaW50ZihtLCAiRmxpcCBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSByaW5n XG4iKTsKKwkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpOworCX0K KwogCXNlcV9wcmludGYobSwgIkZsaXAgcXVldWVkIG9uIGZyYW1lICVkLCAod2FzIHJlYWR5IG9u IGZyYW1lICVkKSwgbm93ICVkXG4iLAogCQkgICB3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmssCiAJ CSAgIHdvcmstPmZsaXBfcmVhZHlfdmJsYW5rLApAQCAtNjYyLDcgKzY3Niw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZHVtcF9wYWdlZmxpcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCWFkZHIgPSBJOTE1 X1JFQUQoRFNQQUREUihjcnRjLT5wbGFuZSkpOwogCXNlcV9wcmludGYobSwgIkN1cnJlbnQgc2Nh bm91dCBhZGRyZXNzIDB4JTA4eFxuIiwgYWRkcik7CiAKLQlpZiAod29yay0+cGVuZGluZ19mbGlw X29iaikgeworCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpIHsKIAkJc2VxX3ByaW50ZihtLCAi TmV3IGZyYW1lYnVmZmVyIGFkZHJlc3MgMHglMDhseFxuIiwgKGxvbmcpd29yay0+Z3R0X29mZnNl dCk7CiAJCXNlcV9wcmludGYobSwgIk1NSU8gdXBkYXRlIGNvbXBsZXRlZD8gJWRcbiIsICBhZGRy ID09IHdvcmstPmd0dF9vZmZzZXQpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwppbmRleCAwZGUyMzI0MDFmMWQuLjA1MzFjZGIxY2ZhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwpAQCAtNTAsNyArNTAsNyBAQAogCiBzdGF0aWMgYm9vbCBpc19tbWlvX3dv cmsoc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykKIHsKLQlyZXR1cm4gd29yay0+bW1pb193 b3JrLmZ1bmM7CisJcmV0dXJuICF3b3JrLT5mbGlwX3F1ZXVlZF9yZXE7CiB9CiAKIC8qIFByaW1h cnkgcGxhbmUgZm9ybWF0cyBmb3IgZ2VuIDw9IDMgKi8KQEAgLTEyNCw2ICsxMjQsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogc3RhdGljIHZvaWQgaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeV9ub2F0b21pYyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwogc3RhdGljIGludCBpbGtfbWF4X3BpeGVsX3JhdGUoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBpbnQgYnJveHRvbl9jYWxjX2NkY2xr KGludCBtYXhfcGl4Y2xrKTsKK3N0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMo c3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX3N0YXRlLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKTsK IAogc3RydWN0IGludGVsX2xpbWl0IHsKIAlzdHJ1Y3QgewpAQCAtMjUyOCwyMCArMjUzMSw2IEBA IG91dF91bnJlZl9vYmo6CiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKiBVcGRhdGUgcGxhbmUtPnN0 YXRlLT5mYiB0byBtYXRjaCBwbGFuZS0+ZmIgYWZ0ZXIgZHJpdmVyLWludGVybmFsIHVwZGF0ZXMg Ki8KLXN0YXRpYyB2b2lkCi11cGRhdGVfc3RhdGVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Ci17Ci0JaWYgKHBsYW5lLT5mYiA9PSBwbGFuZS0+c3RhdGUtPmZiKQotCQlyZXR1cm47Ci0KLQlp ZiAocGxhbmUtPnN0YXRlLT5mYikKLQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKHBsYW5l LT5zdGF0ZS0+ZmIpOwotCXBsYW5lLT5zdGF0ZS0+ZmIgPSBwbGFuZS0+ZmI7Ci0JaWYgKHBsYW5l LT5zdGF0ZS0+ZmIpCi0JCWRybV9mcmFtZWJ1ZmZlcl9yZWZlcmVuY2UocGxhbmUtPnN0YXRlLT5m Yik7Ci19Ci0KIHN0YXRpYyB2b2lkCiBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJICAgICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9w bGFuZV9jb25maWcgKnBsYW5lX2NvbmZpZykKQEAgLTM4MDcsMTkgKzM3OTYsMjcgQEAgYm9vbCBp bnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogc3RhdGlj IHZvaWQgcGFnZV9mbGlwX2NvbXBsZXRlZChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yywg c3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKLQotCWxpc3RfZGVs X2luaXQoJndvcmstPmhlYWQpOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9z dGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gaW50ZWxfY3J0Yy0+YmFzZS5wcmlt YXJ5OwogCiAJaWYgKHdvcmstPmV2ZW50KQogCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgm aW50ZWxfY3J0Yy0+YmFzZSwgd29yay0+ZXZlbnQpOwogCiAJZHJtX2NydGNfdmJsYW5rX3B1dCgm aW50ZWxfY3J0Yy0+YmFzZSk7CiAKLQl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPnBlbmRpbmdfZmxp cF9xdWV1ZSk7Ci0JcXVldWVfd29yayhkZXZfcHJpdi0+d3EsICZ3b3JrLT51bnBpbl93b3JrKTsK KwluZXdfcGxhbmVfc3RhdGUgPSAmd29yay0+b2xkX3BsYW5lX3N0YXRlWzBdLT5iYXNlOworCWlm ICh3b3JrLT5udW1fcGxhbmVzID49IDEgJiYKKwkgICAgbmV3X3BsYW5lX3N0YXRlLT5wbGFuZSA9 PSBwcmltYXJ5ICYmCisJICAgIG5ld19wbGFuZV9zdGF0ZS0+ZmIpCisJCXRyYWNlX2k5MTVfZmxp cF9jb21wbGV0ZShpbnRlbF9jcnRjLT5wbGFuZSwKKwkJCQkJIGludGVsX2ZiX29iaihuZXdfcGxh bmVfc3RhdGUtPmZiKSk7CiAKLQl0cmFjZV9pOTE1X2ZsaXBfY29tcGxldGUoaW50ZWxfY3J0Yy0+ cGxhbmUsCi0JCQkJIHdvcmstPnBlbmRpbmdfZmxpcF9vYmopOworCWlmICh3b3JrLT5jYW5fYXN5 bmNfdW5waW4pIHsKKwkJbGlzdF9kZWxfaW5pdCgmd29yay0+aGVhZCk7CisJCXdha2VfdXBfYWxs KCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlKTsKKwl9CisKKwlxdWV1ZV93b3JrKGRldl9w cml2LT53cSwgJndvcmstPnVucGluX3dvcmspOwogfQogCiBzdGF0aWMgaW50IGludGVsX2NydGNf d2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCkBAIC0zODUwLDcg KzM4NDcsOSBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCSAqLwogCQl3b3JrID0gbGlzdF9maXJzdF9lbnRyeV9v cl9udWxsKCZpbnRlbF9jcnRjLT5mbGlwX3dvcmssCiAJCQkJCQlzdHJ1Y3QgaW50ZWxfZmxpcF93 b3JrLCBoZWFkKTsKLQkJaWYgKHdvcmsgJiYgIWlzX21taW9fd29yayh3b3JrKSkgeworCisJCWlm ICh3b3JrICYmICFpc19tbWlvX3dvcmsod29yaykgJiYKKwkJICAgICF3b3JrX2J1c3koJndvcmst PnVucGluX3dvcmspKSB7CiAJCQlXQVJOX09OQ0UoMSwgIlJlbW92aW5nIHN0dWNrIHBhZ2UgZmxp cFxuIik7CiAJCQlwYWdlX2ZsaXBfY29tcGxldGVkKGludGVsX2NydGMsIHdvcmspOwogCQl9CkBA IC0xMDk1NCwzNCArMTA5NTMsMTE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGVzdHJveShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJa2ZyZWUoaW50ZWxfY3J0Yyk7CiB9CiAKK3N0YXRpYyB2 b2lkIGludGVsX2NydGNfcG9zdF9mbGlwX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3 b3JrLAorCQkJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUgPSB3b3JrLT5uZXdfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisKKwlpZiAoY3J0Y19zdGF0 ZS0+ZGlzYWJsZV9jeHNyKQorCQlpbnRlbF9jcnRjLT53bS5jeHNyX2FsbG93ZWQgPSB0cnVlOwor CisJaWYgKGNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ICYmIGNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQorCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKKworCWlmICh3b3JrLT5udW1f cGxhbmVzID4gMCAmJgorCSAgICB3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF0tPmJhc2UucGxhbmUg PT0gY3J0Yy0+cHJpbWFyeSkgeworCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlID0KKwkJCXdvcmstPm5ld19wbGFuZV9zdGF0ZVswXTsKKworCQlpZiAocGxhbmVfc3RhdGUt PnZpc2libGUgJiYKKwkJICAgIChuZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5iYXNlKSB8fAor CQkgICAgICF3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF0tPnZpc2libGUpKQorCQkJaW50ZWxfcG9z dF9lbmFibGVfcHJpbWFyeShjcnRjKTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX3VucGlu X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiB7CiAJc3RydWN0IGludGVsX2Zs aXBfd29yayAqd29yayA9CiAJCWNvbnRhaW5lcl9vZihfX3dvcmssIHN0cnVjdCBpbnRlbF9mbGlw X3dvcmssIHVucGluX3dvcmspOwotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0Yyh3b3JrLT5jcnRjKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGNydGMtPmJhc2UucHJpbWFyeTsKKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSB3b3JrLT5vbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjOwor CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IGk7CiAKLQlpZiAoaXNfbW1p b193b3JrKHdvcmspKQotCQlmbHVzaF93b3JrKCZ3b3JrLT5tbWlvX3dvcmspOworCWlmICh3b3Jr LT5mYl9iaXRzKQorCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwX2NvbXBsZXRlKGRldiwgd29yay0+ ZmJfYml0cyk7CiAKLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaW50ZWxfdW5w aW5fZmJfb2JqKHdvcmstPm9sZF9mYiwgcHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uKTsKLQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmd29yay0+cGVuZGluZ19mbGlwX29iai0+YmFzZSk7CisJ LyoKKwkgKiBVbmxlc3Mgd29yay0+Y2FuX2FzeW5jX3VucGluIGlzIGZhbHNlLCB0aGVyZSdzIG5v IHdheSB0byBlbnN1cmUKKwkgKiB0aGF0IHdvcmstPm5ld19jcnRjX3N0YXRlIGNvbnRhaW5zIHZh bGlkIG1lbW9yeSBkdXJpbmcgdW5waW4KKwkgKiBiZWNhdXNlIGludGVsX2F0b21pY19jb21taXQg bWF5IGZyZWUgaXQgYmVmb3JlIHRoaXMgcnVucy4KKwkgKi8KKwlpZiAoIXdvcmstPmNhbl9hc3lu Y191bnBpbikKKwkJaW50ZWxfY3J0Y19wb3N0X2ZsaXBfdXBkYXRlKHdvcmssIGNydGMpOwogCi0J aWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJndv cmstPmZsaXBfcXVldWVkX3JlcSwgTlVMTCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CisJaWYgKHdvcmstPmZiX2JpdHMgJiB0b19pbnRlbF9wbGFuZShjcnRjLT5wcmltYXJ5 KS0+ZnJvbnRidWZmZXJfYml0KQorCQlpbnRlbF9mYmNfcG9zdF91cGRhdGUoaW50ZWxfY3J0Yyk7 CisKKwlpZiAod29yay0+cHV0X3Bvd2VyX2RvbWFpbnMpCisJCW1vZGVzZXRfcHV0X3Bvd2VyX2Rv bWFpbnMoZGV2X3ByaXYsIHdvcmstPnB1dF9wb3dlcl9kb21haW5zKTsKIAotCWludGVsX2Zyb250 YnVmZmVyX2ZsaXBfY29tcGxldGUoZGV2LCB0b19pbnRlbF9wbGFuZShwcmltYXJ5KS0+ZnJvbnRi dWZmZXJfYml0KTsKLQlpbnRlbF9mYmNfcG9zdF91cGRhdGUoY3J0Yyk7Ci0JZHJtX2ZyYW1lYnVm ZmVyX3VucmVmZXJlbmNlKHdvcmstPm9sZF9mYik7CisJLyogTWFrZSBzdXJlIG1taW8gd29yayBp cyBjb21wbGV0ZWx5IGZpbmlzaGVkIGJlZm9yZSBmcmVlaW5nIGFsbCBzdGF0ZSBoZXJlLiAqLwor CWZsdXNoX3dvcmsoJndvcmstPm1taW9fd29yayk7CiAKLQlCVUdfT04oYXRvbWljX3JlYWQoJmNy dGMtPnVucGluX3dvcmtfY291bnQpID09IDApOwotCWF0b21pY19kZWMoJmNydGMtPnVucGluX3dv cmtfY291bnQpOworCWlmICghd29yay0+Y2FuX2FzeW5jX3VucGluKQorCQkvKiBUaGlzIG11c3Qg YmUgY2FsbGVkIGJlZm9yZSB3b3JrIGlzIHVucGlubmVkIGZvciBzZXJpYWxpemF0aW9uLiAqLwor CQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMsICZ3b3JrLT5vbGRfY3J0Y19zdGF0ZS0+ YmFzZSwKKwkJCQkJICAmd29yay0+bmV3X2NydGNfc3RhdGUtPmJhc2UpOworCisJaWYgKCF3b3Jr LT5jYW5fYXN5bmNfdW5waW4gfHwgIWxpc3RfZW1wdHkoJndvcmstPmhlYWQpKSB7CisJCXNwaW5f bG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CisJCVdBUk4obGlzdF9lbXB0eSgmd29yay0+aGVh ZCkgIT0gd29yay0+Y2FuX2FzeW5jX3VucGluLAorCQkgICAgICJbQ1JUQzolaV0gUGluIHdvcmsg JXAgYXN5bmMgJWkgd2l0aCAlaSBwbGFuZXMsIGFjdGl2ZSAlaSAtPiAlaSBtcyAlaVxuIiwKKwkJ ICAgICBjcnRjLT5iYXNlLmlkLCB3b3JrLCB3b3JrLT5jYW5fYXN5bmNfdW5waW4sIHdvcmstPm51 bV9wbGFuZXMsCisJCSAgICAgd29yay0+b2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlLCB3b3Jr LT5uZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUsCisJCSAgICAgbmVlZHNfbW9kZXNldCgmd29y ay0+bmV3X2NydGNfc3RhdGUtPmJhc2UpKTsKKworCQlpZiAoIWxpc3RfZW1wdHkoJndvcmstPmhl YWQpKQorCQkJbGlzdF9kZWwoJndvcmstPmhlYWQpOworCisJCXdha2VfdXBfYWxsKCZkZXZfcHJp di0+cGVuZGluZ19mbGlwX3F1ZXVlKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xv Y2spOworCX0KIAorCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRjLCAmd29yay0+b2xkX2Ny dGNfc3RhdGUtPmJhc2UpOwogCWlmICh3b3JrLT5mcmVlX25ld19jcnRjX3N0YXRlKQotCQlpbnRl bF9jcnRjX2Rlc3Ryb3lfc3RhdGUoJmNydGMtPmJhc2UsICZ3b3JrLT5uZXdfY3J0Y19zdGF0ZS0+ YmFzZSk7CisJCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRjLCAmd29yay0+bmV3X2NydGNf c3RhdGUtPmJhc2UpOworCisJaWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKKwkJaTkxNV9nZW1f cmVxdWVzdF91bnJlZmVyZW5jZSh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpOworCisJZm9yIChpID0g MDsgaSA8IHdvcmstPm51bV9wbGFuZXM7IGkrKykgeworCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKm9sZF9wbGFuZV9zdGF0ZSA9CisJCQl3b3JrLT5vbGRfcGxhbmVfc3RhdGVbaV07CisJCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5mYjsK KwkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBvbGRfcGxhbmVfc3RhdGUtPmJhc2UucGxhbmU7 CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOworCisJCXJlcSA9IG9sZF9wbGFu ZV9zdGF0ZS0+d2FpdF9yZXE7CisJCW9sZF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEgPSBOVUxMOwor CQlpZiAocmVxKQorCQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOworCisJCWZl bmNlX3B1dChvbGRfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpOworCQlvbGRfcGxhbmVfc3RhdGUt PmJhc2UuZmVuY2UgPSBOVUxMOworCisJCWlmIChvbGRfZmIgJiYKKwkJICAgIChwbGFuZS0+dHlw ZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgfHwKKwkJICAgICAhSU5URUxfSU5GTyhkZXZfcHJp diktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkpIHsKKwkJCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKKwkJCWludGVsX3VucGluX2ZiX29iaihvbGRfZmIsIG9sZF9wbGFuZV9zdGF0ZS0+ YmFzZS5yb3RhdGlvbik7CisJCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJ fQorCisJCWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUocGxhbmUsICZvbGRfcGxhbmVfc3RhdGUt PmJhc2UpOworCX0KKworCWlmICghV0FSTl9PTihhdG9taWNfcmVhZCgmaW50ZWxfY3J0Yy0+dW5w aW5fd29ya19jb3VudCkgPT0gMCkpCisJCWF0b21pY19kZWMoJmludGVsX2NydGMtPnVucGluX3dv cmtfY291bnQpOwogCiAJa2ZyZWUod29yayk7CiB9CkBAIC0xMTA5NSw3ICsxMTE3NSw4IEBAIHZv aWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9jcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGludCBwaXBlKQogCQlpZiAoaXNfbW1pb193b3JrKHdvcmspKQogCQkJYnJlYWs7CiAK LQkJaWYgKCFwYWdlZmxpcF9maW5pc2hlZChpbnRlbF9jcnRjLCB3b3JrKSkKKwkJaWYgKCFwYWdl ZmxpcF9maW5pc2hlZChpbnRlbF9jcnRjLCB3b3JrKSB8fAorCQkgICAgd29ya19idXN5KCZ3b3Jr LT51bnBpbl93b3JrKSkKIAkJCWJyZWFrOwogCiAJCXBhZ2VfZmxpcF9jb21wbGV0ZWQoaW50ZWxf Y3J0Yywgd29yayk7CkBAIC0xMTEyOCw3ICsxMTIwOSw4IEBAIHZvaWQgaW50ZWxfZmluaXNoX3Bh Z2VfZmxpcF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBpcGUp CiAJCWlmICghaXNfbW1pb193b3JrKHdvcmspKQogCQkJYnJlYWs7CiAKLQkJaWYgKCFwYWdlZmxp cF9maW5pc2hlZChpbnRlbF9jcnRjLCB3b3JrKSkKKwkJaWYgKCFwYWdlZmxpcF9maW5pc2hlZChp bnRlbF9jcnRjLCB3b3JrKSB8fAorCQkgICAgd29ya19idXN5KCZ3b3JrLT51bnBpbl93b3JrKSkK IAkJCWJyZWFrOwogCiAJCXBhZ2VfZmxpcF9jb21wbGV0ZWQoaW50ZWxfY3J0Yywgd29yayk7CkBA IC0xMTM3Nyw3MCArMTE0NTksMjA0IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHVz ZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KgoraW50ZWxfZ2V0X2ZsaXBfZW5naW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCSAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQkvKgotCSAqIFRoaXMgaXMgbm90IGJlaW5nIHVzZWQg Zm9yIG9sZGVyIHBsYXRmb3JtcywgYmVjYXVzZQotCSAqIG5vbi1hdmFpbGFiaWxpdHkgb2YgZmxp cCBkb25lIGludGVycnVwdCBmb3JjZXMgdXMgdG8gdXNlCi0JICogQ1MgZmxpcHMuIE9sZGVyIHBs YXRmb3JtcyBkZXJpdmUgZmxpcCBkb25lIHVzaW5nIHNvbWUgY2xldmVyCi0JICogdHJpY2tzIGlu dm9sdmluZyB0aGUgZmxpcF9wZW5kaW5nIHN0YXR1cyBiaXRzIGFuZCB2YmxhbmsgaXJxcy4KLQkg KiBTbyB1c2luZyBNTUlPIGZsaXBzIHRoZXJlIHdvdWxkIGRpc3J1cHQgdGhpcyBtZWNoYW5pc20u Ci0JICovCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19JVllCUklER0UoZGV2KSB8fCBJ U19IQVNXRUxMKGRldikpCisJCXJldHVybiAmZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwogCi0JaWYg KGVuZ2luZSA9PSBOVUxMKQotCQlyZXR1cm4gdHJ1ZTsKKwlpZiAoZGV2X3ByaXYtPmluZm8uZ2Vu ID49IDcpIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJCWVuZ2luZSA9 IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxhc3Rfd3JpdGVfcmVxKTsKKwkJaWYg KGVuZ2luZSAmJiBlbmdpbmUtPmlkID09IFJDUykKKwkJCXJldHVybiBlbmdpbmU7CiAKLQlpZiAo aTkxNS51c2VfbW1pb19mbGlwIDwgMCkKKwkJcmV0dXJuICZkZXZfcHJpdi0+ZW5naW5lW0JDU107 CisJfSBlbHNlCisJCXJldHVybiAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOworfQorCitzdGF0aWMg Ym9vbAorZmxpcF9mYl9jb21wYXRpYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCSAgIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpv bGRfZmIpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29i aihmYik7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9v Ymoob2xkX2ZiKTsKKworCWlmIChvbGRfZmItPnBpeGVsX2Zvcm1hdCAhPSBmYi0+cGl4ZWxfZm9y bWF0KQogCQlyZXR1cm4gZmFsc2U7Ci0JZWxzZSBpZiAoaTkxNS51c2VfbW1pb19mbGlwID4gMCkK LQkJcmV0dXJuIHRydWU7Ci0JZWxzZSBpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQotCQlyZXR1 cm4gdHJ1ZTsKLQllbHNlIGlmIChvYmotPmJhc2UuZG1hX2J1ZiAmJgotCQkgIXJlc2VydmF0aW9u X29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShvYmotPmJhc2UuZG1hX2J1Zi0+cmVzdiwKLQkJCQkJ CSAgICAgICBmYWxzZSkpCi0JCXJldHVybiB0cnVlOwotCWVsc2UKLQkJcmV0dXJuIGVuZ2luZSAh PSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSk7CisKKwlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiAzICYmCisJICAgIChmYi0+b2Zmc2V0c1swXSAhPSBv bGRfZmItPm9mZnNldHNbMF0gfHwKKwkgICAgIGZiLT5waXRjaGVzWzBdICE9IG9sZF9mYi0+cGl0 Y2hlc1swXSkpCisJCXJldHVybiBmYWxzZTsKKworCQkJLyogdmx2OiBESVNQTEFZX0ZMSVAgZmFp bHMgdG8gY2hhbmdlIHRpbGluZyAqLworCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgb2JqLT50 aWxpbmdfbW9kZSAhPSBvbGRfb2JqLT50aWxpbmdfbW9kZSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitpbnRlbF9kaXNwbGF5X2ZsaXBfcHJlcGFy ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICBz dHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJaWYgKHdvcmstPmZsaXBfcHJlcGFyZWQp CisJCXJldHVybjsKKworCXdvcmstPmZsaXBfcHJlcGFyZWQgPSB0cnVlOworCisJaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCisJCXdvcmstPmZsaXBfY291bnQg PSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKGludGVsX2NydGMtPnBpcGUpKSArIDE7CisJ d29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOwor CisJaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwgd29yay0+bmV3X2NydGNfc3Rh dGUtPmZiX2JpdHMpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9mbGlwX3NjaGVkdWxlX3JlcXVl c3Qoc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaywgc3RydWN0IGRybV9jcnRjICpjcnRjKQor eworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKm5ld19zdGF0ZSA9IHdvcmstPm5ld19wbGFuZV9zdGF0ZVswXTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9IHdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXTsK KwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgKm9sZF9mYjsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBmZW5jZSAq ZmVuY2U7CisJaW50IHJldDsKKworCXRvX2ludGVsX2NydGMoY3J0YyktPnJlc2V0X2NvdW50ZXIg PSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3IpOworCWlmIChfX2k5MTVf cmVzZXRfaW5fcHJvZ3Jlc3Nfb3Jfd2VkZ2VkKHRvX2ludGVsX2NydGMoY3J0YyktPnJlc2V0X2Nv dW50ZXIpKQorCQlnb3RvIG1taW87CisKKwlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmZGV2 X3ByaXYtPmdwdV9lcnJvcikgfHwKKwkgICAgaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmZGV2X3By aXYtPmdwdV9lcnJvcikgfHwKKwkgICAgaTkxNS5lbmFibGVfZXhlY2xpc3RzIHx8IGk5MTUudXNl X21taW9fZmxpcCA+IDAgfHwKKwkgICAgIWRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXApCisJ CWdvdG8gbW1pbzsKKworCS8qIE5vdCByaWdodCBhZnRlciBtb2Rlc2V0dGluZywgc3VyZmFjZSBw YXJhbWV0ZXJzIG5lZWQgdG8gYmUgdXBkYXRlZCAqLworCWlmIChuZWVkc19tb2Rlc2V0KGNydGMt PnN0YXRlKSB8fAorCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+dXBkYXRl X3BpcGUpCisJCWdvdG8gbW1pbzsKKworCS8qIE9ubHkgYWxsb3cgYSBtbWlvIGZsaXAgZm9yIGEg cHJpbWFyeSBwbGFuZSB3aXRob3V0IGEgZG1hLWJ1ZiBmZW5jZSAqLworCWlmICh3b3JrLT5udW1f cGxhbmVzICE9IDEgfHwKKwkgICAgbmV3X3N0YXRlLT5iYXNlLnBsYW5lICE9IGNydGMtPnByaW1h cnkgfHwKKwkgICAgbmV3X3N0YXRlLT5iYXNlLmZlbmNlKQorCQlnb3RvIG1taW87CisKKwlmZW5j ZSA9IHdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXS0+YmFzZS5mZW5jZTsKKwlpZiAoZmVuY2UgJiYg IWZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKKwkJZ290byBtbWlvOworCisJb2xkX2ZiID0gb2xk X3N0YXRlLT5iYXNlLmZiOworCWZiID0gbmV3X3N0YXRlLT5iYXNlLmZiOworCW9iaiA9IGludGVs X2ZiX29iaihmYik7CisKKwl0cmFjZV9pOTE1X2ZsaXBfcmVxdWVzdCh0b19pbnRlbF9jcnRjKGNy dGMpLT5wbGFuZSwgb2JqKTsKKworCS8qIE9ubHkgd2hlbiB1cGRhdGluZyBhIGFscmVhZHkgdmlz aWJsZSBmYi4gKi8KKwlpZiAoIW5ld19zdGF0ZS0+dmlzaWJsZSB8fCAhb2xkX3N0YXRlLT52aXNp YmxlKQorCQlnb3RvIG1taW87CisKKwlpZiAoIWZsaXBfZmJfY29tcGF0aWJsZShkZXYsIGZiLCBv bGRfZmIpKQorCQlnb3RvIG1taW87CisKKwllbmdpbmUgPSBpbnRlbF9nZXRfZmxpcF9lbmdpbmUo ZGV2LCBkZXZfcHJpdiwgb2JqKTsKKwlpZiAoaTkxNS51c2VfbW1pb19mbGlwID09IDAgJiYgb2Jq LT5sYXN0X3dyaXRlX3JlcSAmJgorCSAgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUob2Jq LT5sYXN0X3dyaXRlX3JlcSkgIT0gZW5naW5lKQorCQlnb3RvIG1taW87CisKKwl3b3JrLT5ndHRf b2Zmc2V0ID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFuZShjcnRjLT5wcmlt YXJ5KSwgb2JqLCAwKTsKKwl3b3JrLT5ndHRfb2Zmc2V0ICs9IHRvX2ludGVsX2NydGMoY3J0Yykt PmRzcGFkZHJfb2Zmc2V0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCBlbmdp bmUsICZyZXF1ZXN0KTsKKwlpZiAoIXJldCAmJiAhcmVxdWVzdCkgeworCQlyZXF1ZXN0ID0gaTkx NV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5VTEwpOworCQlyZXQgPSBQVFJfRVJSX09SX1pF Uk8ocmVxdWVzdCk7CisKKwkJaWYgKHJldCkKKwkJCXJlcXVlc3QgPSBOVUxMOworCX0KKworCWlu dGVsX2Rpc3BsYXlfZmxpcF9wcmVwYXJlKGRldiwgY3J0Yywgd29yayk7CisKKwlpZiAoIXJldCkK KwkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZiLCBvYmos IHJlcXVlc3QsIDApOworCisJaWYgKCFyZXQpIHsKKwkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24o JndvcmstPmZsaXBfcXVldWVkX3JlcSwgcmVxdWVzdCk7CisJCWludGVsX21hcmtfcGFnZV9mbGlw X2FjdGl2ZSh0b19pbnRlbF9jcnRjKGNydGMpLCB3b3JrKTsKKwkJaTkxNV9hZGRfcmVxdWVzdF9u b19mbHVzaChyZXF1ZXN0KTsKKwkJcmV0dXJuOworCX0KKwlpZiAocmVxdWVzdCkKKwkJaTkxNV9h ZGRfcmVxdWVzdF9ub19mbHVzaChyZXF1ZXN0KTsKKworbW1pbzoKKwlzY2hlZHVsZV93b3JrKCZ3 b3JrLT5tbWlvX3dvcmspOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19m dW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKIHsKIAlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3 b3JrID0KIAkJY29udGFpbmVyX29mKHcsIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmssIG1taW9fd29y ayk7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHdvcmstPmNydGMp OwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSB3b3JrLT5vbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjOworCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHdvcmstPm5ld19jcnRjX3N0YXRlOworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnByaW1h cnkgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwotCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoocHJpbWFyeS0+YmFzZS5zdGF0ZS0+ZmIp OworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOworCWludCBpOwogCi0JaWYgKHdv cmstPmZsaXBfcXVldWVkX3JlcSkKLQkJV0FSTl9PTihfX2k5MTVfd2FpdF9yZXF1ZXN0KHdvcmst PmZsaXBfcXVldWVkX3JlcSwKLQkJCQkJICAgIGZhbHNlLCBOVUxMLAorCWZvciAoaSA9IDA7IGkg PCB3b3JrLT5udW1fcGxhbmVzOyBpKyspIHsKKwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpv bGRfcGxhbmVfc3RhdGUgPSB3b3JrLT5vbGRfcGxhbmVfc3RhdGVbaV07CisKKwkJLyogRm9yIGZy YW1lYnVmZmVyIGJhY2tlZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCisJCWlmIChvbGRf cGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpCisJCQlXQVJOX09OKGZlbmNlX3dhaXQob2xkX3BsYW5l X3N0YXRlLT5iYXNlLmZlbmNlLCBmYWxzZSkgPCAwKTsKKworCQlyZXEgPSBvbGRfcGxhbmVfc3Rh dGUtPndhaXRfcmVxOworCQlpZiAoIXJlcSkKKwkJCWNvbnRpbnVlOworCisJCVdBUk5fT04oX19p OTE1X3dhaXRfcmVxdWVzdChyZXEsIGZhbHNlLCBOVUxMLAogCQkJCQkgICAgJmRldl9wcml2LT5y cHMubW1pb2ZsaXBzKSk7CisJfQogCi0JLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tlZCBieSBkbWFi dWYsIHdhaXQgZm9yIGZlbmNlICovCi0JaWYgKG9iai0+YmFzZS5kbWFfYnVmKQotCQlXQVJOX09O KHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KG9iai0+YmFzZS5kbWFfYnVmLT5y ZXN2LAotCQkJCQkJCSAgICBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICAgIE1BWF9TQ0hFRFVMRV9U SU1FT1VUKSA8IDApOworCWludGVsX2Rpc3BsYXlfZmxpcF9wcmVwYXJlKGRldiwgY3J0Yywgd29y ayk7CiAKLQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjcnRjKTsKLQlwcmltYXJ5LT51cGRhdGVf cGxhbmUoJnByaW1hcnktPmJhc2UsCi0JCQkgICAgICB3b3JrLT5uZXdfY3J0Y19zdGF0ZSwKLQkJ CSAgICAgIHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnktPmJhc2Uuc3RhdGUpKTsKLQlpbnRl bF9waXBlX3VwZGF0ZV9lbmQoY3J0Yywgd29yayk7Ci19CisJaW50ZWxfcGlwZV91cGRhdGVfc3Rh cnQoaW50ZWxfY3J0Yyk7CisJaWYgKCFuZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5iYXNlKSkg eworCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQgfHwgY3J0Y19zdGF0 ZS0+dXBkYXRlX3BpcGUpIHsKKwkJCWludGVsX2NvbG9yX3NldF9jc2MoJmNydGNfc3RhdGUtPmJh c2UpOworCQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKCZjcnRjX3N0YXRlLT5iYXNlKTsKKwkJfQog Ci1zdGF0aWMgaW50IGludGVsX2RlZmF1bHRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkJICAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAotCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKLQkJCQkgICAgdWlu dDY0X3QgZ3R0X29mZnNldCkKLXsKLQlyZXR1cm4gLUVOT0RFVjsKKwkJaWYgKGNydGNfc3RhdGUt PnVwZGF0ZV9waXBlKQorCQkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHdv cmstPm9sZF9jcnRjX3N0YXRlKTsKKwkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSkKKwkJCXNrbF9kZXRhY2hfc2NhbGVycyhpbnRlbF9jcnRjKTsKKwl9CisKKwlmb3IgKGkgPSAw OyBpIDwgd29yay0+bnVtX3BsYW5lczsgaSsrKSB7CisJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqbmV3X3BsYW5lX3N0YXRlID0gd29yay0+bmV3X3BsYW5lX3N0YXRlW2ldOworCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKKworCQlwbGFuZS0+dXBkYXRlX3BsYW5lKCZwbGFuZS0+YmFzZSwgY3J0Y19zdGF0 ZSwgbmV3X3BsYW5lX3N0YXRlKTsKKwl9CisKKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxf Y3J0Yywgd29yayk7CiB9CiAKIHN0YXRpYyBib29sIF9fcGFnZWZsaXBfc3RhbGxfY2hlY2tfY3Mo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMTE0NDksNyArMTE2NjUsOCBA QCBzdGF0aWMgYm9vbCBfX3BhZ2VmbGlwX3N0YWxsX2NoZWNrX2NzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIHsKIAl1MzIgYWRkciwgdmJsYW5rOwogCi0JaWYgKCFhdG9taWNf cmVhZCgmd29yay0+cGVuZGluZykpCisJaWYgKCFhdG9taWNfcmVhZCgmd29yay0+cGVuZGluZykg fHwKKwkgICAgd29ya19idXN5KCZ3b3JrLT51bnBpbl93b3JrKSkKIAkJcmV0dXJuIGZhbHNlOwog CiAJc21wX3JtYigpOwpAQCAtMTE1MTYsNiArMTE3MzMsMzMgQEAgdm9pZCBpbnRlbF9jaGVja19w YWdlX2ZsaXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcGlwZSkKIAlz cGluX3VubG9jaygmZGV2LT5ldmVudF9sb2NrKTsKIH0KIAorc3RhdGljIHN0cnVjdCBmZW5jZSAq aW50ZWxfZ2V0X2V4Y2xfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sK KwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OworCisKKwlpZiAoIW9iai0+YmFzZS5k bWFfYnVmKQorCQlyZXR1cm4gTlVMTDsKKworCXJlc3YgPSBvYmotPmJhc2UuZG1hX2J1Zi0+cmVz djsKKworCS8qIEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZvciBmZW5j ZSAqLworCXdoaWxlICgxKSB7CisJCXN0cnVjdCBmZW5jZSAqZmVuY2VfZXhjbCwgKnJldCA9IE5V TEw7CisKKwkJcmN1X3JlYWRfbG9jaygpOworCisJCWZlbmNlX2V4Y2wgPSByY3VfZGVyZWZlcmVu Y2UocmVzdi0+ZmVuY2VfZXhjbCk7CisJCWlmIChmZW5jZV9leGNsKQorCQkJcmV0ID0gZmVuY2Vf Z2V0X3JjdShmZW5jZV9leGNsKTsKKworCQlyY3VfcmVhZF91bmxvY2soKTsKKworCQlpZiAocmV0 ID09IGZlbmNlX2V4Y2wpCisJCQlyZXR1cm4gcmV0OworCX0KK30KKwogc3RhdGljIGludCBpbnRl bF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCiAJCQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZl bnQsCkBAIC0xMTUyMywxNyArMTE3NjcsMjAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IGNydGMtPnByaW1h cnktPmZiOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSwgKm5ld19zdGF0ZSA9 IE5VTEw7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IE5VTEw7CisJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZi OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwog CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlz dHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7CiAJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JYm9vbCBtbWlvX2ZsaXA7Ci0Jc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVMTDsKIAlpbnQgcmV0OwogCisJb2xk X3N0YXRlID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGU7CisKKwlpZiAoIWNydGMtPnN0YXRlLT5hY3Rp dmUpCisJCXJldHVybiAtRUlOVkFMOworCiAJLyoKIAkgKiBkcm1fbW9kZV9wYWdlX2ZsaXBfaW9j dGwoKSBzaG91bGQgYWxyZWFkeSBjYXRjaCB0aGlzLCBidXQgZG91YmxlCiAJICogY2hlY2sgdG8g YmUgc2FmZS4gIEluIHRoZSBmdXR1cmUgd2UgbWF5IGVuYWJsZSBwYWdlZmxpcHBpbmcgZnJvbQpA QCAtMTE1NDMsNyArMTE3OTAsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJcmV0dXJuIC1FQlVTWTsKIAogCS8qIENhbid0IGNoYW5n ZSBwaXhlbCBmb3JtYXQgdmlhIE1JIGRpc3BsYXkgZmxpcHMuICovCi0JaWYgKGZiLT5waXhlbF9m b3JtYXQgIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPnBpeGVsX2Zvcm1hdCkKKwlpZiAoZmItPnBpeGVs X2Zvcm1hdCAhPSBvbGRfZmItPnBpeGVsX2Zvcm1hdCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAkv KgpAQCAtMTE1NTEsMjcgKzExNzk4LDQ2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2Zs aXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIE5vdGUgdGhhdCBwaXRjaCBjaGFuZ2VzIGNv dWxkIGFsc28gYWZmZWN0IHRoZXNlIHJlZ2lzdGVyLgogCSAqLwogCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+IDMgJiYKLQkgICAgKGZiLT5vZmZzZXRzWzBdICE9IGNydGMtPnByaW1hcnktPmZi LT5vZmZzZXRzWzBdIHx8Ci0JICAgICBmYi0+cGl0Y2hlc1swXSAhPSBjcnRjLT5wcmltYXJ5LT5m Yi0+cGl0Y2hlc1swXSkpCisJICAgIChmYi0+b2Zmc2V0c1swXSAhPSBvbGRfZmItPm9mZnNldHNb MF0gfHwKKwkgICAgIGZiLT5waXRjaGVzWzBdICE9IG9sZF9mYi0+cGl0Y2hlc1swXSkpCiAJCXJl dHVybiAtRUlOVkFMOwogCi0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5n cHVfZXJyb3IpKQotCQlnb3RvIG91dF9oYW5nOwotCiAJd29yayA9IGt6YWxsb2Moc2l6ZW9mKCp3 b3JrKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHdvcmsgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9NRU07 CisJbmV3X2NydGNfc3RhdGUgPSBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRjKTsKKwlu ZXdfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocHJpbWFyeSk7CisKKwlpZiAo IXdvcmsgfHwgIW5ld19jcnRjX3N0YXRlIHx8ICFuZXdfc3RhdGUpIHsKKwkJcmV0ID0gLUVOT01F TTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShu ZXdfc3RhdGUtPmZiKTsKKwlkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlKGZiKTsKKwluZXdfc3Rh dGUtPmZiID0gZmI7CiAKIAl3b3JrLT5uZXdfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOwogCiAJd29yay0+ZXZlbnQgPSBldmVudDsKLQl3b3JrLT5jcnRjID0g Y3J0YzsKLQl3b3JrLT5vbGRfZmIgPSBvbGRfZmI7CiAJSU5JVF9XT1JLKCZ3b3JrLT51bnBpbl93 b3JrLCBpbnRlbF91bnBpbl93b3JrX2ZuKTsKKwlJTklUX1dPUksoJndvcmstPm1taW9fd29yaywg aW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyk7CisKKwl3b3JrLT5uZXdfY3J0Y19zdGF0ZSA9IHRv X2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOworCXdvcmstPm9sZF9jcnRjX3N0YXRl ID0gaW50ZWxfY3J0Yy0+Y29uZmlnOwogCisJd29yay0+ZmJfYml0cyA9IHRvX2ludGVsX3BsYW5l KHByaW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQ7CisJd29yay0+bmV3X2NydGNfc3RhdGUtPmZiX2Jp dHMgPSB3b3JrLT5mYl9iaXRzOworCisJd29yay0+Y2FuX2FzeW5jX3VucGluID0gdHJ1ZTsKKwl3 b3JrLT5udW1fcGxhbmVzID0gMTsKKwl3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF0gPSB0b19pbnRl bF9wbGFuZV9zdGF0ZShvbGRfc3RhdGUpOworCXdvcmstPm5ld19wbGFuZV9zdGF0ZVswXSA9IHRv X2ludGVsX3BsYW5lX3N0YXRlKG5ld19zdGF0ZSk7CisKKwkvKiBTdGVwIDE6IHZibGFuayB3YWl0 aW5nIGFuZCB3b3JrcXVldWUgdGhyb3R0bGluZywKKwkgKiBzaW1pbGFyIHRvIGludGVsX2F0b21p Y19wcmVwYXJlX2NvbW1pdAorCSAqLwogCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7 CiAJaWYgKHJldCkKLQkJZ290byBmcmVlX3dvcms7CisJCWdvdG8gY2xlYW51cDsKIAogCS8qIFdl IGJvcnJvdyB0aGUgZXZlbnQgc3BpbiBsb2NrIGZvciBwcm90ZWN0aW5nIGZsaXBfd29yayAqLwog CXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CkBAIC0xMTU5MSw5ICsxMTg1Nyw4IEBA IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkJRFJNX0RFQlVHX0RSSVZFUigiZmxpcCBxdWV1ZTogY3J0YyBhbHJlYWR5IGJ1c3lcbiIpOwog CQkJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCi0JCQlkcm1fY3J0Y192Ymxh bmtfcHV0KGNydGMpOwotCQkJa2ZyZWUod29yayk7Ci0JCQlyZXR1cm4gLUVCVVNZOworCQkJcmV0 ID0gLUVCVVNZOworCQkJZ290byBjbGVhbnVwX3ZibGFuazsKIAkJfQogCX0KIAlsaXN0X2FkZF90 YWlsKCZ3b3JrLT5oZWFkLCAmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKTsKQEAgLTExNjAyLDE2MCAr MTE4NjcsNjIgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJaWYgKGF0b21pY19yZWFkKCZpbnRlbF9jcnRjLT51bnBpbl93b3JrX2NvdW50 KSA+PSAyKQogCQlmbHVzaF93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIAotCS8qIFJlZmVyZW5j ZSB0aGUgb2JqZWN0cyBmb3IgdGhlIHNjaGVkdWxlZCB3b3JrLiAqLwotCWRybV9mcmFtZWJ1ZmZl cl9yZWZlcmVuY2Uod29yay0+b2xkX2ZiKTsKLQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9i ai0+YmFzZSk7Ci0KLQljcnRjLT5wcmltYXJ5LT5mYiA9IGZiOwotCXVwZGF0ZV9zdGF0ZV9mYihj cnRjLT5wcmltYXJ5KTsKLQlpbnRlbF9mYmNfcHJlX3VwZGF0ZShpbnRlbF9jcnRjKTsKLQotCXdv cmstPnBlbmRpbmdfZmxpcF9vYmogPSBvYmo7Ci0KLQlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZShkZXYpOworCS8qIHN0ZXAgMiwgc2ltaWxhciB0byBpbnRlbF9wcmVwYXJlX3Bs YW5lX2ZiICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9t dXRleCk7CiAJaWYgKHJldCkKLQkJZ290byBjbGVhbnVwOwotCi0JaW50ZWxfY3J0Yy0+cmVzZXRf Y291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7Ci0JaWYg KF9faTkxNV9yZXNldF9pbl9wcm9ncmVzc19vcl93ZWRnZWQoaW50ZWxfY3J0Yy0+cmVzZXRfY291 bnRlcikpIHsKLQkJcmV0ID0gLUVJTzsKLQkJZ290byBjbGVhbnVwOwotCX0KLQotCWF0b21pY19p bmMoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwotCi0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCi0JCXdvcmstPmZsaXBfY291bnQgPSBJOTE1X1JF QUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUpKSArIDE7Ci0KLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewotCQllbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2lu ZVtCQ1NdOwotCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9vYmood29yay0+b2xk X2ZiKS0+dGlsaW5nX21vZGUpCi0JCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFu Z2UgdGlsaW5nICovCi0JCQllbmdpbmUgPSBOVUxMOwotCX0gZWxzZSBpZiAoSVNfSVZZQlJJREdF KGRldikgfHwgSVNfSEFTV0VMTChkZXYpKSB7Ci0JCWVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5l W0JDU107Ci0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Ci0JCWVuZ2lu ZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxhc3Rfd3JpdGVfcmVxKTsKLQkJ aWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0gUkNTKQotCQkJZW5naW5lID0gJmRl dl9wcml2LT5lbmdpbmVbQkNTXTsKLQl9IGVsc2UgewotCQllbmdpbmUgPSAmZGV2X3ByaXYtPmVu Z2luZVtSQ1NdOwotCX0KKwkJZ290byBjbGVhbnVwX3dvcms7CiAKLQltbWlvX2ZsaXAgPSB1c2Vf bW1pb19mbGlwKGVuZ2luZSwgb2JqKTsKLQotCS8qIFdoZW4gdXNpbmcgQ1MgZmxpcHMsIHdlIHdh bnQgdG8gZW1pdCBzZW1hcGhvcmVzIGJldHdlZW4gcmluZ3MuCi0JICogSG93ZXZlciwgd2hlbiB1 c2luZyBtbWlvIGZsaXBzIHdlIHdpbGwgY3JlYXRlIGEgdGFzayB0byBkbyB0aGUKLQkgKiBzeW5j aHJvbmlzYXRpb24sIHNvIGFsbCB3ZSB3YW50IGhlcmUgaXMgdG8gcGluIHRoZSBmcmFtZWJ1ZmZl cgotCSAqIGludG8gdGhlIGRpc3BsYXkgcGxhbmUgYW5kIHNraXAgYW55IHdhaXRzLgotCSAqLwot CWlmICghbW1pb19mbGlwKSB7Ci0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgZW5n aW5lLCAmcmVxdWVzdCk7Ci0JCWlmICghcmV0ICYmICFyZXF1ZXN0KSB7Ci0JCQlyZXF1ZXN0ID0g aTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5VTEwpOwotCQkJcmV0ID0gUFRSX0VSUl9P Ul9aRVJPKHJlcXVlc3QpOwotCQl9Ci0KLQkJaWYgKHJldCkKLQkJCWdvdG8gY2xlYW51cF9wZW5k aW5nOwotCX0KLQotCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBwcmltYXJ5 LT5zdGF0ZS0+cm90YXRpb24pOworCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZi LCBuZXdfc3RhdGUtPnJvdGF0aW9uKTsKIAlpZiAocmV0KQotCQlnb3RvIGNsZWFudXBfcGVuZGlu ZzsKKwkJZ290byBjbGVhbnVwX3VubG9jazsKKworCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2Zi X29iaihvbGRfZmIpLCBvYmosCisJCQkgIHRvX2ludGVsX3BsYW5lKHByaW1hcnkpLT5mcm9udGJ1 ZmZlcl9iaXQpOwogCi0Jd29yay0+Z3R0X29mZnNldCA9IGludGVsX3BsYW5lX29ial9vZmZzZXQo dG9faW50ZWxfcGxhbmUocHJpbWFyeSksCi0JCQkJCQkgIG9iaiwgMCk7Ci0Jd29yay0+Z3R0X29m ZnNldCArPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKKwkvKiBwb2ludCBvZiBubyByZXR1 cm4sIHN3YXAgc3RhdGUgKi8KKwlwcmltYXJ5LT5zdGF0ZSA9IG5ld19zdGF0ZTsKKwljcnRjLT5z dGF0ZSA9IG5ld19jcnRjX3N0YXRlOworCWludGVsX2NydGMtPmNvbmZpZyA9IHRvX2ludGVsX2Ny dGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOworCXByaW1hcnktPmZiID0gZmI7CiAKLQlpZiAobW1p b19mbGlwKSB7Ci0JCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlvX2ZsaXBf d29ya19mdW5jKTsKKwkvKiBzY2hlZHVsaW5nIGZsaXAgd29yayAqLworCWF0b21pY19pbmMoJmlu dGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwogCi0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWdu KCZ3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCisJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEgJiYKKwkg ICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKG9iai0+bGFzdF93cml0ZV9yZXEsIHRydWUp KQorCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmd29yay0+b2xkX3BsYW5lX3N0YXRlWzBdLT53 YWl0X3JlcSwKIAkJCQkJb2JqLT5sYXN0X3dyaXRlX3JlcSk7CiAKLQkJc2NoZWR1bGVfd29yaygm d29yay0+bW1pb193b3JrKTsKLQl9IGVsc2UgewotCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigm d29yay0+ZmxpcF9xdWV1ZWRfcmVxLCByZXF1ZXN0KTsKLQkJcmV0ID0gZGV2X3ByaXYtPmRpc3Bs YXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZiLCBvYmosIHJlcXVlc3QsCi0JCQkJCQkgICB3b3Jr LT5ndHRfb2Zmc2V0KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gY2xlYW51cF91bnBpbjsKKwlpZiAo b2JqLT5iYXNlLmRtYV9idWYpCisJCXdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXS0+YmFzZS5mZW5j ZSA9IGludGVsX2dldF9leGNsX2ZlbmNlKG9iaik7CiAKLQkJaW50ZWxfbWFya19wYWdlX2ZsaXBf YWN0aXZlKGludGVsX2NydGMsIHdvcmspOworCWludGVsX2ZiY19wcmVfdXBkYXRlKGludGVsX2Ny dGMpOwogCi0JCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxdWVzdCk7Ci0JfQorCWludGVs X2ZsaXBfc2NoZWR1bGVfcmVxdWVzdCh3b3JrLCBjcnRjKTsKIAotCWk5MTVfZ2VtX3RyYWNrX2Zi KGludGVsX2ZiX29iaihvbGRfZmIpLCBvYmosCi0JCQkgIHRvX2ludGVsX3BsYW5lKHByaW1hcnkp LT5mcm9udGJ1ZmZlcl9iaXQpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwog Ci0JaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwKLQkJCQkgICAgICAgdG9faW50 ZWxfcGxhbmUocHJpbWFyeSktPmZyb250YnVmZmVyX2JpdCk7Ci0KIAl0cmFjZV9pOTE1X2ZsaXBf cmVxdWVzdChpbnRlbF9jcnRjLT5wbGFuZSwgb2JqKTsKIAogCXJldHVybiAwOwogCi1jbGVhbnVw X3VucGluOgotCWludGVsX3VucGluX2ZiX29iaihmYiwgY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJv dGF0aW9uKTsKLWNsZWFudXBfcGVuZGluZzoKLQlpZiAoIUlTX0VSUl9PUl9OVUxMKHJlcXVlc3Qp KQotCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwotCWF0b21pY19kZWMoJmlu dGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOworY2xlYW51cF91bmxvY2s6CiAJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci1jbGVhbnVwOgotCWNydGMtPnByaW1hcnktPmZiID0g b2xkX2ZiOwotCXVwZGF0ZV9zdGF0ZV9mYihjcnRjLT5wcmltYXJ5KTsKLQotCWRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZvYmotPmJhc2UpOwotCWRybV9mcmFtZWJ1ZmZlcl91 bnJlZmVyZW5jZSh3b3JrLT5vbGRfZmIpOwotCitjbGVhbnVwX3dvcms6CiAJc3Bpbl9sb2NrX2ly cSgmZGV2LT5ldmVudF9sb2NrKTsKIAlsaXN0X2RlbCgmd29yay0+aGVhZCk7CiAJc3Bpbl91bmxv Y2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCitjbGVhbnVwX3ZibGFuazoKIAlkcm1fY3J0Y192 YmxhbmtfcHV0KGNydGMpOwotZnJlZV93b3JrOgotCWtmcmVlKHdvcmspOwotCi0JaWYgKHJldCA9 PSAtRUlPKSB7Ci0JCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKLQkJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Ci0KLW91dF9oYW5nOgotCQlzdGF0ZSA9IGRybV9h dG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKLQkJaWYgKCFzdGF0ZSkKLQkJCXJldHVybiAtRU5PTUVN OwotCQlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkcm1fbW9kZXNldF9sZWdhY3lfYWNxdWlyZV9jdHgo Y3J0Yyk7Ci0KLXJldHJ5OgotCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0 YXRlKHN0YXRlLCBwcmltYXJ5KTsKLQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHBsYW5lX3N0YXRl KTsKLQkJaWYgKCFyZXQpIHsKLQkJCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShwbGFuZV9z dGF0ZSwgZmIpOwotCi0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwbGFu ZV9zdGF0ZSwgY3J0Yyk7Ci0JCQlpZiAoIXJldCkKLQkJCQlyZXQgPSBkcm1fYXRvbWljX2NvbW1p dChzdGF0ZSk7Ci0JCX0KK2NsZWFudXA6CisJaWYgKG5ld19zdGF0ZSkKKwkJaW50ZWxfcGxhbmVf ZGVzdHJveV9zdGF0ZShwcmltYXJ5LCBuZXdfc3RhdGUpOwogCi0JCWlmIChyZXQgPT0gLUVERUFE TEspIHsKLQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoc3RhdGUtPmFjcXVpcmVfY3R4KTsKLQkJCWRy bV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwotCQkJZ290byByZXRyeTsKLQkJfQorCWlmIChu ZXdfY3J0Y19zdGF0ZSkKKwkJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG5ld19jcnRj X3N0YXRlKTsKIAotCQlpZiAocmV0KQotCQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsK LQotCQlpZiAocmV0ID09IDAgJiYgZXZlbnQpIHsKLQkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZl bnRfbG9jayk7Ci0JCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBldmVudCk7Ci0J CQlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Ci0JCX0KLQl9CisJa2ZyZWUod29y ayk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTM4MjksMzMgKzEzOTk2LDYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpbnRlbF9jcnRjX2Z1bmNzID0gewogCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGludGVsX2NydGNfZGVzdHJveV9zdGF0ZSwKIH07CiAKLXN0YXRpYyBz dHJ1Y3QgZmVuY2UgKmludGVsX2dldF9leGNsX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCi17Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKLQotCi0JaWYg KCFvYmotPmJhc2UuZG1hX2J1ZikKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXN2ID0gb2JqLT5iYXNl LmRtYV9idWYtPnJlc3Y7Ci0KLQkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRtYWJ1Ziwg d2FpdCBmb3IgZmVuY2UgKi8KLQl3aGlsZSAoMSkgewotCQlzdHJ1Y3QgZmVuY2UgKmZlbmNlX2V4 Y2wsICpyZXQgPSBOVUxMOwotCi0JCXJjdV9yZWFkX2xvY2soKTsKLQotCQlmZW5jZV9leGNsID0g cmN1X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlX2V4Y2wpOwotCQlpZiAoZmVuY2VfZXhjbCkKLQkJ CXJldCA9IGZlbmNlX2dldF9yY3UoZmVuY2VfZXhjbCk7Ci0KLQkJcmN1X3JlYWRfdW5sb2NrKCk7 Ci0KLQkJaWYgKHJldCA9PSBmZW5jZV9leGNsKQotCQkJcmV0dXJuIHJldDsKLQl9Ci19Ci0KIC8q KgogICogaW50ZWxfcHJlcGFyZV9wbGFuZV9mYiAtIFByZXBhcmUgZmIgZm9yIHVzYWdlIG9uIHBs YW5lCiAgKiBAcGxhbmU6IGRybSBwbGFuZSB0byBwcmVwYXJlIGZvcgpAQCAtMTUxNTksNyArMTUy OTksNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCS8qIERyb3AgdGhyb3VnaCAtIHVuc3VwcG9ydGVkIHNpbmNlIGV4 ZWNsaXN0IG9ubHkuICovCiAJZGVmYXVsdDoKIAkJLyogRGVmYXVsdCBqdXN0IHJldHVybnMgLUVO T0RFViB0byBpbmRpY2F0ZSB1bnN1cHBvcnRlZCAqLwotCQlkZXZfcHJpdi0+ZGlzcGxheS5xdWV1 ZV9mbGlwID0gaW50ZWxfZGVmYXVsdF9xdWV1ZV9mbGlwOworCQlicmVhazsKIAl9CiB9CiAKQEAg LTE2MTE5LDkgKzE2MjU5LDkgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gYm9vdCBmYiBvbiBw aXBlICVkXG4iLAogCQkJCSAgdG9faW50ZWxfY3J0YyhjKS0+cGlwZSk7CiAJCQlkcm1fZnJhbWVi dWZmZXJfdW5yZWZlcmVuY2UoYy0+cHJpbWFyeS0+ZmIpOwotCQkJYy0+cHJpbWFyeS0+ZmIgPSBO VUxMOworCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGMtPnByaW1hcnktPnN0YXRlLT5m Yik7CisJCQljLT5wcmltYXJ5LT5mYiA9IGMtPnByaW1hcnktPnN0YXRlLT5mYiA9IE5VTEw7CiAJ CQljLT5wcmltYXJ5LT5jcnRjID0gYy0+cHJpbWFyeS0+c3RhdGUtPmNydGMgPSBOVUxMOwotCQkJ dXBkYXRlX3N0YXRlX2ZiKGMtPnByaW1hcnkpOwogCQkJYy0+c3RhdGUtPnBsYW5lX21hc2sgJj0g figxIDw8IGRybV9wbGFuZV9pbmRleChjLT5wcmltYXJ5KSk7CiAJCX0KIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCmluZGV4IDY5NDQyMDJkM2RlMC4uYzZkNDBiZmNlMTQ3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaApAQCAtOTc4LDEyICs5NzgsNiBAQCBzdHJ1Y3QgaW50ZWxfZmxpcF93 b3JrIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdW5waW5fd29yazsKIAlzdHJ1Y3Qgd29ya19zdHJ1 Y3QgbW1pb193b3JrOwogCi0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRl OwotCWJvb2wgZnJlZV9uZXdfY3J0Y19zdGF0ZTsKLQotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmI7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKnBlbmRpbmdfZmxpcF9vYmo7CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQ7CiAJYXRvbWljX3QgcGVuZGluZzsKIAl1MzIgZmxpcF9jb3VudDsKQEAgLTk5MSw2 ICs5ODUsMTcgQEAgc3RydWN0IGludGVsX2ZsaXBfd29yayB7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpmbGlwX3F1ZXVlZF9yZXE7CiAJdTMyIGZsaXBfcXVldWVkX3ZibGFuazsKIAl1 MzIgZmxpcF9yZWFkeV92Ymxhbms7CisKKwl1bnNpZ25lZCBwdXRfcG93ZXJfZG9tYWluczsKKwl1 bnNpZ25lZCBudW1fcGxhbmVzOworCisJYm9vbCBjYW5fYXN5bmNfdW5waW4sIGZsaXBfcHJlcGFy ZWQsIGZyZWVfbmV3X2NydGNfc3RhdGU7CisKKwl1bnNpZ25lZCBmYl9iaXRzOworCisJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7CisJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGVbSTkxNV9NQVhfUExBTkVTICsg MV07CisJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGVbSTkxNV9NQVhf UExBTkVTICsgMV07CiB9OwogCiBzdHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSB7Ci0tIAoy LjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==