From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 3/4] drm/i915: Use frame buffer modifiers for tiled display Date: Thu, 5 Feb 2015 14:41:54 +0000 Message-ID: <1423147315-23890-4-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1422639418-28845-1-git-send-email-tvrtko.ursulin@linux.intel.com> <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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 99E6A6E7B7 for ; Thu, 5 Feb 2015 06:42:30 -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 dHVyZSBwcm9vZmluZy4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDkgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jICB8ICAzNCArKysrLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwg NzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGU1 YzA1NzkuLmNmNjRlM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTIx OTAsMTQgKzIxOTAsMzEgQEAgc3RhdGljIGJvb2wgbmVlZF92dGRfd2Eoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIH0KIAogaW50Ci1pbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHRpbGluZykKK2ludGVsX2ZiX2FsaWdu X2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgaGVpZ2h0LCB1NjQgdGlsaW5nKQog ewogCWludCB0aWxlX2hlaWdodDsKIAotCXRpbGVfaGVpZ2h0ID0gdGlsaW5nID8gKElTX0dFTjIo ZGV2KSA/IDE2IDogOCkgOiAxOworCXRpbGVfaGVpZ2h0ID0gdGlsaW5nICE9IEk5MTVfRk9STUFU X01PRF9OT05FID8KKwkJCQkJKElTX0dFTjIoZGV2KSA/IDE2IDogOCkgOiAxOwogCXJldHVybiBB TElHTihoZWlnaHQsIHRpbGVfaGVpZ2h0KTsKIH0KIAorc3RhdGljIHU2NCBpbnRlbF9mYl9tb2Rp Zmllcl90aWxpbmcodTY0IG1vZCkKK3sKKwlyZXR1cm4gbW9kICYgSTkxNV9GT1JNQVRfTU9EX1RJ TElOR19NQVNLOworfQorCit1NjQgaW50ZWxfZmJfdGlsaW5nX21vZGUoc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIpCit7CisJcmV0dXJuIGZiLT5tb2RpZmllclswXSAmIEk5MTVfRk9STUFUX01P RF9USUxJTkdfTUFTSzsKK30KKworc3RhdGljIHUzMiBpbnRlbF9mYl90aWxpbmdfaHdfbW9kZShz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKK3sKKwlyZXR1cm4gKGZiLT5tb2RpZmllclswXSAm IEk5MTVfRk9STUFUX01PRF9USUxJTkdfTUFTSykgIT0KKwkgICAgICAgSTkxNV9GT1JNQVRfTU9E X05PTkUgPyAxIDogMDsKK30KKwogaW50CiBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApA QCAtMjIxMSw4ICsyMjI4LDggQEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0 X211dGV4KSk7CiAKLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKLQljYXNlIEk5MTVfVElM SU5HX05PTkU6CisJc3dpdGNoIChpbnRlbF9mYl90aWxpbmdfbW9kZShmYikpIHsKKwljYXNlIEk5 MTVfRk9STUFUX01PRF9OT05FOgogCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKIAkJ CWFsaWdubWVudCA9IDI1NiAqIDEwMjQ7CiAJCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2KSB8 fCBJU19DUkVTVExJTkUoZGV2KSkKQEAgLTIyMjIsNyArMjIzOSw3IEBAIGludGVsX3Bpbl9hbmRf ZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQllbHNlCiAJCQlhbGlnbm1l bnQgPSA2NCAqIDEwMjQ7CiAJCWJyZWFrOwotCWNhc2UgSTkxNV9USUxJTkdfWDoKKwljYXNlIEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEOgogCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkK IAkJCWFsaWdubWVudCA9IDI1NiAqIDEwMjQ7CiAJCWVsc2UgewpAQCAtMjIzMCwxMSArMjI0Nyw5 IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CQkJYWxpZ25tZW50ID0gMDsKIAkJfQogCQlicmVhazsKLQljYXNlIEk5MTVfVElMSU5HX1k6Ci0J CVdBUk4oMSwgIlkgdGlsZWQgYm8gc2xpcHBlZCB0aHJvdWdoLCBkcml2ZXIgYnVnIVxuIik7Ci0J CXJldHVybiAtRUlOVkFMOwogCWRlZmF1bHQ6Ci0JCUJVRygpOworCQlNSVNTSU5HX0NBU0UoaW50 ZWxfZmJfdGlsaW5nX21vZGUoZmIpKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJLyogTm90 ZSB0aGF0IHRoZSB3L2EgYWxzbyByZXF1aXJlcyA2NCBQVEUgb2YgcGFkZGluZyBmb2xsb3dpbmcg dGhlCkBAIC0yMjkzLDExICsyMzA4LDExIEBAIHZvaWQgaW50ZWxfdW5waW5fZmJfb2JqKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAvKiBDb21wdXRlcyB0aGUgbGluZWFyIG9mZnNl dCB0byB0aGUgYmFzZSB0aWxlIGFuZCBhZGp1c3RzIHgsIHkuIGJ5dGVzIHBlciBwaXhlbAogICog aXMgYXNzdW1lZCB0byBiZSBhIHBvd2VyLW9mLXR3by4gKi8KIHVuc2lnbmVkIGxvbmcgaW50ZWxf Z2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5LAotCQkJCQkgICAgIHVuc2ln bmVkIGludCB0aWxpbmdfbW9kZSwKKwkJCQkJICAgICB1NjQgdGlsaW5nX21vZGUsCiAJCQkJCSAg ICAgdW5zaWduZWQgaW50IGNwcCwKIAkJCQkJICAgICB1bnNpZ25lZCBpbnQgcGl0Y2gpCiB7Ci0J aWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpIHsKKwlpZiAodGlsaW5nX21vZGUg IT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpIHsKIAkJdW5zaWduZWQgaW50IHRpbGVfcm93cywgdGls ZXM7CiAKIAkJdGlsZV9yb3dzID0gKnkgLyA4OwpAQCAtMjM4MSwxNCArMjM5NiwxNyBAQCBpbnRl bF9hbGxvY19wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJaWYgKCFvYmopCiAJ CXJldHVybiBmYWxzZTsKIAotCW9iai0+dGlsaW5nX21vZGUgPSBwbGFuZV9jb25maWctPnRpbGlu ZzsKLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19YKQorCWlmIChwbGFuZV9j b25maWctPnRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkgeworCQlvYmotPnRpbGlu Z19tb2RlID0gSTkxNV9USUxJTkdfWDsKIAkJb2JqLT5zdHJpZGUgPSBjcnRjLT5iYXNlLnByaW1h cnktPmZiLT5waXRjaGVzWzBdOworCX0KIAogCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGNydGMt PmJhc2UucHJpbWFyeS0+ZmItPnBpeGVsX2Zvcm1hdDsKIAltb2RlX2NtZC53aWR0aCA9IGNydGMt PmJhc2UucHJpbWFyeS0+ZmItPndpZHRoOwogCW1vZGVfY21kLmhlaWdodCA9IGNydGMtPmJhc2Uu cHJpbWFyeS0+ZmItPmhlaWdodDsKKwltb2RlX2NtZC5mbGFncyA9IERSTV9NT0RFX0ZCX01PRElG SUVSUzsKIAltb2RlX2NtZC5waXRjaGVzWzBdID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYi0+cGl0 Y2hlc1swXTsKKwltb2RlX2NtZC5tb2RpZmllclswXSA9IHBsYW5lX2NvbmZpZy0+dGlsaW5nOwog CiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCkBAIC0yNDYxLDcgKzI0NzksOCBA QCBpbnRlbF9maW5kX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAkJ CWNvbnRpbnVlOwogCiAJCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSA9PSBwbGFu ZV9jb25maWctPmJhc2UpIHsKLQkJCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5H X05PTkUpCisJCQlpZiAoaW50ZWxfZmJfdGlsaW5nX21vZGUoYy0+cHJpbWFyeS0+ZmIpICE9CisJ CQkgICAgSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCQkJZGV2X3ByaXYtPnByZXNlcnZlX2Jpb3Nf c3dpenpsZSA9IHRydWU7CiAKIAkJCWRybV9mcmFtZWJ1ZmZlcl9yZWZlcmVuY2UoYy0+cHJpbWFy eS0+ZmIpOwpAQCAtMjQ4Nyw2ICsyNTA2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMyIGRzcGNudHI7CiAJdTMyIHJl ZyA9IERTUENOVFIocGxhbmUpOwogCWludCBwaXhlbF9zaXplOworCXU2NCB0aWxpbmdfbW9kZSA9 IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKIAogCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9l bmFibGVkKSB7CiAJCUk5MTVfV1JJVEUocmVnLCAwKTsKQEAgLTI1NTgsOCArMjU3OCw3IEBAIHN0 YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRj LAogCQlCVUcoKTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCAmJgotCSAg ICBvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDQgJiYgdGlsaW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJ CWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwogCiAJaWYgKElTX0c0WChkZXYpKQpAQCAtMjU2 OSw3ICsyNTg4LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewog CQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9Ci0JCQlpbnRlbF9nZW40X2NvbXB1dGVfcGFn ZV9vZmZzZXQoJngsICZ5LCBvYmotPnRpbGluZ19tb2RlLAorCQkJaW50ZWxfZ2VuNF9jb21wdXRl X3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCiAJCQkJCQkgICAgICAgcGl4ZWxfc2l6 ZSwKIAkJCQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7CiAJCWxpbmVhcl9vZmZzZXQgLT0gaW50 ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CkBAIC0yNjE5LDYgKzI2MzgsNyBAQCBzdGF0aWMgdm9p ZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ dTMyIGRzcGNudHI7CiAJdTMyIHJlZyA9IERTUENOVFIocGxhbmUpOwogCWludCBwaXhlbF9zaXpl OworCXU2NCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKIAogCWlmICgh aW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7CiAJCUk5MTVfV1JJVEUocmVnLCAwKTsKQEAg LTI2NjcsNyArMjY4Nyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJQlVHKCk7CiAJfQogCi0JaWYgKG9iai0+dGls aW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9G T1JNQVRfTU9EX05PTkUpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwogCiAJaWYgKCFJ U19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKQpAQCAtMjY3NSw3ICsyNjk1LDcg QEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBw aXhlbF9zaXplOwogCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KLQkJaW50ZWxfZ2VuNF9j b21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9kZSwKKwkJaW50ZWxfZ2Vu NF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCiAJCQkJCSAgICAgICBw aXhlbF9zaXplLAogCQkJCQkgICAgICAgZmItPnBpdGNoZXNbMF0pOwogCWxpbmVhcl9vZmZzZXQg LT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CkBAIC0yNzYzLDExICsyNzgzLDExIEBAIHN0 YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpj cnRjLAogCSAqIFRoZSBzdHJpZGUgaXMgZWl0aGVyIGV4cHJlc3NlZCBhcyBhIG11bHRpcGxlIG9m IDY0IGJ5dGVzIGNodW5rcyBmb3IKIAkgKiBsaW5lYXIgYnVmZmVycyBvciBpbiBudW1iZXIgb2Yg dGlsZXMgZm9yIHRpbGVkIGJ1ZmZlcnMuCiAJICovCi0Jc3dpdGNoIChvYmotPnRpbGluZ19tb2Rl KSB7Ci0JY2FzZSBJOTE1X1RJTElOR19OT05FOgorCXN3aXRjaCAoaW50ZWxfZmJfdGlsaW5nX21v ZGUoZmIpKSB7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfTk9ORToKIAkJc3RyaWRlID0gZmItPnBp dGNoZXNbMF0gPj4gNjsKIAkJYnJlYWs7Ci0JY2FzZSBJOTE1X1RJTElOR19YOgorCWNhc2UgSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfVElMRURfWDsK IAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gOTsKIAkJYnJlYWs7CkBAIC02NjEzLDkgKzY2 MzMsMTAgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAKIAl2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihwbGFuZSkpOwogCisJcGxhbmVfY29u ZmlnLT50aWxpbmcgPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORTsKIAlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkKIAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxFRCkKLQkJCXBsYW5lX2NvbmZp Zy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKKwkJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQ7CiAKIAlwaXhlbF9mb3JtYXQgPSB2YWwgJiBESVNQUExBTkVf UElYRk9STUFUX01BU0s7CiAJZm91cmNjID0gaTl4eF9mb3JtYXRfdG9fZm91cmNjKHBpeGVsX2Zv cm1hdCk7CkBAIC02NjIzLDcgKzY2NDQsNyBAQCBpOXh4X2dldF9pbml0aWFsX3BsYW5lX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlmYi0+Yml0c19wZXJfcGl4ZWwgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChmb3VyY2MsIDApICogODsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA0KSB7Ci0JCWlmIChwbGFuZV9jb25maWctPnRpbGluZykKKwkJaWYgKHBsYW5lX2NvbmZp Zy0+dGlsaW5nICE9IEk5MTVfRk9STUFUX01PRF9OT05FKQogCQkJb2Zmc2V0ID0gSTkxNV9SRUFE KERTUFRJTEVPRkYocGxhbmUpKTsKIAkJZWxzZQogCQkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUExJ Tk9GRihwbGFuZSkpOwpAQCAtNzY0Niw3ICs3NjY3LDkgQEAgc2t5bGFrZV9nZXRfaW5pdGlhbF9w bGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAl2YWwgPSBJOTE1X1JFQUQo UExBTkVfQ1RMKHBpcGUsIDApKTsKIAlpZiAodmFsICYgUExBTkVfQ1RMX1RJTEVEX01BU0spCi0J CXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKKwkJcGxhbmVfY29uZmlnLT50 aWxpbmcgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKKwllbHNlCisJCXBsYW5lX2NvbmZpZy0+ dGlsaW5nID0gSTkxNV9GT1JNQVRfTU9EX05PTkU7CiAKIAlwaXhlbF9mb3JtYXQgPSB2YWwgJiBQ TEFORV9DVExfRk9STUFUX01BU0s7CiAJZm91cmNjID0gc2tsX2Zvcm1hdF90b19mb3VyY2MocGl4 ZWxfZm9ybWF0LApAQCAtNzY2NiwxMCArNzY4OSwxMCBAQCBza3lsYWtlX2dldF9pbml0aWFsX3Bs YW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCXZhbCA9IEk5MTVfUkVBRChQ TEFORV9TVFJJREUocGlwZSwgMCkpOwogCXN3aXRjaCAocGxhbmVfY29uZmlnLT50aWxpbmcpIHsK LQljYXNlIEk5MTVfVElMSU5HX05PTkU6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfTk9ORToKIAkJ c3RyaWRlX211bHQgPSA2NDsKIAkJYnJlYWs7Ci0JY2FzZSBJOTE1X1RJTElOR19YOgorCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCXN0cmlkZV9tdWx0ID0gNTEyOwogCQlicmVhazsK IAlkZWZhdWx0OgpAQCAtNzc0Myw5ICs3NzY2LDEwIEBAIGlyb25sYWtlX2dldF9pbml0aWFsX3Bs YW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCXZhbCA9IEk5MTVfUkVBRChE U1BDTlRSKHBpcGUpKTsKIAorCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9GT1JNQVRfTU9E X05PTkU7CiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCiAJCWlmICh2YWwgJiBESVNQ UExBTkVfVElMRUQpCi0JCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CisJ CQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwogCiAJcGl4 ZWxfZm9ybWF0ID0gdmFsICYgRElTUFBMQU5FX1BJWEZPUk1BVF9NQVNLOwogCWZvdXJjYyA9IGk5 eHhfZm9ybWF0X3RvX2ZvdXJjYyhwaXhlbF9mb3JtYXQpOwpAQCAtNzc1Niw3ICs3NzgwLDcgQEAg aXJvbmxha2VfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpIHsKIAkJb2Zmc2V0 ID0gSTkxNV9SRUFEKERTUE9GRlNFVChwaXBlKSk7CiAJfSBlbHNlIHsKLQkJaWYgKHBsYW5lX2Nv bmZpZy0+dGlsaW5nKQorCQlpZiAocGxhbmVfY29uZmlnLT50aWxpbmcgIT0gSTkxNV9GT1JNQVRf TU9EX05PTkUpCiAJCQlvZmZzZXQgPSBJOTE1X1JFQUQoRFNQVElMRU9GRihwaXBlKSk7CiAJCWVs c2UKIAkJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BMSU5PRkYocGlwZSkpOwpAQCAtOTMwNyw3ICs5 MzMxLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwog CWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSk7CiAJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQgfAotCQkJb2JqLT50aWxp bmdfbW9kZSk7CisJCQlpbnRlbF9mYl90aWxpbmdfaHdfbW9kZShmYikpOwogCiAJLyogWFhYIEVu YWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBzbyBmYXIKIAkgKiB1 bnRlc3RlZCBvbiBub24tbmF0aXZlIG1vZGVzLCBzbyBpZ25vcmUgaXQgZm9yIG5vdy4KQEAgLTkz NDAsNyArOTM2NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQ IHwKIAkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8IGludGVsX2ZiX3RpbGluZ19od19t b2RlKGZiKSk7CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmst Pmd0dF9vZmZzZXQpOwogCiAJLyogQ29udHJhcnkgdG8gdGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBk b2N1bWVudGF0aW9uLApAQCAtOTQ0NCw3ICs5NDY4LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW43 X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9CiAKIAlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9iaXQpOwotCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAoZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGluZ19tb2RlKSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIChmYi0+cGl0Y2hlc1swXSB8IGludGVsX2ZiX3RpbGluZ19od19tb2Rl KGZiKSkpOwogCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT51bnBpbl93b3JrLT5n dHRfb2Zmc2V0KTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgKE1JX05PT1ApKTsKIApAQCAtOTQ4 NSwxNCArOTUwOSwxMyBAQCBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRj LT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gaW50ZWxfY3J0Yy0+YmFz ZS5wcmltYXJ5LT5mYjsKLQlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9f aW50ZWxfZnJhbWVidWZmZXIoZmIpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSBpbnRlbF9mYi0+b2JqOwogCWNvbnN0IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKIAl1MzIgY3RsLCBzdHJpZGU7CisJdTY0IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5n X21vZGUoZmIpOwogCiAJY3RsID0gSTkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCAwKSk7CiAJY3Rs ICY9IH5QTEFORV9DVExfVElMRURfTUFTSzsKLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1 X1RJTElOR19YKQorCWlmICh0aWxpbmdfbW9kZSA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkK IAkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9YOwogCiAJLyoKQEAgLTk1MDAsNyArOTUyMyw3IEBA IHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMpCiAJICogbGluZWFyIGJ1ZmZlcnMgb3IgaW4gbnVtYmVyIG9mIHRpbGVzIGZvciB0aWxlZCBi dWZmZXJzLgogCSAqLwogCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7Ci0JaWYgKG9iai0+ dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWCkKKwlpZiAodGlsaW5nX21vZGUgPT0gSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQpCiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDk7IC8qIFgg dGlsZXMgYXJlIDUxMiBieXRlcyB3aWRlICovCiAKIAkvKgpAQCAtOTUxOCwxNiArOTU0MSwxNCBA QCBzdGF0aWMgdm9pZCBpbGtfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwot CXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPQotCQl0b19pbnRlbF9mcmFtZWJ1 ZmZlcihpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IGludGVsX2NydGMtPmJhc2UucHJpbWFyeS0+ZmI7CiAJdTMyIGRzcGNudHI7CiAJdTMyIHJl ZzsKIAogCXJlZyA9IERTUENOVFIoaW50ZWxfY3J0Yy0+cGxhbmUpOwogCWRzcGNudHIgPSBJOTE1 X1JFQUQocmVnKTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUp CisJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkK IAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7CiAJZWxzZQogCQlkc3BjbnRyICY9IH5ESVNQ UExBTkVfVElMRUQ7CkBAIC05NjI3LDExICs5NjQ4LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2Vu OV9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiAtRU5PREVWOwog CX0KIAotCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkgewotCWNhc2UgSTkxNV9USUxJTkdfTk9O RToKKwlzd2l0Y2ggKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSkgeworCWNhc2UgSTkxNV9GT1JN QVRfTU9EX05PTkU6CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7CiAJCWJyZWFrOwot CWNhc2UgSTkxNV9USUxJTkdfWDoKKwljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgogCQlz dHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA5OwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtOTY1 NSw3ICs5Njc2LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW45X3F1ZXVlX2ZsaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CiAKIAlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZSk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgb2JqLT50aWxpbmdfbW9kZSk7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgaW50ZWxfZmJfdGlsaW5nX2h3X21vZGUoZmIpKTsKIAlp bnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7 CiAKIAlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yyk7CkBAIC05ODMxLDcg Kzk4NTIsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAogCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKIAkJcmluZyA9ICZkZXZfcHJp di0+cmluZ1tCQ1NdOwotCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9vYmood29y ay0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpCisJCWlmIChpbnRlbF9mYl90aWxpbmdfbW9kZShmYikg IT0KKwkJICAgIGludGVsX2ZiX3RpbGluZ19tb2RlKHdvcmstPm9sZF9mYikpCiAJCQkvKiB2bHY6 IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgdGlsaW5nICovCiAJCQlyaW5nID0gTlVMTDsK IAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkgewpAQCAt MTIyMDgsNyArMTIyMzAsOCBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAKIAkvKiB3ZSBvbmx5IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYgY3Vy c29yIGlzIG5vbi1waHkgKi8KIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYg KCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCAmJiBvYmotPnRpbGluZ19t b2RlKSB7CisJaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCAmJgor CSAgICBpbnRlbF9mYl90aWxpbmdfbW9kZShmYikgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpIHsK IAkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIGNhbm5vdCBiZSB0aWxlZFxuIik7CiAJCXJldCA9IC1F SU5WQUw7CiAJfQpAQCAtMTI2ODksNiArMTI3MTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1l YnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHsKIAlpbnQgYWxpZ25lZF9oZWln aHQ7CiAJaW50IHBpdGNoX2xpbWl0OworCXU2NCB0aWxpbmdfbW9kZSA9IEk5MTVfRk9STUFUX01P RF9OT05FOwogCWludCByZXQ7CiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3Ry dWN0X211dGV4KSk7CkBAIC0xMjY5OCw2ICsxMjcyMiwyOSBAQCBzdGF0aWMgaW50IGludGVsX2Zy YW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCisJLyogSWYgb2JqIGlzIHRpbGVkIGFuZCBmYiBtb2RpZmllciBub3Qgc2V0IHByb3Bh Z2F0ZSBpdCBpbgorCSAqIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHVzZXJz cGFjZS4KKwkgKi8KKwlpZiAob2JqLT50aWxpbmdfbW9kZSAmJiAhKG1vZGVfY21kLT5mbGFncyAm IERSTV9NT0RFX0ZCX01PRElGSUVSUykpIHsKKwkJdGlsaW5nX21vZGUgPSBtb2RlX2NtZC0+bW9k aWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKKwl9CisKKwkvKiBHZXQgdGlsaW5n IG1vZGUgZnJvbSBmYiBtb2RpZmllciBpZiBzZXQuICovCisJaWYgKG1vZGVfY21kLT5mbGFncyAm IERSTV9NT0RFX0ZCX01PRElGSUVSUykKKwkJdGlsaW5nX21vZGUgPSBpbnRlbF9mYl9tb2RpZmll cl90aWxpbmcobW9kZV9jbWQtPm1vZGlmaWVyWzBdKTsKKwllbHNlCisJCW1vZGVfY21kLT5tb2Rp ZmllclswXSA9IHRpbGluZ19tb2RlOworCisJLyogRW5zdXJlIG5ldyB1c2Vyc3BhY2UgaXMgdXNp bmcgdGhlIGludGVyZmFjZSBjb3JyZWN0bHkgYnkgb25seQorCSAqIGFsbG93aW5nIG9sZCB1c2Fn ZSBvZiBzZXRfdGlsaW5nIGlmIGl0IG1hdGNoZXMgd2l0aCB0aGUKKwkgKiBmYiBtb2RpZmllciB0 aWxpbmcuCisJICovCisJaWYgKG9iai0+dGlsaW5nX21vZGUgJiYgdGlsaW5nX21vZGUgIT0gSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQpIHsKKwkJRFJNX0VSUk9SKCJPYmplY3QgKCV1KSBhbmQgZmIg KCVsbHgpIHRpbGluZyBtaXNtYXRjaCFcbiIsCisJCQkgIG9iai0+dGlsaW5nX21vZGUsIHRpbGlu Z19tb2RlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCiAJaWYgKG1vZGVfY21kLT5waXRjaGVz WzBdICYgNjMpIHsKIAkJRFJNX0RFQlVHKCJwaXRjaCAoJWQpIG11c3QgYmUgYXQgbGVhc3QgNjQg Ynl0ZSBhbGlnbmVkXG4iLAogCQkJICBtb2RlX2NtZC0+cGl0Y2hlc1swXSk7CkBAIC0xMjcwNywx MiArMTI3NTQsMTIgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUlTX1ZB TExFWVZJRVcoZGV2KSkgewogCQlwaXRjaF9saW1pdCA9IDMyKjEwMjQ7CiAJfSBlbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Ci0JCWlmIChvYmotPnRpbGluZ19tb2RlKQorCQlp ZiAodGlsaW5nX21vZGUpCiAJCQlwaXRjaF9saW1pdCA9IDE2KjEwMjQ7CiAJCWVsc2UKIAkJCXBp dGNoX2xpbWl0ID0gMzIqMTAyNDsKIAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDMpIHsKLQkJaWYgKG9iai0+dGlsaW5nX21vZGUpCisJCWlmICh0aWxpbmdfbW9kZSkKIAkJCXBp dGNoX2xpbWl0ID0gOCoxMDI0OwogCQllbHNlCiAJCQlwaXRjaF9saW1pdCA9IDE2KjEwMjQ7CkBA IC0xMjcyMiwxMiArMTI3NjksMTMgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlpZiAobW9kZV9jbWQtPnBpdGNoZXNbMF0gPiBw aXRjaF9saW1pdCkgewogCQlEUk1fREVCVUcoIiVzIHBpdGNoICglZCkgbXVzdCBiZSBhdCBsZXNz IHRoYW4gJWRcbiIsCi0JCQkgIG9iai0+dGlsaW5nX21vZGUgPyAidGlsZWQiIDogImxpbmVhciIs CisJCQkgIHRpbGluZ19tb2RlICE9IEk5MTVfRk9STUFUX01PRF9OT05FID8KKwkJCQkidGlsZWQi IDogImxpbmVhciIsCiAJCQkgIG1vZGVfY21kLT5waXRjaGVzWzBdLCBwaXRjaF9saW1pdCk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElM SU5HX05PTkUgJiYKKwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUgJiYg b2JqLT5zdHJpZGUgJiYKIAkgICAgbW9kZV9jbWQtPnBpdGNoZXNbMF0gIT0gb2JqLT5zdHJpZGUp IHsKIAkJRFJNX0RFQlVHKCJwaXRjaCAoJWQpIG11c3QgbWF0Y2ggdGlsaW5nIHN0cmlkZSAoJWQp XG4iLAogCQkJICBtb2RlX2NtZC0+cGl0Y2hlc1swXSwgb2JqLT5zdHJpZGUpOwpAQCAtMTI3ODIs NyArMTI4MzAsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlhbGlnbmVkX2hlaWdodCA9IGlu dGVsX2ZiX2FsaWduX2hlaWdodChkZXYsIG1vZGVfY21kLT5oZWlnaHQsCi0JCQkJCSAgICAgICBv YmotPnRpbGluZ19tb2RlKTsKKwkJCQkJICAgICAgIHRpbGluZ19tb2RlKTsKIAkvKiBGSVhNRSBk cm0gaGVscGVyIGZvciBzaXplIGNoZWNrcyAoZXNwZWNpYWxseSBwbGFuYXIgZm9ybWF0cyk/ICov CiAJaWYgKG9iai0+YmFzZS5zaXplIDwgYWxpZ25lZF9oZWlnaHQgKiBtb2RlX2NtZC0+cGl0Y2hl c1swXSkKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGYw NDhmOGIuLmY5NmRjNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0yNTgsNyArMjU4 LDcgQEAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKIH07CiAKIHN0cnVjdCBpbnRlbF9pbml0 aWFsX3BsYW5lX2NvbmZpZyB7Ci0JdW5zaWduZWQgaW50IHRpbGluZzsKKwl1NjQgdGlsaW5nOwog CWludCBzaXplOwogCXUzMiBiYXNlOwogfTsKQEAgLTg3Nyw4ICs4NzcsNyBAQCB2b2lkIGludGVs X2Zyb250YnVmZmVyX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpbnRlbF9mcm9udGJ1 ZmZlcl9mbHVzaChkZXYsIGZyb250YnVmZmVyX2JpdHMpOwogfQogCi1pbnQgaW50ZWxfZmJfYWxp Z25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBoZWlnaHQsCi0JCQkgIHVuc2ln bmVkIGludCB0aWxpbmcpOworaW50IGludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgaGVpZ2h0LCB1NjQgdGlsaW5nKTsKIHZvaWQgaW50ZWxfZmJfb2JqX2Zs dXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgcmV0aXJlKTsKIAogCkBA IC05ODQsNyArOTgzLDcgQEAgdm9pZCBhc3NlcnRfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKTsKICNkZWZpbmUgYXNzZXJ0 X3BpcGVfZW5hYmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCB0cnVlKQogI2RlZmluZSBhc3Nl cnRfcGlwZV9kaXNhYmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCBmYWxzZSkKIHVuc2lnbmVk IGxvbmcgaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5LAotCQkJ CQkgICAgIHVuc2lnbmVkIGludCB0aWxpbmdfbW9kZSwKKwkJCQkJICAgICB1NjQgdGlsaW5nX21v ZGUsCiAJCQkJCSAgICAgdW5zaWduZWQgaW50IGJwcCwKIAkJCQkJICAgICB1bnNpZ25lZCBpbnQg cGl0Y2gpOwogdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwpAQCAtMTAwOCw2ICsxMDA3LDggQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWco c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiB2b2lkIGludGVsX2NydGNfd2FpdF9mb3Jf cGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogdm9pZCBpbnRlbF9tb2Rlc2V0 X3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7 CiAKK3U2NCBpbnRlbF9mYl90aWxpbmdfbW9kZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7 CisKIC8qIGludGVsX2RwLmMgKi8KIHZvaWQgaW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgb3V0cHV0X3JlZywgZW51bSBwb3J0IHBvcnQpOwogYm9vbCBpbnRlbF9kcF9p bml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGJlYmVmZTcuLmRiODIxODQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwpAQCAtMTE4MiwxMiArMTE4Miw5IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCiAJRFJNX0RFQlVHX0tNUygiRklG TyB3YXRlcm1hcmtzIC0gQTogJWQsIEI6ICVkXG4iLCBwbGFuZWFfd20sIHBsYW5lYl93bSk7CiAK IAlpZiAoSVNfSTkxNUdNKGRldikgJiYgZW5hYmxlZCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOwotCi0JCW9iaiA9IGludGVsX2ZiX29iaihlbmFibGVkLT5wcmltYXJ5LT5m Yik7Ci0KIAkJLyogc2VsZi1yZWZyZXNoIHNlZW1zIGJ1c3RlZCB3aXRoIHVudGlsZWQgKi8KLQkJ aWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkKKwkJaWYgKGludGVsX2Zi X3RpbGluZ19tb2RlKGVuYWJsZWQtPnByaW1hcnktPmZiKSA9PQorCQkgICAgSTkxNV9GT1JNQVRf TU9EX05PTkUpCiAJCQllbmFibGVkID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMKaW5kZXggMGE1MmM0NC4uYzY0ZTg1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMKQEAgLTI0NSwxMSArMjQ1LDExIEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCUJVRygpOwogCX0K IAotCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkgewotCWNhc2UgSTkxNV9USUxJTkdfTk9ORToK Kwlzd2l0Y2ggKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSkgeworCWNhc2UgSTkxNV9GT1JNQVRf TU9EX05PTkU6CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7CiAJCWJyZWFrOwotCWNh c2UgSTkxNV9USUxJTkdfWDoKKwljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgogCQlwbGFu ZV9jdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1g7CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+ IDk7CiAJCWJyZWFrOwpAQCAtNDEzLDYgKzQxMyw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMyIHNwcmN0bDsK IAl1bnNpZ25lZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0OwogCWludCBwaXhl bF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJdTY0 IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwogCiAJc3ByY3RsID0gSTkx NV9SRUFEKFNQQ05UUihwaXBlLCBwbGFuZSkpOwogCkBAIC00NzEsNyArNDcyLDcgQEAgdmx2X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAkgKi8KIAlzcHJjdGwgfD0gU1BfR0FNTUFfRU5BQkxFOwogCi0JaWYgKG9iai0+dGlsaW5n X21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9GT1JN QVRfTU9EX05PTkUpCiAJCXNwcmN0bCB8PSBTUF9USUxFRDsKIAogCXNwcmN0bCB8PSBTUF9FTkFC TEU7CkBAIC00ODgsNyArNDg5LDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWxpbmVhcl9vZmZzZXQgPSB5ICog ZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKIAlzcHJzdXJmX29mZnNldCA9IGludGVs X2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksCi0JCQkJCQkJb2JqLT50aWxpbmdfbW9k ZSwKKwkJCQkJCQl0aWxpbmdfbW9kZSwKIAkJCQkJCQlwaXhlbF9zaXplLAogCQkJCQkJCWZiLT5w aXRjaGVzWzBdKTsKIAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0OwpAQCAtNTA5LDcg KzUxMCw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJSTkxNV9XUklURShTUFNUUklERShwaXBlLCBwbGFuZSksIGZi LT5waXRjaGVzWzBdKTsKIAlJOTE1X1dSSVRFKFNQUE9TKHBpcGUsIHBsYW5lKSwgKGNydGNfeSA8 PCAxNikgfCBjcnRjX3gpOwogCi0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdf Tk9ORSkKKwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCUk5MTVf V1JJVEUoU1BUSUxFT0ZGKHBpcGUsIHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7CiAJZWxzZQogCQlJ OTE1X1dSSVRFKFNQTElOT0ZGKHBpcGUsIHBsYW5lKSwgbGluZWFyX29mZnNldCk7CkBAIC02MTMs NiArNjE0LDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKIAl1bnNpZ25l ZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0OwogCWludCBwaXhlbF9zaXplID0g ZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJdTY0IHRpbGluZ19t b2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwogCiAJc3ByY3RsID0gSTkxNV9SRUFEKFNQ UkNUTChwaXBlKSk7CiAKQEAgLTY1Miw3ICs2NTQsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICovCiAJc3ByY3Rs IHw9IFNQUklURV9HQU1NQV9FTkFCTEU7CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1 X1RJTElOR19OT05FKQorCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkK IAkJc3ByY3RsIHw9IFNQUklURV9USUxFRDsKIAogCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNf QlJPQURXRUxMKGRldikpCkBAIC02ODAsNyArNjgyLDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbGluZWFyX29m ZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwogCXNwcnN1cmZfb2Zm c2V0ID0KLQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxp bmdfbW9kZSwKKwkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5n X21vZGUsCiAJCQkJCSAgICAgICBwaXhlbF9zaXplLCBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFy X29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKIApAQCAtNzA1LDcgKzcwNyw3IEBAIGl2Yl91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAkgKiByZWdpc3RlciAqLwogCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRl dikpCiAJCUk5MTVfV1JJVEUoU1BST0ZGU0VUKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKLQllbHNl IGlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJZWxzZSBpZiAodGls aW5nX21vZGUgIT0gSTkxNV9GT1JNQVRfTU9EX05PTkUpCiAJCUk5MTVfV1JJVEUoU1BSVElMRU9G RihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7CiAJZWxzZQogCQlJOTE1X1dSSVRFKFNQUkxJTk9GRihw aXBlKSwgbGluZWFyX29mZnNldCk7CkBAIC04MTgsNiArODIwLDcgQEAgaWxrX3VwZGF0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXVuc2ln bmVkIGxvbmcgZHZzc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGR2c2NudHIsIGR2 c3NjYWxlOwogCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVs X2Zvcm1hdCwgMCk7CisJdTY0IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIp OwogCiAJZHZzY250ciA9IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKIApAQCAtODU3LDcgKzg2 MCw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkgKi8KIAlkdnNjbnRyIHw9IERWU19HQU1NQV9FTkFCTEU7CiAKLQlp ZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQorCWlmICh0aWxpbmdfbW9k ZSAhPSBJOTE1X0ZPUk1BVF9NT0RfTk9ORSkKIAkJZHZzY250ciB8PSBEVlNfVElMRUQ7CiAKIAlp ZiAoSVNfR0VONihkZXYpKQpAQCAtODgwLDcgKzg4Myw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWxpbmVhcl9v ZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKIAlkdnNzdXJmX29m ZnNldCA9Ci0JCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGls aW5nX21vZGUsCisJCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIHRpbGlu Z19tb2RlLAogCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwogCWxpbmVh cl9vZmZzZXQgLT0gZHZzc3VyZl9vZmZzZXQ7CiAKQEAgLTg5Nyw3ICs5MDAsNyBAQCBpbGtfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJSTkxNV9XUklURShEVlNTVFJJREUocGlwZSksIGZiLT5waXRjaGVzWzBdKTsKIAlJOTE1X1dS SVRFKERWU1BPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwogCi0JaWYgKG9iai0+ dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwlpZiAodGlsaW5nX21vZGUgIT0gSTkx NV9GT1JNQVRfTU9EX05PTkUpCiAJCUk5MTVfV1JJVEUoRFZTVElMRU9GRihwaXBlKSwgKHkgPDwg MTYpIHwgeCk7CiAJZWxzZQogCQlJOTE1X1dSSVRFKERWU0xJTk9GRihwaXBlKSwgbGluZWFyX29m ZnNldCk7CkBAIC0xMDc2LDcgKzEwNzksNiBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gaW50ZWxfZmJfb2JqKGZiKTsKIAlpbnQgY3J0Y194LCBjcnRjX3k7CiAJdW5zaWduZWQgaW50 IGNydGNfdywgY3J0Y19oOwogCXVpbnQzMl90IHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOwpA QCAtMTEwNyw5ICsxMTA5LDkgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCX0KIAogCS8qIFNwcml0ZSBwbGFuZXMgY2FuIGJlIGxpbmVhciBvciB4 LXRpbGVkIHN1cmZhY2VzICovCi0Jc3dpdGNoIChvYmotPnRpbGluZ19tb2RlKSB7Ci0JCWNhc2Ug STkxNV9USUxJTkdfTk9ORToKLQkJY2FzZSBJOTE1X1RJTElOR19YOgorCXN3aXRjaCAoaW50ZWxf ZmJfdGlsaW5nX21vZGUoZmIpKSB7CisJCWNhc2UgSTkxNV9GT1JNQVRfTU9EX05PTkU6CisJCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCURS TV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIHRpbGluZyBtb2RlXG4iKTsKLS0gCjIuMi4yCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=