From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 3/4 v3] drm/i915: Use frame buffer modifiers for tiled display Date: Fri, 6 Feb 2015 17:26:43 +0000 Message-ID: <1423243603-3887-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1423147315-23890-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 2C1A76E01D for ; Fri, 6 Feb 2015 09:28:28 -0800 (PST) In-Reply-To: <1423147315-23890-1-git-send-email-tvrtko.ursulin@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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN0YXJ0IHVz aW5nIGZyYW1lIGJ1ZmZlciBtb2RpZmllcnMgaW5zdGVhZCBvZiBvYmplY3QgdGlsaW5nIG1vZGUK Zm9yIGRpc3BsYXkgcHVycG9zZXMuCgpUbyBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCB1 c2Vyc3BhY2Ugd2hpY2ggaXMgdXNpbmcgc2V0X3RpbGluZwphbmQgZG9lcyBub3Qga25vdyBhYm91 dCBmcmFtZSBidWZmZXIgbW9kaWZpZXJzLCB0aGUgbGF0dGVyIGFyZSBmYWtlZAppbnRlcm5hbGx5 IHdoZW4gdGlsZSBvYmplY3QgaXMgc2V0IGZvciBkaXNwbGF5LiBUaGlzIHdheSBhbGwgaW50ZXJl c3RlZApjYWxsIHNpdGVzIGNhbiB1c2UgZmIgbW9kaWZpZXJzIGV4Y2x1c2l2ZWx5LgoKQWxzbyBl bnN1cmUgdGlsaW5nIHNwZWNpZmllZCB2aWEgZmIgbW9kaWZpZXJzIG11c3QgbWF0Y2ggb2JqZWN0 IHRpbGluZwp1c2VkIGZvciBmZW5jaW5nIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KCnYyOgogICAq IFJlZmFjdG9yZWQgdG8gdXNlIGZiIG1vZGlmaWVycyBkaXJlY3RseSBpbiBzd2l0Y2ggc3RhdGVt ZW50cyBpbgogICAgIG9yZGVyIHRvIGNvbXBsZXRlbHkgZGlzY29ubmVjdCBmcm9tIHRoZSBvYmpl Y3QgdGlsaW5nIG5hbWVzcGFjZS4KICAgICAoRGFuaWVsIFZldHRlcikKICAgKiBBZGRlZCBoZWxw ZXIgdG8gY29udmVydCB0byBoYXJkd2FyZSBtb2RlIHJlcHJlc2VudGF0aW9uIGZvcgogICAgIGZ1 dHVyZSBwcm9vZmluZy4KCnYzOgogICAqIFNpbXBsaWZpZWQgb2xkIHZzIG5ldyB1c2Vyc3BhY2Ug bG9naWMgZmxvdy4KICAgKiBSZWplY3QgemVybyBmYiBtb2RpZmllciB3aGVuIGZsYWcgaXMgc2V0 LgogICAqIENvcnJlY3QgcGl0Y2hfbGltaXQgY2hlY2tzLgoKU2lnbmVkLW9mZi1ieTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxNzUgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgOSArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgMzQgKysrLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAx NDYgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IGU1YzA1NzkuLjllNzI1YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKQEAgLTIxOTAsMTQgKzIxOTAsMzEgQEAgc3RhdGljIGJvb2wgbmVlZF92dGRf d2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIH0KIAogaW50Ci1pbnRlbF9mYl9hbGlnbl9oZWln aHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHRpbGlu ZykKK2ludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgaGVp Z2h0LCB1NjQgdGlsaW5nKQogewogCWludCB0aWxlX2hlaWdodDsKIAotCXRpbGVfaGVpZ2h0ID0g dGlsaW5nID8gKElTX0dFTjIoZGV2KSA/IDE2IDogOCkgOiAxOworCXRpbGVfaGVpZ2h0ID0gdGls aW5nICE9IEk5MTVfRk9STUFUX01PRF9OT05FID8KKwkJCQkJKElTX0dFTjIoZGV2KSA/IDE2IDog OCkgOiAxOwogCXJldHVybiBBTElHTihoZWlnaHQsIHRpbGVfaGVpZ2h0KTsKIH0KIAorc3RhdGlj IHU2NCBpbnRlbF9mYl9tb2RpZmllcl90aWxpbmcodTY0IG1vZCkKK3sKKwlyZXR1cm4gbW9kICYg STkxNV9GT1JNQVRfTU9EX1RJTElOR19NQVNLOworfQorCit1NjQgaW50ZWxfZmJfdGlsaW5nX21v ZGUoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCit7CisJcmV0dXJuIGZiLT5tb2RpZmllclsw XSAmIEk5MTVfRk9STUFUX01PRF9USUxJTkdfTUFTSzsKK30KKworc3RhdGljIHUzMiBpbnRlbF9m Yl90aWxpbmdfaHdfbW9kZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKK3sKKwlyZXR1cm4g KGZiLT5tb2RpZmllclswXSAmIEk5MTVfRk9STUFUX01PRF9USUxJTkdfTUFTSykgIT0KKwkgICAg ICAgSTkxNV9GT1JNQVRfTU9EX05PTkUgPyAxIDogMDsKK30KKwogaW50CiBpbnRlbF9waW5fYW5k X2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLApAQCAtMjIxMSw4ICsyMjI4LDggQEAgaW50ZWxfcGluX2FuZF9mZW5j ZV9mYl9vYmooc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAlXQVJOX09OKCFtdXRleF9pc19s b2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CiAKLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUp IHsKLQljYXNlIEk5MTVfVElMSU5HX05PTkU6CisJc3dpdGNoIChpbnRlbF9mYl90aWxpbmdfbW9k ZShmYikpIHsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9OT05FOgogCQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOSkKIAkJCWFsaWdubWVudCA9IDI1NiAqIDEwMjQ7CiAJCWVsc2UgaWYgKElT X0JST0FEV0FURVIoZGV2KSB8fCBJU19DUkVTVExJTkUoZGV2KSkKQEAgLTIyMjIsNyArMjIzOSw3 IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CQllbHNlCiAJCQlhbGlnbm1lbnQgPSA2NCAqIDEwMjQ7CiAJCWJyZWFrOwotCWNhc2UgSTkxNV9U SUxJTkdfWDoKKwljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgogCQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkKIAkJCWFsaWdubWVudCA9IDI1NiAqIDEwMjQ7CiAJCWVsc2UgewpA QCAtMjIzMCwxMSArMjI0Nyw5IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAogCQkJYWxpZ25tZW50ID0gMDsKIAkJfQogCQlicmVhazsKLQljYXNl IEk5MTVfVElMSU5HX1k6Ci0JCVdBUk4oMSwgIlkgdGlsZWQgYm8gc2xpcHBlZCB0aHJvdWdoLCBk cml2ZXIgYnVnIVxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwogCWRlZmF1bHQ6Ci0JCUJVRygpOwor CQlNSVNTSU5HX0NBU0UoaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKTsKKwkJcmV0dXJuIC1FSU5W QUw7CiAJfQogCiAJLyogTm90ZSB0aGF0IHRoZSB3L2EgYWxzbyByZXF1aXJlcyA2NCBQVEUgb2Yg cGFkZGluZyBmb2xsb3dpbmcgdGhlCkBAIC0yMjkzLDExICsyMzA4LDExIEBAIHZvaWQgaW50ZWxf dW5waW5fZmJfb2JqKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAvKiBDb21wdXRl cyB0aGUgbGluZWFyIG9mZnNldCB0byB0aGUgYmFzZSB0aWxlIGFuZCBhZGp1c3RzIHgsIHkuIGJ5 dGVzIHBlciBwaXhlbAogICogaXMgYXNzdW1lZCB0byBiZSBhIHBvd2VyLW9mLXR3by4gKi8KIHVu c2lnbmVkIGxvbmcgaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5 LAotCQkJCQkgICAgIHVuc2lnbmVkIGludCB0aWxpbmdfbW9kZSwKKwkJCQkJICAgICB1NjQgdGls aW5nX21vZGUsCiAJCQkJCSAgICAgdW5zaWduZWQgaW50IGNwcCwKIAkJCQkJICAgICB1bnNpZ25l ZCBpbnQgcGl0Y2gpCiB7Ci0JaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpIHsK KwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpIHsKIAkJdW5zaWduZWQg aW50IHRpbGVfcm93cywgdGlsZXM7CiAKIAkJdGlsZV9yb3dzID0gKnkgLyA4OwpAQCAtMjM4MSwx NCArMjM5NiwxNyBAQCBpbnRlbF9hbGxvY19wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiAJaWYgKCFvYmopCiAJCXJldHVybiBmYWxzZTsKIAotCW9iai0+dGlsaW5nX21vZGUgPSBw bGFuZV9jb25maWctPnRpbGluZzsKLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElO R19YKQorCWlmIChwbGFuZV9jb25maWctPnRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxF RCkgeworCQlvYmotPnRpbGluZ19tb2RlID0gSTkxNV9USUxJTkdfWDsKIAkJb2JqLT5zdHJpZGUg PSBjcnRjLT5iYXNlLnByaW1hcnktPmZiLT5waXRjaGVzWzBdOworCX0KIAogCW1vZGVfY21kLnBp eGVsX2Zvcm1hdCA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmItPnBpeGVsX2Zvcm1hdDsKIAltb2Rl X2NtZC53aWR0aCA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmItPndpZHRoOwogCW1vZGVfY21kLmhl aWdodCA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmItPmhlaWdodDsKKwltb2RlX2NtZC5mbGFncyA9 IERSTV9NT0RFX0ZCX01PRElGSUVSUzsKIAltb2RlX2NtZC5waXRjaGVzWzBdID0gY3J0Yy0+YmFz ZS5wcmltYXJ5LT5mYi0+cGl0Y2hlc1swXTsKKwltb2RlX2NtZC5tb2RpZmllclswXSA9IHBsYW5l X2NvbmZpZy0+dGlsaW5nOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCkBA IC0yNDYxLDcgKzI0NzksOCBAQCBpbnRlbF9maW5kX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXQob2JqKSA9PSBwbGFuZV9jb25maWctPmJhc2UpIHsKLQkJCWlmIChvYmotPnRpbGluZ19t b2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJCQlpZiAoaW50ZWxfZmJfdGlsaW5nX21vZGUoYy0+ cHJpbWFyeS0+ZmIpICE9CisJCQkgICAgSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCQkJZGV2X3By aXYtPnByZXNlcnZlX2Jpb3Nfc3dpenpsZSA9IHRydWU7CiAKIAkJCWRybV9mcmFtZWJ1ZmZlcl9y ZWZlcmVuY2UoYy0+cHJpbWFyeS0+ZmIpOwpAQCAtMjQ4Nyw2ICsyNTA2LDcgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMy IGRzcGNudHI7CiAJdTMyIHJlZyA9IERTUENOVFIocGxhbmUpOwogCWludCBwaXhlbF9zaXplOwor CXU2NCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKIAogCWlmICghaW50 ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7CiAJCUk5MTVfV1JJVEUocmVnLCAwKTsKQEAgLTI1 NTgsOCArMjU3OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCQlCVUcoKTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCAmJgotCSAgICBvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUp CisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgJiYgdGlsaW5nX21vZGUgIT0gSTkxNV9G T1JNQVRfTU9EX05PTkUpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwogCiAJaWYgKElT X0c0WChkZXYpKQpAQCAtMjU2OSw3ICsyNTg4LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVf cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNCkgewogCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9Ci0JCQlpbnRl bF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCBvYmotPnRpbGluZ19tb2RlLAorCQkJ aW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCiAJCQkJ CQkgICAgICAgcGl4ZWxfc2l6ZSwKIAkJCQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7CiAJCWxp bmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CkBAIC0yNjE5LDYgKzI2 MzgsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJdTMyIGRzcGNudHI7CiAJdTMyIHJlZyA9IERTUENOVFIocGxhbmUp OwogCWludCBwaXhlbF9zaXplOworCXU2NCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19t b2RlKGZiKTsKIAogCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7CiAJCUk5MTVf V1JJVEUocmVnLCAwKTsKQEAgLTI2NjcsNyArMjY4Nyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJQlVHKCk7CiAJ fQogCi0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwlpZiAodGls aW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5F X1RJTEVEOwogCiAJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKQpA QCAtMjY3NSw3ICsyNjk1LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+ cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwogCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0 ID0KLQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdf bW9kZSwKKwkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21v ZGUsCiAJCQkJCSAgICAgICBwaXhlbF9zaXplLAogCQkJCQkgICAgICAgZmItPnBpdGNoZXNbMF0p OwogCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CkBAIC0yNzYz LDExICsyNzgzLDExIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIFRoZSBzdHJpZGUgaXMgZWl0aGVyIGV4cHJlc3Nl ZCBhcyBhIG11bHRpcGxlIG9mIDY0IGJ5dGVzIGNodW5rcyBmb3IKIAkgKiBsaW5lYXIgYnVmZmVy cyBvciBpbiBudW1iZXIgb2YgdGlsZXMgZm9yIHRpbGVkIGJ1ZmZlcnMuCiAJICovCi0Jc3dpdGNo IChvYmotPnRpbGluZ19tb2RlKSB7Ci0JY2FzZSBJOTE1X1RJTElOR19OT05FOgorCXN3aXRjaCAo aW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKSB7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfTk9ORToK IAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gNjsKIAkJYnJlYWs7Ci0JY2FzZSBJOTE1X1RJ TElOR19YOgorCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCXBsYW5lX2N0bCB8PSBQ TEFORV9DVExfVElMRURfWDsKIAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gOTsKIAkJYnJl YWs7CkBAIC02NjEzLDkgKzY2MzMsMTAgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAl2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihwbGFu ZSkpOwogCisJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORTsKIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKIAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxF RCkKLQkJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKKwkJCXBsYW5lX2Nv bmZpZy0+dGlsaW5nID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7CiAKIAlwaXhlbF9mb3JtYXQg PSB2YWwgJiBESVNQUExBTkVfUElYRk9STUFUX01BU0s7CiAJZm91cmNjID0gaTl4eF9mb3JtYXRf dG9fZm91cmNjKHBpeGVsX2Zvcm1hdCk7CkBAIC02NjIzLDcgKzY2NDQsNyBAQCBpOXh4X2dldF9p bml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlmYi0+Yml0c19w ZXJfcGl4ZWwgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3VyY2MsIDApICogODsKIAogCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Ci0JCWlmIChwbGFuZV9jb25maWctPnRpbGluZykK KwkJaWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nICE9IEk5MTVfRk9STUFUX01PRF9OT05FKQogCQkJ b2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVPRkYocGxhbmUpKTsKIAkJZWxzZQogCQkJb2Zmc2V0 ID0gSTkxNV9SRUFEKERTUExJTk9GRihwbGFuZSkpOwpAQCAtNzY0Niw3ICs3NjY3LDkgQEAgc2t5 bGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAK IAl2YWwgPSBJOTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIDApKTsKIAlpZiAodmFsICYgUExBTkVf Q1RMX1RJTEVEX01BU0spCi0JCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsK KwkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKKwllbHNl CisJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9GT1JNQVRfTU9EX05PTkU7CiAKIAlwaXhl bF9mb3JtYXQgPSB2YWwgJiBQTEFORV9DVExfRk9STUFUX01BU0s7CiAJZm91cmNjID0gc2tsX2Zv cm1hdF90b19mb3VyY2MocGl4ZWxfZm9ybWF0LApAQCAtNzY2NiwxMCArNzY4OSwxMCBAQCBza3ls YWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAog CXZhbCA9IEk5MTVfUkVBRChQTEFORV9TVFJJREUocGlwZSwgMCkpOwogCXN3aXRjaCAocGxhbmVf Y29uZmlnLT50aWxpbmcpIHsKLQljYXNlIEk5MTVfVElMSU5HX05PTkU6CisJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfTk9ORToKIAkJc3RyaWRlX211bHQgPSA2NDsKIAkJYnJlYWs7Ci0JY2FzZSBJOTE1 X1RJTElOR19YOgorCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCXN0cmlkZV9tdWx0 ID0gNTEyOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNzc0Myw5ICs3NzY2LDEwIEBAIGlyb25s YWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAog CXZhbCA9IEk5MTVfUkVBRChEU1BDTlRSKHBpcGUpKTsKIAorCXBsYW5lX2NvbmZpZy0+dGlsaW5n ID0gSTkxNV9GT1JNQVRfTU9EX05PTkU7CiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQp CiAJCWlmICh2YWwgJiBESVNQUExBTkVfVElMRUQpCi0JCQlwbGFuZV9jb25maWctPnRpbGluZyA9 IEk5MTVfVElMSU5HX1g7CisJCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfRk9STUFUX01P RF9YX1RJTEVEOwogCiAJcGl4ZWxfZm9ybWF0ID0gdmFsICYgRElTUFBMQU5FX1BJWEZPUk1BVF9N QVNLOwogCWZvdXJjYyA9IGk5eHhfZm9ybWF0X3RvX2ZvdXJjYyhwaXhlbF9mb3JtYXQpOwpAQCAt Nzc1Niw3ICs3NzgwLDcgQEAgaXJvbmxha2VfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxM KGRldikpIHsKIAkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUE9GRlNFVChwaXBlKSk7CiAJfSBlbHNl IHsKLQkJaWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nKQorCQlpZiAocGxhbmVfY29uZmlnLT50aWxp bmcgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCQlvZmZzZXQgPSBJOTE1X1JFQUQoRFNQVElM RU9GRihwaXBlKSk7CiAJCWVsc2UKIAkJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BMSU5PRkYocGlw ZSkpOwpAQCAtOTMwNyw3ICs5MzMxLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2Zs aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRl bF9jcnRjLT5wbGFuZSkpOwogCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSk7 CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZz ZXQgfAotCQkJb2JqLT50aWxpbmdfbW9kZSk7CisJCQlpbnRlbF9mYl90aWxpbmdfaHdfbW9kZShm YikpOwogCiAJLyogWFhYIEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxp cCBpcyBzbyBmYXIKIAkgKiB1bnRlc3RlZCBvbiBub24tbmF0aXZlIG1vZGVzLCBzbyBpZ25vcmUg aXQgZm9yIG5vdy4KQEAgLTkzNDAsNyArOTM2NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9x dWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfRElTUExBWV9GTElQIHwKIAkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRj LT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+ dGlsaW5nX21vZGUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8IGlu dGVsX2ZiX3RpbGluZ19od19tb2RlKGZiKSk7CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVs X2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwogCiAJLyogQ29udHJhcnkgdG8gdGhlIHN1 Z2dlc3Rpb25zIGluIHRoZSBkb2N1bWVudGF0aW9uLApAQCAtOTQ0NCw3ICs5NDY4LDcgQEAgc3Rh dGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9 CiAKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9i aXQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAoZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGlu Z19tb2RlKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIChmYi0+cGl0Y2hlc1swXSB8IGludGVs X2ZiX3RpbGluZ19od19tb2RlKGZiKSkpOwogCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9j cnRjLT51bnBpbl93b3JrLT5ndHRfb2Zmc2V0KTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgKE1J X05PT1ApKTsKIApAQCAtOTQ4NSwxNCArOTUwOSwxMyBAQCBzdGF0aWMgdm9pZCBza2xfZG9fbW1p b19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gaW50ZWxfY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKLQlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZm ZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwotCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2JqOwogCWNvbnN0IGVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAl1MzIgY3RsLCBzdHJpZGU7CisJdTY0IHRpbGluZ19tb2Rl ID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwogCiAJY3RsID0gSTkxNV9SRUFEKFBMQU5FX0NU TChwaXBlLCAwKSk7CiAJY3RsICY9IH5QTEFORV9DVExfVElMRURfTUFTSzsKLQlpZiAob2JqLT50 aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19YKQorCWlmICh0aWxpbmdfbW9kZSA9PSBJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCkKIAkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9YOwogCiAJLyoKQEAg LTk1MDAsNyArOTUyMyw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMpCiAJICogbGluZWFyIGJ1ZmZlcnMgb3IgaW4gbnVtYmVyIG9m IHRpbGVzIGZvciB0aWxlZCBidWZmZXJzLgogCSAqLwogCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBd ID4+IDY7Ci0JaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWCkKKwlpZiAodGls aW5nX21vZGUgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCiAJCXN0cmlkZSA9IGZiLT5waXRj aGVzWzBdID4+IDk7IC8qIFggdGlsZXMgYXJlIDUxMiBieXRlcyB3aWRlICovCiAKIAkvKgpAQCAt OTUxOCwxNiArOTU0MSwxNCBAQCBzdGF0aWMgdm9pZCBpbGtfZG9fbW1pb19mbGlwKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRl bF9jcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPQot CQl0b19pbnRlbF9mcmFtZWJ1ZmZlcihpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGludGVsX2NydGMtPmJhc2UucHJpbWFyeS0+ZmI7CiAJdTMy IGRzcGNudHI7CiAJdTMyIHJlZzsKIAogCXJlZyA9IERTUENOVFIoaW50ZWxfY3J0Yy0+cGxhbmUp OwogCWRzcGNudHIgPSBJOTE1X1JFQUQocmVnKTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9 IEk5MTVfVElMSU5HX05PTkUpCisJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSAhPSBJOTE1 X0ZPUk1BVF9NT0RfTk9ORSkKIAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7CiAJZWxzZQog CQlkc3BjbnRyICY9IH5ESVNQUExBTkVfVElMRUQ7CkBAIC05NjI3LDExICs5NjQ4LDExIEBAIHN0 YXRpYyBpbnQgaW50ZWxfZ2VuOV9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CXJldHVybiAtRU5PREVWOwogCX0KIAotCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkgewotCWNh c2UgSTkxNV9USUxJTkdfTk9ORToKKwlzd2l0Y2ggKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSkg eworCWNhc2UgSTkxNV9GT1JNQVRfTU9EX05PTkU6CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBd ID4+IDY7CiAJCWJyZWFrOwotCWNhc2UgSTkxNV9USUxJTkdfWDoKKwljYXNlIEk5MTVfRk9STUFU X01PRF9YX1RJTEVEOgogCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA5OwogCQlicmVhazsK IAlkZWZhdWx0OgpAQCAtOTY1NSw3ICs5Njc2LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW45X3F1 ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7CiAKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFu ZSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgb2JqLT50aWxpbmdfbW9k ZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgaW50ZWxfZmJfdGlsaW5n X2h3X21vZGUoZmIpKTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+dW5waW5f d29yay0+Z3R0X29mZnNldCk7CiAKIAlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxf Y3J0Yyk7CkBAIC05ODMxLDcgKzk4NTIsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK IAkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tCQ1NdOwotCQlpZiAob2JqLT50aWxpbmdfbW9kZSAh PSBpbnRlbF9mYl9vYmood29yay0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpCisJCWlmIChpbnRlbF9m Yl90aWxpbmdfbW9kZShmYikgIT0KKwkJICAgIGludGVsX2ZiX3RpbGluZ19tb2RlKHdvcmstPm9s ZF9mYikpCiAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgdGlsaW5nICov CiAJCQlyaW5nID0gTlVMTDsKIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hB U1dFTEwoZGV2KSkgewpAQCAtMTIyMDgsNyArMTIyMzAsOCBAQCBpbnRlbF9jaGVja19jdXJzb3Jf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAkvKiB3ZSBvbmx5IG5lZWQgdG8gcGlu IGluc2lkZSBHVFQgaWYgY3Vyc29yIGlzIG5vbi1waHkgKi8KIAltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Ci0JaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNh bCAmJiBvYmotPnRpbGluZ19tb2RlKSB7CisJaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9u ZWVkc19waHlzaWNhbCAmJgorCSAgICBpbnRlbF9mYl90aWxpbmdfbW9kZShmYikgIT0gSTkxNV9G T1JNQVRfTU9EX05PTkUpIHsKIAkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIGNhbm5vdCBiZSB0aWxl ZFxuIik7CiAJCXJldCA9IC1FSU5WQUw7CiAJfQpAQCAtMTI2ODksMTMgKzEyNzEyLDU2IEBAIHN0 YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog ewogCWludCBhbGlnbmVkX2hlaWdodDsKIAlpbnQgcGl0Y2hfbGltaXQ7CisJdTY0IHRpbGluZ19t b2RlOwogCWludCByZXQ7CiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0 X211dGV4KSk7CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19ZKSB7Ci0J CURSTV9ERUJVRygiaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCB0aWxpbmcgWVxuIik7Ci0JCXJl dHVybiAtRUlOVkFMOworCS8qIEdldCB0aWxpbmcgbW9kZSBmcm9tIGZiIG1vZGlmaWVyIGlmIHNl dCwgb3IgZnJvbSB0aGUgb2JqZWN0IHdpdGgKKwkgKiBsZWdhY3kgdXNlcnNwYWNlLgorCSAqLwor CWlmIChtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJRklFUlMpIHsKKwkJdGlsaW5n X21vZGUgPSBpbnRlbF9mYl9tb2RpZmllcl90aWxpbmcobW9kZV9jbWQtPm1vZGlmaWVyWzBdKTsK KworCQlpZiAoIXRpbGluZ19tb2RlKSB7CisJCQlEUk1fRVJST1IoIlplcm8gZmIgbW9kaWZpZXIh XG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJLyogRW5zdXJlIG5ldyB1c2Vyc3Bh Y2UgaXMgdXNpbmcgdGhlIGludGVyZmFjZSBjb3JyZWN0bHkgLSBvbmx5CisJCSAqIGxlZ2FjeSB1 c2FnZSBvZiBzZXRfdGlsaW5nKCkgaXMgYWxsb3dlZCB3aXRoIHRoZSBuZXcgZmIKKwkJICogbW9k aWZpZXIgdGlsaW5nLgorCQkgKi8KKwkJaWYgKCEob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJ TElOR19OT05FIHx8CisJCSAgICAgIG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWCkp IHsKKwkJCURSTV9FUlJPUigiT2JqZWN0IG5vdCBsaW5lYXIgb3IgWCB0aWxlZCFcbiIpOworCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlpZiAob2JqLT50aWxpbmdfbW9kZSAmJgorCQkgICAg dGlsaW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpIHsKKwkJCURSTV9FUlJPUigK KwkJCQkgICJPYmplY3QgYW5kIGZiIHRpbGluZyBtaXNtYXRjaCEgKCVsbHgpXG4iLAorCQkJCSAg dGlsaW5nX21vZGUpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9IGVsc2UgeworCQlzd2l0 Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKKwkJY2FzZSBJOTE1X1RJTElOR19OT05FOgorCQkJdGls aW5nX21vZGUgPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORTsKKwkJCWJyZWFrOworCQljYXNlIEk5MTVf VElMSU5HX1g6CisJCQl0aWxpbmdfbW9kZSA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOworCQkJ YnJlYWs7CisJCWNhc2UgSTkxNV9USUxJTkdfWToKKwkJCURSTV9ERUJVRygiaGFyZHdhcmUgZG9l cyBub3Qgc3VwcG9ydCB0aWxpbmcgWVxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJZGVmYXVs dDoKKwkJCU1JU1NJTkdfQ0FTRShvYmotPnRpbGluZ19tb2RlKTsKKwkJCXJldHVybiAtRUlOVkFM OworCQl9CisKKwkJbW9kZV9jbWQtPm1vZGlmaWVyWzBdID0gdGlsaW5nX21vZGU7CiAJfQogCiAJ aWYgKG1vZGVfY21kLT5waXRjaGVzWzBdICYgNjMpIHsKQEAgLTEyNzA3LDEyICsxMjc3MywxMiBA QCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSAmJiAhSVNfVkFMTEVZVklFVyhkZXYp KSB7CiAJCXBpdGNoX2xpbWl0ID0gMzIqMTAyNDsKIAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDQpIHsKLQkJaWYgKG9iai0+dGlsaW5nX21vZGUpCisJCWlmICh0aWxpbmdfbW9k ZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJCXBpdGNoX2xpbWl0ID0gMTYqMTAyNDsKIAkJ ZWxzZQogCQkJcGl0Y2hfbGltaXQgPSAzMioxMDI0OwogCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gMykgewotCQlpZiAob2JqLT50aWxpbmdfbW9kZSkKKwkJaWYgKHRpbGluZ19t b2RlICE9IEk5MTVfRk9STUFUX01PRF9OT05FKQogCQkJcGl0Y2hfbGltaXQgPSA4KjEwMjQ7CiAJ CWVsc2UKIAkJCXBpdGNoX2xpbWl0ID0gMTYqMTAyNDsKQEAgLTEyNzIyLDEyICsxMjc4OCwxMyBA QCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAogCWlmIChtb2RlX2NtZC0+cGl0Y2hlc1swXSA+IHBpdGNoX2xpbWl0KSB7CiAJCURSTV9E RUJVRygiJXMgcGl0Y2ggKCVkKSBtdXN0IGJlIGF0IGxlc3MgdGhhbiAlZFxuIiwKLQkJCSAgb2Jq LT50aWxpbmdfbW9kZSA/ICJ0aWxlZCIgOiAibGluZWFyIiwKKwkJCSAgdGlsaW5nX21vZGUgIT0g STkxNV9GT1JNQVRfTU9EX05PTkUgPworCQkJCSJ0aWxlZCIgOiAibGluZWFyIiwKIAkJCSAgbW9k ZV9jbWQtPnBpdGNoZXNbMF0sIHBpdGNoX2xpbWl0KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog Ci0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSAmJgorCWlmICh0aWxp bmdfbW9kZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSAmJiBvYmotPnN0cmlkZSAmJgogCSAgICBt b2RlX2NtZC0+cGl0Y2hlc1swXSAhPSBvYmotPnN0cmlkZSkgewogCQlEUk1fREVCVUcoInBpdGNo ICglZCkgbXVzdCBtYXRjaCB0aWxpbmcgc3RyaWRlICglZClcbiIsCiAJCQkgIG1vZGVfY21kLT5w aXRjaGVzWzBdLCBvYmotPnN0cmlkZSk7CkBAIC0xMjc4Miw3ICsxMjg0OSw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1 cm4gLUVJTlZBTDsKIAogCWFsaWduZWRfaGVpZ2h0ID0gaW50ZWxfZmJfYWxpZ25faGVpZ2h0KGRl diwgbW9kZV9jbWQtPmhlaWdodCwKLQkJCQkJICAgICAgIG9iai0+dGlsaW5nX21vZGUpOworCQkJ CQkgICAgICAgdGlsaW5nX21vZGUpOwogCS8qIEZJWE1FIGRybSBoZWxwZXIgZm9yIHNpemUgY2hl Y2tzIChlc3BlY2lhbGx5IHBsYW5hciBmb3JtYXRzKT8gKi8KIAlpZiAob2JqLT5iYXNlLnNpemUg PCBhbGlnbmVkX2hlaWdodCAqIG1vZGVfY21kLT5waXRjaGVzWzBdKQogCQlyZXR1cm4gLUVJTlZB TDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggZjA0OGY4Yi4uZjk2ZGM1MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgewogfTsKIAogc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnIHsKLQl1 bnNpZ25lZCBpbnQgdGlsaW5nOworCXU2NCB0aWxpbmc7CiAJaW50IHNpemU7CiAJdTMyIGJhc2U7 CiB9OwpAQCAtODc3LDggKzg3Nyw3IEBAIHZvaWQgaW50ZWxfZnJvbnRidWZmZXJfZmxpcChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWludGVsX2Zyb250YnVmZmVyX2ZsdXNoKGRldiwgZnJvbnRi dWZmZXJfYml0cyk7CiB9CiAKLWludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGhlaWdodCwKLQkJCSAgdW5zaWduZWQgaW50IHRpbGluZyk7CitpbnQg aW50ZWxfZmJfYWxpZ25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBoZWlnaHQs IHU2NCB0aWxpbmcpOwogdm9pZCBpbnRlbF9mYl9vYmpfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwgYm9vbCByZXRpcmUpOwogCiAKQEAgLTk4NCw3ICs5ODMsNyBAQCB2b2lk IGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBl IHBpcGUsIGJvb2wgc3RhdGUpOwogI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIHApIGFz c2VydF9waXBlKGQsIHAsIHRydWUpCiAjZGVmaW5lIGFzc2VydF9waXBlX2Rpc2FibGVkKGQsIHAp IGFzc2VydF9waXBlKGQsIHAsIGZhbHNlKQogdW5zaWduZWQgbG9uZyBpbnRlbF9nZW40X2NvbXB1 dGVfcGFnZV9vZmZzZXQoaW50ICp4LCBpbnQgKnksCi0JCQkJCSAgICAgdW5zaWduZWQgaW50IHRp bGluZ19tb2RlLAorCQkJCQkgICAgIHU2NCB0aWxpbmdfbW9kZSwKIAkJCQkJICAgICB1bnNpZ25l ZCBpbnQgYnBwLAogCQkJCQkgICAgIHVuc2lnbmVkIGludCBwaXRjaCk7CiB2b2lkIGludGVsX3By ZXBhcmVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CkBAIC0xMDA4LDYgKzEwMDcsOCBA QCB2b2lkIGludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwKIHZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7CiB2b2lkIGludGVsX21vZGVzZXRfcHJlY2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKIAordTY0IGludGVsX2ZiX3RpbGlu Z19tb2RlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKKwogLyogaW50ZWxfZHAuYyAqLwog dm9pZCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBvdXRwdXRfcmVn LCBlbnVtIHBvcnQgcG9ydCk7CiBib29sIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK aW5kZXggYmViZWZlNy4uZGI4MjE4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0xMTgy LDEyICsxMTgyLDkgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRj ICp1bnVzZWRfY3J0YykKIAlEUk1fREVCVUdfS01TKCJGSUZPIHdhdGVybWFya3MgLSBBOiAlZCwg QjogJWRcbiIsIHBsYW5lYV93bSwgcGxhbmViX3dtKTsKIAogCWlmIChJU19JOTE1R00oZGV2KSAm JiBlbmFibGVkKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0KLQkJb2Jq ID0gaW50ZWxfZmJfb2JqKGVuYWJsZWQtPnByaW1hcnktPmZiKTsKLQogCQkvKiBzZWxmLXJlZnJl c2ggc2VlbXMgYnVzdGVkIHdpdGggdW50aWxlZCAqLwotCQlpZiAob2JqLT50aWxpbmdfbW9kZSA9 PSBJOTE1X1RJTElOR19OT05FKQorCQlpZiAoaW50ZWxfZmJfdGlsaW5nX21vZGUoZW5hYmxlZC0+ cHJpbWFyeS0+ZmIpID09CisJCSAgICBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJCWVuYWJsZWQg PSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCAwYTUyYzQ0 Li5jNjRlODU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMjQ1LDExICsy NDUsMTEgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJQlVHKCk7CiAJfQogCi0Jc3dpdGNoIChvYmotPnRpbGlu Z19tb2RlKSB7Ci0JY2FzZSBJOTE1X1RJTElOR19OT05FOgorCXN3aXRjaCAoaW50ZWxfZmJfdGls aW5nX21vZGUoZmIpKSB7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfTk9ORToKIAkJc3RyaWRlID0g ZmItPnBpdGNoZXNbMF0gPj4gNjsKIAkJYnJlYWs7Ci0JY2FzZSBJOTE1X1RJTElOR19YOgorCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfVElM RURfWDsKIAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gOTsKIAkJYnJlYWs7CkBAIC00MTMs NiArNDEzLDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl1MzIgc3ByY3RsOwogCXVuc2lnbmVkIGxvbmcgc3Byc3Vy Zl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3Bs YW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKKwl1NjQgdGlsaW5nX21vZGUgPSBpbnRlbF9m Yl90aWxpbmdfbW9kZShmYik7CiAKIAlzcHJjdGwgPSBJOTE1X1JFQUQoU1BDTlRSKHBpcGUsIHBs YW5lKSk7CiAKQEAgLTQ3MSw3ICs0NzIsNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqLwogCXNwcmN0bCB8PSBT UF9HQU1NQV9FTkFCTEU7CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19O T05FKQorCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJc3ByY3Rs IHw9IFNQX1RJTEVEOwogCiAJc3ByY3RsIHw9IFNQX0VOQUJMRTsKQEAgLTQ4OCw3ICs0ODksNyBA QCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9j cnRjICpjcnRjLAogCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBw aXhlbF9zaXplOwogCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zm c2V0KCZ4LCAmeSwKLQkJCQkJCQlvYmotPnRpbGluZ19tb2RlLAorCQkJCQkJCXRpbGluZ19tb2Rl LAogCQkJCQkJCXBpeGVsX3NpemUsCiAJCQkJCQkJZmItPnBpdGNoZXNbMF0pOwogCWxpbmVhcl9v ZmZzZXQgLT0gc3Byc3VyZl9vZmZzZXQ7CkBAIC01MDksNyArNTEwLDcgQEAgdmx2X3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlJ OTE1X1dSSVRFKFNQU1RSSURFKHBpcGUsIHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwogCUk5MTVf V1JJVEUoU1BQT1MocGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7CiAKLQlp ZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQorCWlmICh0aWxpbmdfbW9k ZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJSTkxNV9XUklURShTUFRJTEVPRkYocGlwZSwg cGxhbmUpLCAoeSA8PCAxNikgfCB4KTsKIAllbHNlCiAJCUk5MTVfV1JJVEUoU1BMSU5PRkYocGlw ZSwgcGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKQEAgLTYxMyw2ICs2MTQsNyBAQCBpdmJfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ dTMyIHNwcmN0bCwgc3Byc2NhbGUgPSAwOwogCXVuc2lnbmVkIGxvbmcgc3Byc3VyZl9vZmZzZXQs IGxpbmVhcl9vZmZzZXQ7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+cGl4ZWxfZm9ybWF0LCAwKTsKKwl1NjQgdGlsaW5nX21vZGUgPSBpbnRlbF9mYl90aWxpbmdf bW9kZShmYik7CiAKIAlzcHJjdGwgPSBJOTE1X1JFQUQoU1BSQ1RMKHBpcGUpKTsKIApAQCAtNjUy LDcgKzY1NCw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkgKi8KIAlzcHJjdGwgfD0gU1BSSVRFX0dBTU1BX0VOQUJM RTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJaWYgKHRp bGluZ19tb2RlICE9IEk5MTVfRk9STUFUX01PRF9OT05FKQogCQlzcHJjdGwgfD0gU1BSSVRFX1RJ TEVEOwogCiAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKQEAgLTY4 MCw3ICs2ODIsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVz WzBdICsgeCAqIHBpeGVsX3NpemU7CiAJc3Byc3VyZl9vZmZzZXQgPQotCQlpbnRlbF9nZW40X2Nv bXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCBvYmotPnRpbGluZ19tb2RlLAorCQlpbnRlbF9nZW40 X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCB0aWxpbmdfbW9kZSwKIAkJCQkJICAgICAgIHBp eGVsX3NpemUsIGZiLT5waXRjaGVzWzBdKTsKIAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zm c2V0OwogCkBAIC03MDUsNyArNzA3LDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIHJlZ2lzdGVyICovCiAJaWYg KElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKIAkJSTkxNV9XUklURShTUFJP RkZTRVQocGlwZSksICh5IDw8IDE2KSB8IHgpOwotCWVsc2UgaWYgKG9iai0+dGlsaW5nX21vZGUg IT0gSTkxNV9USUxJTkdfTk9ORSkKKwllbHNlIGlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X0ZPUk1B VF9NT0RfTk9ORSkKIAkJSTkxNV9XUklURShTUFJUSUxFT0ZGKHBpcGUpLCAoeSA8PCAxNikgfCB4 KTsKIAllbHNlCiAJCUk5MTVfV1JJVEUoU1BSTElOT0ZGKHBpcGUpLCBsaW5lYXJfb2Zmc2V0KTsK QEAgLTgxOCw2ICs4MjAsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdW5zaWduZWQgbG9uZyBkdnNzdXJmX29mZnNl dCwgbGluZWFyX29mZnNldDsKIAl1MzIgZHZzY250ciwgZHZzc2NhbGU7CiAJaW50IHBpeGVsX3Np emUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKKwl1NjQgdGls aW5nX21vZGUgPSBpbnRlbF9mYl90aWxpbmdfbW9kZShmYik7CiAKIAlkdnNjbnRyID0gSTkxNV9S RUFEKERWU0NOVFIocGlwZSkpOwogCkBAIC04NTcsNyArODYwLDcgQEAgaWxrX3VwZGF0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqLwog CWR2c2NudHIgfD0gRFZTX0dBTU1BX0VOQUJMRTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9 IEk5MTVfVElMSU5HX05PTkUpCisJaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfRk9STUFUX01PRF9O T05FKQogCQlkdnNjbnRyIHw9IERWU19USUxFRDsKIAogCWlmIChJU19HRU42KGRldikpCkBAIC04 ODAsNyArODgzLDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwg c3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hl c1swXSArIHggKiBwaXhlbF9zaXplOwogCWR2c3N1cmZfb2Zmc2V0ID0KLQkJaW50ZWxfZ2VuNF9j b21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9kZSwKKwkJaW50ZWxfZ2Vu NF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCiAJCQkJCSAgICAgICBw aXhlbF9zaXplLCBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBkdnNzdXJmX29m ZnNldDsKIApAQCAtODk3LDcgKzkwMCw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlJOTE1X1dSSVRFKERWU1NUUklE RShwaXBlKSwgZmItPnBpdGNoZXNbMF0pOwogCUk5MTVfV1JJVEUoRFZTUE9TKHBpcGUpLCAoY3J0 Y195IDw8IDE2KSB8IGNydGNfeCk7CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJ TElOR19OT05FKQorCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJ STkxNV9XUklURShEVlNUSUxFT0ZGKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKIAllbHNlCiAJCUk5 MTVfV1JJVEUoRFZTTElOT0ZGKHBpcGUpLCBsaW5lYXJfb2Zmc2V0KTsKQEAgLTEwNzYsNyArMTA3 OSw2IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJh c2UuY3J0Yyk7CiAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZi OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwog CWludCBjcnRjX3gsIGNydGNfeTsKIAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRjX2g7CiAJdWlu dDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7CkBAIC0xMTA3LDkgKzExMDksOSBAQCBp bnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJfQogCiAJ LyogU3ByaXRlIHBsYW5lcyBjYW4gYmUgbGluZWFyIG9yIHgtdGlsZWQgc3VyZmFjZXMgKi8KLQlz d2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKLQkJY2FzZSBJOTE1X1RJTElOR19OT05FOgotCQlj YXNlIEk5MTVfVElMSU5HX1g6CisJc3dpdGNoIChpbnRlbF9mYl90aWxpbmdfbW9kZShmYikpIHsK KwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfTk9ORToKKwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9U SUxFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0 ZWQgdGlsaW5nIG1vZGVcbiIpOwotLSAKMi4yLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==