From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 4/5] drm/i915/gen11: Start distinguishing 'phy' from 'port' Date: Fri, 21 Jun 2019 07:08:39 -0700 Message-ID: <20190621140839.21448-1-matthew.d.roper@intel.com> References: <20190621020132.1164-5-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id A175A6E8C3 for ; Fri, 21 Jun 2019 14:09:00 +0000 (UTC) In-Reply-To: <20190621020132.1164-5-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: Lucas De Marchi List-Id: intel-gfx@lists.freedesktop.org T3VyIHBhc3QgRERJLWJhc2VkIEludGVsIHBsYXRmb3JtcyBoYXZlIGhhZCBhIGZpeGVkIERESTwt PlBIWSBtYXBwaW5nLgpCZWNhdXNlIG9mIHRoaXMsIGJvdGggdGhlIGJzcGVjIGRvY3VtZW50YXRp b24gYW5kIG91ciBpOTE1IGNvZGUgaGFzIHVzZWQKdGhlIHRlcm0gInBvcnQiIHdoZW4gdGFsa2lu ZyBhYm91dCBlaXRoZXIgRERJJ3Mgb3IgUEhZJ3M7IGl0IHdhcyBhbHdheXMKZWFzeSB0byB0ZWxs IHdoYXQgdGVybXMgbGlrZSAiUG9ydCBBIiB3ZXJlIHJlZmVycmluZyB0byBmcm9tIHRoZQpjb250 ZXh0LgoKVW5mb3J0dW5hdGVseSB0aGlzIGlzIHN0YXJ0aW5nIHRvIGJyZWFrIGRvd24gbm93IHRo YXQgRUhMIGFsbG93cyBQSFktQQp0byBiZSBkcml2ZW4gYnkgZWl0aGVyIERESS1BIG9yIERESS1E LiAgSXMgYSBzZXR1cCB3aXRoIERESS1EIGRyaXZpbmcKUEhZLUEgY29uc2lkZXJlZCAiUG9ydCBB IiBvciAiUG9ydCBEPyIgIFRoZSBhbnN3ZXIgZGVwZW5kcyBvbiB3aGljaApyZWdpc3RlciB3ZSdy ZSB3b3JraW5nIHdpdGgsIGFuZCBldmVuIHRoZSBic3BlYyBkb2Vzbid0IGRvIGEgZ3JlYXQgam9i Cm9mIGNsYXJpZnlpbmcgdGhpcy4KCkxldCdzIHRyeSB0byBiZSBtb3JlIGV4cGxpY2l0IGFib3V0 IHdoZXRoZXIgd2UncmUgdGFsa2luZyBhYm91dCB0aGUgRERJCm9yIHRoZSBQSFkgb24gZ2VuMTEr IGJ5IHVzaW5nICdwb3J0JyB0byByZWZlciB0byB0aGUgRERJIGFuZCBjcmVhdGluZyBhCm5ldyAn ZW51bSBwaHknIG5hbWVzcGFjZSB0byByZWZlciB0byB0aGUgUEhZIGluIHVzZS4KCkEgZmV3IGdl bmVyYWwgbm90ZXM6CgogLSBJQ0xfUE9SVF9DT01QXyogYW5kIElDTF9QT1JUX0NMXyogYmVsb25n IHRvIHRoZSBhY3R1YWwgY29tYm8gUEhZIHNvCiAgIHRoZXkgc2hvdWxkIGFsd2F5cyBiZSBwcm9n cmFtbWVkIGFjY29yZGluZyB0byB0aGUgUEhZIGluIHVzZSwKICAgcmVnYXJkbGVzcyBvZiB3aGlj aCBEREkgaXMgZHJpdmluZyBpdC4KCiAtIFRoZSBwaXBlIHBhcnQgb2YgdGhlIGhhcmR3YXJlIGV4 cGVjdHMgInBvcnQiIHRvIHJlZmVyIHRvIHRoZQogICBEREksIHNvIHJlZ2lzdGVycyBsaWtlIFRS QU5TX0NMS19TRUwgYW5kIFRSQU5TX0RESV9GVU5DX0NUTCBzaG91bGQKICAgc2V0IGJpdHMgYWNj b3JkaW5nIHRvIHRoZSBkZXNpcmVkIERESSAoZS5nLiwgRERJLUQpIHJhdGhlciB0aGFuIHRoZQog ICBQSFkgKFBIWS1BKS4KCiAtIE5vbi1waXBlIHJlZ2lzdGVycyByZWZlciB0byB0aGUgUEhZLiAg Tm90YWJseSwgRFBDTEtBX0NGR0NSMF9JQ0wKICAgbmVlZHMgdG8gc2V0IGJpdHMgYWNjb3JkaW5n IHRvIHRoZSBQSFkuCgpNb3N0IG9mIHRoZSBjaGFuZ2VzIGhlcmUgYXJlIG9uIHRoZSBjb21ibyBQ SFkgc2lkZS4gIEkgZGlkbid0IHRvdWNoIG1vc3QKb2YgdGhlIFRDIHBvcnQgY29kZSB5ZXQsIHNv IGl0IHN0aWxsIHJlZmVycyB0byBldmVyeXRoaW5nIGFzIHBvcnRzLgpUaGF0J3Mgb2theSBmb3Ig bm93IHNpbmNlIHRoZXJlJ3Mgbm8gVEMgb24gRUhMLCBidXQgd2UnbGwgcHJvYmFibHkgd2FudAp0 byBzZXBhcmF0ZSBvdXQgdGhlIERESSB2cyBQSFkgdGVybWlub2xvZ3kgZm9yIFRDIGluIHRoZSBm dXR1cmUgYXMgd2VsbAp0byBhdm9pZCBjb25mdXNpb24uCgp2MjoKIC0gQ29udmVydCBhIGZldyBt b3JlICdwb3J0JyB1c2VzIHRvICdwaHkuJyAoU3BhcnNlKQoKU3VnZ2VzdGVkLWJ5OiBWaWxsZSBT eXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEpvc8OpIFJvYmVydG8g ZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgpDYzogTHVjYXMgRGUgTWFyY2hpIDxsdWNh cy5kZW1hcmNoaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcu ZC5yb3BlckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xf ZHNpLmMgICAgICAgIHwgIDI0ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9iaW9zLmMgICAgIHwgICA0ICstCiAuLi4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29t Ym9fcGh5LmMgICAgfCAxNDMgKysrKysrKysrLS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfY29tYm9fcGh5LmggICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8IDEwNiArKysrKysrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgMzYgKysrLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oICB8ICAxNiArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jICAgICAgIHwgIDEyICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMgfCAgIDggKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICAxOCArLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAgNCArLQogMTEgZmlsZXMgY2hh bmdlZCwgMjE1IGluc2VydGlvbnMoKyksIDE1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaWNsX2RzaS5jCmluZGV4IGI4NjczZGViZjkzMi4uYjMzODc0NjAwM2VhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwpAQCAtMzY1LDEwICszNjUsMTMg QEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX3Bvd2VyX3VwX2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVu Y190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCWVudW0gcG9ydCBwb3J0OworCWVudW0g cGh5IHBoeTsKIAotCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpCi0J CWludGVsX2NvbWJvX3BoeV9wb3dlcl91cF9sYW5lcyhkZXZfcHJpdiwgcG9ydCwgdHJ1ZSwKKwlm b3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7CisJCXBoeSA9IGludGVs X3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKKwkJaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3Vw X2xhbmVzKGRldl9wcml2LCBwaHksIHRydWUsCiAJCQkJCSAgICAgICBpbnRlbF9kc2ktPmxhbmVf Y291bnQsIGZhbHNlKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9jb25maWdfcGh5 X2xhbmVzX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQpAQCAtNTYwLDEx ICs1NjMsMTMgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2dhdGVfY2xvY2tzKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190 b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCXUzMiB0bXA7CiAJZW51bSBwb3J0IHBvcnQ7 CisJZW51bSBwaHkgcGh5OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CiAJ dG1wID0gSTkxNV9SRUFEKERQQ0xLQV9DRkdDUjBfSUNMKTsKIAlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Ci0JCXRtcCB8PSBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtf T0ZGKHBvcnQpOworCQlwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCk7CisJ CXRtcCB8PSBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSk7CiAJfQogCiAJSTkxNV9XUklU RShEUENMS0FfQ0ZHQ1IwX0lDTCwgdG1wKTsKQEAgLTU3NywxMSArNTgyLDEzIEBAIHN0YXRpYyB2 b2lkIGdlbjExX2RzaV91bmdhdGVfY2xvY2tzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy KQogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29k ZXItPmJhc2UpOwogCXUzMiB0bXA7CiAJZW51bSBwb3J0IHBvcnQ7CisJZW51bSBwaHkgcGh5Owog CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CiAJdG1wID0gSTkxNV9SRUFEKERQ Q0xLQV9DRkdDUjBfSUNMKTsKIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBv cnRzKSB7Ci0JCXRtcCAmPSB+RFBDTEtBX0NGR0NSMF9ERElfQ0xLX09GRihwb3J0KTsKKwkJcGh5 ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIHBvcnQpOworCQl0bXAgJj0gfkRQQ0xLQV9D RkdDUjBfRERJX0NMS19PRkYocGh5KTsKIAl9CiAKIAlJOTE1X1dSSVRFKERQQ0xLQV9DRkdDUjBf SUNMLCB0bXApOwpAQCAtNTk1LDE5ICs2MDIsMjIgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX21h cF9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2RzaSAq aW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7CiAJc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICpwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbDsKIAllbnVtIHBv cnQgcG9ydDsKKwllbnVtIHBoeSBwaHk7CiAJdTMyIHZhbDsKIAogCW11dGV4X2xvY2soJmRldl9w cml2LT5kcGxsX2xvY2spOwogCiAJdmFsID0gSTkxNV9SRUFEKERQQ0xLQV9DRkdDUjBfSUNMKTsK IAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Ci0JCXZhbCAmPSB+ RFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBvcnQpOwotCQl2YWwgfD0gRFBDTEtBX0NG R0NSMF9ERElfQ0xLX1NFTChwbGwtPmluZm8tPmlkLCBwb3J0KTsKKwkJcGh5ID0gaW50ZWxfcG9y dF90b19waHkoZGV2X3ByaXYsIHBvcnQpOworCQl2YWwgJj0gfkRQQ0xLQV9DRkdDUjBfRERJX0NM S19TRUxfTUFTSyhwaHkpOworCQl2YWwgfD0gRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTChwbGwt PmluZm8tPmlkLCBwaHkpOwogCX0KIAlJOTE1X1dSSVRFKERQQ0xLQV9DRkdDUjBfSUNMLCB2YWwp OwogCiAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewotCQl2YWwg Jj0gfkRQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYocG9ydCk7CisJCXBoeSA9IGludGVsX3BvcnRf dG9fcGh5KGRldl9wcml2LCBwb3J0KTsKKwkJdmFsICY9IH5EUENMS0FfQ0ZHQ1IwX0RESV9DTEtf T0ZGKHBoeSk7CiAJfQogCUk5MTVfV1JJVEUoRFBDTEtBX0NGR0NSMF9JQ0wsIHZhbCk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9zLmMKaW5kZXggMGM5ODA4MTMyZDY3 Li40ZmRiYjVjMzVkODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfYmlvcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlv cy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KICNp bmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KIAorI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZGlzcGxh eS5oIgogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZ21idXMuaCIKIAogI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCkBAIC0xNzMzLDEyICsxNzM0LDEzIEBAIGluaXRfdmJ0X21pc3NpbmdfZGVmYXVsdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWZvciAocG9ydCA9IFBPUlRfQTsg cG9ydCA8IEk5MTVfTUFYX1BPUlRTOyBwb3J0KyspIHsKIAkJc3RydWN0IGRkaV92YnRfcG9ydF9p bmZvICppbmZvID0KIAkJCSZkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF07CisJCWVu dW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKIAogCQkvKgog CQkgKiBWQlQgaGFzIHRoZSBUeXBlQyBtb2RlIChuYXRpdmUsVEJUL1VTQikgYW5kIHdlIGRvbid0 IHdhbnQKIAkJICogdG8gZGV0ZWN0IGl0LgogCQkgKi8KLQkJaWYgKGludGVsX3BvcnRfaXNfdGMo ZGV2X3ByaXYsIHBvcnQpKQorCQlpZiAoaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBwaHkpKQog CQkJY29udGludWU7CiAKIAkJaW5mby0+c3VwcG9ydHNfZHZpID0gKHBvcnQgIT0gUE9SVF9BICYm IHBvcnQgIT0gUE9SVF9FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfY29tYm9fcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2NvbWJvX3BoeS5jCmluZGV4IGRhNTkwZjFhOTk4Yi4uN2IzMDQ3MzM1ZDkxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmMKQEAgLTYsMTMgKzYs MTMgQEAKICNpbmNsdWRlICJpbnRlbF9jb21ib19waHkuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKIAotI2RlZmluZSBmb3JfZWFjaF9jb21ib19wb3J0KF9fZGV2X3ByaXYsIF9fcG9ydCkgXAot CWZvciAoKF9fcG9ydCkgPSBQT1JUX0E7IChfX3BvcnQpIDwgSTkxNV9NQVhfUE9SVFM7IChfX3Bv cnQpKyspCVwKLQkJZm9yX2VhY2hfaWYoaW50ZWxfcG9ydF9pc19jb21ib3BoeShfX2Rldl9wcml2 LCBfX3BvcnQpKQorI2RlZmluZSBmb3JfZWFjaF9jb21ib19waHkoX19kZXZfcHJpdiwgX19waHkp IFwKKwlmb3IgKChfX3BoeSkgPSBQSFlfQTsgKF9fcGh5KSA8IEk5MTVfTUFYX1BIWVM7IChfX3Bo eSkrKykJXAorCQlmb3JfZWFjaF9pZihpbnRlbF9waHlfaXNfY29tYm8oX19kZXZfcHJpdiwgX19w aHkpKQogCi0jZGVmaW5lIGZvcl9lYWNoX2NvbWJvX3BvcnRfcmV2ZXJzZShfX2Rldl9wcml2LCBf X3BvcnQpIFwKLQlmb3IgKChfX3BvcnQpID0gSTkxNV9NQVhfUE9SVFM7IChfX3BvcnQpLS0gPiBQ T1JUX0E7KSBcCi0JCWZvcl9lYWNoX2lmKGludGVsX3BvcnRfaXNfY29tYm9waHkoX19kZXZfcHJp diwgX19wb3J0KSkKKyNkZWZpbmUgZm9yX2VhY2hfY29tYm9fcGh5X3JldmVyc2UoX19kZXZfcHJp diwgX19waHkpIFwKKwlmb3IgKChfX3BoeSkgPSBJOTE1X01BWF9QSFlTOyAoX19waHkpLS0gPiBQ SFlfQTspIFwKKwkJZm9yX2VhY2hfaWYoaW50ZWxfcGh5X2lzX2NvbWJvKF9fZGV2X3ByaXYsIF9f cGh5KSkKIAogZW51bSB7CiAJUFJPQ01PTl8wXzg1Vl9ET1RfMCwKQEAgLTM4LDE4ICszOCwxNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9wcm9jbW9uIHsKIH07CiAKIC8qCi0gKiBDTkwgaGFz IGp1c3Qgb25lIHNldCBvZiByZWdpc3RlcnMsIHdoaWxlIElDTCBoYXMgdHdvIHNldHM6IG9uZSBm b3IgcG9ydCBBIGFuZAotICogdGhlIG90aGVyIGZvciBwb3J0IEIuIFRoZSBDTkwgcmVnaXN0ZXJz IGFyZSBlcXVpdmFsZW50IHRvIHRoZSBJQ0wgcG9ydCBBCi0gKiByZWdpc3RlcnMsIHRoYXQncyB3 aHkgd2UgY2FsbCB0aGUgSUNMIG1hY3JvcyBldmVuIHRob3VnaCB0aGUgZnVuY3Rpb24gaGFzIENO TAotICogb24gaXRzIG5hbWUuCisgKiBDTkwgaGFzIGp1c3Qgb25lIHNldCBvZiByZWdpc3RlcnMs IHdoaWxlIGdlbjExIGhhcyBhIHNldCBmb3IgZWFjaCBjb21ibyBQSFkuCisgKiBUaGUgQ05MIHJl Z2lzdGVycyBhcmUgZXF1aXZhbGVudCB0byB0aGUgZ2VuMTEgUEhZIEEgcmVnaXN0ZXJzLCB0aGF0 J3Mgd2h5IHdlCisgKiBjYWxsIHRoZSBJQ0wgbWFjcm9zIGV2ZW4gdGhvdWdoIHRoZSBmdW5jdGlv biBoYXMgQ05MIG9uIGl0cyBuYW1lLgogICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9wcm9j bW9uICoKLWNubF9nZXRfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCitjbmxfZ2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGh5IHBoeSkKIHsKIAljb25z dCBzdHJ1Y3QgY25sX3Byb2Ntb24gKnByb2Ntb247CiAJdTMyIHZhbDsKIAotCXZhbCA9IEk5MTVf UkVBRChJQ0xfUE9SVF9DT01QX0RXMyhwb3J0KSk7CisJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JU X0NPTVBfRFczKHBoeSkpOwogCXN3aXRjaCAodmFsICYgKFBST0NFU1NfSU5GT19NQVNLIHwgVk9M VEFHRV9JTkZPX01BU0spKSB7CiAJZGVmYXVsdDoKIAkJTUlTU0lOR19DQVNFKHZhbCk7CkBAIC03 NSwzMiArNzQsMzIgQEAgY25sX2dldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIH0KIAogc3RhdGljIHZvaWQgY25s X3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAotCQkJCSAgICAgICBlbnVtIHBvcnQgcG9ydCkKKwkJCQkgICAgICAgZW51bSBwaHkgcGh5KQog ewogCWNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqcHJvY21vbjsKIAl1MzIgdmFsOwogCi0JcHJv Y21vbiA9IGNubF9nZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBwb3J0KTsKKwlwcm9j bW9uID0gY25sX2dldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBoeSk7CiAKLQl2YWwg PSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzEocG9ydCkpOworCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9DT01QX0RXMShwaHkpKTsKIAl2YWwgJj0gfigoMHhmZiA8PCAxNikgfCAweGZmKTsK IAl2YWwgfD0gcHJvY21vbi0+ZHcxOwotCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzEocG9y dCksIHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMShwaHkpLCB2YWwpOwogCi0J STkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXOShwb3J0KSwgcHJvY21vbi0+ZHc5KTsKLQlJOTE1 X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcxMChwb3J0KSwgcHJvY21vbi0+ZHcxMCk7CisJSTkxNV9X UklURShJQ0xfUE9SVF9DT01QX0RXOShwaHkpLCBwcm9jbW9uLT5kdzkpOworCUk5MTVfV1JJVEUo SUNMX1BPUlRfQ09NUF9EVzEwKHBoeSksIHByb2Ntb24tPmR3MTApOwogfQogCiBzdGF0aWMgYm9v bCBjaGVja19waHlfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAg ZW51bSBwb3J0IHBvcnQsIGk5MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywKKwkJCSAgZW51bSBwaHkg cGh5LCBpOTE1X3JlZ190IHJlZywgdTMyIG1hc2ssCiAJCQkgIHUzMiBleHBlY3RlZF92YWwpCiB7 CiAJdTMyIHZhbCA9IEk5MTVfUkVBRChyZWcpOwogCiAJaWYgKCh2YWwgJiBtYXNrKSAhPSBleHBl Y3RlZF92YWwpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigiUG9ydCAlYyBjb21ibyBQSFkgcmVnICUw OHggc3RhdGUgbWlzbWF0Y2g6ICIKKwkJRFJNX0RFQlVHX0RSSVZFUigiQ29tYm8gUEhZICVjIHJl ZyAlMDh4IHN0YXRlIG1pc21hdGNoOiAiCiAJCQkJICJjdXJyZW50ICUwOHggbWFzayAlMDh4IGV4 cGVjdGVkICUwOHhcbiIsCi0JCQkJIHBvcnRfbmFtZShwb3J0KSwKKwkJCQkgcGh5X25hbWUocGh5 KSwKIAkJCQkgcmVnLnJlZywgdmFsLCBtYXNrLCBleHBlY3RlZF92YWwpOwogCQlyZXR1cm4gZmFs c2U7CiAJfQpAQCAtMTA5LDE4ICsxMDgsMTggQEAgc3RhdGljIGJvb2wgY2hlY2tfcGh5X3JlZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiB9CiAKIHN0YXRpYyBib29sIGNubF92 ZXJpZnlfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCQkJICBlbnVtIHBvcnQgcG9ydCkKKwkJCQkJICBlbnVtIHBoeSBwaHkpCiB7CiAJY29u c3Qgc3RydWN0IGNubF9wcm9jbW9uICpwcm9jbW9uOwogCWJvb2wgcmV0OwogCi0JcHJvY21vbiA9 IGNubF9nZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBwb3J0KTsKKwlwcm9jbW9uID0g Y25sX2dldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBoeSk7CiAKLQlyZXQgPSBjaGVj a19waHlfcmVnKGRldl9wcml2LCBwb3J0LCBJQ0xfUE9SVF9DT01QX0RXMShwb3J0KSwKKwlyZXQg PSBjaGVja19waHlfcmVnKGRldl9wcml2LCBwaHksIElDTF9QT1JUX0NPTVBfRFcxKHBoeSksCiAJ CQkgICAgKDB4ZmYgPDwgMTYpIHwgMHhmZiwgcHJvY21vbi0+ZHcxKTsKLQlyZXQgJj0gY2hlY2tf cGh5X3JlZyhkZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzkocG9ydCksCisJcmV0ICY9 IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBoeSwgSUNMX1BPUlRfQ09NUF9EVzkocGh5KSwKIAkJ CSAgICAgLTFVLCBwcm9jbW9uLT5kdzkpOwotCXJldCAmPSBjaGVja19waHlfcmVnKGRldl9wcml2 LCBwb3J0LCBJQ0xfUE9SVF9DT01QX0RXMTAocG9ydCksCisJcmV0ICY9IGNoZWNrX3BoeV9yZWco ZGV2X3ByaXYsIHBoeSwgSUNMX1BPUlRfQ09NUF9EVzEwKHBoeSksCiAJCQkgICAgIC0xVSwgcHJv Y21vbi0+ZHcxMCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTM0LDE1ICsxMzMsMTUgQEAgc3RhdGlj IGJvb2wgY25sX2NvbWJvX3BoeV9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAogc3RhdGljIGJvb2wgY25sX2NvbWJvX3BoeV92ZXJpZnlfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWVudW0gcG9ydCBwb3J0ID0gUE9SVF9BOwor CWVudW0gcGh5IHBoeSA9IFBIWV9BOwogCWJvb2wgcmV0OwogCiAJaWYgKCFjbmxfY29tYm9fcGh5 X2VuYWJsZWQoZGV2X3ByaXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXQgPSBjbmxfdmVyaWZ5 X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7CisJcmV0ID0gY25sX3ZlcmlmeV9w cm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBoeSk7CiAKLQlyZXQgJj0gY2hlY2tfcGh5X3Jl ZyhkZXZfcHJpdiwgcG9ydCwgQ05MX1BPUlRfQ0wxQ01fRFc1LAorCXJldCAmPSBjaGVja19waHlf cmVnKGRldl9wcml2LCBwaHksIENOTF9QT1JUX0NMMUNNX0RXNSwKIAkJCSAgICAgQ0xfUE9XRVJf RE9XTl9FTkFCTEUsIENMX1BPV0VSX0RPV05fRU5BQkxFKTsKIAogCXJldHVybiByZXQ7CkBAIC0x NTcsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY25sX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJSTkxNV9XUklURShDSElDS0VOX01JU0NfMiwgdmFs KTsKIAogCS8qIER1bW15IFBPUlRfQSB0byBnZXQgdGhlIGNvcnJlY3QgQ05MIHJlZ2lzdGVyIGZy b20gdGhlIElDTCBtYWNybyAqLwotCWNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2 LCBQT1JUX0EpOworCWNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBQSFlfQSk7 CiAKIAl2YWwgPSBJOTE1X1JFQUQoQ05MX1BPUlRfQ09NUF9EVzApOwogCXZhbCB8PSBDT01QX0lO SVQ7CkBAIC0xODEsMzkgKzE4MCwzOSBAQCBzdGF0aWMgdm9pZCBjbmxfY29tYm9fcGh5c191bmlu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogfQogCiBzdGF0aWMgYm9vbCBp Y2xfY29tYm9fcGh5X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkJCSAgZW51bSBwb3J0IHBvcnQpCisJCQkJICBlbnVtIHBoeSBwaHkpCiB7CiAJLyogVGhlIFBI WSBDIGFkZGVkIGJ5IEVITCBoYXMgbm8gUEhZX01JU0MgcmVnaXN0ZXIgKi8KLQlpZiAocG9ydCA9 PSBQT1JUX0MpCi0JCXJldHVybiBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpICYg Q09NUF9JTklUOworCWlmIChwaHkgPT0gUEhZX0MpCisJCXJldHVybiBJOTE1X1JFQUQoSUNMX1BP UlRfQ09NUF9EVzAocGh5KSkgJiBDT01QX0lOSVQ7CiAJZWxzZQotCQlyZXR1cm4gIShJOTE1X1JF QUQoSUNMX1BIWV9NSVNDKHBvcnQpKSAmCisJCXJldHVybiAhKEk5MTVfUkVBRChJQ0xfUEhZX01J U0MocGh5KSkgJgogCQkJIElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOKSAmJgotCQkJ KEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSkgJiBDT01QX0lOSVQpOworCQkJKEk5 MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwaHkpKSAmIENPTVBfSU5JVCk7CiB9CiAKIHN0YXRp YyBib29sIGljbF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCQkgICAgICAgZW51bSBwb3J0IHBvcnQpCisJCQkJICAgICAgIGVudW0g cGh5IHBoeSkKIHsKIAlib29sIHJldDsKIAotCWlmICghaWNsX2NvbWJvX3BoeV9lbmFibGVkKGRl dl9wcml2LCBwb3J0KSkKKwlpZiAoIWljbF9jb21ib19waHlfZW5hYmxlZChkZXZfcHJpdiwgcGh5 KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JcmV0ID0gY25sX3ZlcmlmeV9wcm9jbW9uX3JlZl92YWx1 ZXMoZGV2X3ByaXYsIHBvcnQpOworCXJldCA9IGNubF92ZXJpZnlfcHJvY21vbl9yZWZfdmFsdWVz KGRldl9wcml2LCBwaHkpOwogCi0JaWYgKHBvcnQgPT0gUE9SVF9BKQotCQlyZXQgJj0gY2hlY2tf cGh5X3JlZyhkZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzgocG9ydCksCisJaWYgKHBo eSA9PSBQSFlfQSkKKwkJcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBoeSwgSUNMX1BP UlRfQ09NUF9EVzgocGh5KSwKIAkJCQkgICAgIElSRUZHRU4sIElSRUZHRU4pOwogCi0JcmV0ICY9 IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBvcnQsIElDTF9QT1JUX0NMX0RXNShwb3J0KSwKKwly ZXQgJj0gY2hlY2tfcGh5X3JlZyhkZXZfcHJpdiwgcGh5LCBJQ0xfUE9SVF9DTF9EVzUocGh5KSwK IAkJCSAgICAgQ0xfUE9XRVJfRE9XTl9FTkFCTEUsIENMX1BPV0VSX0RPV05fRU5BQkxFKTsKIAog CXJldHVybiByZXQ7CiB9CiAKIHZvaWQgaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgZW51bSBwb3J0IHBvcnQs IGJvb2wgaXNfZHNpLAorCQkJCSAgICBlbnVtIHBoeSBwaHksIGJvb2wgaXNfZHNpLAogCQkJCSAg ICBpbnQgbGFuZV9jb3VudCwgYm9vbCBsYW5lX3JldmVyc2FsKQogewogCXU4IGxhbmVfbWFzazsK QEAgLTI1OCwxMCArMjU3LDEwIEBAIHZvaWQgaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJfQogCX0KIAotCXZhbCA9IEk5 MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzEwKHBvcnQpKTsKKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BP UlRfQ0xfRFcxMChwaHkpKTsKIAl2YWwgJj0gflBXUl9ET1dOX0xOX01BU0s7CiAJdmFsIHw9IGxh bmVfbWFzayA8PCBQV1JfRE9XTl9MTl9TSElGVDsKLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RX MTAocG9ydCksIHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzEwKHBoeSksIHZhbCk7 CiB9CiAKIHN0YXRpYyB1MzIgZWhsX2NvbWJvX3BoeV9hX211eChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgdTMyIHZhbCkKQEAgLTI5MiwxNCArMjkxLDE0IEBAIHN0YXRpYyB1MzIgZWhs X2NvbWJvX3BoeV9hX211eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHZhbCkK IAogc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiB7Ci0JZW51bSBwb3J0IHBvcnQ7CisJZW51bSBwaHkgcGh5OwogCi0JZm9y X2VhY2hfY29tYm9fcG9ydChkZXZfcHJpdiwgcG9ydCkgeworCWZvcl9lYWNoX2NvbWJvX3BoeShk ZXZfcHJpdiwgcGh5KSB7CiAJCXUzMiB2YWw7CiAKLQkJaWYgKGljbF9jb21ib19waHlfdmVyaWZ5 X3N0YXRlKGRldl9wcml2LCBwb3J0KSkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiUG9ydCAlYyBj b21ibyBQSFkgYWxyZWFkeSBlbmFibGVkLCB3b24ndCByZXByb2dyYW0gaXQuXG4iLAotCQkJCQkg cG9ydF9uYW1lKHBvcnQpKTsKKwkJaWYgKGljbF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKGRldl9w cml2LCBwaHkpKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJDb21ibyBQSFkgJWMgYWxyZWFkeSBl bmFibGVkLCB3b24ndCByZXByb2dyYW0gaXQuXG4iLAorCQkJCQkgcGh5X25hbWUocGh5KSk7CiAJ CQljb250aW51ZTsKIAkJfQogCkBAIC0zMDgsNyArMzA3LDcgQEAgc3RhdGljIHZvaWQgaWNsX2Nv bWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqIHJl Z2lzdGVyIGZvciBpdCBhbmQgbm8gbmVlZCB0byBwcm9ncmFtIHRoZQogCQkgKiBERV9JT19DT01Q X1BXUl9ET1dOIHNldHRpbmcgb24gUEhZIEMuCiAJCSAqLwotCQlpZiAocG9ydCAhPSBQT1JUX0Mp IHsKKwkJaWYgKHBoeSAhPSBQSFlfQykgewogCQkJLyoKIAkJCSAqIEVITCdzIGNvbWJvIFBIWSBB IGNhbiBiZSBob29rZWQgdXAgdG8gZWl0aGVyIGFuCiAJCQkgKiBleHRlcm5hbCBkaXNwbGF5ICh2 aWEgRERJLUQpIG9yIGFuIGludGVybmFsIGRpc3BsYXkKQEAgLTMxOCw1NyArMzE3LDU3IEBAIHN0 YXRpYyB2b2lkIGljbF9jb21ib19waHlzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCQkJICogaW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiBhbnkgImludGVybmFsIiBj aGlsZAogCQkJICogZGV2aWNlcy4KIAkJCSAqLwotCQkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlf TUlTQyhwb3J0KSk7Ci0JCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBvcnQgPT0g UE9SVF9BKQorCQkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwaHkpKTsKKwkJCWlmIChJ U19FTEtIQVJUTEFLRShkZXZfcHJpdikgJiYgcGh5ID09IFBIWV9BKQogCQkJCXZhbCA9IGVobF9j b21ib19waHlfYV9tdXgoZGV2X3ByaXYsIHZhbCk7CiAJCQl2YWwgJj0gfklDTF9QSFlfTUlTQ19E RV9JT19DT01QX1BXUl9ET1dOOwotCQkJSTkxNV9XUklURShJQ0xfUEhZX01JU0MocG9ydCksIHZh bCk7CisJCQlJOTE1X1dSSVRFKElDTF9QSFlfTUlTQyhwaHkpLCB2YWwpOwogCQl9CiAKLQkJY25s X3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBvcnQpOworCQljbmxfc2V0X3Byb2Nt b25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcGh5KTsKIAotCQlpZiAocG9ydCA9PSBQT1JUX0EpIHsK LQkJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXOChwb3J0KSk7CisJCWlmIChwaHkg PT0gUEhZX0EpIHsKKwkJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXOChwaHkpKTsK IAkJCXZhbCB8PSBJUkVGR0VOOwotCQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXOChwb3J0 KSwgdmFsKTsKKwkJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzgocGh5KSwgdmFsKTsKIAkJ fQogCi0JCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSk7CisJCXZhbCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwaHkpKTsKIAkJdmFsIHw9IENPTVBfSU5JVDsK LQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwgdmFsKTsKKwkJSTkxNV9XUklU RShJQ0xfUE9SVF9DT01QX0RXMChwaHkpLCB2YWwpOwogCi0JCXZhbCA9IEk5MTVfUkVBRChJQ0xf UE9SVF9DTF9EVzUocG9ydCkpOworCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFc1KHBo eSkpOwogCQl2YWwgfD0gQ0xfUE9XRVJfRE9XTl9FTkFCTEU7Ci0JCUk5MTVfV1JJVEUoSUNMX1BP UlRfQ0xfRFc1KHBvcnQpLCB2YWwpOworCQlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXNShwaHkp LCB2YWwpOwogCX0KIH0KIAogc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQllbnVtIHBvcnQgcG9ydDsKKwllbnVt IHBoeSBwaHk7CiAKLQlmb3JfZWFjaF9jb21ib19wb3J0X3JldmVyc2UoZGV2X3ByaXYsIHBvcnQp IHsKKwlmb3JfZWFjaF9jb21ib19waHlfcmV2ZXJzZShkZXZfcHJpdiwgcGh5KSB7CiAJCXUzMiB2 YWw7CiAKLQkJaWYgKHBvcnQgPT0gUE9SVF9BICYmCi0JCSAgICAhaWNsX2NvbWJvX3BoeV92ZXJp Znlfc3RhdGUoZGV2X3ByaXYsIHBvcnQpKQotCQkJRFJNX1dBUk4oIlBvcnQgJWMgY29tYm8gUEhZ IEhXIHN0YXRlIGNoYW5nZWQgdW5leHBlY3RlZGx5XG4iLAotCQkJCSBwb3J0X25hbWUocG9ydCkp OworCQlpZiAocGh5ID09IFBIWV9BICYmCisJCSAgICAhaWNsX2NvbWJvX3BoeV92ZXJpZnlfc3Rh dGUoZGV2X3ByaXYsIHBoeSkpCisJCQlEUk1fV0FSTigiQ29tYm8gUEhZICVjIEhXIHN0YXRlIGNo YW5nZWQgdW5leHBlY3RlZGx5XG4iLAorCQkJCSBwaHlfbmFtZShwaHkpKTsKIAogCQkvKgogCQkg KiBBbHRob3VnaCBFSEwgYWRkcyBhIGNvbWJvIFBIWSBDLCB0aGVyZSdzIG5vIFBIWV9NSVNDCiAJ CSAqIHJlZ2lzdGVyIGZvciBpdCBhbmQgbm8gbmVlZCB0byBwcm9ncmFtIHRoZQogCQkgKiBERV9J T19DT01QX1BXUl9ET1dOIHNldHRpbmcgb24gUEhZIEMuCiAJCSAqLwotCQlpZiAocG9ydCAhPSBQ T1JUX0MpIHsKLQkJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUEhZX01JU0MocG9ydCkpOworCQlpZiAo cGh5ICE9IFBIWV9DKSB7CisJCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BIWV9NSVNDKHBoeSkpOwog CQkJdmFsIHw9IElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwotCQkJSTkxNV9XUklU RShJQ0xfUEhZX01JU0MocG9ydCksIHZhbCk7CisJCQlJOTE1X1dSSVRFKElDTF9QSFlfTUlTQyhw aHkpLCB2YWwpOwogCQl9CiAKLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBv cnQpKTsKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBoeSkpOwogCQl2YWwg Jj0gfkNPTVBfSU5JVDsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwgdmFs KTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwaHkpLCB2YWwpOwogCX0KIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb21ib19waHku aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmgKaW5kZXgg ZTZlMTk1YTgzYjE5Li44MGExMzg2YjRjODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jb21ib19waHkuaApAQCAtMTAsMTEgKzEwLDEyIEBACiAjaW5jbHVkZSA8 ZHJtL2k5MTVfZHJtLmg+CiAKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOworZW51bSBwaHk7CiAK IHZvaWQgaW50ZWxfY29tYm9fcGh5X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIHZvaWQgaW50ZWxfY29tYm9fcGh5X3VuaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9jb21ib19waHlfcG93ZXJfdXBfbGFuZXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICBlbnVtIHBvcnQgcG9ydCwgYm9v bCBpc19kc2ksCisJCQkJICAgIGVudW0gcGh5IHBoeSwgYm9vbCBpc19kc2ksCiAJCQkJICAgIGlu dCBsYW5lX2NvdW50LCBib29sIGxhbmVfcmV2ZXJzYWwpOwogCiAjZW5kaWYgLyogX19JTlRFTF9D T01CT19QSFlfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwpp bmRleCA1OTM4MDZkNDRhZDQuLjA2OTk4MTk4YzY0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RkaS5jCkBAIC04NjcsMTEgKzg2NywxMiBAQCBpY2xfZ2V0X2NvbWJvX2J1 Zl90cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB0eXBlLCBpbnQg cmF0ZSwKIHN0YXRpYyBpbnQgaW50ZWxfZGRpX2hkbWlfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIHsKIAlpbnQgbl9lbnRyaWVzLCBsZXZl bCwgZGVmYXVsdF9lbnRyeTsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZf cHJpdiwgcG9ydCk7CiAKIAlsZXZlbCA9IGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0 XS5oZG1pX2xldmVsX3NoaWZ0OwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsK LQkJaWYgKGludGVsX3BvcnRfaXNfY29tYm9waHkoZGV2X3ByaXYsIHBvcnQpKQorCQlpZiAoaW50 ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkpKQogCQkJaWNsX2dldF9jb21ib19idWZfdHJh bnMoZGV2X3ByaXYsIElOVEVMX09VVFBVVF9IRE1JLAogCQkJCQkJMCwgJm5fZW50cmllcyk7CiAJ CWVsc2UKQEAgLTE0ODYsOSArMTQ4NywxMCBAQCBzdGF0aWMgdm9pZCBpY2xfZGRpX2Nsb2NrX2dl dChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxf ZHBsbF9od19zdGF0ZSAqcGxsX3N0YXRlID0gJnBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlOwog CWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9w b3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCk7CiAJaW50IGxpbmtfY2xvY2s7CiAKLQlpZiAoaW50 ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkpIHsKKwlpZiAoaW50ZWxfcGh5X2lz X2NvbWJvKGRldl9wcml2LCBwaHkpKSB7CiAJCWxpbmtfY2xvY2sgPSBjbmxfY2FsY193cnBsbF9s aW5rKGRldl9wcml2LCBwbGxfc3RhdGUpOwogCX0gZWxzZSB7CiAJCWVudW0gaW50ZWxfZHBsbF9p ZCBwbGxfaWQgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGxfaWQoZGV2X3ByaXYsCkBAIC0yMDg1LDYg KzIwODcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfZ2V0X3Bvd2VyX2RvbWFpbnMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQ7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2 X3ByaXYsIGVuY29kZXItPnBvcnQpOwogCiAJLyoKIAkgKiBUT0RPOiBBZGQgc3VwcG9ydCBmb3Ig TVNUIGVuY29kZXJzLiBBdG0sIHRoZSBmb2xsb3dpbmcgc2hvdWxkIG5ldmVyCkBAIC0yMTAyLDcg KzIxMDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfZ2V0X3Bvd2VyX2RvbWFpbnMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJICogcG9ydHMuCiAJICovCiAJaWYgKGludGVsX2Ny dGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkgfHwKLQkgICAgaW50ZWxfcG9ydF9pc190Yyhk ZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCkpCisJICAgIGludGVsX3BoeV9pc190YyhkZXZfcHJpdiwg cGh5KSkKIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsCiAJCQkJCWludGVsX2Rk aV9tYWluX2xpbmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOwogCkBAIC0yMjI3LDEwICsyMjMwLDEx IEBAIHU4IGludGVsX2RkaV9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVs X2RwKCZlbmNvZGVyLT5iYXNlKTsKIAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7CisJ ZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIHBvcnQpOwogCWludCBu X2VudHJpZXM7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewotCQlpZiAoaW50 ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkpCisJCWlmIChpbnRlbF9waHlfaXNf Y29tYm8oZGV2X3ByaXYsIHBoeSkpCiAJCQlpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhkZXZfcHJp diwgZW5jb2Rlci0+dHlwZSwKIAkJCQkJCWludGVsX2RwLT5saW5rX3JhdGUsICZuX2VudHJpZXMp OwogCQllbHNlCkBAIC0yNjYzLDkgKzI2NjcsOSBAQCBzdGF0aWMgdm9pZCBpY2xfZGRpX3Zzd2lu Z19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgICAgZW51bSBp bnRlbF9vdXRwdXRfdHlwZSB0eXBlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCWVudW0gcG9ydCBwb3J0ID0gZW5j b2Rlci0+cG9ydDsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwg ZW5jb2Rlci0+cG9ydCk7CiAKLQlpZiAoaW50ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwg cG9ydCkpCisJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKIAkJaWNsX2Nv bWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCB0eXBlKTsKIAllbHNl CiAJCWljbF9tZ19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsaW5rX2Nsb2NrLCBs ZXZlbCk7CkBAIC0yNzI4LDEyICsyNzMyLDEzIEBAIHUzMiBkZGlfc2lnbmFsX2xldmVscyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiBzdGF0aWMgaW5saW5lCiB1MzIgaWNsX2RwY2xrYV9j ZmdjcjBfY2xrX29mZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAg ICBlbnVtIHBvcnQgcG9ydCkKKwkJCSAgICAgIGVudW0gcGh5IHBoeSkKIHsKLQlpZiAoaW50ZWxf cG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkpIHsKLQkJcmV0dXJuIElDTF9EUENMS0Ff Q0ZHQ1IwX0RESV9DTEtfT0ZGKHBvcnQpOwotCX0gZWxzZSBpZiAoaW50ZWxfcG9ydF9pc190Yyhk ZXZfcHJpdiwgcG9ydCkpIHsKLQkJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3Rv X3RjKGRldl9wcml2LCBwb3J0KTsKKwlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBw aHkpKSB7CisJCXJldHVybiBJQ0xfRFBDTEtBX0NGR0NSMF9ERElfQ0xLX09GRihwaHkpOworCX0g ZWxzZSBpZiAoaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBwaHkpKSB7CisJCWVudW0gdGNfcG9y dCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwKKwkJCQkJCQkoZW51bSBwb3J0 KXBoeSk7CiAKIAkJcmV0dXJuIElDTF9EUENMS0FfQ0ZHQ1IwX1RDX0NMS19PRkYodGNfcG9ydCk7 CiAJfQpAQCAtMjc0NiwyMiArMjc1MSwyMiBAQCBzdGF0aWMgdm9pZCBpY2xfbWFwX3BsbHNfdG9f cG9ydHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbDsKLQllbnVt IHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90 b19waHkoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpOwogCXUzMiB2YWw7CiAKIAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKIAogCXZhbCA9IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1Iw X0lDTCk7Ci0JV0FSTl9PTigodmFsICYgaWNsX2RwY2xrYV9jZmdjcjBfY2xrX29mZihkZXZfcHJp diwgcG9ydCkpID09IDApOworCVdBUk5fT04oKHZhbCAmIGljbF9kcGNsa2FfY2ZnY3IwX2Nsa19v ZmYoZGV2X3ByaXYsIHBoeSkpID09IDApOwogCi0JaWYgKGludGVsX3BvcnRfaXNfY29tYm9waHko ZGV2X3ByaXYsIHBvcnQpKSB7Ci0JCXZhbCAmPSB+RFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9N QVNLKHBvcnQpOwotCQl2YWwgfD0gRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTChwbGwtPmluZm8t PmlkLCBwb3J0KTsKKwlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkpKSB7CisJ CXZhbCAmPSB+RFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBoeSk7CisJCXZhbCB8PSBE UENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMKHBsbC0+aW5mby0+aWQsIHBoeSk7CiAJCUk5MTVfV1JJ VEUoRFBDTEtBX0NGR0NSMF9JQ0wsIHZhbCk7CiAJCVBPU1RJTkdfUkVBRChEUENMS0FfQ0ZHQ1Iw X0lDTCk7CiAJfQogCi0JdmFsICY9IH5pY2xfZHBjbGthX2NmZ2NyMF9jbGtfb2ZmKGRldl9wcml2 LCBwb3J0KTsKKwl2YWwgJj0gfmljbF9kcGNsa2FfY2ZnY3IwX2Nsa19vZmYoZGV2X3ByaXYsIHBo eSk7CiAJSTkxNV9XUklURShEUENMS0FfQ0ZHQ1IwX0lDTCwgdmFsKTsKIAogCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CkBAIC0yNzcwLDEzICsyNzc1LDEzIEBAIHN0YXRpYyB2 b2lkIGljbF9tYXBfcGxsc190b19wb3J0cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK IHN0YXRpYyB2b2lkIGljbF91bm1hcF9wbGxzX3RvX3BvcnRzKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsK KwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rlci0+cG9y dCk7CiAJdTMyIHZhbDsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOwogCiAJ dmFsID0gSTkxNV9SRUFEKERQQ0xLQV9DRkdDUjBfSUNMKTsKLQl2YWwgfD0gaWNsX2RwY2xrYV9j ZmdjcjBfY2xrX29mZihkZXZfcHJpdiwgcG9ydCk7CisJdmFsIHw9IGljbF9kcGNsa2FfY2ZnY3Iw X2Nsa19vZmYoZGV2X3ByaXYsIHBoeSk7CiAJSTkxNV9XUklURShEUENMS0FfQ0ZHQ1IwX0lDTCwg dmFsKTsKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CkBAIC0yODM3LDkg KzI4NDIsMTEgQEAgdm9pZCBpY2xfc2FuaXRpemVfZW5jb2Rlcl9wbGxfbWFwcGluZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAogCXZhbCA9IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1Iw X0lDTCk7CiAJZm9yX2VhY2hfcG9ydF9tYXNrZWQocG9ydCwgcG9ydF9tYXNrKSB7CisJCWVudW0g cGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKKwogCQlib29sIGRk aV9jbGtfdW5nYXRlZCA9ICEodmFsICYKIAkJCQkJIGljbF9kcGNsa2FfY2ZnY3IwX2Nsa19vZmYo ZGV2X3ByaXYsCi0JCQkJCQkJCSAgIHBvcnQpKTsKKwkJCQkJCQkJICAgcGh5KSk7CiAKIAkJaWYg KGRkaV9jbGtfbmVlZGVkID09IGRkaV9jbGtfdW5nYXRlZCkKIAkJCWNvbnRpbnVlOwpAQCAtMjg1 MSw5ICsyODU4LDkgQEAgdm9pZCBpY2xfc2FuaXRpemVfZW5jb2Rlcl9wbGxfbWFwcGluZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkJaWYgKFdBUk5fT04oZGRpX2Nsa19uZWVkZWQp KQogCQkJY29udGludWU7CiAKLQkJRFJNX05PVEUoIlBvcnQgJWMgaXMgZGlzYWJsZWQvaW4gRFNJ IG1vZGUgd2l0aCBhbiB1bmdhdGVkIERESSBjbG9jaywgZ2F0ZSBpdFxuIiwKLQkJCSBwb3J0X25h bWUocG9ydCkpOwotCQl2YWwgfD0gaWNsX2RwY2xrYV9jZmdjcjBfY2xrX29mZihkZXZfcHJpdiwg cG9ydCk7CisJCURSTV9OT1RFKCJQSFkgJWMgaXMgZGlzYWJsZWQvaW4gRFNJIG1vZGUgd2l0aCBh biB1bmdhdGVkIERESSBjbG9jaywgZ2F0ZSBpdFxuIiwKKwkJCSBwaHlfbmFtZShwb3J0KSk7CisJ CXZhbCB8PSBpY2xfZHBjbGthX2NmZ2NyMF9jbGtfb2ZmKGRldl9wcml2LCBwaHkpOwogCQlJOTE1 X1dSSVRFKERQQ0xLQV9DRkdDUjBfSUNMLCB2YWwpOwogCX0KIH0KQEAgLTI4NjMsNiArMjg3MCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsK KwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCk7CiAJdTMy IHZhbDsKIAljb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IGNydGNfc3RhdGUt PnNoYXJlZF9kcGxsOwogCkBAIC0yODcyLDE0ICsyODgwLDE0IEBAIHN0YXRpYyB2b2lkIGludGVs X2RkaV9jbGtfc2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCW11dGV4X2xv Y2soJmRldl9wcml2LT5kcGxsX2xvY2spOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTEpIHsKLQkJaWYgKCFpbnRlbF9wb3J0X2lzX2NvbWJvcGh5KGRldl9wcml2LCBwb3J0KSkKLQkJ CUk5MTVfV1JJVEUoRERJX0NMS19TRUwocG9ydCksCisJCWlmICghaW50ZWxfcGh5X2lzX2NvbWJv KGRldl9wcml2LCBwaHkpKQorCQkJSTkxNV9XUklURShERElfQ0xLX1NFTChwaHkpLAogCQkJCSAg IGljbF9wbGxfdG9fZGRpX2Nsa19zZWwoZW5jb2RlciwgY3J0Y19zdGF0ZSkpOwogCX0gZWxzZSBp ZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKIAkJLyogQ29uZmlndXJlIERQQ0xLQV9DRkdD UjAgdG8gbWFwIHRoZSBEUExMIHRvIHRoZSBEREkuICovCiAJCXZhbCA9IEk5MTVfUkVBRChEUENM S0FfQ0ZHQ1IwKTsKLQkJdmFsICY9IH5EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX01BU0socG9y dCk7Ci0JCXZhbCB8PSBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMKHBsbC0+aW5mby0+aWQsIHBv cnQpOworCQl2YWwgJj0gfkRQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwaHkpOworCQl2 YWwgfD0gRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTChwbGwtPmluZm8tPmlkLCBwaHkpOwogCQlJ OTE1X1dSSVRFKERQQ0xLQV9DRkdDUjAsIHZhbCk7CiAKIAkJLyoKQEAgLTI4ODgsMjEgKzI4OTYs MjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCiAJCSAqIHJlZ2lzdGVyIHdyaXRlcy4KIAkJICovCiAJCXZhbCA9IEk5MTVf UkVBRChEUENMS0FfQ0ZHQ1IwKTsKLQkJdmFsICY9IH5EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZG KHBvcnQpOworCQl2YWwgJj0gfkRQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYocGh5KTsKIAkJSTkx NV9XUklURShEUENMS0FfQ0ZHQ1IwLCB2YWwpOwogCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZf cHJpdikpIHsKIAkJLyogRERJIC0+IFBMTCBtYXBwaW5nICAqLwogCQl2YWwgPSBJOTE1X1JFQUQo RFBMTF9DVFJMMik7CiAKLQkJdmFsICY9IH4oRFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSB8 Ci0JCQkgRFBMTF9DVFJMMl9ERElfQ0xLX1NFTF9NQVNLKHBvcnQpKTsKLQkJdmFsIHw9IChEUExM X0NUUkwyX0RESV9DTEtfU0VMKHBsbC0+aW5mby0+aWQsIHBvcnQpIHwKLQkJCURQTExfQ1RSTDJf RERJX1NFTF9PVkVSUklERShwb3J0KSk7CisJCXZhbCAmPSB+KERQTExfQ1RSTDJfRERJX0NMS19P RkYocGh5KSB8CisJCQkgRFBMTF9DVFJMMl9ERElfQ0xLX1NFTF9NQVNLKHBoeSkpOworCQl2YWwg fD0gKERQTExfQ1RSTDJfRERJX0NMS19TRUwocGxsLT5pbmZvLT5pZCwgcGh5KSB8CisJCQlEUExM X0NUUkwyX0RESV9TRUxfT1ZFUlJJREUocGh5KSk7CiAKIAkJSTkxNV9XUklURShEUExMX0NUUkwy LCB2YWwpOwogCiAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewotCQlJOTE1 X1dSSVRFKFBPUlRfQ0xLX1NFTChwb3J0KSwgaHN3X3BsbF90b19kZGlfcGxsX3NlbChwbGwpKTsK KwkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocGh5KSwgaHN3X3BsbF90b19kZGlfcGxsX3NlbChw bGwpKTsKIAl9CiAKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOwpAQCAtMjkx MiwxOCArMjkyMCwxOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfY2xrX2Rpc2FibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJZW51bSBwb3J0IHBvcnQgPSBl bmNvZGVyLT5wb3J0OworCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2 LCBwb3J0KTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Ci0JCWlmICghaW50 ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkpCi0JCQlJOTE1X1dSSVRFKERESV9D TEtfU0VMKHBvcnQpLCBERElfQ0xLX1NFTF9OT05FKTsKKwkJaWYgKCFpbnRlbF9waHlfaXNfY29t Ym8oZGV2X3ByaXYsIHBoeSkpCisJCQlJOTE1X1dSSVRFKERESV9DTEtfU0VMKHBoeSksIERESV9D TEtfU0VMX05PTkUpOwogCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKIAkJ STkxNV9XUklURShEUENMS0FfQ0ZHQ1IwLCBJOTE1X1JFQUQoRFBDTEtBX0NGR0NSMCkgfAotCQkJ ICAgRFBDTEtBX0NGR0NSMF9ERElfQ0xLX09GRihwb3J0KSk7CisJCQkgICBEUENMS0FfQ0ZHQ1Iw X0RESV9DTEtfT0ZGKHBoeSkpOwogCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsK IAkJSTkxNV9XUklURShEUExMX0NUUkwyLCBJOTE1X1JFQUQoRFBMTF9DVFJMMikgfAotCQkJICAg RFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSk7CisJCQkgICBEUExMX0NUUkwyX0RESV9DTEtf T0ZGKHBoeSkpOwogCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKLQkJSTkx NV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIFBPUlRfQ0xLX1NFTF9OT05FKTsKKwkJSTkxNV9X UklURShQT1JUX0NMS19TRUwocGh5KSwgUE9SVF9DTEtfU0VMX05PTkUpOwogCX0KIH0KIApAQCAt MzExMCw2ICszMTE5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJZW51bSBwb3J0IHBv cnQgPSBlbmNvZGVyLT5wb3J0OworCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRl dl9wcml2LCBwb3J0KTsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVu Y190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CiAJYm9vbCBpc19tc3QgPSBpbnRlbF9jcnRj X2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9EUF9NU1QpOwogCWludCBsZXZlbCA9 IGludGVsX2RkaV9kcF9sZXZlbChpbnRlbF9kcCk7CkBAIC0zMTM4LDExICszMTQ4LDExIEBAIHN0 YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAogCWVsc2UKIAkJaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyLCBj cnRjX3N0YXRlKTsKIAotCWlmIChpbnRlbF9wb3J0X2lzX2NvbWJvcGh5KGRldl9wcml2LCBwb3J0 KSkgeworCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkpIHsKIAkJYm9vbCBs YW5lX3JldmVyc2FsID0KIAkJCWRpZ19wb3J0LT5zYXZlZF9wb3J0X2JpdHMgJiBERElfQlVGX1BP UlRfUkVWRVJTQUw7CiAKLQkJaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKGRldl9wcml2 LCBwb3J0LCBmYWxzZSwKKwkJaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKGRldl9wcml2 LCBwaHksIGZhbHNlLAogCQkJCQkgICAgICAgY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCwKIAkJCQkJ ICAgICAgIGxhbmVfcmV2ZXJzYWwpOwogCX0KQEAgLTM2MzAsNyArMzY0MCw3IEBAIGludGVsX2Rk aV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBv cnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7CiAKIAlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2Rl cihjcnRjX3N0YXRlKSB8fAotCSAgICBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBlbmNvZGVy LT5wb3J0KSkKKwkgICAgaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBpbnRlbF9wb3J0X3RvX3Bo eShkZXZfcHJpdiwgcG9ydCkpKQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwK IAkJCQkJaW50ZWxfZGRpX21haW5fbGlua19hdXhfZG9tYWluKGRpZ19wb3J0KSk7CiAKQEAgLTM2 NTYsOSArMzY2NiwxMCBAQCBpbnRlbF9kZGlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CisJZW51bSBwaHkg cGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpOwogCiAJaWYg KGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkgfHwKLQkgICAgaW50ZWxfcG9y dF9pc190YyhkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCkpCisJICAgIGludGVsX3BoeV9pc190Yyhk ZXZfcHJpdiwgcGh5KSkKIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2VkKGRldl9w cml2LAogCQkJCQkJICBpbnRlbF9kZGlfbWFpbl9saW5rX2F1eF9kb21haW4oZGlnX3BvcnQpKTsK IH0KQEAgLTM5MzQsOCArMzk0NSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9lbmNvZGVyX3Jl c2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuY29kZXIpCiB7CiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZHJtX2VuY29kZXIpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkcm1fZW5jb2Rlci0+ZGV2KTsK KwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShpOTE1LCBkaWdfcG9ydC0+YmFzZS5w b3J0KTsKIAotCWlmIChpbnRlbF9wb3J0X2lzX3RjKGk5MTUsIGRpZ19wb3J0LT5iYXNlLnBvcnQp KQorCWlmIChpbnRlbF9waHlfaXNfdGMoaTkxNSwgcGh5KSkKIAkJaW50ZWxfZGlnaXRhbF9wb3J0 X2Nvbm5lY3RlZCgmZGlnX3BvcnQtPmJhc2UpOwogCiAJaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChk cm1fZW5jb2Rlcik7CkBAIC0zOTQ1LDEwICszOTU3LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rk aV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIp OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShlbmNvZGVyLT5kZXYp OworCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGk5MTUsIGRpZ19wb3J0LT5iYXNl LnBvcnQpOwogCiAJaW50ZWxfZHBfZW5jb2Rlcl9mbHVzaF93b3JrKGVuY29kZXIpOwogCi0JaWYg KGludGVsX3BvcnRfaXNfdGMoaTkxNSwgZGlnX3BvcnQtPmJhc2UucG9ydCkpCisJaWYgKGludGVs X3BoeV9pc190YyhpOTE1LCBwaHkpKQogCQlpY2xfdGNfcGh5X2Rpc2Nvbm5lY3QoaTkxNSwgZGln X3BvcnQpOwogCiAJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKQEAgLTQxOTgsNiArNDIx MSw3IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBvcnQgcG9ydCkKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJYm9v bCBpbml0X2hkbWksIGluaXRfZHAsIGluaXRfbHNwY29uID0gZmFsc2U7CiAJZW51bSBwaXBlIHBp cGU7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIHBvcnQpOwog CiAJaW5pdF9oZG1pID0gcG9ydF9pbmZvLT5zdXBwb3J0c19kdmkgfHwgcG9ydF9pbmZvLT5zdXBw b3J0c19oZG1pOwogCWluaXRfZHAgPSBwb3J0X2luZm8tPnN1cHBvcnRzX2RwOwpAQCAtNDI2MSw3 ICs0Mjc1LDcgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQogCWludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMgPSBp bnRlbF9kZGlfbWF4X2xhbmVzKGludGVsX2RpZ19wb3J0KTsKIAlpbnRlbF9kaWdfcG9ydC0+YXV4 X2NoID0gaW50ZWxfYmlvc19wb3J0X2F1eF9jaChkZXZfcHJpdiwgcG9ydCk7CiAKLQlpbnRlbF9k aWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBwb3J0 KSAmJgorCWludGVsX2RpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9IGludGVsX3BoeV9pc190Yyhk ZXZfcHJpdiwgcGh5KSAmJgogCQkJCQkgIXBvcnRfaW5mby0+c3VwcG9ydHNfdHlwZWNfdXNiICYm CiAJCQkJCSAhcG9ydF9pbmZvLT5zdXBwb3J0c190YnQ7CiAKQEAgLTQzMjQsNyArNDMzOCw3IEBA IHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBvcnQgcG9ydCkKIAogCWludGVsX2luZm9mcmFtZV9pbml0KGludGVsX2RpZ19wb3J0KTsK IAotCWlmIChpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBwb3J0KSkKKwlpZiAoaW50ZWxfcGh5 X2lzX3RjKGRldl9wcml2LCBwaHkpKQogCQlpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGlu dGVsX2VuY29kZXIpOwogCiAJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYwppbmRleCA4NTkyYTdkNDIyZGUuLmU3MmFjZTQyMzI3YyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTY1NjAsMzEg KzY1NjAsMzkgQEAgc3RhdGljIHZvaWQgaTl4eF9wZml0X2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlJOTE1X1dSSVRFKEJDTFJQQVQoY3J0Yy0+cGlw ZSksIDApOwogfQogCi1ib29sIGludGVsX3BvcnRfaXNfY29tYm9waHkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKK2Jvb2wgaW50ZWxfcGh5X2lzX2Nv bWJvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaHkgcGh5KQogewot CWlmIChwb3J0ID09IFBPUlRfTk9ORSkKKwlpZiAocGh5ID09IFBIWV9OT05FKQogCQlyZXR1cm4g ZmFsc2U7CiAKIAlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQotCQlyZXR1cm4gcG9ydCA8 PSBQT1JUX0M7CisJCXJldHVybiBwaHkgPD0gUEhZX0M7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMSkKLQkJcmV0dXJuIHBvcnQgPD0gUE9SVF9COworCQlyZXR1cm4gcGh5IDw9IFBI WV9COwogCiAJcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGludGVsX3BvcnRfaXNfdGMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKK2Jvb2wgaW50ZWxf cGh5X2lzX3RjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaHkgcGh5 KQogewogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExICYmICFJU19FTEtIQVJUTEFLRShk ZXZfcHJpdikpCi0JCXJldHVybiBwb3J0ID49IFBPUlRfQyAmJiBwb3J0IDw9IFBPUlRfRjsKKwkJ cmV0dXJuIHBoeSA+PSBQSFlfQyAmJiBwaHkgPD0gUEhZX0Y7CiAKIAlyZXR1cm4gZmFsc2U7CiB9 CiAKK2VudW0gcGh5IGludGVsX3BvcnRfdG9fcGh5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBlbnVtIHBvcnQgcG9ydCkKK3sKKwlpZiAoSVNfRUxLSEFSVExBS0UoaTkxNSkgJiYgcG9y dCA9PSBQT1JUX0QpCisJCXJldHVybiBQSFlfQTsKKworCXJldHVybiAoZW51bSBwaHkpcG9ydDsK K30KKwogZW51bSB0Y19wb3J0IGludGVsX3BvcnRfdG9fdGMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIHsKLQlpZiAoIWludGVsX3BvcnRfaXNfdGMo ZGV2X3ByaXYsIHBvcnQpKQorCWlmICghaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBpbnRlbF9w b3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCkpKQogCQlyZXR1cm4gUE9SVF9UQ19OT05FOwogCiAJ cmV0dXJuIHBvcnQgLSBQT1JUX0M7CkBAIC05OTIyLDkgKzk5MzAsMTAgQEAgc3RhdGljIHZvaWQg Y2Fubm9ubGFrZV9nZXRfZGRpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiB7CiAJZW51bSBpbnRlbF9kcGxsX2lkIGlkOwogCXUzMiB0ZW1wOworCWVudW0gcGh5IHBoeSA9 IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKIAotCXRlbXAgPSBJOTE1X1JFQUQo RFBDTEtBX0NGR0NSMCkgJiBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX01BU0socG9ydCk7Ci0J aWQgPSB0ZW1wID4+IERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfU0hJRlQocG9ydCk7CisJdGVt cCA9IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1IwKSAmIERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxf TUFTSyhwaHkpOworCWlkID0gdGVtcCA+PiBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX1NISUZU KHBoeSk7CiAKIAlpZiAoV0FSTl9PTihpZCA8IFNLTF9EUExMMCB8fCBpZCA+IFNLTF9EUExMMikp CiAJCXJldHVybjsKQEAgLTk5MzYsMTUgKzk5NDUsMTYgQEAgc3RhdGljIHZvaWQgaWNlbGFrZV9n ZXRfZGRpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJZW51bSBw b3J0IHBvcnQsCiAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewor CWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKIAllbnVt IGludGVsX2RwbGxfaWQgaWQ7CiAJdTMyIHRlbXA7CiAKIAkvKiBUT0RPOiBUQlQgcGxsIG5vdCBp bXBsZW1lbnRlZC4gKi8KLQlpZiAoaW50ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9y dCkpIHsKKwlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkpKSB7CiAJCXRlbXAg PSBJOTE1X1JFQUQoRFBDTEtBX0NGR0NSMF9JQ0wpICYKLQkJICAgICAgIERQQ0xLQV9DRkdDUjBf RERJX0NMS19TRUxfTUFTSyhwb3J0KTsKLQkJaWQgPSB0ZW1wID4+IERQQ0xLQV9DRkdDUjBfRERJ X0NMS19TRUxfU0hJRlQocG9ydCk7Ci0JfSBlbHNlIGlmIChpbnRlbF9wb3J0X2lzX3RjKGRldl9w cml2LCBwb3J0KSkgeworCQkgICAgICAgRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBo eSk7CisJCWlkID0gdGVtcCA+PiBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX1NISUZUKHBoeSk7 CisJfSBlbHNlIGlmIChpbnRlbF9waHlfaXNfdGMoZGV2X3ByaXYsIHBoeSkpIHsKIAkJaWQgPSBp Y2xfdGNfcG9ydF90b19wbGxfaWQoaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCkpOwog CX0gZWxzZSB7CiAJCVdBUk4oMSwgIkludmFsaWQgcG9ydCAleFxuIiwgcG9ydCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oCmluZGV4IGVlNmI4MTk0YTQ1 OS4uZjg5YjBiNzc5ZjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuaApAQCAtMjI5LDYgKzIyOSwyMSBAQCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gewog CXUzMiBsaW5rX247CiB9OwogCitlbnVtIHBoeSB7CisJUEhZX05PTkUgPSAtMSwKKworCVBIWV9B ID0gMCwKKwlQSFlfQiwKKwlQSFlfQywKKwlQSFlfRCwKKwlQSFlfRSwKKwlQSFlfRiwKKworCUk5 MTVfTUFYX1BIWVMKK307CisKKyNkZWZpbmUgcGh5X25hbWUoYSkgKChhKSArICdBJykKKwogI2Rl ZmluZSBmb3JfZWFjaF9waXBlKF9fZGV2X3ByaXYsIF9fcCkgXAogCWZvciAoKF9fcCkgPSAwOyAo X19wKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9waXBlczsgKF9fcCkrKykKIApAQCAt MzU3LDUgKzM3Miw2IEBAIHZvaWQgbHB0X2Rpc2FibGVfY2xrb3V0X2RwKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiB1MzIgaW50ZWxfcGxhbmVfZmJfbWF4X3N0cmlkZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICB1MzIgcGl4ZWxfZm9ybWF0 LCB1NjQgbW9kaWZpZXIpOwogYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CitlbnVtIHBoeSBpbnRlbF9wb3J0X3Rv X3BoeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZW51bSBwb3J0IHBvcnQpOwogCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwppbmRleCA0MzM2ZGY0 NmZlNzguLjU3NzUzODEzMmE4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZHAuYwpAQCAtMzI5LDkgKzMyOSw5IEBAIHN0YXRpYyBpbnQgaWNsX21heF9zb3VyY2VfcmF0ZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwotCWVu dW0gcG9ydCBwb3J0ID0gZGlnX3BvcnQtPmJhc2UucG9ydDsKKwllbnVtIHBoeSBwaHkgPSBpbnRl bF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7CiAKLQlpZiAoaW50 ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkgJiYKKwlpZiAoaW50ZWxfcGh5X2lz X2NvbWJvKGRldl9wcml2LCBwaHkpICYmCiAJICAgICFJU19FTEtIQVJUTEFLRShkZXZfcHJpdikg JiYKIAkgICAgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCiAJCXJldHVybiA1NDAwMDA7CkBA IC01NDI1LDEwICs1NDI1LDExIEBAIHN0YXRpYyBib29sIGljbF9kaWdpdGFsX3BvcnRfY29ubmVj dGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5i YXNlKTsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rl ci0+cG9ydCk7CiAKLQlpZiAoaW50ZWxfcG9ydF9pc19jb21ib3BoeShkZXZfcHJpdiwgZW5jb2Rl ci0+cG9ydCkpCisJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKIAkJcmV0 dXJuIGljbF9jb21ib19wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgZGlnX3BvcnQpOwotCWVsc2Ug aWYgKGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpKQorCWVsc2UgaWYg KGludGVsX3BoeV9pc190YyhkZXZfcHJpdiwgcGh5KSkKIAkJcmV0dXJuIGljbF90Y19wb3J0X2Nv bm5lY3RlZChkZXZfcHJpdiwgZGlnX3BvcnQpOwogCWVsc2UKIAkJTUlTU0lOR19DQVNFKGVuY29k ZXItPmhwZF9waW4pOwpAQCAtNzMzMiw2ICs3MzMzLDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0 b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGludGVsX2VuY29kZXItPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAllbnVtIHBvcnQgcG9ydCA9IGlu dGVsX2VuY29kZXItPnBvcnQ7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2 X3ByaXYsIHBvcnQpOwogCWludCB0eXBlOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgd29yayBmb3Ig bW9kZXNldCBpbiBjYXNlIG9mIGxpbmsgdHJhaW4gZmFpbHVyZSAqLwpAQCAtNzM1OCw3ICs3MzYw LDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCiAJCSAqIEN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IGVEUCBvbiBU eXBlQyBwb3J0cywgYWx0aG91Z2ggaW4KIAkJICogdGhlb3J5IGl0IGNvdWxkIHdvcmsgb24gVHlw ZUMgbGVnYWN5IHBvcnRzLgogCQkgKi8KLQkJV0FSTl9PTihpbnRlbF9wb3J0X2lzX3RjKGRldl9w cml2LCBwb3J0KSk7CisJCVdBUk5fT04oaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBwaHkpKTsK IAkJdHlwZSA9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFA7CiAJfSBlbHNlIHsKIAkJdHlwZSA9IERS TV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHBsbF9tZ3IuYwppbmRleCAyZDRlN2I5YTdiOWQuLjdiZjY5Nzg0ODA1NSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYwpAQCAt MjUxMyw3ICsyNTEzLDggQEAgc3RhdGljIGJvb2wgaWNsX2NhbGNfZHBsbF9zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlzdHJ1Y3Qgc2tsX3dycGxsX3BhcmFtcyBw bGxfcGFyYW1zID0geyAwIH07CiAJYm9vbCByZXQ7CiAKLQlpZiAoaW50ZWxfcG9ydF9pc190Yyhk ZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCkpCisJaWYgKGludGVsX3BoeV9pc190YyhkZXZfcHJpdiwg aW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsCisJCQkJCQkJZW5jb2Rlci0+cG9ydCkpKQogCQly ZXQgPSBpY2xfY2FsY190YnRfcGxsKGNydGNfc3RhdGUsICZwbGxfcGFyYW1zKTsKIAllbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSB8fAog CQkgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKSkKQEAg LTI4MDAsMTQgKzI4MDEsMTUgQEAgaWNsX2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 OwogCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwogCWVudW0gcG9ydCBwb3J0ID0gZW5j b2Rlci0+cG9ydDsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwg cG9ydCk7CiAJZW51bSBpbnRlbF9kcGxsX2lkIG1pbiwgbWF4OwogCWJvb2wgcmV0OwogCi0JaWYg KGludGVsX3BvcnRfaXNfY29tYm9waHkoZGV2X3ByaXYsIHBvcnQpKSB7CisJaWYgKGludGVsX3Bo eV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkgewogCQltaW4gPSBEUExMX0lEX0lDTF9EUExMMDsK IAkJbWF4ID0gRFBMTF9JRF9JQ0xfRFBMTDE7CiAJCXJldCA9IGljbF9jYWxjX2RwbGxfc3RhdGUo Y3J0Y19zdGF0ZSwgZW5jb2Rlcik7Ci0JfSBlbHNlIGlmIChpbnRlbF9wb3J0X2lzX3RjKGRldl9w cml2LCBwb3J0KSkgeworCX0gZWxzZSBpZiAoaW50ZWxfcGh5X2lzX3RjKGRldl9wcml2LCBwaHkp KSB7CiAJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpIHsKIAkJCXN0 cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqbXN0X2VuY29kZXI7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCmluZGV4IDdlNzQ4YmIzZjMyNC4uMmE1NTc4OTVlYzcxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKQEAgLTE3OTQsMTIgKzE3OTQsMTIgQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQg ewogI2RlZmluZSBfSUNMX0NPTUJPUEhZX0EJCQkweDE2MjAwMAogI2RlZmluZSBfSUNMX0NPTUJP UEhZX0IJCQkweDZDMDAwCiAjZGVmaW5lIF9JQ0xfQ09NQk9QSFlfQ19FSEwJCTB4MTYwMDAwCi0j ZGVmaW5lIF9JQ0xfQ09NQk9QSFkocG9ydCkJCV9QSUNLKHBvcnQsIF9JQ0xfQ09NQk9QSFlfQSwg XAorI2RlZmluZSBfSUNMX0NPTUJPUEhZKHBoeSkJCV9QSUNLKHBoeSwgX0lDTF9DT01CT1BIWV9B LCBcCiAJCQkJCSAgICAgIF9JQ0xfQ09NQk9QSFlfQiwgXAogCQkJCQkgICAgICBfSUNMX0NPTUJP UEhZX0NfRUhMKQogCiAvKiBDTkwvSUNMIFBvcnQgQ0xfRFcgcmVnaXN0ZXJzICovCi0jZGVmaW5l IF9JQ0xfUE9SVF9DTF9EVyhkdywgcG9ydCkJKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVm aW5lIF9JQ0xfUE9SVF9DTF9EVyhkdywgcGh5KQkoX0lDTF9DT01CT1BIWShwaHkpICsgXAogCQkJ CQkgNCAqIChkdykpCiAKICNkZWZpbmUgQ05MX1BPUlRfQ0wxQ01fRFc1CQlfTU1JTygweDE2MjAx NCkKQEAgLTk2ODEsMTUgKzk2ODEsMTUgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7CiAgKi8KICNk ZWZpbmUgRFBDTEtBX0NGR0NSMAkJCQlfTU1JTygweDZDMjAwKQogI2RlZmluZSBEUENMS0FfQ0ZH Q1IwX0lDTAkJCV9NTUlPKDB4MTY0MjgwKQotI2RlZmluZSAgRFBDTEtBX0NGR0NSMF9ERElfQ0xL X09GRihwb3J0KQkoMSA8PCAoKHBvcnQpID09ICBQT1JUX0YgPyAyMyA6IFwKLQkJCQkJCSAgICAg IChwb3J0KSArIDEwKSkKLSNkZWZpbmUgIElDTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBv cnQpICAgKDEgPDwgKChwb3J0KSArIDEwKSkKKyNkZWZpbmUgIERQQ0xLQV9DRkdDUjBfRERJX0NM S19PRkYocGh5KQkJKDEgPDwgKChwaHkpID09IFBIWV9GID8gMjMgOiBcCisJCQkJCQkgICAgICAo cGh5KSArIDEwKSkKKyNkZWZpbmUgIElDTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSkJ KDEgPDwgX1BJQ0socGh5LCAxMCwgMTEsIDI1KSkKICNkZWZpbmUgIElDTF9EUENMS0FfQ0ZHQ1Iw X1RDX0NMS19PRkYodGNfcG9ydCkgKDEgPDwgKCh0Y19wb3J0KSA9PSBQT1JUX1RDNCA/IFwKIAkJ CQkJCSAgICAgIDIxIDogKHRjX3BvcnQpICsgMTIpKQotI2RlZmluZSAgRFBDTEtBX0NGR0NSMF9E RElfQ0xLX1NFTF9TSElGVChwb3J0KQkoKHBvcnQpID09IFBPUlRfRiA/IDIxIDogXAotCQkJCQkJ KHBvcnQpICogMikKLSNkZWZpbmUgIERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwb3J0 KQkoMyA8PCBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX1NISUZUKHBvcnQpKQotI2RlZmluZSAg RFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTChwbGwsIHBvcnQpCSgocGxsKSA8PCBEUENMS0FfQ0ZH Q1IwX0RESV9DTEtfU0VMX1NISUZUKHBvcnQpKQorI2RlZmluZSAgRFBDTEtBX0NGR0NSMF9ERElf Q0xLX1NFTF9TSElGVChwaHkpCSgocGh5KSA9PSBQSFlfRiA/IDIxIDogXAorCQkJCQkJKHBoeSkg KiAyKQorI2RlZmluZSAgRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBoeSkJKDMgPDwg RFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9TSElGVChwaHkpKQorI2RlZmluZSAgRFBDTEtBX0NG R0NSMF9ERElfQ0xLX1NFTChwbGwsIHBoeSkJKChwbGwpIDw8IERQQ0xLQV9DRkdDUjBfRERJX0NM S19TRUxfU0hJRlQocGh5KSkKIAogLyogQ05MIFBMTCAqLwogI2RlZmluZSBEUExMMF9FTkFCTEUJ CTB4NDYwMTAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMWQ1OGY3ZWM1ZDg0Li44YzE3 NGJiNzY3YmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNDczLDggKzE0NzMsOCBA QCB2b2lkIGludGVsX3Bwc191bmxvY2tfcmVnc193YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoKIGludGVsX2VuY29kZXJfY3Vy cmVudF9tb2RlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsKLWJvb2wgaW50ZWxfcG9y dF9pc19jb21ib3BoeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9y dCBwb3J0KTsKLWJvb2wgaW50ZWxfcG9ydF9pc190YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KTsKK2Jvb2wgaW50ZWxfcGh5X2lzX2NvbWJvKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaHkgcGh5KTsKK2Jvb2wgaW50ZWxf cGh5X2lzX3RjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaHkgcGh5 KTsKIGVudW0gdGNfcG9ydCBpbnRlbF9wb3J0X3RvX3RjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCSAgICAgIGVudW0gcG9ydCBwb3J0KTsKIGludCBpbnRlbF9nZXRfcGlw ZV9mcm9tX2NydGNfaWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK LS0gCjIuMTcuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4