From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v6 3/5] drm/i915/gen11: Convert combo PHY logic to use new 'enum phy' namespace Date: Tue, 9 Jul 2019 11:39:32 -0700 Message-ID: <20190709183934.445-4-matthew.d.roper@intel.com> References: <20190709183934.445-1-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D71389F45 for ; Tue, 9 Jul 2019 18:39:54 +0000 (UTC) In-Reply-To: <20190709183934.445-1-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 List-Id: intel-gfx@lists.freedesktop.org Q29udmVydCB0aGUgY29kZSB0aGF0IG9wZXJhdGVzIGRpcmVjdGx5IG9uIGdlbjExIGNvbWJvIFBI WSdzIHRvIHVzZSB0aGUKbmV3IG5hbWVzcGFjZS4gIENvbWJvIFBIWSByZWdpc3RlcnMgYXJlIHRo b3NlIG5hbWVkICJJQ0xfUE9SVF8qIiBwbHVzCklDTF9EUEhZX0NIS04uCgpOb3RlIHRoYXQgYSBs b3Qgb2YgdGhlIFBIWSBwcm9ncmFtbWluZyBoYXBwZW5zIGluIHRoZSBNSVBJIERTSSBjb2RlLgpG b3IgY2xhcml0eSBJJ3ZlIGFkZGVkIGEgZm9yX2VhY2hfZHNpX3BoeSgpIHRvIGxvb3Agb3ZlciB0 aGUgcGh5cyB1c2VkCmJ5IERTSS4gIFNpbmNlIERTSSBhbHdheXMgdXNlcyBBICYgQiBvbiBnZW4x MSwgcG9ydD1waHkgaW4gYWxsIGNhc2VzIHNvCml0IGRvZXNuJ3QgYWN0dWFsbHkgbWF0dGVyIHdo aWNoIGZvcm0gd2UgdXNlIGluIHRoZSBEU0kgY29kZS4gIEkndmUgdXNlZAp0aGUgcGh5IGl0ZXJh dG9yIGluIGNvZGUgdGhhdCdzIGV4cGxpY2l0bHkgd29ya2luZyB3aXRoIHRoZSBjb21ibyBQSFks CmJ1dCBsZWZ0IHRoZSByZXN0IG9mIHRoZSBEU0kgY29kZSB1c2luZyB0aGUgcG9ydCBpdGVyYXRv ciBhbmQgbmFtZXNwYWNlCnRvIG1pbmltaXplIHBhdGNoIGRlbHRhcy4gIFdlIGNhbiBzd2l0Y2gg dGhlIHJlc3Qgb2YgdGhlIERTSSBjb2RlIG92ZXIKdG8gdXNlIHBoeSB0ZXJtaW5vbG9neSBsYXRl ciBpZiB0aGlzIHdpbmRzIHVwIGJlaW5nIHRvbyBjb25mdXNpbmcuCgp2NjogRHJvcCBhbiBpbmNs dWRlIG9mIGRybS9pOTE1X2RybS5oOyB0aGF0IHdhcyBwcmV2aW91c2x5IGluY2x1ZGVkIGp1c3QK ICAgIGZvciB0aGUgZGVmaW5pdGlvbiBvZiAnZW51bSBwb3J0JyB3aGljaCB0aGlzIHBhdGNoIHJl bW92ZXMgdGhlIG5lZWQKICAgIGZvci4gIChKb3NlKQoKQ2M6IEpvc8OpIFJvYmVydG8gZGUgU291 emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0 aGV3LmQucm9wZXJAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpvc8OpIFJvYmVydG8gZGUg U291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaWNsX2RzaS5jICAgICAgICB8IDEyNyArKysrKysrKy0tLS0tLS0tCiAuLi4vZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmMgICAgfCAxNDMgKysrKysrKysrLS0tLS0t LS0tCiAuLi4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmggICAgfCAgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8ICA0NSAr KystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oICB8ICAg NCArCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgICAgfCAgMTYg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpLmggICAgICB8ICAxMiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAgIHwgIDc0ICsr KystLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgMjEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMKaW5kZXggOGYxMzI0YzJm NTM5Li40ZDk1MmFjY2ZhYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaWNsX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5j CkBAIC0yMDIsNjMgKzIwMiw2MiBAQCBzdGF0aWMgdm9pZCBkc2lfcHJvZ3JhbV9zd2luZ19hbmRf ZGVlbXBoYXNpcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlz dHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5i YXNlKTsKLQllbnVtIHBvcnQgcG9ydDsKKwllbnVtIHBoeSBwaHk7CiAJdTMyIHRtcDsKIAlpbnQg bGFuZTsKIAotCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKLQor CWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKIAkJLyoKIAkJICogUHJv Z3JhbSB2b2x0YWdlIHN3aW5nIGFuZCBwcmUtZW1waGFzaXMgbGV2ZWwgdmFsdWVzIGFzIHBlcgog CQkgKiB0YWJsZSBpbiBCU1BFQyB1bmRlciBEREkgYnVmZmVyIHByb2dyYW1pbmcKIAkJICovCi0J CXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKKwkJdG1wID0gSTkx NV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocGh5KSk7CiAJCXRtcCAmPSB+KFNDQUxJTkdfTU9E RV9TRUxfTUFTSyB8IFJURVJNX1NFTEVDVF9NQVNLKTsKIAkJdG1wIHw9IFNDQUxJTkdfTU9ERV9T RUwoMHgyKTsKIAkJdG1wIHw9IFRBUDJfRElTQUJMRSB8IFRBUDNfRElTQUJMRTsKIAkJdG1wIHw9 IFJURVJNX1NFTEVDVCgweDYpOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9y dCksIHRtcCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkpLCB0bXApOwog Ci0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfQVVYKHBvcnQpKTsKKwkJdG1wID0g STkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KSk7CiAJCXRtcCAmPSB+KFNDQUxJTkdf TU9ERV9TRUxfTUFTSyB8IFJURVJNX1NFTEVDVF9NQVNLKTsKIAkJdG1wIHw9IFNDQUxJTkdfTU9E RV9TRUwoMHgyKTsKIAkJdG1wIHw9IFRBUDJfRElTQUJMRSB8IFRBUDNfRElTQUJMRTsKIAkJdG1w IHw9IFJURVJNX1NFTEVDVCgweDYpOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9BVVgo cG9ydCksIHRtcCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0FVWChwaHkpLCB0bXAp OwogCi0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzJfTE4wKHBvcnQpKTsKKwkJdG1w ID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXMl9MTjAocGh5KSk7CiAJCXRtcCAmPSB+KFNXSU5H X1NFTF9MT1dFUl9NQVNLIHwgU1dJTkdfU0VMX1VQUEVSX01BU0sgfAogCQkJIFJDT01QX1NDQUxB Ul9NQVNLKTsKIAkJdG1wIHw9IFNXSU5HX1NFTF9VUFBFUigweDIpOwogCQl0bXAgfD0gU1dJTkdf U0VMX0xPV0VSKDB4Mik7CiAJCXRtcCB8PSBSQ09NUF9TQ0FMQVIoMHg5OCk7Ci0JCUk5MTVfV1JJ VEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwb3J0KSwgdG1wKTsKKwkJSTkxNV9XUklURShJQ0xfUE9S VF9UWF9EVzJfR1JQKHBoeSksIHRtcCk7CiAKLQkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1RY X0RXMl9BVVgocG9ydCkpOworCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0FVWChw aHkpKTsKIAkJdG1wICY9IH4oU1dJTkdfU0VMX0xPV0VSX01BU0sgfCBTV0lOR19TRUxfVVBQRVJf TUFTSyB8CiAJCQkgUkNPTVBfU0NBTEFSX01BU0spOwogCQl0bXAgfD0gU1dJTkdfU0VMX1VQUEVS KDB4Mik7CiAJCXRtcCB8PSBTV0lOR19TRUxfTE9XRVIoMHgyKTsKIAkJdG1wIHw9IFJDT01QX1ND QUxBUigweDk4KTsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfQVVYKHBvcnQpLCB0bXAp OworCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9BVVgocGh5KSwgdG1wKTsKIAotCQl0bXAg PSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0FVWChwb3J0KSk7CisJCXRtcCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9UWF9EVzRfQVVYKHBoeSkpOwogCQl0bXAgJj0gfihQT1NUX0NVUlNPUl8xX01B U0sgfCBQT1NUX0NVUlNPUl8yX01BU0sgfAogCQkJIENVUlNPUl9DT0VGRl9NQVNLKTsKIAkJdG1w IHw9IFBPU1RfQ1VSU09SXzEoMHgwKTsKIAkJdG1wIHw9IFBPU1RfQ1VSU09SXzIoMHgwKTsKIAkJ dG1wIHw9IENVUlNPUl9DT0VGRigweDNmKTsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRf QVVYKHBvcnQpLCB0bXApOworCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNF9BVVgocGh5KSwg dG1wKTsKIAogCQlmb3IgKGxhbmUgPSAwOyBsYW5lIDw9IDM7IGxhbmUrKykgewogCQkJLyogQnNw ZWM6IG11c3Qgbm90IHVzZSBHUlAgcmVnaXN0ZXIgZm9yIHdyaXRlICovCi0JCQl0bXAgPSBJOTE1 X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBvcnQpKTsKKwkJCXRtcCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9UWF9EVzRfTE4obGFuZSwgcGh5KSk7CiAJCQl0bXAgJj0gfihQT1NUX0NVUlNP Ul8xX01BU0sgfCBQT1NUX0NVUlNPUl8yX01BU0sgfAogCQkJCSBDVVJTT1JfQ09FRkZfTUFTSyk7 CiAJCQl0bXAgfD0gUE9TVF9DVVJTT1JfMSgweDApOwogCQkJdG1wIHw9IFBPU1RfQ1VSU09SXzIo MHgwKTsKIAkJCXRtcCB8PSBDVVJTT1JfQ09FRkYoMHgzZik7Ci0JCQlJOTE1X1dSSVRFKElDTF9Q T1JUX1RYX0RXNF9MTihsYW5lLCBwb3J0KSwgdG1wKTsKKwkJCUk5MTVfV1JJVEUoSUNMX1BPUlRf VFhfRFc0X0xOKGxhbmUsIHBoeSksIHRtcCk7CiAJCX0KIAl9CiB9CkBAIC0zNjQsMTAgKzM2Mywx MCBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfcG93ZXJfdXBfbGFuZXMoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNp ID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Ci0JZW51bSBwb3J0IHBvcnQ7CisJ ZW51bSBwaHkgcGh5OwogCi0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0 cykKLQkJaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKGRldl9wcml2LCBwb3J0LCB0cnVl LAorCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpCisJCWludGVsX2NvbWJv X3BoeV9wb3dlcl91cF9sYW5lcyhkZXZfcHJpdiwgcGh5LCB0cnVlLAogCQkJCQkgICAgICAgaW50 ZWxfZHNpLT5sYW5lX2NvdW50LCBmYWxzZSk7CiB9CiAKQEAgLTM3NSw0NiArMzc0LDQ2IEBAIHN0 YXRpYyB2b2lkIGdlbjExX2RzaV9jb25maWdfcGh5X2xhbmVzX3NlcXVlbmNlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVs X2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwotCWVudW0gcG9ydCBwb3J0 OworCWVudW0gcGh5IHBoeTsKIAl1MzIgdG1wOwogCWludCBsYW5lOwogCiAJLyogU3RlcCA0Yihp KSBzZXQgbG9hZGdlbiBzZWxlY3QgZm9yIHRyYW5zbWl0IGFuZCBhdXggbGFuZXMgKi8KLQlmb3Jf ZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Ci0JCXRtcCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9UWF9EVzRfQVVYKHBvcnQpKTsKKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50 ZWxfZHNpLT5waHlzKSB7CisJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfQVVYKHBo eSkpOwogCQl0bXAgJj0gfkxPQURHRU5fU0VMRUNUOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RY X0RXNF9BVVgocG9ydCksIHRtcCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0FVWChw aHkpLCB0bXApOwogCQlmb3IgKGxhbmUgPSAwOyBsYW5lIDw9IDM7IGxhbmUrKykgewotCQkJdG1w ID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihsYW5lLCBwb3J0KSk7CisJCQl0bXAgPSBJ OTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBoeSkpOwogCQkJdG1wICY9IH5MT0FE R0VOX1NFTEVDVDsKIAkJCWlmIChsYW5lICE9IDIpCiAJCQkJdG1wIHw9IExPQURHRU5fU0VMRUNU OwotCQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRfTE4obGFuZSwgcG9ydCksIHRtcCk7CisJ CQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNF9MTihsYW5lLCBwaHkpLCB0bXApOwogCQl9CiAJ fQogCiAJLyogU3RlcCA0YihpaSkgc2V0IGxhdGVuY3kgb3B0aW1pemF0aW9uIGZvciB0cmFuc21p dCBhbmQgYXV4IGxhbmVzICovCi0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5w b3J0cykgewotCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0FVWChwb3J0KSk7CisJ Zm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgeworCQl0bXAgPSBJOTE1X1JF QUQoSUNMX1BPUlRfVFhfRFcyX0FVWChwaHkpKTsKIAkJdG1wICY9IH5GUkNfTEFURU5DWV9PUFRJ TV9NQVNLOwogCQl0bXAgfD0gRlJDX0xBVEVOQ1lfT1BUSU1fVkFMKDB4NSk7Ci0JCUk5MTVfV1JJ VEUoSUNMX1BPUlRfVFhfRFcyX0FVWChwb3J0KSwgdG1wKTsKLQkJdG1wID0gSTkxNV9SRUFEKElD TF9QT1JUX1RYX0RXMl9MTjAocG9ydCkpOworCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9B VVgocGh5KSwgdG1wKTsKKwkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXMl9MTjAocGh5 KSk7CiAJCXRtcCAmPSB+RlJDX0xBVEVOQ1lfT1BUSU1fTUFTSzsKIAkJdG1wIHw9IEZSQ19MQVRF TkNZX09QVElNX1ZBTCgweDUpOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9HUlAocG9y dCksIHRtcCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwaHkpLCB0bXApOwog CiAJCS8qIEZvciBFSEwgc2V0IGxhdGVuY3kgb3B0aW1pemF0aW9uIGZvciBQQ1NfRFcxIGxhbmVz ICovCiAJCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpIHsKLQkJCXRtcCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9QQ1NfRFcxX0FVWChwb3J0KSk7CisJCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BP UlRfUENTX0RXMV9BVVgocGh5KSk7CiAJCQl0bXAgJj0gfkxBVEVOQ1lfT1BUSU1fTUFTSzsKIAkJ CXRtcCB8PSBMQVRFTkNZX09QVElNX1ZBTCgwKTsKLQkJCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENT X0RXMV9BVVgocG9ydCksIHRtcCk7CisJCQlJOTE1X1dSSVRFKElDTF9QT1JUX1BDU19EVzFfQVVY KHBoeSksIHRtcCk7CiAKLQkJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9QQ1NfRFcxX0xOMChw b3J0KSk7CisJCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAocGh5KSk7CiAJ CQl0bXAgJj0gfkxBVEVOQ1lfT1BUSU1fTUFTSzsKIAkJCXRtcCB8PSBMQVRFTkNZX09QVElNX1ZB TCgweDEpOwotCQkJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0dSUChwb3J0KSwgdG1wKTsK KwkJCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocGh5KSwgdG1wKTsKIAkJfQogCX0K IApAQCAtNDI1LDE2ICs0MjQsMTYgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX3ZvbHRhZ2Vfc3dp bmdfcHJvZ3JhbV9zZXEoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJ c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+ YmFzZSk7CiAJdTMyIHRtcDsKLQllbnVtIHBvcnQgcG9ydDsKKwllbnVtIHBoeSBwaHk7CiAKIAkv KiBjbGVhciBjb21tb24ga2VlcGVyIGVuYWJsZSBiaXQgKi8KLQlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Ci0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9QQ1Nf RFcxX0xOMChwb3J0KSk7CisJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykg eworCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAocGh5KSk7CiAJCXRtcCAm PSB+Q09NTU9OX0tFRVBFUl9FTjsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0dSUChw b3J0KSwgdG1wKTsKLQkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfQVVYKHBvcnQp KTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0dSUChwaHkpLCB0bXApOworCQl0bXAg PSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9BVVgocGh5KSk7CiAJCXRtcCAmPSB+Q09NTU9O X0tFRVBFUl9FTjsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0FVWChwb3J0KSwgdG1w KTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0FVWChwaHkpLCB0bXApOwogCX0KIAog CS8qCkBAIC00NDIsMzMgKzQ0MSwzMyBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfdm9sdGFnZV9z d2luZ19wcm9ncmFtX3NlcShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkgKiBOb3Rl OiBsb2FkZ2VuIHNlbGVjdCBwcm9ncmFtIGlzIGRvbmUKIAkgKiBhcyBwYXJ0IG9mIGxhbmUgcGh5 IHNlcXVlbmNlIGNvbmZpZ3VyYXRpb24KIAkgKi8KLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBp bnRlbF9kc2ktPnBvcnRzKSB7Ci0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9y dCkpOworCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKKwkJdG1wID0g STkxNV9SRUFEKElDTF9QT1JUX0NMX0RXNShwaHkpKTsKIAkJdG1wIHw9IFNVU19DTE9DS19DT05G SUc7Ci0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpLCB0bXApOworCQlJOTE1X1dS SVRFKElDTF9QT1JUX0NMX0RXNShwaHkpLCB0bXApOwogCX0KIAogCS8qIENsZWFyIHRyYWluaW5n IGVuYWJsZSB0byBjaGFuZ2Ugc3dpbmcgdmFsdWVzICovCi0JZm9yX2VhY2hfZHNpX3BvcnQocG9y dCwgaW50ZWxfZHNpLT5wb3J0cykgewotCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1 X0xOMChwb3J0KSk7CisJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewor CQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xOMChwaHkpKTsKIAkJdG1wICY9IH5U WF9UUkFJTklOR19FTjsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB0 bXApOwotCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0FVWChwb3J0KSk7CisJCUk5 MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkpLCB0bXApOworCQl0bXAgPSBJOTE1X1JF QUQoSUNMX1BPUlRfVFhfRFc1X0FVWChwaHkpKTsKIAkJdG1wICY9IH5UWF9UUkFJTklOR19FTjsK LQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfQVVYKHBvcnQpLCB0bXApOworCQlJOTE1X1dS SVRFKElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KSwgdG1wKTsKIAl9CiAKIAkvKiBQcm9ncmFtIHN3 aW5nIGFuZCBkZS1lbXBoYXNpcyAqLwogCWRzaV9wcm9ncmFtX3N3aW5nX2FuZF9kZWVtcGhhc2lz KGVuY29kZXIpOwogCiAJLyogU2V0IHRyYWluaW5nIGVuYWJsZSB0byB0cmlnZ2VyIHVwZGF0ZSAq LwotCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKLQkJdG1wID0g STkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOworCWZvcl9lYWNoX2RzaV9waHko cGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKKwkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RX NV9MTjAocGh5KSk7CiAJCXRtcCB8PSBUWF9UUkFJTklOR19FTjsKLQkJSTkxNV9XUklURShJQ0xf UE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB0bXApOwotCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRf VFhfRFc1X0FVWChwb3J0KSk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkp LCB0bXApOworCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0FVWChwaHkpKTsKIAkJ dG1wIHw9IFRYX1RSQUlOSU5HX0VOOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9BVVgo cG9ydCksIHRtcCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0FVWChwaHkpLCB0bXAp OwogCX0KIH0KIApAQCAtNDk3LDYgKzQ5Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9zZXR1 cF9kcGh5X3RpbWluZ3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGlu dGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7CiAJ dTMyIHRtcDsKIAllbnVtIHBvcnQgcG9ydDsKKwllbnVtIHBoeSBwaHk7CiAKIAkvKiBQcm9ncmFt IFQtSU5JVCBtYXN0ZXIgcmVnaXN0ZXJzICovCiAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50 ZWxfZHNpLT5wb3J0cykgewpAQCAtNTQ2LDEwICs1NDYsMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTFf ZHNpX3NldHVwX2RwaHlfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAl9 CiAKIAlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKSB7Ci0JCWZvcl9lYWNoX2RzaV9wb3J0 KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKLQkJCXRtcCA9IEk5MTVfUkVBRChJQ0xfRFBIWV9D SEtOKHBvcnQpKTsKKwkJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewor CQkJdG1wID0gSTkxNV9SRUFEKElDTF9EUEhZX0NIS04ocGh5KSk7CiAJCQl0bXAgfD0gSUNMX0RQ SFlfQ0hLTl9BRkVfT1ZFUl9QUElfU1RSQVA7Ci0JCQlJOTE1X1dSSVRFKElDTF9EUEhZX0NIS04o cG9ydCksIHRtcCk7CisJCQlJOTE1X1dSSVRFKElDTF9EUEhZX0NIS04ocGh5KSwgdG1wKTsKIAkJ fQogCX0KIH0KQEAgLTU1OSwxNSArNTU5LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9nYXRl X2Nsb2NrcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3Qg aW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsK IAl1MzIgdG1wOwotCWVudW0gcG9ydCBwb3J0OwogCWVudW0gcGh5IHBoeTsKIAogCW11dGV4X2xv Y2soJmRldl9wcml2LT5kcGxsX2xvY2spOwogCXRtcCA9IEk5MTVfUkVBRChJQ0xfRFBDTEtBX0NG R0NSMCk7Ci0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewotCQlw aHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCk7CisJZm9yX2VhY2hfZHNpX3Bo eShwaHksIGludGVsX2RzaS0+cGh5cykKIAkJdG1wIHw9IElDTF9EUENMS0FfQ0ZHQ1IwX0RESV9D TEtfT0ZGKHBoeSk7Ci0JfQogCiAJSTkxNV9XUklURShJQ0xfRFBDTEtBX0NGR0NSMCwgdG1wKTsK IAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOwpAQCAtNTc4LDE1ICs1NzUsMTIg QEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX3VuZ2F0ZV9jbG9ja3Moc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5j X3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7CiAJdTMyIHRtcDsKLQllbnVtIHBvcnQgcG9y dDsKIAllbnVtIHBoeSBwaHk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsK IAl0bXAgPSBJOTE1X1JFQUQoSUNMX0RQQ0xLQV9DRkdDUjApOwotCWZvcl9lYWNoX2RzaV9wb3J0 KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKLQkJcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2 X3ByaXYsIHBvcnQpOworCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpCiAJ CXRtcCAmPSB+SUNMX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYocGh5KTsKLQl9CiAKIAlJOTE1 X1dSSVRFKElDTF9EUENMS0FfQ0ZHQ1IwLCB0bXApOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRwbGxfbG9jayk7CkBAIC01OTgsMjIgKzU5MiwxOSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lf bWFwX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3Qg aW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsK IAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IGNydGNfc3RhdGUtPnNoYXJlZF9kcGxs OwotCWVudW0gcG9ydCBwb3J0OwogCWVudW0gcGh5IHBoeTsKIAl1MzIgdmFsOwogCiAJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CiAKIAl2YWwgPSBJOTE1X1JFQUQoSUNMX0RQQ0xL QV9DRkdDUjApOwotCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsK LQkJcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIHBvcnQpOworCWZvcl9lYWNoX2Rz aV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKIAkJdmFsICY9IH5JQ0xfRFBDTEtBX0NGR0NS MF9ERElfQ0xLX1NFTF9NQVNLKHBoeSk7CiAJCXZhbCB8PSBJQ0xfRFBDTEtBX0NGR0NSMF9ERElf Q0xLX1NFTChwbGwtPmluZm8tPmlkLCBwaHkpOwogCX0KIAlJOTE1X1dSSVRFKElDTF9EUENMS0Ff Q0ZHQ1IwLCB2YWwpOwogCi0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0 cykgewotCQlwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9ydCk7CisJZm9yX2Vh Y2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewogCQl2YWwgJj0gfklDTF9EUENMS0Ff Q0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSk7CiAJfQogCUk5MTVfV1JJVEUoSUNMX0RQQ0xLQV9DRkdD UjAsIHZhbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2NvbWJvX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb21ib19w aHkuYwppbmRleCBkM2Q1MjQ0NzY1ZTYuLmFjODIxOGEwNDBhYiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb21ib19waHkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5jCkBAIC02LDEzICs2LDEzIEBACiAj aW5jbHVkZSAiaW50ZWxfY29tYm9fcGh5LmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAKLSNk ZWZpbmUgZm9yX2VhY2hfY29tYm9fcG9ydChfX2Rldl9wcml2LCBfX3BvcnQpIFwKLQlmb3IgKChf X3BvcnQpID0gUE9SVF9BOyAoX19wb3J0KSA8IEk5MTVfTUFYX1BPUlRTOyAoX19wb3J0KSsrKQlc Ci0JCWZvcl9lYWNoX2lmKGludGVsX3BvcnRfaXNfY29tYm9waHkoX19kZXZfcHJpdiwgX19wb3J0 KSkKKyNkZWZpbmUgZm9yX2VhY2hfY29tYm9fcGh5KF9fZGV2X3ByaXYsIF9fcGh5KSBcCisJZm9y ICgoX19waHkpID0gUEhZX0E7IChfX3BoeSkgPCBJOTE1X01BWF9QSFlTOyAoX19waHkpKyspCVwK KwkJZm9yX2VhY2hfaWYoaW50ZWxfcGh5X2lzX2NvbWJvKF9fZGV2X3ByaXYsIF9fcGh5KSkKIAot I2RlZmluZSBmb3JfZWFjaF9jb21ib19wb3J0X3JldmVyc2UoX19kZXZfcHJpdiwgX19wb3J0KSBc Ci0JZm9yICgoX19wb3J0KSA9IEk5MTVfTUFYX1BPUlRTOyAoX19wb3J0KS0tID4gUE9SVF9BOykg XAotCQlmb3JfZWFjaF9pZihpbnRlbF9wb3J0X2lzX2NvbWJvcGh5KF9fZGV2X3ByaXYsIF9fcG9y dCkpCisjZGVmaW5lIGZvcl9lYWNoX2NvbWJvX3BoeV9yZXZlcnNlKF9fZGV2X3ByaXYsIF9fcGh5 KSBcCisJZm9yICgoX19waHkpID0gSTkxNV9NQVhfUEhZUzsgKF9fcGh5KS0tID4gUEhZX0E7KSBc CisJCWZvcl9lYWNoX2lmKGludGVsX3BoeV9pc19jb21ibyhfX2Rldl9wcml2LCBfX3BoeSkpCiAK IGVudW0gewogCVBST0NNT05fMF84NVZfRE9UXzAsCkBAIC0zOCwxOCArMzgsMTcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiB7CiB9OwogCiAvKgotICogQ05MIGhhcyBqdXN0IG9u ZSBzZXQgb2YgcmVnaXN0ZXJzLCB3aGlsZSBJQ0wgaGFzIHR3byBzZXRzOiBvbmUgZm9yIHBvcnQg QSBhbmQKLSAqIHRoZSBvdGhlciBmb3IgcG9ydCBCLiBUaGUgQ05MIHJlZ2lzdGVycyBhcmUgZXF1 aXZhbGVudCB0byB0aGUgSUNMIHBvcnQgQQotICogcmVnaXN0ZXJzLCB0aGF0J3Mgd2h5IHdlIGNh bGwgdGhlIElDTCBtYWNyb3MgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0aW9uIGhhcyBDTkwKLSAqIG9u IGl0cyBuYW1lLgorICogQ05MIGhhcyBqdXN0IG9uZSBzZXQgb2YgcmVnaXN0ZXJzLCB3aGlsZSBn ZW4xMSBoYXMgYSBzZXQgZm9yIGVhY2ggY29tYm8gUEhZLgorICogVGhlIENOTCByZWdpc3RlcnMg YXJlIGVxdWl2YWxlbnQgdG8gdGhlIGdlbjExIFBIWSBBIHJlZ2lzdGVycywgdGhhdCdzIHdoeSB3 ZQorICogY2FsbCB0aGUgSUNMIG1hY3JvcyBldmVuIHRob3VnaCB0aGUgZnVuY3Rpb24gaGFzIENO TCBvbiBpdHMgbmFtZS4KICAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqCi1j bmxfZ2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGVudW0gcG9ydCBwb3J0KQorY25sX2dldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBoeSBwaHkpCiB7CiAJY29uc3Qgc3RydWN0 IGNubF9wcm9jbW9uICpwcm9jbW9uOwogCXUzMiB2YWw7CiAKLQl2YWwgPSBJOTE1X1JFQUQoSUNM X1BPUlRfQ09NUF9EVzMocG9ydCkpOworCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RX MyhwaHkpKTsKIAlzd2l0Y2ggKHZhbCAmIChQUk9DRVNTX0lORk9fTUFTSyB8IFZPTFRBR0VfSU5G T19NQVNLKSkgewogCWRlZmF1bHQ6CiAJCU1JU1NJTkdfQ0FTRSh2YWwpOwpAQCAtNzUsMzIgKzc0 LDMyIEBAIGNubF9nZXRfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiB9CiAKIHN0YXRpYyB2b2lkIGNubF9zZXRfcHJv Y21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkg ICAgICAgZW51bSBwb3J0IHBvcnQpCisJCQkJICAgICAgIGVudW0gcGh5IHBoeSkKIHsKIAljb25z dCBzdHJ1Y3QgY25sX3Byb2Ntb24gKnByb2Ntb247CiAJdTMyIHZhbDsKIAotCXByb2Ntb24gPSBj bmxfZ2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7CisJcHJvY21vbiA9IGNu bF9nZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBwaHkpOwogCi0JdmFsID0gSTkxNV9S RUFEKElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpKTsKKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRf Q09NUF9EVzEocGh5KSk7CiAJdmFsICY9IH4oKDB4ZmYgPDwgMTYpIHwgMHhmZik7CiAJdmFsIHw9 IHByb2Ntb24tPmR3MTsKLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpLCB2YWwp OworCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzEocGh5KSwgdmFsKTsKIAotCUk5MTVfV1JJ VEUoSUNMX1BPUlRfQ09NUF9EVzkocG9ydCksIHByb2Ntb24tPmR3OSk7Ci0JSTkxNV9XUklURShJ Q0xfUE9SVF9DT01QX0RXMTAocG9ydCksIHByb2Ntb24tPmR3MTApOworCUk5MTVfV1JJVEUoSUNM X1BPUlRfQ09NUF9EVzkocGh5KSwgcHJvY21vbi0+ZHc5KTsKKwlJOTE1X1dSSVRFKElDTF9QT1JU X0NPTVBfRFcxMChwaHkpLCBwcm9jbW9uLT5kdzEwKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tf cGh5X3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgIGVudW0gcG9y dCBwb3J0LCBpOTE1X3JlZ190IHJlZywgdTMyIG1hc2ssCisJCQkgIGVudW0gcGh5IHBoeSwgaTkx NV9yZWdfdCByZWcsIHUzMiBtYXNrLAogCQkJICB1MzIgZXhwZWN0ZWRfdmFsKQogewogCXUzMiB2 YWwgPSBJOTE1X1JFQUQocmVnKTsKIAogCWlmICgodmFsICYgbWFzaykgIT0gZXhwZWN0ZWRfdmFs KSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIlBvcnQgJWMgY29tYm8gUEhZIHJlZyAlMDh4IHN0YXRl IG1pc21hdGNoOiAiCisJCURSTV9ERUJVR19EUklWRVIoIkNvbWJvIFBIWSAlYyByZWcgJTA4eCBz dGF0ZSBtaXNtYXRjaDogIgogCQkJCSAiY3VycmVudCAlMDh4IG1hc2sgJTA4eCBleHBlY3RlZCAl MDh4XG4iLAotCQkJCSBwb3J0X25hbWUocG9ydCksCisJCQkJIHBoeV9uYW1lKHBoeSksCiAJCQkJ IHJlZy5yZWcsIHZhbCwgbWFzaywgZXhwZWN0ZWRfdmFsKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0K QEAgLTEwOSwxOCArMTA4LDE4IEBAIHN0YXRpYyBib29sIGNoZWNrX3BoeV9yZWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiBzdGF0aWMgYm9vbCBjbmxfdmVyaWZ5X3By b2Ntb25fcmVmX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJ CSAgZW51bSBwb3J0IHBvcnQpCisJCQkJCSAgZW51bSBwaHkgcGh5KQogewogCWNvbnN0IHN0cnVj dCBjbmxfcHJvY21vbiAqcHJvY21vbjsKIAlib29sIHJldDsKIAotCXByb2Ntb24gPSBjbmxfZ2V0 X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7CisJcHJvY21vbiA9IGNubF9nZXRf cHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBwaHkpOwogCi0JcmV0ID0gY2hlY2tfcGh5X3Jl ZyhkZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzEocG9ydCksCisJcmV0ID0gY2hlY2tf cGh5X3JlZyhkZXZfcHJpdiwgcGh5LCBJQ0xfUE9SVF9DT01QX0RXMShwaHkpLAogCQkJICAgICgw eGZmIDw8IDE2KSB8IDB4ZmYsIHByb2Ntb24tPmR3MSk7Ci0JcmV0ICY9IGNoZWNrX3BoeV9yZWco ZGV2X3ByaXYsIHBvcnQsIElDTF9QT1JUX0NPTVBfRFc5KHBvcnQpLAorCXJldCAmPSBjaGVja19w aHlfcmVnKGRldl9wcml2LCBwaHksIElDTF9QT1JUX0NPTVBfRFc5KHBoeSksCiAJCQkgICAgIC0x VSwgcHJvY21vbi0+ZHc5KTsKLQlyZXQgJj0gY2hlY2tfcGh5X3JlZyhkZXZfcHJpdiwgcG9ydCwg SUNMX1BPUlRfQ09NUF9EVzEwKHBvcnQpLAorCXJldCAmPSBjaGVja19waHlfcmVnKGRldl9wcml2 LCBwaHksIElDTF9QT1JUX0NPTVBfRFcxMChwaHkpLAogCQkJICAgICAtMVUsIHByb2Ntb24tPmR3 MTApOwogCiAJcmV0dXJuIHJldDsKQEAgLTEzNCwxNSArMTMzLDE1IEBAIHN0YXRpYyBib29sIGNu bF9jb21ib19waHlfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAK IHN0YXRpYyBib29sIGNubF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKLQllbnVtIHBvcnQgcG9ydCA9IFBPUlRfQTsKKwllbnVtIHBo eSBwaHkgPSBQSFlfQTsKIAlib29sIHJldDsKIAogCWlmICghY25sX2NvbWJvX3BoeV9lbmFibGVk KGRldl9wcml2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JcmV0ID0gY25sX3ZlcmlmeV9wcm9jbW9u X3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBvcnQpOworCXJldCA9IGNubF92ZXJpZnlfcHJvY21vbl9y ZWZfdmFsdWVzKGRldl9wcml2LCBwaHkpOwogCi0JcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3By aXYsIHBvcnQsIENOTF9QT1JUX0NMMUNNX0RXNSwKKwlyZXQgJj0gY2hlY2tfcGh5X3JlZyhkZXZf cHJpdiwgcGh5LCBDTkxfUE9SVF9DTDFDTV9EVzUsCiAJCQkgICAgIENMX1BPV0VSX0RPV05fRU5B QkxFLCBDTF9QT1dFUl9ET1dOX0VOQUJMRSk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTU3LDcgKzE1 Niw3IEBAIHN0YXRpYyB2b2lkIGNubF9jb21ib19waHlzX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCUk5MTVfV1JJVEUoQ0hJQ0tFTl9NSVNDXzIsIHZhbCk7CiAKIAkv KiBEdW1teSBQT1JUX0EgdG8gZ2V0IHRoZSBjb3JyZWN0IENOTCByZWdpc3RlciBmcm9tIHRoZSBJ Q0wgbWFjcm8gKi8KLQljbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgUE9SVF9B KTsKKwljbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgUEhZX0EpOwogCiAJdmFs ID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcwKTsKIAl2YWwgfD0gQ09NUF9JTklUOwpAQCAt MTgxLDM5ICsxODAsMzkgQEAgc3RhdGljIHZvaWQgY25sX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIH0KIAogc3RhdGljIGJvb2wgaWNsX2NvbWJv X3BoeV9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgIGVu dW0gcG9ydCBwb3J0KQorCQkJCSAgZW51bSBwaHkgcGh5KQogewogCS8qIFRoZSBQSFkgQyBhZGRl ZCBieSBFSEwgaGFzIG5vIFBIWV9NSVNDIHJlZ2lzdGVyICovCi0JaWYgKElTX0VMS0hBUlRMQUtF KGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQykKLQkJcmV0dXJuIEk5MTVfUkVBRChJQ0xfUE9S VF9DT01QX0RXMChwb3J0KSkgJiBDT01QX0lOSVQ7CisJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9w cml2KSAmJiBwaHkgPT0gUEhZX0MpCisJCXJldHVybiBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9E VzAocGh5KSkgJiBDT01QX0lOSVQ7CiAJZWxzZQotCQlyZXR1cm4gIShJOTE1X1JFQUQoSUNMX1BI WV9NSVNDKHBvcnQpKSAmCisJCXJldHVybiAhKEk5MTVfUkVBRChJQ0xfUEhZX01JU0MocGh5KSkg JgogCQkJIElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOKSAmJgotCQkJKEk5MTVfUkVB RChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSkgJiBDT01QX0lOSVQpOworCQkJKEk5MTVfUkVBRChJ Q0xfUE9SVF9DT01QX0RXMChwaHkpKSAmIENPTVBfSU5JVCk7CiB9CiAKIHN0YXRpYyBib29sIGlj bF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCQkgICAgICAgZW51bSBwb3J0IHBvcnQpCisJCQkJICAgICAgIGVudW0gcGh5IHBoeSkK IHsKIAlib29sIHJldDsKIAotCWlmICghaWNsX2NvbWJvX3BoeV9lbmFibGVkKGRldl9wcml2LCBw b3J0KSkKKwlpZiAoIWljbF9jb21ib19waHlfZW5hYmxlZChkZXZfcHJpdiwgcGh5KSkKIAkJcmV0 dXJuIGZhbHNlOwogCi0JcmV0ID0gY25sX3ZlcmlmeV9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3By aXYsIHBvcnQpOworCXJldCA9IGNubF92ZXJpZnlfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2 LCBwaHkpOwogCi0JaWYgKHBvcnQgPT0gUE9SVF9BKQotCQlyZXQgJj0gY2hlY2tfcGh5X3JlZyhk ZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzgocG9ydCksCisJaWYgKHBoeSA9PSBQSFlf QSkKKwkJcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBoeSwgSUNMX1BPUlRfQ09NUF9E VzgocGh5KSwKIAkJCQkgICAgIElSRUZHRU4sIElSRUZHRU4pOwogCi0JcmV0ICY9IGNoZWNrX3Bo eV9yZWcoZGV2X3ByaXYsIHBvcnQsIElDTF9QT1JUX0NMX0RXNShwb3J0KSwKKwlyZXQgJj0gY2hl Y2tfcGh5X3JlZyhkZXZfcHJpdiwgcGh5LCBJQ0xfUE9SVF9DTF9EVzUocGh5KSwKIAkJCSAgICAg Q0xfUE9XRVJfRE9XTl9FTkFCTEUsIENMX1BPV0VSX0RPV05fRU5BQkxFKTsKIAogCXJldHVybiBy ZXQ7CiB9CiAKIHZvaWQgaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgZW51bSBwb3J0IHBvcnQsIGJvb2wgaXNf ZHNpLAorCQkJCSAgICBlbnVtIHBoeSBwaHksIGJvb2wgaXNfZHNpLAogCQkJCSAgICBpbnQgbGFu ZV9jb3VudCwgYm9vbCBsYW5lX3JldmVyc2FsKQogewogCXU4IGxhbmVfbWFzazsKQEAgLTI1OCwx MCArMjU3LDEwIEBAIHZvaWQgaW50ZWxfY29tYm9fcGh5X3Bvd2VyX3VwX2xhbmVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJfQogCX0KIAotCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9DTF9EVzEwKHBvcnQpKTsKKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcx MChwaHkpKTsKIAl2YWwgJj0gflBXUl9ET1dOX0xOX01BU0s7CiAJdmFsIHw9IGxhbmVfbWFzayA8 PCBQV1JfRE9XTl9MTl9TSElGVDsKLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXMTAocG9ydCks IHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzEwKHBoeSksIHZhbCk7CiB9CiAKIHN0 YXRpYyB1MzIgZWhsX2NvbWJvX3BoeV9hX211eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdTMyIHZhbCkKQEAgLTI5MiwxNCArMjkxLDE0IEBAIHN0YXRpYyB1MzIgZWhsX2NvbWJvX3Bo eV9hX211eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHZhbCkKIAogc3RhdGlj IHZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7Ci0JZW51bSBwb3J0IHBvcnQ7CisJZW51bSBwaHkgcGh5OwogCi0JZm9yX2VhY2hfY29t Ym9fcG9ydChkZXZfcHJpdiwgcG9ydCkgeworCWZvcl9lYWNoX2NvbWJvX3BoeShkZXZfcHJpdiwg cGh5KSB7CiAJCXUzMiB2YWw7CiAKLQkJaWYgKGljbF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKGRl dl9wcml2LCBwb3J0KSkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiUG9ydCAlYyBjb21ibyBQSFkg YWxyZWFkeSBlbmFibGVkLCB3b24ndCByZXByb2dyYW0gaXQuXG4iLAotCQkJCQkgcG9ydF9uYW1l KHBvcnQpKTsKKwkJaWYgKGljbF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LCBwaHkp KSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJDb21ibyBQSFkgJWMgYWxyZWFkeSBlbmFibGVkLCB3 b24ndCByZXByb2dyYW0gaXQuXG4iLAorCQkJCQkgcGh5X25hbWUocGh5KSk7CiAJCQljb250aW51 ZTsKIAkJfQogCkBAIC0zMDgsNyArMzA3LDcgQEAgc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeXNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqIHJlZ2lzdGVyIGZv ciBpdCBhbmQgbm8gbmVlZCB0byBwcm9ncmFtIHRoZQogCQkgKiBERV9JT19DT01QX1BXUl9ET1dO IHNldHRpbmcgb24gUEhZIEMuCiAJCSAqLwotCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYp ICYmIHBvcnQgPT0gUE9SVF9DKQorCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBo eSA9PSBQSFlfQykKIAkJCWdvdG8gc2tpcF9waHlfbWlzYzsKIAogCQkvKgpAQCAtMzE5LDU5ICsz MTgsNTkgQEAgc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqIGJhc2VkIG9uIHdoZXRoZXIgb3VyIFZCVCBpbmRpY2F0 ZXMgdGhlIHByZXNlbmNlIG9mIGFueQogCQkgKiAiaW50ZXJuYWwiIGNoaWxkIGRldmljZXMuCiAJ CSAqLwotCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BIWV9NSVNDKHBvcnQpKTsKLQkJaWYgKElTX0VM S0hBUlRMQUtFKGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkKKwkJdmFsID0gSTkxNV9SRUFE KElDTF9QSFlfTUlTQyhwaHkpKTsKKwkJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSAmJiBw aHkgPT0gUEhZX0EpCiAJCQl2YWwgPSBlaGxfY29tYm9fcGh5X2FfbXV4KGRldl9wcml2LCB2YWwp OwogCQl2YWwgJj0gfklDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwotCQlJOTE1X1dS SVRFKElDTF9QSFlfTUlTQyhwb3J0KSwgdmFsKTsKKwkJSTkxNV9XUklURShJQ0xfUEhZX01JU0Mo cGh5KSwgdmFsKTsKIAogc2tpcF9waHlfbWlzYzoKLQkJY25sX3NldF9wcm9jbW9uX3JlZl92YWx1 ZXMoZGV2X3ByaXYsIHBvcnQpOworCQljbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJp diwgcGh5KTsKIAotCQlpZiAocG9ydCA9PSBQT1JUX0EpIHsKLQkJCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9DT01QX0RXOChwb3J0KSk7CisJCWlmIChwaHkgPT0gUEhZX0EpIHsKKwkJCXZhbCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXOChwaHkpKTsKIAkJCXZhbCB8PSBJUkVGR0VOOwot CQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXOChwb3J0KSwgdmFsKTsKKwkJCUk5MTVfV1JJ VEUoSUNMX1BPUlRfQ09NUF9EVzgocGh5KSwgdmFsKTsKIAkJfQogCi0JCXZhbCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSk7CisJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9D T01QX0RXMChwaHkpKTsKIAkJdmFsIHw9IENPTVBfSU5JVDsKLQkJSTkxNV9XUklURShJQ0xfUE9S VF9DT01QX0RXMChwb3J0KSwgdmFsKTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChw aHkpLCB2YWwpOwogCi0JCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwor CQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFc1KHBoeSkpOwogCQl2YWwgfD0gQ0xfUE9X RVJfRE9XTl9FTkFCTEU7Ci0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpLCB2YWwp OworCQlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXNShwaHkpLCB2YWwpOwogCX0KIH0KIAogc3Rh dGljIHZvaWQgaWNsX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKLQllbnVtIHBvcnQgcG9ydDsKKwllbnVtIHBoeSBwaHk7CiAKLQlmb3JfZWFj aF9jb21ib19wb3J0X3JldmVyc2UoZGV2X3ByaXYsIHBvcnQpIHsKKwlmb3JfZWFjaF9jb21ib19w aHlfcmV2ZXJzZShkZXZfcHJpdiwgcGh5KSB7CiAJCXUzMiB2YWw7CiAKLQkJaWYgKHBvcnQgPT0g UE9SVF9BICYmCi0JCSAgICAhaWNsX2NvbWJvX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBv cnQpKQotCQkJRFJNX1dBUk4oIlBvcnQgJWMgY29tYm8gUEhZIEhXIHN0YXRlIGNoYW5nZWQgdW5l eHBlY3RlZGx5XG4iLAotCQkJCSBwb3J0X25hbWUocG9ydCkpOworCQlpZiAocGh5ID09IFBIWV9B ICYmCisJCSAgICAhaWNsX2NvbWJvX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBoeSkpCisJ CQlEUk1fV0FSTigiQ29tYm8gUEhZICVjIEhXIHN0YXRlIGNoYW5nZWQgdW5leHBlY3RlZGx5XG4i LAorCQkJCSBwaHlfbmFtZShwaHkpKTsKIAogCQkvKgogCQkgKiBBbHRob3VnaCBFSEwgYWRkcyBh IGNvbWJvIFBIWSBDLCB0aGVyZSdzIG5vIFBIWV9NSVNDCiAJCSAqIHJlZ2lzdGVyIGZvciBpdCBh bmQgbm8gbmVlZCB0byBwcm9ncmFtIHRoZQogCQkgKiBERV9JT19DT01QX1BXUl9ET1dOIHNldHRp bmcgb24gUEhZIEMuCiAJCSAqLwotCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBv cnQgPT0gUE9SVF9DKQorCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBoeSA9PSBQ SFlfQykKIAkJCWdvdG8gc2tpcF9waHlfbWlzYzsKIAotCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BI WV9NSVNDKHBvcnQpKTsKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwaHkpKTsKIAkJ dmFsIHw9IElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwotCQlJOTE1X1dSSVRFKElD TF9QSFlfTUlTQyhwb3J0KSwgdmFsKTsKKwkJSTkxNV9XUklURShJQ0xfUEhZX01JU0MocGh5KSwg dmFsKTsKIAogc2tpcF9waHlfbWlzYzoKLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBf RFcwKHBvcnQpKTsKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBoeSkpOwog CQl2YWwgJj0gfkNPTVBfSU5JVDsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0 KSwgdmFsKTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwaHkpLCB2YWwpOwogCX0K IH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb21i b19waHkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmgK aW5kZXggZTZlMTk1YTgzYjE5Li42NjA4ODZmODZjNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9jb21ib19waHkuaApAQCAtNywxNCArNywxNCBAQAogI2RlZmlu ZSBfX0lOVEVMX0NPTUJPX1BIWV9IX18KIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5j bHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOworZW51bSBw aHk7CiAKIHZvaWQgaW50ZWxfY29tYm9fcGh5X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIHZvaWQgaW50ZWxfY29tYm9fcGh5X3VuaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9jb21ib19waHlfcG93ZXJfdXBfbGFuZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICBlbnVtIHBvcnQgcG9y dCwgYm9vbCBpc19kc2ksCisJCQkJICAgIGVudW0gcGh5IHBoeSwgYm9vbCBpc19kc2ksCiAJCQkJ ICAgIGludCBsYW5lX2NvdW50LCBib29sIGxhbmVfcmV2ZXJzYWwpOwogCiAjZW5kaWYgLyogX19J TlRFTF9DT01CT19QSFlfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGkuYwppbmRleCBiNWJjMDBjNGUzZmUuLmQ5ZWE1ODAzODY0MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCkBAIC0yNDE0LDcgKzI0MTQsNyBAQCBzdGF0aWMgdm9p ZCBjbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK IH0KIAogc3RhdGljIHZvaWQgaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCXUzMiBsZXZlbCwgZW51bSBwb3J0IHBvcnQs IGludCB0eXBlLAorCQkJCQl1MzIgbGV2ZWwsIGVudW0gcGh5IHBoeSwgaW50IHR5cGUsCiAJCQkJ CWludCByYXRlKQogewogCWNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5z bGF0aW9ucyA9IE5VTEw7CkBAIC0yNDMyLDQxICsyNDMyLDQxIEBAIHN0YXRpYyB2b2lkIGljbF9k ZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCX0KIAogCS8qIFNldCBQT1JUX1RYX0RXNSAqLwotCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9S VF9UWF9EVzVfTE4wKHBvcnQpKTsKKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xO MChwaHkpKTsKIAl2YWwgJj0gfihTQ0FMSU5HX01PREVfU0VMX01BU0sgfCBSVEVSTV9TRUxFQ1Rf TUFTSyB8CiAJCSAgVEFQMl9ESVNBQkxFIHwgVEFQM19ESVNBQkxFKTsKIAl2YWwgfD0gU0NBTElO R19NT0RFX1NFTCgweDIpOwogCXZhbCB8PSBSVEVSTV9TRUxFQ1QoMHg2KTsKIAl2YWwgfD0gVEFQ M19ESVNBQkxFOwotCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsK KwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocGh5KSwgdmFsKTsKIAogCS8qIFByb2dy YW0gUE9SVF9UWF9EVzIgKi8KLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChw b3J0KSk7CisJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXMl9MTjAocGh5KSk7CiAJdmFs ICY9IH4oU1dJTkdfU0VMX0xPV0VSX01BU0sgfCBTV0lOR19TRUxfVVBQRVJfTUFTSyB8CiAJCSBS Q09NUF9TQ0FMQVJfTUFTSyk7CiAJdmFsIHw9IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRp b25zW2xldmVsXS5kdzJfc3dpbmdfc2VsKTsKIAl2YWwgfD0gU1dJTkdfU0VMX0xPV0VSKGRkaV90 cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWwpOwogCS8qIFByb2dyYW0gUmNvbXAgc2Nh bGFyIGZvciBldmVyeSB0YWJsZSBlbnRyeSAqLwogCXZhbCB8PSBSQ09NUF9TQ0FMQVIoMHg5OCk7 Ci0JSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfR1JQKHBvcnQpLCB2YWwpOworCUk5MTVfV1JJ VEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwaHkpLCB2YWwpOwogCiAJLyogUHJvZ3JhbSBQT1JUX1RY X0RXNCAqLwogCS8qIFdlIGNhbm5vdCB3cml0ZSB0byBHUlAuIEl0IHdvdWxkIG92ZXJ3cml0ZSBp bmRpdmlkdWFsIGxvYWRnZW4uICovCiAJZm9yIChsbiA9IDA7IGxuIDw9IDM7IGxuKyspIHsKLQkJ dmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihsbiwgcG9ydCkpOworCQl2YWwgPSBJ OTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwaHkpKTsKIAkJdmFsICY9IH4oUE9TVF9D VVJTT1JfMV9NQVNLIHwgUE9TVF9DVVJTT1JfMl9NQVNLIHwKIAkJCSBDVVJTT1JfQ09FRkZfTUFT Syk7CiAJCXZhbCB8PSBQT1NUX0NVUlNPUl8xKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9w b3N0X2N1cnNvcl8xKTsKIAkJdmFsIHw9IFBPU1RfQ1VSU09SXzIoZGRpX3RyYW5zbGF0aW9uc1ts ZXZlbF0uZHc0X3Bvc3RfY3Vyc29yXzIpOwogCQl2YWwgfD0gQ1VSU09SX0NPRUZGKGRkaV90cmFu c2xhdGlvbnNbbGV2ZWxdLmR3NF9jdXJzb3JfY29lZmYpOwotCQlJOTE1X1dSSVRFKElDTF9QT1JU X1RYX0RXNF9MTihsbiwgcG9ydCksIHZhbCk7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0 X0xOKGxuLCBwaHkpLCB2YWwpOwogCX0KIAogCS8qIFByb2dyYW0gUE9SVF9UWF9EVzcgKi8KLQl2 YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc3X0xOMChwb3J0KSk7CisJdmFsID0gSTkxNV9S RUFEKElDTF9QT1JUX1RYX0RXN19MTjAocGh5KSk7CiAJdmFsICY9IH5OX1NDQUxBUl9NQVNLOwog CXZhbCB8PSBOX1NDQUxBUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzdfbl9zY2FsYXIpOwot CUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc3X0dSUChwb3J0KSwgdmFsKTsKKwlJOTE1X1dSSVRF KElDTF9QT1JUX1RYX0RXN19HUlAocGh5KSwgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQgaWNsX2Nv bWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LApAQCAtMjQ3NCw3ICsyNDc0LDcgQEAgc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3 aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCQkgICAgICBl bnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0JZW51bSBwb3J0IHBvcnQg PSBlbmNvZGVyLT5wb3J0OworCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9w cml2LCBlbmNvZGVyLT5wb3J0KTsKIAlpbnQgd2lkdGggPSAwOwogCWludCByYXRlID0gMDsKIAl1 MzIgdmFsOwpAQCAtMjQ5NSwxMiArMjQ5NSwxMiBAQCBzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5 X2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJICog c2V0IFBPUlRfUENTX0RXMSBjbW5rZWVwZXJfZW5hYmxlIHRvIDFiLAogCSAqIGVsc2UgY2xlYXIg dG8gMGIuCiAJICovCi0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQp KTsKKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAocGh5KSk7CiAJaWYgKHR5 cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpCiAJCXZhbCAmPSB+Q09NTU9OX0tFRVBFUl9FTjsKIAll bHNlCiAJCXZhbCB8PSBDT01NT05fS0VFUEVSX0VOOwotCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENT X0RXMV9HUlAocG9ydCksIHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9QQ1NfRFcxX0dSUChw aHkpLCB2YWwpOwogCiAJLyogMi4gUHJvZ3JhbSBsb2FkZ2VuIHNlbGVjdCAqLwogCS8qCkBAIC0y NTEwLDMzICsyNTEwLDMzIEBAIHN0YXRpYyB2b2lkIGljbF9jb21ib19waHlfZGRpX3Zzd2luZ19z ZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkgKiA+IDYgR0h6IChMTjA9 MCwgTE4xPTAsIExOMj0wLCBMTjM9MCkKIAkgKi8KIAlmb3IgKGxuID0gMDsgbG4gPD0gMzsgbG4r KykgewotCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwb3J0KSk7CisJ CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfTE4obG4sIHBoeSkpOwogCQl2YWwgJj0g fkxPQURHRU5fU0VMRUNUOwogCiAJCWlmICgocmF0ZSA8PSA2MDAwMDAgJiYgd2lkdGggPT0gNCAm JiBsbiA+PSAxKSB8fAogCQkgICAgKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoIDwgNCAmJiAobG4g PT0gMSB8fCBsbiA9PSAyKSkpIHsKIAkJCXZhbCB8PSBMT0FER0VOX1NFTEVDVDsKIAkJfQotCQlJ OTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNF9MTihsbiwgcG9ydCksIHZhbCk7CisJCUk5MTVfV1JJ VEUoSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwaHkpLCB2YWwpOwogCX0KIAogCS8qIDMuIFNldCBQ T1JUX0NMX0RXNSBTVVMgQ2xvY2sgQ29uZmlnIHRvIDExYiAqLwotCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9DTF9EVzUocG9ydCkpOworCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUo cGh5KSk7CiAJdmFsIHw9IFNVU19DTE9DS19DT05GSUc7Ci0JSTkxNV9XUklURShJQ0xfUE9SVF9D TF9EVzUocG9ydCksIHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocGh5KSwgdmFs KTsKIAogCS8qIDQuIENsZWFyIHRyYWluaW5nIGVuYWJsZSB0byBjaGFuZ2Ugc3dpbmcgdmFsdWVz ICovCi0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOworCXZhbCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBoeSkpOwogCXZhbCAmPSB+VFhfVFJBSU5J TkdfRU47Ci0JSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOworCUk5 MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkpLCB2YWwpOwogCiAJLyogNS4gUHJvZ3Jh bSBzd2luZyBhbmQgZGUtZW1waGFzaXMgKi8KLQlpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9ncmFt KGRldl9wcml2LCBsZXZlbCwgcG9ydCwgdHlwZSwgcmF0ZSk7CisJaWNsX2RkaV9jb21ib192c3dp bmdfcHJvZ3JhbShkZXZfcHJpdiwgbGV2ZWwsIHBoeSwgdHlwZSwgcmF0ZSk7CiAKIAkvKiA2LiBT ZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdnZXIgdXBkYXRlICovCi0JdmFsID0gSTkxNV9SRUFE KElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOworCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9U WF9EVzVfTE4wKHBoeSkpOwogCXZhbCB8PSBUWF9UUkFJTklOR19FTjsKLQlJOTE1X1dSSVRFKElD TF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9E VzVfR1JQKHBoeSksIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIGljbF9tZ19waHlfZGRpX3Zzd2lu Z19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKQEAgLTMxMjEsNiArMzEy MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rl ci0+cG9ydDsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9y dCk7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3Bv cnQoJmVuY29kZXItPmJhc2UpOwogCWJvb2wgaXNfbXN0ID0gaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFBfTVNUKTsKIAlpbnQgbGV2ZWwgPSBpbnRlbF9kZGlf ZHBfbGV2ZWwoaW50ZWxfZHApOwpAQCAtMzE1Niw3ICszMTU3LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCWJv b2wgbGFuZV9yZXZlcnNhbCA9CiAJCQlkaWdfcG9ydC0+c2F2ZWRfcG9ydF9iaXRzICYgRERJX0JV Rl9QT1JUX1JFVkVSU0FMOwogCi0JCWludGVsX2NvbWJvX3BoeV9wb3dlcl91cF9sYW5lcyhkZXZf cHJpdiwgcG9ydCwgZmFsc2UsCisJCWludGVsX2NvbWJvX3BoeV9wb3dlcl91cF9sYW5lcyhkZXZf cHJpdiwgcGh5LCBmYWxzZSwKIAkJCQkJICAgICAgIGNydGNfc3RhdGUtPmxhbmVfY291bnQsCiAJ CQkJCSAgICAgICBsYW5lX3JldmVyc2FsKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5oCmluZGV4IGQ1MzI4NWZiODgzZi4uOGE0YTU3ZWY4MmEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaApAQCAtMjY4 LDYgKzI2OCwxMCBAQCBlbnVtIHBoeSB7CiAJZm9yICgoX19wb3J0KSA9IFBPUlRfQTsgKF9fcG9y dCkgPCBJOTE1X01BWF9QT1JUUzsgKF9fcG9ydCkrKykJXAogCQlmb3JfZWFjaF9pZigoX19wb3J0 c19tYXNrKSAmIEJJVChfX3BvcnQpKQogCisjZGVmaW5lIGZvcl9lYWNoX3BoeV9tYXNrZWQoX19w aHksIF9fcGh5c19tYXNrKSBcCisJZm9yICgoX19waHkpID0gUEhZX0E7IChfX3BoeSkgPCBJOTE1 X01BWF9QSFlTOyAoX19waHkpKyspCVwKKwkJZm9yX2VhY2hfaWYoKF9fcGh5c19tYXNrKSAmIEJJ VChfX3BoeSkpCisKICNkZWZpbmUgZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIFwKIAlsaXN0X2Zv cl9lYWNoX2VudHJ5KGNydGMsICYoZGV2KS0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf cG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dl ci5jCmluZGV4IDc0MzdmYzcxZDI4OS4uYTI0ZDE4NTliMzdiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwpAQCAtMzk3LDcgKzM5 Nyw3IEBAIHN0YXRpYyB2b2lkIGhzd19wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCWhzd193YWl0X2Zvcl9wb3dlcl93ZWxsX2Rpc2FibGUoZGV2 X3ByaXYsIHBvd2VyX3dlbGwpOwogfQogCi0jZGVmaW5lIElDTF9BVVhfUFdfVE9fUE9SVChwd19p ZHgpCSgocHdfaWR4KSAtIElDTF9QV19DVExfSURYX0FVWF9BKQorI2RlZmluZSBJQ0xfQVVYX1BX X1RPX1BIWShwd19pZHgpCSgocHdfaWR4KSAtIElDTF9QV19DVExfSURYX0FVWF9BKQogCiBzdGF0 aWMgdm9pZAogaWNsX2NvbWJvX3BoeV9hdXhfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtNDA1LDIxICs0MDUsMjEgQEAgaWNsX2NvbWJvX3Bo eV9hdXhfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogewogCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfcmVncyAqcmVncyA9IHBvd2VyX3dl bGwtPmRlc2MtPmhzdy5yZWdzOwogCWludCBwd19pZHggPSBwb3dlcl93ZWxsLT5kZXNjLT5oc3cu aWR4OwotCWVudW0gcG9ydCBwb3J0ID0gSUNMX0FVWF9QV19UT19QT1JUKHB3X2lkeCk7CisJZW51 bSBwaHkgcGh5ID0gSUNMX0FVWF9QV19UT19QSFkocHdfaWR4KTsKIAl1MzIgdmFsOwogCiAJdmFs ID0gSTkxNV9SRUFEKHJlZ3MtPmRyaXZlcik7CiAJSTkxNV9XUklURShyZWdzLT5kcml2ZXIsIHZh bCB8IEhTV19QV1JfV0VMTF9DVExfUkVRKHB3X2lkeCkpOwogCi0JdmFsID0gSTkxNV9SRUFEKElD TF9QT1JUX0NMX0RXMTIocG9ydCkpOwotCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFcxMihwb3J0 KSwgdmFsIHwgSUNMX0xBTkVfRU5BQkxFX0FVWCk7CisJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JU X0NMX0RXMTIocGh5KSk7CisJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzEyKHBoeSksIHZhbCB8 IElDTF9MQU5FX0VOQUJMRV9BVVgpOwogCiAJaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZW5hYmxl KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKIAogCS8qIERpc3BsYXkgV0EgIzExNzg6IGljbCAqLwog CWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSAmJgogCSAgICBwd19pZHggPj0gSUNMX1BXX0NUTF9J RFhfQVVYX0EgJiYgcHdfaWR4IDw9IElDTF9QV19DVExfSURYX0FVWF9CICYmCi0JICAgICFpbnRl bF9iaW9zX2lzX3BvcnRfZWRwKGRldl9wcml2LCBwb3J0KSkgeworCSAgICAhaW50ZWxfYmlvc19p c19wb3J0X2VkcChkZXZfcHJpdiwgKGVudW0gcG9ydClwaHkpKSB7CiAJCXZhbCA9IEk5MTVfUkVB RChJQ0xfQVVYX0FOQU9WUkQxKHB3X2lkeCkpOwogCQl2YWwgfD0gSUNMX0FVWF9BTkFPVlJEMV9F TkFCTEUgfCBJQ0xfQVVYX0FOQU9WUkQxX0xET19CWVBBU1M7CiAJCUk5MTVfV1JJVEUoSUNMX0FV WF9BTkFPVlJEMShwd19pZHgpLCB2YWwpOwpAQCAtNDMyLDExICs0MzIsMTEgQEAgaWNsX2NvbWJv X3BoeV9hdXhfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHsKIAljb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX3JlZ3MgKnJlZ3MgPSBwb3dl cl93ZWxsLT5kZXNjLT5oc3cucmVnczsKIAlpbnQgcHdfaWR4ID0gcG93ZXJfd2VsbC0+ZGVzYy0+ aHN3LmlkeDsKLQllbnVtIHBvcnQgcG9ydCA9IElDTF9BVVhfUFdfVE9fUE9SVChwd19pZHgpOwor CWVudW0gcGh5IHBoeSA9IElDTF9BVVhfUFdfVE9fUEhZKHB3X2lkeCk7CiAJdTMyIHZhbDsKIAot CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzEyKHBvcnQpKTsKLQlJOTE1X1dSSVRFKElD TF9QT1JUX0NMX0RXMTIocG9ydCksIHZhbCAmIH5JQ0xfTEFORV9FTkFCTEVfQVVYKTsKKwl2YWwg PSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcxMihwaHkpKTsKKwlJOTE1X1dSSVRFKElDTF9QT1JU X0NMX0RXMTIocGh5KSwgdmFsICYgfklDTF9MQU5FX0VOQUJMRV9BVVgpOwogCiAJdmFsID0gSTkx NV9SRUFEKHJlZ3MtPmRyaXZlcik7CiAJSTkxNV9XUklURShyZWdzLT5kcml2ZXIsIHZhbCAmIH5I U1dfUFdSX1dFTExfQ1RMX1JFUShwd19pZHgpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RzaS5oCmluZGV4IDZkMjA0MzQ2MzZjZC4uMWNkMjRiZDQ2NTE4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzaS5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpLmgKQEAgLTQ5LDggKzQ5LDExIEBAIHN0cnVj dCBpbnRlbF9kc2kgewogCiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqYXR0YWNoZWRfY29ubmVj dG9yOwogCi0JLyogYml0IG1hc2sgb2YgcG9ydHMgYmVpbmcgZHJpdmVuICovCi0JdTE2IHBvcnRz OworCS8qIGJpdCBtYXNrIG9mIHBvcnRzICh2bHYgZHNpKSBvciBwaHlzIChpY2wgZHNpKSBiZWlu ZyBkcml2ZW4gKi8KKwl1bmlvbiB7CisJCXUxNiBwb3J0czsJLyogVkxWIERTSSAqLworCQl1MTYg cGh5czsJLyogSUNMIERTSSAqLworCX07CiAKIAkvKiBpZiB0cnVlLCB1c2UgSFMgbW9kZSwgb3Ro ZXJ3aXNlIExQICovCiAJYm9vbCBoczsKQEAgLTEzMiw3ICsxMzUsMTAgQEAgc3RhdGljIGlubGlu ZSBzdHJ1Y3QgaW50ZWxfZHNpX2hvc3QgKnRvX2ludGVsX2RzaV9ob3N0KHN0cnVjdCBtaXBpX2Rz aV9ob3N0ICpoKQogCXJldHVybiBjb250YWluZXJfb2YoaCwgc3RydWN0IGludGVsX2RzaV9ob3N0 LCBiYXNlKTsKIH0KIAotI2RlZmluZSBmb3JfZWFjaF9kc2lfcG9ydChfX3BvcnQsIF9fcG9ydHNf bWFzaykgZm9yX2VhY2hfcG9ydF9tYXNrZWQoX19wb3J0LCBfX3BvcnRzX21hc2spCisjZGVmaW5l IGZvcl9lYWNoX2RzaV9wb3J0KF9fcG9ydCwgX19wb3J0c19tYXNrKSBcCisJZm9yX2VhY2hfcG9y dF9tYXNrZWQoX19wb3J0LCBfX3BvcnRzX21hc2spCisjZGVmaW5lIGZvcl9lYWNoX2RzaV9waHko X19waHksIF9fcGh5c19tYXNrKSBcCisJZm9yX2VhY2hfcGh5X21hc2tlZChfX3BoeSwgX19waHlz X21hc2spCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2RzaSAqZW5jX3RvX2ludGVsX2Rz aShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApp bmRleCBkM2ZjNTc1YTk0ZGIuLjk1YjljYTFmZGEyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o CkBAIC0xNzk0LDIwICsxNzk0LDIwIEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHsKICNkZWZp bmUgX0lDTF9DT01CT1BIWV9BCQkJMHgxNjIwMDAKICNkZWZpbmUgX0lDTF9DT01CT1BIWV9CCQkJ MHg2QzAwMAogI2RlZmluZSBfRUhMX0NPTUJPUEhZX0MJCQkweDE2MDAwMAotI2RlZmluZSBfSUNM X0NPTUJPUEhZKHBvcnQpCQlfUElDSyhwb3J0LCBfSUNMX0NPTUJPUEhZX0EsIFwKKyNkZWZpbmUg X0lDTF9DT01CT1BIWShwaHkpCQlfUElDSyhwaHksIF9JQ0xfQ09NQk9QSFlfQSwgXAogCQkJCQkg ICAgICBfSUNMX0NPTUJPUEhZX0IsIFwKIAkJCQkJICAgICAgX0VITF9DT01CT1BIWV9DKQogCiAv KiBDTkwvSUNMIFBvcnQgQ0xfRFcgcmVnaXN0ZXJzICovCi0jZGVmaW5lIF9JQ0xfUE9SVF9DTF9E VyhkdywgcG9ydCkJKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9D TF9EVyhkdywgcGh5KQkoX0lDTF9DT01CT1BIWShwaHkpICsgXAogCQkJCQkgNCAqIChkdykpCiAK ICNkZWZpbmUgQ05MX1BPUlRfQ0wxQ01fRFc1CQlfTU1JTygweDE2MjAxNCkKLSNkZWZpbmUgSUNM X1BPUlRfQ0xfRFc1KHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ0xfRFcoNSwgcG9ydCkpCisjZGVm aW5lIElDTF9QT1JUX0NMX0RXNShwaHkpCQlfTU1JTyhfSUNMX1BPUlRfQ0xfRFcoNSwgcGh5KSkK ICNkZWZpbmUgICBDTF9QT1dFUl9ET1dOX0VOQUJMRQkJKDEgPDwgNCkKICNkZWZpbmUgICBTVVNf Q0xPQ0tfQ09ORklHCQkoMyA8PCAwKQogCi0jZGVmaW5lIElDTF9QT1JUX0NMX0RXMTAocG9ydCkJ CV9NTUlPKF9JQ0xfUE9SVF9DTF9EVygxMCwgcG9ydCkpCisjZGVmaW5lIElDTF9QT1JUX0NMX0RX MTAocGh5KQkJX01NSU8oX0lDTF9QT1JUX0NMX0RXKDEwLCBwaHkpKQogI2RlZmluZSAgUEdfU0VR X0RFTEFZX09WRVJSSURFX01BU0sJKDMgPDwgMjUpCiAjZGVmaW5lICBQR19TRVFfREVMQVlfT1ZF UlJJREVfU0hJRlQJMjUKICNkZWZpbmUgIFBHX1NFUV9ERUxBWV9PVkVSUklERV9FTkFCTEUJKDEg PDwgMjQpCkBAIC0xODIyLDIzICsxODIyLDIzIEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHsK ICNkZWZpbmUgIFBXUl9ET1dOX0xOX01BU0sJCSgweGYgPDwgNCkKICNkZWZpbmUgIFBXUl9ET1dO X0xOX1NISUZUCQk0CiAKLSNkZWZpbmUgSUNMX1BPUlRfQ0xfRFcxMihwb3J0KQkJX01NSU8oX0lD TF9QT1JUX0NMX0RXKDEyLCBwb3J0KSkKKyNkZWZpbmUgSUNMX1BPUlRfQ0xfRFcxMihwaHkpCQlf TU1JTyhfSUNMX1BPUlRfQ0xfRFcoMTIsIHBoeSkpCiAjZGVmaW5lICAgSUNMX0xBTkVfRU5BQkxF X0FVWAkJKDEgPDwgMCkKIAogLyogQ05ML0lDTCBQb3J0IENPTVBfRFcgcmVnaXN0ZXJzICovCiAj ZGVmaW5lIF9JQ0xfUE9SVF9DT01QCQkJMHgxMDAKLSNkZWZpbmUgX0lDTF9QT1JUX0NPTVBfRFco ZHcsIHBvcnQpCShfSUNMX0NPTUJPUEhZKHBvcnQpICsgXAorI2RlZmluZSBfSUNMX1BPUlRfQ09N UF9EVyhkdywgcGh5KQkoX0lDTF9DT01CT1BIWShwaHkpICsgXAogCQkJCQkgX0lDTF9QT1JUX0NP TVAgKyA0ICogKGR3KSkKIAogI2RlZmluZSBDTkxfUE9SVF9DT01QX0RXMAkJX01NSU8oMHgxNjIx MDApCi0jZGVmaW5lIElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ09N UF9EVygwLCBwb3J0KSkKKyNkZWZpbmUgSUNMX1BPUlRfQ09NUF9EVzAocGh5KQkJX01NSU8oX0lD TF9QT1JUX0NPTVBfRFcoMCwgcGh5KSkKICNkZWZpbmUgICBDT01QX0lOSVQJCQkoMSA8PCAzMSkK IAogI2RlZmluZSBDTkxfUE9SVF9DT01QX0RXMQkJX01NSU8oMHgxNjIxMDQpCi0jZGVmaW5lIElD TF9QT1JUX0NPTVBfRFcxKHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVygxLCBwb3J0KSkK KyNkZWZpbmUgSUNMX1BPUlRfQ09NUF9EVzEocGh5KQkJX01NSU8oX0lDTF9QT1JUX0NPTVBfRFco MSwgcGh5KSkKIAogI2RlZmluZSBDTkxfUE9SVF9DT01QX0RXMwkJX01NSU8oMHgxNjIxMGMpCi0j ZGVmaW5lIElDTF9QT1JUX0NPTVBfRFczKHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVygz LCBwb3J0KSkKKyNkZWZpbmUgSUNMX1BPUlRfQ09NUF9EVzMocGh5KQkJX01NSU8oX0lDTF9QT1JU X0NPTVBfRFcoMywgcGh5KSkKICNkZWZpbmUgICBQUk9DRVNTX0lORk9fRE9UXzAJCSgwIDw8IDI2 KQogI2RlZmluZSAgIFBST0NFU1NfSU5GT19ET1RfMQkJKDEgPDwgMjYpCiAjZGVmaW5lICAgUFJP Q0VTU19JTkZPX0RPVF80CQkoMiA8PCAyNikKQEAgLTE4NTAsMTQgKzE4NTAsMTQgQEAgZW51bSBp OTE1X3Bvd2VyX3dlbGxfaWQgewogI2RlZmluZSAgIFZPTFRBR0VfSU5GT19NQVNLCQkoMyA8PCAy NCkKICNkZWZpbmUgICBWT0xUQUdFX0lORk9fU0hJRlQJCTI0CiAKLSNkZWZpbmUgSUNMX1BPUlRf Q09NUF9EVzgocG9ydCkJCV9NTUlPKF9JQ0xfUE9SVF9DT01QX0RXKDgsIHBvcnQpKQorI2RlZmlu ZSBJQ0xfUE9SVF9DT01QX0RXOChwaHkpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVyg4LCBwaHkp KQogI2RlZmluZSAgIElSRUZHRU4JCQkoMSA8PCAyNCkKIAogI2RlZmluZSBDTkxfUE9SVF9DT01Q X0RXOQkJX01NSU8oMHgxNjIxMjQpCi0jZGVmaW5lIElDTF9QT1JUX0NPTVBfRFc5KHBvcnQpCQlf TU1JTyhfSUNMX1BPUlRfQ09NUF9EVyg5LCBwb3J0KSkKKyNkZWZpbmUgSUNMX1BPUlRfQ09NUF9E VzkocGh5KQkJX01NSU8oX0lDTF9QT1JUX0NPTVBfRFcoOSwgcGh5KSkKIAogI2RlZmluZSBDTkxf UE9SVF9DT01QX0RXMTAJCV9NTUlPKDB4MTYyMTI4KQotI2RlZmluZSBJQ0xfUE9SVF9DT01QX0RX MTAocG9ydCkJX01NSU8oX0lDTF9QT1JUX0NPTVBfRFcoMTAsIHBvcnQpKQorI2RlZmluZSBJQ0xf UE9SVF9DT01QX0RXMTAocGh5KQkJX01NSU8oX0lDTF9QT1JUX0NPTVBfRFcoMTAsIHBoeSkpCiAK IC8qIENOTC9JQ0wgUG9ydCBQQ1MgcmVnaXN0ZXJzICovCiAjZGVmaW5lIF9DTkxfUE9SVF9QQ1Nf RFcxX0dSUF9BRQkweDE2MjMwNApAQCAtMTg3MCwxNCArMTg3MCwxNCBAQCBlbnVtIGk5MTVfcG93 ZXJfd2VsbF9pZCB7CiAjZGVmaW5lIF9DTkxfUE9SVF9QQ1NfRFcxX0xOMF9DCQkweDE2MkMwNAog I2RlZmluZSBfQ05MX1BPUlRfUENTX0RXMV9MTjBfRAkJMHgxNjJFMDQKICNkZWZpbmUgX0NOTF9Q T1JUX1BDU19EVzFfTE4wX0YJCTB4MTYyODA0Ci0jZGVmaW5lIENOTF9QT1JUX1BDU19EVzFfR1JQ KHBvcnQpCV9NTUlPKF9QSUNLKHBvcnQsIFwKKyNkZWZpbmUgQ05MX1BPUlRfUENTX0RXMV9HUlAo cGh5KQlfTU1JTyhfUElDSyhwaHksIFwKIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9HUlBf QUUsIFwKIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9HUlBfQiwgXAogCQkJCQkJICAgIF9D TkxfUE9SVF9QQ1NfRFcxX0dSUF9DLCBcCiAJCQkJCQkgICAgX0NOTF9QT1JUX1BDU19EVzFfR1JQ X0QsIFwKIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9HUlBfQUUsIFwKIAkJCQkJCSAgICBf Q05MX1BPUlRfUENTX0RXMV9HUlBfRikpCi0jZGVmaW5lIENOTF9QT1JUX1BDU19EVzFfTE4wKHBv cnQpCV9NTUlPKF9QSUNLKHBvcnQsIFwKKyNkZWZpbmUgQ05MX1BPUlRfUENTX0RXMV9MTjAocGh5 KQlfTU1JTyhfUElDSyhwaHksIFwKIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9MTjBfQUUs IFwKIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9MTjBfQiwgXAogCQkJCQkJICAgIF9DTkxf UE9SVF9QQ1NfRFcxX0xOMF9DLCBcCkBAIC0xODg4LDE1ICsxODg4LDE1IEBAIGVudW0gaTkxNV9w b3dlcl93ZWxsX2lkIHsKICNkZWZpbmUgX0lDTF9QT1JUX1BDU19BVVgJCTB4MzAwCiAjZGVmaW5l IF9JQ0xfUE9SVF9QQ1NfR1JQCQkweDYwMAogI2RlZmluZSBfSUNMX1BPUlRfUENTX0xOKGxuKQkJ KDB4ODAwICsgKGxuKSAqIDB4MTAwKQotI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0FVWChkdywg cG9ydCkJKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9QQ1NfRFdf QVVYKGR3LCBwaHkpCShfSUNMX0NPTUJPUEhZKHBoeSkgKyBcCiAJCQkJCSBfSUNMX1BPUlRfUENT X0FVWCArIDQgKiAoZHcpKQotI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0dSUChkdywgcG9ydCkJ KF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9QQ1NfRFdfR1JQKGR3 LCBwaHkpCShfSUNMX0NPTUJPUEhZKHBoeSkgKyBcCiAJCQkJCSBfSUNMX1BPUlRfUENTX0dSUCAr IDQgKiAoZHcpKQotI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0xOKGR3LCBsbiwgcG9ydCkgKF9J Q0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9QQ1NfRFdfTE4oZHcsIGxu LCBwaHkpIChfSUNMX0NPTUJPUEhZKHBoeSkgKyBcCiAJCQkJCSAgX0lDTF9QT1JUX1BDU19MTihs bikgKyA0ICogKGR3KSkKLSNkZWZpbmUgSUNMX1BPUlRfUENTX0RXMV9BVVgocG9ydCkJX01NSU8o X0lDTF9QT1JUX1BDU19EV19BVVgoMSwgcG9ydCkpCi0jZGVmaW5lIElDTF9QT1JUX1BDU19EVzFf R1JQKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9QQ1NfRFdfR1JQKDEsIHBvcnQpKQotI2RlZmluZSBJ Q0xfUE9SVF9QQ1NfRFcxX0xOMChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfUENTX0RXX0xOKDEsIDAs IHBvcnQpKQorI2RlZmluZSBJQ0xfUE9SVF9QQ1NfRFcxX0FVWChwaHkpCV9NTUlPKF9JQ0xfUE9S VF9QQ1NfRFdfQVVYKDEsIHBoeSkpCisjZGVmaW5lIElDTF9QT1JUX1BDU19EVzFfR1JQKHBoeSkJ X01NSU8oX0lDTF9QT1JUX1BDU19EV19HUlAoMSwgcGh5KSkKKyNkZWZpbmUgSUNMX1BPUlRfUENT X0RXMV9MTjAocGh5KQlfTU1JTyhfSUNMX1BPUlRfUENTX0RXX0xOKDEsIDAsIHBoeSkpCiAjZGVm aW5lICAgQ09NTU9OX0tFRVBFUl9FTgkJKDEgPDwgMjYpCiAjZGVmaW5lICAgTEFURU5DWV9PUFRJ TV9NQVNLCQkoMHgzIDw8IDIpCiAjZGVmaW5lICAgTEFURU5DWV9PUFRJTV9WQUwoeCkJCSgoeCkg PDwgMikKQEAgLTE5MzMsMTggKzE5MzMsMTggQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgewog I2RlZmluZSBfSUNMX1BPUlRfVFhfR1JQCQkweDY4MAogI2RlZmluZSBfSUNMX1BPUlRfVFhfTE4o bG4pCQkoMHg4ODAgKyAobG4pICogMHgxMDApCiAKLSNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0FV WChkdywgcG9ydCkJKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9U WF9EV19BVVgoZHcsIHBoeSkJKF9JQ0xfQ09NQk9QSFkocGh5KSArIFwKIAkJCQkJIF9JQ0xfUE9S VF9UWF9BVVggKyA0ICogKGR3KSkKLSNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0dSUChkdywgcG9y dCkJKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9UWF9EV19HUlAo ZHcsIHBoeSkJKF9JQ0xfQ09NQk9QSFkocGh5KSArIFwKIAkJCQkJIF9JQ0xfUE9SVF9UWF9HUlAg KyA0ICogKGR3KSkKLSNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0xOKGR3LCBsbiwgcG9ydCkgKF9J Q0xfQ09NQk9QSFkocG9ydCkgKyBcCisjZGVmaW5lIF9JQ0xfUE9SVF9UWF9EV19MTihkdywgbG4s IHBoeSkgKF9JQ0xfQ09NQk9QSFkocGh5KSArIFwKIAkJCQkJICBfSUNMX1BPUlRfVFhfTE4obG4p ICsgNCAqIChkdykpCiAKICNkZWZpbmUgQ05MX1BPUlRfVFhfRFcyX0dSUChwb3J0KQlfTU1JTyhf Q05MX1BPUlRfVFhfRFdfR1JQKDIsIHBvcnQpKQogI2RlZmluZSBDTkxfUE9SVF9UWF9EVzJfTE4w KHBvcnQpCV9NTUlPKF9DTkxfUE9SVF9UWF9EV19MTjAoMiwgcG9ydCkpCi0jZGVmaW5lIElDTF9Q T1JUX1RYX0RXMl9BVVgocG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FVWCgyLCBwb3J0KSkK LSNkZWZpbmUgSUNMX1BPUlRfVFhfRFcyX0dSUChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdf R1JQKDIsIHBvcnQpKQotI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzJfTE4wKHBvcnQpCV9NTUlPKF9J Q0xfUE9SVF9UWF9EV19MTigyLCAwLCBwb3J0KSkKKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFcyX0FV WChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19BVVgoMiwgcGh5KSkKKyNkZWZpbmUgSUNMX1BP UlRfVFhfRFcyX0dSUChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19HUlAoMiwgcGh5KSkKKyNk ZWZpbmUgSUNMX1BPUlRfVFhfRFcyX0xOMChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTigy LCAwLCBwaHkpKQogI2RlZmluZSAgIFNXSU5HX1NFTF9VUFBFUih4KQkJKCgoeCkgPj4gMykgPDwg MTUpCiAjZGVmaW5lICAgU1dJTkdfU0VMX1VQUEVSX01BU0sJCSgxIDw8IDE1KQogI2RlZmluZSAg IFNXSU5HX1NFTF9MT1dFUih4KQkJKCgoeCkgJiAweDcpIDw8IDExKQpAQCAtMTk2MSwxMCArMTk2 MSwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7CiAjZGVmaW5lIENOTF9QT1JUX1RYX0RX NF9MTihsbiwgcG9ydCkgICBfTU1JTyhfQ05MX1BPUlRfVFhfRFdfTE4wKDQsIChwb3J0KSkgKyBc CiAJCQkJCSAgICgobG4pICogKF9DTkxfUE9SVF9UWF9EVzRfTE4xX0FFIC0gXAogCQkJCQkJICAg IF9DTkxfUE9SVF9UWF9EVzRfTE4wX0FFKSkpCi0jZGVmaW5lIElDTF9QT1JUX1RYX0RXNF9BVVgo cG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FVWCg0LCBwb3J0KSkKLSNkZWZpbmUgSUNMX1BP UlRfVFhfRFc0X0dSUChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfR1JQKDQsIHBvcnQpKQot I2RlZmluZSBJQ0xfUE9SVF9UWF9EVzRfTE4wKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19M Tig0LCAwLCBwb3J0KSkKLSNkZWZpbmUgSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwb3J0KQlfTU1J TyhfSUNMX1BPUlRfVFhfRFdfTE4oNCwgbG4sIHBvcnQpKQorI2RlZmluZSBJQ0xfUE9SVF9UWF9E VzRfQVVYKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FVWCg0LCBwaHkpKQorI2RlZmluZSBJ Q0xfUE9SVF9UWF9EVzRfR1JQKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0dSUCg0LCBwaHkp KQorI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzRfTE4wKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RX X0xOKDQsIDAsIHBoeSkpCisjZGVmaW5lIElDTF9QT1JUX1RYX0RXNF9MTihsbiwgcGh5KQlfTU1J TyhfSUNMX1BPUlRfVFhfRFdfTE4oNCwgbG4sIHBoeSkpCiAjZGVmaW5lICAgTE9BREdFTl9TRUxF Q1QJCSgxIDw8IDMxKQogI2RlZmluZSAgIFBPU1RfQ1VSU09SXzEoeCkJCSgoeCkgPDwgMTIpCiAj ZGVmaW5lICAgUE9TVF9DVVJTT1JfMV9NQVNLCQkoMHgzRiA8PCAxMikKQEAgLTE5NzUsOSArMTk3 NSw5IEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHsKIAogI2RlZmluZSBDTkxfUE9SVF9UWF9E VzVfR1JQKHBvcnQpCV9NTUlPKF9DTkxfUE9SVF9UWF9EV19HUlAoNSwgcG9ydCkpCiAjZGVmaW5l IENOTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0xOMCg1LCBw b3J0KSkKLSNkZWZpbmUgSUNMX1BPUlRfVFhfRFc1X0FVWChwb3J0KQlfTU1JTyhfSUNMX1BPUlRf VFhfRFdfQVVYKDUsIHBvcnQpKQotI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQpCV9N TUlPKF9JQ0xfUE9SVF9UWF9EV19HUlAoNSwgcG9ydCkpCi0jZGVmaW5lIElDTF9QT1JUX1RYX0RX NV9MTjAocG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0xOKDUsIDAsIHBvcnQpKQorI2RlZmlu ZSBJQ0xfUE9SVF9UWF9EVzVfQVVYKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FVWCg1LCBw aHkpKQorI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfR1JQKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RY X0RXX0dSUCg1LCBwaHkpKQorI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfTE4wKHBoeSkJX01NSU8o X0lDTF9QT1JUX1RYX0RXX0xOKDUsIDAsIHBoeSkpCiAjZGVmaW5lICAgVFhfVFJBSU5JTkdfRU4J CSgxIDw8IDMxKQogI2RlZmluZSAgIFRBUDJfRElTQUJMRQkJCSgxIDw8IDMwKQogI2RlZmluZSAg IFRBUDNfRElTQUJMRQkJCSgxIDw8IDI5KQpAQCAtMTk4OCwxMCArMTk4OCwxMCBAQCBlbnVtIGk5 MTVfcG93ZXJfd2VsbF9pZCB7CiAKICNkZWZpbmUgQ05MX1BPUlRfVFhfRFc3X0dSUChwb3J0KQlf TU1JTyhfQ05MX1BPUlRfVFhfRFdfR1JQKDcsIChwb3J0KSkpCiAjZGVmaW5lIENOTF9QT1JUX1RY X0RXN19MTjAocG9ydCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0xOMCg3LCAocG9ydCkpKQotI2Rl ZmluZSBJQ0xfUE9SVF9UWF9EVzdfQVVYKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19BVVgo NywgcG9ydCkpCi0jZGVmaW5lIElDTF9QT1JUX1RYX0RXN19HUlAocG9ydCkJX01NSU8oX0lDTF9Q T1JUX1RYX0RXX0dSUCg3LCBwb3J0KSkKLSNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOMChwb3J0 KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNywgMCwgcG9ydCkpCi0jZGVmaW5lIElDTF9QT1JU X1RYX0RXN19MTihsbiwgcG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0xOKDcsIGxuLCBwb3J0 KSkKKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0FVWChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9E V19BVVgoNywgcGh5KSkKKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0dSUChwaHkpCV9NTUlPKF9J Q0xfUE9SVF9UWF9EV19HUlAoNywgcGh5KSkKKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOMChw aHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig3LCAwLCBwaHkpKQorI2RlZmluZSBJQ0xfUE9S VF9UWF9EVzdfTE4obG4sIHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0xOKDcsIGxuLCBwaHkp KQogI2RlZmluZSAgIE5fU0NBTEFSKHgpCQkJKCh4KSA8PCAyNCkKICNkZWZpbmUgICBOX1NDQUxB Ul9NQVNLCQkJKDB4N0YgPDwgMjQpCiAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4