From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 78958 invoked by alias); 5 Jan 2016 14:22:35 -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 78948 invoked by uid 89); 5 Jan 2016 14:22:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.2 required=5.0 tests=AWL,BAYES_50,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.2 spammy=H*r:Tue, HTo:U*thomas, transfers, individually 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, 05 Jan 2016 14:22:31 +0000 Received: from svr-orw-fem-04.mgc.mentorg.com ([147.34.97.41]) by relay1.mentorg.com with esmtp id 1aGSVI-0005ZQ-5m from ChungLin_Tang@mentor.com ; Tue, 05 Jan 2016 06:22:28 -0800 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-fem-04.mgc.mentorg.com (147.34.97.41) with Microsoft SMTP Server id 14.3.224.2; Tue, 5 Jan 2016 06:22:27 -0800 Subject: Re: [PATCH 1/3, libgomp] Resolve libgomp plugin deadlock on exit, libgomp proper parts To: Jakub Jelinek , Nathan Sidwell , Thomas Schwinge , "Verbin, Ilya" , gcc-patches References: <566EC2F4.1030109@codesourcery.com> <566EE49A.3050403@codesourcery.com> From: Chung-Lin Tang Message-ID: <568BD1A1.4070904@codesourcery.com> Date: Tue, 05 Jan 2016 14:22:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <566EE49A.3050403@codesourcery.com> Content-Type: multipart/mixed; boundary="------------090601040902090200020905" X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg00158.txt.bz2 --------------090601040902090200020905 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-length: 3012 Patch has been updated to accommodate the gomp_fini_device() removal changes. And ping. On 2015/12/14 11:47 PM, Chung-Lin Tang wrote: > [sorry, forgot to C gcc-patches in last send] > > Hi Jakub, > these patches are a revision of https://gcc.gnu.org/ml/gcc-patches/2015-08/msg01701.html > since that patch set have bitrotten by now. > > To recap the original situation, due to the way that device locks are held > when entering plugin code, a GOMP_PLUGIN_fatal() call will deadlock when the > GOMP_unregister_var() exit destructor tries to obtain the same device lock. > > This patch set revises many functions on libgomp plugin interface to return false on error, > and back to libgomp to release the lock and call gomp_fatal() there. > > This first patch is the changes for the machine independent libgomp proper. The entire patch > set was tested without regressions. Is this okay for trunk? > > Thanks, > Chung-Lin > > 2015-12-14 Chung-Lin Tang > > * target.c (gomp_device_copy): New function. > (gomp_copy_host2dev): Likewise. > (gomp_copy_dev2host): Likewise. > (gomp_free_device_memory): Likewise. > (gomp_map_vars_existing): Adjust to call gomp_copy_host2dev(). > (gomp_map_pointer): Likewise. > (gomp_map_vars): Adjust to call gomp_copy_host2dev(), handle > NULL value from alloc_func plugin hook. > (gomp_unmap_tgt): Adjust to call gomp_free_device_memory(). > (gomp_copy_from_async): Adjust to call gomp_copy_dev2host(). > (gomp_unmap_vars): Likewise. > (gomp_update): Adjust to call gomp_copy_dev2host() and > gomp_copy_host2dev() functions. > (gomp_init_device): Handle false value from init_device_func > plugin hook. > (gomp_fini_device): Handle false value from fini_device_func > plugin hook. > (gomp_exit_data): Adjust to call gomp_copy_dev2host(). > (omp_target_free): Adjust to call gomp_free_device_memory(). > (omp_target_memcpy): Handle return values from host2dev_func, > dev2host_func, and dev2dev_func plugin hooks. > (omp_target_memcpy_rect_worker): Likewise. > * libgomp.h (struct gomp_device_descr): Adjust return type of > init_device_func, fini_device_func, free_func, dev2host_func, > host2dev_func, and dev2dev_func plugin hooks from 'void *' to > bool. > * oacc-host.c (host_init_device): Change return type to bool. > (host_fini_device): Likewise. > (host_free): Likewise. > (host_dev2host): Likewise. > (host_host2dev): Likewise. > * oacc-mem.c (acc_free): Handle plugin hook fatal error case. > (acc_memcpy_to_device): Likewise. > (acc_memcpy_from_device): Likewise. > (delete_copyout): Add libfnname parameter, handle free_func > hook fatal error case. > (acc_delete): Adjust delete_copyout call. > (acc_copyout): Likewise. > > > --------------090601040902090200020905 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="x.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="x.diff" Content-length: 27963 SW5kZXg6IGxpYmdvbXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aWJnb21wLmgJKHJldmlzaW9uIDIzMjA0NykKKysrIGxpYmdvbXAuaAkod29y a2luZyBjb3B5KQpAQCAtOTI3LDE2ICs5MjcsMTcgQEAgc3RydWN0IGdvbXBf ZGV2aWNlX2Rlc2NyCiAgIHVuc2lnbmVkIGludCAoKmdldF9jYXBzX2Z1bmMp ICh2b2lkKTsKICAgaW50ICgqZ2V0X3R5cGVfZnVuYykgKHZvaWQpOwogICBp bnQgKCpnZXRfbnVtX2RldmljZXNfZnVuYykgKHZvaWQpOwotICB2b2lkICgq aW5pdF9kZXZpY2VfZnVuYykgKGludCk7Ci0gIHZvaWQgKCpmaW5pX2Rldmlj ZV9mdW5jKSAoaW50KTsKKyAgYm9vbCAoKmluaXRfZGV2aWNlX2Z1bmMpIChp bnQpOworICBib29sICgqZmluaV9kZXZpY2VfZnVuYykgKGludCk7CiAgIHVu c2lnbmVkICgqdmVyc2lvbl9mdW5jKSAodm9pZCk7CiAgIGludCAoKmxvYWRf aW1hZ2VfZnVuYykgKGludCwgdW5zaWduZWQsIGNvbnN0IHZvaWQgKiwgc3Ry dWN0IGFkZHJfcGFpciAqKik7CiAgIHZvaWQgKCp1bmxvYWRfaW1hZ2VfZnVu YykgKGludCwgdW5zaWduZWQsIGNvbnN0IHZvaWQgKik7CiAgIHZvaWQgKigq YWxsb2NfZnVuYykgKGludCwgc2l6ZV90KTsKLSAgdm9pZCAoKmZyZWVfZnVu YykgKGludCwgdm9pZCAqKTsKLSAgdm9pZCAqKCpkZXYyaG9zdF9mdW5jKSAo aW50LCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKLSAgdm9pZCAq KCpob3N0MmRldl9mdW5jKSAoaW50LCB2b2lkICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90KTsKLSAgdm9pZCAqKCpkZXYyZGV2X2Z1bmMpIChpbnQsIHZvaWQg KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOworICBib29sICgqZnJlZV9mdW5j KSAoaW50LCB2b2lkICopOworICBib29sICgqZGV2Mmhvc3RfZnVuYykgKGlu dCwgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CisgIGJvb2wgKCpo b3N0MmRldl9mdW5jKSAoaW50LCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKKyAgLyp4eHgqLworICBib29sICgqZGV2MmRldl9mdW5jKSAoaW50 LCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKICAgdm9pZCAoKnJ1 bl9mdW5jKSAoaW50LCB2b2lkICosIHZvaWQgKik7CiAgIHZvaWQgKCphc3lu Y19ydW5fZnVuYykgKGludCwgdm9pZCAqLCB2b2lkICosIHZvaWQgKik7CiAK SW5kZXg6IG9hY2MtaG9zdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IG9hY2MtaG9zdC5jCShyZXZpc2lvbiAyMzIwNDcpCisrKyBvYWNjLWhvc3Qu Ywkod29ya2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDE2IEBAIGhvc3RfZ2V0 X251bV9kZXZpY2VzICh2b2lkKQogICByZXR1cm4gMTsKIH0KIAotc3RhdGlj IHZvaWQKK3N0YXRpYyBib29sCiBob3N0X2luaXRfZGV2aWNlIChpbnQgbiBf X2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCiB7CisgIHJldHVybiB0cnVlOwog fQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGhvc3RfZmluaV9kZXZp Y2UgKGludCBuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKKyAgcmV0 dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZApAQCAtOTgsMjggKzEw MCwyOSBAQCBob3N0X2FsbG9jIChpbnQgbiBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksIHNpemVfdAogICByZXR1cm4gZ29tcF9tYWxsb2MgKHMpOwogfQog Ci1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGhvc3RfZnJlZSAoaW50IG4g X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCB2b2lkICpwKQogewogICBmcmVl IChwKTsKKyAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkICoKK3N0 YXRpYyBib29sCiBob3N0X2RldjJob3N0IChpbnQgbiBfX2F0dHJpYnV0ZV9f ICgodW51c2VkKSksCiAJICAgICAgIHZvaWQgKmggX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLAogCSAgICAgICBjb25zdCB2b2lkICpkIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSwKIAkgICAgICAgc2l6ZV90IHMgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpKQogewotICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIHRy dWU7CiB9CiAKLXN0YXRpYyB2b2lkICoKK3N0YXRpYyBib29sCiBob3N0X2hv c3QyZGV2IChpbnQgbiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCiAJICAg ICAgIHZvaWQgKmQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogCSAgICAg ICBjb25zdCB2b2lkICpoIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKIAkg ICAgICAgc2l6ZV90IHMgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewot ICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2 b2lkCkluZGV4OiBvYWNjLWluaXQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBvYWNjLWluaXQuYwkocmV2aXNpb24gMjMyMDQ3KQorKysgb2FjYy1p bml0LmMJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw4ICszMDAsOCBAQCBhY2Nf c2h1dGRvd25fMSAoYWNjX2RldmljZV90IGQpCiAKICAgZ29tcF9tdXRleF91 bmxvY2sgKCZnb2FjY190aHJlYWRfbG9jayk7CiAKLQogICAvKiBDbG9zZSBh bGwgdGhlIGRldmljZXMgb2YgdGhpcyB0eXBlIHRoYXQgaGF2ZSBiZWVuIG9w ZW5lZC4gICovCisgIGJvb2wgcmV0ID0gdHJ1ZTsKICAgZm9yIChpID0gMDsg aSA8IG5kZXZzOyBpKyspCiAgICAgewogICAgICAgc3RydWN0IGdvbXBfZGV2 aWNlX2Rlc2NyICphY2NfZGV2ID0gJmJhc2VfZGV2W2ldOwpAQCAtMzA5LDEy ICszMDksMTUgQEAgYWNjX3NodXRkb3duXzEgKGFjY19kZXZpY2VfdCBkKQog ICAgICAgaWYgKGFjY19kZXYtPnN0YXRlID09IEdPTVBfREVWSUNFX0lOSVRJ QUxJWkVEKQogICAgICAgICB7CiAJICBkZXZpY2VzX2FjdGl2ZSA9IHRydWU7 Ci0JICBhY2NfZGV2LT5maW5pX2RldmljZV9mdW5jIChhY2NfZGV2LT50YXJn ZXRfaWQpOworCSAgcmV0ICY9IGFjY19kZXYtPmZpbmlfZGV2aWNlX2Z1bmMg KGFjY19kZXYtPnRhcmdldF9pZCk7CiAJICBhY2NfZGV2LT5zdGF0ZSA9IEdP TVBfREVWSUNFX1VOSU5JVElBTElaRUQ7CiAJfQogICAgICAgZ29tcF9tdXRl eF91bmxvY2sgKCZhY2NfZGV2LT5sb2NrKTsKICAgICB9CiAKKyAgaWYgKCFy ZXQpCisgICAgZ29tcF9mYXRhbCAoImRldmljZSBmaW5hbGl6YXRpb24gZmFp bGVkIik7CisKICAgaWYgKCFkZXZpY2VzX2FjdGl2ZSkKICAgICBnb21wX2Zh dGFsICgibm8gZGV2aWNlIGluaXRpYWxpemVkIik7CiB9CkluZGV4OiBvYWNj LW1lbS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG9hY2MtbWVtLmMJ KHJldmlzaW9uIDIzMjA0NykKKysrIG9hY2MtbWVtLmMJKHdvcmtpbmcgY29w eSkKQEAgLTE0Miw3ICsxNDIsOCBAQCBhY2NfZnJlZSAodm9pZCAqZCkKICAg ZWxzZQogICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7 CiAKLSAgYWNjX2Rldi0+ZnJlZV9mdW5jIChhY2NfZGV2LT50YXJnZXRfaWQs IGQpOworICBpZiAoIWFjY19kZXYtPmZyZWVfZnVuYyAoYWNjX2Rldi0+dGFy Z2V0X2lkLCBkKSkKKyAgICBnb21wX2ZhdGFsICgiZXJyb3IgaW4gZnJlZWlu ZyBkZXZpY2UgbWVtb3J5IGluICVzIiwgX19GVU5DVElPTl9fKTsKIH0KIAog dm9pZApAQCAtMTU0LDcgKzE1NSw4IEBAIGFjY19tZW1jcHlfdG9fZGV2aWNl ICh2b2lkICpkLCB2b2lkICpoLCBzaXplX3QgcykKIAogICBhc3NlcnQgKHRo ciAmJiB0aHItPmRldik7CiAKLSAgdGhyLT5kZXYtPmhvc3QyZGV2X2Z1bmMg KHRoci0+ZGV2LT50YXJnZXRfaWQsIGQsIGgsIHMpOworICBpZiAoIXRoci0+ ZGV2LT5ob3N0MmRldl9mdW5jICh0aHItPmRldi0+dGFyZ2V0X2lkLCBkLCBo LCBzKSkKKyAgICBnb21wX2ZhdGFsICgiZXJyb3IgaW4gJXMiLCBfX0ZVTkNU SU9OX18pOwogfQogCiB2b2lkCkBAIC0xNjYsNyArMTY4LDggQEAgYWNjX21l bWNweV9mcm9tX2RldmljZSAodm9pZCAqaCwgdm9pZCAqZCwgc2l6ZV90IHMK IAogICBhc3NlcnQgKHRociAmJiB0aHItPmRldik7CiAKLSAgdGhyLT5kZXYt PmRldjJob3N0X2Z1bmMgKHRoci0+ZGV2LT50YXJnZXRfaWQsIGgsIGQsIHMp OworICBpZiAoIXRoci0+ZGV2LT5kZXYyaG9zdF9mdW5jICh0aHItPmRldi0+ dGFyZ2V0X2lkLCBoLCBkLCBzKSkKKyAgICBnb21wX2ZhdGFsICgiZXJyb3Ig aW4gJXMiLCBfX0ZVTkNUSU9OX18pOwogfQogCiAvKiBSZXR1cm4gdGhlIGRl dmljZSBwb2ludGVyIHRoYXQgY29ycmVzcG9uZHMgdG8gaG9zdCBkYXRhIEgu ICBPciBOVUxMCkBAIC00ODgsNyArNDkxLDcgQEAgYWNjX3ByZXNlbnRfb3Jf Y29weWluICh2b2lkICpoLCBzaXplX3QgcykKICNkZWZpbmUgRkxBR19DT1BZ T1VUICgxIDw8IDApCiAKIHN0YXRpYyB2b2lkCi1kZWxldGVfY29weW91dCAo dW5zaWduZWQgZiwgdm9pZCAqaCwgc2l6ZV90IHMpCitkZWxldGVfY29weW91 dCAodW5zaWduZWQgZiwgdm9pZCAqaCwgc2l6ZV90IHMsIGNvbnN0IGNoYXIg KmxpYmZubmFtZSkKIHsKICAgc2l6ZV90IGhvc3Rfc2l6ZTsKICAgc3BsYXlf dHJlZV9rZXkgbjsKQEAgLTUyNywxOCArNTMwLDIwIEBAIHN0YXRpYyB2b2lk CiAKICAgYWNjX3VubWFwX2RhdGEgKGgpOwogCi0gIGFjY19kZXYtPmZyZWVf ZnVuYyAoYWNjX2Rldi0+dGFyZ2V0X2lkLCBkKTsKKyAgaWYgKCFhY2NfZGV2 LT5mcmVlX2Z1bmMgKGFjY19kZXYtPnRhcmdldF9pZCwgZCkpCisgICAgZ29t cF9mYXRhbCAoImVycm9yIGluIGZyZWVpbmcgZGV2aWNlIG1lbW9yeSBpbiAl cyIsIGxpYmZubmFtZSk7CiB9CiAKIHZvaWQKIGFjY19kZWxldGUgKHZvaWQg KmggLCBzaXplX3QgcykKIHsKLSAgZGVsZXRlX2NvcHlvdXQgKDAsIGgsIHMp OworICBkZWxldGVfY29weW91dCAoMCwgaCwgcywgX19GVU5DVElPTl9fKTsK IH0KIAotdm9pZCBhY2NfY29weW91dCAodm9pZCAqaCwgc2l6ZV90IHMpCit2 b2lkCithY2NfY29weW91dCAodm9pZCAqaCwgc2l6ZV90IHMpCiB7Ci0gIGRl bGV0ZV9jb3B5b3V0IChGTEFHX0NPUFlPVVQsIGgsIHMpOworICBkZWxldGVf Y29weW91dCAoRkxBR19DT1BZT1VULCBoLCBzLCBfX0ZVTkNUSU9OX18pOwog fQogCiBzdGF0aWMgdm9pZApJbmRleDogdGFyZ2V0LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gdGFyZ2V0LmMJKHJldmlzaW9uIDIzMjA0NykKKysr IHRhcmdldC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDQ1IEBA IGdvbXBfbWFwXzBsZW5fbG9va3VwIChzcGxheV90cmVlIG1lbV9tYXAsIHNw bGF5X3RyCiAgIHJldHVybiBuOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQK K2dvbXBfZGV2aWNlX2NvcHkgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAq ZGV2aWNlcCwKKwkJICBib29sICgqY29weV9mdW5jKSAoaW50LCB2b2lkICos IGNvbnN0IHZvaWQgKiwgc2l6ZV90KSwKKwkJICBjb25zdCBjaGFyICpkc3Qs IHZvaWQgKmRzdGFkZHIsCisJCSAgY29uc3QgY2hhciAqc3JjLCBjb25zdCB2 b2lkICpzcmNhZGRyLAorCQkgIHNpemVfdCBzaXplKQoreworICBpZiAoIWNv cHlfZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLCBkc3RhZGRyLCBzcmNhZGRy LCBzaXplKSkKKyAgICB7CisgICAgICBnb21wX211dGV4X3VubG9jayAoJmRl dmljZXAtPmxvY2spOworICAgICAgZ29tcF9mYXRhbCAoIkNvcHlpbmcgb2Yg JXMgb2JqZWN0IFslcC4uJXApIHRvICVzIG9iamVjdCBbJXAuLiVwKSBmYWls ZWQiLAorCQkgIHNyYywgc3JjYWRkciwgc3JjYWRkciArIHNpemUsIGRzdCwg ZHN0YWRkciwgZHN0YWRkciArIHNpemUpOworICAgIH0KK30KKworc3RhdGlj IHZvaWQKK2dvbXBfY29weV9ob3N0MmRldiAoc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICpkZXZpY2VwLAorCQkgICAgdm9pZCAqZCwgY29uc3Qgdm9pZCAq aCwgc2l6ZV90IHN6KQoreworICBnb21wX2RldmljZV9jb3B5IChkZXZpY2Vw LCBkZXZpY2VwLT5ob3N0MmRldl9mdW5jLCAiZGV2IiwgZCwgImhvc3QiLCBo LCBzeik7Cit9CisKK3N0YXRpYyB2b2lkCitnb21wX2NvcHlfZGV2Mmhvc3Qg KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKKwkJICAgIHZv aWQgKmgsIGNvbnN0IHZvaWQgKmQsIHNpemVfdCBzeikKK3sKKyAgZ29tcF9k ZXZpY2VfY29weSAoZGV2aWNlcCwgZGV2aWNlcC0+ZGV2Mmhvc3RfZnVuYywg Imhvc3QiLCBoLCAiZGV2IiwgZCwgc3opOworfQorCitzdGF0aWMgdm9pZAor Z29tcF9mcmVlX2RldmljZV9tZW1vcnkgKHN0cnVjdCBnb21wX2RldmljZV9k ZXNjciAqZGV2aWNlcCwgdm9pZCAqZGV2cHRyKQoreworICBpZiAoIWRldmlj ZXAtPmZyZWVfZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLCBkZXZwdHIpKQor ICAgIHsKKyAgICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZGV2aWNlcC0+bG9j ayk7CisgICAgICBnb21wX2ZhdGFsICgiZXJyb3IgaW4gZnJlZWluZyBkZXZp Y2UgbWVtb3J5IGJsb2NrIGF0ICVwIiwgZGV2cHRyKTsKKyAgICB9Cit9CisK IC8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBnb21wX21hcF9sb29rdXAsIHNw bGF5X3RyZWVfbG9va3VwIG9yCiAgICBnb21wX21hcF8wbGVuX2xvb2t1cCBm b3VuZCBvbGRuIGZvciBuZXduLgogICAgSGVscGVyIGZ1bmN0aW9uIG9mIGdv bXBfbWFwX3ZhcnMuICAqLwpAQCAtMTg5LDExICsyMjgsMTIgQEAgZ29tcF9t YXBfdmFyc19leGlzdGluZyAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICoK ICAgICB9CiAKICAgaWYgKEdPTVBfTUFQX0FMV0FZU19UT19QIChraW5kKSkK LSAgICBkZXZpY2VwLT5ob3N0MmRldl9mdW5jIChkZXZpY2VwLT50YXJnZXRf aWQsCi0JCQkgICAgKHZvaWQgKikgKG9sZG4tPnRndC0+dGd0X3N0YXJ0ICsg b2xkbi0+dGd0X29mZnNldAotCQkJCSAgICAgICsgbmV3bi0+aG9zdF9zdGFy dCAtIG9sZG4tPmhvc3Rfc3RhcnQpLAotCQkJICAgICh2b2lkICopIG5ld24t Pmhvc3Rfc3RhcnQsCi0JCQkgICAgbmV3bi0+aG9zdF9lbmQgLSBuZXduLT5o b3N0X3N0YXJ0KTsKKyAgICBnb21wX2NvcHlfaG9zdDJkZXYgKGRldmljZXAs CisJCQkodm9pZCAqKSAob2xkbi0+dGd0LT50Z3Rfc3RhcnQgKyBvbGRuLT50 Z3Rfb2Zmc2V0CisJCQkJICArIG5ld24tPmhvc3Rfc3RhcnQgLSBvbGRuLT5o b3N0X3N0YXJ0KSwKKwkJCSh2b2lkICopIG5ld24tPmhvc3Rfc3RhcnQsCisJ CQluZXduLT5ob3N0X2VuZCAtIG5ld24tPmhvc3Rfc3RhcnQpOworCiAgIGlm IChvbGRuLT5yZWZjb3VudCAhPSBSRUZDT1VOVF9JTkZJTklUWSkKICAgICBv bGRuLT5yZWZjb3VudCsrOwogfQpAQCAtMjE4LDEwICsyNTgsMTAgQEAgZ29t cF9tYXBfcG9pbnRlciAoc3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0LCB1 aW4KICAgICB7CiAgICAgICBjdXJfbm9kZS50Z3Rfb2Zmc2V0ID0gKHVpbnRw dHJfdCkgTlVMTDsKICAgICAgIC8qIEZJWE1FOiBzZWUgY29tbWVudCBhYm91 dCBjb2FsZXNjaW5nIGhvc3QvZGV2IHRyYW5zZmVycyBiZWxvdy4gICovCi0g ICAgICBkZXZpY2VwLT5ob3N0MmRldl9mdW5jIChkZXZpY2VwLT50YXJnZXRf aWQsCi0JCQkgICAgICAodm9pZCAqKSAodGd0LT50Z3Rfc3RhcnQgKyB0YXJn ZXRfb2Zmc2V0KSwKLQkJCSAgICAgICh2b2lkICopICZjdXJfbm9kZS50Z3Rf b2Zmc2V0LAotCQkJICAgICAgc2l6ZW9mICh2b2lkICopKTsKKyAgICAgIGdv bXBfY29weV9ob3N0MmRldiAoZGV2aWNlcCwKKwkJCSAgKHZvaWQgKikgKHRn dC0+dGd0X3N0YXJ0ICsgdGFyZ2V0X29mZnNldCksCisJCQkgICh2b2lkICop ICZjdXJfbm9kZS50Z3Rfb2Zmc2V0LAorCQkJICBzaXplb2YgKHZvaWQgKikp OwogICAgICAgcmV0dXJuOwogICAgIH0KICAgLyogQWRkIGJpYXMgdG8gdGhl IHBvaW50ZXIgdmFsdWUuICAqLwpAQCAtMjQxLDEwICsyODEsOCBAQCBnb21w X21hcF9wb2ludGVyIChzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjICp0Z3QsIHVp bgogICAgICB0byBpbml0aWFsaXplIHRoZSBwb2ludGVyIHdpdGguICAqLwog ICBjdXJfbm9kZS50Z3Rfb2Zmc2V0IC09IGJpYXM7CiAgIC8qIEZJWE1FOiBz ZWUgY29tbWVudCBhYm91dCBjb2FsZXNjaW5nIGhvc3QvZGV2IHRyYW5zZmVy cyBiZWxvdy4gICovCi0gIGRldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRldmlj ZXAtPnRhcmdldF9pZCwKLQkJCSAgKHZvaWQgKikgKHRndC0+dGd0X3N0YXJ0 ICsgdGFyZ2V0X29mZnNldCksCi0JCQkgICh2b2lkICopICZjdXJfbm9kZS50 Z3Rfb2Zmc2V0LAotCQkJICBzaXplb2YgKHZvaWQgKikpOworICBnb21wX2Nv cHlfaG9zdDJkZXYgKGRldmljZXAsICh2b2lkICopICh0Z3QtPnRndF9zdGFy dCArIHRhcmdldF9vZmZzZXQpLAorCQkgICAgICAodm9pZCAqKSAmY3VyX25v ZGUudGd0X29mZnNldCwgc2l6ZW9mICh2b2lkICopKTsKIH0KIAogc3RhdGlj IHZvaWQKQEAgLTUxNSw2ICs1NTMsMTIgQEAgZ29tcF9tYXBfdmFycyAoc3Ry dWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLAogCSBtZW1vcnkuICAq LwogICAgICAgdGd0LT50b19mcmVlID0gZGV2aWNlcC0+YWxsb2NfZnVuYyAo ZGV2aWNlcC0+dGFyZ2V0X2lkLAogCQkJCQkgIHRndF9zaXplICsgdGd0X2Fs aWduIC0gMSk7CisgICAgICBpZiAoIXRndC0+dG9fZnJlZSkKKwl7CisJICBn b21wX211dGV4X3VubG9jayAoJmRldmljZXAtPmxvY2spOworCSAgZ29tcF9m YXRhbCAoImRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsIik7CisJfQor CiAgICAgICB0Z3QtPnRndF9zdGFydCA9ICh1aW50cHRyX3QpIHRndC0+dG9f ZnJlZTsKICAgICAgIHRndC0+dGd0X3N0YXJ0ID0gKHRndC0+dGd0X3N0YXJ0 ICsgdGd0X2FsaWduIC0gMSkgJiB+KHRndF9hbGlnbiAtIDEpOwogICAgICAg dGd0LT50Z3RfZW5kID0gdGd0LT50Z3Rfc3RhcnQgKyB0Z3Rfc2l6ZTsKQEAg LTU1NCw5ICs1OTgsOSBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9k ZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCXRndF9zaXplID0gKHRndF9zaXpl ICsgYWxpZ24gLSAxKSAmIH4oYWxpZ24gLSAxKTsKIAkJdGd0LT5saXN0W2ld Lm9mZnNldCA9IHRndF9zaXplOwogCQlsZW4gPSBzaXplc1tpXTsKLQkJZGV2 aWNlcC0+aG9zdDJkZXZfZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLAotCQkJ CQkodm9pZCAqKSAodGd0LT50Z3Rfc3RhcnQgKyB0Z3Rfc2l6ZSksCi0JCQkJ CSh2b2lkICopIGhvc3RhZGRyc1tpXSwgbGVuKTsKKwkJZ29tcF9jb3B5X2hv c3QyZGV2IChkZXZpY2VwLAorCQkJCSAgICAodm9pZCAqKSAodGd0LT50Z3Rf c3RhcnQgKyB0Z3Rfc2l6ZSksCisJCQkJICAgICh2b2lkICopIGhvc3RhZGRy c1tpXSwgbGVuKTsKIAkJdGd0X3NpemUgKz0gbGVuOwogCQljb250aW51ZTsK IAkgICAgICBjYXNlIEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9JTlQ6CkBAIC02 MDgsMTMgKzY1MiwxMyBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9k ZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCSAgY3VyX25vZGUudGd0X29mZnNl dCA9IGdvbXBfbWFwX3ZhbCAodGd0LCBob3N0YWRkcnMsIGkgLSAxKTsKIAkJ aWYgKGN1cl9ub2RlLnRndF9vZmZzZXQpCiAJCSAgY3VyX25vZGUudGd0X29m ZnNldCAtPSBzaXplc1tpXTsKLQkJZGV2aWNlcC0+aG9zdDJkZXZfZnVuYyAo ZGV2aWNlcC0+dGFyZ2V0X2lkLAotCQkJCQkodm9pZCAqKSAobi0+dGd0LT50 Z3Rfc3RhcnQKLQkJCQkJCSAgKyBuLT50Z3Rfb2Zmc2V0Ci0JCQkJCQkgICsg Y3VyX25vZGUuaG9zdF9zdGFydAotCQkJCQkJICAtIG4tPmhvc3Rfc3RhcnQp LAotCQkJCQkodm9pZCAqKSAmY3VyX25vZGUudGd0X29mZnNldCwKLQkJCQkJ c2l6ZW9mICh2b2lkICopKTsKKwkJZ29tcF9jb3B5X2hvc3QyZGV2IChkZXZp Y2VwLAorCQkJCSAgICAodm9pZCAqKSAobi0+dGd0LT50Z3Rfc3RhcnQKKwkJ CQkJICAgICAgKyBuLT50Z3Rfb2Zmc2V0CisJCQkJCSAgICAgICsgY3VyX25v ZGUuaG9zdF9zdGFydAorCQkJCQkgICAgICAtIG4tPmhvc3Rfc3RhcnQpLAor CQkJCSAgICAodm9pZCAqKSAmY3VyX25vZGUudGd0X29mZnNldCwKKwkJCQkg ICAgc2l6ZW9mICh2b2lkICopKTsKIAkJY3VyX25vZGUudGd0X29mZnNldCA9 IG4tPnRndC0+dGd0X3N0YXJ0ICsgbi0+dGd0X29mZnNldAogCQkJCSAgICAg ICsgY3VyX25vZGUuaG9zdF9zdGFydCAtIG4tPmhvc3Rfc3RhcnQ7CiAJCWNv bnRpbnVlOwpAQCAtNjg1LDExICs3MjksMTEgQEAgZ29tcF9tYXBfdmFycyAo c3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLAogCQkgICAgLyog RklYTUU6IFBlcmhhcHMgYWRkIHNvbWUgc21hcnRzLCBsaWtlIGlmIGNvcHlp bmcKIAkJICAgICAgIHNldmVyYWwgYWRqYWNlbnQgZmllbGRzIGZyb20gaG9z dCB0byB0YXJnZXQsIHVzZSBzb21lCiAJCSAgICAgICBob3N0IGJ1ZmZlciB0 byBhdm9pZCBzZW5kaW5nIGVhY2ggdmFyIGluZGl2aWR1YWxseS4gICovCi0J CSAgICBkZXZpY2VwLT5ob3N0MmRldl9mdW5jIChkZXZpY2VwLT50YXJnZXRf aWQsCi0JCQkJCSAgICAodm9pZCAqKSAodGd0LT50Z3Rfc3RhcnQKLQkJCQkJ CSAgICAgICsgay0+dGd0X29mZnNldCksCi0JCQkJCSAgICAodm9pZCAqKSBr LT5ob3N0X3N0YXJ0LAotCQkJCQkgICAgay0+aG9zdF9lbmQgLSBrLT5ob3N0 X3N0YXJ0KTsKKwkJICAgIGdvbXBfY29weV9ob3N0MmRldiAoZGV2aWNlcCwK KwkJCQkJKHZvaWQgKikgKHRndC0+dGd0X3N0YXJ0CisJCQkJCQkgICsgay0+ dGd0X29mZnNldCksCisJCQkJCSh2b2lkICopIGstPmhvc3Rfc3RhcnQsCisJ CQkJCWstPmhvc3RfZW5kIC0gay0+aG9zdF9zdGFydCk7CiAJCSAgICBicmVh azsKIAkJICBjYXNlIEdPTVBfTUFQX1BPSU5URVI6CiAJCSAgICBnb21wX21h cF9wb2ludGVyICh0Z3QsICh1aW50cHRyX3QpICoodm9pZCAqKikgay0+aG9z dF9zdGFydCwKQEAgLTY5NywxMSArNzQxLDExIEBAIGdvbXBfbWFwX3ZhcnMg KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKIAkJICAgIGJy ZWFrOwogCQkgIGNhc2UgR09NUF9NQVBfVE9fUFNFVDoKIAkJICAgIC8qIEZJ WE1FOiBzZWUgYWJvdmUgRklYTUUgY29tbWVudC4gICovCi0JCSAgICBkZXZp Y2VwLT5ob3N0MmRldl9mdW5jIChkZXZpY2VwLT50YXJnZXRfaWQsCi0JCQkJ CSAgICAodm9pZCAqKSAodGd0LT50Z3Rfc3RhcnQKLQkJCQkJCSAgICAgICsg ay0+dGd0X29mZnNldCksCi0JCQkJCSAgICAodm9pZCAqKSBrLT5ob3N0X3N0 YXJ0LAotCQkJCQkgICAgay0+aG9zdF9lbmQgLSBrLT5ob3N0X3N0YXJ0KTsK KwkJICAgIGdvbXBfY29weV9ob3N0MmRldiAoZGV2aWNlcCwKKwkJCQkJKHZv aWQgKikgKHRndC0+dGd0X3N0YXJ0CisJCQkJCQkgICsgay0+dGd0X29mZnNl dCksCisJCQkJCSh2b2lkICopIGstPmhvc3Rfc3RhcnQsCisJCQkJCWstPmhv c3RfZW5kIC0gay0+aG9zdF9zdGFydCk7CiAKIAkJICAgIGZvciAoaiA9IGkg KyAxOyBqIDwgbWFwbnVtOyBqKyspCiAJCSAgICAgIGlmICghR09NUF9NQVBf UE9JTlRFUl9QIChnZXRfa2luZCAoc2hvcnRfbWFwa2luZCwga2luZHMsCkBA IC03NDgsMTIgKzc5MiwxMSBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29t cF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCSAgICBicmVhazsKIAkJICBj YXNlIEdPTVBfTUFQX0ZPUkNFX0RFVklDRVBUUjoKIAkJICAgIGFzc2VydCAo ay0+aG9zdF9lbmQgLSBrLT5ob3N0X3N0YXJ0ID09IHNpemVvZiAodm9pZCAq KSk7Ci0KLQkJICAgIGRldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRldmljZXAt PnRhcmdldF9pZCwKLQkJCQkJICAgICh2b2lkICopICh0Z3QtPnRndF9zdGFy dAotCQkJCQkJICAgICAgKyBrLT50Z3Rfb2Zmc2V0KSwKLQkJCQkJICAgICh2 b2lkICopIGstPmhvc3Rfc3RhcnQsCi0JCQkJCSAgICBzaXplb2YgKHZvaWQg KikpOworCQkgICAgZ29tcF9jb3B5X2hvc3QyZGV2IChkZXZpY2VwLAorCQkJ CQkodm9pZCAqKSAodGd0LT50Z3Rfc3RhcnQKKwkJCQkJCSAgKyBrLT50Z3Rf b2Zmc2V0KSwKKwkJCQkJKHZvaWQgKikgay0+aG9zdF9zdGFydCwKKwkJCQkJ c2l6ZW9mICh2b2lkICopKTsKIAkJICAgIGJyZWFrOwogCQkgIGRlZmF1bHQ6 CiAJCSAgICBnb21wX211dGV4X3VubG9jayAoJmRldmljZXAtPmxvY2spOwpA QCAtNzgxLDExICs4MjQsOSBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29t cF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJewogCSAgY3VyX25vZGUudGd0 X29mZnNldCA9IGdvbXBfbWFwX3ZhbCAodGd0LCBob3N0YWRkcnMsIGkpOwog CSAgLyogRklYTUU6IHNlZSBhYm92ZSBGSVhNRSBjb21tZW50LiAgKi8KLQkg IGRldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRldmljZXAtPnRhcmdldF9pZCwK LQkJCQkgICh2b2lkICopICh0Z3QtPnRndF9zdGFydAotCQkJCQkgICAgKyBp ICogc2l6ZW9mICh2b2lkICopKSwKLQkJCQkgICh2b2lkICopICZjdXJfbm9k ZS50Z3Rfb2Zmc2V0LAotCQkJCSAgc2l6ZW9mICh2b2lkICopKTsKKwkgIGdv bXBfY29weV9ob3N0MmRldiAoZGV2aWNlcCwKKwkJCSAgICAgICh2b2lkICop ICh0Z3QtPnRndF9zdGFydCArIGkgKiBzaXplb2YgKHZvaWQgKikpLAorCQkJ ICAgICAgKHZvaWQgKikgJmN1cl9ub2RlLnRndF9vZmZzZXQsIHNpemVvZiAo dm9pZCAqKSk7CiAJfQogICAgIH0KIApAQCAtODA3LDcgKzg0OCw3IEBAIGdv bXBfdW5tYXBfdGd0IChzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjICp0Z3QpCiB7 CiAgIC8qIERlYWxsb2NhdGUgb24gdGFyZ2V0IHRoZSB0Z3QtPnRndF9zdGFy dCAuLiB0Z3QtPnRndF9lbmQgcmVnaW9uLiAgKi8KICAgaWYgKHRndC0+dGd0 X2VuZCkKLSAgICB0Z3QtPmRldmljZV9kZXNjci0+ZnJlZV9mdW5jICh0Z3Qt PmRldmljZV9kZXNjci0+dGFyZ2V0X2lkLCB0Z3QtPnRvX2ZyZWUpOworICAg IGdvbXBfZnJlZV9kZXZpY2VfbWVtb3J5ICh0Z3QtPmRldmljZV9kZXNjciwg dGd0LT50b19mcmVlKTsKIAogICBmcmVlICh0Z3QtPmFycmF5KTsKICAgZnJl ZSAodGd0KTsKQEAgLTgzOSw5ICs4ODAsOSBAQCBnb21wX2NvcHlfZnJvbV9h c3luYyAoc3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0KQogICAgICAgewog CXNwbGF5X3RyZWVfa2V5IGsgPSB0Z3QtPmxpc3RbaV0ua2V5OwogCWlmICh0 Z3QtPmxpc3RbaV0uY29weV9mcm9tKQotCSAgZGV2aWNlcC0+ZGV2Mmhvc3Rf ZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLCAodm9pZCAqKSBrLT5ob3N0X3N0 YXJ0LAotCQkJCSAgKHZvaWQgKikgKGstPnRndC0+dGd0X3N0YXJ0ICsgay0+ dGd0X29mZnNldCksCi0JCQkJICBrLT5ob3N0X2VuZCAtIGstPmhvc3Rfc3Rh cnQpOworCSAgZ29tcF9jb3B5X2RldjJob3N0IChkZXZpY2VwLCAodm9pZCAq KSBrLT5ob3N0X3N0YXJ0LAorCQkJICAgICAgKHZvaWQgKikgKGstPnRndC0+ dGd0X3N0YXJ0ICsgay0+dGd0X29mZnNldCksCisJCQkgICAgICBrLT5ob3N0 X2VuZCAtIGstPmhvc3Rfc3RhcnQpOwogICAgICAgfQogCiAgIGdvbXBfbXV0 ZXhfdW5sb2NrICgmZGV2aWNlcC0+bG9jayk7CkBAIC04OTQsMTEgKzkzNSwx MSBAQCBnb21wX3VubWFwX3ZhcnMgKHN0cnVjdCB0YXJnZXRfbWVtX2Rlc2Mg KnRndCwgYm9vbAogCiAgICAgICBpZiAoKGRvX3VubWFwICYmIGRvX2NvcHlm cm9tICYmIHRndC0+bGlzdFtpXS5jb3B5X2Zyb20pCiAJICB8fCB0Z3QtPmxp c3RbaV0uYWx3YXlzX2NvcHlfZnJvbSkKLQlkZXZpY2VwLT5kZXYyaG9zdF9m dW5jIChkZXZpY2VwLT50YXJnZXRfaWQsCi0JCQkJKHZvaWQgKikgKGstPmhv c3Rfc3RhcnQgKyB0Z3QtPmxpc3RbaV0ub2Zmc2V0KSwKLQkJCQkodm9pZCAq KSAoay0+dGd0LT50Z3Rfc3RhcnQgKyBrLT50Z3Rfb2Zmc2V0Ci0JCQkJCSAg KyB0Z3QtPmxpc3RbaV0ub2Zmc2V0KSwKLQkJCQl0Z3QtPmxpc3RbaV0ubGVu Z3RoKTsKKwlnb21wX2NvcHlfZGV2Mmhvc3QgKGRldmljZXAsCisJCQkgICAg KHZvaWQgKikgKGstPmhvc3Rfc3RhcnQgKyB0Z3QtPmxpc3RbaV0ub2Zmc2V0 KSwKKwkJCSAgICAodm9pZCAqKSAoay0+dGd0LT50Z3Rfc3RhcnQgKyBrLT50 Z3Rfb2Zmc2V0CisJCQkJICAgICAgKyB0Z3QtPmxpc3RbaV0ub2Zmc2V0KSwK KwkJCSAgICB0Z3QtPmxpc3RbaV0ubGVuZ3RoKTsKICAgICAgIGlmIChkb191 bm1hcCkKIAl7CiAJICBzcGxheV90cmVlX3JlbW92ZSAoJmRldmljZXAtPm1l bV9tYXAsIGspOwpAQCAtOTYxLDIyICsxMDAyLDE3IEBAIGdvbXBfdXBkYXRl IChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsIHNpCiAJCQkg ICAgKHZvaWQgKikgbi0+aG9zdF9zdGFydCwKIAkJCSAgICAodm9pZCAqKSBu LT5ob3N0X2VuZCk7CiAJICAgICAgfQorCisKKwkgICAgdm9pZCAqaG9zdGFk ZHIgPSAodm9pZCAqKSBjdXJfbm9kZS5ob3N0X3N0YXJ0OworCSAgICB2b2lk ICpkZXZhZGRyID0gKHZvaWQgKikgKG4tPnRndC0+dGd0X3N0YXJ0ICsgbi0+ dGd0X29mZnNldAorCQkJCSAgICAgICsgY3VyX25vZGUuaG9zdF9zdGFydCAt IG4tPmhvc3Rfc3RhcnQpOworCSAgICBzaXplX3Qgc2l6ZSA9IGN1cl9ub2Rl Lmhvc3RfZW5kIC0gY3VyX25vZGUuaG9zdF9zdGFydDsKKwogCSAgICBpZiAo R09NUF9NQVBfQ09QWV9UT19QIChraW5kICYgdHlwZW1hc2spKQotCSAgICAg IGRldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRldmljZXAtPnRhcmdldF9pZCwK LQkJCQkgICAgICAodm9pZCAqKSAobi0+dGd0LT50Z3Rfc3RhcnQKLQkJCQkJ CSsgbi0+dGd0X29mZnNldAotCQkJCQkJKyBjdXJfbm9kZS5ob3N0X3N0YXJ0 Ci0JCQkJCQktIG4tPmhvc3Rfc3RhcnQpLAotCQkJCSAgICAgICh2b2lkICop IGN1cl9ub2RlLmhvc3Rfc3RhcnQsCi0JCQkJICAgICAgY3VyX25vZGUuaG9z dF9lbmQgLSBjdXJfbm9kZS5ob3N0X3N0YXJ0KTsKKwkgICAgICBnb21wX2Nv cHlfaG9zdDJkZXYgKGRldmljZXAsIGRldmFkZHIsIGhvc3RhZGRyLCBzaXpl KTsKIAkgICAgaWYgKEdPTVBfTUFQX0NPUFlfRlJPTV9QIChraW5kICYgdHlw ZW1hc2spKQotCSAgICAgIGRldmljZXAtPmRldjJob3N0X2Z1bmMgKGRldmlj ZXAtPnRhcmdldF9pZCwKLQkJCQkgICAgICAodm9pZCAqKSBjdXJfbm9kZS5o b3N0X3N0YXJ0LAotCQkJCSAgICAgICh2b2lkICopIChuLT50Z3QtPnRndF9z dGFydAotCQkJCQkJKyBuLT50Z3Rfb2Zmc2V0Ci0JCQkJCQkrIGN1cl9ub2Rl Lmhvc3Rfc3RhcnQKLQkJCQkJCS0gbi0+aG9zdF9zdGFydCksCi0JCQkJICAg ICAgY3VyX25vZGUuaG9zdF9lbmQgLSBjdXJfbm9kZS5ob3N0X3N0YXJ0KTsK KwkgICAgICBnb21wX2NvcHlfZGV2Mmhvc3QgKGRldmljZXAsIGhvc3RhZGRy LCBkZXZhZGRyLCBzaXplKTsKIAkgIH0KICAgICAgIH0KICAgZ29tcF9tdXRl eF91bmxvY2sgKCZkZXZpY2VwLT5sb2NrKTsKQEAgLTEyNjEsNyArMTI5Nywx MSBAQCBhdHRyaWJ1dGVfaGlkZGVuIHZvaWQKIGdvbXBfaW5pdF9kZXZpY2Ug KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCkKIHsKICAgaW50 IGk7Ci0gIGRldmljZXAtPmluaXRfZGV2aWNlX2Z1bmMgKGRldmljZXAtPnRh cmdldF9pZCk7CisgIGlmICghZGV2aWNlcC0+aW5pdF9kZXZpY2VfZnVuYyAo ZGV2aWNlcC0+dGFyZ2V0X2lkKSkKKyAgICB7CisgICAgICBnb21wX211dGV4 X3VubG9jayAoJmRldmljZXAtPmxvY2spOworICAgICAgZ29tcF9mYXRhbCAo ImRldmljZSBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKyAgICB9CiAKICAg LyogTG9hZCB0byBkZXZpY2UgYWxsIGltYWdlcyByZWdpc3RlcmVkIGJ5IHRo ZSBtb21lbnQuICAqLwogICBmb3IgKGkgPSAwOyBpIDwgbnVtX29mZmxvYWRf aW1hZ2VzOyBpKyspCkBAIC0xNzAzLDEyICsxNzQzLDExIEBAIGdvbXBfZXhp dF9kYXRhIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAK IAkgIGlmICgoa2luZCA9PSBHT01QX01BUF9GUk9NICYmIGstPnJlZmNvdW50 ID09IDApCiAJICAgICAgfHwga2luZCA9PSBHT01QX01BUF9BTFdBWVNfRlJP TSkKLQkgICAgZGV2aWNlcC0+ZGV2Mmhvc3RfZnVuYyAoZGV2aWNlcC0+dGFy Z2V0X2lkLAotCQkJCSAgICAodm9pZCAqKSBjdXJfbm9kZS5ob3N0X3N0YXJ0 LAotCQkJCSAgICAodm9pZCAqKSAoay0+dGd0LT50Z3Rfc3RhcnQgKyBrLT50 Z3Rfb2Zmc2V0Ci0JCQkJCSAgICAgICsgY3VyX25vZGUuaG9zdF9zdGFydAot CQkJCQkgICAgICAtIGstPmhvc3Rfc3RhcnQpLAotCQkJCSAgICBjdXJfbm9k ZS5ob3N0X2VuZCAtIGN1cl9ub2RlLmhvc3Rfc3RhcnQpOworCSAgICBnb21w X2NvcHlfZGV2Mmhvc3QgKGRldmljZXAsICh2b2lkICopIGN1cl9ub2RlLmhv c3Rfc3RhcnQsCisJCQkJKHZvaWQgKikgKGstPnRndC0+dGd0X3N0YXJ0ICsg ay0+dGd0X29mZnNldAorCQkJCQkgICsgY3VyX25vZGUuaG9zdF9zdGFydAor CQkJCQkgIC0gay0+aG9zdF9zdGFydCksCisJCQkJY3VyX25vZGUuaG9zdF9l bmQgLSBjdXJfbm9kZS5ob3N0X3N0YXJ0KTsKIAkgIGlmIChrLT5yZWZjb3Vu dCA9PSAwKQogCSAgICB7CiAJICAgICAgc3BsYXlfdHJlZV9yZW1vdmUgKCZk ZXZpY2VwLT5tZW1fbWFwLCBrKTsKQEAgLTE5MjYsNyArMTk2NSw3IEBAIG9t cF90YXJnZXRfZnJlZSAodm9pZCAqZGV2aWNlX3B0ciwgaW50IGRldmljZV9u dW0pCiAgICAgfQogCiAgIGdvbXBfbXV0ZXhfbG9jayAoJmRldmljZXAtPmxv Y2spOwotICBkZXZpY2VwLT5mcmVlX2Z1bmMgKGRldmljZXAtPnRhcmdldF9p ZCwgZGV2aWNlX3B0cik7CisgIGdvbXBfZnJlZV9kZXZpY2VfbWVtb3J5IChk ZXZpY2VwLCBkZXZpY2VfcHRyKTsKICAgZ29tcF9tdXRleF91bmxvY2sgKCZk ZXZpY2VwLT5sb2NrKTsKIH0KIApAQCAtMTk2Niw2ICsyMDA1LDcgQEAgb21w X3RhcmdldF9tZW1jcHkgKHZvaWQgKmRzdCwgdm9pZCAqc3JjLCBzaXplX3Qg bGUKIAkJICAgc2l6ZV90IHNyY19vZmZzZXQsIGludCBkc3RfZGV2aWNlX251 bSwgaW50IHNyY19kZXZpY2VfbnVtKQogewogICBzdHJ1Y3QgZ29tcF9kZXZp Y2VfZGVzY3IgKmRzdF9kZXZpY2VwID0gTlVMTCwgKnNyY19kZXZpY2VwID0g TlVMTDsKKyAgYm9vbCByZXQ7CiAKICAgaWYgKGRzdF9kZXZpY2VfbnVtICE9 IEdPTVBfREVWSUNFX0hPU1RfRkFMTEJBQ0spCiAgICAgewpAQCAtMTk5OSwy OSArMjAzOSwyOSBAQCBvbXBfdGFyZ2V0X21lbWNweSAodm9pZCAqZHN0LCB2 b2lkICpzcmMsIHNpemVfdCBsZQogICBpZiAoc3JjX2RldmljZXAgPT0gTlVM TCkKICAgICB7CiAgICAgICBnb21wX211dGV4X2xvY2sgKCZkc3RfZGV2aWNl cC0+bG9jayk7Ci0gICAgICBkc3RfZGV2aWNlcC0+aG9zdDJkZXZfZnVuYyAo ZHN0X2RldmljZXAtPnRhcmdldF9pZCwKLQkJCQkgIChjaGFyICopIGRzdCAr IGRzdF9vZmZzZXQsCi0JCQkJICAoY2hhciAqKSBzcmMgKyBzcmNfb2Zmc2V0 LCBsZW5ndGgpOworICAgICAgcmV0ID0gZHN0X2RldmljZXAtPmhvc3QyZGV2 X2Z1bmMgKGRzdF9kZXZpY2VwLT50YXJnZXRfaWQsCisJCQkJCShjaGFyICop IGRzdCArIGRzdF9vZmZzZXQsCisJCQkJCShjaGFyICopIHNyYyArIHNyY19v ZmZzZXQsIGxlbmd0aCk7CiAgICAgICBnb21wX211dGV4X3VubG9jayAoJmRz dF9kZXZpY2VwLT5sb2NrKTsKLSAgICAgIHJldHVybiAwOworICAgICAgcmV0 dXJuIChyZXQgPyAwIDogRUlOVkFMKTsKICAgICB9CiAgIGlmIChkc3RfZGV2 aWNlcCA9PSBOVUxMKQogICAgIHsKICAgICAgIGdvbXBfbXV0ZXhfbG9jayAo JnNyY19kZXZpY2VwLT5sb2NrKTsKLSAgICAgIHNyY19kZXZpY2VwLT5kZXYy aG9zdF9mdW5jIChzcmNfZGV2aWNlcC0+dGFyZ2V0X2lkLAotCQkJCSAgKGNo YXIgKikgZHN0ICsgZHN0X29mZnNldCwKLQkJCQkgIChjaGFyICopIHNyYyAr IHNyY19vZmZzZXQsIGxlbmd0aCk7CisgICAgICByZXQgPSBzcmNfZGV2aWNl cC0+ZGV2Mmhvc3RfZnVuYyAoc3JjX2RldmljZXAtPnRhcmdldF9pZCwKKwkJ CQkJKGNoYXIgKikgZHN0ICsgZHN0X29mZnNldCwKKwkJCQkJKGNoYXIgKikg c3JjICsgc3JjX29mZnNldCwgbGVuZ3RoKTsKICAgICAgIGdvbXBfbXV0ZXhf dW5sb2NrICgmc3JjX2RldmljZXAtPmxvY2spOwotICAgICAgcmV0dXJuIDA7 CisgICAgICByZXR1cm4gKHJldCA/IDAgOiBFSU5WQUwpOwogICAgIH0KICAg aWYgKHNyY19kZXZpY2VwID09IGRzdF9kZXZpY2VwKQogICAgIHsKICAgICAg IGdvbXBfbXV0ZXhfbG9jayAoJnNyY19kZXZpY2VwLT5sb2NrKTsKLSAgICAg IHNyY19kZXZpY2VwLT5kZXYyZGV2X2Z1bmMgKHNyY19kZXZpY2VwLT50YXJn ZXRfaWQsCi0JCQkJIChjaGFyICopIGRzdCArIGRzdF9vZmZzZXQsCi0JCQkJ IChjaGFyICopIHNyYyArIHNyY19vZmZzZXQsIGxlbmd0aCk7CisgICAgICBy ZXQgPSBzcmNfZGV2aWNlcC0+ZGV2MmRldl9mdW5jIChzcmNfZGV2aWNlcC0+ dGFyZ2V0X2lkLAorCQkJCSAgICAgICAoY2hhciAqKSBkc3QgKyBkc3Rfb2Zm c2V0LAorCQkJCSAgICAgICAoY2hhciAqKSBzcmMgKyBzcmNfb2Zmc2V0LCBs ZW5ndGgpOwogICAgICAgZ29tcF9tdXRleF91bmxvY2sgKCZzcmNfZGV2aWNl cC0+bG9jayk7Ci0gICAgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiAocmV0 ID8gMCA6IEVJTlZBTCk7CiAgICAgfQogICByZXR1cm4gRUlOVkFMOwogfQpA QCAtMjA0OCwyMiArMjA4OCwyNSBAQCBvbXBfdGFyZ2V0X21lbWNweV9yZWN0 X3dvcmtlciAodm9pZCAqZHN0LCB2b2lkICpzcgogCSAgfHwgX19idWlsdGlu X211bF9vdmVyZmxvdyAoZWxlbWVudF9zaXplLCBzcmNfb2Zmc2V0c1swXSwg JnNyY19vZmYpKQogCXJldHVybiBFSU5WQUw7CiAgICAgICBpZiAoZHN0X2Rl dmljZXAgPT0gTlVMTCAmJiBzcmNfZGV2aWNlcCA9PSBOVUxMKQotCW1lbWNw eSAoKGNoYXIgKikgZHN0ICsgZHN0X29mZiwgKGNoYXIgKikgc3JjICsgc3Jj X29mZiwgbGVuZ3RoKTsKKwl7CisJICBtZW1jcHkgKChjaGFyICopIGRzdCAr IGRzdF9vZmYsIChjaGFyICopIHNyYyArIHNyY19vZmYsIGxlbmd0aCk7CisJ ICByZXQgPSAxOworCX0KICAgICAgIGVsc2UgaWYgKHNyY19kZXZpY2VwID09 IE5VTEwpCi0JZHN0X2RldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRzdF9kZXZp Y2VwLT50YXJnZXRfaWQsCi0JCQkJICAgIChjaGFyICopIGRzdCArIGRzdF9v ZmYsCi0JCQkJICAgIChjaGFyICopIHNyYyArIHNyY19vZmYsIGxlbmd0aCk7 CisJcmV0ID0gZHN0X2RldmljZXAtPmhvc3QyZGV2X2Z1bmMgKGRzdF9kZXZp Y2VwLT50YXJnZXRfaWQsCisJCQkJCSAgKGNoYXIgKikgZHN0ICsgZHN0X29m ZiwKKwkJCQkJICAoY2hhciAqKSBzcmMgKyBzcmNfb2ZmLCBsZW5ndGgpOwog ICAgICAgZWxzZSBpZiAoZHN0X2RldmljZXAgPT0gTlVMTCkKLQlzcmNfZGV2 aWNlcC0+ZGV2Mmhvc3RfZnVuYyAoc3JjX2RldmljZXAtPnRhcmdldF9pZCwK LQkJCQkgICAgKGNoYXIgKikgZHN0ICsgZHN0X29mZiwKLQkJCQkgICAgKGNo YXIgKikgc3JjICsgc3JjX29mZiwgbGVuZ3RoKTsKKwlyZXQgPSBzcmNfZGV2 aWNlcC0+ZGV2Mmhvc3RfZnVuYyAoc3JjX2RldmljZXAtPnRhcmdldF9pZCwK KwkJCQkJICAoY2hhciAqKSBkc3QgKyBkc3Rfb2ZmLAorCQkJCQkgIChjaGFy ICopIHNyYyArIHNyY19vZmYsIGxlbmd0aCk7CiAgICAgICBlbHNlIGlmIChz cmNfZGV2aWNlcCA9PSBkc3RfZGV2aWNlcCkKLQlzcmNfZGV2aWNlcC0+ZGV2 MmRldl9mdW5jIChzcmNfZGV2aWNlcC0+dGFyZ2V0X2lkLAotCQkJCSAgIChj aGFyICopIGRzdCArIGRzdF9vZmYsCi0JCQkJICAgKGNoYXIgKikgc3JjICsg c3JjX29mZiwgbGVuZ3RoKTsKKwlyZXQgPSBzcmNfZGV2aWNlcC0+ZGV2MmRl dl9mdW5jIChzcmNfZGV2aWNlcC0+dGFyZ2V0X2lkLAorCQkJCQkgKGNoYXIg KikgZHN0ICsgZHN0X29mZiwKKwkJCQkJIChjaGFyICopIHNyYyArIHNyY19v ZmYsIGxlbmd0aCk7CiAgICAgICBlbHNlCi0JcmV0dXJuIEVJTlZBTDsKLSAg ICAgIHJldHVybiAwOworCXJldCA9IDA7CisgICAgICByZXR1cm4gcmV0ID8g MCA6IEVJTlZBTDsKICAgICB9CiAKICAgLyogRklYTUU6IGl0IHdvdWxkIGJl IG5pY2UgdG8gaGF2ZSBzb21lIHBsdWdpbiBmdW5jdGlvbiB0byBoYW5kbGUK QEAgLTIzNzQsMTQgKzI0MTcsMTcgQEAgZ29tcF90YXJnZXRfZmluaSAodm9p ZCkKICAgaW50IGk7CiAgIGZvciAoaSA9IDA7IGkgPCBudW1fZGV2aWNlczsg aSsrKQogICAgIHsKKyAgICAgIGJvb2wgcmV0ID0gdHJ1ZTsKICAgICAgIHN0 cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCA9ICZkZXZpY2VzW2ld OwogICAgICAgZ29tcF9tdXRleF9sb2NrICgmZGV2aWNlcC0+bG9jayk7CiAg ICAgICBpZiAoZGV2aWNlcC0+c3RhdGUgPT0gR09NUF9ERVZJQ0VfSU5JVElB TElaRUQpCiAJewotCSAgZGV2aWNlcC0+ZmluaV9kZXZpY2VfZnVuYyAoZGV2 aWNlcC0+dGFyZ2V0X2lkKTsKKwkgIHJldCA9IGRldmljZXAtPmZpbmlfZGV2 aWNlX2Z1bmMgKGRldmljZXAtPnRhcmdldF9pZCk7CiAJICBkZXZpY2VwLT5z dGF0ZSA9IEdPTVBfREVWSUNFX0ZJTkFMSVpFRDsKIAl9CiAgICAgICBnb21w X211dGV4X3VubG9jayAoJmRldmljZXAtPmxvY2spOworICAgICAgaWYgKCFy ZXQpCisJZ29tcF9mYXRhbCAoImRldmljZSBmaW5hbGl6YXRpb24gZmFpbGVk Iik7CiAgICAgfQogfQogCg== --------------090601040902090200020905--