From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 07/10] drm/msm/dsi: Move PHY operations out of host Date: Sat, 7 Jan 2017 18:40:39 +0530 Message-ID: <1483794642-2184-8-git-send-email-architt@codeaurora.org> References: <1483794642-2184-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1483794642-2184-1-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org RnJvbTogSGFpIExpIDxoYWxpQGNvZGVhdXJvcmEub3JnPgoKU2luY2UgRFNJIFBIWSBoYXMgYmVl biBhIHNlcGFyYXRlIHBsYXRmb3JtIGRldmljZSwgaXQgc2hvdWxkIG5vdApkZXBlbmQgb24gdGhl IHJlc291cmNlcyBpbiBob3N0IHRvIGJlIGZ1bmN0aW9uYWwuIFRoaXMgY2hhbmdlIGlzCnRvIHRy aWdnZXIgUEhZIG9wZXJhdGlvbnMgaW4gbWFuYWdlciwgaW5zdGVhZCBvZiBob3N0LCBzbyB0aGF0 Cmhvc3QgYW5kIFBIWSBjYW4gYmUgY29tcGxldGVseSBzZXBhcmF0ZWQuCgpTaWduZWQtb2ZmLWJ5 OiBIYWkgTGkgPGhhbGlAY29kZWF1cm9yYS5vcmc+ClNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5l amEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpLmggICAgICAgICAgICAgICAgICAgfCAgMTggKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9kc2lfaG9zdC5jICAgICAgICAgICAgICB8ICA0NiArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZHNpL2RzaV9tYW5hZ2VyLmMgICAgICAgICAgIHwgMTc4ICsrKysrKysrKysrKysrLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHkuYyAgICAgICAgICAgfCAg MzkgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5oICAgICAgICAg ICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMjBubS5jICAg ICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm0uYyAg ICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8yOG5tXzg5 NjAuYyB8ICAgNCArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMTI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKaW5kZXggOTQwN2E2OC4uOTQ2NTk5NiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kc2kvZHNpLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgRFNJX01BWAkyCiAK IHN0cnVjdCBtc21fZHNpX3BoeV9zaGFyZWRfdGltaW5nczsKK3N0cnVjdCBtc21fZHNpX3BoeV9j bGtfcmVxdWVzdDsKIAogZW51bSBtc21fZHNpX3BoeV90eXBlIHsKIAlNU01fRFNJX1BIWV8yOE5N X0hQTSwKQEAgLTkyLDEwICs5Myw2IEBAIHN0cnVjdCBtc21fZHNpIHsKIHZvaWQgbXNtX2RzaV9t YW5hZ2VyX2JyaWRnZV9kZXN0cm95KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwogc3RydWN0 IGRybV9jb25uZWN0b3IgKm1zbV9kc2lfbWFuYWdlcl9jb25uZWN0b3JfaW5pdCh1OCBpZCk7CiBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqbXNtX2RzaV9tYW5hZ2VyX2V4dF9icmlkZ2VfaW5pdCh1OCBp ZCk7Ci1pbnQgbXNtX2RzaV9tYW5hZ2VyX3BoeV9lbmFibGUoaW50IGlkLAotCQljb25zdCB1bnNp Z25lZCBsb25nIGJpdF9yYXRlLCBjb25zdCB1bnNpZ25lZCBsb25nIGVzY19yYXRlLAotCQlzdHJ1 Y3QgbXNtX2RzaV9waHlfc2hhcmVkX3RpbWluZ3MgKnNoYXJlZF90aW1pbmcpOwotdm9pZCBtc21f ZHNpX21hbmFnZXJfcGh5X2Rpc2FibGUoaW50IGlkKTsKIGludCBtc21fZHNpX21hbmFnZXJfY21k X3hmZXIoaW50IGlkLCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpOwogYm9vbCBtc21f ZHNpX21hbmFnZXJfY21kX3hmZXJfdHJpZ2dlcihpbnQgaWQsIHUzMiBkbWFfYmFzZSwgdTMyIGxl bik7CiB2b2lkIG1zbV9kc2lfbWFuYWdlcl9hdHRhY2hfZHNpX2RldmljZShpbnQgaWQsIHUzMiBk ZXZpY2VfZmxhZ3MpOwpAQCAtMTU1LDcgKzE1Miw4IEBAIHZvaWQgbXNtX2RzaV9ob3N0X2NtZF94 ZmVyX2NvbW1pdChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAkJCQkJdTMyIGRtYV9iYXNl LCB1MzIgbGVuKTsKIGludCBtc21fZHNpX2hvc3RfZW5hYmxlKHN0cnVjdCBtaXBpX2RzaV9ob3N0 ICpob3N0KTsKIGludCBtc21fZHNpX2hvc3RfZGlzYWJsZShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAq aG9zdCk7Ci1pbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpo b3N0KTsKK2ludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhv c3QsCisJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfc2hhcmVkX3RpbWluZ3MgKnBoeV9zaGFyZWRfdGlt aW5ncyk7CiBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29mZihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAq aG9zdCk7CiBpbnQgbXNtX2RzaV9ob3N0X3NldF9kaXNwbGF5X21vZGUoc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3QsCiAJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKQEAgLTE2 Nyw2ICsxNjUsOCBAQCBzdHJ1Y3QgZHJtX3BhbmVsICptc21fZHNpX2hvc3RfZ2V0X3BhbmVsKHN0 cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogaW50IG1zbV9kc2lfaG9zdF9zZXRfc3JjX3BsbChz dHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAkJCXN0cnVjdCBtc21fZHNpX3BsbCAqc3JjX3Bs bCk7CiB2b2lkIG1zbV9kc2lfaG9zdF9yZXNldF9waHkoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhv c3QpOwordm9pZCBtc21fZHNpX2hvc3RfZ2V0X3BoeV9jbGtfcmVxKHN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0LAorCXN0cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSk7CiB2 b2lkIG1zbV9kc2lfaG9zdF9kZXN0cm95KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0KTsKIGlu dCBtc21fZHNpX2hvc3RfbW9kZXNldF9pbml0KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAog CQkJCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAgLTE3OSwxMCArMTc5LDE2IEBAIHN0cnVj dCBtc21fZHNpX3BoeV9zaGFyZWRfdGltaW5ncyB7CiAJdTMyIGNsa19wcmU7CiAJYm9vbCBjbGtf cHJlX2luY19ieV8yOwogfTsKKworc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0IHsKKwl1 bnNpZ25lZCBsb25nIGJpdGNsa19yYXRlOworCXVuc2lnbmVkIGxvbmcgZXNjY2xrX3JhdGU7Cit9 OworCiB2b2lkIG1zbV9kc2lfcGh5X2RyaXZlcl9yZWdpc3Rlcih2b2lkKTsKIHZvaWQgbXNtX2Rz aV9waHlfZHJpdmVyX3VucmVnaXN0ZXIodm9pZCk7CiBpbnQgbXNtX2RzaV9waHlfZW5hYmxlKHN0 cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgc3JjX3BsbF9pZCwKLQljb25zdCB1bnNpZ25lZCBs b25nIGJpdF9yYXRlLCBjb25zdCB1bnNpZ25lZCBsb25nIGVzY19yYXRlKTsKKwkJCXN0cnVjdCBt c21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSk7CiB2b2lkIG1zbV9kc2lfcGh5X2Rpc2Fi bGUoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkpOwogdm9pZCBtc21fZHNpX3BoeV9nZXRfc2hhcmVk X3RpbWluZ3Moc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksCiAJCQlzdHJ1Y3QgbXNtX2RzaV9waHlf c2hhcmVkX3RpbWluZ3MgKnNoYXJlZF90aW1pbmcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kc2kvZHNpX2hvc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0 LmMKaW5kZXggYjdmZDk1Mi4uOWY5ZTQxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvZHNpX2hvc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5j CkBAIC0yMTI4LDYgKzIxMjgsMTUgQEAgdm9pZCBtc21fZHNpX2hvc3RfcmVzZXRfcGh5KHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0KQogCXVkZWxheSgxMDApOwogfQogCit2b2lkIG1zbV9kc2lf aG9zdF9nZXRfcGh5X2Nsa19yZXEoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCisJc3RydWN0 IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKQoreworCXN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOworCisJY2xrX3JlcS0+Yml0Y2xr X3JhdGUgPSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSAqIDg7CisJY2xrX3JlcS0+ZXNjY2xrX3Jh dGUgPSBtc21faG9zdC0+ZXNjX2Nsa19yYXRlOworfQorCiBpbnQgbXNtX2RzaV9ob3N0X2VuYWJs ZShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKQEAgLTIxNzUsMTAgKzIxODQsMTAgQEAg c3RhdGljIHZvaWQgbXNtX2RzaV9zZnBiX2NvbmZpZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCwgYm9vbCBlbmFibGUpCiAJCQlTRlBCX0dQUkVHX01BU1RFUl9QT1JUX0VOKGVuKSk7CiB9 CiAKLWludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3Qp CitpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAor CQkJc3RydWN0IG1zbV9kc2lfcGh5X3NoYXJlZF90aW1pbmdzICpwaHlfc2hhcmVkX3RpbWluZ3Mp CiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21fZHNpX2hvc3QoaG9z dCk7Ci0Jc3RydWN0IG1zbV9kc2lfcGh5X3NoYXJlZF90aW1pbmdzIHBoeV9zaGFyZWRfdGltaW5n czsKIAlpbnQgcmV0ID0gMDsKIAogCW11dGV4X2xvY2soJm1zbV9ob3N0LT5kZXZfbXV0ZXgpOwpA QCAtMjE4OSwxMiArMjE5OCw2IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0IG1p cGlfZHNpX2hvc3QgKmhvc3QpCiAKIAltc21fZHNpX3NmcGJfY29uZmlnKG1zbV9ob3N0LCB0cnVl KTsKIAotCXJldCA9IGRzaV9jYWxjX2Nsa19yYXRlKG1zbV9ob3N0KTsKLQlpZiAocmV0KSB7Ci0J CXByX2VycigiJXM6IHVuYWJsZSB0byBjYWxjIGNsayByYXRlLCAlZFxuIiwgX19mdW5jX18sIHJl dCk7Ci0JCWdvdG8gdW5sb2NrX3JldDsKLQl9Ci0KIAlyZXQgPSBkc2lfaG9zdF9yZWd1bGF0b3Jf ZW5hYmxlKG1zbV9ob3N0KTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6RmFpbGVkIHRvIGVu YWJsZSB2cmVncy5yZXQ9JWRcbiIsCkBAIC0yMjAyLDIyICsyMjA1LDYgQEAgaW50IG1zbV9kc2lf aG9zdF9wb3dlcl9vbihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCkKIAkJZ290byB1bmxvY2tf cmV0OwogCX0KIAotCXJldCA9IGRzaV9idXNfY2xrX2VuYWJsZShtc21faG9zdCk7Ci0JaWYgKHJl dCkgewotCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gZW5hYmxlIGJ1cyBjbG9ja3MsICVkXG4iLCBf X2Z1bmNfXywgcmV0KTsKLQkJZ290byBmYWlsX2Rpc2FibGVfcmVnOwotCX0KLQotCXJldCA9IG1z bV9kc2lfbWFuYWdlcl9waHlfZW5hYmxlKG1zbV9ob3N0LT5pZCwKLQkJCQkJbXNtX2hvc3QtPmJ5 dGVfY2xrX3JhdGUgKiA4LAotCQkJCQltc21faG9zdC0+ZXNjX2Nsa19yYXRlLAotCQkJCQkmcGh5 X3NoYXJlZF90aW1pbmdzKTsKLQlkc2lfYnVzX2Nsa19kaXNhYmxlKG1zbV9ob3N0KTsKLQlpZiAo cmV0KSB7Ci0JCXByX2VycigiJXM6IGZhaWxlZCB0byBlbmFibGUgcGh5LCAlZFxuIiwgX19mdW5j X18sIHJldCk7Ci0JCWdvdG8gZmFpbF9kaXNhYmxlX3JlZzsKLQl9Ci0KIAlyZXQgPSBkc2lfY2xr X2N0cmwobXNtX2hvc3QsIDEpOwogCWlmIChyZXQpIHsKIAkJcHJfZXJyKCIlczogZmFpbGVkIHRv IGVuYWJsZSBjbG9ja3MuIHJldD0lZFxuIiwgX19mdW5jX18sIHJldCk7CkBAIC0yMjMzLDcgKzIy MjAsNyBAQCBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpo b3N0KQogCiAJZHNpX3RpbWluZ19zZXR1cChtc21faG9zdCk7CiAJZHNpX3N3X3Jlc2V0KG1zbV9o b3N0KTsKLQlkc2lfY3RybF9jb25maWcobXNtX2hvc3QsIHRydWUsICZwaHlfc2hhcmVkX3RpbWlu Z3MpOworCWRzaV9jdHJsX2NvbmZpZyhtc21faG9zdCwgdHJ1ZSwgcGh5X3NoYXJlZF90aW1pbmdz KTsKIAogCWlmIChtc21faG9zdC0+ZGlzcF9lbl9ncGlvKQogCQlncGlvZF9zZXRfdmFsdWUobXNt X2hvc3QtPmRpc3BfZW5fZ3BpbywgMSk7CkBAIC0yMjY5LDggKzIyNTYsNiBAQCBpbnQgbXNtX2Rz aV9ob3N0X3Bvd2VyX29mZihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCkKIAogCXBpbmN0cmxf cG1fc2VsZWN0X3NsZWVwX3N0YXRlKCZtc21faG9zdC0+cGRldi0+ZGV2KTsKIAotCW1zbV9kc2lf bWFuYWdlcl9waHlfZGlzYWJsZShtc21faG9zdC0+aWQpOwotCiAJZHNpX2Nsa19jdHJsKG1zbV9o b3N0LCAwKTsKIAogCWRzaV9ob3N0X3JlZ3VsYXRvcl9kaXNhYmxlKG1zbV9ob3N0KTsKQEAgLTIy OTAsNiArMjI3NSw3IEBAIGludCBtc21fZHNpX2hvc3Rfc2V0X2Rpc3BsYXlfbW9kZShzdHJ1Y3Qg bWlwaV9kc2lfaG9zdCAqaG9zdCwKIAkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUp CiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21fZHNpX2hvc3QoaG9z dCk7CisJaW50IHJldDsKIAogCWlmIChtc21faG9zdC0+bW9kZSkgewogCQlkcm1fbW9kZV9kZXN0 cm95KG1zbV9ob3N0LT5kZXYsIG1zbV9ob3N0LT5tb2RlKTsKQEAgLTIzMDIsNiArMjI4OCwxMiBA QCBpbnQgbXNtX2RzaV9ob3N0X3NldF9kaXNwbGF5X21vZGUoc3RydWN0IG1pcGlfZHNpX2hvc3Qg Kmhvc3QsCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAorCXJldCA9IGRzaV9jYWxjX2Nsa19yYXRl KG1zbV9ob3N0KTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiJXM6IHVuYWJsZSB0byBjYWxjIGNs ayByYXRlLCAlZFxuIiwgX19mdW5jX18sIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9tYW5h Z2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfbWFuYWdlci5jCmluZGV4IDBjN2E2 MzEuLjdlOWE0MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9tYW5h Z2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX21hbmFnZXIuYwpAQCAtMTI1 LDYgKzEyNSw4NCBAQCBzdGF0aWMgaW50IGRzaV9tZ3Jfc2V0dXBfY29tcG9uZW50cyhpbnQgaWQp CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBlbmFibGVfcGh5KHN0cnVjdCBtc21fZHNp ICptc21fZHNpLCBpbnQgc3JjX3BsbF9pZCwKKwkJICAgICAgc3RydWN0IG1zbV9kc2lfcGh5X3No YXJlZF90aW1pbmdzICpzaGFyZWRfdGltaW5ncykKK3sKKwlzdHJ1Y3QgbXNtX2RzaV9waHlfY2xr X3JlcXVlc3QgY2xrX3JlcTsKKwlpbnQgcmV0OworCisJbXNtX2RzaV9ob3N0X2dldF9waHlfY2xr X3JlcShtc21fZHNpLT5ob3N0LCAmY2xrX3JlcSk7CisKKwlyZXQgPSBtc21fZHNpX3BoeV9lbmFi bGUobXNtX2RzaS0+cGh5LCBzcmNfcGxsX2lkLCAmY2xrX3JlcSk7CisJbXNtX2RzaV9waHlfZ2V0 X3NoYXJlZF90aW1pbmdzKG1zbV9kc2ktPnBoeSwgc2hhcmVkX3RpbWluZ3MpOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludAorZHNpX21ncl9waHlfZW5hYmxlKGludCBpZCwKKwkJICAg c3RydWN0IG1zbV9kc2lfcGh5X3NoYXJlZF90aW1pbmdzIHNoYXJlZF90aW1pbmdzW0RTSV9NQVhd KQoreworCXN0cnVjdCBtc21fZHNpICptc21fZHNpID0gZHNpX21ncl9nZXRfZHNpKGlkKTsKKwlz dHJ1Y3QgbXNtX2RzaSAqbWRzaSA9IGRzaV9tZ3JfZ2V0X2RzaShEU0lfQ0xPQ0tfTUFTVEVSKTsK KwlzdHJ1Y3QgbXNtX2RzaSAqc2RzaSA9IGRzaV9tZ3JfZ2V0X2RzaShEU0lfQ0xPQ0tfU0xBVkUp OworCWludCBzcmNfcGxsX2lkID0gSVNfRFVBTF9EU0koKSA/IERTSV9DTE9DS19NQVNURVIgOiBp ZDsKKwlpbnQgcmV0OworCisJLyogSW4gY2FzZSBvZiBkdWFsIERTSSwgc29tZSByZWdpc3RlcnMg aW4gUEhZMSBoYXZlIGJlZW4gcHJvZ3JhbW1lZAorCSAqIGR1cmluZyBQTEwwIGNsb2NrJ3Mgc2V0 X3JhdGUuIFRoZSBQSFkxIHJlc2V0IGNhbGxlZCBieSBob3N0MSBoZXJlCisJICogd2lsbCBzaWxl bnRseSByZXNldCB0aG9zZSBQSFkxIHJlZ2lzdGVycy4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gcmVz ZXQKKwkgKiBhbmQgZW5hYmxlIGJvdGggUEhZcyBiZWZvcmUgYW55IFBMTCBjbG9jayBvcGVyYXRp b24uCisJICovCisJaWYgKElTX0RVQUxfRFNJKCkgJiYgbWRzaSAmJiBzZHNpKSB7CisJCWlmICgh bWRzaS0+cGh5X2VuYWJsZWQgJiYgIXNkc2ktPnBoeV9lbmFibGVkKSB7CisJCQltc21fZHNpX2hv c3RfcmVzZXRfcGh5KG1kc2ktPmhvc3QpOworCQkJbXNtX2RzaV9ob3N0X3Jlc2V0X3BoeShzZHNp LT5ob3N0KTsKKworCQkJcmV0ID0gZW5hYmxlX3BoeShtZHNpLCBzcmNfcGxsX2lkLAorCQkJCQkg JnNoYXJlZF90aW1pbmdzW0RTSV9DTE9DS19NQVNURVJdKTsKKwkJCWlmIChyZXQpCisJCQkJcmV0 dXJuIHJldDsKKwkJCXJldCA9IGVuYWJsZV9waHkoc2RzaSwgc3JjX3BsbF9pZCwKKwkJCQkJICZz aGFyZWRfdGltaW5nc1tEU0lfQ0xPQ0tfU0xBVkVdKTsKKwkJCWlmIChyZXQpIHsKKwkJCQltc21f ZHNpX3BoeV9kaXNhYmxlKG1kc2ktPnBoeSk7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKwkJfQor CX0gZWxzZSB7CisJCW1zbV9kc2lfaG9zdF9yZXNldF9waHkobWRzaS0+aG9zdCk7CisJCXJldCA9 IGVuYWJsZV9waHkobXNtX2RzaSwgc3JjX3BsbF9pZCwgJnNoYXJlZF90aW1pbmdzW2lkXSk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCW1zbV9kc2ktPnBoeV9lbmFibGVkID0g dHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkc2lfbWdyX3BoeV9kaXNhYmxl KGludCBpZCkKK3sKKwlzdHJ1Y3QgbXNtX2RzaSAqbXNtX2RzaSA9IGRzaV9tZ3JfZ2V0X2RzaShp ZCk7CisJc3RydWN0IG1zbV9kc2kgKm1kc2kgPSBkc2lfbWdyX2dldF9kc2koRFNJX0NMT0NLX01B U1RFUik7CisJc3RydWN0IG1zbV9kc2kgKnNkc2kgPSBkc2lfbWdyX2dldF9kc2koRFNJX0NMT0NL X1NMQVZFKTsKKworCS8qIGRpc2FibGUgRFNJIHBoeQorCSAqIEluIGR1YWwtZHNpIGNvbmZpZ3Vy YXRpb24sIHRoZSBwaHkgc2hvdWxkIGJlIGRpc2FibGVkIGZvciB0aGUKKwkgKiBmaXJzdCBjb250 cm9sbGVyIG9ubHkgd2hlbiB0aGUgc2Vjb25kIGNvbnRyb2xsZXIgaXMgZGlzYWJsZWQuCisJICov CisJbXNtX2RzaS0+cGh5X2VuYWJsZWQgPSBmYWxzZTsKKwlpZiAoSVNfRFVBTF9EU0koKSAmJiBt ZHNpICYmIHNkc2kpIHsKKwkJaWYgKCFtZHNpLT5waHlfZW5hYmxlZCAmJiAhc2RzaS0+cGh5X2Vu YWJsZWQpIHsKKwkJCW1zbV9kc2lfcGh5X2Rpc2FibGUoc2RzaS0+cGh5KTsKKwkJCW1zbV9kc2lf cGh5X2Rpc2FibGUobWRzaS0+cGh5KTsKKwkJfQorCX0gZWxzZSB7CisJCW1zbV9kc2lfcGh5X2Rp c2FibGUobXNtX2RzaS0+cGh5KTsKKwl9Cit9CisKIHN0cnVjdCBkc2lfY29ubmVjdG9yIHsKIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciBiYXNlOwogCWludCBpZDsKQEAgLTM1MCwyMiArNDI4LDMxIEBA IHN0YXRpYyB2b2lkIGRzaV9tZ3JfYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKIAlzdHJ1Y3QgbXNtX2RzaSAqbXNtX2RzaTEgPSBkc2lfbWdyX2dldF9kc2koRFNJ XzEpOwogCXN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0ID0gbXNtX2RzaS0+aG9zdDsKIAlzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCA9IG1zbV9kc2ktPnBhbmVsOworCXN0cnVjdCBtc21fZHNpX3Bo eV9zaGFyZWRfdGltaW5ncyBwaHlfc2hhcmVkX3RpbWluZ3NbRFNJX01BWF07CiAJYm9vbCBpc19k dWFsX2RzaSA9IElTX0RVQUxfRFNJKCk7CiAJaW50IHJldDsKIAogCURCRygiaWQ9JWQiLCBpZCk7 Ci0JaWYgKCFtc21fZHNpX2RldmljZV9jb25uZWN0ZWQobXNtX2RzaSkgfHwKLQkJCShpc19kdWFs X2RzaSAmJiAoRFNJXzEgPT0gaWQpKSkKKwlpZiAoIW1zbV9kc2lfZGV2aWNlX2Nvbm5lY3RlZCht c21fZHNpKSkKIAkJcmV0dXJuOwogCi0JcmV0ID0gbXNtX2RzaV9ob3N0X3Bvd2VyX29uKGhvc3Qp OworCXJldCA9IGRzaV9tZ3JfcGh5X2VuYWJsZShpZCwgcGh5X3NoYXJlZF90aW1pbmdzKTsKKwlp ZiAocmV0KQorCQlnb3RvIHBoeV9lbl9mYWlsOworCisJLyogRG8gbm90aGluZyB3aXRoIHRoZSBo b3N0IGlmIGl0IGlzIERTSSAxIGluIGNhc2Ugb2YgZHVhbCBEU0kgKi8KKwlpZiAoaXNfZHVhbF9k c2kgJiYgKERTSV8xID09IGlkKSkKKwkJcmV0dXJuOworCisJcmV0ID0gbXNtX2RzaV9ob3N0X3Bv d2VyX29uKGhvc3QsICZwaHlfc2hhcmVkX3RpbWluZ3NbaWRdKTsKIAlpZiAocmV0KSB7CiAJCXBy X2VycigiJXM6IHBvd2VyIG9uIGhvc3QgJWQgZmFpbGVkLCAlZFxuIiwgX19mdW5jX18sIGlkLCBy ZXQpOwogCQlnb3RvIGhvc3Rfb25fZmFpbDsKIAl9CiAKIAlpZiAoaXNfZHVhbF9kc2kgJiYgbXNt X2RzaTEpIHsKLQkJcmV0ID0gbXNtX2RzaV9ob3N0X3Bvd2VyX29uKG1zbV9kc2kxLT5ob3N0KTsK KwkJcmV0ID0gbXNtX2RzaV9ob3N0X3Bvd2VyX29uKG1zbV9kc2kxLT5ob3N0LAorCQkJCQkgICAg JnBoeV9zaGFyZWRfdGltaW5nc1tEU0lfMV0pOwogCQlpZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVz OiBwb3dlciBvbiBob3N0MSBmYWlsZWQsICVkXG4iLAogCQkJCQkJCV9fZnVuY19fLCByZXQpOwpA QCAtNDI0LDYgKzUxMSw4IEBAIHN0YXRpYyB2b2lkIGRzaV9tZ3JfYnJpZGdlX3ByZV9lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIGhvc3QxX29uX2ZhaWw6CiAJbXNtX2RzaV9ob3N0 X3Bvd2VyX29mZihob3N0KTsKIGhvc3Rfb25fZmFpbDoKKwlkc2lfbWdyX3BoeV9kaXNhYmxlKGlk KTsKK3BoeV9lbl9mYWlsOgogCXJldHVybjsKIH0KIApAQCAtNDQ5LDEwICs1MzgsMTcgQEAgc3Rh dGljIHZvaWQgZHNpX21ncl9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpCiAKIAlEQkcoImlkPSVkIiwgaWQpOwogCi0JaWYgKCFtc21fZHNpX2RldmljZV9jb25u ZWN0ZWQobXNtX2RzaSkgfHwKLQkJCShpc19kdWFsX2RzaSAmJiAoRFNJXzEgPT0gaWQpKSkKKwlp ZiAoIW1zbV9kc2lfZGV2aWNlX2Nvbm5lY3RlZChtc21fZHNpKSkKIAkJcmV0dXJuOwogCisJLyoK KwkgKiBEbyBub3RoaW5nIHdpdGggdGhlIGhvc3QgaWYgaXQgaXMgRFNJIDEgaW4gY2FzZSBvZiBk dWFsIERTSS4KKwkgKiBJdCBpcyBzYWZlIHRvIGNhbGwgZHNpX21ncl9waHlfZGlzYWJsZSgpIGhl cmUgYmVjYXVzZSBhIHNpbmdsZSBQSFkKKwkgKiB3b24ndCBiZSBkaWFibGVkIHVudGlsIGJvdGgg UEhZcyByZXF1ZXN0IGRpc2FibGUuCisJICovCisJaWYgKGlzX2R1YWxfZHNpICYmIChEU0lfMSA9 PSBpZCkpCisJCWdvdG8gZGlzYWJsZV9waHk7CisKIAlpZiAocGFuZWwpIHsKIAkJcmV0ID0gZHJt X3BhbmVsX2Rpc2FibGUocGFuZWwpOwogCQlpZiAocmV0KQpAQCAtNDg3LDYgKzU4Myw5IEBAIHN0 YXRpYyB2b2lkIGRzaV9tZ3JfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKQogCQkJcHJfZXJyKCIlczogaG9zdDEgcG93ZXIgb2ZmIGZhaWxlZCwgJWRcbiIsCiAJ CQkJCQkJCV9fZnVuY19fLCByZXQpOwogCX0KKworZGlzYWJsZV9waHk6CisJZHNpX21ncl9waHlf ZGlzYWJsZShpZCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRzaV9tZ3JfYnJpZGdlX21vZGVfc2V0KHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCkBAIC02NTUsNzMgKzc1NCw2IEBAIHZvaWQgbXNtX2Rz aV9tYW5hZ2VyX2JyaWRnZV9kZXN0cm95KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCiB7CiB9 CiAKLWludCBtc21fZHNpX21hbmFnZXJfcGh5X2VuYWJsZShpbnQgaWQsCi0JCWNvbnN0IHVuc2ln bmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3JhdGUsCi0JCXN0cnVj dCBtc21fZHNpX3BoeV9zaGFyZWRfdGltaW5ncyAqc2hhcmVkX3RpbWluZ3MpCi17Ci0Jc3RydWN0 IG1zbV9kc2kgKm1zbV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQpOwotCXN0cnVjdCBtc21fZHNp ICptZHNpID0gZHNpX21ncl9nZXRfZHNpKERTSV9DTE9DS19NQVNURVIpOwotCXN0cnVjdCBtc21f ZHNpICpzZHNpID0gZHNpX21ncl9nZXRfZHNpKERTSV9DTE9DS19TTEFWRSk7Ci0Jc3RydWN0IG1z bV9kc2lfcGh5ICpwaHkgPSBtc21fZHNpLT5waHk7Ci0JaW50IHNyY19wbGxfaWQgPSBJU19EVUFM X0RTSSgpID8gRFNJX0NMT0NLX01BU1RFUiA6IGlkOwotCWludCByZXQ7Ci0KLQkvKiBJbiBjYXNl IG9mIGR1YWwgRFNJLCBzb21lIHJlZ2lzdGVycyBpbiBQSFkxIGhhdmUgYmVlbiBwcm9ncmFtbWVk Ci0JICogZHVyaW5nIFBMTDAgY2xvY2sncyBzZXRfcmF0ZS4gVGhlIFBIWTEgcmVzZXQgY2FsbGVk IGJ5IGhvc3QxIGhlcmUKLQkgKiB3aWxsIHNpbGVudGx5IHJlc2V0IHRob3NlIFBIWTEgcmVnaXN0 ZXJzLiBUaGVyZWZvcmUgd2UgbmVlZCB0byByZXNldAotCSAqIGFuZCBlbmFibGUgYm90aCBQSFlz IGJlZm9yZSBhbnkgUExMIGNsb2NrIG9wZXJhdGlvbi4KLQkgKi8KLQlpZiAoSVNfRFVBTF9EU0ko KSAmJiBtZHNpICYmIHNkc2kpIHsKLQkJaWYgKCFtZHNpLT5waHlfZW5hYmxlZCAmJiAhc2RzaS0+ cGh5X2VuYWJsZWQpIHsKLQkJCW1zbV9kc2lfaG9zdF9yZXNldF9waHkobWRzaS0+aG9zdCk7Ci0J CQltc21fZHNpX2hvc3RfcmVzZXRfcGh5KHNkc2ktPmhvc3QpOwotCQkJcmV0ID0gbXNtX2RzaV9w aHlfZW5hYmxlKG1kc2ktPnBoeSwgc3JjX3BsbF9pZCwKLQkJCQkJCSBiaXRfcmF0ZSwgZXNjX3Jh dGUpOwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQkJcmV0ID0gbXNtX2RzaV9waHlf ZW5hYmxlKHNkc2ktPnBoeSwgc3JjX3BsbF9pZCwKLQkJCQkJCSBiaXRfcmF0ZSwgZXNjX3JhdGUp OwotCQkJaWYgKHJldCkgewotCQkJCW1zbV9kc2lfcGh5X2Rpc2FibGUobWRzaS0+cGh5KTsKLQkJ CQlyZXR1cm4gcmV0OwotCQkJfQotCQl9Ci0JfSBlbHNlIHsKLQkJbXNtX2RzaV9ob3N0X3Jlc2V0 X3BoeShtc21fZHNpLT5ob3N0KTsKLQkJcmV0ID0gbXNtX2RzaV9waHlfZW5hYmxlKG1zbV9kc2kt PnBoeSwgc3JjX3BsbF9pZCwgYml0X3JhdGUsCi0JCQkJCQkJCWVzY19yYXRlKTsKLQkJaWYgKHJl dCkKLQkJCXJldHVybiByZXQ7Ci0JfQotCi0JbXNtX2RzaS0+cGh5X2VuYWJsZWQgPSB0cnVlOwot CW1zbV9kc2lfcGh5X2dldF9zaGFyZWRfdGltaW5ncyhwaHksIHNoYXJlZF90aW1pbmdzKTsKLQot CXJldHVybiAwOwotfQotCi12b2lkIG1zbV9kc2lfbWFuYWdlcl9waHlfZGlzYWJsZShpbnQgaWQp Ci17Ci0Jc3RydWN0IG1zbV9kc2kgKm1zbV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQpOwotCXN0 cnVjdCBtc21fZHNpICptZHNpID0gZHNpX21ncl9nZXRfZHNpKERTSV9DTE9DS19NQVNURVIpOwot CXN0cnVjdCBtc21fZHNpICpzZHNpID0gZHNpX21ncl9nZXRfZHNpKERTSV9DTE9DS19TTEFWRSk7 Ci0Jc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkgPSBtc21fZHNpLT5waHk7Ci0KLQkvKiBkaXNhYmxl IERTSSBwaHkKLQkgKiBJbiBkdWFsLWRzaSBjb25maWd1cmF0aW9uLCB0aGUgcGh5IHNob3VsZCBi ZSBkaXNhYmxlZCBmb3IgdGhlCi0JICogZmlyc3QgY29udHJvbGxlciBvbmx5IHdoZW4gdGhlIHNl Y29uZCBjb250cm9sbGVyIGlzIGRpc2FibGVkLgotCSAqLwotCW1zbV9kc2ktPnBoeV9lbmFibGVk ID0gZmFsc2U7Ci0JaWYgKElTX0RVQUxfRFNJKCkgJiYgbWRzaSAmJiBzZHNpKSB7Ci0JCWlmICgh bWRzaS0+cGh5X2VuYWJsZWQgJiYgIXNkc2ktPnBoeV9lbmFibGVkKSB7Ci0JCQltc21fZHNpX3Bo eV9kaXNhYmxlKHNkc2ktPnBoeSk7Ci0JCQltc21fZHNpX3BoeV9kaXNhYmxlKG1kc2ktPnBoeSk7 Ci0JCX0KLQl9IGVsc2UgewotCQltc21fZHNpX3BoeV9kaXNhYmxlKHBoeSk7Ci0JfQotfQotCiBp bnQgbXNtX2RzaV9tYW5hZ2VyX2NtZF94ZmVyKGludCBpZCwgY29uc3Qgc3RydWN0IG1pcGlfZHNp X21zZyAqbXNnKQogewogCXN0cnVjdCBtc21fZHNpICptc21fZHNpID0gZHNpX21ncl9nZXRfZHNp KGlkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5jCmluZGV4IDQyNTAxN2EuLmM5 ZTFhNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHkuYwpAQCAtNTQsOCArNTQs MTAgQEAgc3RhdGljIHZvaWQgZHNpX2RwaHlfdGltaW5nX2NhbGNfY2xrX3plcm8oc3RydWN0IG1z bV9kc2lfZHBoeV90aW1pbmcgKnRpbWluZywKIH0KIAogaW50IG1zbV9kc2lfZHBoeV90aW1pbmdf Y2FsYyhzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nLAotCWNvbnN0IHVuc2lnbmVk IGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3JhdGUpCisJCQkgICAgIHN0 cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSkKIHsKKwljb25zdCB1bnNpZ25l ZCBsb25nIGJpdF9yYXRlID0gY2xrX3JlcS0+Yml0Y2xrX3JhdGU7CisJY29uc3QgdW5zaWduZWQg bG9uZyBlc2NfcmF0ZSA9IGNsa19yZXEtPmVzY2Nsa19yYXRlOwogCXMzMiB1aSwgbHB4OwogCXMz MiB0bWF4LCB0bWluOwogCXMzMiBwY250MCA9IDEwOwpAQCAtNDI5LDcgKzQzMSw3IEBAIHZvaWQg X19leGl0IG1zbV9kc2lfcGh5X2RyaXZlcl91bnJlZ2lzdGVyKHZvaWQpCiB9CiAKIGludCBtc21f ZHNpX3BoeV9lbmFibGUoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksIGludCBzcmNfcGxsX2lkLAot CWNvbnN0IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3Jh dGUpCisJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfY2xrX3JlcXVlc3QgKmNsa19yZXEpCiB7CiAJc3Ry dWN0IGRldmljZSAqZGV2ID0gJnBoeS0+cGRldi0+ZGV2OwogCWludCByZXQ7CkBAIC00MzcsMTgg KzQzOSwyNCBAQCBpbnQgbXNtX2RzaV9waHlfZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5 LCBpbnQgc3JjX3BsbF9pZCwKIAlpZiAoIXBoeSB8fCAhcGh5LT5jZmctPm9wcy5lbmFibGUpCiAJ CXJldHVybiAtRUlOVkFMOwogCisJcmV0ID0gZHNpX3BoeV9lbmFibGVfcmVzb3VyY2UocGh5KTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IHJlc291cmNlIGVuYWJsZSBmYWlsZWQs ICVkXG4iLAorCQkJX19mdW5jX18sIHJldCk7CisJCWdvdG8gcmVzX2VuX2ZhaWw7CisJfQorCiAJ cmV0ID0gZHNpX3BoeV9yZWd1bGF0b3JfZW5hYmxlKHBoeSk7CiAJaWYgKHJldCkgewogCQlkZXZf ZXJyKGRldiwgIiVzOiByZWd1bGF0b3IgZW5hYmxlIGZhaWxlZCwgJWRcbiIsCiAJCQlfX2Z1bmNf XywgcmV0KTsKLQkJcmV0dXJuIHJldDsKKwkJZ290byByZWdfZW5fZmFpbDsKIAl9CiAKLQlyZXQg PSBwaHktPmNmZy0+b3BzLmVuYWJsZShwaHksIHNyY19wbGxfaWQsIGJpdF9yYXRlLCBlc2NfcmF0 ZSk7CisJcmV0ID0gcGh5LT5jZmctPm9wcy5lbmFibGUocGh5LCBzcmNfcGxsX2lkLCBjbGtfcmVx KTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LCAiJXM6IHBoeSBlbmFibGUgZmFpbGVkLCAl ZFxuIiwgX19mdW5jX18sIHJldCk7Ci0JCWRzaV9waHlfcmVndWxhdG9yX2Rpc2FibGUocGh5KTsK LQkJcmV0dXJuIHJldDsKKwkJZ290byBwaHlfZW5fZmFpbDsKIAl9CiAKIAkvKgpAQCAtNDYwLDE0 ICs0NjgsMjIgQEAgaW50IG1zbV9kc2lfcGh5X2VuYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBo eSwgaW50IHNyY19wbGxfaWQsCiAJaWYgKHBoeS0+dXNlY2FzZSAhPSBNU01fRFNJX1BIWV9TTEFW RSkgewogCQlyZXQgPSBtc21fZHNpX3BsbF9yZXN0b3JlX3N0YXRlKHBoeS0+cGxsKTsKIAkJaWYg KHJldCkgewotCQkJcHJfZXJyKCIlczogZmFpbGVkIHRvIHJlc3RvcmUgcGxsIHN0YXRlXG4iLCBf X2Z1bmNfXyk7Ci0JCQlpZiAocGh5LT5jZmctPm9wcy5kaXNhYmxlKQotCQkJCXBoeS0+Y2ZnLT5v cHMuZGlzYWJsZShwaHkpOwotCQkJZHNpX3BoeV9yZWd1bGF0b3JfZGlzYWJsZShwaHkpOwotCQkJ cmV0dXJuIHJldDsKKwkJCWRldl9lcnIoZGV2LCAiJXM6IGZhaWxlZCB0byByZXN0b3JlIHBsbCBz dGF0ZSwgJWRcbiIsCisJCQkJX19mdW5jX18sIHJldCk7CisJCQlnb3RvIHBsbF9yZXN0b3JfZmFp bDsKIAkJfQogCX0KIAorCXJldHVybiAwOworCitwbGxfcmVzdG9yX2ZhaWw6CisJaWYgKHBoeS0+ Y2ZnLT5vcHMuZGlzYWJsZSkKKwkJcGh5LT5jZmctPm9wcy5kaXNhYmxlKHBoeSk7CitwaHlfZW5f ZmFpbDoKKwlkc2lfcGh5X3JlZ3VsYXRvcl9kaXNhYmxlKHBoeSk7CityZWdfZW5fZmFpbDoKKwlk c2lfcGh5X2Rpc2FibGVfcmVzb3VyY2UocGh5KTsKK3Jlc19lbl9mYWlsOgogCXJldHVybiByZXQ7 CiB9CiAKQEAgLTQ4Myw2ICs0OTksNyBAQCB2b2lkIG1zbV9kc2lfcGh5X2Rpc2FibGUoc3RydWN0 IG1zbV9kc2lfcGh5ICpwaHkpCiAJcGh5LT5jZmctPm9wcy5kaXNhYmxlKHBoeSk7CiAKIAlkc2lf cGh5X3JlZ3VsYXRvcl9kaXNhYmxlKHBoeSk7CisJZHNpX3BoeV9kaXNhYmxlX3Jlc291cmNlKHBo eSk7CiB9CiAKIHZvaWQgbXNtX2RzaV9waHlfZ2V0X3NoYXJlZF90aW1pbmdzKHN0cnVjdCBtc21f ZHNpX3BoeSAqcGh5LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2Rz aV9waHkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmgKaW5kZXggZTEw NTc0Mi4uNjQ3MmI2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2Rz aV9waHkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5oCkBAIC0y NCw3ICsyNCw3IEBACiBzdHJ1Y3QgbXNtX2RzaV9waHlfb3BzIHsKIAlpbnQgKCppbml0KSAoc3Ry dWN0IG1zbV9kc2lfcGh5ICpwaHkpOwogCWludCAoKmVuYWJsZSkoc3RydWN0IG1zbV9kc2lfcGh5 ICpwaHksIGludCBzcmNfcGxsX2lkLAotCQljb25zdCB1bnNpZ25lZCBsb25nIGJpdF9yYXRlLCBj b25zdCB1bnNpZ25lZCBsb25nIGVzY19yYXRlKTsKKwkJCXN0cnVjdCBtc21fZHNpX3BoeV9jbGtf cmVxdWVzdCAqY2xrX3JlcSk7CiAJdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBtc21fZHNpX3BoeSAq cGh5KTsKIH07CiAKQEAgLTg4LDcgKzg4LDcgQEAgc3RydWN0IG1zbV9kc2lfcGh5IHsKICAqIFBI WSBpbnRlcm5hbCBmdW5jdGlvbnMKICAqLwogaW50IG1zbV9kc2lfZHBoeV90aW1pbmdfY2FsYyhz dHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nLAotCWNvbnN0IHVuc2lnbmVkIGxvbmcg Yml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3JhdGUpOworCXN0cnVjdCBtc21fZHNp X3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSk7CiB2b2lkIG1zbV9kc2lfcGh5X3NldF9zcmNfcGxs KHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgcGxsX2lkLCB1MzIgcmVnLAogCQkJCXUzMiBi aXRfbWFzayk7CiBpbnQgbXNtX2RzaV9waHlfaW5pdF9jb21tb24oc3RydWN0IG1zbV9kc2lfcGh5 ICpwaHkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlf MjBubS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMjBubS5jCmluZGV4 IGM0YTdiZTUuLjFjYTZjNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3Bo eS9kc2lfcGh5XzIwbm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3Bo eV8yMG5tLmMKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHNpXzIwbm1fcGh5X3JlZ3Vs YXRvcl9jdHJsKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBib29sIGVuYWJsZSkKIH0KIAogc3Rh dGljIGludCBkc2lfMjBubV9waHlfZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQg c3JjX3BsbF9pZCwKLQkJY29uc3QgdW5zaWduZWQgbG9uZyBiaXRfcmF0ZSwgY29uc3QgdW5zaWdu ZWQgbG9uZyBlc2NfcmF0ZSkKKwkJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfY2xrX3JlcXVlc3QgKmNs a19yZXEpCiB7CiAJc3RydWN0IG1zbV9kc2lfZHBoeV90aW1pbmcgKnRpbWluZyA9ICZwaHktPnRp bWluZzsKIAlpbnQgaTsKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIGludCBkc2lfMjBubV9waHlf ZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgc3JjX3BsbF9pZCwKIAogCURCRygi Iik7CiAKLQlpZiAobXNtX2RzaV9kcGh5X3RpbWluZ19jYWxjKHRpbWluZywgYml0X3JhdGUsIGVz Y19yYXRlKSkgeworCWlmIChtc21fZHNpX2RwaHlfdGltaW5nX2NhbGModGltaW5nLCBjbGtfcmVx KSkgewogCQlkZXZfZXJyKCZwaHktPnBkZXYtPmRldiwKIAkJCSIlczogRC1QSFkgdGltaW5nIGNh bGN1bGF0aW9uIGZhaWxlZFxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm0uYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm0uYwppbmRleCBlYTc0MGM1Li40OTcy YjUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8yOG5t LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMjhubS5jCkBAIC02 Nyw3ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIGRzaV8yOG5tX3BoeV9yZWd1bGF0b3JfY3RybChzdHJ1 Y3QgbXNtX2RzaV9waHkgKnBoeSwgYm9vbCBlbmFibGUpCiB9CiAKIHN0YXRpYyBpbnQgZHNpXzI4 bm1fcGh5X2VuYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSwgaW50IHNyY19wbGxfaWQsCi0J CWNvbnN0IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3Jh dGUpCisJCQkJc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKQogewogCXN0 cnVjdCBtc21fZHNpX2RwaHlfdGltaW5nICp0aW1pbmcgPSAmcGh5LT50aW1pbmc7CiAJaW50IGk7 CkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBpbnQgZHNpXzI4bm1fcGh5X2VuYWJsZShzdHJ1Y3Qg bXNtX2RzaV9waHkgKnBoeSwgaW50IHNyY19wbGxfaWQsCiAKIAlEQkcoIiIpOwogCi0JaWYgKG1z bV9kc2lfZHBoeV90aW1pbmdfY2FsYyh0aW1pbmcsIGJpdF9yYXRlLCBlc2NfcmF0ZSkpIHsKKwlp ZiAobXNtX2RzaV9kcGh5X3RpbWluZ19jYWxjKHRpbWluZywgY2xrX3JlcSkpIHsKIAkJZGV2X2Vy cigmcGh5LT5wZGV2LT5kZXYsCiAJCQkiJXM6IEQtUEhZIHRpbWluZyBjYWxjdWxhdGlvbiBmYWls ZWRcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8yOG5tXzg5NjAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2MC5jCmluZGV4IDlhZmYwYmEuLjM5ODAwNDQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2 MC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2MC5j CkBAIC0xMjQsMTQgKzEyNCwxNCBAQCBzdGF0aWMgdm9pZCBkc2lfMjhubV9waHlfbGFuZV9jb25m aWcoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkpCiB9CiAKIHN0YXRpYyBpbnQgZHNpXzI4bm1fcGh5 X2VuYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSwgaW50IHNyY19wbGxfaWQsCi0JCWNvbnN0 IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3JhdGUpCisJ CQkJc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKQogewogCXN0cnVjdCBt c21fZHNpX2RwaHlfdGltaW5nICp0aW1pbmcgPSAmcGh5LT50aW1pbmc7CiAJdm9pZCBfX2lvbWVt ICpiYXNlID0gcGh5LT5iYXNlOwogCiAJREJHKCIiKTsKIAotCWlmIChtc21fZHNpX2RwaHlfdGlt aW5nX2NhbGModGltaW5nLCBiaXRfcmF0ZSwgZXNjX3JhdGUpKSB7CisJaWYgKG1zbV9kc2lfZHBo eV90aW1pbmdfY2FsYyh0aW1pbmcsIGNsa19yZXEpKSB7CiAJCWRldl9lcnIoJnBoeS0+cGRldi0+ ZGV2LAogCQkJIiVzOiBELVBIWSB0aW1pbmcgY2FsY3VsYXRpb24gZmFpbGVkXG4iLCBfX2Z1bmNf Xyk7CiAJCXJldHVybiAtRUlOVkFMOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRo ZSBMaW51eCBGb3VuZGF0aW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK