From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 120022 invoked by alias); 18 Dec 2018 15:06:57 -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 120007 invoked by uid 89); 18 Dec 2018 15:06:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.1 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=qid, ord, aq 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, 18 Dec 2018 15:06:48 +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 1gZGxK-0006Ux-0o from ChungLin_Tang@mentor.com for gcc-patches@gcc.gnu.org; Tue, 18 Dec 2018 07:06:46 -0800 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, 18 Dec 2018 07:06:42 -0800 Reply-To: Subject: Re: [PATCH 2/6, OpenACC, libgomp] Async re-work, oacc-* parts (revised, v2) From: Chung-Lin Tang To: , Thomas Schwinge References: <12319572-dd02-c946-f2b9-9d047be9c707@mentor.com> Message-ID: <34db59a1-0446-1720-9a2e-b6e54f52edb2@mentor.com> Date: Tue, 18 Dec 2018 15:06:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.3.3 MIME-Version: 1.0 In-Reply-To: <12319572-dd02-c946-f2b9-9d047be9c707@mentor.com> Content-Type: multipart/mixed; boundary="------------ECB73899B9AD95BB1538E06C" X-SW-Source: 2018-12/txt/msg01312.txt.bz2 --------------ECB73899B9AD95BB1538E06C Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 486 On 2018/9/25 9:10 PM, Chung-Lin Tang wrote: > 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. > Hi Thomas, this part includes some of the lookup_goacc_asyncqueue fixes we talked about. I am still thinking about how the queue lock problem should really be solved, so regard this patch as just fixing some of the problems. --------------ECB73899B9AD95BB1538E06C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="02.openacc-parts.v1-v2.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="02.openacc-parts.v1-v2.diff" Content-length: 3608 ZGlmZiAtcnUgdHJ1bmstb3JpZy9saWJnb21wL29hY2MtYXN5bmMuYyB0cnVu ay13b3JrL2xpYmdvbXAvb2FjYy1hc3luYy5jCi0tLSB0cnVuay1vcmlnL2xp YmdvbXAvb2FjYy1hc3luYy5jCTIwMTgtMTItMTQgMjI6MTE6MjkuMjUyMjUx OTI1ICswODAwCisrKyB0cnVuay13b3JrL2xpYmdvbXAvb2FjYy1hc3luYy5j CTIwMTgtMTItMTggMjI6MTk6NTEuOTIzMTAyOTM4ICswODAwCkBAIC03MCwx MiArNzAsMTYgQEAKIAogICBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRl diA9IHRoci0+ZGV2OwogCisgIGdvbXBfbXV0ZXhfbG9jayAoJmRldi0+b3Bl bmFjYy5hc3luYy5sb2NrKTsKKwogICBpZiAoIWNyZWF0ZQogICAgICAgJiYg KGFzeW5jID49IGRldi0+b3BlbmFjYy5hc3luYy5uYXN5bmNxdWV1ZQogCSAg fHwgIWRldi0+b3BlbmFjYy5hc3luYy5hc3luY3F1ZXVlW2FzeW5jXSkpCi0g ICAgcmV0dXJuIE5VTEw7CisgICAgeworICAgICAgZ29tcF9tdXRleF91bmxv Y2sgKCZkZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7CisgICAgICByZXR1cm4g TlVMTDsKKyAgICB9CiAKLSAgZ29tcF9tdXRleF9sb2NrICgmZGV2LT5vcGVu YWNjLmFzeW5jLmxvY2spOwogICBpZiAoYXN5bmMgPj0gZGV2LT5vcGVuYWNj LmFzeW5jLm5hc3luY3F1ZXVlKQogICAgIHsKICAgICAgIGludCBkaWZmID0g YXN5bmMgKyAxIC0gZGV2LT5vcGVuYWNjLmFzeW5jLm5hc3luY3F1ZXVlOwpA QCAtOTEsNiArOTUsMTIgQEAKICAgICB7CiAgICAgICBkZXYtPm9wZW5hY2Mu YXN5bmMuYXN5bmNxdWV1ZVthc3luY10gPSBkZXYtPm9wZW5hY2MuYXN5bmMu Y29uc3RydWN0X2Z1bmMgKCk7CiAKKyAgICAgIGlmICghZGV2LT5vcGVuYWNj LmFzeW5jLmFzeW5jcXVldWVbYXN5bmNdKQorCXsKKwkgIGdvbXBfbXV0ZXhf dW5sb2NrICgmZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2spOworCSAgZ29tcF9m YXRhbCAoImFzeW5jICVkIGNyZWF0aW9uIGZhaWxlZCIsIGFzeW5jKTsKKwl9 CisgICAgICAKICAgICAgIC8qIExpbmsgbmV3IGFzeW5jIHF1ZXVlIGludG8g YWN0aXZlIGxpc3QuICAqLwogICAgICAgZ29hY2NfYXFfbGlzdCBuID0gZ29t cF9tYWxsb2MgKHNpemVvZiAoc3RydWN0IGdvYWNjX2FzeW5jcXVldWVfbGlz dCkpOwogICAgICAgbi0+YXEgPSBkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNx dWV1ZVthc3luY107CmRpZmYgLXJ1IHRydW5rLW9yaWcvbGliZ29tcC9vYWNj LWhvc3QuYyB0cnVuay13b3JrL2xpYmdvbXAvb2FjYy1ob3N0LmMKLS0tIHRy dW5rLW9yaWcvbGliZ29tcC9vYWNjLWhvc3QuYwkyMDE4LTEyLTE0IDE4OjMx OjA3LjQ4NzIwMzc3MCArMDgwMAorKysgdHJ1bmstd29yay9saWJnb21wL29h Y2MtaG9zdC5jCTIwMTgtMTItMTggMjI6MjM6MjYuNzcxODA3NjY3ICswODAw CkBAIC0yNjYsNiArMjY2LDkgQEAKIAogICAgICAgLmV4ZWNfZnVuYyA9IGhv c3Rfb3BlbmFjY19leGVjLAogCisgICAgICAuY3JlYXRlX3RocmVhZF9kYXRh X2Z1bmMgPSBob3N0X29wZW5hY2NfY3JlYXRlX3RocmVhZF9kYXRhLAorICAg ICAgLmRlc3Ryb3lfdGhyZWFkX2RhdGFfZnVuYyA9IGhvc3Rfb3BlbmFjY19k ZXN0cm95X3RocmVhZF9kYXRhLAorCiAgICAgICAuYXN5bmMgPSB7CiAJLmNv bnN0cnVjdF9mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX2NvbnN0cnVjdCwK IAkuZGVzdHJ1Y3RfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY19kZXN0cnVj dCwKQEAgLTI3OCw5ICsyODEsNiBAQAogCS5ob3N0MmRldl9mdW5jID0gaG9z dF9vcGVuYWNjX2FzeW5jX2hvc3QyZGV2LAogICAgICAgfSwKIAotICAgICAg LmNyZWF0ZV90aHJlYWRfZGF0YV9mdW5jID0gaG9zdF9vcGVuYWNjX2NyZWF0 ZV90aHJlYWRfZGF0YSwKLSAgICAgIC5kZXN0cm95X3RocmVhZF9kYXRhX2Z1 bmMgPSBob3N0X29wZW5hY2NfZGVzdHJveV90aHJlYWRfZGF0YSwKLQogICAg ICAgLmN1ZGEgPSB7CiAJLmdldF9jdXJyZW50X2RldmljZV9mdW5jID0gTlVM TCwKIAkuZ2V0X2N1cnJlbnRfY29udGV4dF9mdW5jID0gTlVMTCwKZGlmZiAt cnUgdHJ1bmstb3JpZy9saWJnb21wL29hY2MtcGx1Z2luLmMgdHJ1bmstd29y ay9saWJnb21wL29hY2MtcGx1Z2luLmMKLS0tIHRydW5rLW9yaWcvbGliZ29t cC9vYWNjLXBsdWdpbi5jCTIwMTgtMTItMTQgMTg6MzE6MDcuNDkxMjAzNzQ1 ICswODAwCisrKyB0cnVuay13b3JrL2xpYmdvbXAvb2FjYy1wbHVnaW4uYwky MDE4LTEyLTE4IDIyOjI3OjQ2LjA0NzcyMjAwNCArMDgwMApAQCAtMzAsNiAr MzAsMTMgQEAKICNpbmNsdWRlICJvYWNjLXBsdWdpbi5oIgogI2luY2x1ZGUg Im9hY2MtaW50LmgiCiAKK3ZvaWQKK0dPTVBfUExVR0lOX2FzeW5jX3VubWFw X3ZhcnMgKHZvaWQgKnB0ciBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKwkJ CSAgICAgIGludCBhc3luYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKK3sK KyAgZ29tcF9mYXRhbCAoImludmFsaWQgcGx1Z2luIGZ1bmN0aW9uIik7Cit9 CisKIC8qIFJldHVybiB0aGUgdGFyZ2V0LXNwZWNpZmljIHBhcnQgb2YgdGhl IFRMUyBkYXRhIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICAqLwogCiB2b2lk ICoKZGlmZiAtcnUgdHJ1bmstb3JpZy9saWJnb21wL3BsdWdpbi9wbHVnaW4t bnZwdHguYyB0cnVuay13b3JrL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0 eC5jCg== --------------ECB73899B9AD95BB1538E06C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="async-02.openacc-parts.v2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="async-02.openacc-parts.v2.patch" Content-length: 34677 SW5kZXg6IGxpYmdvbXAvb2FjYy1hc3luYy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1hc3luYy5jCShyZXZpc2lvbiAyNjcy MjYpCisrKyBsaWJnb21wL29hY2MtYXN5bmMuYwkod29ya2luZyBjb3B5KQpA QCAtMjcsMTAgKzI3LDk3IEBACiAgICA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVk ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAib3BlbmFjYy5oIgogI2luY2x1ZGUg ImxpYmdvbXAuaCIKICNpbmNsdWRlICJvYWNjLWludC5oIgogCitzdGF0aWMg c3RydWN0IGdvYWNjX3RocmVhZCAqCitnZXRfZ29hY2NfdGhyZWFkICh2b2lk KQoreworICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJl YWQgKCk7CisKKyAgaWYgKCF0aHIgfHwgIXRoci0+ZGV2KQorICAgIGdvbXBf ZmF0YWwgKCJubyBkZXZpY2UgYWN0aXZlIik7CisKKyAgcmV0dXJuIHRocjsK K30KKworc3RhdGljIHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqCitnZXRf Z29hY2NfdGhyZWFkX2RldmljZSAodm9pZCkKK3sKKyAgc3RydWN0IGdvYWNj X3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOworCisgIGlmICghdGhy IHx8ICF0aHItPmRldikKKyAgICBnb21wX2ZhdGFsICgibm8gZGV2aWNlIGFj dGl2ZSIpOworCisgIHJldHVybiB0aHItPmRldjsKK30KKworYXR0cmlidXRl X2hpZGRlbiBzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqCitsb29rdXBfZ29h Y2NfYXN5bmNxdWV1ZSAoc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyLCBib29s IGNyZWF0ZSwgaW50IGFzeW5jKQoreworICAvKiBUaGUgc3BlY2lhbCB2YWx1 ZSBhY2NfYXN5bmNfbm92YWwgKC0xKSBtYXBzIHRvIHRoZSB0aHJlYWQtc3Bl Y2lmaWMKKyAgICAgZGVmYXVsdCBhc3luYyBzdHJlYW0uICAqLworICBpZiAo YXN5bmMgPT0gYWNjX2FzeW5jX25vdmFsKQorICAgIGFzeW5jID0gdGhyLT5k ZWZhdWx0X2FzeW5jOworCisgIGlmIChhc3luYyA9PSBhY2NfYXN5bmNfc3lu YykKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoYXN5bmMgPCAwKQorICAg IGdvbXBfZmF0YWwgKCJiYWQgYXN5bmMgJWQiLCBhc3luYyk7CisKKyAgc3Ry dWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXYgPSB0aHItPmRldjsKKworICBn b21wX211dGV4X2xvY2sgKCZkZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7CisK KyAgaWYgKCFjcmVhdGUKKyAgICAgICYmIChhc3luYyA+PSBkZXYtPm9wZW5h Y2MuYXN5bmMubmFzeW5jcXVldWUKKwkgIHx8ICFkZXYtPm9wZW5hY2MuYXN5 bmMuYXN5bmNxdWV1ZVthc3luY10pKQorICAgIHsKKyAgICAgIGdvbXBfbXV0 ZXhfdW5sb2NrICgmZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2spOworICAgICAg cmV0dXJuIE5VTEw7CisgICAgfQorCisgIGlmIChhc3luYyA+PSBkZXYtPm9w ZW5hY2MuYXN5bmMubmFzeW5jcXVldWUpCisgICAgeworICAgICAgaW50IGRp ZmYgPSBhc3luYyArIDEgLSBkZXYtPm9wZW5hY2MuYXN5bmMubmFzeW5jcXVl dWU7CisgICAgICBkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZQorCT0g Z29tcF9yZWFsbG9jIChkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZSwK KwkJCXNpemVvZiAoZ29hY2NfYXEpICogKGFzeW5jICsgMSkpOworICAgICAg bWVtc2V0IChkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZSArIGRldi0+ b3BlbmFjYy5hc3luYy5uYXN5bmNxdWV1ZSwKKwkgICAgICAwLCBzaXplb2Yg KGdvYWNjX2FxKSAqIGRpZmYpOworICAgICAgZGV2LT5vcGVuYWNjLmFzeW5j Lm5hc3luY3F1ZXVlID0gYXN5bmMgKyAxOworICAgIH0KKworICBpZiAoIWRl di0+b3BlbmFjYy5hc3luYy5hc3luY3F1ZXVlW2FzeW5jXSkKKyAgICB7Cisg ICAgICBkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZVthc3luY10gPSBk ZXYtPm9wZW5hY2MuYXN5bmMuY29uc3RydWN0X2Z1bmMgKCk7CisKKyAgICAg IGlmICghZGV2LT5vcGVuYWNjLmFzeW5jLmFzeW5jcXVldWVbYXN5bmNdKQor CXsKKwkgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZGV2LT5vcGVuYWNjLmFzeW5j LmxvY2spOworCSAgZ29tcF9mYXRhbCAoImFzeW5jICVkIGNyZWF0aW9uIGZh aWxlZCIsIGFzeW5jKTsKKwl9CisgICAgICAKKyAgICAgIC8qIExpbmsgbmV3 IGFzeW5jIHF1ZXVlIGludG8gYWN0aXZlIGxpc3QuICAqLworICAgICAgZ29h Y2NfYXFfbGlzdCBuID0gZ29tcF9tYWxsb2MgKHNpemVvZiAoc3RydWN0IGdv YWNjX2FzeW5jcXVldWVfbGlzdCkpOworICAgICAgbi0+YXEgPSBkZXYtPm9w ZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZVthc3luY107CisgICAgICBuLT5uZXh0 ID0gZGV2LT5vcGVuYWNjLmFzeW5jLmFjdGl2ZTsKKyAgICAgIGRldi0+b3Bl bmFjYy5hc3luYy5hY3RpdmUgPSBuOworICAgIH0KKyAgZ29tcF9tdXRleF91 bmxvY2sgKCZkZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7CisgIHJldHVybiBk ZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNxdWV1ZVthc3luY107Cit9CisKK2F0 dHJpYnV0ZV9oaWRkZW4gc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKgorZ2V0 X2dvYWNjX2FzeW5jcXVldWUgKGludCBhc3luYykKK3sKKyAgc3RydWN0IGdv YWNjX3RocmVhZCAqdGhyID0gZ2V0X2dvYWNjX3RocmVhZCAoKTsKKyAgcmV0 dXJuIGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIsIHRydWUsIGFzeW5j KTsKK30KKwogaW50CiBhY2NfYXN5bmNfdGVzdCAoaW50IGFzeW5jKQogewpA QCAtNDIsMTggKzEyOSwyNSBAQCBhY2NfYXN5bmNfdGVzdCAoaW50IGFzeW5j KQogICBpZiAoIXRociB8fCAhdGhyLT5kZXYpCiAgICAgZ29tcF9mYXRhbCAo Im5vIGRldmljZSBhY3RpdmUiKTsKIAotICByZXR1cm4gdGhyLT5kZXYtPm9w ZW5hY2MuYXN5bmNfdGVzdF9mdW5jIChhc3luYyk7CisgIGdvYWNjX2FxIGFx ID0gbG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwgdHJ1ZSwgYXN5bmMp OworICByZXR1cm4gdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMudGVzdF9mdW5j IChhcSk7CiB9CiAKIGludAogYWNjX2FzeW5jX3Rlc3RfYWxsICh2b2lkKQog ewotICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQg KCk7CisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2FjY190 aHJlYWQgKCk7CiAKLSAgaWYgKCF0aHIgfHwgIXRoci0+ZGV2KQotICAgIGdv bXBfZmF0YWwgKCJubyBkZXZpY2UgYWN0aXZlIik7Ci0KLSAgcmV0dXJuIHRo ci0+ZGV2LT5vcGVuYWNjLmFzeW5jX3Rlc3RfYWxsX2Z1bmMgKCk7CisgIGlu dCByZXQgPSAxOworICBnb21wX211dGV4X2xvY2sgKCZ0aHItPmRldi0+b3Bl bmFjYy5hc3luYy5sb2NrKTsKKyAgZm9yIChnb2FjY19hcV9saXN0IGwgPSB0 aHItPmRldi0+b3BlbmFjYy5hc3luYy5hY3RpdmU7IGw7IGwgPSBsLT5uZXh0 KQorICAgIGlmICghdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMudGVzdF9mdW5j IChsLT5hcSkpCisgICAgICB7CisJcmV0ID0gMDsKKwlicmVhazsKKyAgICAg IH0KKyAgZ29tcF9tdXRleF91bmxvY2sgKCZ0aHItPmRldi0+b3BlbmFjYy5h c3luYy5sb2NrKTsKKyAgcmV0dXJuIHJldDsKIH0KIAogdm9pZApAQCAtNjIs MTIgKzE1NiwxMCBAQCBhY2Nfd2FpdCAoaW50IGFzeW5jKQogICBpZiAoIWFz eW5jX3ZhbGlkX3AgKGFzeW5jKSkKICAgICBnb21wX2ZhdGFsICgiaW52YWxp ZCBhc3luYyBhcmd1bWVudDogJWQiLCBhc3luYyk7CiAKLSAgc3RydWN0IGdv YWNjX3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOworICBzdHJ1Y3Qg Z29hY2NfdGhyZWFkICp0aHIgPSBnZXRfZ29hY2NfdGhyZWFkICgpOwogCi0g IGlmICghdGhyIHx8ICF0aHItPmRldikKLSAgICBnb21wX2ZhdGFsICgibm8g ZGV2aWNlIGFjdGl2ZSIpOwotCi0gIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5j X3dhaXRfZnVuYyAoYXN5bmMpOworICBnb2FjY19hcSBhcSA9IGxvb2t1cF9n b2FjY19hc3luY3F1ZXVlICh0aHIsIHRydWUsIGFzeW5jKTsKKyAgdGhyLT5k ZXYtPm9wZW5hY2MuYXN5bmMuc3luY2hyb25pemVfZnVuYyAoYXEpOwogfQog CiAvKiBhY2NfYXN5bmNfd2FpdCBpcyBhbiBPcGVuQUNDIDEuMCBjb21wYXRp YmlsaXR5IG5hbWUgZm9yIGFjY193YWl0LiAgKi8KQEAgLTg0LDIzICsxNzYs MjggQEAgYWNjX2FzeW5jX3dhaXQgKGludCBhc3luYykKIHZvaWQKIGFjY193 YWl0X2FzeW5jIChpbnQgYXN5bmMxLCBpbnQgYXN5bmMyKQogewotICBzdHJ1 Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CisgIHN0 cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2FjY190aHJlYWQgKCk7 CiAKLSAgaWYgKCF0aHIgfHwgIXRoci0+ZGV2KQotICAgIGdvbXBfZmF0YWwg KCJubyBkZXZpY2UgYWN0aXZlIik7CisgIGdvYWNjX2FxIGFxMiA9IGxvb2t1 cF9nb2FjY19hc3luY3F1ZXVlICh0aHIsIHRydWUsIGFzeW5jMik7CisgIGdv YWNjX2FxIGFxMSA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIsIGZh bHNlLCBhc3luYzEpOworICBpZiAoIWFxMSkKKyAgICBnb21wX2ZhdGFsICgi aW52YWxpZCBhc3luYyAxIik7CisgIGlmIChhcTEgPT0gYXEyKQorICAgIGdv bXBfZmF0YWwgKCJpZGVudGljYWwgcGFyYW1ldGVycyIpOwogCi0gIHRoci0+ ZGV2LT5vcGVuYWNjLmFzeW5jX3dhaXRfYXN5bmNfZnVuYyAoYXN5bmMxLCBh c3luYzIpOworICB0aHItPmRldi0+b3BlbmFjYy5hc3luYy5zeW5jaHJvbml6 ZV9mdW5jIChhcTEpOworICB0aHItPmRldi0+b3BlbmFjYy5hc3luYy5zZXJp YWxpemVfZnVuYyAoYXExLCBhcTIpOwogfQogCiB2b2lkCiBhY2Nfd2FpdF9h bGwgKHZvaWQpCiB7Ci0gIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdv YWNjX3RocmVhZCAoKTsKKyAgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpk ZXYgPSBnZXRfZ29hY2NfdGhyZWFkX2RldmljZSAoKTsKIAotICBpZiAoIXRo ciB8fCAhdGhyLT5kZXYpCi0gICAgZ29tcF9mYXRhbCAoIm5vIGRldmljZSBh Y3RpdmUiKTsKLQotICB0aHItPmRldi0+b3BlbmFjYy5hc3luY193YWl0X2Fs bF9mdW5jICgpOworICBnb21wX211dGV4X2xvY2sgKCZkZXYtPm9wZW5hY2Mu YXN5bmMubG9jayk7CisgIGZvciAoZ29hY2NfYXFfbGlzdCBsID0gZGV2LT5v cGVuYWNjLmFzeW5jLmFjdGl2ZTsgbDsgbCA9IGwtPm5leHQpCisgICAgZGV2 LT5vcGVuYWNjLmFzeW5jLnN5bmNocm9uaXplX2Z1bmMgKGwtPmFxKTsKKyAg Z29tcF9tdXRleF91bmxvY2sgKCZkZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7 CiB9CiAKIC8qIGFjY19hc3luY193YWl0X2FsbCBpcyBhbiBPcGVuQUNDIDEu MCBjb21wYXRpYmlsaXR5IG5hbWUgZm9yIGFjY193YWl0X2FsbC4gICovCkBA IC0xMjAsMTAgKzIxNyw3NCBAQCBhY2Nfd2FpdF9hbGxfYXN5bmMgKGludCBh c3luYykKICAgaWYgKCFhc3luY192YWxpZF9wIChhc3luYykpCiAgICAgZ29t cF9mYXRhbCAoImludmFsaWQgYXN5bmMgYXJndW1lbnQ6ICVkIiwgYXN5bmMp OwogCi0gIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVh ZCAoKTsKKyAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ2V0X2dvYWNj X3RocmVhZCAoKTsKIAotICBpZiAoIXRociB8fCAhdGhyLT5kZXYpCi0gICAg Z29tcF9mYXRhbCAoIm5vIGRldmljZSBhY3RpdmUiKTsKKyAgZ29hY2NfYXEg d2FpdGluZ19xdWV1ZSA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIs IHRydWUsIGFzeW5jKTsKIAotICB0aHItPmRldi0+b3BlbmFjYy5hc3luY193 YWl0X2FsbF9hc3luY19mdW5jIChhc3luYyk7CisgIGdvbXBfbXV0ZXhfbG9j ayAoJnRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2spOworICBmb3IgKGdv YWNjX2FxX2xpc3QgbCA9IHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmFjdGl2 ZTsgbDsgbCA9IGwtPm5leHQpCisgICAgeworICAgICAgdGhyLT5kZXYtPm9w ZW5hY2MuYXN5bmMuc3luY2hyb25pemVfZnVuYyAobC0+YXEpOworICAgICAg aWYgKHdhaXRpbmdfcXVldWUpCisJdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMu c2VyaWFsaXplX2Z1bmMgKGwtPmFxLCB3YWl0aW5nX3F1ZXVlKTsKKyAgICB9 CisgIGdvbXBfbXV0ZXhfdW5sb2NrICgmdGhyLT5kZXYtPm9wZW5hY2MuYXN5 bmMubG9jayk7CiB9CisKK2ludAorYWNjX2dldF9kZWZhdWx0X2FzeW5jICh2 b2lkKQoreworICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnZXRfZ29h Y2NfdGhyZWFkICgpOworICByZXR1cm4gdGhyLT5kZWZhdWx0X2FzeW5jOwor fQorCit2b2lkCithY2Nfc2V0X2RlZmF1bHRfYXN5bmMgKGludCBhc3luYykK K3sKKyAgaWYgKGFzeW5jIDwgYWNjX2FzeW5jX3N5bmMpCisgICAgZ29tcF9m YXRhbCAoImludmFsaWQgYXN5bmMgYXJndW1lbnQ6ICVkIiwgYXN5bmMpOwor CisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2FjY190aHJl YWQgKCk7CisgIHRoci0+ZGVmYXVsdF9hc3luYyA9IGFzeW5jOworfQorCith dHRyaWJ1dGVfaGlkZGVuIHZvaWQKK2dvYWNjX2FzeW5jX2ZyZWUgKHN0cnVj dCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKKwkJICBzdHJ1Y3QgZ29h Y2NfYXN5bmNxdWV1ZSAqYXEsIHZvaWQgKnB0cikKK3sKKyAgaWYgKCFhcSkK KyAgICBmcmVlIChwdHIpOworICBlbHNlCisgICAgZGV2aWNlcC0+b3BlbmFj Yy5hc3luYy5xdWV1ZV9jYWxsYmFja19mdW5jIChhcSwgZnJlZSwgcHRyKTsK K30KKworYXR0cmlidXRlX2hpZGRlbiB2b2lkCitnb2FjY19pbml0X2FzeW5j cXVldWVzIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXApCit7 CisgIGdvbXBfbXV0ZXhfaW5pdCAoJmRldmljZXAtPm9wZW5hY2MuYXN5bmMu bG9jayk7CisgIGRldmljZXAtPm9wZW5hY2MuYXN5bmMubmFzeW5jcXVldWUg PSAwOworICBkZXZpY2VwLT5vcGVuYWNjLmFzeW5jLmFzeW5jcXVldWUgPSBO VUxMOworICBkZXZpY2VwLT5vcGVuYWNjLmFzeW5jLmFjdGl2ZSA9IE5VTEw7 Cit9CisKK2F0dHJpYnV0ZV9oaWRkZW4gYm9vbAorZ29hY2NfZmluaV9hc3lu Y3F1ZXVlcyAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwKQor eworICBib29sIHJldCA9IHRydWU7CisgIGlmIChkZXZpY2VwLT5vcGVuYWNj LmFzeW5jLm5hc3luY3F1ZXVlID4gMCkKKyAgICB7CisgICAgICBnb2FjY19h cV9saXN0IG5leHQ7CisgICAgICBmb3IgKGdvYWNjX2FxX2xpc3QgbCA9IGRl dmljZXAtPm9wZW5hY2MuYXN5bmMuYWN0aXZlOyBsOyBsID0gbmV4dCkKKwl7 CisJICByZXQgJj0gZGV2aWNlcC0+b3BlbmFjYy5hc3luYy5kZXN0cnVjdF9m dW5jIChsLT5hcSk7CisJICBuZXh0ID0gbC0+bmV4dDsKKwkgIGZyZWUgKGwp OworCX0KKyAgICAgIGZyZWUgKGRldmljZXAtPm9wZW5hY2MuYXN5bmMuYXN5 bmNxdWV1ZSk7CisgICAgICBkZXZpY2VwLT5vcGVuYWNjLmFzeW5jLm5hc3lu Y3F1ZXVlID0gMDsKKyAgICAgIGRldmljZXAtPm9wZW5hY2MuYXN5bmMuYXN5 bmNxdWV1ZSA9IE5VTEw7CisgICAgICBkZXZpY2VwLT5vcGVuYWNjLmFzeW5j LmFjdGl2ZSA9IE5VTEw7CisgICAgfQorICBnb21wX211dGV4X2Rlc3Ryb3kg KCZkZXZpY2VwLT5vcGVuYWNjLmFzeW5jLmxvY2spOworICByZXR1cm4gcmV0 OworfQpJbmRleDogbGliZ29tcC9vYWNjLWN1ZGEuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBsaWJnb21wL29hY2MtY3VkYS5jCShyZXZpc2lvbiAy NjcyMjYpCisrKyBsaWJnb21wL29hY2MtY3VkYS5jCSh3b3JraW5nIGNvcHkp CkBAIC02Miw3ICs2MiwxMSBAQCBhY2NfZ2V0X2N1ZGFfc3RyZWFtIChpbnQg YXN5bmMpCiAgICAgcmV0dXJuIE5VTEw7CiAKICAgaWYgKHRociAmJiB0aHIt PmRldiAmJiB0aHItPmRldi0+b3BlbmFjYy5jdWRhLmdldF9zdHJlYW1fZnVu YykKLSAgICByZXR1cm4gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5nZXRfc3Ry ZWFtX2Z1bmMgKGFzeW5jKTsKKyAgICB7CisgICAgICBnb2FjY19hcSBhcSA9 IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIsIGZhbHNlLCBhc3luYyk7 CisgICAgICBpZiAoYXEpCisJcmV0dXJuIHRoci0+ZGV2LT5vcGVuYWNjLmN1 ZGEuZ2V0X3N0cmVhbV9mdW5jIChhcSk7CisgICAgfQogIAogICByZXR1cm4g TlVMTDsKIH0KQEAgLTc5LDggKzgzLDE0IEBAIGFjY19zZXRfY3VkYV9zdHJl YW0gKGludCBhc3luYywgdm9pZCAqc3RyZWFtKQogCiAgIHRociA9IGdvYWNj X3RocmVhZCAoKTsKIAorICBpbnQgcmV0ID0gLTE7CiAgIGlmICh0aHIgJiYg dGhyLT5kZXYgJiYgdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5zZXRfc3RyZWFt X2Z1bmMpCi0gICAgcmV0dXJuIHRoci0+ZGV2LT5vcGVuYWNjLmN1ZGEuc2V0 X3N0cmVhbV9mdW5jIChhc3luYywgc3RyZWFtKTsKKyAgICB7CisgICAgICBn b2FjY19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChhc3luYyk7Cisg ICAgICBnb21wX211dGV4X2xvY2sgKCZ0aHItPmRldi0+b3BlbmFjYy5hc3lu Yy5sb2NrKTsKKyAgICAgIHJldCA9IHRoci0+ZGV2LT5vcGVuYWNjLmN1ZGEu c2V0X3N0cmVhbV9mdW5jIChhcSwgc3RyZWFtKTsKKyAgICAgIGdvbXBfbXV0 ZXhfdW5sb2NrICgmdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7Cisg ICAgfQogCi0gIHJldHVybiAtMTsKKyAgcmV0dXJuIHJldDsKIH0KSW5kZXg6 IGxpYmdvbXAvb2FjYy1ob3N0LmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gbGliZ29tcC9vYWNjLWhvc3QuYwkocmV2aXNpb24gMjY3MjI2KQorKysg bGliZ29tcC9vYWNjLWhvc3QuYwkod29ya2luZyBjb3B5KQpAQCAtMTQwLDgg KzE0MCw3IEBAIGhvc3Rfb3BlbmFjY19leGVjICh2b2lkICgqZm4pICh2b2lk ICopLAogCQkgICBzaXplX3QgbWFwbnVtIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKIAkJICAgdm9pZCAqKmhvc3RhZGRycywKIAkJICAgdm9pZCAqKmRl dmFkZHJzIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLQkJICAgaW50IGFz eW5jIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLQkJICAgdW5zaWduZWQg KmRpbXMgX19hdHRyaWJ1dGUgKCh1bnVzZWQpKSwKKwkJICAgdW5zaWduZWQg KmRpbXMgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogCQkgICB2b2lkICp0 YXJnX21lbV9kZXNjIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKICAg Zm4gKGhvc3RhZGRycyk7CkBAIC0xNDgsNDkgKzE0Nyw4MSBAQCBob3N0X29w ZW5hY2NfZXhlYyAodm9pZCAoKmZuKSAodm9pZCAqKSwKIH0KIAogc3RhdGlj IHZvaWQKLWhvc3Rfb3BlbmFjY19yZWdpc3Rlcl9hc3luY19jbGVhbnVwICh2 b2lkICp0YXJnX21lbV9kZXNjIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwK LQkJCQkgICAgIGludCBhc3luYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkp Citob3N0X29wZW5hY2NfYXN5bmNfZXhlYyAodm9pZCAoKmZuKSAodm9pZCAq KSwKKwkJCSBzaXplX3QgbWFwbnVtIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSwKKwkJCSB2b2lkICoqaG9zdGFkZHJzLAorCQkJIHZvaWQgKipkZXZhZGRy cyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJCQkgdW5zaWduZWQgKmRp bXMgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkJIHZvaWQgKnRhcmdf bWVtX2Rlc2MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkJIHN0cnVj dCBnb2FjY19hc3luY3F1ZXVlICphcSBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSkpCiB7CisgIGZuIChob3N0YWRkcnMpOwogfQogCiBzdGF0aWMgaW50Ci1o b3N0X29wZW5hY2NfYXN5bmNfdGVzdCAoaW50IGFzeW5jIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSkKK2hvc3Rfb3BlbmFjY19hc3luY190ZXN0IChzdHJ1 Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqYXEgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpKQogewogICByZXR1cm4gMTsKIH0KIAotc3RhdGljIGludAotaG9zdF9v cGVuYWNjX2FzeW5jX3Rlc3RfYWxsICh2b2lkKQorc3RhdGljIHZvaWQKK2hv c3Rfb3BlbmFjY19hc3luY19zeW5jaHJvbml6ZSAoc3RydWN0IGdvYWNjX2Fz eW5jcXVldWUgKmFxCisJCQkJX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQog ewotICByZXR1cm4gMTsKIH0KIAogc3RhdGljIHZvaWQKLWhvc3Rfb3BlbmFj Y19hc3luY193YWl0IChpbnQgYXN5bmMgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpKQoraG9zdF9vcGVuYWNjX2FzeW5jX3NlcmlhbGl6ZSAoc3RydWN0IGdv YWNjX2FzeW5jcXVldWUgKmFxMQorCQkJICAgICAgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLAorCQkJICAgICAgc3RydWN0IGdvYWNjX2FzeW5jcXVldWUg KmFxMgorCQkJICAgICAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewog fQogCi1zdGF0aWMgdm9pZAotaG9zdF9vcGVuYWNjX2FzeW5jX3dhaXRfYXN5 bmMgKGludCBhc3luYzEgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotCQkJ ICAgICAgIGludCBhc3luYzIgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQor c3RhdGljIGJvb2wKK2hvc3Rfb3BlbmFjY19hc3luY19ob3N0MmRldiAoaW50 IG9yZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJCQkgICAgIHZvaWQg KmRzdCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJCQkgICAgIGNvbnN0 IHZvaWQgKnNyYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJCQkgICAg IHNpemVfdCBuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCSAgICAg c3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKmFxCisJCQkgICAgIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSkKIHsKKyAgcmV0dXJuIHRydWU7CiB9CiAKLXN0 YXRpYyB2b2lkCi1ob3N0X29wZW5hY2NfYXN5bmNfd2FpdF9hbGwgKHZvaWQp CitzdGF0aWMgYm9vbAoraG9zdF9vcGVuYWNjX2FzeW5jX2RldjJob3N0IChp bnQgb3JkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCSAgICAgdm9p ZCAqZHN0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCSAgICAgY29u c3Qgdm9pZCAqc3JjIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCSAg ICAgc2l6ZV90IG4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkJICAg ICBzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAqYXEKKwkJCSAgICAgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpKQogeworICByZXR1cm4gdHJ1ZTsKIH0KIAog c3RhdGljIHZvaWQKLWhvc3Rfb3BlbmFjY19hc3luY193YWl0X2FsbF9hc3lu YyAoaW50IGFzeW5jIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKK2hvc3Rf b3BlbmFjY19hc3luY19xdWV1ZV9jYWxsYmFjayAoc3RydWN0IGdvYWNjX2Fz eW5jcXVldWUgKmFxCisJCQkJICAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LAorCQkJCSAgIHZvaWQgKCpjYWxsYmFja19mbikodm9pZCAqKQorCQkJCSAg IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJCQkgICB2b2lkICp1c2Vy cHRyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKIH0KIAotc3RhdGlj IHZvaWQKLWhvc3Rfb3BlbmFjY19hc3luY19zZXRfYXN5bmMgKGludCBhc3lu YyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCitzdGF0aWMgc3RydWN0IGdv YWNjX2FzeW5jcXVldWUgKgoraG9zdF9vcGVuYWNjX2FzeW5jX2NvbnN0cnVj dCAodm9pZCkKIHsKKyAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBib29s Citob3N0X29wZW5hY2NfYXN5bmNfZGVzdHJ1Y3QgKHN0cnVjdCBnb2FjY19h c3luY3F1ZXVlICphcQorCQkJICAgICBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSkpCit7CisgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCAqCiBo b3N0X29wZW5hY2NfY3JlYXRlX3RocmVhZF9kYXRhIChpbnQgb3JkIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKQEAgLTIzNSwxOSArMjY2LDIxIEBA IHN0YXRpYyBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgaG9zdF9kaXNwYXRj aCA9CiAKICAgICAgIC5leGVjX2Z1bmMgPSBob3N0X29wZW5hY2NfZXhlYywK IAotICAgICAgLnJlZ2lzdGVyX2FzeW5jX2NsZWFudXBfZnVuYyA9IGhvc3Rf b3BlbmFjY19yZWdpc3Rlcl9hc3luY19jbGVhbnVwLAotCi0gICAgICAuYXN5 bmNfdGVzdF9mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX3Rlc3QsCi0gICAg ICAuYXN5bmNfdGVzdF9hbGxfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY190 ZXN0X2FsbCwKLSAgICAgIC5hc3luY193YWl0X2Z1bmMgPSBob3N0X29wZW5h Y2NfYXN5bmNfd2FpdCwKLSAgICAgIC5hc3luY193YWl0X2FzeW5jX2Z1bmMg PSBob3N0X29wZW5hY2NfYXN5bmNfd2FpdF9hc3luYywKLSAgICAgIC5hc3lu Y193YWl0X2FsbF9mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX3dhaXRfYWxs LAotICAgICAgLmFzeW5jX3dhaXRfYWxsX2FzeW5jX2Z1bmMgPSBob3N0X29w ZW5hY2NfYXN5bmNfd2FpdF9hbGxfYXN5bmMsCi0gICAgICAuYXN5bmNfc2V0 X2FzeW5jX2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5bmNfc2V0X2FzeW5jLAot CiAgICAgICAuY3JlYXRlX3RocmVhZF9kYXRhX2Z1bmMgPSBob3N0X29wZW5h Y2NfY3JlYXRlX3RocmVhZF9kYXRhLAogICAgICAgLmRlc3Ryb3lfdGhyZWFk X2RhdGFfZnVuYyA9IGhvc3Rfb3BlbmFjY19kZXN0cm95X3RocmVhZF9kYXRh LAogCisgICAgICAuYXN5bmMgPSB7CisJLmNvbnN0cnVjdF9mdW5jID0gaG9z dF9vcGVuYWNjX2FzeW5jX2NvbnN0cnVjdCwKKwkuZGVzdHJ1Y3RfZnVuYyA9 IGhvc3Rfb3BlbmFjY19hc3luY19kZXN0cnVjdCwKKwkudGVzdF9mdW5jID0g aG9zdF9vcGVuYWNjX2FzeW5jX3Rlc3QsCisJLnN5bmNocm9uaXplX2Z1bmMg PSBob3N0X29wZW5hY2NfYXN5bmNfc3luY2hyb25pemUsCisJLnNlcmlhbGl6 ZV9mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX3NlcmlhbGl6ZSwKKwkucXVl dWVfY2FsbGJhY2tfZnVuYyA9IGhvc3Rfb3BlbmFjY19hc3luY19xdWV1ZV9j YWxsYmFjaywKKwkuZXhlY19mdW5jID0gaG9zdF9vcGVuYWNjX2FzeW5jX2V4 ZWMsCisJLmRldjJob3N0X2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5bmNfZGV2 Mmhvc3QsCisJLmhvc3QyZGV2X2Z1bmMgPSBob3N0X29wZW5hY2NfYXN5bmNf aG9zdDJkZXYsCisgICAgICB9LAorCiAgICAgICAuY3VkYSA9IHsKIAkuZ2V0 X2N1cnJlbnRfZGV2aWNlX2Z1bmMgPSBOVUxMLAogCS5nZXRfY3VycmVudF9j b250ZXh0X2Z1bmMgPSBOVUxMLApJbmRleDogbGliZ29tcC9vYWNjLWluaXQu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJnb21wL29hY2MtaW5p dC5jCShyZXZpc2lvbiAyNjcyMjYpCisrKyBsaWJnb21wL29hY2MtaW5pdC5j CSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgYWNjX3NodXRk b3duXzEgKGFjY19kZXZpY2VfdCBkKQogICAgICAgaWYgKGFjY19kZXYtPnN0 YXRlID09IEdPTVBfREVWSUNFX0lOSVRJQUxJWkVEKQogICAgICAgICB7CiAJ ICBkZXZpY2VzX2FjdGl2ZSA9IHRydWU7Ci0JICByZXQgJj0gYWNjX2Rldi0+ ZmluaV9kZXZpY2VfZnVuYyAoYWNjX2Rldi0+dGFyZ2V0X2lkKTsKKwkgIHJl dCAmPSBnb21wX2ZpbmlfZGV2aWNlIChhY2NfZGV2KTsKIAkgIGFjY19kZXYt PnN0YXRlID0gR09NUF9ERVZJQ0VfVU5JTklUSUFMSVpFRDsKIAl9CiAgICAg ICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOwpAQCAtNDI2 LDggKzQyNiw4IEBAIGdvYWNjX2F0dGFjaF9ob3N0X3RocmVhZF90b19kZXZp Y2UgKGludCBvcmQpCiAgIAogICB0aHItPnRhcmdldF90bHMKICAgICA9IGFj Y19kZXYtPm9wZW5hY2MuY3JlYXRlX3RocmVhZF9kYXRhX2Z1bmMgKG9yZCk7 Ci0gIAotICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5j IChhY2NfYXN5bmNfc3luYyk7CisKKyAgdGhyLT5kZWZhdWx0X2FzeW5jID0g YWNjX2FzeW5jX2RlZmF1bHQ7CiB9CiAKIC8qIE9wZW5BQ0MgMi4wYSAoMy4y LjEyLCAzLjIuMTMpIGRvZXNuJ3Qgc3BlY2lmeSB3aGV0aGVyIHRoZSBzZXJp YWxpemF0aW9uIG9mCkluZGV4OiBsaWJnb21wL29hY2MtaW50LmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGliZ29tcC9vYWNjLWludC5oCShyZXZp c2lvbiAyNjcyMjYpCisrKyBsaWJnb21wL29hY2MtaW50LmgJKHdvcmtpbmcg Y29weSkKQEAgLTczLDYgKzczLDkgQEAgc3RydWN0IGdvYWNjX3RocmVhZAog CiAgIC8qIFRhcmdldC1zcGVjaWZpYyBkYXRhICh1c2VkIGJ5IHBsdWdpbiku ICAqLwogICB2b2lkICp0YXJnZXRfdGxzOworCisgIC8qIERlZmF1bHQgT3Bl bkFDQyBhc3luYyBxdWV1ZSBmb3IgY3VycmVudCB0aHJlYWQsIGV4cG9ydGVk IHRvIHBsdWdpbi4gICovCisgIGludCBkZWZhdWx0X2FzeW5jOwogfTsKIAog I2lmIGRlZmluZWQgSEFWRV9UTFMgfHwgZGVmaW5lZCBVU0VfRU1VVExTCkBA IC05OSw2ICsxMDIsMTQgQEAgdm9pZCBnb2FjY19yZXN0b3JlX2JpbmQgKHZv aWQpOwogdm9pZCBnb2FjY19sYXp5X2luaXRpYWxpemUgKHZvaWQpOwogdm9p ZCBnb2FjY19ob3N0X2luaXQgKHZvaWQpOwogCit2b2lkIGdvYWNjX2luaXRf YXN5bmNxdWV1ZXMgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqKTsKK2Jv b2wgZ29hY2NfZmluaV9hc3luY3F1ZXVlcyAoc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICopOwordm9pZCBnb2FjY19hc3luY19mcmVlIChzdHJ1Y3QgZ29t cF9kZXZpY2VfZGVzY3IgKiwgc3RydWN0IGdvYWNjX2FzeW5jcXVldWUgKiwK KwkJICAgICAgIHZvaWQgKik7CitzdHJ1Y3QgZ29hY2NfYXN5bmNxdWV1ZSAq Z2V0X2dvYWNjX2FzeW5jcXVldWUgKGludCk7CitzdHJ1Y3QgZ29hY2NfYXN5 bmNxdWV1ZSAqbG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHN0cnVjdCBnb2Fj Y190aHJlYWQgKiwgYm9vbCwKKwkJCQkJCSAgaW50KTsKKwogc3RhdGljIGlu bGluZSBib29sCiBhc3luY192YWxpZF9zdHJlYW1faWRfcCAoaW50IGFzeW5j KQogewpJbmRleDogbGliZ29tcC9vYWNjLW1lbS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1tZW0uYwkocmV2aXNpb24gMjY3 MjI2KQorKysgbGliZ29tcC9vYWNjLW1lbS5jCSh3b3JraW5nIGNvcHkpCkBA IC0xNzIsMTggKzE3MiwxMSBAQCBtZW1jcHlfdG9mcm9tX2RldmljZSAoYm9v bCBmcm9tLCB2b2lkICpkLCB2b2lkICpoLAogICAgICAgcmV0dXJuOwogICAg IH0KIAotICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLSAgICB0aHIt PmRldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYXN5bmMpOwot Ci0gIGJvb2wgcmV0ID0gKGZyb20KLQkgICAgICA/IHRoci0+ZGV2LT5kZXYy aG9zdF9mdW5jICh0aHItPmRldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKQotCSAg ICAgIDogdGhyLT5kZXYtPmhvc3QyZGV2X2Z1bmMgKHRoci0+ZGV2LT50YXJn ZXRfaWQsIGQsIGgsIHMpKTsKLQotICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNf c3luYykKLSAgICB0aHItPmRldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNf ZnVuYyAoYWNjX2FzeW5jX3N5bmMpOwotCi0gIGlmICghcmV0KQotICAgIGdv bXBfZmF0YWwgKCJlcnJvciBpbiAlcyIsIGxpYmZubmFtZSk7CisgIGdvYWNj X2FxIGFxID0gZ2V0X2dvYWNjX2FzeW5jcXVldWUgKGFzeW5jKTsKKyAgaWYg KGZyb20pCisgICAgZ29tcF9jb3B5X2RldjJob3N0ICh0aHItPmRldiwgYXEs IGgsIGQsIHMpOworICBlbHNlCisgICAgZ29tcF9jb3B5X2hvc3QyZGV2ICh0 aHItPmRldiwgYXEsIGQsIGgsIHMsIC8qIFRPRE86IGNidWY/ICovIE5VTEwp OwogfQogCiB2b2lkCkBAIC01MDksMTcgKzUwMiwxMyBAQCBwcmVzZW50X2Ny ZWF0ZV9jb3B5ICh1bnNpZ25lZCBmLCB2b2lkICpoLCBzaXplX3QgcwogCiAg ICAgICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOwogCi0g ICAgICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLQlhY2NfZGV2LT5v cGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7CisgICAgICBn b2FjY19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChhc3luYyk7CiAK LSAgICAgIHRndCA9IGdvbXBfbWFwX3ZhcnMgKGFjY19kZXYsIG1hcG51bSwg Jmhvc3RhZGRycywgTlVMTCwgJnMsICZraW5kcywgdHJ1ZSwKLQkJCSAgIEdP TVBfTUFQX1ZBUlNfT1BFTkFDQyk7CisgICAgICB0Z3QgPSBnb21wX21hcF92 YXJzX2FzeW5jIChhY2NfZGV2LCBhcSwgbWFwbnVtLCAmaG9zdGFkZHJzLCBO VUxMLCAmcywKKwkJCQkgJmtpbmRzLCB0cnVlLCBHT01QX01BUF9WQVJTX09Q RU5BQ0MpOwogICAgICAgLyogSW5pdGlhbGl6ZSBkeW5hbWljIHJlZmNvdW50 LiAgKi8KICAgICAgIHRndC0+bGlzdFswXS5rZXktPmR5bmFtaWNfcmVmY291 bnQgPSAxOwogCi0gICAgICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykK LQlhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhY2Nf YXN5bmNfc3luYyk7Ci0KICAgICAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19k ZXYtPmxvY2spOwogCiAgICAgICBkID0gdGd0LT50b19mcmVlOwpAQCAtNjc2 LDEzICs2NjUsOSBAQCBkZWxldGVfY29weW91dCAodW5zaWduZWQgZiwgdm9p ZCAqaCwgc2l6ZV90IHMsIGludAogCiAgICAgICBpZiAoZiAmIEZMQUdfQ09Q WU9VVCkKIAl7Ci0JICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKLQkg ICAgYWNjX2Rldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYXN5 bmMpOwotCSAgYWNjX2Rldi0+ZGV2Mmhvc3RfZnVuYyAoYWNjX2Rldi0+dGFy Z2V0X2lkLCBoLCBkLCBzKTsKLQkgIGlmIChhc3luYyA+IGFjY19hc3luY19z eW5jKQotCSAgICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19m dW5jIChhY2NfYXN5bmNfc3luYyk7CisJICBnb2FjY19hcSBhcSA9IGdldF9n b2FjY19hc3luY3F1ZXVlIChhc3luYyk7CisJICBnb21wX2NvcHlfZGV2Mmhv c3QgKGFjY19kZXYsIGFxLCBoLCBkLCBzKTsKIAl9Ci0KICAgICAgIGdvbXBf cmVtb3ZlX3ZhciAoYWNjX2Rldiwgbik7CiAgICAgfQogCkBAIC03NjUsMTcg Kzc1MCwxMyBAQCB1cGRhdGVfZGV2X2hvc3QgKGludCBpc19kZXYsIHZvaWQg KmgsIHNpemVfdCBzLCBpbgogICBkID0gKHZvaWQgKikgKG4tPnRndC0+dGd0 X3N0YXJ0ICsgbi0+dGd0X29mZnNldAogCQkrICh1aW50cHRyX3QpIGggLSBu LT5ob3N0X3N0YXJ0KTsKIAotICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3lu YykKLSAgICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5j IChhc3luYyk7CisgIGdvYWNjX2FxIGFxID0gZ2V0X2dvYWNjX2FzeW5jcXVl dWUgKGFzeW5jKTsKIAogICBpZiAoaXNfZGV2KQotICAgIGFjY19kZXYtPmhv c3QyZGV2X2Z1bmMgKGFjY19kZXYtPnRhcmdldF9pZCwgZCwgaCwgcyk7Cisg ICAgZ29tcF9jb3B5X2hvc3QyZGV2IChhY2NfZGV2LCBhcSwgZCwgaCwgcywg LyogVE9ETzogY2J1Zj8gKi8gTlVMTCk7CiAgIGVsc2UKLSAgICBhY2NfZGV2 LT5kZXYyaG9zdF9mdW5jIChhY2NfZGV2LT50YXJnZXRfaWQsIGgsIGQsIHMp OworICAgIGdvbXBfY29weV9kZXYyaG9zdCAoYWNjX2RldiwgYXEsIGgsIGQs IHMpOwogCi0gIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQotICAgIGFj Y19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFjY19hc3lu Y19zeW5jKTsKLQogICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxv Y2spOwogfQogCkBAIC04MDUsNyArNzg2LDcgQEAgYWNjX3VwZGF0ZV9zZWxm X2FzeW5jICh2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW4KIAogdm9pZAog Z29tcF9hY2NfaW5zZXJ0X3BvaW50ZXIgKHNpemVfdCBtYXBudW0sIHZvaWQg Kipob3N0YWRkcnMsIHNpemVfdCAqc2l6ZXMsCi0JCQkgdm9pZCAqa2luZHMp CisJCQkgdm9pZCAqa2luZHMsIGludCBhc3luYykKIHsKICAgc3RydWN0IHRh cmdldF9tZW1fZGVzYyAqdGd0OwogICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0 aHIgPSBnb2FjY190aHJlYWQgKCk7CkBAIC04MzUsOCArODE2LDkgQEAgZ29t cF9hY2NfaW5zZXJ0X3BvaW50ZXIgKHNpemVfdCBtYXBudW0sIHZvaWQgKipo b3MKICAgICB9CiAKICAgZ29tcF9kZWJ1ZyAoMCwgIiAgJXM6IHByZXBhcmUg bWFwcGluZ3NcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gIHRndCA9IGdvbXBfbWFw X3ZhcnMgKGFjY19kZXYsIG1hcG51bSwgaG9zdGFkZHJzLAotCQkgICAgICAg TlVMTCwgc2l6ZXMsIGtpbmRzLCB0cnVlLCBHT01QX01BUF9WQVJTX09QRU5B Q0MpOworICBnb2FjY19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChh c3luYyk7CisgIHRndCA9IGdvbXBfbWFwX3ZhcnNfYXN5bmMgKGFjY19kZXYs IGFxLCBtYXBudW0sIGhvc3RhZGRycywKKwkJCSAgICAgTlVMTCwgc2l6ZXMs IGtpbmRzLCB0cnVlLCBHT01QX01BUF9WQVJTX09QRU5BQ0MpOwogICBnb21w X2RlYnVnICgwLCAiICAlczogbWFwcGluZ3MgcHJlcGFyZWRcbiIsIF9fRlVO Q1RJT05fXyk7CiAKICAgLyogSW5pdGlhbGl6ZSBkeW5hbWljIHJlZmNvdW50 LiAgKi8KQEAgLTkzMCw3ICs5MTIsMTAgQEAgZ29tcF9hY2NfcmVtb3ZlX3Bv aW50ZXIgKHZvaWQgKmgsIHNpemVfdCBzLCBib29sIGYKICAgICAgIGlmIChh c3luYyA8IGFjY19hc3luY19ub3ZhbCkKIAlnb21wX3VubWFwX3ZhcnMgKHQs IHRydWUpOwogICAgICAgZWxzZQotCXQtPmRldmljZV9kZXNjci0+b3BlbmFj Yy5yZWdpc3Rlcl9hc3luY19jbGVhbnVwX2Z1bmMgKHQsIGFzeW5jKTsKKwl7 CisJICBnb2FjY19hcSBhcSA9IGdldF9nb2FjY19hc3luY3F1ZXVlIChhc3lu Yyk7CisJICBnb21wX3VubWFwX3ZhcnNfYXN5bmMgKHQsIHRydWUsIGFxKTsK Kwl9CiAgICAgfQogCiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+ bG9jayk7CkluZGV4OiBsaWJnb21wL29hY2MtcGFyYWxsZWwuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBsaWJnb21wL29hY2MtcGFyYWxsZWwuYwko cmV2aXNpb24gMjY3MjI2KQorKysgbGliZ29tcC9vYWNjLXBhcmFsbGVsLmMJ KHdvcmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgsNiBAQCBHT0FDQ19wYXJh bGxlbF9rZXllZCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9pZAogICAg IH0KICAgdmFfZW5kIChhcCk7CiAgIAotICBhY2NfZGV2LT5vcGVuYWNjLmFz eW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7Ci0KICAgaWYgKCEoYWNjX2Rl di0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NBUF9OQVRJVkVfRVhF QykpCiAgICAgewogICAgICAgay5ob3N0X3N0YXJ0ID0gKHVpbnRwdHJfdCkg Zm47CkBAIC0yMjYsNDQgKzIyNCwyOSBAQCBHT0FDQ19wYXJhbGxlbF9rZXll ZCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9pZAogICBlbHNlCiAgICAg dGd0X2ZuID0gKHZvaWQgKCopKSBmbjsKIAotICB0Z3QgPSBnb21wX21hcF92 YXJzIChhY2NfZGV2LCBtYXBudW0sIGhvc3RhZGRycywgTlVMTCwgc2l6ZXMs IGtpbmRzLCB0cnVlLAotCQkgICAgICAgR09NUF9NQVBfVkFSU19PUEVOQUND KTsKKyAgZ29hY2NfYXEgYXEgPSBnZXRfZ29hY2NfYXN5bmNxdWV1ZSAoYXN5 bmMpOwogCisgIHRndCA9IGdvbXBfbWFwX3ZhcnNfYXN5bmMgKGFjY19kZXYs IGFxLCBtYXBudW0sIGhvc3RhZGRycywgTlVMTCwgc2l6ZXMsIGtpbmRzLAor CQkJICAgICB0cnVlLCBHT01QX01BUF9WQVJTX09QRU5BQ0MpOworICAKICAg ZGV2YWRkcnMgPSBnb21wX2FsbG9jYSAoc2l6ZW9mICh2b2lkICopICogbWFw bnVtKTsKICAgZm9yIChpID0gMDsgaSA8IG1hcG51bTsgaSsrKQogICAgIGRl dmFkZHJzW2ldID0gKHZvaWQgKikgKHRndC0+bGlzdFtpXS5rZXktPnRndC0+ dGd0X3N0YXJ0CiAJCQkgICAgKyB0Z3QtPmxpc3RbaV0ua2V5LT50Z3Rfb2Zm c2V0CiAJCQkgICAgKyB0Z3QtPmxpc3RbaV0ub2Zmc2V0KTsKLQotICBhY2Nf ZGV2LT5vcGVuYWNjLmV4ZWNfZnVuYyAodGd0X2ZuLCBtYXBudW0sIGhvc3Rh ZGRycywgZGV2YWRkcnMsCi0JCQkgICAgICBhc3luYywgZGltcywgdGd0KTsK LQotICAvKiBJZiBydW5uaW5nIHN5bmNocm9ub3VzbHksIHVubWFwIGltbWVk aWF0ZWx5LiAgKi8KLSAgYm9vbCBjb3B5ZnJvbSA9IHRydWU7Ci0gIGlmIChh c3luY19zeW5jaHJvbm91c19wIChhc3luYykpCi0gICAgZ29tcF91bm1hcF92 YXJzICh0Z3QsIHRydWUpOworICBpZiAoYXEgPT0gTlVMTCkKKyAgICB7Cisg ICAgICBhY2NfZGV2LT5vcGVuYWNjLmV4ZWNfZnVuYyAodGd0X2ZuLCBtYXBu dW0sIGhvc3RhZGRycywgZGV2YWRkcnMsCisJCQkJICBkaW1zLCB0Z3QpOwor ICAgICAgLyogSWYgcnVubmluZyBzeW5jaHJvbm91c2x5LCB1bm1hcCBpbW1l ZGlhdGVseS4gICovCisgICAgICBnb21wX3VubWFwX3ZhcnMgKHRndCwgdHJ1 ZSk7CisgICAgfQogICBlbHNlCiAgICAgewotICAgICAgYm9vbCBhc3luY191 bm1hcCA9IGZhbHNlOwotICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0 Z3QtPmxpc3RfY291bnQ7IGkrKykKLQl7Ci0JICBzcGxheV90cmVlX2tleSBr ID0gdGd0LT5saXN0W2ldLmtleTsKLQkgIGlmIChrICYmIGstPnJlZmNvdW50 ID09IDEpCi0JICAgIHsKLQkgICAgICBhc3luY191bm1hcCA9IHRydWU7Ci0J ICAgICAgYnJlYWs7Ci0JICAgIH0KLQl9Ci0gICAgICBpZiAoYXN5bmNfdW5t YXApCi0JdGd0LT5kZXZpY2VfZGVzY3ItPm9wZW5hY2MucmVnaXN0ZXJfYXN5 bmNfY2xlYW51cF9mdW5jICh0Z3QsIGFzeW5jKTsKLSAgICAgIGVsc2UKLQl7 Ci0JICBjb3B5ZnJvbSA9IGZhbHNlOwotCSAgZ29tcF91bm1hcF92YXJzICh0 Z3QsIGNvcHlmcm9tKTsKLQl9CisgICAgICBhY2NfZGV2LT5vcGVuYWNjLmFz eW5jLmV4ZWNfZnVuYyAodGd0X2ZuLCBtYXBudW0sIGhvc3RhZGRycywgZGV2 YWRkcnMsCisJCQkJCWRpbXMsIHRndCwgYXEpOworICAgICAgZ29tcF91bm1h cF92YXJzX2FzeW5jICh0Z3QsIHRydWUsIGFxKTsKICAgICB9Ci0KLSAgYWNj X2Rldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5j X3N5bmMpOwogfQogCiAvKiBMZWdhY3kgZW50cnkgcG9pbnQsIG9ubHkgcHJv dmlkZSBob3N0IGV4ZWN1dGlvbi4gICovCkBAIC0zNzIsOCArMzU1LDYgQEAg R09BQ0NfZW50ZXJfZXhpdF9kYXRhIChpbnQgZGV2aWNlLCBzaXplX3QgbWFw bnVtLAogCWZpbmFsaXplID0gdHJ1ZTsKICAgICB9CiAKLSAgYWNjX2Rldi0+ b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAoYXN5bmMpOwotCiAgIC8q IERldGVybWluZSBpZiB0aGlzIGlzIGFuICJhY2MgZW50ZXIgZGF0YSIuICAq LwogICBmb3IgKGkgPSAwOyBpIDwgbWFwbnVtOyArK2kpCiAgICAgewpAQCAt NDQxLDcgKzQyMiw3IEBAIEdPQUNDX2VudGVyX2V4aXRfZGF0YSAoaW50IGRl dmljZSwgc2l6ZV90IG1hcG51bSwKIAkgIGVsc2UKIAkgICAgewogCSAgICAg IGdvbXBfYWNjX2luc2VydF9wb2ludGVyIChwb2ludGVyLCAmaG9zdGFkZHJz W2ldLAotCQkJCSAgICAgICAmc2l6ZXNbaV0sICZraW5kc1tpXSk7CisJCQkJ ICAgICAgICZzaXplc1tpXSwgJmtpbmRzW2ldLCBhc3luYyk7CiAJICAgICAg LyogSW5jcmVtZW50ICdpJyBieSB0d28gYmVjYXVzZSBPcGVuQUNDIHJlcXVp cmVzIGZvcnRyYW4KIAkJIGFycmF5cyB0byBiZSBjb250aWd1b3VzLCBzbyBl YWNoIFBTRVQgaXMgYXNzb2NpYXRlZCB3aXRoCiAJCSBvbmUgb2YgTUFQX0ZP UkNFX0FMTE9DL01BUF9GT1JDRV9QUkVTRVQvTUFQX0ZPUkNFX1RPLCBhbmQK QEAgLTQ2NiwxNyArNDQ3LDE3IEBAIEdPQUNDX2VudGVyX2V4aXRfZGF0YSAo aW50IGRldmljZSwgc2l6ZV90IG1hcG51bSwKIAkJaWYgKGFjY19pc19wcmVz ZW50IChob3N0YWRkcnNbaV0sIHNpemVzW2ldKSkKIAkJICB7CiAJCSAgICBp ZiAoZmluYWxpemUpCi0JCSAgICAgIGFjY19kZWxldGVfZmluYWxpemUgKGhv c3RhZGRyc1tpXSwgc2l6ZXNbaV0pOworCQkgICAgICBhY2NfZGVsZXRlX2Zp bmFsaXplX2FzeW5jIChob3N0YWRkcnNbaV0sIHNpemVzW2ldLCBhc3luYyk7 CiAJCSAgICBlbHNlCi0JCSAgICAgIGFjY19kZWxldGUgKGhvc3RhZGRyc1tp XSwgc2l6ZXNbaV0pOworCQkgICAgICBhY2NfZGVsZXRlX2FzeW5jIChob3N0 YWRkcnNbaV0sIHNpemVzW2ldLCBhc3luYyk7CiAJCSAgfQogCQlicmVhazsK IAkgICAgICBjYXNlIEdPTVBfTUFQX0ZST006CiAJICAgICAgY2FzZSBHT01Q X01BUF9GT1JDRV9GUk9NOgogCQlpZiAoZmluYWxpemUpCi0JCSAgYWNjX2Nv cHlvdXRfZmluYWxpemUgKGhvc3RhZGRyc1tpXSwgc2l6ZXNbaV0pOworCQkg IGFjY19jb3B5b3V0X2ZpbmFsaXplX2FzeW5jIChob3N0YWRkcnNbaV0sIHNp emVzW2ldLCBhc3luYyk7CiAJCWVsc2UKLQkJICBhY2NfY29weW91dCAoaG9z dGFkZHJzW2ldLCBzaXplc1tpXSk7CisJCSAgYWNjX2NvcHlvdXRfYXN5bmMg KGhvc3RhZGRyc1tpXSwgc2l6ZXNbaV0sIGFzeW5jKTsKIAkJYnJlYWs7CiAJ ICAgICAgZGVmYXVsdDoKIAkJZ29tcF9mYXRhbCAoIj4+Pj4gR09BQ0NfZW50 ZXJfZXhpdF9kYXRhIFVOSEFORExFRCBraW5kIDB4JS4yeCIsCkBAIC00OTQs OCArNDc1LDYgQEAgR09BQ0NfZW50ZXJfZXhpdF9kYXRhIChpbnQgZGV2aWNl LCBzaXplX3QgbWFwbnVtLAogCSAgICBpICs9IHBvaW50ZXIgLSAxOwogCSAg fQogICAgICAgfQotCi0gIGFjY19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2Fz eW5jX2Z1bmMgKGFjY19hc3luY19zeW5jKTsKIH0KIAogc3RhdGljIHZvaWQK QEAgLTUwOCwxNyArNDg3LDIyIEBAIGdvYWNjX3dhaXQgKGludCBhc3luYywg aW50IG51bV93YWl0cywgdmFfbGlzdCAqYXApCiAgICAgewogICAgICAgaW50 IHFpZCA9IHZhX2FyZyAoKmFwLCBpbnQpOwogICAgICAgCi0gICAgICBpZiAo YWNjX2FzeW5jX3Rlc3QgKHFpZCkpCisgICAgICBnb2FjY19hcSBhcSA9IGdl dF9nb2FjY19hc3luY3F1ZXVlIChxaWQpOworICAgICAgaWYgKGFjY19kZXYt Pm9wZW5hY2MuYXN5bmMudGVzdF9mdW5jIChhcSkpCiAJY29udGludWU7Ci0K ICAgICAgIGlmIChhc3luYyA9PSBhY2NfYXN5bmNfc3luYykKLQlhY2Nfd2Fp dCAocWlkKTsKKwlhY2NfZGV2LT5vcGVuYWNjLmFzeW5jLnN5bmNocm9uaXpl X2Z1bmMgKGFxKTsKICAgICAgIGVsc2UgaWYgKHFpZCA9PSBhc3luYykKLQk7 LyogSWYgd2UncmUgd2FpdGluZyBvbiB0aGUgc2FtZSBhc3luY2hyb25vdXMg cXVldWUgYXMgd2UncmUKLQkgICAgbGF1bmNoaW5nIG9uLCB0aGUgcXVldWUg aXRzZWxmIHdpbGwgb3JkZXIgd29yayBhcwotCSAgICByZXF1aXJlZCwgc28g dGhlcmUncyBubyBuZWVkIHRvIHdhaXQgZXhwbGljaXRseS4gICovCisJLyog SWYgd2UncmUgd2FpdGluZyBvbiB0aGUgc2FtZSBhc3luY2hyb25vdXMgcXVl dWUgYXMgd2UncmUKKwkgICBsYXVuY2hpbmcgb24sIHRoZSBxdWV1ZSBpdHNl bGYgd2lsbCBvcmRlciB3b3JrIGFzCisJICAgcmVxdWlyZWQsIHNvIHRoZXJl J3Mgbm8gbmVlZCB0byB3YWl0IGV4cGxpY2l0bHkuICAqLworCTsKICAgICAg IGVsc2UKLQlhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3dhaXRfYXN5bmNfZnVu YyAocWlkLCBhc3luYyk7CisJeworCSAgZ29hY2NfYXEgYXEyID0gZ2V0X2dv YWNjX2FzeW5jcXVldWUgKGFzeW5jKTsKKwkgIGFjY19kZXYtPm9wZW5hY2Mu YXN5bmMuc3luY2hyb25pemVfZnVuYyAoYXEpOworCSAgYWNjX2Rldi0+b3Bl bmFjYy5hc3luYy5zZXJpYWxpemVfZnVuYyAoYXEsIGFxMik7CisJfQogICAg IH0KIH0KIApAQCAtNTQ4LDggKzUzMiw2IEBAIEdPQUNDX3VwZGF0ZSAoaW50 IGRldmljZSwgc2l6ZV90IG1hcG51bSwKICAgICAgIHZhX2VuZCAoYXApOwog ICAgIH0KIAotICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19m dW5jIChhc3luYyk7Ci0KICAgYm9vbCB1cGRhdGVfZGV2aWNlID0gZmFsc2U7 CiAgIGZvciAoaSA9IDA7IGkgPCBtYXBudW07ICsraSkKICAgICB7CkBAIC01 ODksNyArNTcxLDcgQEAgR09BQ0NfdXBkYXRlIChpbnQgZGV2aWNlLCBzaXpl X3QgbWFwbnVtLAogCSAgLyogRmFsbHRocnUgICovCiAJY2FzZSBHT01QX01B UF9GT1JDRV9UTzoKIAkgIHVwZGF0ZV9kZXZpY2UgPSB0cnVlOwotCSAgYWNj X3VwZGF0ZV9kZXZpY2UgKGhvc3RhZGRyc1tpXSwgc2l6ZXNbaV0pOworCSAg YWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmMgKGhvc3RhZGRyc1tpXSwgc2l6ZXNb aV0sIGFzeW5jKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBHT01QX01BUF9GUk9N OgpAQCAtNjAxLDcgKzU4Myw3IEBAIEdPQUNDX3VwZGF0ZSAoaW50IGRldmlj ZSwgc2l6ZV90IG1hcG51bSwKIAkgIC8qIEZhbGx0aHJ1ICAqLwogCWNhc2Ug R09NUF9NQVBfRk9SQ0VfRlJPTToKIAkgIHVwZGF0ZV9kZXZpY2UgPSBmYWxz ZTsKLQkgIGFjY191cGRhdGVfc2VsZiAoaG9zdGFkZHJzW2ldLCBzaXplc1tp XSk7CisJICBhY2NfdXBkYXRlX3NlbGZfYXN5bmMgKGhvc3RhZGRyc1tpXSwg c2l6ZXNbaV0sIGFzeW5jKTsKIAkgIGJyZWFrOwogCiAJZGVmYXVsdDoKQEAg LTYwOSw4ICs1OTEsNiBAQCBHT0FDQ191cGRhdGUgKGludCBkZXZpY2UsIHNp emVfdCBtYXBudW0sCiAJICBicmVhazsKIAl9CiAgICAgfQotCi0gIGFjY19k ZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFjY19hc3luY19z eW5jKTsKIH0KIAogdm9pZApJbmRleDogbGliZ29tcC9vYWNjLXBsdWdpbi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1wbHVn aW4uYwkocmV2aXNpb24gMjY3MjI2KQorKysgbGliZ29tcC9vYWNjLXBsdWdp bi5jCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNCArMzEsMTAgQEAKICNpbmNs dWRlICJvYWNjLWludC5oIgogCiB2b2lkCi1HT01QX1BMVUdJTl9hc3luY191 bm1hcF92YXJzICh2b2lkICpwdHIsIGludCBhc3luYykKK0dPTVBfUExVR0lO X2FzeW5jX3VubWFwX3ZhcnMgKHZvaWQgKnB0ciBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSwKKwkJCSAgICAgIGludCBhc3luYyBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSkKIHsKLSAgc3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0ID0g cHRyOwotICBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAgPSB0 Z3QtPmRldmljZV9kZXNjcjsKLQotICBkZXZpY2VwLT5vcGVuYWNjLmFzeW5j X3NldF9hc3luY19mdW5jIChhc3luYyk7Ci0gIGdvbXBfdW5tYXBfdmFycyAo dGd0LCB0cnVlKTsKLSAgZGV2aWNlcC0+b3BlbmFjYy5hc3luY19zZXRfYXN5 bmNfZnVuYyAoYWNjX2FzeW5jX3N5bmMpOworICBnb21wX2ZhdGFsICgiaW52 YWxpZCBwbHVnaW4gZnVuY3Rpb24iKTsKIH0KIAogLyogUmV0dXJuIHRoZSB0 YXJnZXQtc3BlY2lmaWMgcGFydCBvZiB0aGUgVExTIGRhdGEgZm9yIHRoZSBj dXJyZW50IHRocmVhZC4gICovCg== --------------ECB73899B9AD95BB1538E06C--