From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 6/8] drm/i915: Switch plane handling to atomic helpers (v2) Date: Thu, 13 Nov 2014 14:52:37 -0800 Message-ID: <1415919157-10629-1-git-send-email-matthew.d.roper@intel.com> References: <1415904206-22548-7-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1415904206-22548-7-git-send-email-matthew.d.roper@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 Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Tm93IHRoYXQgd2UgaGF2ZSBob29rcyB0byBlbmFibGUgdGhlIGF0b21pYyBwbGFuZSBoZWxwZXJz LCB3ZSBjYW4gdXNlCnRoZSBwbGFuZSBoZWxwZXJzIGZvciBvdXIgLnVwZGF0ZV9wbGFuZSgpIGFu ZCAuZGlzYWJsZV9wbGFuZSgpCmVudHJ5cG9pbnRzLgoKRXZlbiB0aG91Z2ggd2UnZCBhbHJlYWR5 IHJlZmFjdG9yZWQgb3VyIHBsYW5lIGhhbmRsaW5nIGNvZGUgaW50bwpjaGVjay9jb21taXQsIHdl IHN0aWxsIGhhdmUgdG8gcmV3b3JrIHNvbWUgb2YgdGhhdCBsb2dpYyBoZXJlIGFzIHdlIG1ha2UK dGhlIHRyYW5zaXRpb24uICBUaGUgYXRvbWljIHBsYW5lIGhlbHBlcnMgbm93IGNhbGwgcHJlcGFy ZV9mYi9jbGVhbnVwX2ZiCmZvciB1cywgc28gbm90ZSB0aGUgZm9sbG93aW5nOgogLSAnY29tbWl0 JyBzaG91bGQgbm8gbG9uZ2VyIHVucGluIHRoZSBvbGQgb2JqZWN0OyB0aGUgY2xlYW51cF9mYiB3 aWxsCiAgIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cwogLSBwcmVwYXJlX2ZiIG9ubHkgZ2V0cyBj YWxsZWQgd2hlbiB3ZSBhY3R1YWxseSBoYXZlIGFuIGZiLCBzbyB0aGUKICAgaW50ZXJuYWwgJ2Rp c2FibGUnIGNvZGUgbmVlZHMgdG8gdXBkYXRlIGZyb250YnVmZmVyIHRyYWNraW5nCiAtIHRoZSBj dXJzb3IgcGxhbmUgY29kZSBuZXZlciBoYWQgJ3ByZXBhcmUnIGNvZGUgc2VwYXJhdGVkIGZyb20g aXRzCiAgICdjb21taXQnIGZ1bmN0aW9uLCBzbyBhIGxvdCBvZiB0aGUgY3Vyc29yJ3MgJ2NvbW1p dCcgbmVlZHMgdG8gYmUKICAgZHJvcHBlZCBzaW5jZSBwcmVwYXJlX2ZiIGFscmVhZHkgZG9lcyBp dCBmb3IgdXMKIC0gd2l0aCBhbGwgdGhlIHBpbm5pbmcgd29yayByZW1vdmVkIGZyb20gY3Vyc29y IGNvbW1pdCwgaXQgY2FuIG5vCiAgIGxvbmdlciBmYWlsIGFuZCBzaG91bGQgcmV0dXJuIHZvaWQg cmF0aGVyIHRoYW4gaW50Cgp2MjogRml4IGNvbW1pdCBtZXNzYWdlIHR5cG8gKEJvYikKClRlc3Rj YXNlOiBpZ3Qva21zX3BsYW5lClRlc3RjYXNlOiBpZ3Qva21zX3VuaXZlcnNhbF9wbGFuZQpUZXN0 Y2FzZTogaWd0L2ttc19jdXJzb3JfY3JjCkFja25vd2xlZGdlZC1ieTogQm9iIFBhYXV3ZSA8Ym9i LmoucGFhdXdlQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5k LnJvcGVyQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgfCAyNTUgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8IDEyMiArKy0tLS0tLS0tLS0tLS0tLQogMiBmaWxl cyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAzMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDMyYTJiMTIuLjhkNWEzYjQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTgyODUsMTcgKzgyODUsMTUgQEAgc3RhdGljIGJv b2wgY3Vyc29yX3NpemVfb2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gdHJ1ZTsK IH0KIAotc3RhdGljIGludCBpbnRlbF9jcnRjX2N1cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKLQkJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJ ICAgICB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQorc3RhdGljIHZvaWQgaW50ZWxf Y3J0Y19jdXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgICAgICB1aW50MzJfdCB3aWR0aCwg dWludDMyX3QgaGVpZ2h0KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJ ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCXVuc2lnbmVkIG9sZF93aWR0aDsK IAl1aW50MzJfdCBhZGRyOwotCWludCByZXQ7CiAKIAkvKiBpZiB3ZSB3YW50IHRvIHR1cm4gb2Zm IHRoZSBjdXJzb3IgaWdub3JlIHdpZHRoIGFuZCBoZWlnaHQgKi8KIAlpZiAoIW9iaikgewpAQCAt ODMwNSw2NCArODMwMywxNCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY3Vyc29yX3NldF9vYmoo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlnb3RvIGZpbmlzaDsKIAl9CiAKLQkvKiB3ZSBvbmx5 IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYgY3Vyc29yIGlzIG5vbi1waHkgKi8KKwkvKiBwbGFu ZSBoZWxwZXIncyBwcmVwYXJlX2ZiKCkgYWxyZWFkeSBoYW5kbGVkIHBpbm5pbmcgKi8KIAltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNv cl9uZWVkc19waHlzaWNhbCkgewotCQl1bnNpZ25lZCBhbGlnbm1lbnQ7Ci0KLQkJLyoKLQkJICog R2xvYmFsIGd0dCBwdGUgcmVnaXN0ZXJzIGFyZSBzcGVjaWFsIHJlZ2lzdGVycyB3aGljaCBhY3R1 YWxseQotCQkgKiBmb3J3YXJkIHdyaXRlcyB0byBhIGNodW5rIG9mIHN5c3RlbSBtZW1vcnkuIFdo aWNoIG1lYW5zIHRoYXQKLQkJICogdGhlcmUgaXMgbm8gcmlzayB0aGF0IHRoZSByZWdpc3RlciB2 YWx1ZXMgZGlzYXBwZWFyIGFzIHNvb24KLQkJICogYXMgd2UgY2FsbCBpbnRlbF9ydW50aW1lX3Bt X3B1dCgpLCBzbyBpdCBpcyBjb3JyZWN0IHRvIHdyYXAKLQkJICogb25seSB0aGUgcGluL3VucGlu L2ZlbmNlIGFuZCBub3QgbW9yZS4KLQkJICovCi0JCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKLQotCQkvKiBOb3RlIHRoYXQgdGhlIHcvYSBhbHNvIHJlcXVpcmVzIDIgUFRFIG9mIHBh ZGRpbmcgZm9sbG93aW5nCi0JCSAqIHRoZSBiby4gV2UgY3VycmVudGx5IGZpbGwgYWxsIHVudXNl ZCBQVEUgd2l0aCB0aGUgc2hhZG93Ci0JCSAqIHBhZ2UgYW5kIHNvIHdlIHNob3VsZCBhbHdheXMg aGF2ZSB2YWxpZCBQVEUgZm9sbG93aW5nIHRoZQotCQkgKiBjdXJzb3IgcHJldmVudGluZyB0aGUg VlQtZCB3YXJuaW5nLgotCQkgKi8KLQkJYWxpZ25tZW50ID0gMDsKLQkJaWYgKG5lZWRfdnRkX3dh KGRldikpCi0JCQlhbGlnbm1lbnQgPSA2NCoxMDI0OwotCi0JCXJldCA9IGk5MTVfZ2VtX29iamVj dF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFsaWdubWVudCwgTlVMTCk7Ci0JCWlmIChyZXQp IHsKLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBtb3ZlIGN1cnNvciBibyBpbnRvIHRoZSBH VFRcbiIpOwotCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCQkJZ290byBmYWls X2xvY2tlZDsKLQkJfQotCi0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsK LQkJaWYgKHJldCkgewotCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHJlbGVhc2UgZmVuY2Ug Zm9yIGN1cnNvciIpOwotCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCQkJZ290 byBmYWlsX3VucGluOwotCQl9Ci0KKwlpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRz X3BoeXNpY2FsKQogCQlhZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7Ci0KLQkJ aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCX0gZWxzZSB7Ci0JCWludCBhbGlnbiA9 IElTX0k4MzAoZGV2KSA/IDE2ICogMTAyNCA6IDI1NjsKLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X2F0dGFjaF9waHlzKG9iaiwgYWxpZ24pOwotCQlpZiAocmV0KSB7Ci0JCQlEUk1fREVCVUdfS01T KCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0XG4iKTsKLQkJCWdvdG8gZmFpbF9sb2NrZWQ7 Ci0JCX0KKwllbHNlCiAJCWFkZHIgPSBvYmotPnBoeXNfaGFuZGxlLT5idXNhZGRyOwotCX0KIAog IGZpbmlzaDoKLQlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvKSB7Ci0JCWlmICghSU5URUxfSU5G TyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpCi0JCQlpOTE1X2dlbV9vYmplY3RfdW5waW5f ZnJvbV9kaXNwbGF5X3BsYW5lKGludGVsX2NydGMtPmN1cnNvcl9ibyk7Ci0JfQotCi0JaTkxNV9n ZW1fdHJhY2tfZmIoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvLCBvYmosCi0JCQkgIElOVEVMX0ZST05U QlVGRkVSX0NVUlNPUihwaXBlKSk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CiAKIAlvbGRfd2lkdGggPSBpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGg7CkBAIC04Mzc5LDEzICs4 MzI3LDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2N1cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAogCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRldiwgSU5URUxfRlJPTlRC VUZGRVJfQ1VSU09SKHBpcGUpKTsKIAl9Ci0KLQlyZXR1cm4gMDsKLWZhaWxfdW5waW46Ci0JaTkx NV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZShvYmopOwotZmFpbF9sb2NrZWQ6 Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JcmV0dXJuIHJldDsKIH0KIAog c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19nYW1tYV9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1 MTYgKnJlZCwgdTE2ICpncmVlbiwKQEAgLTExNTQ0LDcgKzExNDg1LDYgQEAgZGlzYWJsZV91bnBp bjoKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaTkxNV9nZW1fdHJhY2tfZmIo aW50ZWxfZmJfb2JqKHBsYW5lLT5mYiksIE5VTEwsCiAJCQkgIElOVEVMX0ZST05UQlVGRkVSX1BS SU1BUlkoaW50ZWxfY3J0Yy0+cGlwZSkpOwotCWludGVsX3VucGluX2ZiX29iaihpbnRlbF9mYl9v YmoocGxhbmUtPmZiKSk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcGxh bmUtPmZiID0gTlVMTDsKIApAQCAtMTE1NjgsNDIgKzExNTA4LDYgQEAgaW50ZWxfY2hlY2tfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkJICAgICBmYWxzZSwgdHJ1 ZSwgJnN0YXRlLT52aXNpYmxlKTsKIH0KIAotc3RhdGljIGludAotaW50ZWxfcHJlcGFyZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAotCQkJICAgIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJh c2UuY3J0YzsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwot CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCWVudW0gcGlwZSBwaXBlID0gaW50 ZWxfY3J0Yy0+cGlwZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxf ZmJfb2JqKGZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGludGVs X2ZiX29iaihwbGFuZS0+ZmIpOwotCWludCByZXQ7Ci0KLQlpbnRlbF9jcnRjX3dhaXRfZm9yX3Bl bmRpbmdfZmxpcHMoY3J0Yyk7Ci0KLQlpZiAoaW50ZWxfY3J0Y19oYXNfcGVuZGluZ19mbGlwKGNy dGMpKSB7Ci0JCURSTV9FUlJPUigicGlwZSBpcyBzdGlsbCBidXN5IHdpdGggYW4gb2xkIHBhZ2Vm bGlwXG4iKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlpZiAob2xkX29iaiAhPSBvYmopIHsK LQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlyZXQgPSBpbnRlbF9waW5fYW5k X2ZlbmNlX2ZiX29iaihwbGFuZSwgZmIsIE5VTEwpOwotCQlpZiAocmV0ID09IDApCi0JCQlpOTE1 X2dlbV90cmFja19mYihvbGRfb2JqLCBvYmosCi0JCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfUFJJ TUFSWShwaXBlKSk7Ci0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAo cmV0ICE9IDApIHsKLQkJCURSTV9ERUJVR19LTVMoInBpbiAmIGZlbmNlIGZhaWxlZFxuIik7Ci0J CQlyZXR1cm4gcmV0OwotCQl9Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiBp bnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCkBAIC0xMTYxNCw5ICsxMTUxOCw3IEBA IGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpv bGRfZmIgPSBwbGFuZS0+ZmI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGlu dGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBp bnRlbF9mYl9vYmoocGxhbmUtPmZiKTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRl LT5zcmM7CiAKQEAgLTExNjg3LDYyICsxMTU4OSw2IEBAIGludGVsX2NvbW1pdF9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlpbnRlbF91cGRhdGVfZmJjKGRldik7CiAJ CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCX0KLQotCWlmIChvbGRfZmIgJiYg b2xkX2ZiICE9IGZiKSB7Ci0JCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCi0JCQlpbnRlbF93YWl0 X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKLQotCQltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Ci0JCWludGVsX3VucGluX2ZiX29iaihvbGRfb2JqKTsKLQkJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JfQotfQotCi1zdGF0aWMgaW50Ci1pbnRlbF9w cmltYXJ5X3BsYW5lX3NldHBsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCi0JCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY3J0 Y194LCBpbnQgY3J0Y195LAotCQkJICAgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBp bnQgY3J0Y19oLAotCQkJICAgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCi0JCQkg ICAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKLXsKLQlzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgc3RhdGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwotCWludCByZXQ7Ci0KLQlzdGF0ZS5iYXNlLmNydGMgPSBjcnRjOwotCXN0 YXRlLmJhc2UuZmIgPSBmYjsKLQotCS8qIHNhbXBsZSBjb29yZGluYXRlcyBpbiAxNi4xNiBmaXhl ZCBwb2ludCAqLwotCXN0YXRlLnNyYy54MSA9IHNyY194OwotCXN0YXRlLnNyYy54MiA9IHNyY194 ICsgc3JjX3c7Ci0Jc3RhdGUuc3JjLnkxID0gc3JjX3k7Ci0Jc3RhdGUuc3JjLnkyID0gc3JjX3kg KyBzcmNfaDsKLQotCS8qIGludGVnZXIgcGl4ZWxzICovCi0Jc3RhdGUuZHN0LngxID0gY3J0Y194 OwotCXN0YXRlLmRzdC54MiA9IGNydGNfeCArIGNydGNfdzsKLQlzdGF0ZS5kc3QueTEgPSBjcnRj X3k7Ci0Jc3RhdGUuZHN0LnkyID0gY3J0Y195ICsgY3J0Y19oOwotCi0Jc3RhdGUuY2xpcC54MSA9 IDA7Ci0Jc3RhdGUuY2xpcC55MSA9IDA7Ci0Jc3RhdGUuY2xpcC54MiA9IGludGVsX2NydGMtPmFj dGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IDogMDsKLQlzdGF0ZS5jbGlwLnky ID0gaW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2ggOiAw OwotCi0Jc3RhdGUub3JpZ19zcmMgPSBzdGF0ZS5zcmM7Ci0Jc3RhdGUub3JpZ19kc3QgPSBzdGF0 ZS5kc3Q7Ci0KLQlyZXQgPSBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHBsYW5lLCAmc3RhdGUp OwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9wcmVwYXJlX3ByaW1h cnlfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlu dGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHBsYW5lLCAmc3RhdGUpOwotCi0JcmV0dXJuIDA7CiB9 CiAKIC8qIENvbW1vbiBkZXN0cnVjdGlvbiBmdW5jdGlvbiBmb3IgYm90aCBwcmltYXJ5IGFuZCBj dXJzb3IgcGxhbmVzICovCkBAIC0xMTc1NSw4ICsxMTYwMSw4IEBAIHZvaWQgaW50ZWxfcGxhbmVf ZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRl X3BsYW5lID0gaW50ZWxfcHJpbWFyeV9wbGFuZV9zZXRwbGFuZSwKLQkuZGlzYWJsZV9wbGFuZSA9 IGludGVsX3ByaW1hcnlfcGxhbmVfZGlzYWJsZSwKKwkudXBkYXRlX3BsYW5lID0gZHJtX3BsYW5l X2hlbHBlcl91cGRhdGUsCisJLmRpc2FibGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX2Rpc2Fi bGUsCiAJLmRlc3Ryb3kgPSBpbnRlbF9wbGFuZV9kZXN0cm95LAogCS5zZXRfcHJvcGVydHkgPSBp bnRlbF9wbGFuZV9zZXRfcHJvcGVydHksCiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRl bF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCkBAIC0xMTgxNiwxNSArMTE2NjIsMjIgQEAgc3RhdGlj IHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJcmV0dXJuICZwcmltYXJ5LT5iYXNlOwogfQogCi1zdGF0aWMgaW50Citz dGF0aWMgdm9pZAogaW50ZWxfY3Vyc29yX3BsYW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpCiB7CisJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lKTsKKwogCWlmICghcGxhbmUtPmZiKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOwog CiAJQlVHX09OKCFwbGFuZS0+Y3J0Yyk7CiAKLQlyZXR1cm4gaW50ZWxfY3J0Y19jdXJzb3Jfc2V0 X29iaihwbGFuZS0+Y3J0YywgTlVMTCwgMCwgMCk7CisJaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29i aihwbGFuZS0+Y3J0YywgTlVMTCwgMCwgMCk7CisKKwltdXRleF9sb2NrKCZwbGFuZS0+ZGV2LT5z dHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIp LCBOVUxMLAorCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfcGxhbmUtPnBpcGUp KTsKKwltdXRleF91bmxvY2soJnBsYW5lLT5kZXYtPnN0cnVjdF9tdXRleCk7CiB9CiAKIHN0YXRp YyBpbnQKQEAgLTExODM4LDcgKzExNjkxLDYgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5z cmM7CiAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwogCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwotCWludCBjcnRj X3csIGNydGNfaDsKIAl1bnNpZ25lZCBzdHJpZGU7CiAJaW50IHJldDsKIApAQCAtMTE4NTYsMTUg KzExNzA4LDE0IEBAIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAkJcmV0dXJuIDA7CiAKIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdl IHN1cHBvcnQgKi8KLQljcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsK LQljcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Ci0JaWYgKCFjdXJz b3Jfc2l6ZV9vayhkZXYsIGNydGNfdywgY3J0Y19oKSkgewotCQlEUk1fREVCVUcoIkN1cnNvciBk aW1lbnNpb24gbm90IHN1cHBvcnRlZFxuIik7CisJaWYgKCFjdXJzb3Jfc2l6ZV9vayhkZXYsIHN0 YXRlLT5iYXNlLmNydGNfdywgc3RhdGUtPmJhc2UuY3J0Y19oKSkgeworCQlEUk1fREVCVUcoIkN1 cnNvciBkaW1lbnNpb24gJWR4JWQgbm90IHN1cHBvcnRlZFxuIiwKKwkJCSAgc3RhdGUtPmJhc2Uu Y3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlz dHJpZGUgPSByb3VuZHVwX3Bvd19vZl90d28oY3J0Y193KSAqIDQ7Ci0JaWYgKG9iai0+YmFzZS5z aXplIDwgc3RyaWRlICogY3J0Y19oKSB7CisJc3RyaWRlID0gcm91bmR1cF9wb3dfb2ZfdHdvKHN0 YXRlLT5iYXNlLmNydGNfdykgKiA0OworCWlmIChvYmotPmJhc2Uuc2l6ZSA8IHN0cmlkZSAqIHN0 YXRlLT5iYXNlLmNydGNfaCkgewogCQlEUk1fREVCVUdfS01TKCJidWZmZXIgaXMgdG9vIHNtYWxs XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQpAQCAtMTE4ODMsNyArMTE3MzQsNyBAQCBpbnRl bF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJcmV0dXJuIHJl dDsKIH0KIAotc3RhdGljIGludAorc3RhdGljIHZvaWQKIGludGVsX2NvbW1pdF9jdXJzb3JfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqc3RhdGUpCiB7CkBAIC0xMTg5MywxMCArMTE3NDQsOSBAQCBpbnRlbF9jb21taXRfY3Vyc29y X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAJc3RydWN0IGludGVsX2ZyYW1lYnVm ZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKLQlpbnQgY3J0Y193LCBjcnRjX2g7 CiAKLQljcnRjLT5jdXJzb3JfeCA9IHN0YXRlLT5vcmlnX2RzdC54MTsKLQljcnRjLT5jdXJzb3Jf eSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKKwljcnRjLT5jdXJzb3JfeCA9IHN0YXRlLT5iYXNlLmNy dGNfeDsKKwljcnRjLT5jdXJzb3JfeSA9IHN0YXRlLT5iYXNlLmNydGNfeTsKIAogCWludGVsX3Bs YW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19kc3QueDE7CiAJaW50ZWxfcGxhbmUtPmNydGNfeSA9 IHN0YXRlLT5vcmlnX2RzdC55MTsKQEAgLTExOTA5LDYzICsxMTc1OSwyMCBAQCBpbnRlbF9jb21t aXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludGVsX3BsYW5lLT5v YmogPSBvYmo7CiAKIAlpZiAoZmIgIT0gY3J0Yy0+Y3Vyc29yLT5mYikgewotCQljcnRjX3cgPSBk cm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKLQkJY3J0Y19oID0gZHJtX3JlY3RfaGVp Z2h0KCZzdGF0ZS0+b3JpZ19kc3QpOwotCQlyZXR1cm4gaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29i aihjcnRjLCBvYmosIGNydGNfdywgY3J0Y19oKTsKKwkJaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29i aihjcnRjLCBvYmosCisJCQkJCSAgc3RhdGUtPmJhc2UuY3J0Y193LAorCQkJCQkgIHN0YXRlLT5i YXNlLmNydGNfaCk7CiAJfSBlbHNlIHsKIAkJaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKGNydGMs IHN0YXRlLT52aXNpYmxlKTsKIAogCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGNydGMtPmRldiwK IAkJCQkgICAgICAgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKGludGVsX2NydGMtPnBpcGUpKTsK LQotCQlyZXR1cm4gMDsKIAl9CiB9CiAKLXN0YXRpYyBpbnQKLWludGVsX2N1cnNvcl9wbGFuZV91 cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJ CSAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsIGludCBjcnRjX3ksCi0J CQkgIHVuc2lnbmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGludCBjcnRjX2gsCi0JCQkgIHVpbnQz Ml90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKLQkJCSAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90 IHNyY19oKQotewotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3RhdGU7Ci0JaW50IHJldDsKLQot CXN0YXRlLmJhc2UuY3J0YyA9IGNydGM7Ci0Jc3RhdGUuYmFzZS5mYiA9IGZiOwotCi0JLyogc2Ft cGxlIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZpeGVkIHBvaW50ICovCi0Jc3RhdGUuc3JjLngxID0g c3JjX3g7Ci0Jc3RhdGUuc3JjLngyID0gc3JjX3ggKyBzcmNfdzsKLQlzdGF0ZS5zcmMueTEgPSBz cmNfeTsKLQlzdGF0ZS5zcmMueTIgPSBzcmNfeSArIHNyY19oOwotCi0JLyogaW50ZWdlciBwaXhl bHMgKi8KLQlzdGF0ZS5kc3QueDEgPSBjcnRjX3g7Ci0Jc3RhdGUuZHN0LngyID0gY3J0Y194ICsg Y3J0Y193OwotCXN0YXRlLmRzdC55MSA9IGNydGNfeTsKLQlzdGF0ZS5kc3QueTIgPSBjcnRjX3kg KyBjcnRjX2g7Ci0KLQlzdGF0ZS5jbGlwLngxID0gMDsKLQlzdGF0ZS5jbGlwLnkxID0gMDsKLQlz dGF0ZS5jbGlwLngyID0gaW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX3cgOiAwOwotCXN0YXRlLmNsaXAueTIgPSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRl bF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCA6IDA7Ci0KLQlzdGF0ZS5vcmlnX3NyYyA9IHN0YXRl LnNyYzsKLQlzdGF0ZS5vcmlnX2RzdCA9IHN0YXRlLmRzdDsKLQotCXJldCA9IGludGVsX2NoZWNr X2N1cnNvcl9wbGFuZShwbGFuZSwgJnN0YXRlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot Ci0JcmV0dXJuIGludGVsX2NvbW1pdF9jdXJzb3JfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci19Ci0K IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX2N1cnNvcl9wbGFuZV9m dW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gaW50ZWxfY3Vyc29yX3BsYW5lX3VwZGF0ZSwKLQku ZGlzYWJsZV9wbGFuZSA9IGludGVsX2N1cnNvcl9wbGFuZV9kaXNhYmxlLAorCS51cGRhdGVfcGxh bmUgPSBkcm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwKKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9wbGFu ZV9oZWxwZXJfZGlzYWJsZSwKIAkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCiAJLnNl dF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX3NldF9wcm9wZXJ0eSwKIAkuYXRvbWljX2R1cGxpY2F0 ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKaW5kZXggZDM2NzdjMy4uMjhjY2FmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKQEAgLTExMDYsNyArMTEwNiw2IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193 LCBzcmNfaDsKIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwogCXN0cnVjdCBk cm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5kc3Q7Ci0Jc3RydWN0IGRybV9yZWN0ICpvcmlnX3NyYyA9 ICZzdGF0ZS0+b3JpZ19zcmM7CiAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRl LT5jbGlwOwogCWludCBoc2NhbGUsIHZzY2FsZTsKIAlpbnQgbWF4X3NjYWxlLCBtaW5fc2NhbGU7 CkBAIC0xMTg3LDEwICsxMTg2LDEwIEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKIAogCQkv KiBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzcmMgdmlld3BvcnQgd2Fzbid0IGVubGFy Z2VkICovCi0JCVdBUk5fT04oc3JjLT54MSA8IChpbnQpIG9yaWdfc3JjLT54MSB8fAotCQkJc3Jj LT55MSA8IChpbnQpIG9yaWdfc3JjLT55MSB8fAotCQkJc3JjLT54MiA+IChpbnQpIG9yaWdfc3Jj LT54MiB8fAotCQkJc3JjLT55MiA+IChpbnQpIG9yaWdfc3JjLT55Mik7CisJCVdBUk5fT04oc3Jj LT54MSA8IChpbnQpIHN0YXRlLT5iYXNlLnNyY194IHx8CisJCQlzcmMtPnkxIDwgKGludCkgc3Rh dGUtPmJhc2Uuc3JjX3kgfHwKKwkJCXNyYy0+eDIgPiAoaW50KSBzdGF0ZS0+YmFzZS5zcmNfeCAr IHN0YXRlLT5iYXNlLnNyY193IHx8CisJCQlzcmMtPnkyID4gKGludCkgc3RhdGUtPmJhc2Uuc3Jj X3kgKyBzdGF0ZS0+YmFzZS5zcmNfaCk7CiAKIAkJLyoKIAkJICogSGFyZHdhcmUgZG9lc24ndCBo YW5kbGUgc3VicGl4ZWwgY29vcmRpbmF0ZXMuCkBAIC0xMjU4LDQxICsxMjU3LDYgQEAgaW50ZWxf Y2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50Ci1pbnRlbF9wcmVwYXJlX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKLQkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCi17Ci0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Ci0Jc3RydWN0IGRybV9jcnRjICpj cnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKLQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGludGVsX3BsYW5lLT5vYmo7Ci0JaW50IHJl dDsKLQotCWlmIChvbGRfb2JqICE9IG9iaikgewotCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Ci0KLQkJLyogTm90ZSB0aGF0IHRoaXMgd2lsbCBhcHBseSB0aGUgVlQtZCB3b3JrYXJv dW5kIGZvciBzY2Fub3V0cywKLQkJICogd2hpY2ggaXMgbW9yZSByZXN0cmljdGl2ZSB0aGFuIHJl cXVpcmVkIGZvciBzcHJpdGVzLiAoVGhlCi0JCSAqIHByaW1hcnkgcGxhbmUgcmVxdWlyZXMgMjU2 S2lCIGFsaWdubWVudCB3aXRoIDY0IFBURSBwYWRkaW5nLAotCQkgKiB0aGUgc3ByaXRlIHBsYW5l cyBvbmx5IHJlcXVpcmUgMTI4S2lCIGFsaWdubWVudCBhbmQgMzIgUFRFCi0JCSAqIHBhZGRpbmcu Ci0JCSAqLwotCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwbGFuZSwgZmIsIE5V TEwpOwotCQlpZiAocmV0ID09IDApCi0JCQlpOTE1X2dlbV90cmFja19mYihvbGRfb2JqLCBvYmos Ci0JCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfU1BSSVRFKHBpcGUpKTsKLQkJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCX0KLQot CXJldHVybiAwOwotfQotCiBzdGF0aWMgdm9pZAogaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpz dGF0ZSkKQEAgLTEzMDQsNyArMTI2OCw2IEBAIGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9wbGFuZS0+b2JqOwogCWludCBjcnRj X3gsIGNydGNfeTsKIAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRjX2g7CiAJdWludDMyX3Qgc3Jj X3gsIHNyY195LCBzcmNfdywgc3JjX2g7CkBAIC0xMzYyLDY4ICsxMzI1LDYgQEAgaW50ZWxfY29t bWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJaWYgKCFwcmltYXJ5 X3dhc19lbmFibGVkICYmIHByaW1hcnlfZW5hYmxlZCkKIAkJCWludGVsX3Bvc3RfZW5hYmxlX3By aW1hcnkoY3J0Yyk7CiAJfQotCi0JLyogVW5waW4gb2xkIG9iaiBhZnRlciBuZXcgb25lIGlzIGFj dGl2ZSB0byBhdm9pZCB1Z2xpbmVzcyAqLwotCWlmIChvbGRfb2JqICYmIG9sZF9vYmogIT0gb2Jq KSB7Ci0KLQkJLyoKLQkJICogSXQncyBmYWlybHkgY29tbW9uIHRvIHNpbXBseSB1cGRhdGUgdGhl IHBvc2l0aW9uIG9mCi0JCSAqIGFuIGV4aXN0aW5nIG9iamVjdC4gIEluIHRoYXQgY2FzZSwgd2Ug ZG9uJ3QgbmVlZCB0bwotCQkgKiB3YWl0IGZvciB2YmxhbmsgdG8gYXZvaWQgdWdsaW5lc3MsIHdl IG9ubHkgbmVlZCB0bwotCQkgKiBkbyB0aGUgcGluICYgcmVmIGJvb2trZWVwaW5nLgotCQkgKi8K LQkJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKLQkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYs IGludGVsX2NydGMtPnBpcGUpOwotCi0JCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK LQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmopOwotCQltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQKLWludGVsX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkgICBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNfeCwgaW50IGNydGNfeSwKLQkJICAgdW5zaWdu ZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKLQkJICAgdWludDMyX3Qgc3JjX3gs IHVpbnQzMl90IHNyY195LAotCQkgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCi17 Ci0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHN0YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlpbnQgcmV0OwotCi0Jc3RhdGUuYmFz ZS5jcnRjID0gY3J0YzsKLQlzdGF0ZS5iYXNlLmZiID0gZmI7Ci0KLQkvKiBzYW1wbGUgY29vcmRp bmF0ZXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKi8KLQlzdGF0ZS5zcmMueDEgPSBzcmNfeDsKLQlz dGF0ZS5zcmMueDIgPSBzcmNfeCArIHNyY193OwotCXN0YXRlLnNyYy55MSA9IHNyY195OwotCXN0 YXRlLnNyYy55MiA9IHNyY195ICsgc3JjX2g7Ci0KLQkvKiBpbnRlZ2VyIHBpeGVscyAqLwotCXN0 YXRlLmRzdC54MSA9IGNydGNfeDsKLQlzdGF0ZS5kc3QueDIgPSBjcnRjX3ggKyBjcnRjX3c7Ci0J c3RhdGUuZHN0LnkxID0gY3J0Y195OwotCXN0YXRlLmRzdC55MiA9IGNydGNfeSArIGNydGNfaDsK LQotCXN0YXRlLmNsaXAueDEgPSAwOwotCXN0YXRlLmNsaXAueTEgPSAwOwotCXN0YXRlLmNsaXAu eDIgPSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfdyA6 IDA7Ci0Jc3RhdGUuY2xpcC55MiA9IGludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNv bmZpZy5waXBlX3NyY19oIDogMDsKLQlzdGF0ZS5vcmlnX3NyYyA9IHN0YXRlLnNyYzsKLQlzdGF0 ZS5vcmlnX2RzdCA9IHN0YXRlLmRzdDsKLQotCXJldCA9IGludGVsX2NoZWNrX3Nwcml0ZV9wbGFu ZShwbGFuZSwgJnN0YXRlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gaW50 ZWxfcHJlcGFyZV9zcHJpdGVfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCWludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci0J cmV0dXJuIDA7CiB9CiAKIGludApAQCAtMTQ1OSw3ICsxMzYwLDYgQEAgaW50ZWxfc3ByaXRlX3Bs YW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJCQlpbnRlbF93YWl0X2Zvcl92 YmxhbmsoZGV2LCBpbnRlbF9wbGFuZS0+cGlwZSk7CiAKIAkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwotCQlpbnRlbF91bnBpbl9mYl9vYmooaW50ZWxfcGxhbmUtPm9iaik7CiAJCWk5 MTVfZ2VtX3RyYWNrX2ZiKGludGVsX3BsYW5lLT5vYmosIE5VTEwsCiAJCQkJICBJTlRFTF9GUk9O VEJVRkZFUl9TUFJJVEUocGlwZSkpOwogCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKQEAgLTE1NTcsMjEgKzE0NTcsMTkgQEAgaW50IGludGVsX3BsYW5lX3NldF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogaW50IGludGVsX3BsYW5lX3Jlc3RvcmUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKLQogCWlmICghcGxhbmUtPmNydGMgfHwgIXBsYW5lLT5m YikKIAkJcmV0dXJuIDA7CiAKIAlyZXR1cm4gcGxhbmUtPmZ1bmNzLT51cGRhdGVfcGxhbmUocGxh bmUsIHBsYW5lLT5jcnRjLCBwbGFuZS0+ZmIsCi0JCQkJICBpbnRlbF9wbGFuZS0+Y3J0Y194LCBp bnRlbF9wbGFuZS0+Y3J0Y195LAotCQkJCSAgaW50ZWxfcGxhbmUtPmNydGNfdywgaW50ZWxfcGxh bmUtPmNydGNfaCwKLQkJCQkgIGludGVsX3BsYW5lLT5zcmNfeCwgaW50ZWxfcGxhbmUtPnNyY195 LAotCQkJCSAgaW50ZWxfcGxhbmUtPnNyY193LCBpbnRlbF9wbGFuZS0+c3JjX2gpOworCQkJCSAg cGxhbmUtPnN0YXRlLT5jcnRjX3gsIHBsYW5lLT5zdGF0ZS0+Y3J0Y195LAorCQkJCSAgcGxhbmUt PnN0YXRlLT5jcnRjX3csIHBsYW5lLT5zdGF0ZS0+Y3J0Y19oLAorCQkJCSAgcGxhbmUtPnN0YXRl LT5zcmNfeCwgcGxhbmUtPnN0YXRlLT5zcmNfeSwKKwkJCQkgIHBsYW5lLT5zdGF0ZS0+c3JjX3cs IHBsYW5lLT5zdGF0ZS0+c3JjX2gpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gaW50ZWxfdXBk YXRlX3BsYW5lLAotCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxfc3ByaXRlX3BsYW5lX2Rpc2FibGUs CisJLnVwZGF0ZV9wbGFuZSA9IGRybV9wbGFuZV9oZWxwZXJfdXBkYXRlLAorCS5kaXNhYmxlX3Bs YW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAogCS5kZXN0cm95ID0gaW50ZWxfcGxhbmVf ZGVzdHJveSwKIAkuc2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAogCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAotLSAK MS44LjUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK