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: Tue, 3 Feb 2015 17:22:31 +0000 Message-ID: <1422984152-5022-4-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1422639418-28845-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422984152-5022-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id DFBAF6E36B for ; Tue, 3 Feb 2015 09:22:52 -0800 (PST) In-Reply-To: <1422984152-5022-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 IHRpbGluZwp1c2VkIGZvciBmZW5jaW5nIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgOTUgKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg fCAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAgNyArLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8IDI2ICsrKysrLS0tLS0KIDQgZmls ZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDdhM2VkNjEuLjY4MjUwMTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTIxOTgsNiArMjE5OCwxOSBAQCBpbnRlbF9mYl9h bGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGhlaWdodCwgdW5zaWduZWQg aW50IHRpbGluZykKIAlyZXR1cm4gQUxJR04oaGVpZ2h0LCB0aWxlX2hlaWdodCk7CiB9CiAKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKHU2NCBtb2QpCit7 CisJQlVJTERfQlVHX09OKChJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCAmIDB4MDBmZmZmZmZmZmZm ZmZmZkwpICE9CisJCSAgICAgSTkxNV9USUxJTkdfWCk7CisKKwlyZXR1cm4gbW9kICYgMTsKK30K KwordW5zaWduZWQgaW50IGludGVsX2ZiX3RpbGluZ19tb2RlKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiKQoreworCXJldHVybiBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlm aWVyWzBdKTsKK30KKwogaW50CiBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkJCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApAQCAtMjIx MSw3ICsyMjI0LDcgQEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4 KSk7CiAKLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKKwlzd2l0Y2ggKGludGVsX2ZiX3Rp bGluZ19tb2RlKGZiKSkgewogCWNhc2UgSTkxNV9USUxJTkdfTk9ORToKIAkJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkpCiAJCQlhbGlnbm1lbnQgPSAyNTYgKiAxMDI0OwpAQCAtMjQ0Nyw3 ICsyNDYwLDggQEAgaW50ZWxfZmluZF9wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMsCiAJCQljb250aW51ZTsKIAogCQlpZiAoaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9i aikgPT0gcGxhbmVfY29uZmlnLT5iYXNlKSB7Ci0JCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJ OTE1X1RJTElOR19OT05FKQorCQkJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGMtPnByaW1hcnkt PmZiKSAhPQorCQkJICAgIEk5MTVfVElMSU5HX05PTkUpCiAJCQkJZGV2X3ByaXYtPnByZXNlcnZl X2Jpb3Nfc3dpenpsZSA9IHRydWU7CiAKIAkJCWRybV9mcmFtZWJ1ZmZlcl9yZWZlcmVuY2UoYy0+ cHJpbWFyeS0+ZmIpOwpAQCAtMjQ3MSw2ICsyNDg1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMyIGRzcGNudHI7CiAJ dTMyIHJlZyA9IERTUENOVFIocGxhbmUpOwogCWludCBwaXhlbF9zaXplOworCXVuc2lnbmVkIGlu dCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKIAogCWlmICghaW50ZWxf Y3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7CiAJCUk5MTVfV1JJVEUocmVnLCAwKTsKQEAgLTI1NDIs OCArMjU1Nyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCQlCVUcoKTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNCAmJgotCSAgICBvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgJiYgdGlsaW5nX21vZGUgIT0gSTkxNV9USUxJ TkdfTk9ORSkKIAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7CiAKIAlpZiAoSVNfRzRYKGRl dikpCkBAIC0yNTUzLDcgKzI1NjcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA0KSB7CiAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KLQkJCWludGVsX2dlbjRf Y29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGlsaW5nX21vZGUsCisJCQlpbnRlbF9n ZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCB0aWxpbmdfbW9kZSwKIAkJCQkJCSAgICAg ICBwaXhlbF9zaXplLAogCQkJCQkJICAgICAgIGZiLT5waXRjaGVzWzBdKTsKIAkJbGluZWFyX29m ZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKQEAgLTI2MDMsNiArMjYxNyw3IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAl1MzIgZHNwY250cjsKIAl1MzIgcmVnID0gRFNQQ05UUihwbGFuZSk7CiAJaW50 IHBpeGVsX3NpemU7CisJdW5zaWduZWQgaW50IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5n X21vZGUoZmIpOwogCiAJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpIHsKIAkJSTkx NV9XUklURShyZWcsIDApOwpAQCAtMjY1MSw3ICsyNjY2LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxh a2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlCVUcoKTsK IAl9CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQorCWlmICh0 aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQogCQlkc3BjbnRyIHw9IERJU1BQTEFORV9U SUxFRDsKIAogCWlmICghSVNfSEFTV0VMTChkZXYpICYmICFJU19CUk9BRFdFTEwoZGV2KSkKQEAg LTI2NTksNyArMjY3NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBp dGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKIAlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9 Ci0JCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGlsaW5nX21v ZGUsCisJCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIHRpbGluZ19tb2Rl LAogCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwKIAkJCQkJICAgICAgIGZiLT5waXRjaGVzWzBdKTsK IAlsaW5lYXJfb2Zmc2V0IC09IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0OwpAQCAtMjc0Nyw3 ICsyNzYyLDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJICogVGhlIHN0cmlkZSBpcyBlaXRoZXIgZXhwcmVzc2VkIGFz IGEgbXVsdGlwbGUgb2YgNjQgYnl0ZXMgY2h1bmtzIGZvcgogCSAqIGxpbmVhciBidWZmZXJzIG9y IGluIG51bWJlciBvZiB0aWxlcyBmb3IgdGlsZWQgYnVmZmVycy4KIAkgKi8KLQlzd2l0Y2ggKG9i ai0+dGlsaW5nX21vZGUpIHsKKwlzd2l0Y2ggKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSkgewog CWNhc2UgSTkxNV9USUxJTkdfTk9ORToKIAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gNjsK IAkJYnJlYWs7CkBAIC05Mjg4LDcgKzkzMDMsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVl dWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5F KGludGVsX2NydGMtPnBsYW5lKSk7CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVz WzBdKTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0 X29mZnNldCB8Ci0JCQlvYmotPnRpbGluZ19tb2RlKTsKKwkJCWludGVsX2ZiX3RpbGluZ19tb2Rl KGZiKSk7CiAKIAkvKiBYWFggRW5hYmxpbmcgdGhlIHBhbmVsLWZpdHRlciBhY3Jvc3MgcGFnZS1m bGlwIGlzIHNvIGZhcgogCSAqIHVudGVzdGVkIG9uIG5vbi1uYXRpdmUgbW9kZXMsIHNvIGlnbm9y ZSBpdCBmb3Igbm93LgpAQCAtOTMyMSw3ICs5MzM2LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW42 X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2Ny dGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdIHwgb2Jq LT50aWxpbmdfbW9kZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdIHwg aW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxf Y3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7CiAKIAkvKiBDb250cmFyeSB0byB0aGUgc3Vn Z2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24sCkBAIC05NDI1LDcgKzk0NDAsNyBAQCBzdGF0 aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0K IAogCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lX2Jp dCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5n X21vZGUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgKGZiLT5waXRjaGVzWzBdIHwgaW50ZWxf ZmJfdGlsaW5nX21vZGUoZmIpKSk7CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMt PnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwogCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfTk9P UCkpOwogCkBAIC05NDY2LDE0ICs5NDgxLDEzIEBAIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2Zs aXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGludGVsX2NydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBp bnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiOwotCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAq aW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7CiAJY29uc3QgZW51bSBwaXBlIHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwogCXUzMiBjdGwsIHN0cmlkZTsKKwl1bnNpZ25lZCBpbnQgdGlsaW5n X21vZGUgPSBpbnRlbF9mYl90aWxpbmdfbW9kZShmYik7CiAKIAljdGwgPSBJOTE1X1JFQUQoUExB TkVfQ1RMKHBpcGUsIDApKTsKIAljdGwgJj0gflBMQU5FX0NUTF9USUxFRF9NQVNLOwotCWlmIChv YmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCisJaWYgKHRpbGluZ19tb2RlID09IEk5 MTVfVElMSU5HX1gpCiAJCWN0bCB8PSBQTEFORV9DVExfVElMRURfWDsKIAogCS8qCkBAIC05NDgx LDcgKzk0OTUsNyBAQCBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQogCSAqIGxpbmVhciBidWZmZXJzIG9yIGluIG51bWJlciBvZiB0aWxl cyBmb3IgdGlsZWQgYnVmZmVycy4KIAkgKi8KIAlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA2 OwotCWlmIChvYmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCisJaWYgKHRpbGluZ19t b2RlID09IEk5MTVfVElMSU5HX1gpCiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDk7IC8q IFggdGlsZXMgYXJlIDUxMiBieXRlcyB3aWRlICovCiAKIAkvKgpAQCAtOTQ5OSwxNiArOTUxMywx NCBAQCBzdGF0aWMgdm9pZCBpbGtfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRl djsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwotCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPQotCQl0b19pbnRlbF9mcmFt ZWJ1ZmZlcihpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IGludGVsX2NydGMtPmJhc2UucHJpbWFyeS0+ZmI7CiAJdTMyIGRzcGNudHI7CiAJdTMy IHJlZzsKIAogCXJlZyA9IERTUENOVFIoaW50ZWxfY3J0Yy0+cGxhbmUpOwogCWRzcGNudHIgPSBJ OTE1X1JFQUQocmVnKTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05P TkUpCisJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSAhPSBJOTE1X1RJTElOR19OT05FKQog CQlkc3BjbnRyIHw9IERJU1BQTEFORV9USUxFRDsKIAllbHNlCiAJCWRzcGNudHIgJj0gfkRJU1BQ TEFORV9USUxFRDsKQEAgLTk1OTEsNiArOTYwMyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuOV9x dWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXVpbnQzMl90IHBsYW5lID0gMCwg c3RyaWRlOworCXVuc2lnbmVkIGludCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2Rl KGZiKTsKIAlpbnQgcmV0OwogCiAJc3dpdGNoKGludGVsX2NydGMtPnBpcGUpIHsKQEAgLTk2MDgs NyArOTYyMSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuOV9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAotCXN3aXRjaCAob2JqLT50aWxp bmdfbW9kZSkgeworCXN3aXRjaCAodGlsaW5nX21vZGUpIHsKIAljYXNlIEk5MTVfVElMSU5HX05P TkU6CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7CiAJCWJyZWFrOwpAQCAtOTYzNiw3 ICs5NjQ5LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW45X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CiAKIAlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZSk7Ci0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHN0cmlkZSA8PCA2IHwgb2JqLT50aWxpbmdfbW9kZSk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHN0cmlkZSA8PCA2IHwgdGlsaW5nX21vZGUpOwogCWludGVsX3JpbmdfZW1pdChyaW5n LCBpbnRlbF9jcnRjLT51bnBpbl93b3JrLT5ndHRfb2Zmc2V0KTsKIAogCWludGVsX21hcmtfcGFn ZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjKTsKQEAgLTk4MTEsNyArOTgyNCw4IEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkgewogCQlyaW5nID0gJmRldl9wcml2LT5yaW5nW0JDU107Ci0JCWlm IChvYmotPnRpbGluZ19tb2RlICE9IGludGVsX2ZiX29iaih3b3JrLT5vbGRfZmIpLT50aWxpbmdf bW9kZSkKKwkJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKSAhPQorCQkgICAgaW50ZWxfZmJf dGlsaW5nX21vZGUod29yay0+b2xkX2ZiKSkKIAkJCS8qIHZsdjogRElTUExBWV9GTElQIGZhaWxz IHRvIGNoYW5nZSB0aWxpbmcgKi8KIAkJCXJpbmcgPSBOVUxMOwogCX0gZWxzZSBpZiAoSVNfSVZZ QlJJREdFKGRldikgfHwgSVNfSEFTV0VMTChkZXYpKSB7CkBAIC0xMjE4Nyw3ICsxMjIwMSw4IEBA IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCS8q IHdlIG9ubHkgbmVlZCB0byBwaW4gaW5zaWRlIEdUVCBpZiBjdXJzb3IgaXMgbm9uLXBoeSAqLwog CW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAoIUlOVEVMX0lORk8oZGV2KS0+ Y3Vyc29yX25lZWRzX3BoeXNpY2FsICYmIG9iai0+dGlsaW5nX21vZGUpIHsKKwlpZiAoIUlOVEVM X0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsICYmCisJICAgIGludGVsX2ZiX3RpbGlu Z19tb2RlKGZiKSkgewogCQlEUk1fREVCVUdfS01TKCJjdXJzb3IgY2Fubm90IGJlIHRpbGVkXG4i KTsKIAkJcmV0ID0gLUVJTlZBTDsKIAl9CkBAIC0xMjY2OCw2ICsxMjY4Myw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogewogCWlu dCBhbGlnbmVkX2hlaWdodDsKIAlpbnQgcGl0Y2hfbGltaXQ7CisJdW5zaWduZWQgaW50IHRpbGlu Z19tb2RlID0gSTkxNV9USUxJTkdfTk9ORTsKIAlpbnQgcmV0OwogCiAJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOwpAQCAtMTI2NzcsNiArMTI2OTMsMjkgQEAg c3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAorCS8qIElmIG9iaiBpcyB0aWxlZCBhbmQgZmIgbW9k aWZpZXIgbm90IHNldCBwcm9wYWdhdGUgaXQgaW4KKwkgKiBmb3IgYmFja3dhcmQgY29tcGF0aWJp bGl0eSB3aXRoIG9sZCB1c2Vyc3BhY2UuCisJICovCisJaWYgKG9iai0+dGlsaW5nX21vZGUgJiYg IShtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJRklFUlMpKSB7CisJCXRpbGluZ19t b2RlID0gb2JqLT50aWxpbmdfbW9kZTsKKwkJbW9kZV9jbWQtPm1vZGlmaWVyWzBdID0gSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQ7CisJfQorCisJLyogR2V0IHRpbGluZyBtb2RlIGZyb20gZmIgbW9k aWZpZXIgaWYgc2V0LiAqLworCWlmIChtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJ RklFUlMpCisJCXRpbGluZ19tb2RlID0gaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKG1vZGVf Y21kLT5tb2RpZmllclswXSk7CisKKwkvKiBFbnN1cmUgbmV3IHVzZXJzcGFjZSBpcyB1c2luZyB0 aGUgaW50ZXJmYWNlIGNvcnJlY3RseSBieSBvbmx5CisJICogYWxsb3dpbmcgb2xkIHVzYWdlIG9m IHNldF90aWxpbmcgaWYgaXQgbWF0Y2hlcyB3aXRoIHRoZQorCSAqIGZiIG1vZGlmaWVyIHRpbGlu Zy4KKwkgKi8KKwlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FICYmCisJ ICAgIG9iai0+dGlsaW5nX21vZGUgIT0gdGlsaW5nX21vZGUpIHsKKwkJRFJNX0VSUk9SKCJUaWxp bmcgbW9kaWZpZXIgbWlzbWF0Y2ggJXUgdnMgb2JqICV1IVxuIiwKKwkJCQl0aWxpbmdfbW9kZSwg b2JqLT50aWxpbmdfbW9kZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCWlmIChtb2RlX2Nt ZC0+cGl0Y2hlc1swXSAmIDYzKSB7CiAJCURSTV9ERUJVRygicGl0Y2ggKCVkKSBtdXN0IGJlIGF0 IGxlYXN0IDY0IGJ5dGUgYWxpZ25lZFxuIiwKIAkJCSAgbW9kZV9jbWQtPnBpdGNoZXNbMF0pOwpA QCAtMTI2ODYsMTIgKzEyNzI1LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1 ICYmICFJU19WQUxMRVlWSUVXKGRldikpIHsKIAkJcGl0Y2hfbGltaXQgPSAzMioxMDI0OwogCX0g ZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewotCQlpZiAob2JqLT50aWxpbmdf bW9kZSkKKwkJaWYgKHRpbGluZ19tb2RlKQogCQkJcGl0Y2hfbGltaXQgPSAxNioxMDI0OwogCQll bHNlCiAJCQlwaXRjaF9saW1pdCA9IDMyKjEwMjQ7CiAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSAzKSB7Ci0JCWlmIChvYmotPnRpbGluZ19tb2RlKQorCQlpZiAodGlsaW5nX21v ZGUpCiAJCQlwaXRjaF9saW1pdCA9IDgqMTAyNDsKIAkJZWxzZQogCQkJcGl0Y2hfbGltaXQgPSAx NioxMDI0OwpAQCAtMTI3MDEsMTIgKzEyNzQwLDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVi dWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJaWYgKG1vZGVfY21kLT5waXRj aGVzWzBdID4gcGl0Y2hfbGltaXQpIHsKIAkJRFJNX0RFQlVHKCIlcyBwaXRjaCAoJWQpIG11c3Qg YmUgYXQgbGVzcyB0aGFuICVkXG4iLAotCQkJICBvYmotPnRpbGluZ19tb2RlID8gInRpbGVkIiA6 ICJsaW5lYXIiLAorCQkJICB0aWxpbmdfbW9kZSA/ICJ0aWxlZCIgOiAibGluZWFyIiwKIAkJCSAg bW9kZV9jbWQtPnBpdGNoZXNbMF0sIHBpdGNoX2xpbWl0KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSAmJgorCWlmICh0 aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FICYmIG9iai0+c3RyaWRlICYmCiAJICAgIG1v ZGVfY21kLT5waXRjaGVzWzBdICE9IG9iai0+c3RyaWRlKSB7CiAJCURSTV9ERUJVRygicGl0Y2gg KCVkKSBtdXN0IG1hdGNoIHRpbGluZyBzdHJpZGUgKCVkKVxuIiwKIAkJCSAgbW9kZV9jbWQtPnBp dGNoZXNbMF0sIG9iai0+c3RyaWRlKTsKQEAgLTEyNzYxLDcgKzEyODAwLDcgQEAgc3RhdGljIGlu dCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVy biAtRUlOVkFMOwogCiAJYWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoZGV2 LCBtb2RlX2NtZC0+aGVpZ2h0LAotCQkJCQkgICAgICAgb2JqLT50aWxpbmdfbW9kZSk7CisJCQkJ CSAgICAgICB0aWxpbmdfbW9kZSk7CiAJLyogRklYTUUgZHJtIGhlbHBlciBmb3Igc2l6ZSBjaGVj a3MgKGVzcGVjaWFsbHkgcGxhbmFyIGZvcm1hdHMpPyAqLwogCWlmIChvYmotPmJhc2Uuc2l6ZSA8 IGFsaWduZWRfaGVpZ2h0ICogbW9kZV9jbWQtPnBpdGNoZXNbMF0pCiAJCXJldHVybiAtRUlOVkFM OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBmMDQ4ZjhiLi5iNDBkYWQ4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTAwOCw2ICsxMDA4LDggQEAgdm9pZCBpbnRlbF9tb2Rl X2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiB2b2lkIGlu dGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwog dm9pZCBpbnRlbF9tb2Rlc2V0X3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSk7CiAKK3Vuc2lnbmVkIGludCBpbnRlbF9mYl90aWxpbmdfbW9kZShz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CisKIC8qIGludGVsX2RwLmMgKi8KIHZvaWQgaW50 ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgb3V0cHV0X3JlZywgZW51bSBw b3J0IHBvcnQpOwogYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDZl Y2U2NjMuLmRlOWU0MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMTE4MiwxMiArMTE4 Miw5IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2Vk X2NydGMpCiAJRFJNX0RFQlVHX0tNUygiRklGTyB3YXRlcm1hcmtzIC0gQTogJWQsIEI6ICVkXG4i LCBwbGFuZWFfd20sIHBsYW5lYl93bSk7CiAKIAlpZiAoSVNfSTkxNUdNKGRldikgJiYgZW5hYmxl ZCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCi0JCW9iaiA9IGludGVs X2ZiX29iaihlbmFibGVkLT5wcmltYXJ5LT5mYik7Ci0KIAkJLyogc2VsZi1yZWZyZXNoIHNlZW1z IGJ1c3RlZCB3aXRoIHVudGlsZWQgKi8KLQkJaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9U SUxJTkdfTk9ORSkKKwkJaWYgKGludGVsX2ZiX3RpbGluZ19tb2RlKGVuYWJsZWQtPnByaW1hcnkt PmZiKSA9PQorCQkgICAgSTkxNV9USUxJTkdfTk9ORSkKIAkJCWVuYWJsZWQgPSBOVUxMOwogCX0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCAwYTUyYzQ0Li44Zjg5NzY2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHNrbF91 cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCUJVRygpOwogCX0KIAotCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkgeworCXN3 aXRjaCAoaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKSB7CiAJY2FzZSBJOTE1X1RJTElOR19OT05F OgogCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA2OwogCQlicmVhazsKQEAgLTQxMyw2ICs0 MTMsNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCXUzMiBzcHJjdGw7CiAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29m ZnNldCwgbGluZWFyX29mZnNldDsKIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVf Y3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOworCXVuc2lnbmVkIGludCB0aWxpbmdfbW9kZSA9IGlu dGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKIAogCXNwcmN0bCA9IEk5MTVfUkVBRChTUENOVFIocGlw ZSwgcGxhbmUpKTsKIApAQCAtNDcxLDcgKzQ3Miw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICovCiAJc3ByY3Rs IHw9IFNQX0dBTU1BX0VOQUJMRTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElM SU5HX05PTkUpCisJaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCiAJCXNwcmN0 bCB8PSBTUF9USUxFRDsKIAogCXNwcmN0bCB8PSBTUF9FTkFCTEU7CkBAIC00ODgsNyArNDg5LDcg QEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAogCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICog cGl4ZWxfc2l6ZTsKIAlzcHJzdXJmX29mZnNldCA9IGludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29m ZnNldCgmeCwgJnksCi0JCQkJCQkJb2JqLT50aWxpbmdfbW9kZSwKKwkJCQkJCQl0aWxpbmdfbW9k ZSwKIAkJCQkJCQlwaXhlbF9zaXplLAogCQkJCQkJCWZiLT5waXRjaGVzWzBdKTsKIAlsaW5lYXJf b2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0OwpAQCAtNTA5LDcgKzUxMCw3IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ STkxNV9XUklURShTUFNUUklERShwaXBlLCBwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKIAlJOTE1 X1dSSVRFKFNQUE9TKHBpcGUsIHBsYW5lKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwogCi0J aWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwlpZiAodGlsaW5nX21v ZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKIAkJSTkxNV9XUklURShTUFRJTEVPRkYocGlwZSwgcGxh bmUpLCAoeSA8PCAxNikgfCB4KTsKIAllbHNlCiAJCUk5MTVfV1JJVEUoU1BMSU5PRkYocGlwZSwg cGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKQEAgLTYxMyw2ICs2MTQsNyBAQCBpdmJfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMy IHNwcmN0bCwgc3Byc2NhbGUgPSAwOwogCXVuc2lnbmVkIGxvbmcgc3Byc3VyZl9vZmZzZXQsIGxp bmVhcl9vZmZzZXQ7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+ cGl4ZWxfZm9ybWF0LCAwKTsKKwl1bnNpZ25lZCBpbnQgdGlsaW5nX21vZGUgPSBpbnRlbF9mYl90 aWxpbmdfbW9kZShmYik7CiAKIAlzcHJjdGwgPSBJOTE1X1JFQUQoU1BSQ1RMKHBpcGUpKTsKIApA QCAtNjUyLDcgKzY1NCw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkgKi8KIAlzcHJjdGwgfD0gU1BSSVRFX0dBTU1B X0VOQUJMRTsKIAotCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJ aWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCiAJCXNwcmN0bCB8PSBTUFJJVEVf VElMRUQ7CiAKIAlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQpAQCAt NjgwLDcgKzY4Miw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNo ZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKIAlzcHJzdXJmX29mZnNldCA9Ci0JCWludGVsX2dlbjRf Y29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGlsaW5nX21vZGUsCisJCWludGVsX2dl bjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIHRpbGluZ19tb2RlLAogCQkJCQkgICAgICAg cGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwogCWxpbmVhcl9vZmZzZXQgLT0gc3Byc3VyZl9v ZmZzZXQ7CiAKQEAgLTcwNSw3ICs3MDcsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogcmVnaXN0ZXIgKi8KIAlp ZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQogCQlJOTE1X1dSSVRFKFNQ Uk9GRlNFVChwaXBlKSwgKHkgPDwgMTYpIHwgeCk7Ci0JZWxzZSBpZiAob2JqLT50aWxpbmdfbW9k ZSAhPSBJOTE1X1RJTElOR19OT05FKQorCWVsc2UgaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElM SU5HX05PTkUpCiAJCUk5MTVfV1JJVEUoU1BSVElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7 CiAJZWxzZQogCQlJOTE1X1dSSVRFKFNQUkxJTk9GRihwaXBlKSwgbGluZWFyX29mZnNldCk7CkBA IC04MTgsNiArODIwLDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXVuc2lnbmVkIGxvbmcgZHZzc3VyZl9vZmZzZXQs IGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGR2c2NudHIsIGR2c3NjYWxlOwogCWludCBwaXhlbF9zaXpl ID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJdW5zaWduZWQg aW50IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwogCiAJZHZzY250ciA9 IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKIApAQCAtODU3LDcgKzg2MCw3IEBAIGlsa191cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAkgKi8KIAlkdnNjbnRyIHw9IERWU19HQU1NQV9FTkFCTEU7CiAKLQlpZiAob2JqLT50aWxpbmdf bW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQorCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElO R19OT05FKQogCQlkdnNjbnRyIHw9IERWU19USUxFRDsKIAogCWlmIChJU19HRU42KGRldikpCkBA IC04ODAsNyArODgzLDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0 Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwogCWR2c3N1cmZfb2Zmc2V0ID0KLQkJaW50ZWxfZ2Vu NF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9kZSwKKwkJaW50ZWxf Z2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCiAJCQkJCSAgICAg ICBwaXhlbF9zaXplLCBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBkdnNzdXJm X29mZnNldDsKIApAQCAtODk3LDcgKzkwMCw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlJOTE1X1dSSVRFKERWU1NU UklERShwaXBlKSwgZmItPnBpdGNoZXNbMF0pOwogCUk5MTVfV1JJVEUoRFZTUE9TKHBpcGUpLCAo Y3J0Y195IDw8IDE2KSB8IGNydGNfeCk7CiAKLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1 X1RJTElOR19OT05FKQorCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQogCQlJ OTE1X1dSSVRFKERWU1RJTEVPRkYocGlwZSksICh5IDw8IDE2KSB8IHgpOwogCWVsc2UKIAkJSTkx NV9XUklURShEVlNMSU5PRkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwpAQCAtMTA3Niw3ICsxMDc5 LDYgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFz ZS5jcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmUpOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7 Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJ aW50IGNydGNfeCwgY3J0Y195OwogCXVuc2lnbmVkIGludCBjcnRjX3csIGNydGNfaDsKIAl1aW50 MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKQEAgLTExMDcsNyArMTEwOSw3IEBAIGlu dGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl9CiAKIAkv KiBTcHJpdGUgcGxhbmVzIGNhbiBiZSBsaW5lYXIgb3IgeC10aWxlZCBzdXJmYWNlcyAqLwotCXN3 aXRjaCAob2JqLT50aWxpbmdfbW9kZSkgeworCXN3aXRjaCAoaW50ZWxfZmJfdGlsaW5nX21vZGUo ZmIpKSB7CiAJCWNhc2UgSTkxNV9USUxJTkdfTk9ORToKIAkJY2FzZSBJOTE1X1RJTElOR19YOgog CQkJYnJlYWs7Ci0tIAoyLjIuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK