From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH v4 06/10] drm/imx: Remove encoders' ->prepare callbacks Date: Fri, 8 Jul 2016 17:40:58 +0800 Message-ID: <1467970862-28012-7-git-send-email-gnuiyl@gmail.com> References: <1467970862-28012-1-git-send-email-gnuiyl@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0065.outbound.protection.outlook.com [104.47.36.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2793D6E188 for ; Fri, 8 Jul 2016 09:41:34 +0000 (UTC) In-Reply-To: <1467970862-28012-1-git-send-email-gnuiyl@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Russell King , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org VGhlIG1haW4gdGFzayBvZiBpbXggZW5jb2RlcnMnIC0+cHJlcGFyZSBjYWxsYmFja3MgaXMgdG8g c2V0IGJ1c19mb3JtYXQsCmJ1c19mbGFncywgZGlfdnN5bmNfcGluIGFuZCBkaV9oc3luY19waW4u ICBXZSBtYXkgY3JlYXRlIGEgc3RydWN0dXJlIG5hbWVkCmlteF9lbmNvZGVyIHRvIGNhY2hlIHRo ZW0uICBUaGUgYXRvbWljIGVuY29kZXIgY2FsbGJhY2sgLT5kaXNhYmxlIG1heQpyZXBsYWNlIC0+ cHJlcGFyZSBsYXRlciwgc28gbGV0J3MgcmVtb3ZlIC0+cHJlcGFyZS4KClNpZ25lZC1vZmYtYnk6 IExpdSBZaW5nIDxnbnVpeWxAZ21haWwuY29tPgotLS0KdjMtPnY0OgoqIEZpeCB3cm9uZyBMVkRT IGJ1cyBmb3JtYXQgdHJhbnNsYXRpb24gaXNzdWUgaW4KICBpbXhfbGRiX2Nvbm5lY3Rvcl9nZXRf bW9kZXMoKSBzbyB0aGF0IGJ1cyBmb3JtYXQgY291bGQgYmUgZGV0ZXJtaW5lZAogIGJ5IHBhbmVs IGluc3RlYWQgb2YgZGV2aWNlIHRyZWUuCiAgVGhpcyBpc3N1ZSB3YXMgZm91bmQgYnkgUGhpbGlw cCBaYWJlbC4KCnYyLT52MzoKKiBOZXdseSBpbnRyb2R1Y2VkLgogIFRoZSBsb2dpYyBpcyBwaWNr ZWQgZnJvbSBwYXRjaCAwNy8xMCBpbiB2MiB0byBnZW5lcmF0ZSBhIHNlbGYtY29udGFpbmVkCiAg cGF0Y2guCgogZHJpdmVycy9ncHUvZHJtL2lteC9kd19oZG1pLWlteC5jICAgICAgfCAgMTggKyst LS0KIGRyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMgICAgIHwgIDM5IC0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0uaCAgICAgICAgICB8ICAxOCArKy0tLQog ZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRiLmMgICAgICAgICAgfCAxMTggKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC10dmUuYyAgICAg ICAgICB8ICA1OCArKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNy dGMuYyAgICAgICB8ICAzOCArKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2lteC9wYXJhbGxl bC1kaXNwbGF5LmMgfCAgNTYgKysrKysrKystLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAxNDIg aW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pbXgvZHdfaGRtaS1pbXguYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvZHdfaGRtaS1pbXgu YwppbmRleCBhMjQ2MzFmZC4uNWY2NDY3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lt eC9kd19oZG1pLWlteC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvZHdfaGRtaS1pbXguYwpA QCAtMjIsOSArMjIsMTEgQEAKIAogI2luY2x1ZGUgImlteC1kcm0uaCIKIAorI2RlZmluZSBpbXhf ZW5jX3RvX2lteF9oZG1pKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW14X2hkbWksIGlteF9l bmNvZGVyKQorCiBzdHJ1Y3QgaW14X2hkbWkgewogCXN0cnVjdCBkZXZpY2UgKmRldjsKLQlzdHJ1 Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyIGlteF9lbmNv ZGVyOwogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKIH07CiAKQEAgLTExNyw3ICsxMTksOCBAQCBz dGF0aWMgdm9pZCBkd19oZG1pX2lteF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKIAogc3RhdGljIHZvaWQgZHdfaGRtaV9pbXhfZW5jb2Rlcl9jb21taXQoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewotCXN0cnVjdCBpbXhfaGRtaSAqaGRtaSA9IGNv bnRhaW5lcl9vZihlbmNvZGVyLCBzdHJ1Y3QgaW14X2hkbWksIGVuY29kZXIpOworCXN0cnVjdCBp bXhfZHJtX2VuY29kZXIgKmlteF9lbmNvZGVyID0gZW5jX3RvX2lteF9lbmMoZW5jb2Rlcik7CisJ c3RydWN0IGlteF9oZG1pICpoZG1pID0gaW14X2VuY190b19pbXhfaGRtaShpbXhfZW5jb2Rlcik7 CiAJaW50IG11eCA9IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9wb3J0X2lkKGhkbWktPmRldi0+b2Zf bm9kZSwgZW5jb2Rlcik7CiAKIAlyZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+cmVnbWFwLCBJT01V WENfR1BSMywKQEAgLTEyNSwxNCArMTI4LDggQEAgc3RhdGljIHZvaWQgZHdfaGRtaV9pbXhfZW5j b2Rlcl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQkJICAgbXV4IDw8IElN WDZRX0dQUjNfSERNSV9NVVhfQ1RMX1NISUZUKTsKIH0KIAotc3RhdGljIHZvaWQgZHdfaGRtaV9p bXhfZW5jb2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlpbXhf ZHJtX3NldF9idXNfZm9ybWF0KGVuY29kZXIsIE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQpOwot fQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBkd19oZG1p X2lteF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9kZV9zZXQgICA9IGR3X2hkbWlfaW14 X2VuY29kZXJfbW9kZV9zZXQsCi0JLnByZXBhcmUgICAgPSBkd19oZG1pX2lteF9lbmNvZGVyX3By ZXBhcmUsCiAJLmNvbW1pdCAgICAgPSBkd19oZG1pX2lteF9lbmNvZGVyX2NvbW1pdCwKIAkuZGlz YWJsZSAgICA9IGR3X2hkbWlfaW14X2VuY29kZXJfZGlzYWJsZSwKIH07CkBAIC0yMTUsNyArMjEy LDEwIEBAIHN0YXRpYyBpbnQgZHdfaGRtaV9pbXhfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2UgKm1hc3RlciwKIAltYXRjaCA9IG9mX21hdGNoX25vZGUoZHdfaGRtaV9pbXhf ZHRfaWRzLCBwZGV2LT5kZXYub2Zfbm9kZSk7CiAJcGxhdF9kYXRhID0gbWF0Y2gtPmRhdGE7CiAJ aGRtaS0+ZGV2ID0gJnBkZXYtPmRldjsKLQllbmNvZGVyID0gJmhkbWktPmVuY29kZXI7CisJZW5j b2RlciA9ICZoZG1pLT5pbXhfZW5jb2Rlci5lbmNvZGVyOworCWhkbWktPmlteF9lbmNvZGVyLmJ1 c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0OworCWhkbWktPmlteF9lbmNvZGVy LmRpX2hzeW5jX3BpbiA9IDI7CisJaGRtaS0+aW14X2VuY29kZXIuZGlfdnN5bmNfcGluID0gMzsK IAogCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CiAJaWYgKGlycSA8IDApCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2lteC9pbXgtZHJtLWNvcmUuYwppbmRleCBiNWE1MTczLi5mNmU0NGMyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pbXgvaW14LWRybS1jb3JlLmMKQEAgLTg1LDQ1ICs4NSw2IEBAIHN0YXRpYyBpbnQgaW14X2Ry bV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2ZpbmRfY3J0YyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhkcm0gPSBjcnRjLT5k ZXYtPmRldl9wcml2YXRlOwotCXVuc2lnbmVkIGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NS VEM7IGkrKykKLQkJaWYgKGlteGRybS0+Y3J0Y1tpXSAmJiBpbXhkcm0tPmNydGNbaV0tPmNydGMg PT0gY3J0YykKLQkJCXJldHVybiBpbXhkcm0tPmNydGNbaV07Ci0KLQlyZXR1cm4gTlVMTDsKLX0K LQotaW50IGlteF9kcm1fc2V0X2J1c19jb25maWcoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LCB1MzIgYnVzX2Zvcm1hdCwKLQkJaW50IGhzeW5jX3BpbiwgaW50IHZzeW5jX3BpbiwgdTMyIGJ1 c19mbGFncykKLXsKLQlzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9mdW5jcyAqaGVscGVyOwot CXN0cnVjdCBpbXhfZHJtX2NydGMgKmlteF9jcnRjOwotCi0JaW14X2NydGMgPSBpbXhfZHJtX2Zp bmRfY3J0YyhlbmNvZGVyLT5jcnRjKTsKLQlpZiAoIWlteF9jcnRjKQotCQlyZXR1cm4gLUVJTlZB TDsKLQotCWhlbHBlciA9ICZpbXhfY3J0Yy0+aW14X2RybV9oZWxwZXJfZnVuY3M7Ci0JaWYgKGhl bHBlci0+c2V0X2ludGVyZmFjZV9waXhfZm10KQotCQlyZXR1cm4gaGVscGVyLT5zZXRfaW50ZXJm YWNlX3BpeF9mbXQoZW5jb2Rlci0+Y3J0YywKLQkJCQkJYnVzX2Zvcm1hdCwgaHN5bmNfcGluLCB2 c3luY19waW4sCi0JCQkJCWJ1c19mbGFncyk7Ci0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9M X0dQTChpbXhfZHJtX3NldF9idXNfY29uZmlnKTsKLQotaW50IGlteF9kcm1fc2V0X2J1c19mb3Jt YXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCB1MzIgYnVzX2Zvcm1hdCkKLXsKLQlyZXR1 cm4gaW14X2RybV9zZXRfYnVzX2NvbmZpZyhlbmNvZGVyLCBidXNfZm9ybWF0LCAyLCAzLAotCQkJ CSAgICAgIERSTV9CVVNfRkxBR19ERV9ISUdIIHwKLQkJCQkgICAgICBEUk1fQlVTX0ZMQUdfUElY REFUQV9ORUdFREdFKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGlteF9kcm1fc2V0X2J1c19mb3Jt YXQpOwotCiBpbnQgaW14X2RybV9jcnRjX3ZibGFua19nZXQoc3RydWN0IGlteF9kcm1fY3J0YyAq aW14X2RybV9jcnRjKQogewogCXJldHVybiBkcm1fY3J0Y192YmxhbmtfZ2V0KGlteF9kcm1fY3J0 Yy0+Y3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0uaCBiL2Ry aXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS5oCmluZGV4IDc0MzIwYTEuLjM5Y2VmMTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pbXgvaW14LWRybS5oCkBAIC0xNSwxMiArMTUsMTkgQEAgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZTsKIAogdW5zaWduZWQgaW50IGlteF9kcm1fY3J0Y19pZChzdHJ1Y3QgaW14X2RybV9jcnRjICpj cnRjKTsKIAorc3RydWN0IGlteF9kcm1fZW5jb2RlciB7CisJc3RydWN0IGRybV9lbmNvZGVyCQkJ ZW5jb2RlcjsKKwl1MzIJCQkJCWJ1c19mb3JtYXQ7CisJdTMyCQkJCQlidXNfZmxhZ3M7CisJaW50 CQkJCQlkaV9oc3luY19waW47CisJaW50CQkJCQlkaV92c3luY19waW47Cit9OworCisjZGVmaW5l IGVuY190b19pbXhfZW5jKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW14X2RybV9lbmNvZGVy LCBlbmNvZGVyKQorCiBzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9mdW5jcyB7CiAJaW50ICgq ZW5hYmxlX3ZibGFuaykoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIAl2b2lkICgqZGlzYWJsZV92 YmxhbmspKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci0JaW50ICgqc2V0X2ludGVyZmFjZV9waXhf Zm10KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQl1MzIgYnVzX2Zvcm1hdCwgaW50IGhzeW5j X3BpbiwgaW50IHZzeW5jX3BpbiwKLQkJCXUzMiBidXNfZmxhZ3MpOwogCWNvbnN0IHN0cnVjdCBk cm1fY3J0Y19oZWxwZXJfZnVuY3MgKmNydGNfaGVscGVyX2Z1bmNzOwogCWNvbnN0IHN0cnVjdCBk cm1fY3J0Y19mdW5jcyAqY3J0Y19mdW5jczsKIH07CkBAIC00MiwxMSArNDksNiBAQCB2b2lkIGlt eF9kcm1fbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKIAogc3RydWN0 IGRybV9nZW1fY21hX29iamVjdCAqaW14X2RybV9mYl9nZXRfb2JqKHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiKTsKIAotaW50IGlteF9kcm1fc2V0X2J1c19jb25maWcoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyLCB1MzIgYnVzX2Zvcm1hdCwKLQkJaW50IGhzeW5jX3BpbiwgaW50IHZzeW5j X3BpbiwgdTMyIGJ1c19mbGFncyk7Ci1pbnQgaW14X2RybV9zZXRfYnVzX2Zvcm1hdChzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIsCi0JCXUzMiBidXNfZm9ybWF0KTsKLQogaW50IGlteF9kcm1f ZW5jb2Rlcl9wYXJzZV9vZihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAogCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2Rlciwgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRi LmMKaW5kZXggMTJiZjM2OC4uNmUxMTBiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lt eC9pbXgtbGRiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRiLmMKQEAgLTUxLDE0 ICs1MSwxNSBAQAogI2RlZmluZSBMREJfQkdSRUZfUk1PREVfSU5UCQkoMSA8PCAxNSkKIAogI2Rl ZmluZSBjb25fdG9faW14X2xkYl9jaCh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlteF9sZGJf Y2hhbm5lbCwgY29ubmVjdG9yKQotI2RlZmluZSBlbmNfdG9faW14X2xkYl9jaCh4KSBjb250YWlu ZXJfb2YoeCwgc3RydWN0IGlteF9sZGJfY2hhbm5lbCwgZW5jb2RlcikKKyNkZWZpbmUgaW14X2Vu Y190b19pbXhfbGRiX2NoKHgpCVwKKwkJCWNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW14X2xkYl9j aGFubmVsLCBpbXhfZW5jb2RlcikKIAogc3RydWN0IGlteF9sZGI7CiAKIHN0cnVjdCBpbXhfbGRi X2NoYW5uZWwgewogCXN0cnVjdCBpbXhfbGRiICpsZGI7CiAJc3RydWN0IGRybV9jb25uZWN0b3Ig Y29ubmVjdG9yOwotCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBpbXhfZHJt X2VuY29kZXIgaW14X2VuY29kZXI7CiAJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7CiAJc3RydWN0 IGRldmljZV9ub2RlICpjaGlsZDsKIAlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmRkYzsKQEAgLTY3LDcg KzY4LDYgQEAgc3RydWN0IGlteF9sZGJfY2hhbm5lbCB7CiAJaW50IGVkaWRfbGVuOwogCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlIG1vZGU7CiAJaW50IG1vZGVfdmFsaWQ7Ci0JaW50IGJ1c19mb3Jt YXQ7CiB9OwogCiBzdHJ1Y3QgYnVzX211eCB7CkBAIC05NCw2ICs5NCwzNSBAQCBzdGF0aWMgZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBpbXhfbGRiX2Nvbm5lY3Rvcl9kZXRlY3QoCiAJcmV0dXJu IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwogfQogCitzdGF0aWMgdm9pZCBpbXhfbGRiX2J1 c19mb3JtYXRfdHJhbnNsYXRpb24oc3RydWN0IGlteF9sZGJfY2hhbm5lbCAqaW14X2xkYl9jaCwK KwkJCQkJICAgdTMyIGJ1c19mb3JtYXQpCit7CisJc3RydWN0IGlteF9sZGIgKmxkYiA9IGlteF9s ZGJfY2gtPmxkYjsKKwlpbnQgZHVhbCA9IGxkYi0+bGRiX2N0cmwgJiBMREJfU1BMSVRfTU9ERV9F TjsKKworCXN3aXRjaCAoYnVzX2Zvcm1hdCkgeworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I2NjZf MVg3WDNfU1BXRzoKKwkJaW14X2xkYl9jaC0+aW14X2VuY29kZXIuYnVzX2Zvcm1hdCA9IE1FRElB X0JVU19GTVRfUkdCNjY2XzFYMTg7CisJCWJyZWFrOworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4 ODhfMVg3WDRfU1BXRzoKKwkJaW14X2xkYl9jaC0+aW14X2VuY29kZXIuYnVzX2Zvcm1hdCA9IE1F RElBX0JVU19GTVRfUkdCODg4XzFYMjQ7CisJCWlmIChpbXhfbGRiX2NoLT5jaG5vID09IDAgfHwg ZHVhbCkKKwkJCWxkYi0+bGRiX2N0cmwgfD0gTERCX0RBVEFfV0lEVEhfQ0gwXzI0OworCQlpZiAo aW14X2xkYl9jaC0+Y2hubyA9PSAxIHx8IGR1YWwpCisJCQlsZGItPmxkYl9jdHJsIHw9IExEQl9E QVRBX1dJRFRIX0NIMV8yNDsKKwkJYnJlYWs7CisJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjg4OF8x WDdYNF9KRUlEQToKKwkJaW14X2xkYl9jaC0+aW14X2VuY29kZXIuYnVzX2Zvcm1hdCA9IE1FRElB X0JVU19GTVRfUkdCODg4XzFYMjQ7CisJCWlmIChpbXhfbGRiX2NoLT5jaG5vID09IDAgfHwgZHVh bCkKKwkJCWxkYi0+bGRiX2N0cmwgfD0gTERCX0RBVEFfV0lEVEhfQ0gwXzI0IHwKKwkJCQkJIExE Ql9CSVRfTUFQX0NIMF9KRUlEQTsKKwkJaWYgKGlteF9sZGJfY2gtPmNobm8gPT0gMSB8fCBkdWFs KQorCQkJbGRiLT5sZGJfY3RybCB8PSBMREJfREFUQV9XSURUSF9DSDFfMjQgfAorCQkJCQkgTERC X0JJVF9NQVBfQ0gxX0pFSURBOworCQlicmVhazsKKwl9Cit9CisKIHN0YXRpYyBpbnQgaW14X2xk Yl9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7 CiAJc3RydWN0IGlteF9sZGJfY2hhbm5lbCAqaW14X2xkYl9jaCA9IGNvbl90b19pbXhfbGRiX2No KGNvbm5lY3Rvcik7CkBAIC0xMDQsOCArMTMzLDkgQEAgc3RhdGljIGludCBpbXhfbGRiX2Nvbm5l Y3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAkJc3RydWN0 IGRybV9kaXNwbGF5X2luZm8gKmRpID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwogCiAJCW51 bV9tb2RlcyA9IGlteF9sZGJfY2gtPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVzKGlteF9sZGJfY2gt PnBhbmVsKTsKLQkJaWYgKCFpbXhfbGRiX2NoLT5idXNfZm9ybWF0ICYmIGRpLT5udW1fYnVzX2Zv cm1hdHMpCi0JCQlpbXhfbGRiX2NoLT5idXNfZm9ybWF0ID0gZGktPmJ1c19mb3JtYXRzWzBdOwor CQlpZiAoIWlteF9sZGJfY2gtPmlteF9lbmNvZGVyLmJ1c19mb3JtYXQgJiYgZGktPm51bV9idXNf Zm9ybWF0cykKKwkJCWlteF9sZGJfYnVzX2Zvcm1hdF90cmFuc2xhdGlvbihpbXhfbGRiX2NoLAor CQkJCQkJCWRpLT5idXNfZm9ybWF0c1swXSk7CiAJCWlmIChudW1fbW9kZXMgPiAwKQogCQkJcmV0 dXJuIG51bV9tb2RlczsKIAl9CkBAIC0xMzksNyArMTY5LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1f ZW5jb2RlciAqaW14X2xkYl9jb25uZWN0b3JfYmVzdF9lbmNvZGVyKAogewogCXN0cnVjdCBpbXhf bGRiX2NoYW5uZWwgKmlteF9sZGJfY2ggPSBjb25fdG9faW14X2xkYl9jaChjb25uZWN0b3IpOwog Ci0JcmV0dXJuICZpbXhfbGRiX2NoLT5lbmNvZGVyOworCXJldHVybiAmaW14X2xkYl9jaC0+aW14 X2VuY29kZXIuZW5jb2RlcjsKIH0KIAogc3RhdGljIHZvaWQgaW14X2xkYl9lbmNvZGVyX2RwbXMo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKQEAgLTE3NCw0NSArMjA0LDEw IEBAIHN0YXRpYyB2b2lkIGlteF9sZGJfc2V0X2Nsb2NrKHN0cnVjdCBpbXhfbGRiICpsZGIsIGlu dCBtdXgsIGludCBjaG5vLAogCQkJY2hubyk7CiB9CiAKLXN0YXRpYyB2b2lkIGlteF9sZGJfZW5j b2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3QgaW14 X2xkYl9jaGFubmVsICppbXhfbGRiX2NoID0gZW5jX3RvX2lteF9sZGJfY2goZW5jb2Rlcik7Ci0J c3RydWN0IGlteF9sZGIgKmxkYiA9IGlteF9sZGJfY2gtPmxkYjsKLQlpbnQgZHVhbCA9IGxkYi0+ bGRiX2N0cmwgJiBMREJfU1BMSVRfTU9ERV9FTjsKLQl1MzIgYnVzX2Zvcm1hdDsKLQotCXN3aXRj aCAoaW14X2xkYl9jaC0+YnVzX2Zvcm1hdCkgewotCWRlZmF1bHQ6Ci0JCWRldl93YXJuKGxkYi0+ ZGV2LAotCQkJICJjb3VsZCBub3QgZGV0ZXJtaW5lIGRhdGEgbWFwcGluZywgZGVmYXVsdCB0byAx OC1iaXQgXCJzcHdnXCJcbiIpOwotCQkvKiBmYWxsdGhyb3VnaCAqLwotCWNhc2UgTUVESUFfQlVT X0ZNVF9SR0I2NjZfMVg3WDNfU1BXRzoKLQkJYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdC NjY2XzFYMTg7Ci0JCWJyZWFrOwotCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVg3WDRfU1BX RzoKLQkJYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Ci0JCWlmIChpbXhf bGRiX2NoLT5jaG5vID09IDAgfHwgZHVhbCkKLQkJCWxkYi0+bGRiX2N0cmwgfD0gTERCX0RBVEFf V0lEVEhfQ0gwXzI0OwotCQlpZiAoaW14X2xkYl9jaC0+Y2hubyA9PSAxIHx8IGR1YWwpCi0JCQls ZGItPmxkYl9jdHJsIHw9IExEQl9EQVRBX1dJRFRIX0NIMV8yNDsKLQkJYnJlYWs7Ci0JY2FzZSBN RURJQV9CVVNfRk1UX1JHQjg4OF8xWDdYNF9KRUlEQToKLQkJYnVzX2Zvcm1hdCA9IE1FRElBX0JV U19GTVRfUkdCODg4XzFYMjQ7Ci0JCWlmIChpbXhfbGRiX2NoLT5jaG5vID09IDAgfHwgZHVhbCkK LQkJCWxkYi0+bGRiX2N0cmwgfD0gTERCX0RBVEFfV0lEVEhfQ0gwXzI0IHwKLQkJCQkJIExEQl9C SVRfTUFQX0NIMF9KRUlEQTsKLQkJaWYgKGlteF9sZGJfY2gtPmNobm8gPT0gMSB8fCBkdWFsKQot CQkJbGRiLT5sZGJfY3RybCB8PSBMREJfREFUQV9XSURUSF9DSDFfMjQgfAotCQkJCQkgTERCX0JJ VF9NQVBfQ0gxX0pFSURBOwotCQlicmVhazsKLQl9Ci0KLQlpbXhfZHJtX3NldF9idXNfZm9ybWF0 KGVuY29kZXIsIGJ1c19mb3JtYXQpOwotfQotCiBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJf Y29tbWl0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW14X2xkYl9j aGFubmVsICppbXhfbGRiX2NoID0gZW5jX3RvX2lteF9sZGJfY2goZW5jb2Rlcik7CisJc3RydWN0 IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29kZXIgPSBlbmNfdG9faW14X2VuYyhlbmNvZGVyKTsK KwlzdHJ1Y3QgaW14X2xkYl9jaGFubmVsICppbXhfbGRiX2NoID0gaW14X2VuY190b19pbXhfbGRi X2NoKGlteF9lbmNvZGVyKTsKIAlzdHJ1Y3QgaW14X2xkYiAqbGRiID0gaW14X2xkYl9jaC0+bGRi OwogCWludCBkdWFsID0gbGRiLT5sZGJfY3RybCAmIExEQl9TUExJVF9NT0RFX0VOOwogCWludCBt dXggPSBkcm1fb2ZfZW5jb2Rlcl9hY3RpdmVfcG9ydF9pZChpbXhfbGRiX2NoLT5jaGlsZCwgZW5j b2Rlcik7CkBAIC0yNjAsNyArMjU1LDggQEAgc3RhdGljIHZvaWQgaW14X2xkYl9lbmNvZGVyX21v ZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkJCSBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqb3JpZ19tb2RlLAogCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQog ewotCXN0cnVjdCBpbXhfbGRiX2NoYW5uZWwgKmlteF9sZGJfY2ggPSBlbmNfdG9faW14X2xkYl9j aChlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyICppbXhfZW5jb2RlciA9IGVuY190 b19pbXhfZW5jKGVuY29kZXIpOworCXN0cnVjdCBpbXhfbGRiX2NoYW5uZWwgKmlteF9sZGJfY2gg PSBpbXhfZW5jX3RvX2lteF9sZGJfY2goaW14X2VuY29kZXIpOwogCXN0cnVjdCBpbXhfbGRiICps ZGIgPSBpbXhfbGRiX2NoLT5sZGI7CiAJaW50IGR1YWwgPSBsZGItPmxkYl9jdHJsICYgTERCX1NQ TElUX01PREVfRU47CiAJdW5zaWduZWQgbG9uZyBzZXJpYWxfY2xrOwpAQCAtMzAzLDcgKzI5OSw4 IEBAIHN0YXRpYyB2b2lkIGlteF9sZGJfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCiAKIHN0YXRpYyB2b2lkIGlteF9sZGJfZW5jb2Rlcl9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW14X2xkYl9jaGFubmVsICppbXhf bGRiX2NoID0gZW5jX3RvX2lteF9sZGJfY2goZW5jb2Rlcik7CisJc3RydWN0IGlteF9kcm1fZW5j b2RlciAqaW14X2VuY29kZXIgPSBlbmNfdG9faW14X2VuYyhlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14 X2xkYl9jaGFubmVsICppbXhfbGRiX2NoID0gaW14X2VuY190b19pbXhfbGRiX2NoKGlteF9lbmNv ZGVyKTsKIAlzdHJ1Y3QgaW14X2xkYiAqbGRiID0gaW14X2xkYl9jaC0+bGRiOwogCWludCBtdXgs IHJldDsKIApAQCAtMzc5LDcgKzM3Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29k ZXJfZnVuY3MgaW14X2xkYl9lbmNvZGVyX2Z1bmNzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBpbXhfbGRiX2VuY29kZXJfaGVscGVyX2Z1bmNzID0g ewogCS5kcG1zID0gaW14X2xkYl9lbmNvZGVyX2RwbXMsCi0JLnByZXBhcmUgPSBpbXhfbGRiX2Vu Y29kZXJfcHJlcGFyZSwKIAkuY29tbWl0ID0gaW14X2xkYl9lbmNvZGVyX2NvbW1pdCwKIAkubW9k ZV9zZXQgPSBpbXhfbGRiX2VuY29kZXJfbW9kZV9zZXQsCiAJLmRpc2FibGUgPSBpbXhfbGRiX2Vu Y29kZXJfZGlzYWJsZSwKQEAgLTQwNiw3ICs0MDIsNyBAQCBzdGF0aWMgaW50IGlteF9sZGJfcmVn aXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAlzdHJ1Y3QgaW14X2xkYiAqbGRiID0gaW14 X2xkYl9jaC0+bGRiOwogCWludCByZXQ7CiAKLQlyZXQgPSBpbXhfZHJtX2VuY29kZXJfcGFyc2Vf b2YoZHJtLCAmaW14X2xkYl9jaC0+ZW5jb2RlciwKKwlyZXQgPSBpbXhfZHJtX2VuY29kZXJfcGFy c2Vfb2YoZHJtLCAmaW14X2xkYl9jaC0+aW14X2VuY29kZXIuZW5jb2RlciwKIAkJCQkgICAgICAg aW14X2xkYl9jaC0+Y2hpbGQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC00MjEsMTAg KzQxNywxMCBAQCBzdGF0aWMgaW50IGlteF9sZGJfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRybSwKIAkJCXJldHVybiByZXQ7CiAJfQogCi0JZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmaW14 X2xkYl9jaC0+ZW5jb2RlciwKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZpbXhfbGRiX2NoLT5p bXhfZW5jb2Rlci5lbmNvZGVyLAogCQkJJmlteF9sZGJfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwot CWRybV9lbmNvZGVyX2luaXQoZHJtLCAmaW14X2xkYl9jaC0+ZW5jb2RlciwgJmlteF9sZGJfZW5j b2Rlcl9mdW5jcywKLQkJCSBEUk1fTU9ERV9FTkNPREVSX0xWRFMsIE5VTEwpOworCWRybV9lbmNv ZGVyX2luaXQoZHJtLCAmaW14X2xkYl9jaC0+aW14X2VuY29kZXIuZW5jb2RlciwKKwkJCSAmaW14 X2xkYl9lbmNvZGVyX2Z1bmNzLCBEUk1fTU9ERV9FTkNPREVSX0xWRFMsIE5VTEwpOwogCiAJZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZpbXhfbGRiX2NoLT5jb25uZWN0b3IsCiAJCQkmaW14X2xk Yl9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKQEAgLTQzNSw3ICs0MzEsNyBAQCBzdGF0aWMgaW50 IGlteF9sZGJfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAkJZHJtX3BhbmVsX2F0 dGFjaChpbXhfbGRiX2NoLT5wYW5lbCwgJmlteF9sZGJfY2gtPmNvbm5lY3Rvcik7CiAKIAlkcm1f bW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJmlteF9sZGJfY2gtPmNvbm5lY3RvciwKLQkJ CSZpbXhfbGRiX2NoLT5lbmNvZGVyKTsKKwkJCSZpbXhfbGRiX2NoLT5pbXhfZW5jb2Rlci5lbmNv ZGVyKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTY0LDYgKzU2MCw3IEBAIHN0YXRpYyBpbnQgaW14 X2xkYl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lk ICpkYXRhKQogCQlzdHJ1Y3QgaW14X2xkYl9jaGFubmVsICpjaGFubmVsOwogCQlzdHJ1Y3QgZGV2 aWNlX25vZGUgKmRkY19ub2RlOwogCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVwOworCQlpbnQgYnVz X2Zvcm1hdDsKIAogCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihjaGlsZCwgInJlZyIsICZp KTsKIAkJaWYgKHJldCB8fCBpIDwgMCB8fCBpID4gMSkKQEAgLTYzNiwyMSArNjMzLDI1IEBAIHN0 YXRpYyBpbnQgaW14X2xkYl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAq bWFzdGVyLCB2b2lkICpkYXRhKQogCQkJfQogCQl9CiAKLQkJY2hhbm5lbC0+YnVzX2Zvcm1hdCA9 IG9mX2dldF9idXNfZm9ybWF0KGRldiwgY2hpbGQpOwotCQlpZiAoY2hhbm5lbC0+YnVzX2Zvcm1h dCA9PSAtRUlOVkFMKSB7CisJCWJ1c19mb3JtYXQgPSBvZl9nZXRfYnVzX2Zvcm1hdChkZXYsIGNo aWxkKTsKKwkJaWYgKGJ1c19mb3JtYXQgPT0gLUVJTlZBTCkgewogCQkJLyoKIAkJCSAqIElmIG5v IGJ1cyBmb3JtYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgZGV2aWNlIHRyZWUsCiAJCQkgKiB3ZSBj YW4gc3RpbGwgZ2V0IGl0IGZyb20gdGhlIGNvbm5lY3RlZCBwYW5lbCBsYXRlci4KIAkJCSAqLwog CQkJaWYgKGNoYW5uZWwtPnBhbmVsICYmIGNoYW5uZWwtPnBhbmVsLT5mdW5jcyAmJgogCQkJICAg IGNoYW5uZWwtPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVzKQotCQkJCWNoYW5uZWwtPmJ1c19mb3Jt YXQgPSAwOworCQkJCWJ1c19mb3JtYXQgPSAwOwogCQl9Ci0JCWlmIChjaGFubmVsLT5idXNfZm9y bWF0IDwgMCkgeworCQlpZiAoYnVzX2Zvcm1hdCA8IDApIHsKIAkJCWRldl9lcnIoZGV2LCAiY291 bGQgbm90IGRldGVybWluZSBkYXRhIG1hcHBpbmc6ICVkXG4iLAotCQkJCWNoYW5uZWwtPmJ1c19m b3JtYXQpOwotCQkJcmV0dXJuIGNoYW5uZWwtPmJ1c19mb3JtYXQ7CisJCQkJYnVzX2Zvcm1hdCk7 CisJCQlyZXR1cm4gYnVzX2Zvcm1hdDsKIAkJfQorCQlpbXhfbGRiX2J1c19mb3JtYXRfdHJhbnNs YXRpb24oY2hhbm5lbCwgYnVzX2Zvcm1hdCk7CisKKwkJY2hhbm5lbC0+aW14X2VuY29kZXIuZGlf aHN5bmNfcGluID0gMjsKKwkJY2hhbm5lbC0+aW14X2VuY29kZXIuZGlfdnN5bmNfcGluID0gMzsK IAogCQlyZXQgPSBpbXhfbGRiX3JlZ2lzdGVyKGRybSwgY2hhbm5lbCk7CiAJCWlmIChyZXQpCkBA IC02NzUsNyArNjc2LDggQEAgc3RhdGljIHZvaWQgaW14X2xkYl91bmJpbmQoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAJCQljb250aW51ZTsKIAogCQljaGFubmVs LT5jb25uZWN0b3IuZnVuY3MtPmRlc3Ryb3koJmNoYW5uZWwtPmNvbm5lY3Rvcik7Ci0JCWNoYW5u ZWwtPmVuY29kZXIuZnVuY3MtPmRlc3Ryb3koJmNoYW5uZWwtPmVuY29kZXIpOworCQljaGFubmVs LT5pbXhfZW5jb2Rlci5lbmNvZGVyLmZ1bmNzLT5kZXN0cm95KAorCQkJCQkmY2hhbm5lbC0+aW14 X2VuY29kZXIuZW5jb2Rlcik7CiAKIAkJa2ZyZWUoY2hhbm5lbC0+ZWRpZCk7CiAJCWkyY19wdXRf YWRhcHRlcihjaGFubmVsLT5kZGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9p bXgtdHZlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC10dmUuYwppbmRleCAwYjBhZWVlLi44 MmExZWRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC10dmUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaW14L2lteC10dmUuYwpAQCAtOTksNyArOTksNyBAQAogI2RlZmluZSBU VkVfVFZEQUNfVEVTVF9NT0RFX01BU0sJKDB4NyA8PCAwKQogCiAjZGVmaW5lIGNvbl90b190dmUo eCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbXhfdHZlLCBjb25uZWN0b3IpCi0jZGVmaW5lIGVu Y190b190dmUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbXhfdHZlLCBlbmNvZGVyKQorI2Rl ZmluZSBpbXhfZW5jX3RvX3R2ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlteF90dmUsIGlt eF9lbmNvZGVyKQogCiBlbnVtIHsKIAlUVkVfTU9ERV9UVk9VVCwKQEAgLTEwOCw3ICsxMDgsNyBA QCBlbnVtIHsKIAogc3RydWN0IGlteF90dmUgewogCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5l Y3RvcjsKLQlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgaW14X2RybV9lbmNv ZGVyIGlteF9lbmNvZGVyOwogCXN0cnVjdCBkZXZpY2UgKmRldjsKIAlzcGlubG9ja190IGxvY2s7 CS8qIHJlZ2lzdGVyIGxvY2sgKi8KIAlib29sIGVuYWJsZWQ7CkBAIC0xMjEsOCArMTIxLDYgQEAg c3RydWN0IGlteF90dmUgewogCXN0cnVjdCBjbGsgKmRpX3NlbF9jbGs7CiAJc3RydWN0IGNsa19o dyBjbGtfaHdfZGk7CiAJc3RydWN0IGNsayAqZGlfY2xrOwotCWludCB2c3luY19waW47Ci0JaW50 IGhzeW5jX3BpbjsKIH07CiAKIHN0YXRpYyB2b2lkIHR2ZV9sb2NrKHZvaWQgKl9fdHZlKQpAQCAt MjczLDEyICsyNzEsMTMgQEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqaW14X3R2ZV9jb25u ZWN0b3JfYmVzdF9lbmNvZGVyKAogewogCXN0cnVjdCBpbXhfdHZlICp0dmUgPSBjb25fdG9fdHZl KGNvbm5lY3Rvcik7CiAKLQlyZXR1cm4gJnR2ZS0+ZW5jb2RlcjsKKwlyZXR1cm4gJnR2ZS0+aW14 X2VuY29kZXIuZW5jb2RlcjsKIH0KIAogc3RhdGljIHZvaWQgaW14X3R2ZV9lbmNvZGVyX2RwbXMo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKIHsKLQlzdHJ1Y3QgaW14X3R2 ZSAqdHZlID0gZW5jX3RvX3R2ZShlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyICpp bXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOworCXN0cnVjdCBpbXhfdHZlICp0 dmUgPSBpbXhfZW5jX3RvX3R2ZShpbXhfZW5jb2Rlcik7CiAJaW50IHJldDsKIAogCXJldCA9IHJl Z21hcF91cGRhdGVfYml0cyh0dmUtPnJlZ21hcCwgVFZFX0NPTV9DT05GX1JFRywKQEAgLTI4Nywz MCArMjg2LDEyIEBAIHN0YXRpYyB2b2lkIGlteF90dmVfZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCiAJCWRldl9lcnIodHZlLT5kZXYsICJmYWlsZWQg dG8gZGlzYWJsZSBUVk9VVDogJWRcbiIsIHJldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGlteF90dmVf ZW5jb2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3Qg aW14X3R2ZSAqdHZlID0gZW5jX3RvX3R2ZShlbmNvZGVyKTsKLQotCXR2ZV9kaXNhYmxlKHR2ZSk7 Ci0KLQlzd2l0Y2ggKHR2ZS0+bW9kZSkgewotCWNhc2UgVFZFX01PREVfVkdBOgotCQlpbXhfZHJt X3NldF9idXNfY29uZmlnKGVuY29kZXIsIE1FRElBX0JVU19GTVRfR0JSODg4XzFYMjQsCi0JCQkJ ICAgICAgIHR2ZS0+aHN5bmNfcGluLCB0dmUtPnZzeW5jX3BpbiwKLQkJCQkgICAgICAgRFJNX0JV U19GTEFHX0RFX0hJR0ggfAotCQkJCSAgICAgICBEUk1fQlVTX0ZMQUdfUElYREFUQV9ORUdFREdF KTsKLQkJYnJlYWs7Ci0JY2FzZSBUVkVfTU9ERV9UVk9VVDoKLQkJaW14X2RybV9zZXRfYnVzX2Zv cm1hdChlbmNvZGVyLCBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNCk7Ci0JCWJyZWFrOwotCX0KLX0K LQogc3RhdGljIHZvaWQgaW14X3R2ZV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKIAkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpvcmlnX21vZGUs CiAJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKIHsKLQlzdHJ1Y3QgaW14 X3R2ZSAqdHZlID0gZW5jX3RvX3R2ZShlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVy ICppbXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOworCXN0cnVjdCBpbXhfdHZl ICp0dmUgPSBpbXhfZW5jX3RvX3R2ZShpbXhfZW5jb2Rlcik7CiAJdW5zaWduZWQgbG9uZyByb3Vu ZGVkX3JhdGU7CiAJdW5zaWduZWQgbG9uZyByYXRlOwogCWludCBkaXYgPSAxOwpAQCAtMzQ0LDE0 ICszMjUsMTYgQEAgc3RhdGljIHZvaWQgaW14X3R2ZV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKIAogc3RhdGljIHZvaWQgaW14X3R2ZV9lbmNvZGVyX2NvbW1p dChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF90dmUgKnR2ZSA9 IGVuY190b190dmUoZW5jb2Rlcik7CisJc3RydWN0IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29k ZXIgPSBlbmNfdG9faW14X2VuYyhlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X3R2ZSAqdHZlID0gaW14 X2VuY190b190dmUoaW14X2VuY29kZXIpOwogCiAJdHZlX2VuYWJsZSh0dmUpOwogfQogCiBzdGF0 aWMgdm9pZCBpbXhfdHZlX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCiB7Ci0Jc3RydWN0IGlteF90dmUgKnR2ZSA9IGVuY190b190dmUoZW5jb2Rlcik7CisJc3Ry dWN0IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29kZXIgPSBlbmNfdG9faW14X2VuYyhlbmNvZGVy KTsKKwlzdHJ1Y3QgaW14X3R2ZSAqdHZlID0gaW14X2VuY190b190dmUoaW14X2VuY29kZXIpOwog CiAJdHZlX2Rpc2FibGUodHZlKTsKIH0KQEAgLTM3OCw3ICszNjEsNiBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGlteF90dmVfZW5jb2Rlcl9mdW5jcyA9IHsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgaW14X3R2ZV9lbmNvZGVy X2hlbHBlcl9mdW5jcyA9IHsKIAkuZHBtcyA9IGlteF90dmVfZW5jb2Rlcl9kcG1zLAotCS5wcmVw YXJlID0gaW14X3R2ZV9lbmNvZGVyX3ByZXBhcmUsCiAJLm1vZGVfc2V0ID0gaW14X3R2ZV9lbmNv ZGVyX21vZGVfc2V0LAogCS5jb21taXQgPSBpbXhfdHZlX2VuY29kZXJfY29tbWl0LAogCS5kaXNh YmxlID0gaW14X3R2ZV9lbmNvZGVyX2Rpc2FibGUsCkBAIC00OTksMTMgKzQ4MSwxNCBAQCBzdGF0 aWMgaW50IGlteF90dmVfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IGlt eF90dmUgKnR2ZSkKIAllbmNvZGVyX3R5cGUgPSB0dmUtPm1vZGUgPT0gVFZFX01PREVfVkdBID8K IAkJCQlEUk1fTU9ERV9FTkNPREVSX0RBQyA6IERSTV9NT0RFX0VOQ09ERVJfVFZEQUM7CiAKLQly ZXQgPSBpbXhfZHJtX2VuY29kZXJfcGFyc2Vfb2YoZHJtLCAmdHZlLT5lbmNvZGVyLAorCXJldCA9 IGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZihkcm0sICZ0dmUtPmlteF9lbmNvZGVyLmVuY29kZXIs CiAJCQkJICAgICAgIHR2ZS0+ZGV2LT5vZl9ub2RlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmdHZlLT5lbmNvZGVyLCAmaW14X3R2ZV9lbmNv ZGVyX2hlbHBlcl9mdW5jcyk7Ci0JZHJtX2VuY29kZXJfaW5pdChkcm0sICZ0dmUtPmVuY29kZXIs ICZpbXhfdHZlX2VuY29kZXJfZnVuY3MsCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmdHZlLT5p bXhfZW5jb2Rlci5lbmNvZGVyLAorCQkJICAgICAgICZpbXhfdHZlX2VuY29kZXJfaGVscGVyX2Z1 bmNzKTsKKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJnR2ZS0+aW14X2VuY29kZXIuZW5jb2Rlciwg JmlteF90dmVfZW5jb2Rlcl9mdW5jcywKIAkJCSBlbmNvZGVyX3R5cGUsIE5VTEwpOwogCiAJZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZ0dmUtPmNvbm5lY3RvciwKQEAgLTUxMyw3ICs0OTYsOCBA QCBzdGF0aWMgaW50IGlteF90dmVfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3Ry dWN0IGlteF90dmUgKnR2ZSkKIAlkcm1fY29ubmVjdG9yX2luaXQoZHJtLCAmdHZlLT5jb25uZWN0 b3IsICZpbXhfdHZlX2Nvbm5lY3Rvcl9mdW5jcywKIAkJCSAgIERSTV9NT0RFX0NPTk5FQ1RPUl9W R0EpOwogCi0JZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZ0dmUtPmNvbm5lY3Rv ciwgJnR2ZS0+ZW5jb2Rlcik7CisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZ0 dmUtPmNvbm5lY3RvciwKKwkJCQkJICAmdHZlLT5pbXhfZW5jb2Rlci5lbmNvZGVyKTsKIAogCXJl dHVybiAwOwogfQpAQCAtNTkxLDcgKzU3NSw3IEBAIHN0YXRpYyBpbnQgaW14X3R2ZV9iaW5kKHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCiAJ aWYgKHR2ZS0+bW9kZSA9PSBUVkVfTU9ERV9WR0EpIHsKIAkJcmV0ID0gb2ZfcHJvcGVydHlfcmVh ZF91MzIobnAsICJmc2wsaHN5bmMtcGluIiwKLQkJCQkJICAgJnR2ZS0+aHN5bmNfcGluKTsKKwkJ CQkJICAgJnR2ZS0+aW14X2VuY29kZXIuZGlfaHN5bmNfcGluKTsKIAogCQlpZiAocmV0IDwgMCkg ewogCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHZzeW5jIHBpblxuIik7CkBAIC01OTks MTIgKzU4MywxNCBAQCBzdGF0aWMgaW50IGlteF90dmVfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAkJfQogCiAJCXJldCB8PSBvZl9w cm9wZXJ0eV9yZWFkX3UzMihucCwgImZzbCx2c3luYy1waW4iLAotCQkJCQkgICAgJnR2ZS0+dnN5 bmNfcGluKTsKKwkJCQkJICAgICZ0dmUtPmlteF9lbmNvZGVyLmRpX3ZzeW5jX3Bpbik7CiAKIAkJ aWYgKHJldCA8IDApIHsKIAkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCB2c3luYyBwaW5c biIpOwogCQkJcmV0dXJuIHJldDsKIAkJfQorCisJCXR2ZS0+aW14X2VuY29kZXIuYnVzX2Zvcm1h dCA9IE1FRElBX0JVU19GTVRfR0JSODg4XzFYMjQ7CiAJfQogCiAJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKQEAgLTY5Myw3ICs2NzksNyBAQCBz dGF0aWMgdm9pZCBpbXhfdHZlX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3RlciwKIAlzdHJ1Y3QgaW14X3R2ZSAqdHZlID0gZGV2X2dldF9kcnZkYXRhKGRldik7 CiAKIAl0dmUtPmNvbm5lY3Rvci5mdW5jcy0+ZGVzdHJveSgmdHZlLT5jb25uZWN0b3IpOwotCXR2 ZS0+ZW5jb2Rlci5mdW5jcy0+ZGVzdHJveSgmdHZlLT5lbmNvZGVyKTsKKwl0dmUtPmlteF9lbmNv ZGVyLmVuY29kZXIuZnVuY3MtPmRlc3Ryb3koJnR2ZS0+aW14X2VuY29kZXIuZW5jb2Rlcik7CiAK IAlpZiAoIUlTX0VSUih0dmUtPmRhY19yZWcpKQogCQlyZWd1bGF0b3JfZGlzYWJsZSh0dmUtPmRh Y19yZWcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1jcnRjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYwppbmRleCA3ZGY1MWU4Li5mOWQ1ZDdjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYwpAQCAtNjcsMTAgKzY3LDYgQEAgc3RydWN0IGlwdV9j cnRjIHsKIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqZmxpcF9xdWV1ZTsKIAlzdHJ1Y3QgaXB1 X2ZsaXBfd29yawkqZmxpcF93b3JrOwogCWludAkJCWlycTsKLQl1MzIJCQlidXNfZm9ybWF0Owot CXUzMgkJCWJ1c19mbGFnczsKLQlpbnQJCQlkaV9oc3luY19waW47Ci0JaW50CQkJZGlfdnN5bmNf cGluOwogfTsKIAogI2RlZmluZSB0b19pcHVfY3J0Yyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0 IGlwdV9jcnRjLCBiYXNlKQpAQCAtMzIxLDYgKzMxNyw3IEBAIHN0YXRpYyB2b2lkIGlwdV9jcnRj X21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0 cnVjdCBpbXhfZHJtX2VuY29kZXIgKmlteF9lbmNvZGVyID0gTlVMTDsKIAlzdHJ1Y3QgaXB1X2Ny dGMgKmlwdV9jcnRjID0gdG9faXB1X2NydGMoY3J0Yyk7CiAJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7CiAJc3RydWN0IGlwdV9kaV9z aWduYWxfY2ZnIHNpZ19jZmcgPSB7fTsKQEAgLTMzMSw5ICszMjgsMTIgQEAgc3RhdGljIHZvaWQg aXB1X2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJZGV2X2RiZyhp cHVfY3J0Yy0+ZGV2LCAiJXM6IG1vZGUtPnZkaXNwbGF5OiAlZFxuIiwgX19mdW5jX18sCiAJCQlt b2RlLT52ZGlzcGxheSk7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1v ZGVfY29uZmlnLmVuY29kZXJfbGlzdCwgaGVhZCkKLQkJaWYgKGVuY29kZXItPmNydGMgPT0gY3J0 YykKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVuY29k ZXJfbGlzdCwgaGVhZCkgeworCQlpZiAoZW5jb2Rlci0+Y3J0YyA9PSBjcnRjKSB7CiAJCQllbmNv ZGVyX3R5cGVzIHw9IEJJVChlbmNvZGVyLT5lbmNvZGVyX3R5cGUpOworCQkJaW14X2VuY29kZXIg PSBlbmNfdG9faW14X2VuYyhlbmNvZGVyKTsKKwkJfQorCX0KIAogCWRldl9kYmcoaXB1X2NydGMt PmRldiwgIiVzOiBhdHRhY2hlZCB0byBlbmNvZGVyIHR5cGVzIDB4JWx4XG4iLAogCQlfX2Z1bmNf XywgZW5jb2Rlcl90eXBlcyk7CkBAIC0zNTEsMjAgKzM1MSwyMCBAQCBzdGF0aWMgdm9pZCBpcHVf Y3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAllbHNlCiAJCXNpZ19j ZmcuY2xrZmxhZ3MgPSAwOwogCi0Jc2lnX2NmZy5lbmFibGVfcG9sID0gIShpcHVfY3J0Yy0+YnVz X2ZsYWdzICYgRFJNX0JVU19GTEFHX0RFX0xPVyk7CisJc2lnX2NmZy5lbmFibGVfcG9sID0gIShp bXhfZW5jb2Rlci0+YnVzX2ZsYWdzICYgRFJNX0JVU19GTEFHX0RFX0xPVyk7CiAJLyogRGVmYXVs dCB0byBkcml2aW5nIHBpeGVsIGRhdGEgb24gbmVnYXRpdmUgY2xvY2sgZWRnZXMgKi8KLQlzaWdf Y2ZnLmNsa19wb2wgPSAhIShpcHVfY3J0Yy0+YnVzX2ZsYWdzICYKKwlzaWdfY2ZnLmNsa19wb2wg PSAhIShpbXhfZW5jb2Rlci0+YnVzX2ZsYWdzICYKIAkJCSAgICAgRFJNX0JVU19GTEFHX1BJWERB VEFfUE9TRURHRSk7Ci0Jc2lnX2NmZy5idXNfZm9ybWF0ID0gaXB1X2NydGMtPmJ1c19mb3JtYXQ7 CisJc2lnX2NmZy5idXNfZm9ybWF0ID0gaW14X2VuY29kZXItPmJ1c19mb3JtYXQ7CiAJc2lnX2Nm Zy52X3RvX2hfc3luYyA9IDA7Ci0Jc2lnX2NmZy5oc3luY19waW4gPSBpcHVfY3J0Yy0+ZGlfaHN5 bmNfcGluOwotCXNpZ19jZmcudnN5bmNfcGluID0gaXB1X2NydGMtPmRpX3ZzeW5jX3BpbjsKKwlz aWdfY2ZnLmhzeW5jX3BpbiA9IGlteF9lbmNvZGVyLT5kaV9oc3luY19waW47CisJc2lnX2NmZy52 c3luY19waW4gPSBpbXhfZW5jb2Rlci0+ZGlfdnN5bmNfcGluOwogCiAJZHJtX2Rpc3BsYXlfbW9k ZV90b192aWRlb21vZGUobW9kZSwgJnNpZ19jZmcubW9kZSk7CiAKIAlpcHVfZGNfaW5pdF9zeW5j KGlwdV9jcnRjLT5kYywgaXB1X2NydGMtPmRpLAogCQkJIG1vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19JTlRFUkxBQ0UsCi0JCQkgaXB1X2NydGMtPmJ1c19mb3JtYXQsIG1vZGUtPmhkaXNwbGF5 KTsKKwkJCSBpbXhfZW5jb2Rlci0+YnVzX2Zvcm1hdCwgbW9kZS0+aGRpc3BsYXkpOwogCWlwdV9k aV9pbml0X3N5bmNfcGFuZWwoaXB1X2NydGMtPmRpLCAmc2lnX2NmZyk7CiB9CiAKQEAgLTQwMiwy MyArNDAyLDkgQEAgc3RhdGljIHZvaWQgaXB1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAlkaXNhYmxlX2lycV9ub3N5bmMoaXB1X2NydGMtPmlycSk7CiB9CiAKLXN0YXRp YyBpbnQgaXB1X3NldF9pbnRlcmZhY2VfcGl4X2ZtdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0J CXUzMiBidXNfZm9ybWF0LCBpbnQgaHN5bmNfcGluLCBpbnQgdnN5bmNfcGluLCB1MzIgYnVzX2Zs YWdzKQotewotCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsK LQotCWlwdV9jcnRjLT5idXNfZm9ybWF0ID0gYnVzX2Zvcm1hdDsKLQlpcHVfY3J0Yy0+YnVzX2Zs YWdzID0gYnVzX2ZsYWdzOwotCWlwdV9jcnRjLT5kaV9oc3luY19waW4gPSBoc3luY19waW47Ci0J aXB1X2NydGMtPmRpX3ZzeW5jX3BpbiA9IHZzeW5jX3BpbjsKLQotCXJldHVybiAwOwotfQotCiBz dGF0aWMgY29uc3Qgc3RydWN0IGlteF9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgaXB1X2NydGNfaGVs cGVyX2Z1bmNzID0gewogCS5lbmFibGVfdmJsYW5rID0gaXB1X2VuYWJsZV92YmxhbmssCiAJLmRp c2FibGVfdmJsYW5rID0gaXB1X2Rpc2FibGVfdmJsYW5rLAotCS5zZXRfaW50ZXJmYWNlX3BpeF9m bXQgPSBpcHVfc2V0X2ludGVyZmFjZV9waXhfZm10LAogCS5jcnRjX2Z1bmNzID0gJmlwdV9jcnRj X2Z1bmNzLAogCS5jcnRjX2hlbHBlcl9mdW5jcyA9ICZpcHVfaGVscGVyX2Z1bmNzLAogfTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvcGFyYWxsZWwtZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5LmMKaW5kZXggOWZlODhjOS4uNzM3NGQ4MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5LmMKQEAgLTI3LDE1ICsyNywxNSBA QAogI2luY2x1ZGUgImlteC1kcm0uaCIKIAogI2RlZmluZSBjb25fdG9faW14cGQoeCkgY29udGFp bmVyX29mKHgsIHN0cnVjdCBpbXhfcGFyYWxsZWxfZGlzcGxheSwgY29ubmVjdG9yKQotI2RlZmlu ZSBlbmNfdG9faW14cGQoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbXhfcGFyYWxsZWxfZGlz cGxheSwgZW5jb2RlcikKKyNkZWZpbmUgaW14X2VuY190b19pbXhwZCh4KQlcCisJCWNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgaW14X3BhcmFsbGVsX2Rpc3BsYXksIGlteF9lbmNvZGVyKQogCiBzdHJ1 Y3QgaW14X3BhcmFsbGVsX2Rpc3BsYXkgewogCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3Rv cjsKLQlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVy IGlteF9lbmNvZGVyOwogCXN0cnVjdCBkZXZpY2UgKmRldjsKIAl2b2lkICplZGlkOwogCWludCBl ZGlkX2xlbjsKLQl1MzIgYnVzX2Zvcm1hdDsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBtb2Rl OwogCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwogfTsKQEAgLTU3LDggKzU3LDkgQEAgc3RhdGlj IGludCBpbXhfcGRfY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGkgPSAmY29ubmVjdG9yLT5kaXNw bGF5X2luZm87CiAKIAkJbnVtX21vZGVzID0gaW14cGQtPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVz KGlteHBkLT5wYW5lbCk7Ci0JCWlmICghaW14cGQtPmJ1c19mb3JtYXQgJiYgZGktPm51bV9idXNf Zm9ybWF0cykKLQkJCWlteHBkLT5idXNfZm9ybWF0ID0gZGktPmJ1c19mb3JtYXRzWzBdOworCQlp ZiAoIWlteHBkLT5pbXhfZW5jb2Rlci5idXNfZm9ybWF0ICYmIGRpLT5udW1fYnVzX2Zvcm1hdHMp CisJCQlpbXhwZC0+aW14X2VuY29kZXIuYnVzX2Zvcm1hdCA9IGRpLT5idXNfZm9ybWF0c1swXTsK KwkJaW14cGQtPmlteF9lbmNvZGVyLmJ1c19mbGFncyA9IGRpLT5idXNfZmxhZ3M7CiAJCWlmIChu dW1fbW9kZXMgPiAwKQogCQkJcmV0dXJuIG51bV9tb2RlczsKIAl9CkBAIC04OCwxMiArODksMTMg QEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqaW14X3BkX2Nvbm5lY3Rvcl9iZXN0X2VuY29k ZXIoCiB7CiAJc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGNvbl90b19pbXhw ZChjb25uZWN0b3IpOwogCi0JcmV0dXJuICZpbXhwZC0+ZW5jb2RlcjsKKwlyZXR1cm4gJmlteHBk LT5pbXhfZW5jb2Rlci5lbmNvZGVyOwogfQogCiBzdGF0aWMgdm9pZCBpbXhfcGRfZW5jb2Rlcl9k cG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCiB7Ci0Jc3RydWN0IGlt eF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGVuY190b19pbXhwZChlbmNvZGVyKTsKKwlzdHJ1 Y3QgaW14X2RybV9lbmNvZGVyICppbXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIp OworCXN0cnVjdCBpbXhfcGFyYWxsZWxfZGlzcGxheSAqaW14cGQgPSBpbXhfZW5jX3RvX2lteHBk KGlteF9lbmNvZGVyKTsKIAogCWlmIChtb2RlICE9IERSTV9NT0RFX0RQTVNfT04pCiAJCWRybV9w YW5lbF9kaXNhYmxlKGlteHBkLT5wYW5lbCk7CkBAIC0xMDEsMTYgKzEwMywxMCBAQCBzdGF0aWMg dm9pZCBpbXhfcGRfZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50 IG1vZGUpCiAJCWRybV9wYW5lbF9lbmFibGUoaW14cGQtPnBhbmVsKTsKIH0KIAotc3RhdGljIHZv aWQgaW14X3BkX2VuY29kZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17 Ci0Jc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGVuY190b19pbXhwZChlbmNv ZGVyKTsKLQlpbXhfZHJtX3NldF9idXNfY29uZmlnKGVuY29kZXIsIGlteHBkLT5idXNfZm9ybWF0 LCAyLCAzLAotCQkJICAgICAgIGlteHBkLT5jb25uZWN0b3IuZGlzcGxheV9pbmZvLmJ1c19mbGFn cyk7Ci19Ci0KIHN0YXRpYyB2b2lkIGlteF9wZF9lbmNvZGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9 IGVuY190b19pbXhwZChlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyICppbXhfZW5j b2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOworCXN0cnVjdCBpbXhfcGFyYWxsZWxfZGlz cGxheSAqaW14cGQgPSBpbXhfZW5jX3RvX2lteHBkKGlteF9lbmNvZGVyKTsKIAogCWRybV9wYW5l bF9wcmVwYXJlKGlteHBkLT5wYW5lbCk7CiAJZHJtX3BhbmVsX2VuYWJsZShpbXhwZC0+cGFuZWwp OwpAQCAtMTI0LDcgKzEyMCw4IEBAIHN0YXRpYyB2b2lkIGlteF9wZF9lbmNvZGVyX21vZGVfc2V0 KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAogc3RhdGljIHZvaWQgaW14X3BkX2VuY29k ZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF9w YXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGVuY190b19pbXhwZChlbmNvZGVyKTsKKwlzdHJ1Y3Qg aW14X2RybV9lbmNvZGVyICppbXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOwor CXN0cnVjdCBpbXhfcGFyYWxsZWxfZGlzcGxheSAqaW14cGQgPSBpbXhfZW5jX3RvX2lteHBkKGlt eF9lbmNvZGVyKTsKIAogCWRybV9wYW5lbF9kaXNhYmxlKGlteHBkLT5wYW5lbCk7CiAJZHJtX3Bh bmVsX3VucHJlcGFyZShpbXhwZC0+cGFuZWwpOwpAQCAtMTUxLDcgKzE0OCw2IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgaW14X3BkX2VuY29kZXJfZnVuY3MgPSB7CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGlteF9wZF9lbmNv ZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAkuZHBtcyA9IGlteF9wZF9lbmNvZGVyX2RwbXMsCi0JLnBy ZXBhcmUgPSBpbXhfcGRfZW5jb2Rlcl9wcmVwYXJlLAogCS5jb21taXQgPSBpbXhfcGRfZW5jb2Rl cl9jb21taXQsCiAJLm1vZGVfc2V0ID0gaW14X3BkX2VuY29kZXJfbW9kZV9zZXQsCiAJLmRpc2Fi bGUgPSBpbXhfcGRfZW5jb2Rlcl9kaXNhYmxlLApAQCAtMTYyLDcgKzE1OCw3IEBAIHN0YXRpYyBp bnQgaW14X3BkX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiB7CiAJaW50IHJldDsK IAotCXJldCA9IGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZihkcm0sICZpbXhwZC0+ZW5jb2RlciwK KwlyZXQgPSBpbXhfZHJtX2VuY29kZXJfcGFyc2Vfb2YoZHJtLCAmaW14cGQtPmlteF9lbmNvZGVy LmVuY29kZXIsCiAJCQkJICAgICAgIGlteHBkLT5kZXYtPm9mX25vZGUpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CkBAIC0xNzQsOSArMTcwLDEwIEBAIHN0YXRpYyBpbnQgaW14X3BkX3JlZ2lz dGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJICovCiAJaW14cGQtPmNvbm5lY3Rvci5kcG1z ID0gRFJNX01PREVfRFBNU19PRkY7CiAKLQlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZpbXhwZC0+ ZW5jb2RlciwgJmlteF9wZF9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7Ci0JZHJtX2VuY29kZXJfaW5p dChkcm0sICZpbXhwZC0+ZW5jb2RlciwgJmlteF9wZF9lbmNvZGVyX2Z1bmNzLAotCQkJIERSTV9N T0RFX0VOQ09ERVJfTk9ORSwgTlVMTCk7CisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmaW14cGQt PmlteF9lbmNvZGVyLmVuY29kZXIsCisJCQkgICAgICAgJmlteF9wZF9lbmNvZGVyX2hlbHBlcl9m dW5jcyk7CisJZHJtX2VuY29kZXJfaW5pdChkcm0sICZpbXhwZC0+aW14X2VuY29kZXIuZW5jb2Rl ciwKKwkJCSAmaW14X3BkX2VuY29kZXJfZnVuY3MsIERSTV9NT0RFX0VOQ09ERVJfTk9ORSwgTlVM TCk7CiAKIAlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJmlteHBkLT5jb25uZWN0b3IsCiAJCQkm aW14X3BkX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwpAQCAtMTg2LDcgKzE4Myw4IEBAIHN0YXRp YyBpbnQgaW14X3BkX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJaWYgKGlteHBk LT5wYW5lbCkKIAkJZHJtX3BhbmVsX2F0dGFjaChpbXhwZC0+cGFuZWwsICZpbXhwZC0+Y29ubmVj dG9yKTsKIAotCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmaW14cGQtPmNvbm5l Y3RvciwgJmlteHBkLT5lbmNvZGVyKTsKKwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29k ZXIoJmlteHBkLT5jb25uZWN0b3IsCisJCQkJCSAgJmlteHBkLT5pbXhfZW5jb2Rlci5lbmNvZGVy KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTk5LDYgKzE5Nyw3IEBAIHN0YXRpYyBpbnQgaW14X3Bk X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRh dGEpCiAJY29uc3QgdTggKmVkaWRwOwogCXN0cnVjdCBpbXhfcGFyYWxsZWxfZGlzcGxheSAqaW14 cGQ7CiAJaW50IHJldDsKKwl1MzIgYnVzX2Zvcm1hdCA9IDA7CiAJY29uc3QgY2hhciAqZm10Owog CiAJaW14cGQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmlteHBkKSwgR0ZQX0tFUk5FTCk7 CkBAIC0yMTIsMTQgKzIxMSwxNyBAQCBzdGF0aWMgaW50IGlteF9wZF9iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCXJldCA9IG9mX3By b3BlcnR5X3JlYWRfc3RyaW5nKG5wLCAiaW50ZXJmYWNlLXBpeC1mbXQiLCAmZm10KTsKIAlpZiAo IXJldCkgewogCQlpZiAoIXN0cmNtcChmbXQsICJyZ2IyNCIpKQotCQkJaW14cGQtPmJ1c19mb3Jt YXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0OworCQkJYnVzX2Zvcm1hdCA9IE1FRElBX0JV U19GTVRfUkdCODg4XzFYMjQ7CiAJCWVsc2UgaWYgKCFzdHJjbXAoZm10LCAicmdiNTY1IikpCi0J CQlpbXhwZC0+YnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCNTY1XzFYMTY7CisJCQlidXNf Zm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I1NjVfMVgxNjsKIAkJZWxzZSBpZiAoIXN0cmNtcChm bXQsICJiZ3I2NjYiKSkKLQkJCWlteHBkLT5idXNfZm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I2 NjZfMVgxODsKKwkJCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjY2Nl8xWDE4OwogCQll bHNlIGlmICghc3RyY21wKGZtdCwgImx2ZHM2NjYiKSkKLQkJCWlteHBkLT5idXNfZm9ybWF0ID0g TUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgyNF9DUEFESEk7CisJCQlidXNfZm9ybWF0ID0gTUVESUFf QlVTX0ZNVF9SR0I2NjZfMVgyNF9DUEFESEk7CiAJfQorCWlteHBkLT5pbXhfZW5jb2Rlci5idXNf Zm9ybWF0ID0gYnVzX2Zvcm1hdDsKKwlpbXhwZC0+aW14X2VuY29kZXIuZGlfaHN5bmNfcGluID0g MjsKKwlpbXhwZC0+aW14X2VuY29kZXIuZGlfdnN5bmNfcGluID0gMzsKIAogCS8qIHBvcnRAMSBp cyB0aGUgb3V0cHV0IHBvcnQgKi8KIAllcCA9IG9mX2dyYXBoX2dldF9lbmRwb2ludF9ieV9yZWdz KG5wLCAxLCAtMSk7CkBAIC0yNTIsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgaW14X3BkX3VuYmlu ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIHsKIAlzdHJ1Y3Qg aW14X3BhcmFsbGVsX2Rpc3BsYXkgKmlteHBkID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAKLQlp bXhwZC0+ZW5jb2Rlci5mdW5jcy0+ZGVzdHJveSgmaW14cGQtPmVuY29kZXIpOworCWlteHBkLT5p bXhfZW5jb2Rlci5lbmNvZGVyLmZ1bmNzLT5kZXN0cm95KCZpbXhwZC0+aW14X2VuY29kZXIuZW5j b2Rlcik7CiAJaW14cGQtPmNvbm5lY3Rvci5mdW5jcy0+ZGVzdHJveSgmaW14cGQtPmNvbm5lY3Rv cik7CiAKIAlrZnJlZShpbXhwZC0+ZWRpZCk7Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==