From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: [PATCHv3 3/4] drm/tilcdc: Use unload to handle initialization failures Date: Wed, 2 Nov 2016 17:57:51 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bear.ext.ti.com (bear.ext.ti.com [198.47.19.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 79BA66E59B for ; Wed, 2 Nov 2016 15:58:09 +0000 (UTC) In-Reply-To: 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: khilman@baylibre.com, Jyri Sarha , bgolaszewski@baylibre.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org VXNlIHVubG9hZCB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgaW5zdGVhZCBvZiBj b21wbGV4IGdvdG8KbGFiZWwgbWVzcy4gVG8gZG8gdGhpcyB0aGUgaW5pdGlhbGl6YXRpb24gc2Vx dWVuY2UgbmVlZGVkIHNsaWdodApyZW9yZGVyaW5nIGFuZCBzb21lIHVubG9hZCBmdW5jdGlvbnMg bmVlZGVkIHRvIGJlY29tZSBjb25kaXRpb25hbC4KClNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEg PGpzYXJoYUB0aS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfY3J0Yy5j IHwgIDEwICsrLS0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX2Rydi5jICB8IDEwMSAr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3RpbGNk Yy90aWxjZGNfZHJ2LmggIHwgICAzICstCiAzIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMo KyksIDcxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMv dGlsY2RjX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX2NydGMuYwppbmRl eCBlYTc5ZTA5Li42Mjc3MzYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3Rp bGNkY19jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfY3J0Yy5jCkBA IC0xNzcsMTQgKzE3NywxMiBAQCBzdGF0aWMgdm9pZCB0aWxjZGNfY3J0Y19lbmFibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogCXRpbGNkY19jcnRjLT5lbmFibGVkID0gdHJ1ZTsKIH0KIAotdm9p ZCB0aWxjZGNfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3ZvaWQgdGlsY2Rj X2NydGNfb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgdGlsY2RjX2NydGMg KnRpbGNkY19jcnRjID0gdG9fdGlsY2RjX2NydGMoY3J0Yyk7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgdGlsY2RjX2RybV9wcml2YXRlICpwcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAotCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmY3J0Yy0+ bXV0ZXgpKTsKLQogCWlmICghdGlsY2RjX2NydGMtPmVuYWJsZWQpCiAJCXJldHVybjsKIApAQCAt MjI4LDYgKzIyNiwxMiBAQCB2b2lkIHRpbGNkY19jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCXRpbGNkY19jcnRjLT5lbmFibGVkID0gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lk IHRpbGNkY19jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCVdBUk5fT04o IWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmY3J0Yy0+bXV0ZXgpKTsKKwl0aWxjZGNfY3J0Y19vZmYo Y3J0Yyk7Cit9CisKIHN0YXRpYyBib29sIHRpbGNkY19jcnRjX2lzX29uKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKIAlyZXR1cm4gY3J0Yy0+c3RhdGUgJiYgY3J0Yy0+c3RhdGUtPmVuYWJsZSAm JiBjcnRjLT5zdGF0ZS0+YWN0aXZlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbGNk Yy90aWxjZGNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYwppbmRl eCAxMWYzMjYyLi4xNDg5NmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3Rp bGNkY19kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYwpAQCAt MTU4LDggKzE1OCw2IEBAIHN0YXRpYyBpbnQgbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJc3RydWN0IHRpbGNkY19kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IHRpbGNkY19tb2R1bGUgKm1vZDsKIAotCWRybV9tb2RlX2NvbmZpZ19pbml0 KGRldik7Ci0KIAlwcml2LT5jcnRjID0gdGlsY2RjX2NydGNfY3JlYXRlKGRldik7CiAKIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KG1vZCwgJm1vZHVsZV9saXN0LCBsaXN0KSB7CkBAIC0xOTgsMjIgKzE5 NiwyNSBAQCBzdGF0aWMgdm9pZCB0aWxjZGNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog ewogCXN0cnVjdCB0aWxjZGNfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog Ci0JZHJtX21vZGVzZXRfbG9ja19jcnRjKHByaXYtPmNydGMsIE5VTEwpOwotCXRpbGNkY19jcnRj X2Rpc2FibGUocHJpdi0+Y3J0Yyk7Ci0JZHJtX21vZGVzZXRfdW5sb2NrX2NydGMocHJpdi0+Y3J0 Yyk7CisJaWYgKHByaXYtPmNydGMpCisJCXRpbGNkY19jcnRjX29mZihwcml2LT5jcnRjKTsKIAot CWRybV9kZXZfdW5yZWdpc3RlcihkZXYpOworCWlmIChwcml2LT5pc19yZWdpc3RlcmVkKQorCQlk cm1fZGV2X3VucmVnaXN0ZXIoZGV2KTsKIAogCWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkZXYp OwotCWRybV9mYmRldl9jbWFfZmluaShwcml2LT5mYmRldik7CisKKwlpZiAocHJpdi0+ZmJkZXYp CisJCWRybV9mYmRldl9jbWFfZmluaShwcml2LT5mYmRldik7CisKIAlkcm1faXJxX3VuaW5zdGFs bChkZXYpOwogCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7Ci0KIAl0aWxjZGNfcmVtb3Zl X2V4dGVybmFsX2VuY29kZXJzKGRldik7CiAKICNpZmRlZiBDT05GSUdfQ1BVX0ZSRVEKLQljcHVm cmVxX3VucmVnaXN0ZXJfbm90aWZpZXIoJnByaXYtPmZyZXFfdHJhbnNpdGlvbiwKLQkJCUNQVUZS RVFfVFJBTlNJVElPTl9OT1RJRklFUik7CisJaWYgKHByaXYtPmZyZXFfdHJhbnNpdGlvbi5ub3Rp Zmllcl9jYWxsKQorCQljcHVmcmVxX3VucmVnaXN0ZXJfbm90aWZpZXIoJnByaXYtPmZyZXFfdHJh bnNpdGlvbiwKKwkJCQkJICAgIENQVUZSRVFfVFJBTlNJVElPTl9OT1RJRklFUik7CiAjZW5kaWYK IAogCWlmIChwcml2LT5jbGspCkBAIC0yMjIsOCArMjIzLDEwIEBAIHN0YXRpYyB2b2lkIHRpbGNk Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKHByaXYtPm1taW8pCiAJCWlvdW5t YXAocHJpdi0+bW1pbyk7CiAKLQlmbHVzaF93b3JrcXVldWUocHJpdi0+d3EpOwotCWRlc3Ryb3lf d29ya3F1ZXVlKHByaXYtPndxKTsKKwlpZiAocHJpdi0+d3EpIHsKKwkJZmx1c2hfd29ya3F1ZXVl KHByaXYtPndxKTsKKwkJZGVzdHJveV93b3JrcXVldWUocHJpdi0+d3EpOworCX0KIAogCWRldi0+ ZGV2X3ByaXZhdGUgPSBOVUxMOwogCkBAIC0yNTQsNiArMjU3LDggQEAgc3RhdGljIGludCB0aWxj ZGNfaW5pdChzdHJ1Y3QgZHJtX2RyaXZlciAqZGRydiwgc3RydWN0IGRldmljZSAqZGV2KQogCiAJ ZGRldi0+cGxhdGZvcm1kZXYgPSBwZGV2OwogCWRkZXYtPmRldl9wcml2YXRlID0gcHJpdjsKKwlw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkZGV2KTsKKwlkcm1fbW9kZV9jb25maWdfaW5pdChk ZGV2KTsKIAogCXByaXYtPmlzX2NvbXBvbmVudGl6ZWQgPQogCQl0aWxjZGNfZ2V0X2V4dGVybmFs X2NvbXBvbmVudHMoZGV2LCBOVUxMKSA+IDA7CkBAIC0yNjEsMjggKzI2NiwyOCBAQCBzdGF0aWMg aW50IHRpbGNkY19pbml0KHN0cnVjdCBkcm1fZHJpdmVyICpkZHJ2LCBzdHJ1Y3QgZGV2aWNlICpk ZXYpCiAJcHJpdi0+d3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgidGlsY2RjIiwgMCk7CiAJ aWYgKCFwcml2LT53cSkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGZhaWxfdW5zZXRfcHJp djsKKwkJZ290byBpbml0X2ZhaWxlZDsKIAl9CiAKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwogCWlmICghcmVzKSB7CiAJCWRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2VcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwot CQlnb3RvIGZhaWxfZnJlZV93cTsKKwkJZ290byBpbml0X2ZhaWxlZDsKIAl9CiAKIAlwcml2LT5t bWlvID0gaW9yZW1hcF9ub2NhY2hlKHJlcy0+c3RhcnQsIHJlc291cmNlX3NpemUocmVzKSk7CiAJ aWYgKCFwcml2LT5tbWlvKSB7CiAJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGlvcmVtYXBcbiIp OwogCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGZhaWxfZnJlZV93cTsKKwkJZ290byBpbml0X2Zh aWxlZDsKIAl9CiAKIAlwcml2LT5jbGsgPSBjbGtfZ2V0KGRldiwgImZjayIpOwogCWlmIChJU19F UlIocHJpdi0+Y2xrKSkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgZnVuY3Rpb25h bCBjbG9ja1xuIik7CiAJCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gZmFpbF9pb3VubWFwOworCQln b3RvIGluaXRfZmFpbGVkOwogCX0KIAogI2lmZGVmIENPTkZJR19DUFVfRlJFUQpAQCAtMjkxLDcg KzI5Niw4IEBAIHN0YXRpYyBpbnQgdGlsY2RjX2luaXQoc3RydWN0IGRybV9kcml2ZXIgKmRkcnYs IHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCUNQVUZSRVFfVFJBTlNJVElPTl9OT1RJRklFUik7CiAJ aWYgKHJldCkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdpc3RlciBjcHVmcmVxIG5v dGlmaWVyXG4iKTsKLQkJZ290byBmYWlsX3B1dF9jbGs7CisJCXByaXYtPmZyZXFfdHJhbnNpdGlv bi5ub3RpZmllcl9jYWxsID0gTlVMTDsKKwkJZ290byBpbml0X2ZhaWxlZDsKIAl9CiAjZW5kaWYK IApAQCAtMzY3LDM3ICszNzMsMzUgQEAgc3RhdGljIGludCB0aWxjZGNfaW5pdChzdHJ1Y3QgZHJt X2RyaXZlciAqZGRydiwgc3RydWN0IGRldmljZSAqZGV2KQogCXJldCA9IG1vZGVzZXRfaW5pdChk ZGV2KTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFs aXplIG1vZGUgc2V0dGluZ1xuIik7Ci0JCWdvdG8gZmFpbF9jcHVmcmVxX3VucmVnaXN0ZXI7CisJ CWdvdG8gaW5pdF9mYWlsZWQ7CiAJfQogCi0JcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZGRl dik7Ci0KIAlpZiAocHJpdi0+aXNfY29tcG9uZW50aXplZCkgewogCQlyZXQgPSBjb21wb25lbnRf YmluZF9hbGwoZGV2LCBkZGV2KTsKIAkJaWYgKHJldCA8IDApCi0JCQlnb3RvIGZhaWxfbW9kZV9j b25maWdfY2xlYW51cDsKKwkJCWdvdG8gaW5pdF9mYWlsZWQ7CiAKIAkJcmV0ID0gdGlsY2RjX2Fk ZF9leHRlcm5hbF9lbmNvZGVycyhkZGV2KTsKIAkJaWYgKHJldCA8IDApCi0JCQlnb3RvIGZhaWxf Y29tcG9uZW50X2NsZWFudXA7CisJCQlnb3RvIGluaXRfZmFpbGVkOwogCX0KIAogCWlmICgocHJp di0+bnVtX2VuY29kZXJzID09IDApIHx8IChwcml2LT5udW1fY29ubmVjdG9ycyA9PSAwKSkgewog CQlkZXZfZXJyKGRldiwgIm5vIGVuY29kZXJzL2Nvbm5lY3RvcnMgZm91bmRcbiIpOwogCQlyZXQg PSAtRU5YSU87Ci0JCWdvdG8gZmFpbF9leHRlcm5hbF9jbGVhbnVwOworCQlnb3RvIGluaXRfZmFp bGVkOwogCX0KIAogCXJldCA9IGRybV92YmxhbmtfaW5pdChkZGV2LCAxKTsKIAlpZiAocmV0IDwg MCkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIHZibGFua1xuIik7Ci0J CWdvdG8gZmFpbF9leHRlcm5hbF9jbGVhbnVwOworCQlnb3RvIGluaXRfZmFpbGVkOwogCX0KIAog CXJldCA9IGRybV9pcnFfaW5zdGFsbChkZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApKTsK IAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbnN0YWxsIElSUSBo YW5kbGVyXG4iKTsKLQkJZ290byBmYWlsX3ZibGFua19jbGVhbnVwOworCQlnb3RvIGluaXRfZmFp bGVkOwogCX0KIAogCWRybV9tb2RlX2NvbmZpZ19yZXNldChkZGV2KTsKQEAgLTQwNyw1NyArNDEx LDIwIEBAIHN0YXRpYyBpbnQgdGlsY2RjX2luaXQoc3RydWN0IGRybV9kcml2ZXIgKmRkcnYsIHN0 cnVjdCBkZXZpY2UgKmRldikKIAkJCWRkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IpOwog CWlmIChJU19FUlIocHJpdi0+ZmJkZXYpKSB7CiAJCXJldCA9IFBUUl9FUlIocHJpdi0+ZmJkZXYp OwotCQlnb3RvIGZhaWxfaXJxX3VuaW5zdGFsbDsKKwkJZ290byBpbml0X2ZhaWxlZDsKIAl9CiAK IAlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZGRldik7CiAKIAlyZXQgPSBkcm1fZGV2X3JlZ2lz dGVyKGRkZXYsIDApOwogCWlmIChyZXQpCi0JCWdvdG8gZmFpbF9wbGF0Zm9ybV9pbml0OworCQln b3RvIGluaXRfZmFpbGVkOwogCisJcHJpdi0+aXNfcmVnaXN0ZXJlZCA9IHRydWU7CiAJcmV0dXJu IDA7CiAKLWZhaWxfcGxhdGZvcm1faW5pdDoKLQlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZGRl dik7Ci0JZHJtX2ZiZGV2X2NtYV9maW5pKHByaXYtPmZiZGV2KTsKLQotZmFpbF9pcnFfdW5pbnN0 YWxsOgotCWRybV9pcnFfdW5pbnN0YWxsKGRkZXYpOwotCi1mYWlsX3ZibGFua19jbGVhbnVwOgot CWRybV92YmxhbmtfY2xlYW51cChkZGV2KTsKLQotZmFpbF9jb21wb25lbnRfY2xlYW51cDoKLQlp ZiAocHJpdi0+aXNfY29tcG9uZW50aXplZCkKLQkJY29tcG9uZW50X3VuYmluZF9hbGwoZGV2LCBk ZXYpOwotCi1mYWlsX21vZGVfY29uZmlnX2NsZWFudXA6Ci0JZHJtX21vZGVfY29uZmlnX2NsZWFu dXAoZGRldik7Ci0KLWZhaWxfZXh0ZXJuYWxfY2xlYW51cDoKLQl0aWxjZGNfcmVtb3ZlX2V4dGVy bmFsX2VuY29kZXJzKGRkZXYpOwotCi1mYWlsX2NwdWZyZXFfdW5yZWdpc3RlcjoKLQlwbV9ydW50 aW1lX2Rpc2FibGUoZGV2KTsKLSNpZmRlZiBDT05GSUdfQ1BVX0ZSRVEKLQljcHVmcmVxX3VucmVn aXN0ZXJfbm90aWZpZXIoJnByaXYtPmZyZXFfdHJhbnNpdGlvbiwKLQkJCUNQVUZSRVFfVFJBTlNJ VElPTl9OT1RJRklFUik7Ci0KLWZhaWxfcHV0X2NsazoKLSNlbmRpZgotCWNsa19wdXQocHJpdi0+ Y2xrKTsKLQotZmFpbF9pb3VubWFwOgotCWlvdW5tYXAocHJpdi0+bW1pbyk7Ci0KLWZhaWxfZnJl ZV93cToKLQlmbHVzaF93b3JrcXVldWUocHJpdi0+d3EpOwotCWRlc3Ryb3lfd29ya3F1ZXVlKHBy aXYtPndxKTsKLQotZmFpbF91bnNldF9wcml2OgotCWRkZXYtPmRldl9wcml2YXRlID0gTlVMTDsK LQlkcm1fZGV2X3VucmVmKGRkZXYpOworaW5pdF9mYWlsZWQ6CisJdGlsY2RjX2ZpbmkoZGRldik7 CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90 aWxjZGNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuaAppbmRleCA5 NzgwYzM3Li43ZGIyM2YyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNk Y19kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuaApAQCAtODks NiArODksNyBAQCBzdHJ1Y3QgdGlsY2RjX2RybV9wcml2YXRlIHsKIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yc1s4XTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJf ZnVuY3MgKmNvbm5lY3Rvcl9mdW5jc1s4XTsKIAorCWJvb2wgaXNfcmVnaXN0ZXJlZDsKIAlib29s IGlzX2NvbXBvbmVudGl6ZWQ7CiB9OwogCkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCB0aWxjZGNf Y3J0Y19zZXRfc2ltdWxhdGVfdmVzYV9zeW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkJ Ym9vbCBzaW11bGF0ZV92ZXNhX3N5bmMpOwogaW50IHRpbGNkY19jcnRjX21vZGVfdmFsaWQoc3Ry dWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7CiBpbnQg dGlsY2RjX2NydGNfbWF4X3dpZHRoKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci12b2lkIHRpbGNk Y19jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK3ZvaWQgdGlsY2RjX2NydGNf b2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBpbnQgdGlsY2RjX2NydGNfdXBkYXRlX2ZiKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCXN0 cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50KTsKLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK