From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 6/7] drm/i915: Switch plane handling to atomic helpers Date: Thu, 13 Nov 2014 10:43:25 -0800 Message-ID: <1415904206-22548-7-git-send-email-matthew.d.roper@intel.com> References: <1415904206-22548-1-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-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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 JyBzaG91bGQgbm90IGxvbmdlciB1bnBpbiB0aGUgb2xkIG9iamVjdDsgdGhlIGNsZWFudXBfZmIg d2lsbAogICB0YWtlIGNhcmUgb2YgdGhpcyBmb3IgdXMKIC0gcHJlcGFyZV9mYiBvbmx5IGdldHMg Y2FsbGVkIHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBhbiBmYiwgc28gdGhlCiAgIGludGVybmFsICdk aXNhYmxlJyBjb2RlIG5lZWRzIHRvIHVwZGF0ZSBmcm9udGJ1ZmZlciB0cmFja2luZwogLSB0aGUg Y3Vyc29yIHBsYW5lIGNvZGUgbmV2ZXIgaGFkICdwcmVwYXJlJyBjb2RlIHNlcGFyYXRlZCBmcm9t IGl0cwogICAnY29tbWl0JyBmdW5jdGlvbiwgc28gYSBsb3Qgb2YgdGhlIGN1cnNvcidzICdjb21t aXQnIG5lZWRzIHRvIGJlCiAgIGRyb3BwZWQgc2luY2UgcHJlcGFyZV9mYiBhbHJlYWR5IGRvZXMg aXQgZm9yIHVzCiAtIHdpdGggYWxsIHRoZSBwaW5uaW5nIHdvcmsgcmVtb3ZlZCBmcm9tIGN1cnNv ciBjb21taXQsIGl0IGNhbiBubwogICBsb25nZXIgZmFpbCBhbmQgc2hvdWxkIHJldHVybiB2b2lk IHJhdGhlciB0aGFuIGludAoKVGVzdGNhc2U6IGlndC9rbXNfcGxhbmUKVGVzdGNhc2U6IGlndC9r bXNfdW5pdmVyc2FsX3BsYW5lClRlc3RjYXNlOiBpZ3Qva21zX2N1cnNvcl9jcmMKU2lnbmVkLW9m Zi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyNTUgKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8IDEy MiArKy0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAz MzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDMy YTJiMTIuLjhkNWEzYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTgy ODUsMTcgKzgyODUsMTUgQEAgc3RhdGljIGJvb2wgY3Vyc29yX3NpemVfb2soc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGludCBpbnRlbF9jcnRjX2N1 cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJICAgICB1aW50MzJfdCB3aWR0aCwgdWludDMyX3Qg aGVpZ2h0KQorc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCisJCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK KwkJCQkgICAgICB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwogCXVuc2lnbmVkIG9sZF93aWR0aDsKIAl1aW50MzJfdCBhZGRyOwotCWludCByZXQ7CiAK IAkvKiBpZiB3ZSB3YW50IHRvIHR1cm4gb2ZmIHRoZSBjdXJzb3IgaWdub3JlIHdpZHRoIGFuZCBo ZWlnaHQgKi8KIAlpZiAoIW9iaikgewpAQCAtODMwNSw2NCArODMwMywxNCBAQCBzdGF0aWMgaW50 IGludGVsX2NydGNfY3Vyc29yX3NldF9vYmooc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlnb3Rv IGZpbmlzaDsKIAl9CiAKLQkvKiB3ZSBvbmx5IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYgY3Vy c29yIGlzIG5vbi1waHkgKi8KKwkvKiBwbGFuZSBoZWxwZXIncyBwcmVwYXJlX2ZiKCkgYWxyZWFk eSBoYW5kbGVkIHBpbm5pbmcgKi8KIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0J aWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkgewotCQl1bnNpZ25l ZCBhbGlnbm1lbnQ7Ci0KLQkJLyoKLQkJICogR2xvYmFsIGd0dCBwdGUgcmVnaXN0ZXJzIGFyZSBz cGVjaWFsIHJlZ2lzdGVycyB3aGljaCBhY3R1YWxseQotCQkgKiBmb3J3YXJkIHdyaXRlcyB0byBh IGNodW5rIG9mIHN5c3RlbSBtZW1vcnkuIFdoaWNoIG1lYW5zIHRoYXQKLQkJICogdGhlcmUgaXMg bm8gcmlzayB0aGF0IHRoZSByZWdpc3RlciB2YWx1ZXMgZGlzYXBwZWFyIGFzIHNvb24KLQkJICog YXMgd2UgY2FsbCBpbnRlbF9ydW50aW1lX3BtX3B1dCgpLCBzbyBpdCBpcyBjb3JyZWN0IHRvIHdy YXAKLQkJICogb25seSB0aGUgcGluL3VucGluL2ZlbmNlIGFuZCBub3QgbW9yZS4KLQkJICovCi0J CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKLQotCQkvKiBOb3RlIHRoYXQgdGhlIHcv YSBhbHNvIHJlcXVpcmVzIDIgUFRFIG9mIHBhZGRpbmcgZm9sbG93aW5nCi0JCSAqIHRoZSBiby4g V2UgY3VycmVudGx5IGZpbGwgYWxsIHVudXNlZCBQVEUgd2l0aCB0aGUgc2hhZG93Ci0JCSAqIHBh Z2UgYW5kIHNvIHdlIHNob3VsZCBhbHdheXMgaGF2ZSB2YWxpZCBQVEUgZm9sbG93aW5nIHRoZQot CQkgKiBjdXJzb3IgcHJldmVudGluZyB0aGUgVlQtZCB3YXJuaW5nLgotCQkgKi8KLQkJYWxpZ25t ZW50ID0gMDsKLQkJaWYgKG5lZWRfdnRkX3dhKGRldikpCi0JCQlhbGlnbm1lbnQgPSA2NCoxMDI0 OwotCi0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFs aWdubWVudCwgTlVMTCk7Ci0JCWlmIChyZXQpIHsKLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0 byBtb3ZlIGN1cnNvciBibyBpbnRvIHRoZSBHVFRcbiIpOwotCQkJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwotCQkJZ290byBmYWlsX2xvY2tlZDsKLQkJfQotCi0JCXJldCA9IGk5MTVf Z2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsKLQkJaWYgKHJldCkgewotCQkJRFJNX0RFQlVHX0tN UygiZmFpbGVkIHRvIHJlbGVhc2UgZmVuY2UgZm9yIGN1cnNvciIpOwotCQkJaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwotCQkJZ290byBmYWlsX3VucGluOwotCQl9Ci0KKwlpZiAoIUlO VEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKQogCQlhZGRyID0gaTkxNV9nZW1f b2JqX2dndHRfb2Zmc2V0KG9iaik7Ci0KLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp OwotCX0gZWxzZSB7Ci0JCWludCBhbGlnbiA9IElTX0k4MzAoZGV2KSA/IDE2ICogMTAyNCA6IDI1 NjsKLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKG9iaiwgYWxpZ24pOwotCQlp ZiAocmV0KSB7Ci0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0 XG4iKTsKLQkJCWdvdG8gZmFpbF9sb2NrZWQ7Ci0JCX0KKwllbHNlCiAJCWFkZHIgPSBvYmotPnBo eXNfaGFuZGxlLT5idXNhZGRyOwotCX0KIAogIGZpbmlzaDoKLQlpZiAoaW50ZWxfY3J0Yy0+Y3Vy c29yX2JvKSB7Ci0JCWlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwp Ci0JCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKGludGVsX2NydGMt PmN1cnNvcl9ibyk7Ci0JfQotCi0JaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfY3J0Yy0+Y3Vyc29y X2JvLCBvYmosCi0JCQkgIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihwaXBlKSk7CiAJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlvbGRfd2lkdGggPSBpbnRlbF9jcnRjLT5j dXJzb3Jfd2lkdGg7CkBAIC04Mzc5LDEzICs4MzI3LDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X2N1cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCQlpbnRlbF9mcm9udGJ1 ZmZlcl9mbGlwKGRldiwgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBpcGUpKTsKIAl9Ci0KLQly ZXR1cm4gMDsKLWZhaWxfdW5waW46Ci0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxh eV9wbGFuZShvYmopOwotZmFpbF9sb2NrZWQ6Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Ci0JcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19nYW1tYV9z ZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MTYgKnJlZCwgdTE2ICpncmVlbiwKQEAgLTExNTQ0 LDcgKzExNDg1LDYgQEAgZGlzYWJsZV91bnBpbjoKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CiAJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJfb2JqKHBsYW5lLT5mYiksIE5VTEws CiAJCQkgIElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50ZWxfY3J0Yy0+cGlwZSkpOwotCWlu dGVsX3VucGluX2ZiX29iaihpbnRlbF9mYl9vYmoocGxhbmUtPmZiKSk7CiAJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcGxhbmUtPmZiID0gTlVMTDsKIApAQCAtMTE1NjgsNDIg KzExNTA4LDYgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAkJCQkJICAgICBmYWxzZSwgdHJ1ZSwgJnN0YXRlLT52aXNpYmxlKTsKIH0KIAotc3Rh dGljIGludAotaW50ZWxfcHJlcGFyZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAotCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0 IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2xkX29iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+ZmIpOwotCWludCByZXQ7 Ci0KLQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7Ci0KLQlpZiAoaW50 ZWxfY3J0Y19oYXNfcGVuZGluZ19mbGlwKGNydGMpKSB7Ci0JCURSTV9FUlJPUigicGlwZSBpcyBz dGlsbCBidXN5IHdpdGggYW4gb2xkIHBhZ2VmbGlwXG4iKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9 Ci0KLQlpZiAob2xkX29iaiAhPSBvYmopIHsKLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwotCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwbGFuZSwgZmIsIE5VTEwp OwotCQlpZiAocmV0ID09IDApCi0JCQlpOTE1X2dlbV90cmFja19mYihvbGRfb2JqLCBvYmosCi0J CQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKSk7Ci0JCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAocmV0ICE9IDApIHsKLQkJCURSTV9ERUJVR19LTVMo InBpbiAmIGZlbmNlIGZhaWxlZFxuIik7Ci0JCQlyZXR1cm4gcmV0OwotCQl9Ci0JfQotCi0JcmV0 dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Rh dGUpCkBAIC0xMTYxNCw5ICsxMTUxOCw3IEBAIGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK LQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBwbGFuZS0+ZmI7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPmZiKTsKIAlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCXN0 cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7CiAKQEAgLTExNjg3LDYyICsxMTU4OSw2 IEBAIGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CQlpbnRlbF91cGRhdGVfZmJjKGRldik7CiAJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwogCX0KLQotCWlmIChvbGRfZmIgJiYgb2xkX2ZiICE9IGZiKSB7Ci0JCWlmIChpbnRlbF9j cnRjLT5hY3RpdmUpCi0JCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRjLT5w aXBlKTsKLQotCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWludGVsX3VucGlu X2ZiX29iaihvbGRfb2JqKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0J fQotfQotCi1zdGF0aWMgaW50Ci1pbnRlbF9wcmltYXJ5X3BsYW5lX3NldHBsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkgICAgIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY3J0Y194LCBpbnQgY3J0Y195LAotCQkJICAgICB1bnNp Z25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAotCQkJICAgICB1aW50MzJfdCBz cmNfeCwgdWludDMyX3Qgc3JjX3ksCi0JCQkgICAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBz cmNfaCkKLXsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3RhdGU7Ci0Jc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCWludCByZXQ7Ci0KLQlz dGF0ZS5iYXNlLmNydGMgPSBjcnRjOwotCXN0YXRlLmJhc2UuZmIgPSBmYjsKLQotCS8qIHNhbXBs ZSBjb29yZGluYXRlcyBpbiAxNi4xNiBmaXhlZCBwb2ludCAqLwotCXN0YXRlLnNyYy54MSA9IHNy Y194OwotCXN0YXRlLnNyYy54MiA9IHNyY194ICsgc3JjX3c7Ci0Jc3RhdGUuc3JjLnkxID0gc3Jj X3k7Ci0Jc3RhdGUuc3JjLnkyID0gc3JjX3kgKyBzcmNfaDsKLQotCS8qIGludGVnZXIgcGl4ZWxz ICovCi0Jc3RhdGUuZHN0LngxID0gY3J0Y194OwotCXN0YXRlLmRzdC54MiA9IGNydGNfeCArIGNy dGNfdzsKLQlzdGF0ZS5kc3QueTEgPSBjcnRjX3k7Ci0Jc3RhdGUuZHN0LnkyID0gY3J0Y195ICsg Y3J0Y19oOwotCi0Jc3RhdGUuY2xpcC54MSA9IDA7Ci0Jc3RhdGUuY2xpcC55MSA9IDA7Ci0Jc3Rh dGUuY2xpcC54MiA9IGludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBl X3NyY193IDogMDsKLQlzdGF0ZS5jbGlwLnkyID0gaW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxf Y3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2ggOiAwOwotCi0Jc3RhdGUub3JpZ19zcmMgPSBzdGF0ZS5z cmM7Ci0Jc3RhdGUub3JpZ19kc3QgPSBzdGF0ZS5kc3Q7Ci0KLQlyZXQgPSBpbnRlbF9jaGVja19w cmltYXJ5X3BsYW5lKHBsYW5lLCAmc3RhdGUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0K LQlyZXQgPSBpbnRlbF9wcmVwYXJlX3ByaW1hcnlfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHBsYW5l LCAmc3RhdGUpOwotCi0JcmV0dXJuIDA7CiB9CiAKIC8qIENvbW1vbiBkZXN0cnVjdGlvbiBmdW5j dGlvbiBmb3IgYm90aCBwcmltYXJ5IGFuZCBjdXJzb3IgcGxhbmVzICovCkBAIC0xMTc1NSw4ICsx MTYwMSw4IEBAIHZvaWQgaW50ZWxfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSkKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcHJpbWFy eV9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gaW50ZWxfcHJpbWFyeV9wbGFuZV9z ZXRwbGFuZSwKLQkuZGlzYWJsZV9wbGFuZSA9IGludGVsX3ByaW1hcnlfcGxhbmVfZGlzYWJsZSwK KwkudXBkYXRlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl91cGRhdGUsCisJLmRpc2FibGVfcGxh bmUgPSBkcm1fcGxhbmVfaGVscGVyX2Rpc2FibGUsCiAJLmRlc3Ryb3kgPSBpbnRlbF9wbGFuZV9k ZXN0cm95LAogCS5zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9zZXRfcHJvcGVydHksCiAJLmF0 b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCkBAIC0x MTgxNiwxNSArMTE2NjIsMjIgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuICZwcmltYXJ5 LT5iYXNlOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgdm9pZAogaW50ZWxfY3Vyc29yX3BsYW5l X2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7CisJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKKwogCWlmICghcGxhbmUtPmZi KQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOwogCiAJQlVHX09OKCFwbGFuZS0+Y3J0Yyk7CiAKLQly ZXR1cm4gaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihwbGFuZS0+Y3J0YywgTlVMTCwgMCwgMCk7 CisJaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihwbGFuZS0+Y3J0YywgTlVMTCwgMCwgMCk7CisK KwltdXRleF9sb2NrKCZwbGFuZS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX3RyYWNr X2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIpLCBOVUxMLAorCQkJICBJTlRFTF9GUk9OVEJVRkZF Ul9DVVJTT1IoaW50ZWxfcGxhbmUtPnBpcGUpKTsKKwltdXRleF91bmxvY2soJnBsYW5lLT5kZXYt PnN0cnVjdF9tdXRleCk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTExODM4LDcgKzExNjkxLDYgQEAg aW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVj dCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7CiAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpj bGlwID0gJnN0YXRlLT5jbGlwOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBp bnRlbF9mYl9vYmooZmIpOwotCWludCBjcnRjX3csIGNydGNfaDsKIAl1bnNpZ25lZCBzdHJpZGU7 CiAJaW50IHJldDsKIApAQCAtMTE4NTYsMTUgKzExNzA4LDE0IEBAIGludGVsX2NoZWNrX2N1cnNv cl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJcmV0dXJuIDA7CiAKIAkvKiBDaGVj ayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQgKi8KLQljcnRjX3cgPSBkcm1fcmVj dF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKLQljcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0 YXRlLT5vcmlnX2RzdCk7Ci0JaWYgKCFjdXJzb3Jfc2l6ZV9vayhkZXYsIGNydGNfdywgY3J0Y19o KSkgewotCQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gbm90IHN1cHBvcnRlZFxuIik7CisJ aWYgKCFjdXJzb3Jfc2l6ZV9vayhkZXYsIHN0YXRlLT5iYXNlLmNydGNfdywgc3RhdGUtPmJhc2Uu Y3J0Y19oKSkgeworCQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gJWR4JWQgbm90IHN1cHBv cnRlZFxuIiwKKwkJCSAgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpOwog CQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlzdHJpZGUgPSByb3VuZHVwX3Bvd19vZl90d28oY3J0 Y193KSAqIDQ7Ci0JaWYgKG9iai0+YmFzZS5zaXplIDwgc3RyaWRlICogY3J0Y19oKSB7CisJc3Ry aWRlID0gcm91bmR1cF9wb3dfb2ZfdHdvKHN0YXRlLT5iYXNlLmNydGNfdykgKiA0OworCWlmIChv YmotPmJhc2Uuc2l6ZSA8IHN0cmlkZSAqIHN0YXRlLT5iYXNlLmNydGNfaCkgewogCQlEUk1fREVC VUdfS01TKCJidWZmZXIgaXMgdG9vIHNtYWxsXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQpA QCAtMTE4ODMsNyArMTE3MzQsNyBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludAorc3RhdGljIHZv aWQKIGludGVsX2NvbW1pdF9jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7CkBAIC0xMTg5MywxMCArMTE3 NDQsOSBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZSk7CiAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1l YnVmZmVyKGZiKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmIt Pm9iajsKLQlpbnQgY3J0Y193LCBjcnRjX2g7CiAKLQljcnRjLT5jdXJzb3JfeCA9IHN0YXRlLT5v cmlnX2RzdC54MTsKLQljcnRjLT5jdXJzb3JfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKKwljcnRj LT5jdXJzb3JfeCA9IHN0YXRlLT5iYXNlLmNydGNfeDsKKwljcnRjLT5jdXJzb3JfeSA9IHN0YXRl LT5iYXNlLmNydGNfeTsKIAogCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19kc3Qu eDE7CiAJaW50ZWxfcGxhbmUtPmNydGNfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKQEAgLTExOTA5 LDYzICsxMTc1OSwyMCBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCWludGVsX3BsYW5lLT5vYmogPSBvYmo7CiAKIAlpZiAoZmIgIT0gY3J0Yy0+ Y3Vyc29yLT5mYikgewotCQljcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0 KTsKLQkJY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+b3JpZ19kc3QpOwotCQlyZXR1 cm4gaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihjcnRjLCBvYmosIGNydGNfdywgY3J0Y19oKTsK KwkJaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihjcnRjLCBvYmosCisJCQkJCSAgc3RhdGUtPmJh c2UuY3J0Y193LAorCQkJCQkgIHN0YXRlLT5iYXNlLmNydGNfaCk7CiAJfSBlbHNlIHsKIAkJaW50 ZWxfY3J0Y191cGRhdGVfY3Vyc29yKGNydGMsIHN0YXRlLT52aXNpYmxlKTsKIAogCQlpbnRlbF9m cm9udGJ1ZmZlcl9mbGlwKGNydGMtPmRldiwKIAkJCQkgICAgICAgSU5URUxfRlJPTlRCVUZGRVJf Q1VSU09SKGludGVsX2NydGMtPnBpcGUpKTsKLQotCQlyZXR1cm4gMDsKIAl9CiB9CiAKLXN0YXRp YyBpbnQKLWludGVsX2N1cnNvcl9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCSAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs IGludCBjcnRjX3gsIGludCBjcnRjX3ksCi0JCQkgIHVuc2lnbmVkIGludCBjcnRjX3csIHVuc2ln bmVkIGludCBjcnRjX2gsCi0JCQkgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKLQkJ CSAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQotewotCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgc3RhdGU7Ci0JaW50IHJldDsKLQotCXN0YXRlLmJhc2UuY3J0YyA9IGNydGM7Ci0Jc3Rh dGUuYmFzZS5mYiA9IGZiOwotCi0JLyogc2FtcGxlIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZpeGVk IHBvaW50ICovCi0Jc3RhdGUuc3JjLngxID0gc3JjX3g7Ci0Jc3RhdGUuc3JjLngyID0gc3JjX3gg KyBzcmNfdzsKLQlzdGF0ZS5zcmMueTEgPSBzcmNfeTsKLQlzdGF0ZS5zcmMueTIgPSBzcmNfeSAr IHNyY19oOwotCi0JLyogaW50ZWdlciBwaXhlbHMgKi8KLQlzdGF0ZS5kc3QueDEgPSBjcnRjX3g7 Ci0Jc3RhdGUuZHN0LngyID0gY3J0Y194ICsgY3J0Y193OwotCXN0YXRlLmRzdC55MSA9IGNydGNf eTsKLQlzdGF0ZS5kc3QueTIgPSBjcnRjX3kgKyBjcnRjX2g7Ci0KLQlzdGF0ZS5jbGlwLngxID0g MDsKLQlzdGF0ZS5jbGlwLnkxID0gMDsKLQlzdGF0ZS5jbGlwLngyID0gaW50ZWxfY3J0Yy0+YWN0 aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgOiAwOwotCXN0YXRlLmNsaXAueTIg PSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCA6IDA7 Ci0KLQlzdGF0ZS5vcmlnX3NyYyA9IHN0YXRlLnNyYzsKLQlzdGF0ZS5vcmlnX2RzdCA9IHN0YXRl LmRzdDsKLQotCXJldCA9IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShwbGFuZSwgJnN0YXRlKTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIGludGVsX2NvbW1pdF9jdXJzb3Jf cGxhbmUocGxhbmUsICZzdGF0ZSk7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2Z1bmNzIGludGVsX2N1cnNvcl9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gaW50 ZWxfY3Vyc29yX3BsYW5lX3VwZGF0ZSwKLQkuZGlzYWJsZV9wbGFuZSA9IGludGVsX2N1cnNvcl9w bGFuZV9kaXNhYmxlLAorCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwK KwkuZGlzYWJsZV9wbGFuZSA9IGRybV9wbGFuZV9oZWxwZXJfZGlzYWJsZSwKIAkuZGVzdHJveSA9 IGludGVsX3BsYW5lX2Rlc3Ryb3ksCiAJLnNldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX3NldF9w cm9wZXJ0eSwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0 ZV9zdGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggZDM2NzdjMy4uMjhj Y2FmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTExMDYsNyArMTEwNiw2 IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl1 aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKIAlzdHJ1Y3QgZHJtX3JlY3QgKnNy YyA9ICZzdGF0ZS0+c3JjOwogCXN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5kc3Q7Ci0J c3RydWN0IGRybV9yZWN0ICpvcmlnX3NyYyA9ICZzdGF0ZS0+b3JpZ19zcmM7CiAJY29uc3Qgc3Ry dWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwogCWludCBoc2NhbGUsIHZzY2FsZTsK IAlpbnQgbWF4X3NjYWxlLCBtaW5fc2NhbGU7CkBAIC0xMTg3LDEwICsxMTg2LDEwIEBAIGludGVs X2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgICAgaW50 ZWxfcGxhbmUtPnJvdGF0aW9uKTsKIAogCQkvKiBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRo ZSBzcmMgdmlld3BvcnQgd2Fzbid0IGVubGFyZ2VkICovCi0JCVdBUk5fT04oc3JjLT54MSA8IChp bnQpIG9yaWdfc3JjLT54MSB8fAotCQkJc3JjLT55MSA8IChpbnQpIG9yaWdfc3JjLT55MSB8fAot CQkJc3JjLT54MiA+IChpbnQpIG9yaWdfc3JjLT54MiB8fAotCQkJc3JjLT55MiA+IChpbnQpIG9y aWdfc3JjLT55Mik7CisJCVdBUk5fT04oc3JjLT54MSA8IChpbnQpIHN0YXRlLT5iYXNlLnNyY194 IHx8CisJCQlzcmMtPnkxIDwgKGludCkgc3RhdGUtPmJhc2Uuc3JjX3kgfHwKKwkJCXNyYy0+eDIg PiAoaW50KSBzdGF0ZS0+YmFzZS5zcmNfeCArIHN0YXRlLT5iYXNlLnNyY193IHx8CisJCQlzcmMt PnkyID4gKGludCkgc3RhdGUtPmJhc2Uuc3JjX3kgKyBzdGF0ZS0+YmFzZS5zcmNfaCk7CiAKIAkJ LyoKIAkJICogSGFyZHdhcmUgZG9lc24ndCBoYW5kbGUgc3VicGl4ZWwgY29vcmRpbmF0ZXMuCkBA IC0xMjU4LDQxICsxMjU3LDYgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1pbnRlbF9wcmVwYXJl X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKLQkJCSAgIHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5l LT5kZXY7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKLQllbnVt IHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBzdGF0ZS0+YmFzZS5mYjsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g aW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9 IGludGVsX3BsYW5lLT5vYmo7Ci0JaW50IHJldDsKLQotCWlmIChvbGRfb2JqICE9IG9iaikgewot CQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0KLQkJLyogTm90ZSB0aGF0IHRoaXMg d2lsbCBhcHBseSB0aGUgVlQtZCB3b3JrYXJvdW5kIGZvciBzY2Fub3V0cywKLQkJICogd2hpY2gg aXMgbW9yZSByZXN0cmljdGl2ZSB0aGFuIHJlcXVpcmVkIGZvciBzcHJpdGVzLiAoVGhlCi0JCSAq IHByaW1hcnkgcGxhbmUgcmVxdWlyZXMgMjU2S2lCIGFsaWdubWVudCB3aXRoIDY0IFBURSBwYWRk aW5nLAotCQkgKiB0aGUgc3ByaXRlIHBsYW5lcyBvbmx5IHJlcXVpcmUgMTI4S2lCIGFsaWdubWVu dCBhbmQgMzIgUFRFCi0JCSAqIHBhZGRpbmcuCi0JCSAqLwotCQlyZXQgPSBpbnRlbF9waW5fYW5k X2ZlbmNlX2ZiX29iaihwbGFuZSwgZmIsIE5VTEwpOwotCQlpZiAocmV0ID09IDApCi0JCQlpOTE1 X2dlbV90cmFja19mYihvbGRfb2JqLCBvYmosCi0JCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfU1BS SVRFKHBpcGUpKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWlmIChy ZXQpCi0JCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiAwOwotfQotCiBzdGF0aWMgdm9pZAog aW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKQEAgLTEzMDQsNyArMTI2OCw2IEBAIGlu dGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gc3RhdGUtPmJhc2UuZmI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGlu dGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBp bnRlbF9wbGFuZS0+b2JqOwogCWludCBjcnRjX3gsIGNydGNfeTsKIAl1bnNpZ25lZCBpbnQgY3J0 Y193LCBjcnRjX2g7CiAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7CkBAIC0x MzYyLDY4ICsxMzI1LDYgQEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKIAkJaWYgKCFwcmltYXJ5X3dhc19lbmFibGVkICYmIHByaW1hcnlfZW5hYmxl ZCkKIAkJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoY3J0Yyk7CiAJfQotCi0JLyogVW5waW4g b2xkIG9iaiBhZnRlciBuZXcgb25lIGlzIGFjdGl2ZSB0byBhdm9pZCB1Z2xpbmVzcyAqLwotCWlm IChvbGRfb2JqICYmIG9sZF9vYmogIT0gb2JqKSB7Ci0KLQkJLyoKLQkJICogSXQncyBmYWlybHkg Y29tbW9uIHRvIHNpbXBseSB1cGRhdGUgdGhlIHBvc2l0aW9uIG9mCi0JCSAqIGFuIGV4aXN0aW5n IG9iamVjdC4gIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0bwotCQkgKiB3YWl0IGZvciB2 YmxhbmsgdG8gYXZvaWQgdWdsaW5lc3MsIHdlIG9ubHkgbmVlZCB0bwotCQkgKiBkbyB0aGUgcGlu ICYgcmVmIGJvb2trZWVwaW5nLgotCQkgKi8KLQkJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKLQkJ CWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwotCi0JCW11dGV4 X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmop OwotCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQl9Ci19Ci0KLXN0YXRpYyBp bnQKLWludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRy bV9jcnRjICpjcnRjLAotCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNf eCwgaW50IGNydGNfeSwKLQkJICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNy dGNfaCwKLQkJICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LAotCQkgICB1aW50MzJf dCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCi17Ci0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHN0 YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKLQlpbnQgcmV0OwotCi0Jc3RhdGUuYmFzZS5jcnRjID0gY3J0YzsKLQlzdGF0ZS5iYXNlLmZi ID0gZmI7Ci0KLQkvKiBzYW1wbGUgY29vcmRpbmF0ZXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKi8K LQlzdGF0ZS5zcmMueDEgPSBzcmNfeDsKLQlzdGF0ZS5zcmMueDIgPSBzcmNfeCArIHNyY193Owot CXN0YXRlLnNyYy55MSA9IHNyY195OwotCXN0YXRlLnNyYy55MiA9IHNyY195ICsgc3JjX2g7Ci0K LQkvKiBpbnRlZ2VyIHBpeGVscyAqLwotCXN0YXRlLmRzdC54MSA9IGNydGNfeDsKLQlzdGF0ZS5k c3QueDIgPSBjcnRjX3ggKyBjcnRjX3c7Ci0Jc3RhdGUuZHN0LnkxID0gY3J0Y195OwotCXN0YXRl LmRzdC55MiA9IGNydGNfeSArIGNydGNfaDsKLQotCXN0YXRlLmNsaXAueDEgPSAwOwotCXN0YXRl LmNsaXAueTEgPSAwOwotCXN0YXRlLmNsaXAueDIgPSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRl bF9jcnRjLT5jb25maWcucGlwZV9zcmNfdyA6IDA7Ci0Jc3RhdGUuY2xpcC55MiA9IGludGVsX2Ny dGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY19oIDogMDsKLQlzdGF0ZS5v cmlnX3NyYyA9IHN0YXRlLnNyYzsKLQlzdGF0ZS5vcmlnX2RzdCA9IHN0YXRlLmRzdDsKLQotCXJl dCA9IGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShwbGFuZSwgJnN0YXRlKTsKLQlpZiAocmV0KQot CQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gaW50ZWxfcHJlcGFyZV9zcHJpdGVfcGxhbmUocGxhbmUs ICZzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWludGVsX2NvbW1pdF9zcHJp dGVfcGxhbmUocGxhbmUsICZzdGF0ZSk7Ci0JcmV0dXJuIDA7CiB9CiAKIGludApAQCAtMTQ1OSw3 ICsxMzYwLDYgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpCiAJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9wbGFuZS0+cGlwZSk7 CiAKIAkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpbnRlbF91bnBpbl9mYl9v YmooaW50ZWxfcGxhbmUtPm9iaik7CiAJCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX3BsYW5lLT5v YmosIE5VTEwsCiAJCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUocGlwZSkpOwogCQltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKQEAgLTE1NTcsMjEgKzE0NTcsMTkgQEAgaW50 IGludGVsX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogaW50 IGludGVsX3BsYW5lX3Jlc3RvcmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKLQogCWlm ICghcGxhbmUtPmNydGMgfHwgIXBsYW5lLT5mYikKIAkJcmV0dXJuIDA7CiAKIAlyZXR1cm4gcGxh bmUtPmZ1bmNzLT51cGRhdGVfcGxhbmUocGxhbmUsIHBsYW5lLT5jcnRjLCBwbGFuZS0+ZmIsCi0J CQkJICBpbnRlbF9wbGFuZS0+Y3J0Y194LCBpbnRlbF9wbGFuZS0+Y3J0Y195LAotCQkJCSAgaW50 ZWxfcGxhbmUtPmNydGNfdywgaW50ZWxfcGxhbmUtPmNydGNfaCwKLQkJCQkgIGludGVsX3BsYW5l LT5zcmNfeCwgaW50ZWxfcGxhbmUtPnNyY195LAotCQkJCSAgaW50ZWxfcGxhbmUtPnNyY193LCBp bnRlbF9wbGFuZS0+c3JjX2gpOworCQkJCSAgcGxhbmUtPnN0YXRlLT5jcnRjX3gsIHBsYW5lLT5z dGF0ZS0+Y3J0Y195LAorCQkJCSAgcGxhbmUtPnN0YXRlLT5jcnRjX3csIHBsYW5lLT5zdGF0ZS0+ Y3J0Y19oLAorCQkJCSAgcGxhbmUtPnN0YXRlLT5zcmNfeCwgcGxhbmUtPnN0YXRlLT5zcmNfeSwK KwkJCQkgIHBsYW5lLT5zdGF0ZS0+c3JjX3csIHBsYW5lLT5zdGF0ZS0+c3JjX2gpOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsK LQkudXBkYXRlX3BsYW5lID0gaW50ZWxfdXBkYXRlX3BsYW5lLAotCS5kaXNhYmxlX3BsYW5lID0g aW50ZWxfc3ByaXRlX3BsYW5lX2Rpc2FibGUsCisJLnVwZGF0ZV9wbGFuZSA9IGRybV9wbGFuZV9o ZWxwZXJfdXBkYXRlLAorCS5kaXNhYmxlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxl LAogCS5kZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwKIAkuc2V0X3Byb3BlcnR5ID0gaW50 ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxf cGxhbmVfZHVwbGljYXRlX3N0YXRlLAotLSAKMS44LjUuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK