From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 4/6] drm/i915: Allow mmio updates on all platforms. Date: Wed, 23 Mar 2016 14:24:30 +0100 Message-ID: <1458739472-6582-5-git-send-email-maarten.lankhorst@linux.intel.com> References: <1458739472-6582-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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A9056E85C for ; Wed, 23 Mar 2016 13:24:38 +0000 (UTC) In-Reply-To: <1458739472-6582-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 UmVuYW1lIGludGVsX3VucGluX3dvcmsgdG8gaW50ZWxfZmxpcF93b3JrIGFuZCB1c2UgaXQgZm9y IG1taW8gZmxpcHMKYW5kIHVucGlubmluZy4gVXNlIGZsaXBfcXVldWVkX3JlcSB0byBob2xkIHRo ZSB3YWl0IHJlcXVlc3QgaW4gdGhlCm1taW8gY2FzZSBhbmQgYWxsb3cgdGhlIHZibGFuayBpbnRl cnJ1cHQgdG8gY29tcGxldGUgbW1pbyB3b3JrIHRvCmhhdmUgbW1pbyBmbGlwcyBydW4gY29ycmVj dGx5IG9uIGc0IGFuZCBlYXJsaWVyLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDI3MSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDE2ICstLQogMyBmaWxlcyBjaGFu Z2VkLCA4NyBpbnNlcnRpb25zKCspLCAyMDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwppbmRleCA0YTAwNzhjMTdjZDEuLmJjMmFlNzBhYmNlYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTU3MywxMCArNTczLDEwIEBAIHN0YXRpYyBpbnQg aTkxNV9nZW1fcGFnZWZsaXBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJ Zm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKIAkJY29uc3QgY2hhciBwaXBlID0gcGlw ZV9uYW1lKGNydGMtPnBpcGUpOwogCQljb25zdCBjaGFyIHBsYW5lID0gcGxhbmVfbmFtZShjcnRj LT5wbGFuZSk7Ci0JCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrOworCQlzdHJ1Y3QgaW50 ZWxfZmxpcF93b3JrICp3b3JrOwogCiAJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7 Ci0JCXdvcmsgPSBjcnRjLT51bnBpbl93b3JrOworCQl3b3JrID0gY3J0Yy0+ZmxpcF93b3JrOwog CQlpZiAod29yayA9PSBOVUxMKSB7CiAJCQlzZXFfcHJpbnRmKG0sICJObyBmbGlwIGR1ZSBvbiBw aXBlICVjIChwbGFuZSAlYylcbiIsCiAJCQkJICAgcGlwZSwgcGxhbmUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGM1MmViMWJiNGYyNC4uM2IwODIwMjBhYWI4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00Nyw2ICs0NywxMSBAQAogI2luY2x1 ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogCitz dGF0aWMgYm9vbCBpc19tbWlvX3dvcmsoc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykKK3sK KwlyZXR1cm4gd29yay0+bW1pb193b3JrLmZ1bmM7Cit9CisKIC8qIFByaW1hcnkgcGxhbmUgZm9y bWF0cyBmb3IgZ2VuIDw9IDMgKi8KIHN0YXRpYyBjb25zdCB1aW50MzJfdCBpOHh4X3ByaW1hcnlf Zm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfQzgsCkBAIC0zMjQzLDcgKzMyNDgsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9jcnRjX2hhc19wZW5kaW5nX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRj KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwot CXBlbmRpbmcgPSB0b19pbnRlbF9jcnRjKGNydGMpLT51bnBpbl93b3JrICE9IE5VTEw7CisJcGVu ZGluZyA9IHRvX2ludGVsX2NydGMoY3J0YyktPmZsaXBfd29yayAhPSBOVUxMOwogCXNwaW5fdW5s b2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKIAogCXJldHVybiBwZW5kaW5nOwpAQCAtMzgyNSw3 ICszODMwLDcgQEAgYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCQlpZiAoYXRvbWljX3JlYWQoJmNydGMtPnVucGluX3dvcmtfY291bnQpID09 IDApCiAJCQljb250aW51ZTsKIAotCQlpZiAoY3J0Yy0+dW5waW5fd29yaykKKwkJaWYgKGNydGMt PmZsaXBfd29yaykKIAkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGNydGMtPnBpcGUpOwog CiAJCXJldHVybiB0cnVlOwpAQCAtMzgzNywxMSArMzg0MiwxMSBAQCBib29sIGludGVsX2hhc19w ZW5kaW5nX2ZiX3VucGluKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBzdGF0aWMgdm9pZCBwYWdl X2ZsaXBfY29tcGxldGVkKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5k ZXYpOwotCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5f d29yazsKKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0gaW50ZWxfY3J0Yy0+ZmxpcF93 b3JrOwogCi0JLyogZW5zdXJlIHRoYXQgdGhlIHVucGluIHdvcmsgaXMgY29uc2lzdGVudCB3cnQg LT5wZW5kaW5nLiAqLworCS8qIGVuc3VyZSB0aGF0IHRoZSBmbGlwIHdvcmsgaXMgY29uc2lzdGVu dCB3cnQgLT5wZW5kaW5nLiAqLwogCXNtcF9ybWIoKTsKLQlpbnRlbF9jcnRjLT51bnBpbl93b3Jr ID0gTlVMTDsKKwlpbnRlbF9jcnRjLT5mbGlwX3dvcmsgPSBOVUxMOwogCiAJaWYgKHdvcmstPmV2 ZW50KQogCQlkcm1fc2VuZF92YmxhbmtfZXZlbnQoaW50ZWxfY3J0Yy0+YmFzZS5kZXYsCkBAIC0z ODUxLDcgKzM4NTYsNyBAQCBzdGF0aWMgdm9pZCBwYWdlX2ZsaXBfY29tcGxldGVkKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjKQogCWRybV9jcnRjX3ZibGFua19wdXQoJmludGVsX2NydGMt PmJhc2UpOwogCiAJd2FrZV91cF9hbGwoJmRldl9wcml2LT5wZW5kaW5nX2ZsaXBfcXVldWUpOwot CXF1ZXVlX3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+d29yayk7CisJcXVldWVfd29yayhkZXZf cHJpdi0+d3EsICZ3b3JrLT51bnBpbl93b3JrKTsKIAogCXRyYWNlX2k5MTVfZmxpcF9jb21wbGV0 ZShpbnRlbF9jcnRjLT5wbGFuZSwKIAkJCQkgd29yay0+cGVuZGluZ19mbGlwX29iaik7CkBAIC0z ODc1LDkgKzM4ODAsMTEgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdf ZmxpcHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaWYgKHJldCA9PSAwKSB7CiAJCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwkJc3RydWN0 IGludGVsX2ZsaXBfd29yayAqd29yazsKIAogCQlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xv Y2spOwotCQlpZiAoaW50ZWxfY3J0Yy0+dW5waW5fd29yaykgeworCQl3b3JrID0gaW50ZWxfY3J0 Yy0+ZmxpcF93b3JrOworCQlpZiAod29yayAmJiAhaXNfbW1pb193b3JrKHdvcmspKSB7CiAJCQlX QVJOX09OQ0UoMSwgIlJlbW92aW5nIHN0dWNrIHBhZ2UgZmxpcFxuIik7CiAJCQlwYWdlX2ZsaXBf Y29tcGxldGVkKGludGVsX2NydGMpOwogCQl9CkBAIC02MjU5LDcgKzYyNjYsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQog CQlyZXR1cm47CiAKIAlpZiAodG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+cHJpbWFyeS0+c3Rh dGUpLT52aXNpYmxlKSB7Ci0JCVdBUk5fT04oaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7CisJCVdB Uk5fT04oaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKTsKIAogCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmlt YXJ5X25vYXRvbWljKGNydGMpOwogCkBAIC0xMDc4MSwxNSArMTA3ODgsMTYgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29y azsKKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrOwogCiAJc3Bpbl9sb2NrX2lycSgmZGV2 LT5ldmVudF9sb2NrKTsKLQl3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKLQlpbnRlbF9j cnRjLT51bnBpbl93b3JrID0gTlVMTDsKKwl3b3JrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrOwor CWludGVsX2NydGMtPmZsaXBfd29yayA9IE5VTEw7CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2 ZW50X2xvY2spOwogCiAJaWYgKHdvcmspIHsKLQkJY2FuY2VsX3dvcmtfc3luYygmd29yay0+d29y ayk7CisJCWNhbmNlbF93b3JrX3N5bmMoJndvcmstPm1taW9fd29yayk7CisJCWNhbmNlbF93b3Jr X3N5bmMoJndvcmstPnVucGluX3dvcmspOwogCQlrZnJlZSh3b3JrKTsKIAl9CiAKQEAgLTEwODAw LDEyICsxMDgwOCwxNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3koc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCiBzdGF0aWMgdm9pZCBpbnRlbF91bnBpbl93b3JrX2ZuKHN0cnVjdCB3 b3JrX3N0cnVjdCAqX193b3JrKQogewotCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrID0K LQkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGludGVsX3VucGluX3dvcmssIHdvcmspOwor CXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcmsgPQorCQljb250YWluZXJfb2YoX193b3JrLCBz dHJ1Y3QgaW50ZWxfZmxpcF93b3JrLCB1bnBpbl93b3JrKTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMod29yay0+Y3J0Yyk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5i YXNlLnByaW1hcnk7CiAKKwlpZiAoaXNfbW1pb193b3JrKHdvcmspKQorCQlmbHVzaF93b3JrKCZ3 b3JrLT5tbWlvX3dvcmspOworCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlu dGVsX3VucGluX2ZiX29iaih3b3JrLT5vbGRfZmIsIHByaW1hcnktPnN0YXRlLT5yb3RhdGlvbik7 CiAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJndvcmstPnBlbmRpbmdfZmxpcF9vYmotPmJh c2UpOwpAQCAtMTA4NzEsMTYgKzEwODgyLDE2IEBAIHN0YXRpYyBib29sIHBhZ2VfZmxpcF9maW5p c2hlZChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkgKiBhbnl3YXksIHdlIGRvbid0IHJlYWxs eSBjYXJlLgogCSAqLwogCXJldHVybiAoSTkxNV9SRUFEKERTUFNVUkZMSVZFKGNydGMtPnBsYW5l KSkgJiB+MHhmZmYpID09Ci0JCWNydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQgJiYKKwkJY3J0 Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0ICYmCiAJCWc0eF9mbGlwX2NvdW50X2FmdGVyX2VxKEk5 MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgoY3J0Yy0+cGlwZSkpLAotCQkJCSAgICBjcnRjLT51 bnBpbl93b3JrLT5mbGlwX2NvdW50KTsKKwkJCQkgICAgY3J0Yy0+ZmxpcF93b3JrLT5mbGlwX2Nv dW50KTsKIH0KIAogc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3Ry dWN0IGludGVsX3VucGluX3dvcmsgKndvcms7CisJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29y azsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyogSWdub3JlIGVhcmx5IHZibGFuayBpcnFz ICovCkBAIC0xMDg5MiwxMSArMTA5MDMsMTEgQEAgc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNo X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGxvc3QgcGFnZWZsaXBzKSBz byBuZWVkcyB0aGUgZnVsbCBpcnFzYXZlIHNwaW5sb2Nrcy4KIAkgKi8KIAlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0Jd29yayA9IGludGVsX2NydGMtPnVucGlu X3dvcms7CisJd29yayA9IGludGVsX2NydGMtPmZsaXBfd29yazsKIAogCWlmICh3b3JrID09IE5V TEwgfHwKIAkgICAgYXRvbWljX3JlYWQoJndvcmstPnBlbmRpbmcpID09IElOVEVMX0ZMSVBfSU5B Q1RJVkUgfHwKLQkgICAhcGFnZV9mbGlwX2ZpbmlzaGVkKGludGVsX2NydGMpKSB7CisJICAgICFw YWdlX2ZsaXBfZmluaXNoZWQoaW50ZWxfY3J0YykpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9CkBAIC0xMDkyMiw3ICsx MDkzMyw3IEBAIHZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9wbGFuZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgcGxhbmUpCiAJZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXYsIGNy dGMpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZl KHN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrKQorc3RhdGljIGlubGluZSB2b2lkIGludGVs X21hcmtfcGFnZV9mbGlwX2FjdGl2ZShzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQogewog CS8qIEVuc3VyZSB0aGF0IHRoZSB3b3JrIGl0ZW0gaXMgY29uc2lzdGVudCB3aGVuIGFjdGl2YXRp bmcgaXQgLi4uICovCiAJc21wX3dtYigpOwpAQCAtMTA5NTksMTAgKzEwOTcwLDkgQEAgc3RhdGlj IGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQ X1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7CiAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmIt PnBpdGNoZXNbMF0pOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGlu X3dvcmstPmd0dF9vZmZzZXQpOworCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMt PmZsaXBfd29yay0+Z3R0X29mZnNldCk7CiAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8q IGF1eCBkaXNwbGF5IGJhc2UgYWRkcmVzcywgdW51c2VkICovCiAKLQlpbnRlbF9tYXJrX3BhZ2Vf ZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTEwOTkxLDEwICsxMTAwMSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuM19xdWV1ZV9mbGlwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExB WV9GTElQX0k5MTUgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5l KSk7CiAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOworCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7 CiAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CiAKLQlpbnRlbF9tYXJrX3BhZ2Vf ZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTExMDIyLDcgKzExMDMxLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZ X0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7CiAJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQgfAorCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCB8CiAJCQlv YmotPnRpbGluZ19tb2RlKTsKIAogCS8qIFhYWCBFbmFibGluZyB0aGUgcGFuZWwtZml0dGVyIGFj cm9zcyBwYWdlLWZsaXAgaXMgc28gZmFyCkBAIC0xMTAzMyw3ICsxMTA0Miw2IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcGlwZXNy YyA9IEk5MTVfUkVBRChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7CiAJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKIAotCWludGVsX21hcmtfcGFn ZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjLT51bnBpbl93b3JrKTsKIAlyZXR1cm4gMDsKIH0KIApA QCAtMTEwNTcsNyArMTEwNjUsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BM QVlfRkxJUCB8CiAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsK IAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21v ZGUpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0 dF9vZmZzZXQpOworCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29y ay0+Z3R0X29mZnNldCk7CiAKIAkvKiBDb250cmFyeSB0byB0aGUgc3VnZ2VzdGlvbnMgaW4gdGhl IGRvY3VtZW50YXRpb24sCiAJICogIkVuYWJsZSBQYW5lbCBGaXR0ZXIiIGRvZXMgbm90IHNlZW0g dG8gYmUgcmVxdWlyZWQgd2hlbiBwYWdlCkBAIC0xMTA2OSw3ICsxMTA3Nyw2IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcGlwZXNy YyA9IEk5MTVfUkVBRChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7CiAJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKIAotCWludGVsX21hcmtfcGFn ZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjLT51bnBpbl93b3JrKTsKIAlyZXR1cm4gMDsKIH0KIApA QCAtMTExNjEsMTAgKzExMTY4LDkgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJ U1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0KTsKIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAo ZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGluZ19tb2RlKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7CisJaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKIAlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCAoTUlfTk9PUCkpOwogCi0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0 aXZlKGludGVsX2NydGMtPnVucGluX3dvcmspOwogCXJldHVybiAwOwogfQogCkBAIC0xMTE4Miw5 ICsxMTE4OCw2IEBAIHN0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCWlmIChlbmdpbmUgPT0gTlVMTCkKIAkJcmV0dXJuIHRydWU7CiAKLQlp ZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA8IDUpCi0JCXJldHVybiBmYWxzZTsKLQog CWlmIChpOTE1LnVzZV9tbWlvX2ZsaXAgPCAwKQogCQlyZXR1cm4gZmFsc2U7CiAJZWxzZSBpZiAo aTkxNS51c2VfbW1pb19mbGlwID4gMCkKQEAgLTExMTk5LDEyNiArMTEyMDIsMjEgQEAgc3RhdGlj IGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCXJl dHVybiBlbmdpbmUgIT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKG9iai0+bGFzdF93cml0 ZV9yZXEpOwogfQogCi1zdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjLAotCQkJICAgICB1bnNpZ25lZCBpbnQgcm90YXRpb24sCi0JCQkgICAg IHN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g aW50ZWxfY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKLQljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Ci0JdTMyIGN0bCwgc3RyaWRlLCB0aWxlX2hlaWdodDsKLQotCWN0bCA9 IEk5MTVfUkVBRChQTEFORV9DVEwocGlwZSwgMCkpOwotCWN0bCAmPSB+UExBTkVfQ1RMX1RJTEVE X01BU0s7Ci0Jc3dpdGNoIChmYi0+bW9kaWZpZXJbMF0pIHsKLQljYXNlIERSTV9GT1JNQVRfTU9E X05PTkU6Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Ci0JCWN0bCB8 PSBQTEFORV9DVExfVElMRURfWDsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRDoKLQkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZOwotCQlicmVhazsKLQljYXNlIEk5MTVf Rk9STUFUX01PRF9ZZl9USUxFRDoKLQkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZRjsKLQkJYnJl YWs7Ci0JZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllclswXSk7Ci0JfQotCi0J LyoKLQkgKiBUaGUgc3RyaWRlIGlzIGVpdGhlciBleHByZXNzZWQgYXMgYSBtdWx0aXBsZSBvZiA2 NCBieXRlcyBjaHVua3MgZm9yCi0JICogbGluZWFyIGJ1ZmZlcnMgb3IgaW4gbnVtYmVyIG9mIHRp bGVzIGZvciB0aWxlZCBidWZmZXJzLgotCSAqLwotCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8y NzAocm90YXRpb24pKSB7Ci0JCS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICov Ci0JCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmll clswXSwgMCk7Ci0JCXN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdo dCk7Ci0JfSBlbHNlIHsKLQkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gLwotCQkJaW50ZWxfZmJf c3RyaWRlX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLAotCQkJCQkJICBmYi0+ cGl4ZWxfZm9ybWF0KTsKLQl9Ci0KLQkvKgotCSAqIEJvdGggUExBTkVfQ1RMIGFuZCBQTEFORV9T VFJJREUgYXJlIG5vdCB1cGRhdGVkIG9uIHZibGFuayBidXQgb24KLQkgKiBQTEFORV9TVVJGIHVw ZGF0ZXMsIHRoZSB1cGRhdGUgaXMgdGhlbiBndWFyYW50ZWVkIHRvIGJlIGF0b21pYy4KLQkgKi8K LQlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgY3RsKTsKLQlJOTE1X1dSSVRFKFBMQU5F X1NUUklERShwaXBlLCAwKSwgc3RyaWRlKTsKLQotCUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBl LCAwKSwgd29yay0+Z3R0X29mZnNldCk7Ci0JUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwg MCkpOwotfQotCi1zdGF0aWMgdm9pZCBpbGtfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAotCQkJICAgICBzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yaykKK3N0 YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3 KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKKwlz dHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0KKwkJY29udGFpbmVyX29mKHcsIHN0cnVjdCBp bnRlbF9mbGlwX3dvcmssIG1taW9fd29yayk7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKHdvcmstPmNydGMpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPQotCQl0b19p bnRlbF9mcmFtZWJ1ZmZlcihpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKLQlpOTE1X3JlZ190IHJl ZyA9IERTUENOVFIoaW50ZWxfY3J0Yy0+cGxhbmUpOwotCXUzMiBkc3BjbnRyOwotCi0JZHNwY250 ciA9IEk5MTVfUkVBRChyZWcpOwotCi0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJ TkdfTk9ORSkKLQkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7Ci0JZWxzZQotCQlkc3BjbnRy ICY9IH5ESVNQUExBTkVfVElMRUQ7Ci0KLQlJOTE1X1dSSVRFKHJlZywgZHNwY250cik7CisJc3Ry dWN0IGludGVsX3BsYW5lICpwcmltYXJ5ID0gdG9faW50ZWxfcGxhbmUoY3J0Yy0+YmFzZS5wcmlt YXJ5KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKHBy aW1hcnktPmJhc2Uuc3RhdGUtPmZiKTsKIAotCUk5MTVfV1JJVEUoRFNQU1VSRihpbnRlbF9jcnRj LT5wbGFuZSksIHdvcmstPmd0dF9vZmZzZXQpOwotCVBPU1RJTkdfUkVBRChEU1BTVVJGKGludGVs X2NydGMtPnBsYW5lKSk7Ci19Ci0KLS8qCi0gKiBYWFg6IFRoaXMgaXMgdGhlIHRlbXBvcmFyeSB3 YXkgdG8gdXBkYXRlIHRoZSBwbGFuZSByZWdpc3RlcnMgdW50aWwgd2UgZ2V0Ci0gKiBhcm91bmQg dG8gdXNpbmcgdGhlIHVzdWFsIHBsYW5lIHVwZGF0ZSBmdW5jdGlvbnMgZm9yIE1NSU8gZmxpcHMK LSAqLwotc3RhdGljIHZvaWQgaW50ZWxfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9tbWlvX2Zs aXAgKm1taW9fZmxpcCkKLXsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IG1taW9fZmxpcC0+ Y3J0YzsKLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKLQotCXNwaW5fbG9ja19pcnEo JmNydGMtPmJhc2UuZGV2LT5ldmVudF9sb2NrKTsKLQl3b3JrID0gY3J0Yy0+dW5waW5fd29yazsK LQlzcGluX3VubG9ja19pcnEoJmNydGMtPmJhc2UuZGV2LT5ldmVudF9sb2NrKTsKLQlpZiAod29y ayA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjcnRjKTsK LQotCWlmIChJTlRFTF9JTkZPKG1taW9fZmxpcC0+aTkxNSktPmdlbiA+PSA5KQotCQlza2xfZG9f bW1pb19mbGlwKGNydGMsIG1taW9fZmxpcC0+cm90YXRpb24sIHdvcmspOwotCWVsc2UKLQkJLyog dXNlX21taW9fZmxpcCgpIHJldHJpY3RzIE1NSU8gZmxpcHMgdG8gaWxrKyAqLwotCQlpbGtfZG9f bW1pb19mbGlwKGNydGMsIHdvcmspOwotCi0JaW50ZWxfcGlwZV91cGRhdGVfZW5kKGNydGMpOwot Ci0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKHdvcmspOwotfQotCi1zdGF0aWMgdm9pZCBp bnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKLXsKLQlz dHJ1Y3QgaW50ZWxfbW1pb19mbGlwICptbWlvX2ZsaXAgPQotCQljb250YWluZXJfb2Yod29yaywg c3RydWN0IGludGVsX21taW9fZmxpcCwgd29yayk7Ci0Jc3RydWN0IGludGVsX2ZyYW1lYnVmZmVy ICppbnRlbF9mYiA9Ci0JCXRvX2ludGVsX2ZyYW1lYnVmZmVyKG1taW9fZmxpcC0+Y3J0Yy0+YmFz ZS5wcmltYXJ5LT5mYik7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVs X2ZiLT5vYmo7Ci0KLQlpZiAobW1pb19mbGlwLT5yZXEpIHsKLQkJV0FSTl9PTihfX2k5MTVfd2Fp dF9yZXF1ZXN0KG1taW9fZmxpcC0+cmVxLAotCQkJCQkgICAgbW1pb19mbGlwLT5jcnRjLT5yZXNl dF9jb3VudGVyLAorCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpCisJCVdBUk5fT04oX19pOTE1 X3dhaXRfcmVxdWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCisJCQkJCSAgICBjcnRjLT5yZXNl dF9jb3VudGVyLAogCQkJCQkgICAgZmFsc2UsIE5VTEwsCi0JCQkJCSAgICAmbW1pb19mbGlwLT5p OTE1LT5ycHMubW1pb2ZsaXBzKSk7Ci0JCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3Vu bG9ja2VkKG1taW9fZmxpcC0+cmVxKTsKLQl9CisJCQkJCSAgICAmZGV2X3ByaXYtPnJwcy5tbWlv ZmxpcHMpKTsKIAogCS8qIEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZv ciBmZW5jZSAqLwogCWlmIChvYmotPmJhc2UuZG1hX2J1ZikKQEAgLTExMzI2LDI5ICsxMTIyNCwx MiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAkJCQkJCQkgICAgZmFsc2UsIGZhbHNlLAogCQkJCQkJCSAgICBNQVhfU0NI RURVTEVfVElNRU9VVCkgPCAwKTsKIAotCWludGVsX2RvX21taW9fZmxpcChtbWlvX2ZsaXApOwot CWtmcmVlKG1taW9fZmxpcCk7Ci19Ci0KLXN0YXRpYyBpbnQgaW50ZWxfcXVldWVfbW1pb19mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJ CQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKLXsKLQlzdHJ1Y3QgaW50ZWxfbW1p b19mbGlwICptbWlvX2ZsaXA7Ci0KLQltbWlvX2ZsaXAgPSBrbWFsbG9jKHNpemVvZigqbW1pb19m bGlwKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKG1taW9fZmxpcCA9PSBOVUxMKQotCQlyZXR1cm4gLUVO T01FTTsKLQotCW1taW9fZmxpcC0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKLQltbWlvX2ZsaXAtPnJl cSA9IGk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNlKG9iai0+bGFzdF93cml0ZV9yZXEpOwotCW1t aW9fZmxpcC0+Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JbW1pb19mbGlwLT5yb3RhdGlv biA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbjsKLQotCUlOSVRfV09SSygmbW1pb19m bGlwLT53b3JrLCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKTsKLQlzY2hlZHVsZV93b3JrKCZt bWlvX2ZsaXAtPndvcmspOwotCi0JcmV0dXJuIDA7CisJaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQo Y3J0Yyk7CisJcHJpbWFyeS0+dXBkYXRlX3BsYW5lKCZwcmltYXJ5LT5iYXNlLAorCQkJICAgICAg Y3J0Yy0+Y29uZmlnLAorCQkJICAgICAgdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+YmFz ZS5zdGF0ZSkpOworCWF0b21pY19zZXQoJndvcmstPnBlbmRpbmcsIElOVEVMX0ZMSVBfUEVORElO Ryk7CisJaW50ZWxfcGlwZV91cGRhdGVfZW5kKGNydGMpOwogfQogCiBzdGF0aWMgaW50IGludGVs X2RlZmF1bHRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtMTEzNjYsNyAr MTEyNDcsNyBAQCBzdGF0aWMgYm9vbCBfX2ludGVsX3BhZ2VmbGlwX3N0YWxsX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcmsgPSBpbnRl bF9jcnRjLT51bnBpbl93b3JrOworCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcmsgPSBpbnRl bF9jcnRjLT5mbGlwX3dvcms7CiAJdTMyIGFkZHI7CiAJdTMyIHBlbmRpbmc7CiAKQEAgLTExMzc0 LDYgKzExMjU1LDEzIEBAIHN0YXRpYyBib29sIF9faW50ZWxfcGFnZWZsaXBfc3RhbGxfY2hlY2so c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAocGVuZGluZyA9PSBJTlRFTF9GTElQX0lOQUNU SVZFKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYSBtbWlvIGZsaXAg cmV0dXJuIHRydWUgYmVjYXVzZSBzdGF0ZQorCSAqIGlzIGNoYW5nZWQgdG8gSU5URUxfRkxJUF9Q RU5ESU5HIGFmdGVyIHVwZGF0aW5nLgorCSAqLworCWlmIChpc19tbWlvX3dvcmsod29yaykpCisJ CXJldHVybiB0cnVlOworCiAJaWYgKHdvcmstPmZsaXBfcmVhZHlfdmJsYW5rID09IDApIHsKIAkJ aWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSAmJgogCQkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29t cGxldGVkKHdvcmstPmZsaXBfcXVldWVkX3JlcSwgdHJ1ZSkpCkBAIC0xMTQwNCw3ICsxMTI5Miw3 IEBAIHZvaWQgaW50ZWxfY2hlY2tfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBwaXBlKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19t YXBwaW5nW3BpcGVdOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKKwlzdHJ1Y3QgaW50 ZWxfZmxpcF93b3JrICp3b3JrOwogCiAJV0FSTl9PTighaW5faW50ZXJydXB0KCkpOwogCkBAIC0x MTQxMiwxNCArMTEzMDAsMTUgQEAgdm9pZCBpbnRlbF9jaGVja19wYWdlX2ZsaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiAJCXJldHVybjsKIAogCXNwaW5fbG9jaygmZGV2LT5l dmVudF9sb2NrKTsKLQl3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKKwl3b3JrID0gaW50 ZWxfY3J0Yy0+ZmxpcF93b3JrOwogCWlmICh3b3JrICE9IE5VTEwgJiYgX19pbnRlbF9wYWdlZmxp cF9zdGFsbF9jaGVjayhkZXYsIGNydGMpKSB7Ci0JCVdBUk5fT05DRSgxLCAiS2lja2luZyBzdHVj ayBwYWdlIGZsaXA6IHF1ZXVlZCBhdCAlZCwgbm93ICVkXG4iLAorCQlXQVJOX09OQ0UoIWlzX21t aW9fd29yayh3b3JrKSwKKwkJCSAgIktpY2tpbmcgc3R1Y2sgcGFnZSBmbGlwOiBxdWV1ZWQgYXQg JWQsIG5vdyAlZFxuIiwKIAkJCSB3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmssIGRybV92Ymxhbmtf Y291bnQoZGV2LCBwaXBlKSk7CiAJCXBhZ2VfZmxpcF9jb21wbGV0ZWQoaW50ZWxfY3J0Yyk7CiAJ CXdvcmsgPSBOVUxMOwogCX0KLQlpZiAod29yayAhPSBOVUxMICYmCisJaWYgKHdvcmsgIT0gTlVM TCAmJiAhaXNfbW1pb193b3JrKHdvcmspICYmCiAJICAgIGRybV92YmxhbmtfY291bnQoZGV2LCBw aXBlKSAtIHdvcmstPmZsaXBfcXVldWVkX3ZibGFuayA+IDEpCiAJCWludGVsX3F1ZXVlX3Jwc19i b29zdF9mb3JfcmVxdWVzdChkZXYsIHdvcmstPmZsaXBfcXVldWVkX3JlcSk7CiAJc3Bpbl91bmxv Y2soJmRldi0+ZXZlbnRfbG9jayk7CkBAIC0xMTQzNyw3ICsxMTMyNiw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7Ci0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcms7CisJc3RydWN0IGludGVs X2ZsaXBfd29yayAqd29yazsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJYm9v bCBtbWlvX2ZsaXA7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVM TDsKQEAgLTExNDc0LDE5ICsxMTM2MywyMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl3b3JrLT5ldmVudCA9IGV2ZW50OwogCXdvcmst PmNydGMgPSBjcnRjOwogCXdvcmstPm9sZF9mYiA9IG9sZF9mYjsKLQlJTklUX1dPUksoJndvcmst PndvcmssIGludGVsX3VucGluX3dvcmtfZm4pOworCUlOSVRfV09SSygmd29yay0+dW5waW5fd29y aywgaW50ZWxfdW5waW5fd29ya19mbik7CiAKIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNy dGMpOwogCWlmIChyZXQpCiAJCWdvdG8gZnJlZV93b3JrOwogCi0JLyogV2UgYm9ycm93IHRoZSBl dmVudCBzcGluIGxvY2sgZm9yIHByb3RlY3RpbmcgdW5waW5fd29yayAqLworCS8qIFdlIGJvcnJv dyB0aGUgZXZlbnQgc3BpbiBsb2NrIGZvciBwcm90ZWN0aW5nIGZsaXBfd29yayAqLwogCXNwaW5f bG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Ci0JaWYgKGludGVsX2NydGMtPnVucGluX3dvcmsp IHsKKwlpZiAoaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKSB7CiAJCS8qIEJlZm9yZSBkZWNsYXJpbmcg dGhlIGZsaXAgcXVldWUgd2VkZ2VkLCBjaGVjayBpZgogCQkgKiB0aGUgaGFyZHdhcmUgY29tcGxl dGVkIHRoZSBvcGVyYXRpb24gYmVoaW5kIG91ciBiYWNrcy4KIAkJICovCi0JCWlmIChfX2ludGVs X3BhZ2VmbGlwX3N0YWxsX2NoZWNrKGRldiwgY3J0YykpIHsKKwkJaWYgKCFpc19tbWlvX3dvcmso aW50ZWxfY3J0Yy0+ZmxpcF93b3JrKSAmJgorCQkgICAgX19pbnRlbF9wYWdlZmxpcF9zdGFsbF9j aGVjayhkZXYsIGNydGMpKSB7CiAJCQlEUk1fREVCVUdfRFJJVkVSKCJmbGlwIHF1ZXVlOiBwcmV2 aW91cyBmbGlwIGNvbXBsZXRlZCwgY29udGludWluZ1xuIik7CiAJCQlwYWdlX2ZsaXBfY29tcGxl dGVkKGludGVsX2NydGMpOwogCQl9IGVsc2UgewpAQCAtMTE0OTgsNyArMTEzODgsNyBAQCBzdGF0 aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCXJl dHVybiAtRUJVU1k7CiAJCX0KIAl9Ci0JaW50ZWxfY3J0Yy0+dW5waW5fd29yayA9IHdvcms7CisJ aW50ZWxfY3J0Yy0+ZmxpcF93b3JrID0gd29yazsKIAlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZl bnRfbG9jayk7CiAKIAlpZiAoYXRvbWljX3JlYWQoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291 bnQpID49IDIpCkBAIC0xMTU2NywyMyArMTE0NTcsMjIgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJd29yay0+ZmxpcF9xdWV1ZWRfdmJs YW5rID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOwogCiAJaWYgKG1taW9fZmxpcCkgewot CQlyZXQgPSBpbnRlbF9xdWV1ZV9tbWlvX2ZsaXAoZGV2LCBjcnRjLCBvYmopOwotCQlpZiAocmV0 KQotCQkJZ290byBjbGVhbnVwX3VucGluOworCQlJTklUX1dPUksoJndvcmstPm1taW9fd29yaywg aW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyk7CiAKIAkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24o JndvcmstPmZsaXBfcXVldWVkX3JlcSwKIAkJCQkJb2JqLT5sYXN0X3dyaXRlX3JlcSk7CisKKwkJ c2NoZWR1bGVfd29yaygmd29yay0+bW1pb193b3JrKTsKIAl9IGVsc2UgeworCQlpOTE1X2dlbV9y ZXF1ZXN0X2Fzc2lnbigmd29yay0+ZmxpcF9xdWV1ZWRfcmVxLCByZXF1ZXN0KTsKIAkJcmV0ID0g ZGV2X3ByaXYtPmRpc3BsYXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZiLCBvYmosIHJlcXVlc3Qs CiAJCQkJCQkgICBwYWdlX2ZsaXBfZmxhZ3MpOwogCQlpZiAocmV0KQogCQkJZ290byBjbGVhbnVw X3VucGluOwogCi0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1ZXVlZF9y ZXEsIHJlcXVlc3QpOwotCX0KLQotCWlmIChyZXF1ZXN0KQorCQlpbnRlbF9tYXJrX3BhZ2VfZmxp cF9hY3RpdmUod29yayk7CiAJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxdWVzdCk7CisJ fQogCiAJd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNy dGMpOwogCkBAIC0xMTYxMyw3ICsxMTUwMiw3IEBAIGNsZWFudXA6CiAJZHJtX2ZyYW1lYnVmZmVy X3VucmVmZXJlbmNlKHdvcmstPm9sZF9mYik7CiAKIAlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50 X2xvY2spOwotCWludGVsX2NydGMtPnVucGluX3dvcmsgPSBOVUxMOworCWludGVsX2NydGMtPmZs aXBfd29yayA9IE5VTEw7CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCiAJ ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXgg ZTI2MjkzZWFkOTRmLi5jYWMzNjgxMzg3NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBA IC01OTIsMTQgKzU5Miw2IEBAIHN0cnVjdCB2bHZfd21fc3RhdGUgewogCWJvb2wgY3hzcjsKIH07 CiAKLXN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgewotCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxOwotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwotCXVuc2lnbmVkIGludCByb3Rh dGlvbjsKLX07Ci0KIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAlzdHJ1Y3QgZHJtX2NydGMgYmFzZTsK IAllbnVtIHBpcGUgcGlwZTsKQEAgLTYxNCw3ICs2MDYsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7 CiAJdW5zaWduZWQgbG9uZyBlbmFibGVkX3Bvd2VyX2RvbWFpbnM7CiAJYm9vbCBsb3dmcmVxX2F2 YWlsOwogCXN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5OwotCXN0cnVjdCBpbnRlbF91bnBp bl93b3JrICp1bnBpbl93b3JrOworCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKmZsaXBfd29yazsK IAogCWF0b21pY190IHVucGluX3dvcmtfY291bnQ7CiAKQEAgLTkzNSw4ICs5MjcsMTAgQEAgaW50 ZWxfZ2V0X2NydGNfZm9yX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSkK IAlyZXR1cm4gZGV2X3ByaXYtPnBsYW5lX3RvX2NydGNfbWFwcGluZ1twbGFuZV07CiB9CiAKLXN0 cnVjdCBpbnRlbF91bnBpbl93b3JrIHsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKK3N0cnVj dCBpbnRlbF9mbGlwX3dvcmsgeworCXN0cnVjdCB3b3JrX3N0cnVjdCB1bnBpbl93b3JrOworCXN0 cnVjdCB3b3JrX3N0cnVjdCBtbWlvX3dvcms7CisKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpwZW5kaW5nX2ZsaXBfb2JqOwotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=