From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 79880 invoked by alias); 16 Oct 2018 12:57:11 -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 79852 invoked by uid 89); 16 Oct 2018 12:57:10 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy=tgt, Processing, row, filling 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, 16 Oct 2018 12:57:08 +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 1gCOuJ-0007Lv-3J from ChungLin_Tang@mentor.com ; Tue, 16 Oct 2018 05:57:07 -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, 16 Oct 2018 05:57:04 -0700 Reply-To: From: Chung-Lin Tang Subject: [PATCH, OpenACC, 7/8] Multi-dimensional dynamic array support for OpenACC data clauses, libgomp support To: , Jakub Jelinek , Thomas Schwinge Message-ID: Date: Tue, 16 Oct 2018 14:20: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="------------5E430D725178BD0C571D7C7C" X-SW-Source: 2018-10/txt/msg00949.txt.bz2 --------------5E430D725178BD0C571D7C7C Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 776 This part is the libgomp runtime handling for OpenACC dynamic arrays. We handle such arrays by creating a "pointer block" that emulates the N-1 dimensions, and then treating each data row of the final Nth dimension as an individual object mapped in the TGT. All the rows are processed as appended after all the other map kind objects. Thanks, Chung-Lin libgomp/ * target.c (struct da_dim): New struct declaration. (struct da_descr_type): Likewise. (struct da_info): Likewise. (gomp_dynamic_array_count_rows): New function. (gomp_dynamic_array_compute_info): Likewise. (gomp_dynamic_array_fill_rows_1): Likewise. (gomp_dynamic_array_fill_rows): Likewise. (gomp_dynamic_array_create_ptrblock): Likewise. (gomp_map_vars): Add code to handle dynamic array map kinds. --------------5E430D725178BD0C571D7C7C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="openacc-da-07.libgomp-target.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="openacc-da-07.libgomp-target.patch" Content-length: 16759 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJnb21wL3Rhcmdl dC5jCmluZGV4IDRjOWZhZTAuLjA3MWRjNzAgMTAwNjQ0Ci0tLSBhL2xpYmdv bXAvdGFyZ2V0LmMKKysrIGIvbGliZ29tcC90YXJnZXQuYwpAQCAtNDkwLDYg KzQ5MCwxNDAgQEAgZ29tcF9tYXBfdmFsIChzdHJ1Y3QgdGFyZ2V0X21lbV9k ZXNjICp0Z3QsIHZvaWQgKipob3N0YWRkcnMsIHNpemVfdCBpKQogICByZXR1 cm4gdGd0LT50Z3Rfc3RhcnQgKyB0Z3QtPmxpc3RbaV0ub2Zmc2V0OwogfQog CisvKiBEeW5hbWljIGFycmF5IHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzLCBp bnRlcmZhY2VzIHdpdGggdGhlIGNvbXBpbGVyLiAgKi8KKworc3RydWN0IGRh X2RpbSB7CisgIHNpemVfdCBiYXNlOworICBzaXplX3QgbGVuZ3RoOworICBz aXplX3QgZWxlbV9zaXplOworICBzaXplX3QgaXNfYXJyYXk7Cit9OworCitz dHJ1Y3QgZGFfZGVzY3JfdHlwZSB7CisgIHZvaWQgKnB0cjsKKyAgc2l6ZV90 IG5kaW1zOworICBzdHJ1Y3QgZGFfZGltIGRpbXNbXTsKK307CisKKy8qIElu dGVybmFsIGR5bmFtaWMgYXJyYXkgaW5mbyBzdHJ1Y3QsIHVzZWQgb25seSBo ZXJlIGluc2lkZSB0aGUgcnVudGltZS4gKi8KKworc3RydWN0IGRhX2luZm8K K3sKKyAgc3RydWN0IGRhX2Rlc2NyX3R5cGUgKmRlc2NyOworICBzaXplX3Qg bWFwX2luZGV4OworICBzaXplX3QgcHRyYmxvY2tfc2l6ZTsKKyAgc2l6ZV90 IGRhdGFfcm93X251bTsKKyAgc2l6ZV90IGRhdGFfcm93X3NpemU7Cit9Owor CitzdGF0aWMgc2l6ZV90Citnb21wX2R5bmFtaWNfYXJyYXlfY291bnRfcm93 cyAoc3RydWN0IGRhX2Rlc2NyX3R5cGUgKmRlc2NyKQoreworICBzaXplX3Qg bnJvd3MgPSAxOworICBmb3IgKHNpemVfdCBkID0gMDsgZCA8IGRlc2NyLT5u ZGltcyAtIDE7IGQrKykKKyAgICBucm93cyAqPSBkZXNjci0+ZGltc1tkXS5s ZW5ndGggLyBzaXplb2YgKHZvaWQgKik7CisgIHJldHVybiBucm93czsKK30K Kworc3RhdGljIHZvaWQKK2dvbXBfZHluYW1pY19hcnJheV9jb21wdXRlX2lu Zm8gKHN0cnVjdCBkYV9pbmZvICpkYSkKK3sKKyAgc2l6ZV90IGQsIG4gPSAx OworICBzdHJ1Y3QgZGFfZGVzY3JfdHlwZSAqZGVzY3IgPSBkYS0+ZGVzY3I7 CisKKyAgZGEtPnB0cmJsb2NrX3NpemUgPSAwOworICBmb3IgKGQgPSAwOyBk IDwgZGVzY3ItPm5kaW1zIC0gMTsgZCsrKQorICAgIHsKKyAgICAgIHNpemVf dCBkaW1fY291bnQgPSBkZXNjci0+ZGltc1tkXS5sZW5ndGggLyBkZXNjci0+ ZGltc1tkXS5lbGVtX3NpemU7CisgICAgICBzaXplX3QgZGltX3B0cmJsb2Nr X3NpemUgPSAoZGVzY3ItPmRpbXNbZCArIDFdLmlzX2FycmF5CisJCQkJICA/ IDAgOiBkZXNjci0+ZGltc1tkXS5sZW5ndGggKiBuKTsKKyAgICAgIGRhLT5w dHJibG9ja19zaXplICs9IGRpbV9wdHJibG9ja19zaXplOworICAgICAgbiAq PSBkaW1fY291bnQ7CisgICAgfQorICBkYS0+ZGF0YV9yb3dfbnVtID0gbjsK KyAgZGEtPmRhdGFfcm93X3NpemUgPSBkZXNjci0+ZGltc1tkXS5sZW5ndGg7 Cit9CisKK3N0YXRpYyB2b2lkCitnb21wX2R5bmFtaWNfYXJyYXlfZmlsbF9y b3dzXzEgKHN0cnVjdCBkYV9kZXNjcl90eXBlICpkZXNjciwgdm9pZCAqZGEs CisJCQkJc2l6ZV90IGQsIHZvaWQgKioqcm93X3B0ciwgc2l6ZV90ICpjb3Vu dCkKK3sKKyAgaWYgKGQgPCBkZXNjci0+bmRpbXMgLSAxKQorICAgIHsKKyAg ICAgIHNpemVfdCBlbHNpemUgPSBkZXNjci0+ZGltc1tkXS5lbGVtX3NpemU7 CisgICAgICBzaXplX3QgbiA9IGRlc2NyLT5kaW1zW2RdLmxlbmd0aCAvIGVs c2l6ZTsKKyAgICAgIHZvaWQgKnAgPSBkYSArIGRlc2NyLT5kaW1zW2RdLmJh c2U7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykKKwl7 CisJICB2b2lkICpwdHIgPSBwICsgaSAqIGVsc2l6ZTsKKwkgIC8qIERlcmVm IGlmIG5leHQgZGltZW5zaW9uIGlzIG5vdCBhcnJheS4gICovCisJICBpZiAo IWRlc2NyLT5kaW1zW2QgKyAxXS5pc19hcnJheSkKKwkgICAgcHRyID0gKigo dm9pZCAqKikgcHRyKTsKKwkgIGdvbXBfZHluYW1pY19hcnJheV9maWxsX3Jv d3NfMSAoZGVzY3IsIHB0ciwgZCArIDEsIHJvd19wdHIsIGNvdW50KTsKKwl9 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgKipyb3dfcHRyID0gZGEg KyBkZXNjci0+ZGltc1tkXS5iYXNlOworICAgICAgKnJvd19wdHIgKz0gMTsK KyAgICAgICpjb3VudCArPSAxOworICAgIH0KK30KKworc3RhdGljIHNpemVf dAorZ29tcF9keW5hbWljX2FycmF5X2ZpbGxfcm93cyAoc3RydWN0IGRhX2Rl c2NyX3R5cGUgKmRlc2NyLCB2b2lkICpyb3dzW10pCit7CisgIHNpemVfdCBj b3VudCA9IDA7CisgIHZvaWQgKipwID0gcm93czsKKyAgZ29tcF9keW5hbWlj X2FycmF5X2ZpbGxfcm93c18xIChkZXNjciwgZGVzY3ItPnB0ciwgMCwgJnAs ICZjb3VudCk7CisgIHJldHVybiBjb3VudDsKK30KKworc3RhdGljIHZvaWQg KgorZ29tcF9keW5hbWljX2FycmF5X2NyZWF0ZV9wdHJibG9jayAoc3RydWN0 IGRhX2luZm8gKmRhLAorCQkJCSAgICB2b2lkICp0Z3RfYWRkciwgdm9pZCAq dGd0X2RhdGFfcm93c1tdKQoreworICBzdHJ1Y3QgZGFfZGVzY3JfdHlwZSAq ZGVzY3IgPSBkYS0+ZGVzY3I7CisgIHZvaWQgKnB0cmJsb2NrID0gZ29tcF9t YWxsb2MgKGRhLT5wdHJibG9ja19zaXplKTsKKyAgdm9pZCAqKmN1cnJfZGlt X3B0cmJsb2NrID0gKHZvaWQgKiopIHB0cmJsb2NrOworICBzaXplX3QgbiA9 IDE7CisKKyAgZm9yIChzaXplX3QgZCA9IDA7IGQgPCBkZXNjci0+bmRpbXMg LSAxOyBkKyspCisgICAgeworICAgICAgaW50IGN1cnJfZGltX2xlbiA9IGRl c2NyLT5kaW1zW2RdLmxlbmd0aDsKKyAgICAgIGludCBuZXh0X2RpbV9sZW4g PSBkZXNjci0+ZGltc1tkICsgMV0ubGVuZ3RoOworICAgICAgaW50IGN1cnJf ZGltX251bSA9IGN1cnJfZGltX2xlbiAvIHNpemVvZiAodm9pZCAqKTsKKwor ICAgICAgdm9pZCAqbmV4dF9kaW1fcHRyYmxvY2sKKwk9ICh2b2lkICopKGN1 cnJfZGltX3B0cmJsb2NrICsgbiAqIGN1cnJfZGltX251bSk7CisKKyAgICAg IGZvciAoaW50IGIgPSAwOyBiIDwgbjsgYisrKQorICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGN1cnJfZGltX251bTsgaSsrKQorCSAgeworCSAgICBp ZiAoZCA8IGRlc2NyLT5uZGltcyAtIDIpCisJICAgICAgeworCQl2b2lkICpw dHIgPSAobmV4dF9kaW1fcHRyYmxvY2sKKwkJCSAgICAgKyBiICogY3Vycl9k aW1fbnVtICogbmV4dF9kaW1fbGVuCisJCQkgICAgICsgaSAqIG5leHRfZGlt X2xlbik7CisJCXZvaWQgKnRndF9wdHIgPSB0Z3RfYWRkciArIChwdHIgLSBw dHJibG9jayk7CisJCWN1cnJfZGltX3B0cmJsb2NrW2IgKiBjdXJyX2RpbV9u dW0gKyBpXSA9IHRndF9wdHI7CisJICAgICAgfQorCSAgICBlbHNlCisJICAg ICAgeworCQljdXJyX2RpbV9wdHJibG9ja1tiICogY3Vycl9kaW1fbnVtICsg aV0KKwkJICA9IHRndF9kYXRhX3Jvd3NbYiAqIGN1cnJfZGltX251bSArIGld OworCSAgICAgIH0KKwkgICAgdm9pZCAqYWRkciA9ICZjdXJyX2RpbV9wdHJi bG9ja1tiICogY3Vycl9kaW1fbnVtICsgaV07CisJICAgIGFzc2VydCAocHRy YmxvY2sgPD0gYWRkciAmJiBhZGRyIDwgcHRyYmxvY2sgKyBkYS0+cHRyYmxv Y2tfc2l6ZSk7CisJICB9CisKKyAgICAgIG4gKj0gY3Vycl9kaW1fbnVtOwor ICAgICAgY3Vycl9kaW1fcHRyYmxvY2sgPSBuZXh0X2RpbV9wdHJibG9jazsK KyAgICB9CisgIGFzc2VydCAobiA9PSBkYS0+ZGF0YV9yb3dfbnVtKTsKKyAg cmV0dXJuIHB0cmJsb2NrOworfQorCiBhdHRyaWJ1dGVfaGlkZGVuIHN0cnVj dCB0YXJnZXRfbWVtX2Rlc2MgKgogZ29tcF9tYXBfdmFycyAoc3RydWN0IGdv bXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLCBzaXplX3QgbWFwbnVtLAogCSAg ICAgICB2b2lkICoqaG9zdGFkZHJzLCB2b2lkICoqZGV2YWRkcnMsIHNpemVf dCAqc2l6ZXMsIHZvaWQgKmtpbmRzLApAQCAtNTAxLDkgKzYzNSwyOSBAQCBn b21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmlj ZXAsIHNpemVfdCBtYXBudW0sCiAgIGNvbnN0IGludCB0eXBlbWFzayA9IHNo b3J0X21hcGtpbmQgPyAweGZmIDogMHg3OwogICBzdHJ1Y3Qgc3BsYXlfdHJl ZV9zICptZW1fbWFwID0gJmRldmljZXAtPm1lbV9tYXA7CiAgIHN0cnVjdCBz cGxheV90cmVlX2tleV9zIGN1cl9ub2RlOwotICBzdHJ1Y3QgdGFyZ2V0X21l bV9kZXNjICp0Z3QKLSAgICA9IGdvbXBfbWFsbG9jIChzaXplb2YgKCp0Z3Qp ICsgc2l6ZW9mICh0Z3QtPmxpc3RbMF0pICogbWFwbnVtKTsKLSAgdGd0LT5s aXN0X2NvdW50ID0gbWFwbnVtOworICBzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNj ICp0Z3Q7CisKKyAgc2l6ZV90IGRhX2RhdGFfcm93X251bSA9IDAsIHJvd19z dGFydCA9IDA7CisgIHNpemVfdCBkYV9pbmZvX251bSA9IDAsIGRhX2luZGV4 OworICBzdHJ1Y3QgZGFfaW5mbyAqZGFfaW5mbyA9IE5VTEw7CisgIHN0cnVj dCB0YXJnZXRfdmFyX2Rlc2MgKnJvd19kZXNjOworICB1aW50cHRyX3QgdGFy Z2V0X3Jvd19hZGRyOworICB2b2lkICoqaG9zdF9kYXRhX3Jvd3MgPSBOVUxM LCAqKnRhcmdldF9kYXRhX3Jvd3MgPSBOVUxMOworICB2b2lkICpyb3c7CisK KyAgZm9yIChpID0gMDsgaSA8IG1hcG51bTsgaSsrKQorICAgIHsKKyAgICAg IGludCBraW5kID0gZ2V0X2tpbmQgKHNob3J0X21hcGtpbmQsIGtpbmRzLCBp KTsKKyAgICAgIGlmIChHT01QX01BUF9EWU5BTUlDX0FSUkFZX1AgKGtpbmQg JiB0eXBlbWFzaykpCisJeworCSAgZGFfZGF0YV9yb3dfbnVtICs9IGdvbXBf ZHluYW1pY19hcnJheV9jb3VudF9yb3dzIChob3N0YWRkcnNbaV0pOworCSAg ZGFfaW5mb19udW0gKz0gMTsKKwl9CisgICAgfQorCisgIHRndCA9IGdvbXBf bWFsbG9jIChzaXplb2YgKCp0Z3QpCisJCSAgICAgKyBzaXplb2YgKHRndC0+ bGlzdFswXSkgKiAobWFwbnVtICsgZGFfZGF0YV9yb3dfbnVtKSk7CisgIHRn dC0+bGlzdF9jb3VudCA9IG1hcG51bSArIGRhX2RhdGFfcm93X251bTsKICAg dGd0LT5yZWZjb3VudCA9IHByYWdtYV9raW5kID09IEdPTVBfTUFQX1ZBUlNf RU5URVJfREFUQSA/IDAgOiAxOwogICB0Z3QtPmRldmljZV9kZXNjciA9IGRl dmljZXA7CiAgIHN0cnVjdCBnb21wX2NvYWxlc2NlX2J1ZiBjYnVmLCAqY2J1 ZnAgPSBOVUxMOwpAQCAtNTE1LDYgKzY2OSwxNCBAQCBnb21wX21hcF92YXJz IChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsIHNpemVfdCBt YXBudW0sCiAgICAgICByZXR1cm4gdGd0OwogICAgIH0KIAorICBpZiAoZGFf aW5mb19udW0pCisgICAgZGFfaW5mbyA9IGdvbXBfYWxsb2NhIChzaXplb2Yg KHN0cnVjdCBkYV9pbmZvKSAqIGRhX2luZm9fbnVtKTsKKyAgaWYgKGRhX2Rh dGFfcm93X251bSkKKyAgICB7CisgICAgICBob3N0X2RhdGFfcm93cyA9IGdv bXBfbWFsbG9jIChzaXplb2YgKHZvaWQgKikgKiBkYV9kYXRhX3Jvd19udW0p OworICAgICAgdGFyZ2V0X2RhdGFfcm93cyA9IGdvbXBfbWFsbG9jIChzaXpl b2YgKHZvaWQgKikgKiBkYV9kYXRhX3Jvd19udW0pOworICAgIH0KKwogICB0 Z3RfYWxpZ24gPSBzaXplb2YgKHZvaWQgKik7CiAgIHRndF9zaXplID0gMDsK ICAgY2J1Zi5jaHVua3MgPSBOVUxMOwpAQCAtNTQ2LDcgKzcwOCw3IEBAIGdv bXBfbWFwX3ZhcnMgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNl cCwgc2l6ZV90IG1hcG51bSwKICAgICAgIHJldHVybiBOVUxMOwogICAgIH0K IAotICBmb3IgKGkgPSAwOyBpIDwgbWFwbnVtOyBpKyspCisgIGZvciAoaSA9 IDAsIGRhX2luZGV4ID0gMDsgaSA8IG1hcG51bTsgaSsrKQogICAgIHsKICAg ICAgIGludCBraW5kID0gZ2V0X2tpbmQgKHNob3J0X21hcGtpbmQsIGtpbmRz LCBpKTsKICAgICAgIGlmIChob3N0YWRkcnNbaV0gPT0gTlVMTApAQCAtNjE5 LDYgKzc4MSwyMCBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9kZXZp Y2VfZGVzY3IgKmRldmljZXAsIHNpemVfdCBtYXBudW0sCiAJICBoYXNfZmly c3Rwcml2YXRlID0gdHJ1ZTsKIAkgIGNvbnRpbnVlOwogCX0KKyAgICAgIGVs c2UgaWYgKEdPTVBfTUFQX0RZTkFNSUNfQVJSQVlfUCAoa2luZCAmIHR5cGVt YXNrKSkKKwl7CisJICAvKiBJZ25vcmUgZHluYW1pYyBhcnJheXMgZm9yIG5v dywgd2UgcHJvY2VzcyB0aGVtIHRvZ2V0aGVyCisJICAgICBsYXRlci4gICov CisJICB0Z3QtPmxpc3RbaV0ua2V5ID0gTlVMTDsKKwkgIHRndC0+bGlzdFtp XS5vZmZzZXQgPSAwOworCSAgbm90X2ZvdW5kX2NudCsrOworCisJICBzdHJ1 Y3QgZGFfaW5mbyAqZGEgPSAmZGFfaW5mb1tkYV9pbmRleCsrXTsKKwkgIGRh LT5kZXNjciA9IChzdHJ1Y3QgZGFfZGVzY3JfdHlwZSAqKSBob3N0YWRkcnNb aV07CisJICBkYS0+bWFwX2luZGV4ID0gaTsKKwkgIGNvbnRpbnVlOworCX0K KwogICAgICAgY3VyX25vZGUuaG9zdF9zdGFydCA9ICh1aW50cHRyX3QpIGhv c3RhZGRyc1tpXTsKICAgICAgIGlmICghR09NUF9NQVBfUE9JTlRFUl9QIChr aW5kICYgdHlwZW1hc2spKQogCWN1cl9ub2RlLmhvc3RfZW5kID0gY3VyX25v ZGUuaG9zdF9zdGFydCArIHNpemVzW2ldOwpAQCAtNjg3LDYgKzg2Myw1NSBA QCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRl dmljZXAsIHNpemVfdCBtYXBudW0sCiAJfQogICAgIH0KIAorICAvKiBGb3Ig ZHluYW1pYyBhcnJheXMuIEVhY2ggZGF0YSByb3cgaXMgb25lIHRhcmdldCBp dGVtLCBzZXBhcmF0ZWQgZnJvbQorICAgICB0aGUgbm9ybWFsIG1hcCBjbGF1 c2UgaXRlbXMsIGhlbmNlIHdlIG9yZGVyIHRoZW0gYWZ0ZXIgbWFwbnVtLiAg Ki8KKyAgZm9yIChpID0gMCwgZGFfaW5kZXggPSAwLCByb3dfc3RhcnQgPSAw OyBpIDwgbWFwbnVtOyBpKyspCisgICAgeworICAgICAgaW50IGtpbmQgPSBn ZXRfa2luZCAoc2hvcnRfbWFwa2luZCwga2luZHMsIGkpOworICAgICAgaWYg KCFHT01QX01BUF9EWU5BTUlDX0FSUkFZX1AgKGtpbmQgJiB0eXBlbWFzaykp CisJY29udGludWU7CisKKyAgICAgIHN0cnVjdCBkYV9pbmZvICpkYSA9ICZk YV9pbmZvW2RhX2luZGV4KytdOworICAgICAgc3RydWN0IGRhX2Rlc2NyX3R5 cGUgKmRlc2NyID0gZGEtPmRlc2NyOworICAgICAgc2l6ZV90IG5yOworCisg ICAgICBnb21wX2R5bmFtaWNfYXJyYXlfY29tcHV0ZV9pbmZvIChkYSk7CisK KyAgICAgIC8qIFdlIGhhdmUgYWxsb2NhdGVkIHNwYWNlIGluIGhvc3QvdGFy Z2V0X2RhdGFfcm93cyB0byBwbGFjZSBhbGwgdGhlCisJIHJvdyBkYXRhIGJs b2NrIHBvaW50ZXJzLCBub3cgd2UgY2FuIHN0YXJ0IGZpbGxpbmcgdGhlbSBp bi4gICovCisgICAgICBuciA9IGdvbXBfZHluYW1pY19hcnJheV9maWxsX3Jv d3MgKGRlc2NyLCAmaG9zdF9kYXRhX3Jvd3Nbcm93X3N0YXJ0XSk7CisgICAg ICBhc3NlcnQgKG5yID09IGRhLT5kYXRhX3Jvd19udW0pOworCisgICAgICBz aXplX3QgYWxpZ24gPSAoc2l6ZV90KSAxIDw8IChraW5kID4+IHJzaGlmdCk7 CisgICAgICBpZiAodGd0X2FsaWduIDwgYWxpZ24pCisJdGd0X2FsaWduID0g YWxpZ247CisgICAgICB0Z3Rfc2l6ZSA9ICh0Z3Rfc2l6ZSArIGFsaWduIC0g MSkgJiB+KGFsaWduIC0gMSk7CisgICAgICB0Z3Rfc2l6ZSArPSBkYS0+cHRy YmxvY2tfc2l6ZTsKKworICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBk YS0+ZGF0YV9yb3dfbnVtOyBqKyspCisJeworCSAgcm93ID0gaG9zdF9kYXRh X3Jvd3Nbcm93X3N0YXJ0ICsgal07CisJICByb3dfZGVzYyA9ICZ0Z3QtPmxp c3RbbWFwbnVtICsgcm93X3N0YXJ0ICsgal07CisKKwkgIGN1cl9ub2RlLmhv c3Rfc3RhcnQgPSAodWludHB0cl90KSByb3c7CisJICBjdXJfbm9kZS5ob3N0 X2VuZCA9IGN1cl9ub2RlLmhvc3Rfc3RhcnQgKyBkYS0+ZGF0YV9yb3dfc2l6 ZTsKKwkgIHNwbGF5X3RyZWVfa2V5IG4gPSBzcGxheV90cmVlX2xvb2t1cCAo bWVtX21hcCwgJmN1cl9ub2RlKTsKKwkgIGlmIChuKQorCSAgICB7CisJICAg ICAgYXNzZXJ0IChuLT5yZWZjb3VudCAhPSBSRUZDT1VOVF9MSU5LKTsKKwkg ICAgICBnb21wX21hcF92YXJzX2V4aXN0aW5nIChkZXZpY2VwLCBuLCAmY3Vy X25vZGUsIHJvd19kZXNjLAorCQkJCSAgICAgIGtpbmQgJiB0eXBlbWFzaywg LyogVE9ETzogY2J1Zj8gKi8gTlVMTCk7CisJICAgIH0KKwkgIGVsc2UKKwkg ICAgeworCSAgICAgIHRndF9zaXplID0gKHRndF9zaXplICsgYWxpZ24gLSAx KSAmIH4oYWxpZ24gLSAxKTsKKwkgICAgICB0Z3Rfc2l6ZSArPSBkYS0+ZGF0 YV9yb3dfc2l6ZTsKKwkgICAgICBub3RfZm91bmRfY250Kys7CisJICAgIH0K Kwl9CisgICAgICByb3dfc3RhcnQgKz0gZGEtPmRhdGFfcm93X251bTsKKyAg ICB9CisKICAgaWYgKGRldmFkZHJzKQogICAgIHsKICAgICAgIGlmIChtYXBu dW0gIT0gMSkKQEAgLTgzMCw2ICsxMDU1LDE1IEBAIGdvbXBfbWFwX3ZhcnMg KHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwgc2l6ZV90IG1h cG51bSwKIAkgICAgICBkZWZhdWx0OgogCQlicmVhazsKIAkgICAgICB9CisK KwkgICAgaWYgKEdPTVBfTUFQX0RZTkFNSUNfQVJSQVlfUCAoa2luZCAmIHR5 cGVtYXNrKSkKKwkgICAgICB7CisJCXRndC0+bGlzdFtpXS5rZXkgPSAmYXJy YXktPmtleTsKKwkJdGd0LT5saXN0W2ldLmtleS0+dGd0ID0gdGd0OworCQlh cnJheSsrOworCQljb250aW51ZTsKKwkgICAgICB9CisKIAkgICAgc3BsYXlf dHJlZV9rZXkgayA9ICZhcnJheS0+a2V5OwogCSAgICBrLT5ob3N0X3N0YXJ0 ID0gKHVpbnRwdHJfdCkgaG9zdGFkZHJzW2ldOwogCSAgICBpZiAoIUdPTVBf TUFQX1BPSU5URVJfUCAoa2luZCAmIHR5cGVtYXNrKSkKQEAgLTk3Niw2ICsx MjEwLDEwOCBAQCBnb21wX21hcF92YXJzIChzdHJ1Y3QgZ29tcF9kZXZpY2Vf ZGVzY3IgKmRldmljZXAsIHNpemVfdCBtYXBudW0sCiAJCWFycmF5Kys7CiAJ ICAgICAgfQogCSAgfQorCisgICAgICAvKiBQcm9jZXNzaW5nIG9mIGR5bmFt aWMgYXJyYXkgcm93cy4gICovCisgICAgICBmb3IgKGkgPSAwLCBkYV9pbmRl eCA9IDAsIHJvd19zdGFydCA9IDA7IGkgPCBtYXBudW07IGkrKykKKwl7CisJ ICBpbnQga2luZCA9IGdldF9raW5kIChzaG9ydF9tYXBraW5kLCBraW5kcywg aSk7CisJICBpZiAoIUdPTVBfTUFQX0RZTkFNSUNfQVJSQVlfUCAoa2luZCAm IHR5cGVtYXNrKSkKKwkgICAgY29udGludWU7CisKKwkgIHN0cnVjdCBkYV9p bmZvICpkYSA9ICZkYV9pbmZvW2RhX2luZGV4KytdOworCSAgYXNzZXJ0IChk YS0+ZGVzY3IgPT0gaG9zdGFkZHJzW2ldKTsKKworCSAgLyogVGhlIG1hcCBm b3IgdGhlIGR5bmFtaWMgYXJyYXkgaXRzZWxmIGlzIG5ldmVyIGNvcGllZCBm cm9tIGR1cmluZworCSAgICAgdW5tYXBwaW5nLCBpdHMgdGhlIGRhdGEgcm93 cyB0aGF0IGNvdW50LiBTZXQgY29weSBmcm9tIGZsYWdzIGFyZQorCSAgICAg c2V0IHRvIGZhbHNlIGhlcmUuICAqLworCSAgdGd0LT5saXN0W2ldLmNvcHlf ZnJvbSA9IGZhbHNlOworCSAgdGd0LT5saXN0W2ldLmFsd2F5c19jb3B5X2Zy b20gPSBmYWxzZTsKKworCSAgc2l6ZV90IGFsaWduID0gKHNpemVfdCkgMSA8 PCAoa2luZCA+PiByc2hpZnQpOworCSAgdGd0X3NpemUgPSAodGd0X3NpemUg KyBhbGlnbiAtIDEpICYgfihhbGlnbiAtIDEpOworCisJICAvKiBGb3IgdGhl IG1hcCBvZiB0aGUgZHluYW1pYyBhcnJheSBpdHNlbGYsIGFkanVzdCBzbyB0 aGF0IHRoZSBwYXNzZWQKKwkgICAgIGRldmljZSBhZGRyZXNzIHBvaW50cyB0 byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwdHJibG9jay4gICovCisJICB0Z3Qt Pmxpc3RbaV0ua2V5LT50Z3Rfb2Zmc2V0ID0gdGd0X3NpemU7CisKKwkgIHZv aWQgKnRhcmdldF9wdHJibG9jayA9ICh2b2lkKikgdGd0LT50Z3Rfc3RhcnQg KyB0Z3Rfc2l6ZTsKKwkgIHRndF9zaXplICs9IGRhLT5wdHJibG9ja19zaXpl OworCisJICAvKiBBZGQgc3BsYXkga2V5IGZvciBlYWNoIGRhdGEgcm93IGlu IGN1cnJlbnQgREEuICAqLworCSAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBk YS0+ZGF0YV9yb3dfbnVtOyBqKyspCisJICAgIHsKKwkgICAgICByb3cgPSBo b3N0X2RhdGFfcm93c1tyb3dfc3RhcnQgKyBqXTsKKwkgICAgICByb3dfZGVz YyA9ICZ0Z3QtPmxpc3RbbWFwbnVtICsgcm93X3N0YXJ0ICsgal07CisKKwkg ICAgICBjdXJfbm9kZS5ob3N0X3N0YXJ0ID0gKHVpbnRwdHJfdCkgcm93Owor CSAgICAgIGN1cl9ub2RlLmhvc3RfZW5kID0gY3VyX25vZGUuaG9zdF9zdGFy dCArIGRhLT5kYXRhX3Jvd19zaXplOworCSAgICAgIHNwbGF5X3RyZWVfa2V5 IG4gPSBzcGxheV90cmVlX2xvb2t1cCAobWVtX21hcCwgJmN1cl9ub2RlKTsK KwkgICAgICBpZiAobikKKwkJeworCQkgIGFzc2VydCAobi0+cmVmY291bnQg IT0gUkVGQ09VTlRfTElOSyk7CisJCSAgZ29tcF9tYXBfdmFyc19leGlzdGlu ZyAoZGV2aWNlcCwgbiwgJmN1cl9ub2RlLCByb3dfZGVzYywKKwkJCQkJICBr aW5kICYgdHlwZW1hc2ssIGNidWZwKTsKKwkJICB0YXJnZXRfcm93X2FkZHIg PSBuLT50Z3QtPnRndF9zdGFydCArIG4tPnRndF9vZmZzZXQ7CisJCX0KKwkg ICAgICBlbHNlCisJCXsKKwkJICB0Z3QtPnJlZmNvdW50Kys7CisKKwkJICBz cGxheV90cmVlX2tleSBrID0gJmFycmF5LT5rZXk7CisJCSAgay0+aG9zdF9z dGFydCA9ICh1aW50cHRyX3QpIHJvdzsKKwkJICBrLT5ob3N0X2VuZCA9IGst Pmhvc3Rfc3RhcnQgKyBkYS0+ZGF0YV9yb3dfc2l6ZTsKKworCQkgIGstPnRn dCA9IHRndDsKKwkJICBrLT5yZWZjb3VudCA9IDE7CisJCSAgay0+bGlua19r ZXkgPSBOVUxMOworCQkgIHRndF9zaXplID0gKHRndF9zaXplICsgYWxpZ24g LSAxKSAmIH4oYWxpZ24gLSAxKTsKKwkJICB0YXJnZXRfcm93X2FkZHIgPSB0 Z3QtPnRndF9zdGFydCArIHRndF9zaXplOworCQkgIGstPnRndF9vZmZzZXQg PSB0Z3Rfc2l6ZTsKKwkJICB0Z3Rfc2l6ZSArPSBkYS0+ZGF0YV9yb3dfc2l6 ZTsKKworCQkgIHJvd19kZXNjLT5rZXkgPSBrOworCQkgIHJvd19kZXNjLT5j b3B5X2Zyb20KKwkJICAgID0gR09NUF9NQVBfQ09QWV9GUk9NX1AgKGtpbmQg JiB0eXBlbWFzayk7CisJCSAgcm93X2Rlc2MtPmFsd2F5c19jb3B5X2Zyb20K KwkJICAgID0gR09NUF9NQVBfQ09QWV9GUk9NX1AgKGtpbmQgJiB0eXBlbWFz ayk7CisJCSAgcm93X2Rlc2MtPm9mZnNldCA9IDA7CisJCSAgcm93X2Rlc2Mt Pmxlbmd0aCA9IGRhLT5kYXRhX3Jvd19zaXplOworCisJCSAgYXJyYXktPmxl ZnQgPSBOVUxMOworCQkgIGFycmF5LT5yaWdodCA9IE5VTEw7CisJCSAgc3Bs YXlfdHJlZV9pbnNlcnQgKG1lbV9tYXAsIGFycmF5KTsKKworCQkgIGlmIChH T01QX01BUF9DT1BZX1RPX1AgKGtpbmQgJiB0eXBlbWFzaykpCisJCSAgICBn b21wX2NvcHlfaG9zdDJkZXYgKGRldmljZXAsCisJCQkJCSh2b2lkICopIHRn dC0+dGd0X3N0YXJ0ICsgay0+dGd0X29mZnNldCwKKwkJCQkJKHZvaWQgKikg ay0+aG9zdF9zdGFydCwKKwkJCQkJZGEtPmRhdGFfcm93X3NpemUsIGNidWZw KTsKKwkJICBhcnJheSsrOworCQl9CisJICAgICAgdGFyZ2V0X2RhdGFfcm93 c1tyb3dfc3RhcnQgKyBqXSA9ICh2b2lkICopIHRhcmdldF9yb3dfYWRkcjsK KwkgICAgfQorCisJICAvKiBOb3cgd2UgaGF2ZSB0aGUgdGFyZ2V0IG1lbW9y eSBhbGxvY2F0ZWQsIGFuZCB0YXJnZXQgb2Zmc2V0cyBvZiBhbGwKKwkgICAg IHJvdyBibG9ja3MgYXNzaWduZWQgYW5kIGNhbGN1bGF0ZWQsIHdlIGNhbiBj b25zdHJ1Y3QgdGhlCisJICAgICBhY2NlbGVyYXRvciBzaWRlIHB0cmJsb2Nr IGFuZCBjb3B5IGl0IGluLiAgKi8KKwkgIGlmIChkYS0+cHRyYmxvY2tfc2l6 ZSkKKwkgICAgeworCSAgICAgIHZvaWQgKnB0cmJsb2NrID0gZ29tcF9keW5h bWljX2FycmF5X2NyZWF0ZV9wdHJibG9jaworCQkoZGEsIHRhcmdldF9wdHJi bG9jaywgdGFyZ2V0X2RhdGFfcm93cyArIHJvd19zdGFydCk7CisJICAgICAg Z29tcF9jb3B5X2hvc3QyZGV2IChkZXZpY2VwLCB0YXJnZXRfcHRyYmxvY2ss IHB0cmJsb2NrLAorCQkJCSAgZGEtPnB0cmJsb2NrX3NpemUsIGNidWZwKTsK KwkgICAgICBmcmVlIChwdHJibG9jayk7CisJICAgIH0KKworCSAgcm93X3N0 YXJ0ICs9IGRhLT5kYXRhX3Jvd19udW07CisJfQorICAgICAgYXNzZXJ0IChy b3dfc3RhcnQgPT0gZGFfZGF0YV9yb3dfbnVtICYmIGRhX2luZGV4ID09IGRh X2luZm9fbnVtKTsKKyAgICB9CisKKyAgaWYgKGRhX2RhdGFfcm93X251bSkK KyAgICB7CisgICAgICBmcmVlIChob3N0X2RhdGFfcm93cyk7CisgICAgICBm cmVlICh0YXJnZXRfZGF0YV9yb3dzKTsKICAgICB9CiAKICAgaWYgKHByYWdt YV9raW5kID09IEdPTVBfTUFQX1ZBUlNfVEFSR0VUKQo= --------------5E430D725178BD0C571D7C7C--