From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 13/21] drm/i915: Update reset path to fix incomplete requests Date: Mon, 5 Sep 2016 14:04:30 +0100 Message-ID: <20160905130438.31046-14-chris@chris-wilson.co.uk> References: <20160905130438.31046-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id DF86D6E3C0 for ; Mon, 5 Sep 2016 13:05:00 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id w207so13314926wmw.0 for ; Mon, 05 Sep 2016 06:05:00 -0700 (PDT) In-Reply-To: <20160905130438.31046-1-chris@chris-wilson.co.uk> 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: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org VXBkYXRlIHJlc2V0IHBhdGggaW4gcHJlcGFyYXRpb24gZm9yIGVuZ2luZSByZXNldCB3aGljaCBy ZXF1aXJlcwppZGVudGlmaWNhdGlvbiBvZiBpbmNvbXBsZXRlIHJlcXVlc3RzIGFuZCBhc3NvY2lh dGVkIGNvbnRleHQgYW5kIGZpeGluZwp0aGVpciBzdGF0ZSBzbyB0aGF0IGVuZ2luZSBjYW4gcmVz dW1lIGNvcnJlY3RseSBhZnRlciByZXNldC4KClRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBo YW5nIHdpbGwgYmUgc2tpcHBlZCBhbmQgaGVhZCBpcyByZXNldCB0byB0aGUKc3RhcnQgb2YgYnJl YWRjcnVtYi4gVGhpcyBhbGxvd3MgdXMgdG8gcmVzdW1lIGZyb20gd2hlcmUgd2UgbGVmdC1vZmYu ClNpbmNlIHRoaXMgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUgbm9ybWFsbHkgd2UgYWxzbyBuZWVk IHRvIGNsZWFudXAgZWxzcApxdWV1ZSBtYW51YWxseS4gVGhpcyBpcyB2aXRhbCBpZiB3ZSBlbXBs b3kgbm9uYmxvY2tpbmcgcmVxdWVzdApzdWJtaXNzaW9uIHdoZXJlIHdlIG1heSBoYXZlIGEgd2Vi IG9mIGRlcGVuZGVuY2llcyB1cG9uIHRoZSBodW5nIHJlcXVlc3QKYW5kIHNvIGFkdmFuY2luZyB0 aGUgc2Vxbm8gbWFudWFsbHkgaXMgbm8gbG9uZ2VyIHRyaXZpYWwuCgp2MjogTGVnYWN5IHJpbmdi dWZmZXIgc3VibWlzc2lvbiByZXF1aXJlZCBhIHJlc2V0IGZvbGxvd2luZyBoaWJlcm5hdGlvbiwK b3IgZWxzZSB3ZSByZXN0b3JlIHN0YWxlIHZhbHVlcyB0byB0aGUgUklOR19IRUFEIGFuZCB3YWxr ZWQgb3ZlcgpzdG9sZW4gZ2FyYmFnZS4KCnYzOiBHdUMgcmVxdWlyZXMgcmVwbGF5aW5nIHRoZSBy ZXF1ZXN0cyBhZnRlciBhIHJlc2V0LgoKdjQ6IFJlc3RvcmUgZW5naW5lIElSUSBhZnRlciByZXNl dCAoc28gd2FpdGVycyB3aWxsIGJlIHdva2VuISkKICAgIFJlYXJtIGhhbmdjaGVjayBpZiByZXNl dHRpbmcgd2l0aCBhIHdhaXRlci4KCkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgpDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+CkNj OiBBcnVuIFNpbHV2ZXJ5IDxhcnVuLnNpbHV2ZXJ5QGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDEyMyArKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgIHwgIDE2 IC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgOCAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgIDE1ICsrKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8ICA0OSArKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgICB8ICAgMyAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgIDQ3ICsrKysr KystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgfCAgIDcg Ky0KIDEwIGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBmZjQxNzNlNmUyOTguLmExYWI4MWY1ODVhYyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC01NTksNyArNTU5LDYgQEAgc3RhdGljIHZvaWQg aTkxNV9nZW1fZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCW11dGV4X2xvY2so JmRldi0+c3RydWN0X211dGV4KTsKLQlpOTE1X2dlbV9yZXNldChkZXYpOwogCWk5MTVfZ2VtX2Ns ZWFudXBfZW5naW5lcyhkZXYpOwogCWk5MTVfZ2VtX2NvbnRleHRfZmluaShkZXYpOwogCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMTU3OSw3ICsxNTc4LDcgQEAgc3RhdGlj IGludCBpOTE1X2RybV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRleF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaWYgKGk5MTVfZ2VtX2luaXRfaHcoZGV2KSkgewogCQlE Uk1fRVJST1IoImZhaWxlZCB0byByZS1pbml0aWFsaXplIEdQVSwgZGVjbGFyaW5nIHdlZGdlZCFc biIpOwotCQlzZXRfYml0KEk5MTVfV0VER0VELCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncyk7 CisJCWk5MTVfZ2VtX3NldF93ZWRnZWQoZGV2X3ByaXYpOwogCX0KIAltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKIApAQCAtMTc1Niw4ICsxNzU1LDYgQEAgaW50IGk5MTVfcmVzZXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJcHJfbm90aWNlKCJkcm0vaTkx NTogUmVzZXR0aW5nIGNoaXAgYWZ0ZXIgZ3B1IGhhbmdcbiIpOwogCi0JaTkxNV9nZW1fcmVzZXQo ZGV2KTsKLQogCXJldCA9IGludGVsX2dwdV9yZXNldChkZXZfcHJpdiwgQUxMX0VOR0lORVMpOwog CWlmIChyZXQpIHsKIAkJaWYgKHJldCAhPSAtRU5PREVWKQpAQCAtMTc2Nyw2ICsxNzY0LDcgQEAg aW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnb3Rv IGVycm9yOwogCX0KIAorCWk5MTVfZ2VtX3Jlc2V0KGRldl9wcml2KTsKIAlpbnRlbF9vdmVybGF5 X3Jlc2V0KGRldl9wcml2KTsKIAogCS8qIE9rLCBub3cgZ2V0IHRoaW5ncyBnb2luZyBhZ2Fpbi4u LiAqLwpAQCAtMTgwMSw3ICsxNzk5LDcgQEAgaW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiAwOwogCiBlcnJvcjoKLQlzZXRfYml0KEk5MTVf V0VER0VELCAmZXJyb3ItPmZsYWdzKTsKKwlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9wcml2KTsK IAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwZDBhZDU2MjY0 NTMuLjk3NzZmOTEzMTIyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMDMxLDYgKzIw MzEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAkvKiBBYnN0cmFjdCB0aGUgc3Vi bWlzc2lvbiBtZWNoYW5pc20gKGxlZ2FjeSByaW5nYnVmZmVyIG9yIGV4ZWNsaXN0cykgYXdheSAq LwogCXN0cnVjdCB7CisJCXZvaWQgKCpyZXN1bWUpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICop OwogCQl2b2lkICgqY2xlYW51cF9lbmdpbmUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7CiAKIAkJLyoqCkBAIC0zMjY0LDcgKzMyNjUsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBpOTE1 X3Jlc2V0X2NvdW50KHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCiAJcmV0dXJuIFJFQURf T05DRShlcnJvci0+cmVzZXRfY291bnQpOwogfQogCi12b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBib29sIGk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgZm9yY2UpOwogaW50IF9fbXVzdF9j aGVjayBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IF9fbXVzdF9j aGVjayBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpAQCAtMzM5Myw3 ICszMzk1LDYgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1f Y29udGV4dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpOTE1X2dlbV9jb250 ZXh0X2xvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9n ZW1fY29udGV4dF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotdm9pZCBpOTE1X2dlbV9j b250ZXh0X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGk5MTVfZ2VtX2NvbnRl eHRfb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwog dm9pZCBpOTE1X2dlbV9jb250ZXh0X2Nsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSk7CiBpbnQgaTkxNV9zd2l0Y2hfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCAyMzA2OWEy ZDI4NTAuLmU2ZTZmNTVhMGYyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yNTU1LDI5 ICsyNTU1LDgzIEBAIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2dl bV9yZXNldF9lbmdpbmVfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0 YXRpYyB2b2lkIHJlc2V0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQoreworCXZvaWQgKnZhZGRyID0gcmVxdWVzdC0+cmluZy0+dmFkZHI7CisJdTMyIGhlYWQ7 CisKKwkvKiBBcyB0aGlzIHJlcXVlc3QgbGlrZWx5IGRlcGVuZHMgb24gc3RhdGUgZnJvbSB0aGUg bG9zdAorCSAqIGNvbnRleHQsIGNsZWFyIG91dCBhbGwgdGhlIHVzZXIgb3BlcmF0aW9ucyBsZWF2 aW5nIHRoZQorCSAqIGJyZWFkY3J1bWIgYXQgdGhlIGVuZCAoc28gd2UgZ2V0IHRoZSBmZW5jZSBu b3RpZmljYXRpb25zKS4KKwkgKi8KKwloZWFkID0gcmVxdWVzdC0+aGVhZDsKKwlpZiAocmVxdWVz dC0+cG9zdGZpeCA8IGhlYWQpIHsKKwkJbWVtc2V0KHZhZGRyICsgaGVhZCwgMCwgcmVxdWVzdC0+ cmluZy0+c2l6ZSAtIGhlYWQpOworCQloZWFkID0gMDsKKwl9CisJbWVtc2V0KHZhZGRyICsgaGVh ZCwgMCwgcmVxdWVzdC0+cG9zdGZpeCAtIGhlYWQpOworCisJaTkxNV9zZXRfcmVzZXRfc3RhdHVz KHJlcXVlc3QtPmN0eCwgZmFsc2UpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqaW5jb21w bGV0ZV9jdHg7CiAJYm9vbCByaW5nX2h1bmc7CiAKKwkvKiBFbnN1cmUgaXJxIGhhbmRsZXIgZmlu aXNoZXMsIGFuZCBub3QgcnVuIGFnYWluLiAqLworCXRhc2tsZXRfa2lsbCgmZW5naW5lLT5pcnFf dGFza2xldCk7CisKIAlyZXF1ZXN0ID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdp bmUpOwotCWlmIChyZXF1ZXN0ID09IE5VTEwpCisJaWYgKCFyZXF1ZXN0KQogCQlyZXR1cm47CiAK IAlyaW5nX2h1bmcgPSBlbmdpbmUtPmhhbmdjaGVjay5zY29yZSA+PSBIQU5HQ0hFQ0tfU0NPUkVf UklOR19IVU5HOwotCiAJaTkxNV9zZXRfcmVzZXRfc3RhdHVzKHJlcXVlc3QtPmN0eCwgcmluZ19o dW5nKTsKKworCURSTV9ERUJVR19EUklWRVIoInJlc2V0aW5nICVzIHRvIHN0YXJ0IGZyb20gdGFp bCBvZiByZXF1ZXN0IDB4JXhcbiIsCisJCQkgZW5naW5lLT5uYW1lLCByZXF1ZXN0LT5mZW5jZS5z ZXFubyk7CisKKwkvKiBTZXR1cCB0aGUgQ1MgdG8gcmVzdW1lIGZyb20gdGhlIGJyZWFkY3J1bWIg b2YgdGhlIGh1bmcgcmVxdWVzdCAqLworCWVuZ2luZS0+cmVzZXRfaHcoZW5naW5lLCByZXF1ZXN0 KTsKKworCS8qIFVzZXJzIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQgZG8gbm90IHJlbHkgb24gbG9n aWNhbCBzdGF0ZQorCSAqIHByZXNlcnZlZCBiZXR3ZWVuIGJhdGNoZXMuIFRoZXkgaGF2ZSB0byBl bWl0IGZ1bGwgc3RhdGUgb24KKwkgKiBldmVyeSBiYXRjaCBhbmQgc28gaXQgaXMgc2FmZSB0byBl eGVjdXRlIHF1ZXVlZCByZXF1ZXN0cyBmb2xsb3dpbmcKKwkgKiB0aGUgaGFuZy4KKwkgKgorCSAq IE90aGVyIGNvbnRleHRzIHByZXNlcnZlIHN0YXRlLCBub3cgY29ycnVwdC4gV2Ugd2FudCB0byBz a2lwIGFsbAorCSAqIHF1ZXVlZCByZXF1ZXN0cyB0aGF0IHJlZmVyZW5jZSB0aGUgY29ycnVwdCBj b250ZXh0LgorCSAqLworCWluY29tcGxldGVfY3R4ID0gcmVxdWVzdC0+Y3R4OworCWlmIChpOTE1 X2dlbV9jb250ZXh0X2lzX2RlZmF1bHQoaW5jb21wbGV0ZV9jdHgpKQorCQlyZXR1cm47CisKIAls aXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlz dCwgbGluaykKLQkJaTkxNV9zZXRfcmVzZXRfc3RhdHVzKHJlcXVlc3QtPmN0eCwgZmFsc2UpOwor CQlpZiAocmVxdWVzdC0+Y3R4ID09IGluY29tcGxldGVfY3R4KQorCQkJcmVzZXRfcmVxdWVzdChy ZXF1ZXN0KTsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5lX2NsZWFudXAo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQordm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0OwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKIAotCS8qIEVuc3VyZSBpcnEgaGFuZGxlciBmaW5pc2hlcywg YW5kIG5vdCBydW4gYWdhaW4uICovCi0JdGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90YXNrbGV0 KTsKKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOworCisJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpCisJCWk5MTVfZ2VtX3Jlc2V0X2VuZ2luZShlbmdpbmUpOwor CisJaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoJmRldl9wcml2LT5kcm0pOworfQorCitzdGF0aWMg dm9pZCBub3Bfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQoreworfQorCitzdGF0aWMgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IG5v cF9zdWJtaXRfcmVxdWVzdDsKIAogCS8qIE1hcmsgYWxsIHBlbmRpbmcgcmVxdWVzdHMgYXMgY29t cGxldGUgc28gdGhhdCBhbnkgY29uY3VycmVudAogCSAqIChsb2NrbGVzcykgbG9va3VwIGRvZXNu J3QgdHJ5IGFuZCB3YWl0IHVwb24gdGhlIHJlcXVlc3QgYXMgd2UKQEAgLTI2MDAsNTQgKzI2NTQs MjIgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5lX2NsZWFudXAoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlzcGluX3VubG9jaygmZW5naW5lLT5leGVjbGlzdF9s b2NrKTsKIAl9CiAKLQkvKgotCSAqIFdlIG11c3QgZnJlZSB0aGUgcmVxdWVzdHMgYWZ0ZXIgYWxs IHRoZSBjb3JyZXNwb25kaW5nIG9iamVjdHMgaGF2ZQotCSAqIGJlZW4gbW92ZWQgb2ZmIGFjdGl2 ZSBsaXN0cy4gV2hpY2ggaXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIG5vcm1hbAotCSAqIHJldGly ZV9yZXF1ZXN0cyBmdW5jdGlvbiBkb2VzLiBUaGlzIGlzIGltcG9ydGFudCBpZiBvYmplY3QgaG9s ZAotCSAqIGltcGxpY2l0IHJlZmVyZW5jZXMgb24gdGhpbmdzIGxpa2UgZS5nLiBwcGd0dCBhZGRy ZXNzIHNwYWNlcyB0aHJvdWdoCi0JICogdGhlIHJlcXVlc3QuCi0JICovCi0JcmVxdWVzdCA9IGk5 MTVfZ2VtX2FjdGl2ZV9yYXcoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0LAotCQkJCSAgICAgICZlbmdp bmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXF1ZXN0KQotCQlpOTE1X2dlbV9y ZXF1ZXN0X3JldGlyZV91cHRvKHJlcXVlc3QpOwotCUdFTV9CVUdfT04oaW50ZWxfZW5naW5lX2lz X2FjdGl2ZShlbmdpbmUpKTsKLQotCS8qIEhhdmluZyBmbHVzaGVkIGFsbCByZXF1ZXN0cyBmcm9t IGFsbCBxdWV1ZXMsIHdlIGtub3cgdGhhdCBhbGwKLQkgKiByaW5nYnVmZmVycyBtdXN0IG5vdyBi ZSBlbXB0eS4gSG93ZXZlciwgc2luY2Ugd2UgZG8gbm90IHJlY2xhaW0KLQkgKiBhbGwgc3BhY2Ug d2hlbiByZXRpcmluZyB0aGUgcmVxdWVzdCAodG8gcHJldmVudCBIRUFEcyBjb2xsaWRpbmcKLQkg KiB3aXRoIHJhcGlkIHJpbmdidWZmZXIgd3JhcGFyb3VuZCkgdGhlIGFtb3VudCBvZiBhdmFpbGFi bGUgc3BhY2UKLQkgKiB1cG9uIHJlc2V0IGlzIGxlc3MgdGhhbiB3aGVuIHdlIHN0YXJ0LiBEbyBv bmUgbW9yZSBwYXNzIG92ZXIKLQkgKiBhbGwgdGhlIHJpbmdidWZmZXJzIHRvIHJlc2V0IGxhc3Rf cmV0aXJlZF9oZWFkLgotCSAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkocmluZywgJmVuZ2luZS0+ YnVmZmVycywgbGluaykgewotCQlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IHJpbmctPnRhaWw7 Ci0JCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwotCX0KLQogCWVuZ2luZS0+aTkxNS0+ Z3QuYWN0aXZlX2VuZ2luZXMgJj0gfmludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7CiB9CiAKLXZv aWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3ZvaWQgaTkxNV9nZW1f c2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKIAotCS8qCi0JICogQmVmb3JlIHdlIGZyZWUgdGhlIG9iamVj dHMgZnJvbSB0aGUgcmVxdWVzdHMsIHdlIG5lZWQgdG8gaW5zcGVjdAotCSAqIHRoZW0gZm9yIGZp bmRpbmcgdGhlIGd1aWx0eSBwYXJ0eS4gQXMgdGhlIHJlcXVlc3RzIG9ubHkgYm9ycm93Ci0JICog dGhlaXIgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3RzLCB0aGUgaW5zcGVjdGlvbiBtdXN0IGJlIGRv bmUgZmlyc3QuCi0JICovCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCi0JCWk5 MTVfZ2VtX3Jlc2V0X2VuZ2luZV9zdGF0dXMoZW5naW5lKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxk KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJc2V0X2JpdChJOTE1X1dFREdFRCwgJmRl dl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpOwogCisJaTkxNV9nZW1fY29udGV4dF9sb3N0KGRldl9w cml2KTsKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikKLQkJaTkxNV9nZW1fcmVz ZXRfZW5naW5lX2NsZWFudXAoZW5naW5lKTsKKwkJaTkxNV9nZW1fY2xlYW51cF9lbmdpbmUoZW5n aW5lKTsKIAltb2RfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwgJmRldl9wcml2LT5ndC5pZGxl X3dvcmssIDApOwogCi0JaTkxNV9nZW1fY29udGV4dF9yZXNldChkZXYpOwotCi0JaTkxNV9nZW1f cmVzdG9yZV9mZW5jZXMoZGV2KTsKKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYp OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDM0Myw4ICs0MzY1LDcgQEAgdm9pZCBpOTE1X2dlbV9y ZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiBndWFyYW50ZWUgdGhhdCB0aGUgY29u dGV4dCBpbWFnZSBpcyBjb21wbGV0ZS4gU28gbGV0J3MganVzdCByZXNldAogCSAqIGl0IGFuZCBz dGFydCBhZ2Fpbi4KIAkgKi8KLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQotCQlpbnRlbF9s cl9jb250ZXh0X3Jlc2V0KGRldl9wcml2LCBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQpOworCWRl dl9wcml2LT5ndC5yZXN1bWUoZGV2X3ByaXYpOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CiB9CkBAIC00NDk2LDggKzQ1MTcsMTAgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAK IAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgeworCQlkZXZfcHJpdi0+Z3QucmVzdW1lID0g aW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1lOwogCQlkZXZfcHJpdi0+Z3QuY2xlYW51cF9l bmdpbmUgPSBpbnRlbF9lbmdpbmVfY2xlYW51cDsKIAl9IGVsc2UgeworCQlkZXZfcHJpdi0+Z3Qu cmVzdW1lID0gaW50ZWxfbHJfY29udGV4dF9yZXN1bWU7CiAJCWRldl9wcml2LT5ndC5jbGVhbnVw X2VuZ2luZSA9IGludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwOwogCX0KIApAQCAtNDUzMCw3ICs0 NTUzLDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJICog Zm9yIGFsbCBvdGhlciBmYWlsdXJlLCBzdWNoIGFzIGFuIGFsbG9jYXRpb24gZmFpbHVyZSwgYmFp bC4KIAkJICovCiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgR1BVLCBkZWNsYXJp bmcgaXQgd2VkZ2VkXG4iKTsKLQkJc2V0X2JpdChJOTE1X1dFREdFRCwgJmRldl9wcml2LT5ncHVf ZXJyb3IuZmxhZ3MpOworCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9wcml2KTsKIAkJcmV0ID0g MDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCAzNTk1 MGVlNDZhMWQuLmRmMTBmNGU5NTczNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwpAQCAtNDIwLDIyICs0MjAsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0 X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJfQogfQogCi12b2lkIGk5MTVf Z2VtX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0KLQlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0KLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3Rz KSB7Ci0JCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0KLQkJbGlzdF9mb3JfZWFjaF9l bnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dF9saXN0LCBsaW5rKQotCQkJaW50ZWxfbHJfY29u dGV4dF9yZXNldChkZXZfcHJpdiwgY3R4KTsKLQl9Ci0KLQlpOTE1X2dlbV9jb250ZXh0X2xvc3Qo ZGV2X3ByaXYpOwotfQotCiBpbnQgaTkxNV9nZW1fY29udGV4dF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4 IDMyNjk5YTc0NGFjYS4uZTUxZmNlOGMxMWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCkBAIC05OTgsNiArOTk4LDcgQEAgaW50IGk5MTVfZ3VjX3N1Ym1p c3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKIAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50 ICpjbGllbnQ7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAogCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJt aXNzaW9uICovCiAJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXZfcHJpdiwKQEAgLTEwMTQs OSArMTAxNSwxNCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWd1Y19pbml0X2Rvb3JiZWxsX2h3KGd1Yyk7CiAKIAkv KiBUYWtlIG92ZXIgZnJvbSBtYW51YWwgY29udHJvbCBvZiBFTFNQIChleGVjbGlzdHMpICovCi0J Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCisJZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgZGV2X3ByaXYpIHsKIAkJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGk5MTVfZ3VjX3N1Ym1p dDsKIAorCQkvKiBSZXBsYXkgdGhlIGN1cnJlbnQgc2V0IG9mIHByZXZpb3VzbHkgc3VibWl0dGVk IHJlcXVlc3RzICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+cmVx dWVzdF9saXN0LCBsaW5rKQorCQkJaTkxNV9ndWNfc3VibWl0KHJlcXVlc3QpOworCX0KKwogCXJl dHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDJl OTZhODYxMDVjMi4uZTQwNWYxMDgwMjk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYwpAQCAtMjExLDYgKzIxMSw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfaGFuZ2No ZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAltZW1zZXQoJmVuZ2luZS0+ aGFuZ2NoZWNrLCAwLCBzaXplb2YoZW5naW5lLT5oYW5nY2hlY2spKTsKIAljbGVhcl9iaXQoZW5n aW5lLT5pZCwgJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MpOworCWlm IChpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKQorCQlpOTE1X3F1ZXVlX2hhbmdjaGVj ayhlbmdpbmUtPmk5MTUpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9yZXF1 ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCkBAIC0yMzAsNyArMjMyLDYgQEAg c3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogICovCiB2b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmJ1 ZmZlcnMpOwogCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKIAlzcGlu X2xvY2tfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIApAQCAtMzA2LDYgKzMwNywxOCBA QCBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlyZXR1cm4gMDsKIH0KIAordm9pZCBpbnRlbF9lbmdpbmVfcmVzZXRfaXJxKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CisKKwlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJx X2xvY2spOworCWlmIChpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKQorCQllbmdpbmUt PmlycV9lbmFibGUoZW5naW5lKTsKKwllbHNlCisJCWVuZ2luZS0+aXJxX2Rpc2FibGUoZW5naW5l KTsKKwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cit9CisKIC8qKgogICog aW50ZWxfZW5naW5lc19jbGVhbnVwX2NvbW1vbiAtIGNsZWFucyB1cCB0aGUgZW5naW5lIHN0YXRl IGNyZWF0ZWQgYnkKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbW9u IGluaXRpYWlsaXplcnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGEzMzY4N2QyOTRi NS4uNjE1NDlhNjIzZTJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTIyMiwxMSAr MTIyMiwxNiBAQCBzdGF0aWMgdm9pZCBscmNfaW5pdF9od3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKKwlpbnQgcmV0OworCisJcmV0ID0gaW50ZWxfbW9jc19pbml0X2Vu Z2luZShlbmdpbmUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKIAlscmNfaW5pdF9od3Mo ZW5naW5lKTsKIAotCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKLQkJICAgICAgIH4oZW5naW5lLT5p cnFfZW5hYmxlX21hc2sgfCBlbmdpbmUtPmlycV9rZWVwX21hc2spKTsKKwlpbnRlbF9lbmdpbmVf cmVzZXRfaXJxKGVuZ2luZSk7CisKIAlJOTE1X1dSSVRFKFJJTkdfSFdTVEFNKGVuZ2luZS0+bW1p b19iYXNlKSwgMHhmZmZmZmZmZik7CiAKIAlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KGVuZ2lu ZSksCkBAIC0xMjM3LDcgKzEyNDIsMTAgQEAgc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jp bmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJaW50ZWxfZW5naW5lX2luaXRf aGFuZ2NoZWNrKGVuZ2luZSk7CiAKLQlyZXR1cm4gaW50ZWxfbW9jc19pbml0X2VuZ2luZShlbmdp bmUpOworCWlmICghZXhlY2xpc3RzX2Vsc3BfaWRsZShlbmdpbmUpKQorCQlleGVjbGlzdHNfc3Vi bWl0X3BvcnRzKGVuZ2luZSk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBnZW44X2lu aXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpAQCAtMTI3Myw2 ICsxMjgxLDM2IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gaW5pdF93b3JrYXJvdW5kc19yaW5nKGVuZ2lu ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKKwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5 MTU7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQ7 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gJnJlcXVlc3QtPmN0eC0+ZW5naW5lW2VuZ2lu ZS0+aWRdOworCisJLyogTW92ZSB0aGUgUklOR19IRUFEIG9udG8gdGhlIGJyZWFkY3J1bWIsIHBh c3QgdGhlIGhhbmdpbmcgYmF0Y2ggKi8KKwljZS0+bHJjX3JlZ19zdGF0ZVtDVFhfUklOR19IRUFE KzFdID0gcmVxdWVzdC0+cG9zdGZpeDsKKwlyZXF1ZXN0LT5yaW5nLT5oZWFkID0gcmVxdWVzdC0+ cG9zdGZpeDsKKwlyZXF1ZXN0LT5yaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOworCWludGVs X3JpbmdfdXBkYXRlX3NwYWNlKHJlcXVlc3QtPnJpbmcpOworCisJaWYgKGk5MTUuZW5hYmxlX2d1 Y19zdWJtaXNzaW9uKQorCQlyZXR1cm47CisKKwkvKiBDYXRjaCB1cCB3aXRoIGFueSBtaXNzZWQg Y29udGV4dC1zd2l0Y2ggaW50ZXJydXB0cyAqLworCUk5MTVfV1JJVEUoUklOR19DT05URVhUX1NU QVRVU19QVFIoZW5naW5lKSwgX01BU0tFRF9GSUVMRCgweGZmZmYsIDApKTsKKwlpZiAocmVxdWVz dC0+Y3R4ICE9IHBvcnRbMF0ucmVxdWVzdC0+Y3R4KSB7CisJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0 KHBvcnRbMF0ucmVxdWVzdCk7CisJCXBvcnRbMF0gPSBwb3J0WzFdOworCQltZW1zZXQoJnBvcnRb MV0sIDAsIHNpemVvZihwb3J0WzFdKSk7CisJfQorCisJLyogQ1MgaXMgc3RvcHBlZCwgYW5kIHdl IHdpbGwgcmVzdWJtaXQgYm90aCBwb3J0cyBvbiByZXN1bWUgKi8KKwlHRU1fQlVHX09OKHJlcXVl c3QtPmN0eCAhPSBwb3J0WzBdLnJlcXVlc3QtPmN0eCk7CisJcG9ydFswXS5jb3VudCA9IDA7CisJ cG9ydFsxXS5jb3VudCA9IDA7Cit9CisKIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQgPSByZXEtPmN0eC0+cHBndHQ7CkBAIC0xNjM1LDYgKzE2NzMsNyBA QCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogewogCS8qIERlZmF1bHQgdmZ1bmNzIHdoaWNoIGNhbiBiZSBvdmVycmlkZW4gYnkgZWFj aCBlbmdpbmUuICovCiAJZW5naW5lLT5pbml0X2h3ID0gZ2VuOF9pbml0X2NvbW1vbl9yaW5nOwor CWVuZ2luZS0+cmVzZXRfaHcgPSByZXNldF9jb21tb25fcmluZzsKIAllbmdpbmUtPmVtaXRfZmx1 c2ggPSBnZW44X2VtaXRfZmx1c2g7CiAJZW5naW5lLT5lbWl0X3JlcXVlc3QgPSBnZW44X2VtaXRf cmVxdWVzdDsKIAllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gZXhlY2xpc3RzX3N1Ym1pdF9yZXF1 ZXN0OwpAQCAtMjA4Nyw5ICsyMTI2LDkgQEAgZXJyb3JfZGVyZWZfb2JqOgogCXJldHVybiByZXQ7 CiB9CiAKLXZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCQkgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3ZvaWQg aW50ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogeworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBkZXZfcHJpdi0+a2VybmVsX2Nv bnRleHQ7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCiAJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKaW5kZXggNGQ3 MDM0NjUwMGMyLi40ZmVkODE2NWY5OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCkBAIC04 Nyw4ICs4Nyw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAogCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKIAotdm9pZCBpbnRlbF9s cl9jb250ZXh0X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAg ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsKK3ZvaWQgaW50ZWxfbHJfY29udGV4dF9y ZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHVpbnQ2NF90IGludGVs X2xyX2NvbnRleHRfZGVzY3JpcHRvcihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJ CSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGUwNGI1OGE4YWEwYS4uN2YzOGEzZTQyMzlkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC01NjQsNiArNTY0LDgg QEAgc3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAllbHNlCiAJCXJpbmdfc2V0dXBfcGh5c19zdGF0dXNfcGFnZShlbmdpbmUpOwogCisJ aW50ZWxfZW5naW5lX3Jlc2V0X2lycShlbmdpbmUpOworCiAJLyogRW5mb3JjZSBvcmRlcmluZyBi eSByZWFkaW5nIEhFQUQgcmVnaXN0ZXIgYmFjayAqLwogCUk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7 CiAKQEAgLTU3NywzNCArNTc5LDMzIEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkp CiAJCURSTV9ERUJVRygiJXMgaW5pdGlhbGl6YXRpb24gZmFpbGVkIFtoZWFkPSUwOHhdLCBmdWRn aW5nXG4iLAogCQkJICBlbmdpbmUtPm5hbWUsIEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkpOwotCUk5 MTVfV1JJVEVfSEVBRChlbmdpbmUsIDApOwotCSh2b2lkKUk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7 CisKKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKKwlJOTE1X1dSSVRFX0hFQUQoZW5n aW5lLCByaW5nLT5oZWFkKTsKKwlJOTE1X1dSSVRFX1RBSUwoZW5naW5lLCByaW5nLT50YWlsKTsK Kwkodm9pZClJOTE1X1JFQURfVEFJTChlbmdpbmUpOwogCiAJSTkxNV9XUklURV9DVEwoZW5naW5l LAogCQkJKChyaW5nLT5zaXplIC0gUEFHRV9TSVpFKSAmIFJJTkdfTlJfUEFHRVMpCiAJCQl8IFJJ TkdfVkFMSUQpOwogCiAJLyogSWYgdGhlIGhlYWQgaXMgc3RpbGwgbm90IHplcm8sIHRoZSByaW5n IGlzIGRlYWQgKi8KLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRF9DVEwoZW5naW5lKSAmIFJJTkdf VkFMSUQpICE9IDAgJiYKLQkJICAgICBJOTE1X1JFQURfU1RBUlQoZW5naW5lKSA9PSBpOTE1X2dn dHRfb2Zmc2V0KHJpbmctPnZtYSkgJiYKLQkJICAgICAoSTkxNV9SRUFEX0hFQUQoZW5naW5lKSAm IEhFQURfQUREUikgPT0gMCwgNTApKSB7CisJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyX2Z3 KGRldl9wcml2LCBSSU5HX0NUTChlbmdpbmUtPm1taW9fYmFzZSksCisJCQkJICAgICAgIFJJTkdf VkFMSUQsIFJJTkdfVkFMSUQsCisJCQkJICAgICAgIDUwKSkgewogCQlEUk1fRVJST1IoIiVzIGlu aXRpYWxpemF0aW9uIGZhaWxlZCAiCi0JCQkgICJjdGwgJTA4eCAodmFsaWQ/ICVkKSBoZWFkICUw OHggdGFpbCAlMDh4IHN0YXJ0ICUwOHggW2V4cGVjdGVkICUwOHhdXG4iLAorCQkJICAiY3RsICUw OHggKHZhbGlkPyAlZCkgaGVhZCAlMDh4IFslMDh4XSB0YWlsICUwOHggWyUwOHhdIHN0YXJ0ICUw OHggW2V4cGVjdGVkICUwOHhdXG4iLAogCQkJICBlbmdpbmUtPm5hbWUsCiAJCQkgIEk5MTVfUkVB RF9DVEwoZW5naW5lKSwKIAkJCSAgSTkxNV9SRUFEX0NUTChlbmdpbmUpICYgUklOR19WQUxJRCwK LQkJCSAgSTkxNV9SRUFEX0hFQUQoZW5naW5lKSwgSTkxNV9SRUFEX1RBSUwoZW5naW5lKSwKKwkJ CSAgSTkxNV9SRUFEX0hFQUQoZW5naW5lKSwgcmluZy0+aGVhZCwKKwkJCSAgSTkxNV9SRUFEX1RB SUwoZW5naW5lKSwgcmluZy0+dGFpbCwKIAkJCSAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSksCiAJ CQkgIGk5MTVfZ2d0dF9vZmZzZXQocmluZy0+dm1hKSk7CiAJCXJldCA9IC1FSU87CiAJCWdvdG8g b3V0OwogCX0KIAotCXJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Ci0JcmluZy0+aGVhZCA9 IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7Ci0JcmluZy0+dGFpbCA9IEk5MTVfUkVBRF9UQUlMKGVu Z2luZSkgJiBUQUlMX0FERFI7Ci0JaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZyk7Ci0KIAlp bnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKIAogb3V0OgpAQCAtNjEzLDYgKzYx NCwxNSBAQCBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgcmVzZXRfcmluZ19j b21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQoreworCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxdWVzdC0+cmluZzsKKworCXJpbmctPmhlYWQgPSByZXF1ZXN0LT5wb3N0Zml4OworCXJp bmctPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cit9CisKIHN0YXRpYyBpbnQgaW50ZWxfcmluZ193 b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewogCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwpAQCAtMjAwNyw3ICsyMDE3LDYgQEAg aW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwg aW50IHNpemUpCiAJfQogCXJpbmctPnZtYSA9IHZtYTsKIAotCWxpc3RfYWRkKCZyaW5nLT5saW5r LCAmZW5naW5lLT5idWZmZXJzKTsKIAlyZXR1cm4gcmluZzsKIH0KIApAQCAtMjAxNSw3ICsyMDI0 LDYgQEAgdm9pZAogaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQogewog CWk5MTVfdm1hX3B1dChyaW5nLT52bWEpOwotCWxpc3RfZGVsKCZyaW5nLT5saW5rKTsKIAlrZnJl ZShyaW5nKTsKIH0KIApAQCAtMjE2OSw2ICsyMTc3LDE2IEBAIHZvaWQgaW50ZWxfZW5naW5lX2Ns ZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+aTkxNSA9IE5V TEw7CiB9CiAKK3ZvaWQgaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1lKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgeworCQllbmdpbmUtPmJ1 ZmZlci0+aGVhZCA9IGVuZ2luZS0+YnVmZmVyLT50YWlsOworCQllbmdpbmUtPmJ1ZmZlci0+bGFz dF9yZXRpcmVkX2hlYWQgPSAtMTsKKwl9Cit9CisKIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVl c3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlpbnQg cmV0OwpAQCAtMjY1NCw2ICsyNjcyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0 X3ZmdW5jcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfcmluZ19p bml0X3NlbWFwaG9yZXMoZGV2X3ByaXYsIGVuZ2luZSk7CiAKIAllbmdpbmUtPmluaXRfaHcgPSBp bml0X3JpbmdfY29tbW9uOworCWVuZ2luZS0+cmVzZXRfaHcgPSByZXNldF9yaW5nX2NvbW1vbjsK IAogCWVuZ2luZS0+ZW1pdF9yZXF1ZXN0ID0gaTl4eF9lbWl0X3JlcXVlc3Q7CiAJaWYgKGk5MTUu c2VtYXBob3JlcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAx ODg0OGFjZjVlNzQuLjMyZjUyNzQ0NzMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaApAQCAtODcsNyArODcsNiBAQCBzdHJ1Y3QgaW50ZWxfcmluZyB7CiAJdm9pZCAq dmFkZHI7CiAKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0Jc3RydWN0IGxpc3Rf aGVhZCBsaW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2xpc3Q7CiAKQEAgLTE1Nyw3 ICsxNTYsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAl1MzIJCW1taW9fYmFzZTsKIAl1 bnNpZ25lZCBpbnQgaXJxX3NoaWZ0OwogCXN0cnVjdCBpbnRlbF9yaW5nICpidWZmZXI7Ci0Jc3Ry dWN0IGxpc3RfaGVhZCBidWZmZXJzOwogCiAJLyogUmF0aGVyIHRoYW4gaGF2ZSBldmVyeSBjbGll bnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVwdHMsCiAJICogd2l0aCB0aGUgaGVyZCB3YWtp bmcgYWZ0ZXIgZXZlcnkgaW50ZXJydXB0IGFuZCBlYWNoIGRvaW5nIHRoZQpAQCAtMjExLDYgKzIw OSw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCXZvaWQJCSgqaXJxX2Rpc2FibGUpKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIAlpbnQJCSgqaW5pdF9odykoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKwl2b2lkCQkoKnJlc2V0X2h3KShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKTsKIAogCWludAkJKCppbml0X2NvbnRleHQpKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKIApAQCAtNDQ0LDYgKzQ0NCw4IEBAIHZvaWQgaW50ZWxfcmluZ19mcmVlKHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKIHZvaWQgaW50ZWxfZW5naW5lX3N0b3Aoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAordm9pZCBpbnRlbF9sZWdhY3lfc3VibWlzc2lv bl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKwogaW50IGludGVs X3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KTsKIAogaW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbik7CkBAIC00ODIsNiArNDg0LDcgQEAgaW50IF9f aW50ZWxfcmluZ19zcGFjZShpbnQgaGVhZCwgaW50IHRhaWwsIGludCBzaXplKTsKIHZvaWQgaW50 ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwogCiB2b2lkIGlu dGVsX2VuZ2luZV9pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMy IHNlcW5vKTsKK3ZvaWQgaW50ZWxfZW5naW5lX3Jlc2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwogCiB2b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK