From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118542 invoked by alias); 25 Sep 2018 13:11:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 118516 invoked by uid 89); 25 Sep 2018 13:10:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=UD:lock, 3017, qid, ord X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 25 Sep 2018 13:10:56 +0000 Received: from svr-orw-mbx-02.mgc.mentorg.com ([147.34.90.202]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1g4n78-000444-I3 from ChungLin_Tang@mentor.com for gcc-patches@gcc.gnu.org; Tue, 25 Sep 2018 06:10:54 -0700 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Tue, 25 Sep 2018 06:10:51 -0700 Reply-To: From: Chung-Lin Tang Subject: [PATCH 2/6, OpenACC, libgomp] Async re-work, oacc-* parts To: , Thomas Schwinge Message-ID: <12319572-dd02-c946-f2b9-9d047be9c707@mentor.com> Date: Tue, 25 Sep 2018 13:11:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------F58D7EE0D58F2D395EB7FE3E" X-SW-Source: 2018-09/txt/msg01427.txt.bz2 --------------F58D7EE0D58F2D395EB7FE3E Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2888 Hi Thomas, These are the OpenACC specific changes, mostly the re-implementation of async-related acc_* runtime library API functions to use the new backend plugin interfaces, in a non-target specific way. Thanks, Chung-Lin * oacc-async.c (get_goacc_thread): New function. (get_goacc_thread_device): New function. (lookup_goacc_asyncqueue): New function. (get_goacc_asyncqueue): New function. (acc_async_test): Adjust code to use new async design. (acc_async_test_all): Likewise. (acc_wait): Likewise. (acc_wait_async): Likewise. (acc_wait_all): Likewise. (acc_wait_all_async): Likewise. (acc_get_default_async): New API function. (acc_set_default_async): Likewise. (goacc_async_unmap_tgt): New function. (goacc_async_copyout_unmap_vars): Likewise. (goacc_async_free): Likewise. (goacc_init_asyncqueues): Likewise. (goacc_fini_asyncqueues): Likewise. * oacc-cuda.c (acc_get_cuda_stream): Adjust code to use new async design. (acc_set_cuda_stream): Likewise. * oacc-host.c (host_openacc_exec): Adjust parameters, remove 'async'. (host_openacc_register_async_cleanup): Remove. (host_openacc_async_exec): New function. (host_openacc_async_test): Adjust parameters. (host_openacc_async_test_all): Remove. (host_openacc_async_wait): Remove. (host_openacc_async_wait_async): Remove. (host_openacc_async_wait_all): Remove. (host_openacc_async_wait_all_async): Remove. (host_openacc_async_set_async): Remove. (host_openacc_async_synchronize): New function. (host_openacc_async_serialize): New function. (host_openacc_async_host2dev): New function. (host_openacc_async_dev2host): New function. (host_openacc_async_queue_callback): New function. (host_openacc_async_construct): New function. (host_openacc_async_destruct): New function. (struct gomp_device_descr host_dispatch): Remove initialization of old interface, add intialization of new async sub-struct. * oacc-init.c (acc_shutdown_1): Adjust to use gomp_fini_device. (goacc_attach_host_thread_to_device): Remove old async code usage, add initialization of per-thread default_async. * oacc-int.h (struct goacc_thread): Add default_async field. (goacc_init_asyncqueues): New declaration. (goacc_fini_asyncqueues): Likewise. (goacc_async_copyout_unmap_vars): Likewise. (goacc_async_free): Likewise. (get_goacc_asyncqueue): Likewise. (lookup_goacc_asyncqueue): Likewise. * oacc-mem.c (memcpy_tofrom_device): Adjust code to use new async design. (present_create_copy): Likewise. (delete_copyout): Likewise. (update_dev_host): Likewise. (gomp_acc_insert_pointer): Add async parameter, adjust code to use new async design. (gomp_acc_remove_pointer): Adjust code to use new async design. * oacc-parallel.c (GOACC_parallel_keyed): Likewise. (GOACC_enter_exit_data): Likewise. (goacc_wait): Likewise. (GOACC_update): Likewise. * oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Remove. --------------F58D7EE0D58F2D395EB7FE3E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="async-02.openacc-parts.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="async-02.openacc-parts.patch" Content-length: 34799 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1hc3luYy5jIGIvbGliZ29tcC9v YWNjLWFzeW5jLmMKaW5kZXggYTRlMTg2My4uNjhhYWYxOSAxMDA2NDQKLS0t IGEvbGliZ29tcC9vYWNjLWFzeW5jLmMKKysrIGIvbGliZ29tcC9vYWNjLWFz eW5jLmMKQEAgLTI3LDEwICsyNyw4NyBAQAogICAgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2luY2x1ZGUgPGFzc2VydC5oPgor I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgIm9wZW5hY2MuaCIKICNp bmNsdWRlICJsaWJnb21wLmgiCiAjaW5jbHVkZSAib2FjYy1pbnQuaCIKIAor c3RhdGljIHN0cnVjdCBnb2FjY190aHJlYWQgKgorZ2V0X2dvYWNjX3RocmVh ZCAodm9pZCkKK3sKKyAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ29h Y2NfdGhyZWFkICgpOworCisgIGlmICghdGhyIHx8ICF0aHItPmRldikKKyAg ICBnb21wX2ZhdGFsICgibm8gZGV2aWNlIGFjdGl2ZSIpOworCisgIHJldHVy biB0aHI7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3Ig KgorZ2V0X2dvYWNjX3RocmVhZF9kZXZpY2UgKHZvaWQpCit7CisgIHN0cnVj dCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsKKworICBp ZiAoIXRociB8fCAhdGhyLT5kZXYpCisgICAgZ29tcF9mYXRhbCAoIm5vIGRl dmljZSBhY3RpdmUiKTsKKworICByZXR1cm4gdGhyLT5kZXY7Cit9CisKK2F0 dHJpYnV0ZV9oaWRkZW4gc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKgorbG9v a3VwX2dvYWNjX2FzeW5jcXVldWUgKHN0cnVjdCBnb2FjY190aHJlYWQgKnRo ciwgYm9vbCBjcmVhdGUsIGludCBhc3luYykKK3sKKyAgLyogVGhlIHNwZWNp YWwgdmFsdWUgYWNjX2FzeW5jX25vdmFsICgtMSkgbWFwcyB0byB0aGUgdGhy ZWFkLXNwZWNpZmljCisgICAgIGRlZmF1bHQgYXN5bmMgc3RyZWFtLiAgKi8K KyAgaWYgKGFzeW5jID09IGFjY19hc3luY19ub3ZhbCkKKyAgICBhc3luYyA9 IHRoci0+ZGVmYXVsdF9hc3luYzsKKworICBpZiAoYXN5bmMgPT0gYWNjX2Fz eW5jX3N5bmMpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKGFzeW5jIDwg MCkKKyAgICBnb21wX2ZhdGFsICgiYmFkIGFzeW5jICVkIiwgYXN5bmMpOwor CisgIHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2ID0gdGhyLT5kZXY7 CisKKyAgaWYgKCFjcmVhdGUKKyAgICAgICYmIChhc3luYyA+PSBkZXYtPm9w ZW5hY2MuYXN5bmMubmFzeW5jcXVldWUKKwkgIHx8ICFkZXYtPm9wZW5hY2Mu YXN5bmMuYXN5bmNxdWV1ZVthc3luY10pKQorICAgIHJldHVybiBOVUxMOwor CisgIGdvbXBfbXV0ZXhfbG9jayAoJmRldi0+b3BlbmFjYy5hc3luYy5sb2Nr KTsKKyAgaWYgKGFzeW5jID49IGRldi0+b3BlbmFjYy5hc3luYy5uYXN5bmNx dWV1ZSkKKyAgICB7CisgICAgICBpbnQgZGlmZiA9IGFzeW5jICsgMSAtIGRl di0+b3BlbmFjYy5hc3luYy5uYXN5bmNxdWV1ZTsKKyAgICAgIGRldi0+b3Bl bmFjYy5hc3luYy5hc3luY3F1ZXVlCisJPSBnb21wX3JlYWxsb2MgKGRldi0+ b3BlbmFjYy5hc3luYy5hc3luY3F1ZXVlLAorCQkJc2l6ZW9mIChnb2FjY19h cSkgKiAoYXN5bmMgKyAxKSk7CisgICAgICBtZW1zZXQgKGRldi0+b3BlbmFj Yy5hc3luYy5hc3luY3F1ZXVlICsgZGV2LT5vcGVuYWNjLmFzeW5jLm5hc3lu Y3F1ZXVlLAorCSAgICAgIDAsIHNpemVvZiAoZ29hY2NfYXEpICogZGlmZik7 CisgICAgICBkZXYtPm9wZW5hY2MuYXN5bmMubmFzeW5jcXVldWUgPSBhc3lu YyArIDE7CisgICAgfQorCisgIGlmICghZGV2LT5vcGVuYWNjLmFzeW5jLmFz eW5jcXVldWVbYXN5bmNdKQorICAgIHsKKyAgICAgIGRldi0+b3BlbmFjYy5h c3luYy5hc3luY3F1ZXVlW2FzeW5jXSA9IGRldi0+b3BlbmFjYy5hc3luYy5j b25zdHJ1Y3RfZnVuYyAoKTsKKworICAgICAgLyogTGluayBuZXcgYXN5bmMg cXVldWUgaW50byBhY3RpdmUgbGlzdC4gICovCisgICAgICBnb2FjY19hcV9s aXN0IG4gPSBnb21wX21hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZ29hY2NfYXN5 bmNxdWV1ZV9saXN0KSk7CisgICAgICBuLT5hcSA9IGRldi0+b3BlbmFjYy5h c3luYy5hc3luY3F1ZXVlW2FzeW5jXTsKKyAgICAgIG4tPm5leHQgPSBkZXYt Pm9wZW5hY2MuYXN5bmMuYWN0aXZlOworICAgICAgZGV2LT5vcGVuYWNjLmFz eW5jLmFjdGl2ZSA9IG47CisgICAgfQorICBnb21wX211dGV4X3VubG9jayAo JmRldi0+b3BlbmFjYy5hc3luYy5sb2NrKTsKKyAgcmV0dXJuIGRldi0+b3Bl bmFjYy5hc3luYy5hc3luY3F1ZXVlW2FzeW5jXTsKK30KKworYXR0cmlidXRl X2hpZGRlbiBzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqCitnZXRfZ29hY2Nf YXN5bmNxdWV1ZSAoaW50IGFzeW5jKQoreworICBzdHJ1Y3QgZ29hY2NfdGhy ZWFkICp0aHIgPSBnZXRfZ29hY2NfdGhyZWFkICgpOworICByZXR1cm4gbG9v a3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwgdHJ1ZSwgYXN5bmMpOworfQor CiBpbnQKIGFjY19hc3luY190ZXN0IChpbnQgYXN5bmMpCiB7CkBAIC00Miwx OCArMTE5LDI1IEBAIGFjY19hc3luY190ZXN0IChpbnQgYXN5bmMpCiAgIGlm ICghdGhyIHx8ICF0aHItPmRldikKICAgICBnb21wX2ZhdGFsICgibm8gZGV2 aWNlIGFjdGl2ZSIpOwogCi0gIHJldHVybiB0aHItPmRldi0+b3BlbmFjYy5h c3luY190ZXN0X2Z1bmMgKGFzeW5jKTsKKyAgZ29hY2NfYXEgYXEgPSBsb29r dXBfZ29hY2NfYXN5bmNxdWV1ZSAodGhyLCB0cnVlLCBhc3luYyk7CisgIHJl dHVybiB0aHItPmRldi0+b3BlbmFjYy5hc3luYy50ZXN0X2Z1bmMgKGFxKTsK IH0KIAogaW50CiBhY2NfYXN5bmNfdGVzdF9hbGwgKHZvaWQpCiB7Ci0gIHN0 cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsKLQot ICBpZiAoIXRociB8fCAhdGhyLT5kZXYpCi0gICAgZ29tcF9mYXRhbCAoIm5v IGRldmljZSBhY3RpdmUiKTsKKyAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhy ID0gZ2V0X2dvYWNjX3RocmVhZCAoKTsKIAotICByZXR1cm4gdGhyLT5kZXYt Pm9wZW5hY2MuYXN5bmNfdGVzdF9hbGxfZnVuYyAoKTsKKyAgaW50IHJldCA9 IDE7CisgIGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+ZGV2LT5vcGVuYWNjLmFz eW5jLmxvY2spOworICBmb3IgKGdvYWNjX2FxX2xpc3QgbCA9IHRoci0+ZGV2 LT5vcGVuYWNjLmFzeW5jLmFjdGl2ZTsgbDsgbCA9IGwtPm5leHQpCisgICAg aWYgKCF0aHItPmRldi0+b3BlbmFjYy5hc3luYy50ZXN0X2Z1bmMgKGwtPmFx KSkKKyAgICAgIHsKKwlyZXQgPSAwOworCWJyZWFrOworICAgICAgfQorICBn b21wX211dGV4X3VubG9jayAoJnRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmxv Y2spOworICByZXR1cm4gcmV0OwogfQogCiB2b2lkCkBAIC02MiwxMiArMTQ2 LDEwIEBAIGFjY193YWl0IChpbnQgYXN5bmMpCiAgIGlmICghYXN5bmNfdmFs aWRfcCAoYXN5bmMpKQogICAgIGdvbXBfZmF0YWwgKCJpbnZhbGlkIGFzeW5j IGFyZ3VtZW50OiAlZCIsIGFzeW5jKTsKIAotICBzdHJ1Y3QgZ29hY2NfdGhy ZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7Ci0KLSAgaWYgKCF0aHIgfHwg IXRoci0+ZGV2KQotICAgIGdvbXBfZmF0YWwgKCJubyBkZXZpY2UgYWN0aXZl Iik7CisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2FjY190 aHJlYWQgKCk7CiAKLSAgdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmNfd2FpdF9m dW5jIChhc3luYyk7CisgIGdvYWNjX2FxIGFxID0gbG9va3VwX2dvYWNjX2Fz eW5jcXVldWUgKHRociwgdHJ1ZSwgYXN5bmMpOworICB0aHItPmRldi0+b3Bl bmFjYy5hc3luYy5zeW5jaHJvbml6ZV9mdW5jIChhcSk7CiB9CiAKIC8qIGFj Y19hc3luY193YWl0IGlzIGFuIE9wZW5BQ0MgMS4wIGNvbXBhdGliaWxpdHkg bmFtZSBmb3IgYWNjX3dhaXQuICAqLwpAQCAtODQsMjMgKzE2NiwyOCBAQCBh Y2NfYXN5bmNfd2FpdCAoaW50IGFzeW5jKQogdm9pZAogYWNjX3dhaXRfYXN5 bmMgKGludCBhc3luYzEsIGludCBhc3luYzIpCiB7Ci0gIHN0cnVjdCBnb2Fj Y190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsKKyAgc3RydWN0IGdv YWNjX3RocmVhZCAqdGhyID0gZ2V0X2dvYWNjX3RocmVhZCAoKTsKIAotICBp ZiAoIXRociB8fCAhdGhyLT5kZXYpCi0gICAgZ29tcF9mYXRhbCAoIm5vIGRl dmljZSBhY3RpdmUiKTsKKyAgZ29hY2NfYXEgYXEyID0gbG9va3VwX2dvYWNj X2FzeW5jcXVldWUgKHRociwgdHJ1ZSwgYXN5bmMyKTsKKyAgZ29hY2NfYXEg YXExID0gbG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwgZmFsc2UsIGFz eW5jMSk7CisgIGlmICghYXExKQorICAgIGdvbXBfZmF0YWwgKCJpbnZhbGlk IGFzeW5jIDEiKTsKKyAgaWYgKGFxMSA9PSBhcTIpCisgICAgZ29tcF9mYXRh bCAoImlkZW50aWNhbCBwYXJhbWV0ZXJzIik7CiAKLSAgdGhyLT5kZXYtPm9w ZW5hY2MuYXN5bmNfd2FpdF9hc3luY19mdW5jIChhc3luYzEsIGFzeW5jMik7 CisgIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLnN5bmNocm9uaXplX2Z1bmMg KGFxMSk7CisgIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLnNlcmlhbGl6ZV9m dW5jIChhcTEsIGFxMik7CiB9CiAKIHZvaWQKIGFjY193YWl0X2FsbCAodm9p ZCkKIHsKLSAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ29hY2NfdGhy ZWFkICgpOwotCi0gIGlmICghdGhyIHx8ICF0aHItPmRldikKLSAgICBnb21w X2ZhdGFsICgibm8gZGV2aWNlIGFjdGl2ZSIpOworICBzdHJ1Y3QgZ29tcF9k ZXZpY2VfZGVzY3IgKmRldiA9IGdldF9nb2FjY190aHJlYWRfZGV2aWNlICgp OwogCi0gIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jX3dhaXRfYWxsX2Z1bmMg KCk7CisgIGdvbXBfbXV0ZXhfbG9jayAoJmRldi0+b3BlbmFjYy5hc3luYy5s b2NrKTsKKyAgZm9yIChnb2FjY19hcV9saXN0IGwgPSBkZXYtPm9wZW5hY2Mu YXN5bmMuYWN0aXZlOyBsOyBsID0gbC0+bmV4dCkKKyAgICBkZXYtPm9wZW5h Y2MuYXN5bmMuc3luY2hyb25pemVfZnVuYyAobC0+YXEpOworICBnb21wX211 dGV4X3VubG9jayAoJmRldi0+b3BlbmFjYy5hc3luYy5sb2NrKTsKIH0KIAog LyogYWNjX2FzeW5jX3dhaXRfYWxsIGlzIGFuIE9wZW5BQ0MgMS4wIGNvbXBh dGliaWxpdHkgbmFtZSBmb3IgYWNjX3dhaXRfYWxsLiAgKi8KQEAgLTEyMCwx MCArMjA3LDk5IEBAIGFjY193YWl0X2FsbF9hc3luYyAoaW50IGFzeW5jKQog ICBpZiAoIWFzeW5jX3ZhbGlkX3AgKGFzeW5jKSkKICAgICBnb21wX2ZhdGFs ICgiaW52YWxpZCBhc3luYyBhcmd1bWVudDogJWQiLCBhc3luYyk7CiAKLSAg c3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOwor ICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnZXRfZ29hY2NfdGhyZWFk ICgpOwogCi0gIGlmICghdGhyIHx8ICF0aHItPmRldikKLSAgICBnb21wX2Zh dGFsICgibm8gZGV2aWNlIGFjdGl2ZSIpOworICBnb2FjY19hcSB3YWl0aW5n X3F1ZXVlID0gbG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwgdHJ1ZSwg YXN5bmMpOwogCi0gIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jX3dhaXRfYWxs X2FzeW5jX2Z1bmMgKGFzeW5jKTsKKyAgZ29tcF9tdXRleF9sb2NrICgmdGhy LT5kZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7CisgIGZvciAoZ29hY2NfYXFf bGlzdCBsID0gdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMuYWN0aXZlOyBsOyBs ID0gbC0+bmV4dCkKKyAgICB7CisgICAgICB0aHItPmRldi0+b3BlbmFjYy5h c3luYy5zeW5jaHJvbml6ZV9mdW5jIChsLT5hcSk7CisgICAgICBpZiAod2Fp dGluZ19xdWV1ZSkKKwl0aHItPmRldi0+b3BlbmFjYy5hc3luYy5zZXJpYWxp emVfZnVuYyAobC0+YXEsIHdhaXRpbmdfcXVldWUpOworICAgIH0KKyAgZ29t cF9tdXRleF91bmxvY2sgKCZ0aHItPmRldi0+b3BlbmFjYy5hc3luYy5sb2Nr KTsKK30KKworaW50CithY2NfZ2V0X2RlZmF1bHRfYXN5bmMgKHZvaWQpCit7 CisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2FjY190aHJl YWQgKCk7CisgIHJldHVybiB0aHItPmRlZmF1bHRfYXN5bmM7Cit9CisKK3Zv aWQKK2FjY19zZXRfZGVmYXVsdF9hc3luYyAoaW50IGFzeW5jKQoreworICBp ZiAoYXN5bmMgPCBhY2NfYXN5bmNfc3luYykKKyAgICBnb21wX2ZhdGFsICgi aW52YWxpZCBhc3luYyBhcmd1bWVudDogJWQiLCBhc3luYyk7CisKKyAgc3Ry dWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ2V0X2dvYWNjX3RocmVhZCAoKTsK KyAgdGhyLT5kZWZhdWx0X2FzeW5jID0gYXN5bmM7Cit9CisKK3N0YXRpYyB2 b2lkCitnb2FjY19hc3luY191bm1hcF90Z3QgKHZvaWQgKnB0cikKK3sKKyAg c3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0ID0gKHN0cnVjdCB0YXJnZXRf bWVtX2Rlc2MgKikgcHRyOworCisgIGlmICh0Z3QtPnJlZmNvdW50ID4gMSkK KyAgICB0Z3QtPnJlZmNvdW50LS07CisgIGVsc2UKKyAgICBnb21wX3VubWFw X3RndCAodGd0KTsKK30KKworYXR0cmlidXRlX2hpZGRlbiB2b2lkCitnb2Fj Y19hc3luY19jb3B5b3V0X3VubWFwX3ZhcnMgKHN0cnVjdCB0YXJnZXRfbWVt X2Rlc2MgKnRndCwKKwkJCQlzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqYXEp Cit7CisgIHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCA9IHRn dC0+ZGV2aWNlX2Rlc2NyOworCisgIC8qIEluY3JlbWVudCByZWZlcmVuY2Ug dG8gZGVsYXkgZnJlZWluZyBvZiBkZXZpY2UgbWVtb3J5IHVudGlsIGNhbGxi YWNrCisgICAgIGhhcyB0cmlnZ2VyZWQuICAqLworICB0Z3QtPnJlZmNvdW50 Kys7CisgIGdvbXBfdW5tYXBfdmFyc19hc3luYyAodGd0LCB0cnVlLCBhcSk7 CisgIGRldmljZXAtPm9wZW5hY2MuYXN5bmMucXVldWVfY2FsbGJhY2tfZnVu YyAoYXEsIGdvYWNjX2FzeW5jX3VubWFwX3RndCwKKwkJCQkJICAgICAgKHZv aWQgKikgdGd0KTsKK30KKworYXR0cmlidXRlX2hpZGRlbiB2b2lkCitnb2Fj Y19hc3luY19mcmVlIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmlj ZXAsCisJCSAgc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFxLCB2b2lkICpw dHIpCit7CisgIGlmICghYXEpCisgICAgZnJlZSAocHRyKTsKKyAgZWxzZQor ICAgIGRldmljZXAtPm9wZW5hY2MuYXN5bmMucXVldWVfY2FsbGJhY2tfZnVu YyAoYXEsIGZyZWUsIHB0cik7Cit9CisKK2F0dHJpYnV0ZV9oaWRkZW4gdm9p ZAorZ29hY2NfaW5pdF9hc3luY3F1ZXVlcyAoc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICpkZXZpY2VwKQoreworICBnb21wX211dGV4X2luaXQgKCZkZXZp Y2VwLT5vcGVuYWNjLmFzeW5jLmxvY2spOworICBkZXZpY2VwLT5vcGVuYWNj LmFzeW5jLm5hc3luY3F1ZXVlID0gMDsKKyAgZGV2aWNlcC0+b3BlbmFjYy5h c3luYy5hc3luY3F1ZXVlID0gTlVMTDsKKyAgZGV2aWNlcC0+b3BlbmFjYy5h c3luYy5hY3RpdmUgPSBOVUxMOworfQorCithdHRyaWJ1dGVfaGlkZGVuIGJv b2wKK2dvYWNjX2ZpbmlfYXN5bmNxdWV1ZXMgKHN0cnVjdCBnb21wX2Rldmlj ZV9kZXNjciAqZGV2aWNlcCkKK3sKKyAgYm9vbCByZXQgPSB0cnVlOworICBp ZiAoZGV2aWNlcC0+b3BlbmFjYy5hc3luYy5uYXN5bmNxdWV1ZSA+IDApCisg ICAgeworICAgICAgZ29hY2NfYXFfbGlzdCBuZXh0OworICAgICAgZm9yIChn b2FjY19hcV9saXN0IGwgPSBkZXZpY2VwLT5vcGVuYWNjLmFzeW5jLmFjdGl2 ZTsgbDsgbCA9IG5leHQpCisJeworCSAgcmV0ICY9IGRldmljZXAtPm9wZW5h Y2MuYXN5bmMuZGVzdHJ1Y3RfZnVuYyAobC0+YXEpOworCSAgbmV4dCA9IGwt Pm5leHQ7CisJICBmcmVlIChsKTsKKwl9CisgICAgICBmcmVlIChkZXZpY2Vw LT5vcGVuYWNjLmFzeW5jLmFzeW5jcXVldWUpOworICAgICAgZGV2aWNlcC0+ b3BlbmFjYy5hc3luYy5uYXN5bmNxdWV1ZSA9IDA7CisgICAgICBkZXZpY2Vw LT5vcGVuYWNjLmFzeW5jLmFzeW5jcXVldWUgPSBOVUxMOworICAgICAgZGV2 aWNlcC0+b3BlbmFjYy5hc3luYy5hY3RpdmUgPSBOVUxMOworICAgIH0KKyAg Z29tcF9tdXRleF9kZXN0cm95ICgmZGV2aWNlcC0+b3BlbmFjYy5hc3luYy5s b2NrKTsKKyAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2xpYmdvbXAv b2FjYy1jdWRhLmMgYi9saWJnb21wL29hY2MtY3VkYS5jCmluZGV4IDIwNzc0 YzEuLjBhODQyZWEgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb2FjYy1jdWRhLmMK KysrIGIvbGliZ29tcC9vYWNjLWN1ZGEuYwpAQCAtNjIsNyArNjIsMTEgQEAg YWNjX2dldF9jdWRhX3N0cmVhbSAoaW50IGFzeW5jKQogICAgIHJldHVybiBO VUxMOwogCiAgIGlmICh0aHIgJiYgdGhyLT5kZXYgJiYgdGhyLT5kZXYtPm9w ZW5hY2MuY3VkYS5nZXRfc3RyZWFtX2Z1bmMpCi0gICAgcmV0dXJuIHRoci0+ ZGV2LT5vcGVuYWNjLmN1ZGEuZ2V0X3N0cmVhbV9mdW5jIChhc3luYyk7Cisg ICAgeworICAgICAgZ29hY2NfYXEgYXEgPSBsb29rdXBfZ29hY2NfYXN5bmNx dWV1ZSAodGhyLCBmYWxzZSwgYXN5bmMpOworICAgICAgaWYgKGFxKQorCXJl dHVybiB0aHItPmRldi0+b3BlbmFjYy5jdWRhLmdldF9zdHJlYW1fZnVuYyAo YXEpOworICAgIH0KICAKICAgcmV0dXJuIE5VTEw7CiB9CkBAIC03OSw4ICs4 MywxNCBAQCBhY2Nfc2V0X2N1ZGFfc3RyZWFtIChpbnQgYXN5bmMsIHZvaWQg KnN0cmVhbSkKIAogICB0aHIgPSBnb2FjY190aHJlYWQgKCk7CiAKKyAgaW50 IHJldCA9IC0xOwogICBpZiAodGhyICYmIHRoci0+ZGV2ICYmIHRoci0+ZGV2 LT5vcGVuYWNjLmN1ZGEuc2V0X3N0cmVhbV9mdW5jKQotICAgIHJldHVybiB0 aHItPmRldi0+b3BlbmFjYy5jdWRhLnNldF9zdHJlYW1fZnVuYyAoYXN5bmMs IHN0cmVhbSk7Ci0KLSAgcmV0dXJuIC0xOworICAgIHsKKyAgICAgIGdvYWNj X2FxIGFxID0gZ2V0X2dvYWNjX2FzeW5jcXVldWUgKGFzeW5jKTsKKyAgICAg IGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmxv Y2spOworICAgICAgcmV0ID0gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5zZXRf c3RyZWFtX2Z1bmMgKGFxLCBzdHJlYW0pOworICAgICAgZ29tcF9tdXRleF91 bmxvY2sgKCZ0aHItPmRldi0+b3BlbmFjYy5hc3luYy5sb2NrKTsKKyAgICB9 CisKKyAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2Fj Yy1ob3N0LmMgYi9saWJnb21wL29hY2MtaG9zdC5jCmluZGV4IDJkZTNjMzcu LjUzNjU4YzggMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb2FjYy1ob3N0LmMKKysr IGIvbGliZ29tcC9vYWNjLWhvc3QuYwpAQCAtMTQwLDU1ICsxNDAsODYgQEAg aG9zdF9vcGVuYWNjX2V4ZWMgKHZvaWQgKCpmbikgKHZvaWQgKiksCiAJCSAg IHNpemVfdCBtYXBudW0gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogCQkg ICB2b2lkICoqaG9zdGFkZHJzLAogCQkgICB2b2lkICoqZGV2YWRkcnMgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotCQkgICBpbnQgYXN5bmMgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLAotCQkgICB1bnNpZ25lZCAqZGltcyBfX2F0 dHJpYnV0ZSAoKHVudXNlZCkpLAorCQkgICB1bnNpZ25lZCAqZGltcyBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksCiAJCSAgIHZvaWQgKnRhcmdfbWVtX2Rl c2MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewogICBmbiAoaG9zdGFk ZHJzKTsKIH0KIAogc3RhdGljIHZvaWQKLWhvc3Rfb3BlbmFjY19yZWdpc3Rl cl9hc3luY19jbGVhbnVwICh2b2lkICp0YXJnX21lbV9kZXNjIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSwKLQkJCQkgICAgIGludCBhc3luYyBfX2F0dHJp YnV0ZV9fICgodW51c2VkKSkpCitob3N0X29wZW5hY2NfYXN5bmNfZXhlYyAo dm9pZCAoKmZuKSAodm9pZCAqKSwKKwkJCSBzaXplX3QgbWFwbnVtIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCSB2b2lkICoqaG9zdGFkZHJzLAor CQkJIHZvaWQgKipkZXZhZGRycyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSks CisJCQkgdW5zaWduZWQgKmRpbXMgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LAorCQkJIHZvaWQgKnRhcmdfbWVtX2Rlc2MgX19hdHRyaWJ1dGVfXyAoKHVu dXNlZCkpLAorCQkJIHN0cnVjdCBnb2FjY19hc3luY3F1ZXVlICphcSBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSkpCiB7CisgIGZuIChob3N0YWRkcnMpOwog fQogCiBzdGF0aWMgaW50Ci1ob3N0X29wZW5hY2NfYXN5bmNfdGVzdCAoaW50 IGFzeW5jIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKK2hvc3Rfb3BlbmFj Y19hc3luY190ZXN0IChzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqYXEgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewogICByZXR1cm4gMTsKIH0KIAot c3RhdGljIGludAotaG9zdF9vcGVuYWNjX2FzeW5jX3Rlc3RfYWxsICh2b2lk KQorc3RhdGljIHZvaWQKK2hvc3Rfb3BlbmFjY19hc3luY19zeW5jaHJvbml6 ZSAoc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFxCisJCQkJX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpKQogewotICByZXR1cm4gMTsKIH0KIAogc3RhdGlj IHZvaWQKLWhvc3Rfb3BlbmFjY19hc3luY193YWl0IChpbnQgYXN5bmMgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoraG9zdF9vcGVuYWNjX2FzeW5jX3Nl cmlhbGl6ZSAoc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFxMQorCQkJICAg ICAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkJICAgICAgc3RydWN0 IGdvYWNjX2FzeW5jcXVldWUgKmFxMgorCQkJICAgICAgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpKQogewogfQogCi1zdGF0aWMgdm9pZAotaG9zdF9vcGVu YWNjX2FzeW5jX3dhaXRfYXN5bmMgKGludCBhc3luYzEgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLAotCQkJICAgICAgIGludCBhc3luYzIgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpKQorc3RhdGljIGJvb2wKK2hvc3Rfb3BlbmFjY19h c3luY19ob3N0MmRldiAoaW50IG9yZCBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksCisJCQkgICAgIHZvaWQgKmRzdCBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksCisJCQkgICAgIGNvbnN0IHZvaWQgKnNyYyBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksCisJCQkgICAgIHNpemVfdCBuIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSwKKwkJCSAgICAgc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFx CisJCQkgICAgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKKyAgcmV0 dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCi1ob3N0X29wZW5hY2NfYXN5 bmNfd2FpdF9hbGwgKHZvaWQpCitzdGF0aWMgYm9vbAoraG9zdF9vcGVuYWNj X2FzeW5jX2RldjJob3N0IChpbnQgb3JkIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKKwkJCSAgICAgdm9pZCAqZHN0IF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKKwkJCSAgICAgY29uc3Qgdm9pZCAqc3JjIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSwKKwkJCSAgICAgc2l6ZV90IG4gX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLAorCQkJICAgICBzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAq YXEKKwkJCSAgICAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogeworICBy ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQKLWhvc3Rfb3BlbmFjY19h c3luY193YWl0X2FsbF9hc3luYyAoaW50IGFzeW5jIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSkKK2hvc3Rfb3BlbmFjY19hc3luY19xdWV1ZV9jYWxsYmFj ayAoc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFxCisJCQkJICAgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLAorCQkJCSAgIHZvaWQgKCpjYWxsYmFja19m bikodm9pZCAqKQorCQkJCSAgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwK KwkJCQkgICB2b2lkICp1c2VycHRyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSkKIHsKIH0KIAotc3RhdGljIHZvaWQKLWhvc3Rfb3BlbmFjY19hc3luY19z ZXRfYXN5bmMgKGludCBhc3luYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkp CitzdGF0aWMgc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKgoraG9zdF9vcGVu YWNjX2FzeW5jX2NvbnN0cnVjdCAodm9pZCkKIHsKKyAgcmV0dXJuIE5VTEw7 Cit9CisKK3N0YXRpYyBib29sCitob3N0X29wZW5hY2NfYXN5bmNfZGVzdHJ1 Y3QgKHN0cnVjdCBnb2FjY19hc3luY3F1ZXVlICphcQorCQkJICAgICBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSkpCit7CisgIHJldHVybiB0cnVlOwogfQog CiBzdGF0aWMgdm9pZCAqCkBAIC0yMzUsMTUgKzI2NiwxNyBAQCBzdGF0aWMg c3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyIGhvc3RfZGlzcGF0Y2ggPQogCiAg ICAgICAuZXhlY19mdW5jID0gaG9zdF9vcGVuYWNjX2V4ZWMsCiAKLSAgICAg IC5yZWdpc3Rlcl9hc3luY19jbGVhbnVwX2Z1bmMgPSBob3N0X29wZW5hY2Nf cmVnaXN0ZXJfYXN5bmNfY2xlYW51cCwKLQotICAgICAgLmFzeW5jX3Rlc3Rf ZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY190ZXN0LAotICAgICAgLmFzeW5j X3Rlc3RfYWxsX2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5bmNfdGVzdF9hbGws Ci0gICAgICAuYXN5bmNfd2FpdF9mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5j X3dhaXQsCi0gICAgICAuYXN5bmNfd2FpdF9hc3luY19mdW5jID0gaG9zdF9v cGVuYWNjX2FzeW5jX3dhaXRfYXN5bmMsCi0gICAgICAuYXN5bmNfd2FpdF9h bGxfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY193YWl0X2FsbCwKLSAgICAg IC5hc3luY193YWl0X2FsbF9hc3luY19mdW5jID0gaG9zdF9vcGVuYWNjX2Fz eW5jX3dhaXRfYWxsX2FzeW5jLAotICAgICAgLmFzeW5jX3NldF9hc3luY19m dW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX3NldF9hc3luYywKKyAgICAgIC5h c3luYyA9IHsKKwkuY29uc3RydWN0X2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5 bmNfY29uc3RydWN0LAorCS5kZXN0cnVjdF9mdW5jID0gaG9zdF9vcGVuYWNj X2FzeW5jX2Rlc3RydWN0LAorCS50ZXN0X2Z1bmMgPSBob3N0X29wZW5hY2Nf YXN5bmNfdGVzdCwKKwkuc3luY2hyb25pemVfZnVuYyA9IGhvc3Rfb3BlbmFj Y19hc3luY19zeW5jaHJvbml6ZSwKKwkuc2VyaWFsaXplX2Z1bmMgPSBob3N0 X29wZW5hY2NfYXN5bmNfc2VyaWFsaXplLAorCS5xdWV1ZV9jYWxsYmFja19m dW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX3F1ZXVlX2NhbGxiYWNrLAorCS5l eGVjX2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5bmNfZXhlYywKKwkuZGV2Mmhv c3RfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY19kZXYyaG9zdCwKKwkuaG9z dDJkZXZfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY19ob3N0MmRldiwKKyAg ICAgIH0sCiAKICAgICAgIC5jcmVhdGVfdGhyZWFkX2RhdGFfZnVuYyA9IGhv c3Rfb3BlbmFjY19jcmVhdGVfdGhyZWFkX2RhdGEsCiAgICAgICAuZGVzdHJv eV90aHJlYWRfZGF0YV9mdW5jID0gaG9zdF9vcGVuYWNjX2Rlc3Ryb3lfdGhy ZWFkX2RhdGEsCmRpZmYgLS1naXQgYS9saWJnb21wL29hY2MtaW5pdC5jIGIv bGliZ29tcC9vYWNjLWluaXQuYwppbmRleCA4ZGIyNGIxLi4yYzJmOTFjIDEw MDY0NAotLS0gYS9saWJnb21wL29hY2MtaW5pdC5jCisrKyBiL2xpYmdvbXAv b2FjYy1pbml0LmMKQEAgLTMwOSw3ICszMDksNyBAQCBhY2Nfc2h1dGRvd25f MSAoYWNjX2RldmljZV90IGQpCiAgICAgICBpZiAoYWNjX2Rldi0+c3RhdGUg PT0gR09NUF9ERVZJQ0VfSU5JVElBTElaRUQpCiAgICAgICAgIHsKIAkgIGRl dmljZXNfYWN0aXZlID0gdHJ1ZTsKLQkgIHJldCAmPSBhY2NfZGV2LT5maW5p X2RldmljZV9mdW5jIChhY2NfZGV2LT50YXJnZXRfaWQpOworCSAgcmV0ICY9 IGdvbXBfZmluaV9kZXZpY2UgKGFjY19kZXYpOwogCSAgYWNjX2Rldi0+c3Rh dGUgPSBHT01QX0RFVklDRV9VTklOSVRJQUxJWkVEOwogCX0KICAgICAgIGdv bXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7CkBAIC00MjYsOCAr NDI2LDggQEAgZ29hY2NfYXR0YWNoX2hvc3RfdGhyZWFkX3RvX2RldmljZSAo aW50IG9yZCkKICAgCiAgIHRoci0+dGFyZ2V0X3RscwogICAgID0gYWNjX2Rl di0+b3BlbmFjYy5jcmVhdGVfdGhyZWFkX2RhdGFfZnVuYyAob3JkKTsKLSAg Ci0gIGFjY19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFj Y19hc3luY19zeW5jKTsKKworICB0aHItPmRlZmF1bHRfYXN5bmMgPSBhY2Nf YXN5bmNfZGVmYXVsdDsKIH0KIAogLyogT3BlbkFDQyAyLjBhICgzLjIuMTIs IDMuMi4xMykgZG9lc24ndCBzcGVjaWZ5IHdoZXRoZXIgdGhlIHNlcmlhbGl6 YXRpb24gb2YKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1tZW0uYyBiL2xp YmdvbXAvb2FjYy1tZW0uYwppbmRleCA3MjQxNGI3Li4wN2EyNTI0IDEwMDY0 NAotLS0gYS9saWJnb21wL29hY2MtbWVtLmMKKysrIGIvbGliZ29tcC9vYWNj LW1lbS5jCkBAIC0xNzIsMTggKzE3MiwxMSBAQCBtZW1jcHlfdG9mcm9tX2Rl dmljZSAoYm9vbCBmcm9tLCB2b2lkICpkLCB2b2lkICpoLCBzaXplX3Qgcywg aW50IGFzeW5jLAogICAgICAgcmV0dXJuOwogICAgIH0KIAotICBpZiAoYXN5 bmMgPiBhY2NfYXN5bmNfc3luYykKLSAgICB0aHItPmRldi0+b3BlbmFjYy5h c3luY19zZXRfYXN5bmNfZnVuYyAoYXN5bmMpOwotCi0gIGJvb2wgcmV0ID0g KGZyb20KLQkgICAgICA/IHRoci0+ZGV2LT5kZXYyaG9zdF9mdW5jICh0aHIt PmRldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKQotCSAgICAgIDogdGhyLT5kZXYt Pmhvc3QyZGV2X2Z1bmMgKHRoci0+ZGV2LT50YXJnZXRfaWQsIGQsIGgsIHMp KTsKLQotICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLSAgICB0aHIt PmRldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5j X3N5bmMpOwotCi0gIGlmICghcmV0KQotICAgIGdvbXBfZmF0YWwgKCJlcnJv ciBpbiAlcyIsIGxpYmZubmFtZSk7CisgIGdvYWNjX2FxIGFxID0gZ2V0X2dv YWNjX2FzeW5jcXVldWUgKGFzeW5jKTsKKyAgaWYgKGZyb20pCisgICAgZ29t cF9jb3B5X2RldjJob3N0ICh0aHItPmRldiwgYXEsIGgsIGQsIHMpOworICBl bHNlCisgICAgZ29tcF9jb3B5X2hvc3QyZGV2ICh0aHItPmRldiwgYXEsIGQs IGgsIHMsIC8qIFRPRE86IGNidWY/ICovIE5VTEwpOwogfQogCiB2b2lkCkBA IC01MDksMTcgKzUwMiwxMyBAQCBwcmVzZW50X2NyZWF0ZV9jb3B5ICh1bnNp Z25lZCBmLCB2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jKQogCiAgICAg ICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOwogCi0gICAg ICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLQlhY2NfZGV2LT5vcGVu YWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7CisgICAgICBnb2Fj Y19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChhc3luYyk7CiAKLSAg ICAgIHRndCA9IGdvbXBfbWFwX3ZhcnMgKGFjY19kZXYsIG1hcG51bSwgJmhv c3RhZGRycywgTlVMTCwgJnMsICZraW5kcywgdHJ1ZSwKLQkJCSAgIEdPTVBf TUFQX1ZBUlNfT1BFTkFDQyk7CisgICAgICB0Z3QgPSBnb21wX21hcF92YXJz X2FzeW5jIChhY2NfZGV2LCBhcSwgbWFwbnVtLCAmaG9zdGFkZHJzLCBOVUxM LCAmcywKKwkJCQkgJmtpbmRzLCB0cnVlLCBHT01QX01BUF9WQVJTX09QRU5B Q0MpOwogICAgICAgLyogSW5pdGlhbGl6ZSBkeW5hbWljIHJlZmNvdW50LiAg Ki8KICAgICAgIHRndC0+bGlzdFswXS5rZXktPmR5bmFtaWNfcmVmY291bnQg PSAxOwogCi0gICAgICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLQlh Y2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhY2NfYXN5 bmNfc3luYyk7Ci0KICAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19kZXYt PmxvY2spOwogCiAgICAgICBkID0gdGd0LT50b19mcmVlOwpAQCAtNjczLDEz ICs2NjIsOSBAQCBkZWxldGVfY29weW91dCAodW5zaWduZWQgZiwgdm9pZCAq aCwgc2l6ZV90IHMsIGludCBhc3luYywgY29uc3QgY2hhciAqbGliZm5uYW1l KQogCiAgICAgICBpZiAoZiAmIEZMQUdfQ09QWU9VVCkKIAl7Ci0JICBpZiAo YXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLQkgICAgYWNjX2Rldi0+b3BlbmFj Yy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYXN5bmMpOwotCSAgYWNjX2Rldi0+ ZGV2Mmhvc3RfZnVuYyAoYWNjX2Rldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKTsK LQkgIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQotCSAgICBhY2NfZGV2 LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhY2NfYXN5bmNfc3lu Yyk7CisJICBnb2FjY19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChh c3luYyk7CisJICBnb21wX2NvcHlfZGV2Mmhvc3QgKGFjY19kZXYsIGFxLCBo LCBkLCBzKTsKIAl9Ci0KICAgICAgIGdvbXBfcmVtb3ZlX3ZhciAoYWNjX2Rl diwgbik7CiAgICAgfQogCkBAIC03NjIsMTYgKzc0NywxMiBAQCB1cGRhdGVf ZGV2X2hvc3QgKGludCBpc19kZXYsIHZvaWQgKmgsIHNpemVfdCBzLCBpbnQg YXN5bmMpCiAgIGQgPSAodm9pZCAqKSAobi0+dGd0LT50Z3Rfc3RhcnQgKyBu LT50Z3Rfb2Zmc2V0CiAJCSsgKHVpbnRwdHJfdCkgaCAtIG4tPmhvc3Rfc3Rh cnQpOwogCi0gIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQotICAgIGFj Y19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFzeW5jKTsK KyAgZ29hY2NfYXEgYXEgPSBnZXRfZ29hY2NfYXN5bmNxdWV1ZSAoYXN5bmMp OwogCiAgIGlmIChpc19kZXYpCi0gICAgYWNjX2Rldi0+aG9zdDJkZXZfZnVu YyAoYWNjX2Rldi0+dGFyZ2V0X2lkLCBkLCBoLCBzKTsKKyAgICBnb21wX2Nv cHlfaG9zdDJkZXYgKGFjY19kZXYsIGFxLCBkLCBoLCBzLCAvKiBUT0RPOiBj YnVmPyAqLyBOVUxMKTsKICAgZWxzZQotICAgIGFjY19kZXYtPmRldjJob3N0 X2Z1bmMgKGFjY19kZXYtPnRhcmdldF9pZCwgaCwgZCwgcyk7Ci0KLSAgaWYg KGFzeW5jID4gYWNjX2FzeW5jX3N5bmMpCi0gICAgYWNjX2Rldi0+b3BlbmFj Yy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5jX3N5bmMpOworICAg IGdvbXBfY29weV9kZXYyaG9zdCAoYWNjX2RldiwgYXEsIGgsIGQsIHMpOwog CiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7CiB9CkBA IC04MDIsNyArNzgzLDcgQEAgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jICh2b2lk ICpoLCBzaXplX3QgcywgaW50IGFzeW5jKQogCiB2b2lkCiBnb21wX2FjY19p bnNlcnRfcG9pbnRlciAoc2l6ZV90IG1hcG51bSwgdm9pZCAqKmhvc3RhZGRy cywgc2l6ZV90ICpzaXplcywKLQkJCSB2b2lkICpraW5kcykKKwkJCSB2b2lk ICpraW5kcywgaW50IGFzeW5jKQogewogICBzdHJ1Y3QgdGFyZ2V0X21lbV9k ZXNjICp0Z3Q7CiAgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNj X3RocmVhZCAoKTsKQEAgLTgzMiw4ICs4MTMsOSBAQCBnb21wX2FjY19pbnNl cnRfcG9pbnRlciAoc2l6ZV90IG1hcG51bSwgdm9pZCAqKmhvc3RhZGRycywg c2l6ZV90ICpzaXplcywKICAgICB9CiAKICAgZ29tcF9kZWJ1ZyAoMCwgIiAg JXM6IHByZXBhcmUgbWFwcGluZ3NcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gIHRn dCA9IGdvbXBfbWFwX3ZhcnMgKGFjY19kZXYsIG1hcG51bSwgaG9zdGFkZHJz LAotCQkgICAgICAgTlVMTCwgc2l6ZXMsIGtpbmRzLCB0cnVlLCBHT01QX01B UF9WQVJTX09QRU5BQ0MpOworICBnb2FjY19hcSBhcSA9IGdldF9nb2FjY19h c3luY3F1ZXVlIChhc3luYyk7CisgIHRndCA9IGdvbXBfbWFwX3ZhcnNfYXN5 bmMgKGFjY19kZXYsIGFxLCBtYXBudW0sIGhvc3RhZGRycywKKwkJCSAgICAg TlVMTCwgc2l6ZXMsIGtpbmRzLCB0cnVlLCBHT01QX01BUF9WQVJTX09QRU5B Q0MpOwogICBnb21wX2RlYnVnICgwLCAiICAlczogbWFwcGluZ3MgcHJlcGFy ZWRcbiIsIF9fRlVOQ1RJT05fXyk7CiAKICAgLyogSW5pdGlhbGl6ZSBkeW5h bWljIHJlZmNvdW50LiAgKi8KQEAgLTkyNyw3ICs5MDksMTAgQEAgZ29tcF9h Y2NfcmVtb3ZlX3BvaW50ZXIgKHZvaWQgKmgsIHNpemVfdCBzLCBib29sIGZv cmNlX2NvcHlmcm9tLCBpbnQgYXN5bmMsCiAgICAgICBpZiAoYXN5bmMgPCBh Y2NfYXN5bmNfbm92YWwpCiAJZ29tcF91bm1hcF92YXJzICh0LCB0cnVlKTsK ICAgICAgIGVsc2UKLQl0LT5kZXZpY2VfZGVzY3ItPm9wZW5hY2MucmVnaXN0 ZXJfYXN5bmNfY2xlYW51cF9mdW5jICh0LCBhc3luYyk7CisJeworCSAgZ29h Y2NfYXEgYXEgPSBnZXRfZ29hY2NfYXN5bmNxdWV1ZSAoYXN5bmMpOworCSAg Z29hY2NfYXN5bmNfY29weW91dF91bm1hcF92YXJzICh0LCBhcSk7CisJfQog ICAgIH0KIAogICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2sp OwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vYWNjLXBhcmFsbGVsLmMgYi9saWJn b21wL29hY2MtcGFyYWxsZWwuYwppbmRleCBiZmU4ODc2Li4wN2QwMzM4IDEw MDY0NAotLS0gYS9saWJnb21wL29hY2MtcGFyYWxsZWwuYworKysgYi9saWJn b21wL29hY2MtcGFyYWxsZWwuYwpAQCAtMjEyLDggKzIxMiw2IEBAIEdPQUND X3BhcmFsbGVsX2tleWVkIChpbnQgZGV2aWNlLCB2b2lkICgqZm4pICh2b2lk ICopLAogICAgIH0KICAgdmFfZW5kIChhcCk7CiAgIAotICBhY2NfZGV2LT5v cGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7Ci0KICAgaWYg KCEoYWNjX2Rldi0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NBUF9O QVRJVkVfRVhFQykpCiAgICAgewogICAgICAgay5ob3N0X3N0YXJ0ID0gKHVp bnRwdHJfdCkgZm47CkBAIC0yMzAsNDMgKzIyOCwyOCBAQCBHT0FDQ19wYXJh bGxlbF9rZXllZCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9pZCAqKSwK ICAgZWxzZQogICAgIHRndF9mbiA9ICh2b2lkICgqKSkgZm47CiAKLSAgdGd0 ID0gZ29tcF9tYXBfdmFycyAoYWNjX2RldiwgbWFwbnVtLCBob3N0YWRkcnMs IE5VTEwsIHNpemVzLCBraW5kcywgdHJ1ZSwKLQkJICAgICAgIEdPTVBfTUFQ X1ZBUlNfT1BFTkFDQyk7CisgIGdvYWNjX2FxIGFxID0gZ2V0X2dvYWNjX2Fz eW5jcXVldWUgKGFzeW5jKTsKKworICB0Z3QgPSBnb21wX21hcF92YXJzX2Fz eW5jIChhY2NfZGV2LCBhcSwgbWFwbnVtLCBob3N0YWRkcnMsIE5VTEwsIHNp emVzLCBraW5kcywKKwkJCSAgICAgdHJ1ZSwgR09NUF9NQVBfVkFSU19PUEVO QUNDKTsKIAogICBkZXZhZGRycyA9IGdvbXBfYWxsb2NhIChzaXplb2YgKHZv aWQgKikgKiBtYXBudW0pOwogICBmb3IgKGkgPSAwOyBpIDwgbWFwbnVtOyBp KyspCiAgICAgZGV2YWRkcnNbaV0gPSAodm9pZCAqKSAodGd0LT5saXN0W2ld LmtleS0+dGd0LT50Z3Rfc3RhcnQKIAkJCSAgICArIHRndC0+bGlzdFtpXS5r ZXktPnRndF9vZmZzZXQpOwotCi0gIGFjY19kZXYtPm9wZW5hY2MuZXhlY19m dW5jICh0Z3RfZm4sIG1hcG51bSwgaG9zdGFkZHJzLCBkZXZhZGRycywKLQkJ CSAgICAgIGFzeW5jLCBkaW1zLCB0Z3QpOwotCi0gIC8qIElmIHJ1bm5pbmcg c3luY2hyb25vdXNseSwgdW5tYXAgaW1tZWRpYXRlbHkuICAqLwotICBib29s IGNvcHlmcm9tID0gdHJ1ZTsKLSAgaWYgKGFzeW5jX3N5bmNocm9ub3VzX3Ag KGFzeW5jKSkKLSAgICBnb21wX3VubWFwX3ZhcnMgKHRndCwgdHJ1ZSk7Cisg IGlmIChhcSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGFjY19kZXYtPm9wZW5h Y2MuZXhlY19mdW5jICh0Z3RfZm4sIG1hcG51bSwgaG9zdGFkZHJzLCBkZXZh ZGRycywKKwkJCQkgIGRpbXMsIHRndCk7CisgICAgICAvKiBJZiBydW5uaW5n IHN5bmNocm9ub3VzbHksIHVubWFwIGltbWVkaWF0ZWx5LiAgKi8KKyAgICAg IGdvbXBfdW5tYXBfdmFycyAodGd0LCB0cnVlKTsKKyAgICB9CiAgIGVsc2UK ICAgICB7Ci0gICAgICBib29sIGFzeW5jX3VubWFwID0gZmFsc2U7Ci0gICAg ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRndC0+bGlzdF9jb3VudDsgaSsr KQotCXsKLQkgIHNwbGF5X3RyZWVfa2V5IGsgPSB0Z3QtPmxpc3RbaV0ua2V5 OwotCSAgaWYgKGsgJiYgay0+cmVmY291bnQgPT0gMSkKLQkgICAgewotCSAg ICAgIGFzeW5jX3VubWFwID0gdHJ1ZTsKLQkgICAgICBicmVhazsKLQkgICAg fQotCX0KLSAgICAgIGlmIChhc3luY191bm1hcCkKLQl0Z3QtPmRldmljZV9k ZXNjci0+b3BlbmFjYy5yZWdpc3Rlcl9hc3luY19jbGVhbnVwX2Z1bmMgKHRn dCwgYXN5bmMpOwotICAgICAgZWxzZQotCXsKLQkgIGNvcHlmcm9tID0gZmFs c2U7Ci0JICBnb21wX3VubWFwX3ZhcnMgKHRndCwgY29weWZyb20pOwotCX0K KyAgICAgIGFjY19kZXYtPm9wZW5hY2MuYXN5bmMuZXhlY19mdW5jICh0Z3Rf Zm4sIG1hcG51bSwgaG9zdGFkZHJzLCBkZXZhZGRycywKKwkJCQkJZGltcywg dGd0LCBhcSk7CisgICAgICBnb2FjY19hc3luY19jb3B5b3V0X3VubWFwX3Zh cnMgKHRndCwgYXEpOwogICAgIH0KLQotICBhY2NfZGV2LT5vcGVuYWNjLmFz eW5jX3NldF9hc3luY19mdW5jIChhY2NfYXN5bmNfc3luYyk7CiB9CiAKIC8q IExlZ2FjeSBlbnRyeSBwb2ludCwgb25seSBwcm92aWRlIGhvc3QgZXhlY3V0 aW9uLiAgKi8KQEAgLTM3Nyw4ICszNjAsNiBAQCBHT0FDQ19lbnRlcl9leGl0 X2RhdGEgKGludCBkZXZpY2UsIHNpemVfdCBtYXBudW0sCiAJZmluYWxpemUg PSB0cnVlOwogICAgIH0KIAotICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3Nl dF9hc3luY19mdW5jIChhc3luYyk7Ci0KICAgLyogRGV0ZXJtaW5lIGlmIHRo aXMgaXMgYW4gImFjYyBlbnRlciBkYXRhIi4gICovCiAgIGZvciAoaSA9IDA7 IGkgPCBtYXBudW07ICsraSkKICAgICB7CkBAIC00NTAsNyArNDMxLDcgQEAg R09BQ0NfZW50ZXJfZXhpdF9kYXRhIChpbnQgZGV2aWNlLCBzaXplX3QgbWFw bnVtLAogCSAgZWxzZQogCSAgICB7CiAJICAgICAgZ29tcF9hY2NfaW5zZXJ0 X3BvaW50ZXIgKHBvaW50ZXIsICZob3N0YWRkcnNbaV0sCi0JCQkJICAgICAg ICZzaXplc1tpXSwgJmtpbmRzW2ldKTsKKwkJCQkgICAgICAgJnNpemVzW2ld LCAma2luZHNbaV0sIGFzeW5jKTsKIAkgICAgICAvKiBJbmNyZW1lbnQgJ2kn IGJ5IHR3byBiZWNhdXNlIE9wZW5BQ0MgcmVxdWlyZXMgZm9ydHJhbgogCQkg YXJyYXlzIHRvIGJlIGNvbnRpZ3VvdXMsIHNvIGVhY2ggUFNFVCBpcyBhc3Nv Y2lhdGVkIHdpdGgKIAkJIG9uZSBvZiBNQVBfRk9SQ0VfQUxMT0MvTUFQX0ZP UkNFX1BSRVNFVC9NQVBfRk9SQ0VfVE8sIGFuZApAQCAtNDc1LDE3ICs0NTYs MTcgQEAgR09BQ0NfZW50ZXJfZXhpdF9kYXRhIChpbnQgZGV2aWNlLCBzaXpl X3QgbWFwbnVtLAogCQlpZiAoYWNjX2lzX3ByZXNlbnQgKGhvc3RhZGRyc1tp XSwgc2l6ZXNbaV0pKQogCQkgIHsKIAkJICAgIGlmIChmaW5hbGl6ZSkKLQkJ ICAgICAgYWNjX2RlbGV0ZV9maW5hbGl6ZSAoaG9zdGFkZHJzW2ldLCBzaXpl c1tpXSk7CisJCSAgICAgIGFjY19kZWxldGVfZmluYWxpemVfYXN5bmMgKGhv c3RhZGRyc1tpXSwgc2l6ZXNbaV0sIGFzeW5jKTsKIAkJICAgIGVsc2UKLQkJ ICAgICAgYWNjX2RlbGV0ZSAoaG9zdGFkZHJzW2ldLCBzaXplc1tpXSk7CisJ CSAgICAgIGFjY19kZWxldGVfYXN5bmMgKGhvc3RhZGRyc1tpXSwgc2l6ZXNb aV0sIGFzeW5jKTsKIAkJICB9CiAJCWJyZWFrOwogCSAgICAgIGNhc2UgR09N UF9NQVBfRlJPTToKIAkgICAgICBjYXNlIEdPTVBfTUFQX0ZPUkNFX0ZST006 CiAJCWlmIChmaW5hbGl6ZSkKLQkJICBhY2NfY29weW91dF9maW5hbGl6ZSAo aG9zdGFkZHJzW2ldLCBzaXplc1tpXSk7CisJCSAgYWNjX2NvcHlvdXRfZmlu YWxpemVfYXN5bmMgKGhvc3RhZGRyc1tpXSwgc2l6ZXNbaV0sIGFzeW5jKTsK IAkJZWxzZQotCQkgIGFjY19jb3B5b3V0IChob3N0YWRkcnNbaV0sIHNpemVz W2ldKTsKKwkJICBhY2NfY29weW91dF9hc3luYyAoaG9zdGFkZHJzW2ldLCBz aXplc1tpXSwgYXN5bmMpOwogCQlicmVhazsKIAkgICAgICBkZWZhdWx0Ogog CQlnb21wX2ZhdGFsICgiPj4+PiBHT0FDQ19lbnRlcl9leGl0X2RhdGEgVU5I QU5ETEVEIGtpbmQgMHglLjJ4IiwKQEAgLTUwMyw4ICs0ODQsNiBAQCBHT0FD Q19lbnRlcl9leGl0X2RhdGEgKGludCBkZXZpY2UsIHNpemVfdCBtYXBudW0s CiAJICAgIGkgKz0gcG9pbnRlciAtIDE7CiAJICB9CiAgICAgICB9Ci0KLSAg YWNjX2Rldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2Fz eW5jX3N5bmMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTE3LDE3ICs0OTYs MjIgQEAgZ29hY2Nfd2FpdCAoaW50IGFzeW5jLCBpbnQgbnVtX3dhaXRzLCB2 YV9saXN0ICphcCkKICAgICB7CiAgICAgICBpbnQgcWlkID0gdmFfYXJnICgq YXAsIGludCk7CiAgICAgICAKLSAgICAgIGlmIChhY2NfYXN5bmNfdGVzdCAo cWlkKSkKKyAgICAgIGdvYWNjX2FxIGFxID0gZ2V0X2dvYWNjX2FzeW5jcXVl dWUgKHFpZCk7CisgICAgICBpZiAoYWNjX2Rldi0+b3BlbmFjYy5hc3luYy50 ZXN0X2Z1bmMgKGFxKSkKIAljb250aW51ZTsKLQogICAgICAgaWYgKGFzeW5j ID09IGFjY19hc3luY19zeW5jKQotCWFjY193YWl0IChxaWQpOworCWFjY19k ZXYtPm9wZW5hY2MuYXN5bmMuc3luY2hyb25pemVfZnVuYyAoYXEpOwogICAg ICAgZWxzZSBpZiAocWlkID09IGFzeW5jKQotCTsvKiBJZiB3ZSdyZSB3YWl0 aW5nIG9uIHRoZSBzYW1lIGFzeW5jaHJvbm91cyBxdWV1ZSBhcyB3ZSdyZQot CSAgICBsYXVuY2hpbmcgb24sIHRoZSBxdWV1ZSBpdHNlbGYgd2lsbCBvcmRl ciB3b3JrIGFzCi0JICAgIHJlcXVpcmVkLCBzbyB0aGVyZSdzIG5vIG5lZWQg dG8gd2FpdCBleHBsaWNpdGx5LiAgKi8KKwkvKiBJZiB3ZSdyZSB3YWl0aW5n IG9uIHRoZSBzYW1lIGFzeW5jaHJvbm91cyBxdWV1ZSBhcyB3ZSdyZQorCSAg IGxhdW5jaGluZyBvbiwgdGhlIHF1ZXVlIGl0c2VsZiB3aWxsIG9yZGVyIHdv cmsgYXMKKwkgICByZXF1aXJlZCwgc28gdGhlcmUncyBubyBuZWVkIHRvIHdh aXQgZXhwbGljaXRseS4gICovCisJOwogICAgICAgZWxzZQotCWFjY19kZXYt Pm9wZW5hY2MuYXN5bmNfd2FpdF9hc3luY19mdW5jIChxaWQsIGFzeW5jKTsK Kwl7CisJICBnb2FjY19hcSBhcTIgPSBnZXRfZ29hY2NfYXN5bmNxdWV1ZSAo YXN5bmMpOworCSAgYWNjX2Rldi0+b3BlbmFjYy5hc3luYy5zeW5jaHJvbml6 ZV9mdW5jIChhcSk7CisJICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jLnNlcmlh bGl6ZV9mdW5jIChhcSwgYXEyKTsKKwl9CiAgICAgfQogfQogCkBAIC01NTks OCArNTQzLDYgQEAgR09BQ0NfdXBkYXRlIChpbnQgZGV2aWNlLCBzaXplX3Qg bWFwbnVtLAogICBlbHNlIGlmIChudW1fd2FpdHMgPT0gYWNjX2FzeW5jX25v dmFsKQogICAgIGFjY193YWl0X2FsbF9hc3luYyAoYXN5bmMpOwogCi0gIGFj Y19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFzeW5jKTsK LQogICBib29sIHVwZGF0ZV9kZXZpY2UgPSBmYWxzZTsKICAgZm9yIChpID0g MDsgaSA8IG1hcG51bTsgKytpKQogICAgIHsKQEAgLTYwMCw3ICs1ODIsNyBA QCBHT0FDQ191cGRhdGUgKGludCBkZXZpY2UsIHNpemVfdCBtYXBudW0sCiAJ ICAvKiBGYWxsdGhydSAgKi8KIAljYXNlIEdPTVBfTUFQX0ZPUkNFX1RPOgog CSAgdXBkYXRlX2RldmljZSA9IHRydWU7Ci0JICBhY2NfdXBkYXRlX2Rldmlj ZSAoaG9zdGFkZHJzW2ldLCBzaXplc1tpXSk7CisJICBhY2NfdXBkYXRlX2Rl dmljZV9hc3luYyAoaG9zdGFkZHJzW2ldLCBzaXplc1tpXSwgYXN5bmMpOwog CSAgYnJlYWs7CiAKIAljYXNlIEdPTVBfTUFQX0ZST006CkBAIC02MTIsNyAr NTk0LDcgQEAgR09BQ0NfdXBkYXRlIChpbnQgZGV2aWNlLCBzaXplX3QgbWFw bnVtLAogCSAgLyogRmFsbHRocnUgICovCiAJY2FzZSBHT01QX01BUF9GT1JD RV9GUk9NOgogCSAgdXBkYXRlX2RldmljZSA9IGZhbHNlOwotCSAgYWNjX3Vw ZGF0ZV9zZWxmIChob3N0YWRkcnNbaV0sIHNpemVzW2ldKTsKKwkgIGFjY191 cGRhdGVfc2VsZl9hc3luYyAoaG9zdGFkZHJzW2ldLCBzaXplc1tpXSwgYXN5 bmMpOwogCSAgYnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtNjIwLDggKzYwMiw2 IEBAIEdPQUNDX3VwZGF0ZSAoaW50IGRldmljZSwgc2l6ZV90IG1hcG51bSwK IAkgIGJyZWFrOwogCX0KICAgICB9Ci0KLSAgYWNjX2Rldi0+b3BlbmFjYy5h c3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5jX3N5bmMpOwogfQogCiB2 b2lkCkBAIC02MzgsNyArNjE4LDcgQEAgR09BQ0Nfd2FpdCAoaW50IGFzeW5j LCBpbnQgbnVtX3dhaXRzLCAuLi4pCiAgIGVsc2UgaWYgKGFzeW5jID09IGFj Y19hc3luY19zeW5jKQogICAgIGFjY193YWl0X2FsbCAoKTsKICAgZWxzZSBp ZiAoYXN5bmMgPT0gYWNjX2FzeW5jX25vdmFsKQotICAgIGdvYWNjX3RocmVh ZCAoKS0+ZGV2LT5vcGVuYWNjLmFzeW5jX3dhaXRfYWxsX2FzeW5jX2Z1bmMg KGFjY19hc3luY19ub3ZhbCk7CisgICAgYWNjX3dhaXRfYWxsX2FzeW5jIChh c3luYyk7CiB9CiAKIGludApkaWZmIC0tZ2l0IGEvbGliZ29tcC9vYWNjLXBs dWdpbi5jIGIvbGliZ29tcC9vYWNjLXBsdWdpbi5jCmluZGV4IGMwNGRiOTAu LmExMTRjYzcgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb2FjYy1wbHVnaW4uYwor KysgYi9saWJnb21wL29hY2MtcGx1Z2luLmMKQEAgLTMwLDE3ICszMCw2IEBA CiAjaW5jbHVkZSAib2FjYy1wbHVnaW4uaCIKICNpbmNsdWRlICJvYWNjLWlu dC5oIgogCi12b2lkCi1HT01QX1BMVUdJTl9hc3luY191bm1hcF92YXJzICh2 b2lkICpwdHIsIGludCBhc3luYykKLXsKLSAgc3RydWN0IHRhcmdldF9tZW1f ZGVzYyAqdGd0ID0gcHRyOwotICBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3Ig KmRldmljZXAgPSB0Z3QtPmRldmljZV9kZXNjcjsKLQotICBkZXZpY2VwLT5v cGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7Ci0gIGdvbXBf dW5tYXBfdmFycyAodGd0LCB0cnVlKTsKLSAgZGV2aWNlcC0+b3BlbmFjYy5h c3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5jX3N5bmMpOwotfQotCiAv KiBSZXR1cm4gdGhlIHRhcmdldC1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBUTFMg ZGF0YSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiAgKi8KIAogdm9pZCAqCmRp ZmYgLS1naXQgYS9saWJnb21wL29wZW5hY2MuaCBiL2xpYmdvbXAvb3BlbmFj Yy5oCmluZGV4IGY2MWJiNzcuLmVkZTU5ZDcgMTAwNjQ0Ci0tLSBhL2xpYmdv bXAvb3BlbmFjYy5oCisrKyBiL2xpYmdvbXAvb3BlbmFjYy5oCkBAIC02Myw2 ICs2Myw3IEBAIHR5cGVkZWYgZW51bSBhY2NfZGV2aWNlX3QgewogCiB0eXBl ZGVmIGVudW0gYWNjX2FzeW5jX3QgewogICAvKiBLZWVwIGluIHN5bmMgd2l0 aCBpbmNsdWRlL2dvbXAtY29uc3RhbnRzLmguICAqLworICBhY2NfYXN5bmNf ZGVmYXVsdCA9IDAsCiAgIGFjY19hc3luY19ub3ZhbCA9IC0xLAogICBhY2Nf YXN5bmNfc3luYyAgPSAtMgogfSBhY2NfYXN5bmNfdDsKQEAgLTcyLDYgKzcz LDggQEAgdm9pZCBhY2Nfc2V0X2RldmljZV90eXBlIChhY2NfZGV2aWNlX3Qp IF9fR09BQ0NfTk9USFJPVzsKIGFjY19kZXZpY2VfdCBhY2NfZ2V0X2Rldmlj ZV90eXBlICh2b2lkKSBfX0dPQUNDX05PVEhST1c7CiB2b2lkIGFjY19zZXRf ZGV2aWNlX251bSAoaW50LCBhY2NfZGV2aWNlX3QpIF9fR09BQ0NfTk9USFJP VzsKIGludCBhY2NfZ2V0X2RldmljZV9udW0gKGFjY19kZXZpY2VfdCkgX19H T0FDQ19OT1RIUk9XOwordm9pZCBhY2Nfc2V0X2RlZmF1bHRfYXN5bmMgKGlu dCkgX19HT0FDQ19OT1RIUk9XOworaW50IGFjY19nZXRfZGVmYXVsdF9hc3lu YyAodm9pZCkgX19HT0FDQ19OT1RIUk9XOwogaW50IGFjY19hc3luY190ZXN0 IChpbnQpIF9fR09BQ0NfTk9USFJPVzsKIGludCBhY2NfYXN5bmNfdGVzdF9h bGwgKHZvaWQpIF9fR09BQ0NfTk9USFJPVzsKIHZvaWQgYWNjX3dhaXQgKGlu dCkgX19HT0FDQ19OT1RIUk9XOwo= --------------F58D7EE0D58F2D395EB7FE3E--