From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 2C1393858C20 for ; Mon, 29 Aug 2022 18:44:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2C1393858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,273,1654588800"; d="diff'?scan'208,217";a="82203646" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 29 Aug 2022 10:43:35 -0800 IronPort-SDR: 33VqyGyC3rMZ4Vk6odLi6F6mIYjUS1kA2x0jUnuHIRqRrFql34b2LfDDdvwu8ezhM3iCOOK0cV wQgplvNeyh4KPkdPkBuSINB9wf22hqDtFp6VeEMwi58FgM0WA8x7Zqxico/k/fzUhyyospjcTX QRAwdKhcwDA4UqiqAMjH11m82jzeW8JPn4jJHDdKrlt7dRDTf3Zw4NNOfj/XHauWilwPVbkbIZ alGBoto+M+cT+diFEp9XYPAxW7aNKcl2t3qybwrupL0umOug914+uJ5TrAvZYKGq1o50Bdafc6 Vs0= Content-Type: multipart/mixed; boundary="------------p5rnNwZfrdZHuzv7MRdoGtug" Message-ID: <8301889b-64f9-8c60-15ca-2fa1fc495791@codesourcery.com> Date: Mon, 29 Aug 2022 20:43:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [Patch][2/3][v2] nvptx: libgomp+mkoffload.cc: Prepare for reverse offload fn lookup Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , Tom de Vries References: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, HTML_MESSAGE, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Aug 2022 18:44:59 -0000 --------------p5rnNwZfrdZHuzv7MRdoGtug Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Slightly revised version, fixing some issues in mkoffload.cc. Otherwise, th= e same applies: On 25.08.22 19:30, Tobias Burnus wrote: On 25.08.22 16:54, Tobias Burnus wrote: The attached patch prepare for reverse-offload device->host function-address lookup by requesting (if needed) the on-device address. This patch adds the actual implementation for NVPTX. Having array[] =3D {fn1,fn2}; works with nvptx only since sm_35; hence, if there is a reverse_offload and sm_30 is used, there will be a compile-ti= me error. To avoid incompatibilities, I compile with the same PTX ISA .version and sm_XX version as the (last) file that contains the reverse offload. While it should not matter, some newer CUDA might not support, e.g., sm_35 or do not like a specific ISA version - thus, that seemed to be safer. This is currently effectively a no op as with [1/3] patch, always NULL is passed and as GOMP_OFFLOAD_get_num_devices returns <=3D 0 as soon as 'omp requires reverse_offload' has been specified. OK for mainline? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------p5rnNwZfrdZHuzv7MRdoGtug Content-Type: text/x-patch; charset="UTF-8"; name="fn-lookup-nvptx-v2.diff" Content-Disposition: attachment; filename="fn-lookup-nvptx-v2.diff" Content-Transfer-Encoding: base64 bnZwdHg6IGxpYmdvbXArbWtvZmZsb2FkLmNjOiBQcmVwYXJlIGZvciByZXZlcnNlIG9mZmxv YWQgZm4gbG9va3VwCgpBZGQgc3VwcG9ydCB0byBudnB0eCBmb3IgcmV2ZXJzZSBsb29rdXAg b2YgZnVuY3Rpb24gbmFtZSB0byBwcmVwYXJlIGZvcgonb21wIHRhcmdldCBkZXZpY2UoYW5j ZXN0b3I6MSknLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQu Y2MgKHN0cnVjdCBpZF9tYXApOiBBZGQgJ2RpbScgbWVtYmVyLgoJKHJlY29yZF9pZCk6IFN0 b3JlIGZ1bmMgbmFtZSB3aXRob3V0IHF1b3Rlcywgc3RvcmUgZGltIHNlcGFyYXRlbHkuCgko cHJvY2Vzcyk6IEZvciBHT01QX1JFUVVJUkVTX1JFVkVSU0VfT0ZGTE9BRCwgY2hlY2sgdGhh dCAtbWFyY2ggaXMKCWF0IGxlYXN0IHNtXzM1LCBjcmVhdGUgJyRvZmZsb2FkX2Z1bmNfdGFi bGUnIGdsb2JhbCBhcnJheSBhbmQgaW5pdAoJd2l0aCByZXZlcnNlLW9mZmxvYWQgZnVuY3Rp b24gYWRkcmVzc2VzLgoJKiBjb25maWcvbnZwdHgvbnZwdHguY2MgKHdyaXRlX2ZuX3Byb3Rv XzEsIHdyaXRlX2ZuX3Byb3RvKTogTmV3Cglmb3JjZV9wdWJsaWMgYXR0cmlidXRlIHRvIGZv cmNlIC52aXNpYmxlLgoJKG52cHR4X2RlY2xhcmVfZnVuY3Rpb25fbmFtZSk6IEZvciAib21w IHRhcmdldAoJZGV2aWNlX2FuY2VzdG9yX25vaG9zdCIgYXR0cmlidXQsIGZvcmNlIC52aXNp YmxlL1RSRUVfUFVCTElDLgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBwbHVnaW4vcGx1Z2lu LW52cHR4LmMgKEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKTogUmVhZCBvZmZsb2FkCglmdW5j dGlvbiBhZGRyZXNzIHRhYmxlICckb2ZmbG9hZF9mdW5jX3RhYmxlJyBpZiByZXZfZm5fdGFi bGUKCWlzIG5vdCBOVUxMLgoKIGdjYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjIHwgMTE5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZ2NjL2NvbmZp Zy9udnB0eC9udnB0eC5jYyAgICAgfCAgMjAgKysrKystLS0KIGxpYmdvbXAvcGx1Z2luL3Bs dWdpbi1udnB0eC5jIHwgIDE5ICsrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNl cnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL252 cHR4L21rb2ZmbG9hZC5jYyBiL2djYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjCmluZGV4 IDNlZWEwYThmMTM4Li44MzRiMjA1OWFhYyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0 eC9ta29mZmxvYWQuY2MKKysrIGIvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MKQEAg LTQ3LDYgKzQ3LDcgQEAgc3RydWN0IGlkX21hcAogewogICBpZF9tYXAgKm5leHQ7CiAgIGNo YXIgKnB0eF9uYW1lOworICBjaGFyICpkaW07CiB9OwogCiBzdGF0aWMgaWRfbWFwICpmdW5j X2lkcywgKipmdW5jc190YWlsID0gJmZ1bmNfaWRzOwpAQCAtMTA4LDggKzEwOSwxMSBAQCB4 cHV0ZW52IChjb25zdCBjaGFyICpzdHJpbmcpCiBzdGF0aWMgdm9pZAogcmVjb3JkX2lkIChj b25zdCBjaGFyICpwMSwgaWRfbWFwICoqKndoZXJlKQogewotICBjb25zdCBjaGFyICplbmQg PSBzdHJjaHIgKHAxLCAnXG4nKTsKLSAgaWYgKCFlbmQpCisgIGdjY19hc3NlcnQgKHAxWzBd ID09ICciJyk7CisgIHAxKys7CisgIGNvbnN0IGNoYXIgKmVuZCA9IHN0cmNociAocDEsICci Jyk7CisgIGNvbnN0IGNoYXIgKmVuZDIgPSBzdHJjaHIgKHAxLCAnXG4nKTsKKyAgaWYgKCFl bmQgfHwgIWVuZDIgfHwgZW5kID49IGVuZDIpCiAgICAgZmF0YWxfZXJyb3IgKGlucHV0X2xv Y2F0aW9uLCAibWFsZm9ybWVkIHB0eCBmaWxlIik7CiAKICAgaWRfbWFwICp2ID0gWE5FVyAo aWRfbWFwKTsKQEAgLTExNyw2ICsxMjEsMTYgQEAgcmVjb3JkX2lkIChjb25zdCBjaGFyICpw MSwgaWRfbWFwICoqKndoZXJlKQogICB2LT5wdHhfbmFtZSA9IFhORVdWRUMgKGNoYXIsIGxl biArIDEpOwogICBtZW1jcHkgKHYtPnB0eF9uYW1lLCBwMSwgbGVuKTsKICAgdi0+cHR4X25h bWVbbGVuXSA9ICdcMCc7CisgIHAxID0gZW5kICsgMTsKKyAgaWYgKCplbmQgIT0gJ1xuJykK KyAgICB7CisgICAgICBsZW4gPSBlbmQyIC0gcDE7CisgICAgICB2LT5kaW0gPSBYTkVXVkVD IChjaGFyLCBsZW4gKyAxKTsKKyAgICAgIG1lbWNweSAodi0+ZGltLCBwMSwgbGVuKTsKKyAg ICAgIHYtPmRpbVtsZW5dID0gJ1wwJzsKKyAgICB9CisgIGVsc2UKKyAgICB2LT5kaW0gPSBO VUxMOwogICB2LT5uZXh0ID0gTlVMTDsKICAgaWRfbWFwICoqdGFpbCA9ICp3aGVyZTsKICAg KnRhaWwgPSB2OwpAQCAtMjQyLDYgKzI1NiwxMCBAQCBwcm9jZXNzIChGSUxFICppbiwgRklM RSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGlkX21hcCBjb25zdCAqaWQ7CiAg IHVuc2lnbmVkIG9ial9jb3VudCA9IDA7CiAgIHVuc2lnbmVkIGl4OworICBjb25zdCBjaGFy ICpzbV92ZXIgPSBOVUxMLCAqdmVyc2lvbiA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnNtX3Zl cjIgPSBOVUxMLCAqdmVyc2lvbjIgPSBOVUxMOworICBzaXplX3QgZmlsZV9jbnQgPSAwOwor ICBzaXplX3QgKmZpbGVfaWR4ID0gWEFMTE9DQVZFQyAoc2l6ZV90LCBsZW4pOwogCiAgIGZw cmludGYgKG91dCwgIiNpbmNsdWRlIDxzdGRpbnQuaD5cblxuIik7CiAKQEAgLTI1MCw2ICsy NjgsOCBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVx dWlyZXMpCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAgewogICAgICAg Y2hhciBjOworICAgICAgYm9vbCBvdXRwdXRfZm5fcHRyID0gZmFsc2U7CisgICAgICBmaWxl X2lkeFtmaWxlX2NudCsrXSA9IGk7CiAKICAgICAgIGZwcmludGYgKG91dCwgInN0YXRpYyBj b25zdCBjaGFyIHB0eF9jb2RlXyV1W10gPVxuXHRcIiIsIG9ial9jb3VudCsrKTsKICAgICAg IHdoaWxlICgoYyA9IGlucHV0W2krK10pKQpAQCAtMjYxLDYgKzI4MSwxNiBAQCBwcm9jZXNz IChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIGNh c2UgJ1xuJzoKIAkgICAgICBmcHJpbnRmIChvdXQsICJcXG5cIlxuXHRcIiIpOwogCSAgICAg IC8qIExvb2sgZm9yIG1hcHBpbmdzIG9uIHN1YnNlcXVlbnQgbGluZXMuICAqLworCSAgICAg IGlmIChVTkxJS0VMWSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiLnRhcmdldCBzbV8iKSkp CisJCXsKKwkJICBzbV92ZXIgPSBpbnB1dCArIGkgKyBzdHJsZW4gKCIudGFyZ2V0IHNtXyIp OworCQkgIGNvbnRpbnVlOworCQl9CisJICAgICAgaWYgKFVOTElLRUxZIChzdGFydHN3aXRo IChpbnB1dCArIGksICIudmVyc2lvbiAiKSkpCisJCXsKKwkJICB2ZXJzaW9uID0gaW5wdXQg KyBpICsgc3RybGVuICgiLnZlcnNpb24gIik7CisJCSAgY29udGludWU7CisJCX0KIAkgICAg ICB3aGlsZSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiLy86IikpCiAJCXsKIAkJICBpICs9 IDM7CkBAIC0yNjgsNyArMjk4LDEwIEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQs IHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkJICBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBp LCAiVkFSX01BUCAiKSkKIAkJICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOCwgJnZhcnNf dGFpbCk7CiAJCSAgZWxzZSBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiRlVOQ19NQVAg IikpCi0JCSAgICByZWNvcmRfaWQgKGlucHV0ICsgaSArIDksICZmdW5jc190YWlsKTsKKwkJ ICAgIHsKKwkJICAgICAgb3V0cHV0X2ZuX3B0ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9p ZCAoaW5wdXQgKyBpICsgOSwgJmZ1bmNzX3RhaWwpOworCQkgICAgfQogCQkgIGVsc2UKIAkJ ICAgIGFib3J0ICgpOwogCQkgIC8qIFNraXAgdG8gbmV4dCBsaW5lLiAqLwpAQCAtMjg2LDYg KzMxOSw4MSBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBf cmVxdWlyZXMpCiAJICBwdXRjIChjLCBvdXQpOwogCX0KICAgICAgIGZwcmludGYgKG91dCwg IlwiO1xuXG4iKTsKKyAgICAgIGlmIChvdXRwdXRfZm5fcHRyCisJICAmJiAob21wX3JlcXVp cmVzICYgR09NUF9SRVFVSVJFU19SRVZFUlNFX09GRkxPQUQpICE9IDApCisJeworCSAgaWYg KHNtX3ZlciAmJiBzbV92ZXJbMF0gPT0gJzMnICYmIHNtX3ZlclsxXSA9PSAnMCcKKwkgICAg ICAmJiBzbV92ZXJbMl0gPT0gJ1xuJykKKwkgICAgZmF0YWxfZXJyb3IgKGlucHV0X2xvY2F0 aW9uLAorCQkJICIlPG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQlPiByZXF1aXJlcyBh dCBsZWFzdCAiCisJCQkgIiU8c21fMzUlPiBmb3IgJTwtbWlzYT0lPiIpOworCSAgc21fdmVy MiA9IHNtX3ZlcjsKKwkgIHZlcnNpb24yID0gdmVyc2lvbjsKKwl9CisgICAgfQorCisgIC8q IENyZWF0ZSBmdW5jdGlvbi1wb2ludGVyIGFycmF5LCByZXF1aXJlZCBmb3IgcmV2ZXJzZQor ICAgICBvZmZsb2FkIGZ1bmN0aW9uLXBvaW50ZXIgbG9va3VwLiAgKi8KKworICBpZiAoZnVu Y19pZHMgJiYgKG9tcF9yZXF1aXJlcyAmIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FE KSAhPSAwKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVHSU4g R0xPQkFMIEZVTkNUSU9OIERFQ0w6ICI7CisgICAgICBmcHJpbnRmIChvdXQsICJzdGF0aWMg Y29uc3QgY2hhciBwdHhfY29kZV8ldVtdID1cbiIsIG9ial9jb3VudCsrKTsKKyAgICAgIGZw cmludGYgKG91dCwgIlx0XCIudmVyc2lvbiAiKTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAw OyB2ZXJzaW9uMltpXSAhPSAnXDAnICYmIHZlcnNpb24yW2ldICE9ICdcbic7IGkrKykKKwlm cHV0YyAodmVyc2lvbjJbaV0sIG91dCk7CisgICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRc Ii50YXJnZXQgc21fIik7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgdmVyc2lvbjJbaV0g IT0gJ1wwJyAmJiBzbV92ZXIyW2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAoc21fdmVyMltp XSwgb3V0KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlwiXG5cdFwiLmZpbGUgMSBcXFwiPGR1 bW15PlxcXCJcIlxuIik7CisKKyAgICAgIHNpemVfdCBmaWR4ID0gMDsKKyAgICAgIGZvciAo aWQgPSBmdW5jX2lkczsgaWQ7IGlkID0gaWQtPm5leHQpCisJeworCSAgLyogT25seSAnbm9o b3N0JyBmdW5jdGlvbnMgYXJlIG5lZWRlZCAtIHVzZSBOVUxMIGZvciB0aGUgcmVzdC4KKwkg ICAgIEFsdGVybmF0aXZlbHksIGJlc2lkZXMgc2VhcmNoaW5nIGZvciAnQkVHSU4gRlVOQ1RJ T04gREVDTCcsCisJICAgICBjaGVja2luZyBmb3IgJy52aXNpYmxlIC5lbnRyeSAnICsgaWQt PnB0eF9uYW1lIHdvdWxkIGJlCisJICAgICByZXF1aXJlZC4gICovCisJICBpZiAoIWVuZHN3 aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0IikpCisJICAgIGNvbnRpbnVlOworCSAgZnBy aW50ZiAob3V0LCAiXHRcIi5leHRlcm4gIik7CisJICBjb25zdCBjaGFyICpwID0gaW5wdXQg KyBmaWxlX2lkeFtmaWR4XTsKKwkgIHdoaWxlICh0cnVlKQorCSAgICB7CisJICAgICAgcCA9 IHN0cnN0ciAocCwgbmVlZGxlKTsKKwkgICAgICBpZiAoIXApCisJCXsKKwkJICBmaWR4Kys7 CisJCSAgaWYgKGZpZHggPj0gZmlsZV9jbnQpCisJCSAgICBicmVhazsKKwkJICBwID0gaW5w dXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIHAgKz0g c3RybGVuIChuZWVkbGUpOworCSAgICAgIGlmICghc3RhcnRzd2l0aCAocCwgaWQtPnB0eF9u YW1lKSkKKwkJY29udGludWU7CisJICAgICAgcCArPSBzdHJsZW4gKGlkLT5wdHhfbmFtZSk7 CisJICAgICAgaWYgKCpwICE9ICdcbicpCisJCWNvbnRpbnVlOworCSAgICAgIHArKzsKKwkg ICAgICBnY2NfYXNzZXJ0IChzdGFydHN3aXRoIChwLCAiLnZpc2libGUgIikpOworCSAgICAg IHAgKz0gc3RybGVuICgiLnZpc2libGUgIik7CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcg JiYgKnAgIT0gJ1xuJzsgcCsrKQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAgICAgYnJlYWs7 CisJICAgIH0KKwkgIGZwcmludGYgKG91dCwgIlwiXG4iKTsKKwkgIGlmIChmaWR4ID09IGZp bGVfY250KQorCSAgICBmYXRhbF9lcnJvciAoaW5wdXRfbG9jYXRpb24sCisJCQkgIkNhbm5v dCBmaW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciAlcXMiLAorCQkJIGlkLT5wdHhfbmFt ZSk7CisJfQorICAgICAgZnByaW50ZiAob3V0LCAiXHRcIi52aXNpYmxlIC5nbG9iYWwgLmFs aWduIDggLnU2NCAiCisJCSAgICAiJG9mZmxvYWRfZnVuY190YWJsZVtdID0geyIpOworICAg ICAgZm9yIChjb21tYSA9ICIiLCBpZCA9IGZ1bmNfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCisJZnByaW50ZiAob3V0LCAiJXNcIlxuXHRcdFwiJXMiLCBjb21tYSwK KwkJIGVuZHN3aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0IikgPyBpZC0+cHR4X25hbWUg OiAiMCIpOworICAgICAgZnByaW50ZiAob3V0LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQog CiAgIC8qIER1bXAgb3V0IGFycmF5IG9mIHBvaW50ZXJzIHRvIHB0eCBvYmplY3Qgc3RyaW5n cy4gICovCkBAIC0zMDAsNyArNDA4LDcgQEAgcHJvY2VzcyAoRklMRSAqaW4sIEZJTEUgKm91 dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQogICAvKiBEdW1wIG91dCB2YXJpYWJsZSBpZGVu dHMuICAqLwogICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdmFy X21hcHBpbmdzW10gPSB7Iik7CiAgIGZvciAoY29tbWEgPSAiIiwgaWQgPSB2YXJfaWRzOyBp ZDsgY29tbWEgPSAiLCIsIGlkID0gaWQtPm5leHQpCi0gICAgZnByaW50ZiAob3V0LCAiJXNc blx0JXMiLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xu XHRcIiVzXCIiLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKICAgZnByaW50ZiAob3V0LCAiXG59 O1xuXG4iKTsKIAogICAvKiBEdW1wIG91dCBmdW5jdGlvbiBpZGVudHMuICAqLwpAQCAtMzA5 LDcgKzQxNyw4IEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9t cF9yZXF1aXJlcykKIAkgICAiICB1bnNpZ25lZCBzaG9ydCBkaW1bJWRdO1xuIgogCSAgICJ9 IGZ1bmNfbWFwcGluZ3NbXSA9IHtcbiIsIEdPTVBfRElNX01BWCk7CiAgIGZvciAoY29tbWEg PSAiIiwgaWQgPSBmdW5jX2lkczsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlkLT5uZXh0KQot ICAgIGZwcmludGYgKG91dCwgIiVzXG5cdHslc30iLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsK KyAgICBmcHJpbnRmIChvdXQsICIlc1xuXHR7XCIlc1wiJXN9IiwgY29tbWEsIGlkLT5wdHhf bmFtZSwKKwkgICAgIGlkLT5kaW0gPyBpZC0+ZGltIDogIiIpOwogICBmcHJpbnRmIChvdXQs ICJcbn07XG5cbiIpOwogCiAgIGZwcmludGYgKG91dCwKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvbnZwdHgvbnZwdHguY2MgYi9nY2MvY29uZmlnL252cHR4L252cHR4LmNjCmluZGV4IGU0 Mjk3ZTJkNmMzLi4zMjkzYzA5NjgyMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9u dnB0eC5jYworKysgYi9nY2MvY29uZmlnL252cHR4L252cHR4LmNjCkBAIC05ODksMTUgKzk4 OSwxNSBAQCB3cml0ZV92YXJfbWFya2VyIChGSUxFICpmaWxlLCBib29sIGlzX2RlZm4sIGJv b2wgZ2xvYmFsaXplLCBjb25zdCBjaGFyICpuYW1lKQogCiBzdGF0aWMgdm9pZAogd3JpdGVf Zm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMsIGJvb2wgaXNfZGVmbiwKLQkJICBj b25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wpCisJCSAgY29uc3QgY2hhciAqbmFt ZSwgY29uc3RfdHJlZSBkZWNsLCBib29sIGZvcmNlX3B1YmxpYykKIHsKICAgaWYgKGxvb2t1 cF9hdHRyaWJ1dGUgKCJhbGlhcyIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpID09IE5VTEwp Ci0gICAgd3JpdGVfZm5fbWFya2VyIChzLCBpc19kZWZuLCBUUkVFX1BVQkxJQyAoZGVjbCks IG5hbWUpOworICAgIHdyaXRlX2ZuX21hcmtlciAocywgaXNfZGVmbiwgVFJFRV9QVUJMSUMg KGRlY2wpIHx8IGZvcmNlX3B1YmxpYywgbmFtZSk7CiAKICAgLyogUFRYIGRlY2xhcmF0aW9u LiAgKi8KICAgaWYgKERFQ0xfRVhURVJOQUwgKGRlY2wpKQogICAgIHMgPDwgIi5leHRlcm4g IjsKLSAgZWxzZSBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQorICBlbHNlIGlmIChUUkVFX1BV QkxJQyAoZGVjbCkgfHwgZm9yY2VfcHVibGljKQogICAgIHMgPDwgKERFQ0xfV0VBSyAoZGVj bCkgPyAiLndlYWsgIiA6ICIudmlzaWJsZSAiKTsKICAgcyA8PCAod3JpdGVfYXNfa2VybmVs IChERUNMX0FUVFJJQlVURVMgKGRlY2wpKSA/ICIuZW50cnkgIiA6ICIuZnVuYyAiKTsKIApA QCAtMTA4Niw3ICsxMDg2LDcgQEAgd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJl YW0gJnMsIGJvb2wgaXNfZGVmbiwKIAogc3RhdGljIHZvaWQKIHdyaXRlX2ZuX3Byb3RvIChz dGQ6OnN0cmluZ3N0cmVhbSAmcywgYm9vbCBpc19kZWZuLAotCQljb25zdCBjaGFyICpuYW1l LCBjb25zdF90cmVlIGRlY2wpCisJCWNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0X3RyZWUgZGVj bCwgYm9vbCBmb3JjZV9wdWJsaWM9ZmFsc2UpCiB7CiAgIGNvbnN0IGNoYXIgKnJlcGxhY2Vt ZW50ID0gbnZwdHhfbmFtZV9yZXBsYWNlbWVudCAobmFtZSk7CiAgIGNoYXIgKnJlcGxhY2Vk X2RvdHMgPSBOVUxMOwpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgd3JpdGVfZm5fcHJvdG8gKHN0 ZDo6c3RyaW5nc3RyZWFtICZzLCBib29sIGlzX2RlZm4sCiAKICAgaWYgKGlzX2RlZm4pCiAg ICAgLyogRW1pdCBhIGRlY2xhcmF0aW9uLiAgVGhlIFBUWCBhc3NlbWJsZXIgZ2V0cyB1cHNl dCB3aXRob3V0IGl0LiAgKi8KLSAgICB3cml0ZV9mbl9wcm90b18xIChzLCBmYWxzZSwgbmFt ZSwgZGVjbCk7CisgICAgd3JpdGVfZm5fcHJvdG9fMSAocywgZmFsc2UsIG5hbWUsIGRlY2ws IGZvcmNlX3B1YmxpYyk7CiAKLSAgd3JpdGVfZm5fcHJvdG9fMSAocywgaXNfZGVmbiwgbmFt ZSwgZGVjbCk7CisgIHdyaXRlX2ZuX3Byb3RvXzEgKHMsIGlzX2RlZm4sIG5hbWUsIGRlY2ws IGZvcmNlX3B1YmxpYyk7CiAKICAgaWYgKHJlcGxhY2VkX2RvdHMpCiAgICAgWERFTEVURSAo cmVwbGFjZWRfZG90cyk7CkBAIC0xNDgxLDcgKzE0ODEsMTMgQEAgbnZwdHhfZGVjbGFyZV9m dW5jdGlvbl9uYW1lIChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVl IGRlY2wpCiAgIHRyZWUgZm50eXBlID0gVFJFRV9UWVBFIChkZWNsKTsKICAgdHJlZSByZXN1 bHRfdHlwZSA9IFRSRUVfVFlQRSAoZm50eXBlKTsKICAgaW50IGFyZ25vID0gMDsKKyAgYm9v bCBmb3JjZV9wdWJsaWMgPSBmYWxzZTsKIAorICAvKiBGb3IgcmV2ZXJzZS1vZmZsb2FkICdu b2hvc3QnIGZ1bmN0aW9uczogSW4gb3JkZXIgdG8gYmUgY29sbGVjdGFibGUgaW4KKyAgICAg JyRvZmZsb2FkX2Z1bmNfdGFibGUnLCBjZi4gbWtvZmZsb2FkLmNjLCB0aGUgZnVuY3Rpb24g aGFzIHRvIGJlIHZpc2libGUuICovCisgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21wIHRh cmdldCBkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiwKKwkJCURFQ0xfQVRUUklCVVRFUyAoZGVj bCkpKQorICAgIGZvcmNlX3B1YmxpYyA9IHRydWU7CiAgIGlmIChsb29rdXBfYXR0cmlidXRl ICgib21wIHRhcmdldCBlbnRyeXBvaW50IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkKICAg ICAgICYmICFsb29rdXBfYXR0cmlidXRlICgib2FjYyBmdW5jdGlvbiIsIERFQ0xfQVRUUklC VVRFUyAoZGVjbCkpKQogICAgIHsKQEAgLTE0OTMsNyArMTQ5OSw3IEBAIG52cHR4X2RlY2xh cmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3Rf dHJlZSBkZWNsKQogICAvKiBXZSBjb25zdHJ1Y3QgdGhlIGluaXRpYWwgcGFydCBvZiB0aGUg ZnVuY3Rpb24gaW50byBhIHN0cmluZwogICAgICBzdHJlYW0sIGluIG9yZGVyIHRvIHNoYXJl IHRoZSBwcm90b3R5cGUgd3JpdGluZyBjb2RlLiAgKi8KICAgc3RkOjpzdHJpbmdzdHJlYW0g czsKLSAgd3JpdGVfZm5fcHJvdG8gKHMsIHRydWUsIG5hbWUsIGRlY2wpOworICB3cml0ZV9m bl9wcm90byAocywgdHJ1ZSwgbmFtZSwgZGVjbCwgZm9yY2VfcHVibGljKTsKICAgcyA8PCAi e1xuIjsKIAogICBib29sIHJldHVybl9pbl9tZW0gPSB3cml0ZV9yZXR1cm5fdHlwZSAocywg ZmFsc2UsIHJlc3VsdF90eXBlKTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdp bi1udnB0eC5jIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggZDEzMDY2 NWVkMTkuLmFjNDAwZmMyYTFkIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVnaW4t bnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwpAQCAtMTI3Myw3 ICsxMjczLDcgQEAgbnZwdHhfc2V0X2Nsb2NrdGljayAoQ1Vtb2R1bGUgbW9kdWxlLCBzdHJ1 Y3QgcHR4X2RldmljZSAqZGV2KQogaW50CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50 IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJCQkg c3RydWN0IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRfdCAqKnJldl9m bl90YWJsZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKwkJCSB1aW50NjRfdCAqKnJldl9m bl90YWJsZSkKIHsKICAgQ1Vtb2R1bGUgbW9kdWxlOwogICBjb25zdCBjaGFyICpjb25zdCAq dmFyX25hbWVzOwpAQCAtMTM3Niw2ICsxMzc2LDIzIEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2lt YWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0 YSwKICAgICB0YXJnX3RibC0+c3RhcnQgPSB0YXJnX3RibC0+ZW5kID0gMDsKICAgdGFyZ190 YmwrKzsKIAorICBpZiAocmV2X2ZuX3RhYmxlICYmIGZuX2VudHJpZXMgPT0gMCkKKyAgICAq cmV2X2ZuX3RhYmxlID0gTlVMTDsKKyAgZWxzZSBpZiAocmV2X2ZuX3RhYmxlKQorICAgIHsK KyAgICAgIENVZGV2aWNlcHRyIHZhcjsKKyAgICAgIHNpemVfdCBieXRlczsKKyAgICAgIHIg PSBDVURBX0NBTExfTk9DSEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRlcywg bW9kdWxlLAorCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOworICAgICAgaWYgKHIg IT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lOX2ZhdGFsICgiY3VNb2R1bGVHZXRHbG9i YWwgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOworICAgICAgYXNzZXJ0IChieXRlcyA9 PSBzaXplb2YgKHVpbnQ2NF90KSAqIGZuX2VudHJpZXMpOworICAgICAgKnJldl9mbl90YWJs ZSA9IEdPTVBfUExVR0lOX21hbGxvYyAoc2l6ZW9mICh1aW50NjRfdCkgKiBmbl9lbnRyaWVz KTsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9ILCAqcmV2X2Zu X3RhYmxlLCB2YXIsIGJ5dGVzKTsKKyAgICAgIGlmIChyICE9IENVREFfU1VDQ0VTUykKKwlH T01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5RHRvSCBlcnJvcjogJXMiLCBjdWRhX2Vycm9y IChyKSk7CisgICAgfQorCiAgIG52cHR4X3NldF9jbG9ja3RpY2sgKG1vZHVsZSwgZGV2KTsK IAogICByZXR1cm4gZm5fZW50cmllcyArIHZhcl9lbnRyaWVzICsgb3RoZXJfZW50cmllczsK --------------p5rnNwZfrdZHuzv7MRdoGtug-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 2C1393858C20 for ; Mon, 29 Aug 2022 18:44:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2C1393858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,273,1654588800"; d="diff'?scan'208,217";a="82203646" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 29 Aug 2022 10:43:35 -0800 IronPort-SDR: 33VqyGyC3rMZ4Vk6odLi6F6mIYjUS1kA2x0jUnuHIRqRrFql34b2LfDDdvwu8ezhM3iCOOK0cV wQgplvNeyh4KPkdPkBuSINB9wf22hqDtFp6VeEMwi58FgM0WA8x7Zqxico/k/fzUhyyospjcTX QRAwdKhcwDA4UqiqAMjH11m82jzeW8JPn4jJHDdKrlt7dRDTf3Zw4NNOfj/XHauWilwPVbkbIZ alGBoto+M+cT+diFEp9XYPAxW7aNKcl2t3qybwrupL0umOug914+uJ5TrAvZYKGq1o50Bdafc6 Vs0= Content-Type: multipart/mixed; boundary="------------p5rnNwZfrdZHuzv7MRdoGtug" Message-ID: <8301889b-64f9-8c60-15ca-2fa1fc495791@codesourcery.com> Date: Mon, 29 Aug 2022 20:43:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [Patch][2/3][v2] nvptx: libgomp+mkoffload.cc: Prepare for reverse offload fn lookup Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , Tom de Vries References: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,NICE_REPLY_A,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Message-ID: <20220829184326.aznBcG333VA4-4q1loL8mFfyd5IDno5YHhbF5DBaboc@z> --------------p5rnNwZfrdZHuzv7MRdoGtug Content-Type: multipart/alternative; boundary="------------jwjjg2t07h7k2TaOKdqqG8Qo" --------------jwjjg2t07h7k2TaOKdqqG8Qo Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Slightly revised version, fixing some issues in mkoffload.cc. Otherwise, th= e same applies: On 25.08.22 19:30, Tobias Burnus wrote: On 25.08.22 16:54, Tobias Burnus wrote: The attached patch prepare for reverse-offload device->host function-address lookup by requesting (if needed) the on-device address. This patch adds the actual implementation for NVPTX. Having array[] =3D {fn1,fn2}; works with nvptx only since sm_35; hence, if there is a reverse_offload and sm_30 is used, there will be a compile-ti= me error. To avoid incompatibilities, I compile with the same PTX ISA .version and sm_XX version as the (last) file that contains the reverse offload. While it should not matter, some newer CUDA might not support, e.g., sm_35 or do not like a specific ISA version - thus, that seemed to be safer. This is currently effectively a no op as with [1/3] patch, always NULL is passed and as GOMP_OFFLOAD_get_num_devices returns <=3D 0 as soon as 'omp requires reverse_offload' has been specified. OK for mainline? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------jwjjg2t07h7k2TaOKdqqG8Qo-- --------------p5rnNwZfrdZHuzv7MRdoGtug Content-Type: text/x-patch; charset="UTF-8"; name="fn-lookup-nvptx-v2.diff" Content-Disposition: attachment; filename="fn-lookup-nvptx-v2.diff" Content-Transfer-Encoding: base64 bnZwdHg6IGxpYmdvbXArbWtvZmZsb2FkLmNjOiBQcmVwYXJlIGZvciByZXZl cnNlIG9mZmxvYWQgZm4gbG9va3VwCgpBZGQgc3VwcG9ydCB0byBudnB0eCBm b3IgcmV2ZXJzZSBsb29rdXAgb2YgZnVuY3Rpb24gbmFtZSB0byBwcmVwYXJl IGZvcgonb21wIHRhcmdldCBkZXZpY2UoYW5jZXN0b3I6MSknLgoKZ2NjL0No YW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgKHN0cnVj dCBpZF9tYXApOiBBZGQgJ2RpbScgbWVtYmVyLgoJKHJlY29yZF9pZCk6IFN0 b3JlIGZ1bmMgbmFtZSB3aXRob3V0IHF1b3Rlcywgc3RvcmUgZGltIHNlcGFy YXRlbHkuCgkocHJvY2Vzcyk6IEZvciBHT01QX1JFUVVJUkVTX1JFVkVSU0Vf T0ZGTE9BRCwgY2hlY2sgdGhhdCAtbWFyY2ggaXMKCWF0IGxlYXN0IHNtXzM1 LCBjcmVhdGUgJyRvZmZsb2FkX2Z1bmNfdGFibGUnIGdsb2JhbCBhcnJheSBh bmQgaW5pdAoJd2l0aCByZXZlcnNlLW9mZmxvYWQgZnVuY3Rpb24gYWRkcmVz c2VzLgoJKiBjb25maWcvbnZwdHgvbnZwdHguY2MgKHdyaXRlX2ZuX3Byb3Rv XzEsIHdyaXRlX2ZuX3Byb3RvKTogTmV3Cglmb3JjZV9wdWJsaWMgYXR0cmli dXRlIHRvIGZvcmNlIC52aXNpYmxlLgoJKG52cHR4X2RlY2xhcmVfZnVuY3Rp b25fbmFtZSk6IEZvciAib21wIHRhcmdldAoJZGV2aWNlX2FuY2VzdG9yX25v aG9zdCIgYXR0cmlidXQsIGZvcmNlIC52aXNpYmxlL1RSRUVfUFVCTElDLgoK bGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBwbHVnaW4vcGx1Z2luLW52cHR4LmMg KEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKTogUmVhZCBvZmZsb2FkCglmdW5j dGlvbiBhZGRyZXNzIHRhYmxlICckb2ZmbG9hZF9mdW5jX3RhYmxlJyBpZiBy ZXZfZm5fdGFibGUKCWlzIG5vdCBOVUxMLgoKIGdjYy9jb25maWcvbnZwdHgv bWtvZmZsb2FkLmNjIHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLQogZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYyAg ICAgfCAgMjAgKysrKystLS0KIGxpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0 eC5jIHwgIDE5ICsrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNl cnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL252cHR4L21rb2ZmbG9hZC5jYyBiL2djYy9jb25maWcvbnZwdHgv bWtvZmZsb2FkLmNjCmluZGV4IDNlZWEwYThmMTM4Li44MzRiMjA1OWFhYyAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MKKysr IGIvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MKQEAgLTQ3LDYgKzQ3 LDcgQEAgc3RydWN0IGlkX21hcAogewogICBpZF9tYXAgKm5leHQ7CiAgIGNo YXIgKnB0eF9uYW1lOworICBjaGFyICpkaW07CiB9OwogCiBzdGF0aWMgaWRf bWFwICpmdW5jX2lkcywgKipmdW5jc190YWlsID0gJmZ1bmNfaWRzOwpAQCAt MTA4LDggKzEwOSwxMSBAQCB4cHV0ZW52IChjb25zdCBjaGFyICpzdHJpbmcp CiBzdGF0aWMgdm9pZAogcmVjb3JkX2lkIChjb25zdCBjaGFyICpwMSwgaWRf bWFwICoqKndoZXJlKQogewotICBjb25zdCBjaGFyICplbmQgPSBzdHJjaHIg KHAxLCAnXG4nKTsKLSAgaWYgKCFlbmQpCisgIGdjY19hc3NlcnQgKHAxWzBd ID09ICciJyk7CisgIHAxKys7CisgIGNvbnN0IGNoYXIgKmVuZCA9IHN0cmNo ciAocDEsICciJyk7CisgIGNvbnN0IGNoYXIgKmVuZDIgPSBzdHJjaHIgKHAx LCAnXG4nKTsKKyAgaWYgKCFlbmQgfHwgIWVuZDIgfHwgZW5kID49IGVuZDIp CiAgICAgZmF0YWxfZXJyb3IgKGlucHV0X2xvY2F0aW9uLCAibWFsZm9ybWVk IHB0eCBmaWxlIik7CiAKICAgaWRfbWFwICp2ID0gWE5FVyAoaWRfbWFwKTsK QEAgLTExNyw2ICsxMjEsMTYgQEAgcmVjb3JkX2lkIChjb25zdCBjaGFyICpw MSwgaWRfbWFwICoqKndoZXJlKQogICB2LT5wdHhfbmFtZSA9IFhORVdWRUMg KGNoYXIsIGxlbiArIDEpOwogICBtZW1jcHkgKHYtPnB0eF9uYW1lLCBwMSwg bGVuKTsKICAgdi0+cHR4X25hbWVbbGVuXSA9ICdcMCc7CisgIHAxID0gZW5k ICsgMTsKKyAgaWYgKCplbmQgIT0gJ1xuJykKKyAgICB7CisgICAgICBsZW4g PSBlbmQyIC0gcDE7CisgICAgICB2LT5kaW0gPSBYTkVXVkVDIChjaGFyLCBs ZW4gKyAxKTsKKyAgICAgIG1lbWNweSAodi0+ZGltLCBwMSwgbGVuKTsKKyAg ICAgIHYtPmRpbVtsZW5dID0gJ1wwJzsKKyAgICB9CisgIGVsc2UKKyAgICB2 LT5kaW0gPSBOVUxMOwogICB2LT5uZXh0ID0gTlVMTDsKICAgaWRfbWFwICoq dGFpbCA9ICp3aGVyZTsKICAgKnRhaWwgPSB2OwpAQCAtMjQyLDYgKzI1Niwx MCBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBv bXBfcmVxdWlyZXMpCiAgIGlkX21hcCBjb25zdCAqaWQ7CiAgIHVuc2lnbmVk IG9ial9jb3VudCA9IDA7CiAgIHVuc2lnbmVkIGl4OworICBjb25zdCBjaGFy ICpzbV92ZXIgPSBOVUxMLCAqdmVyc2lvbiA9IE5VTEw7CisgIGNvbnN0IGNo YXIgKnNtX3ZlcjIgPSBOVUxMLCAqdmVyc2lvbjIgPSBOVUxMOworICBzaXpl X3QgZmlsZV9jbnQgPSAwOworICBzaXplX3QgKmZpbGVfaWR4ID0gWEFMTE9D QVZFQyAoc2l6ZV90LCBsZW4pOwogCiAgIGZwcmludGYgKG91dCwgIiNpbmNs dWRlIDxzdGRpbnQuaD5cblxuIik7CiAKQEAgLTI1MCw2ICsyNjgsOCBAQCBw cm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVx dWlyZXMpCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAg ewogICAgICAgY2hhciBjOworICAgICAgYm9vbCBvdXRwdXRfZm5fcHRyID0g ZmFsc2U7CisgICAgICBmaWxlX2lkeFtmaWxlX2NudCsrXSA9IGk7CiAKICAg ICAgIGZwcmludGYgKG91dCwgInN0YXRpYyBjb25zdCBjaGFyIHB0eF9jb2Rl XyV1W10gPVxuXHRcIiIsIG9ial9jb3VudCsrKTsKICAgICAgIHdoaWxlICgo YyA9IGlucHV0W2krK10pKQpAQCAtMjYxLDYgKzI4MSwxNiBAQCBwcm9jZXNz IChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMp CiAJICAgIGNhc2UgJ1xuJzoKIAkgICAgICBmcHJpbnRmIChvdXQsICJcXG5c IlxuXHRcIiIpOwogCSAgICAgIC8qIExvb2sgZm9yIG1hcHBpbmdzIG9uIHN1 YnNlcXVlbnQgbGluZXMuICAqLworCSAgICAgIGlmIChVTkxJS0VMWSAoc3Rh cnRzd2l0aCAoaW5wdXQgKyBpLCAiLnRhcmdldCBzbV8iKSkpCisJCXsKKwkJ ICBzbV92ZXIgPSBpbnB1dCArIGkgKyBzdHJsZW4gKCIudGFyZ2V0IHNtXyIp OworCQkgIGNvbnRpbnVlOworCQl9CisJICAgICAgaWYgKFVOTElLRUxZIChz dGFydHN3aXRoIChpbnB1dCArIGksICIudmVyc2lvbiAiKSkpCisJCXsKKwkJ ICB2ZXJzaW9uID0gaW5wdXQgKyBpICsgc3RybGVuICgiLnZlcnNpb24gIik7 CisJCSAgY29udGludWU7CisJCX0KIAkgICAgICB3aGlsZSAoc3RhcnRzd2l0 aCAoaW5wdXQgKyBpLCAiLy86IikpCiAJCXsKIAkJICBpICs9IDM7CkBAIC0y NjgsNyArMjk4LDEwIEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQs IHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkJICBpZiAoc3RhcnRzd2l0aCAo aW5wdXQgKyBpLCAiVkFSX01BUCAiKSkKIAkJICAgIHJlY29yZF9pZCAoaW5w dXQgKyBpICsgOCwgJnZhcnNfdGFpbCk7CiAJCSAgZWxzZSBpZiAoc3RhcnRz d2l0aCAoaW5wdXQgKyBpLCAiRlVOQ19NQVAgIikpCi0JCSAgICByZWNvcmRf aWQgKGlucHV0ICsgaSArIDksICZmdW5jc190YWlsKTsKKwkJICAgIHsKKwkJ ICAgICAgb3V0cHV0X2ZuX3B0ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9p ZCAoaW5wdXQgKyBpICsgOSwgJmZ1bmNzX3RhaWwpOworCQkgICAgfQogCQkg IGVsc2UKIAkJICAgIGFib3J0ICgpOwogCQkgIC8qIFNraXAgdG8gbmV4dCBs aW5lLiAqLwpAQCAtMjg2LDYgKzMxOSw4MSBAQCBwcm9jZXNzIChGSUxFICpp biwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICBwdXRj IChjLCBvdXQpOwogCX0KICAgICAgIGZwcmludGYgKG91dCwgIlwiO1xuXG4i KTsKKyAgICAgIGlmIChvdXRwdXRfZm5fcHRyCisJICAmJiAob21wX3JlcXVp cmVzICYgR09NUF9SRVFVSVJFU19SRVZFUlNFX09GRkxPQUQpICE9IDApCisJ eworCSAgaWYgKHNtX3ZlciAmJiBzbV92ZXJbMF0gPT0gJzMnICYmIHNtX3Zl clsxXSA9PSAnMCcKKwkgICAgICAmJiBzbV92ZXJbMl0gPT0gJ1xuJykKKwkg ICAgZmF0YWxfZXJyb3IgKGlucHV0X2xvY2F0aW9uLAorCQkJICIlPG9tcCBy ZXF1aXJlcyByZXZlcnNlX29mZmxvYWQlPiByZXF1aXJlcyBhdCBsZWFzdCAi CisJCQkgIiU8c21fMzUlPiBmb3IgJTwtbWlzYT0lPiIpOworCSAgc21fdmVy MiA9IHNtX3ZlcjsKKwkgIHZlcnNpb24yID0gdmVyc2lvbjsKKwl9CisgICAg fQorCisgIC8qIENyZWF0ZSBmdW5jdGlvbi1wb2ludGVyIGFycmF5LCByZXF1 aXJlZCBmb3IgcmV2ZXJzZQorICAgICBvZmZsb2FkIGZ1bmN0aW9uLXBvaW50 ZXIgbG9va3VwLiAgKi8KKworICBpZiAoZnVuY19pZHMgJiYgKG9tcF9yZXF1 aXJlcyAmIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEKSAhPSAwKQor ICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVHSU4g R0xPQkFMIEZVTkNUSU9OIERFQ0w6ICI7CisgICAgICBmcHJpbnRmIChvdXQs ICJzdGF0aWMgY29uc3QgY2hhciBwdHhfY29kZV8ldVtdID1cbiIsIG9ial9j b3VudCsrKTsKKyAgICAgIGZwcmludGYgKG91dCwgIlx0XCIudmVyc2lvbiAi KTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyB2ZXJzaW9uMltpXSAhPSAn XDAnICYmIHZlcnNpb24yW2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAodmVy c2lvbjJbaV0sIG91dCk7CisgICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRc Ii50YXJnZXQgc21fIik7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgdmVy c2lvbjJbaV0gIT0gJ1wwJyAmJiBzbV92ZXIyW2ldICE9ICdcbic7IGkrKykK KwlmcHV0YyAoc21fdmVyMltpXSwgb3V0KTsKKyAgICAgIGZwcmludGYgKG91 dCwgIlwiXG5cdFwiLmZpbGUgMSBcXFwiPGR1bW15PlxcXCJcIlxuIik7CisK KyAgICAgIHNpemVfdCBmaWR4ID0gMDsKKyAgICAgIGZvciAoaWQgPSBmdW5j X2lkczsgaWQ7IGlkID0gaWQtPm5leHQpCisJeworCSAgLyogT25seSAnbm9o b3N0JyBmdW5jdGlvbnMgYXJlIG5lZWRlZCAtIHVzZSBOVUxMIGZvciB0aGUg cmVzdC4KKwkgICAgIEFsdGVybmF0aXZlbHksIGJlc2lkZXMgc2VhcmNoaW5n IGZvciAnQkVHSU4gRlVOQ1RJT04gREVDTCcsCisJICAgICBjaGVja2luZyBm b3IgJy52aXNpYmxlIC5lbnRyeSAnICsgaWQtPnB0eF9uYW1lIHdvdWxkIGJl CisJICAgICByZXF1aXJlZC4gICovCisJICBpZiAoIWVuZHN3aXRoIChpZC0+ cHR4X25hbWUsICIkbm9ob3N0IikpCisJICAgIGNvbnRpbnVlOworCSAgZnBy aW50ZiAob3V0LCAiXHRcIi5leHRlcm4gIik7CisJICBjb25zdCBjaGFyICpw ID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkgIHdoaWxlICh0cnVlKQor CSAgICB7CisJICAgICAgcCA9IHN0cnN0ciAocCwgbmVlZGxlKTsKKwkgICAg ICBpZiAoIXApCisJCXsKKwkJICBmaWR4Kys7CisJCSAgaWYgKGZpZHggPj0g ZmlsZV9jbnQpCisJCSAgICBicmVhazsKKwkJICBwID0gaW5wdXQgKyBmaWxl X2lkeFtmaWR4XTsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIHAgKz0g c3RybGVuIChuZWVkbGUpOworCSAgICAgIGlmICghc3RhcnRzd2l0aCAocCwg aWQtPnB0eF9uYW1lKSkKKwkJY29udGludWU7CisJICAgICAgcCArPSBzdHJs ZW4gKGlkLT5wdHhfbmFtZSk7CisJICAgICAgaWYgKCpwICE9ICdcbicpCisJ CWNvbnRpbnVlOworCSAgICAgIHArKzsKKwkgICAgICBnY2NfYXNzZXJ0IChz dGFydHN3aXRoIChwLCAiLnZpc2libGUgIikpOworCSAgICAgIHAgKz0gc3Ry bGVuICgiLnZpc2libGUgIik7CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcg JiYgKnAgIT0gJ1xuJzsgcCsrKQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAg ICAgYnJlYWs7CisJICAgIH0KKwkgIGZwcmludGYgKG91dCwgIlwiXG4iKTsK KwkgIGlmIChmaWR4ID09IGZpbGVfY250KQorCSAgICBmYXRhbF9lcnJvciAo aW5wdXRfbG9jYXRpb24sCisJCQkgIkNhbm5vdCBmaW5kIGZ1bmN0aW9uIGRl Y2xhcmF0aW9uIGZvciAlcXMiLAorCQkJIGlkLT5wdHhfbmFtZSk7CisJfQor ICAgICAgZnByaW50ZiAob3V0LCAiXHRcIi52aXNpYmxlIC5nbG9iYWwgLmFs aWduIDggLnU2NCAiCisJCSAgICAiJG9mZmxvYWRfZnVuY190YWJsZVtdID0g eyIpOworICAgICAgZm9yIChjb21tYSA9ICIiLCBpZCA9IGZ1bmNfaWRzOyBp ZDsgY29tbWEgPSAiLCIsIGlkID0gaWQtPm5leHQpCisJZnByaW50ZiAob3V0 LCAiJXNcIlxuXHRcdFwiJXMiLCBjb21tYSwKKwkJIGVuZHN3aXRoIChpZC0+ cHR4X25hbWUsICIkbm9ob3N0IikgPyBpZC0+cHR4X25hbWUgOiAiMCIpOwor ICAgICAgZnByaW50ZiAob3V0LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQog CiAgIC8qIER1bXAgb3V0IGFycmF5IG9mIHBvaW50ZXJzIHRvIHB0eCBvYmpl Y3Qgc3RyaW5ncy4gICovCkBAIC0zMDAsNyArNDA4LDcgQEAgcHJvY2VzcyAo RklMRSAqaW4sIEZJTEUgKm91dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQog ICAvKiBEdW1wIG91dCB2YXJpYWJsZSBpZGVudHMuICAqLwogICBmcHJpbnRm IChvdXQsICJzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdmFyX21hcHBpbmdz W10gPSB7Iik7CiAgIGZvciAoY29tbWEgPSAiIiwgaWQgPSB2YXJfaWRzOyBp ZDsgY29tbWEgPSAiLCIsIGlkID0gaWQtPm5leHQpCi0gICAgZnByaW50ZiAo b3V0LCAiJXNcblx0JXMiLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBm cHJpbnRmIChvdXQsICIlc1xuXHRcIiVzXCIiLCBjb21tYSwgaWQtPnB0eF9u YW1lKTsKICAgZnByaW50ZiAob3V0LCAiXG59O1xuXG4iKTsKIAogICAvKiBE dW1wIG91dCBmdW5jdGlvbiBpZGVudHMuICAqLwpAQCAtMzA5LDcgKzQxNyw4 IEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9t cF9yZXF1aXJlcykKIAkgICAiICB1bnNpZ25lZCBzaG9ydCBkaW1bJWRdO1xu IgogCSAgICJ9IGZ1bmNfbWFwcGluZ3NbXSA9IHtcbiIsIEdPTVBfRElNX01B WCk7CiAgIGZvciAoY29tbWEgPSAiIiwgaWQgPSBmdW5jX2lkczsgaWQ7IGNv bW1hID0gIiwiLCBpZCA9IGlkLT5uZXh0KQotICAgIGZwcmludGYgKG91dCwg IiVzXG5cdHslc30iLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJp bnRmIChvdXQsICIlc1xuXHR7XCIlc1wiJXN9IiwgY29tbWEsIGlkLT5wdHhf bmFtZSwKKwkgICAgIGlkLT5kaW0gPyBpZC0+ZGltIDogIiIpOwogICBmcHJp bnRmIChvdXQsICJcbn07XG5cbiIpOwogCiAgIGZwcmludGYgKG91dCwKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvbnZwdHgvbnZwdHguY2MgYi9nY2MvY29u ZmlnL252cHR4L252cHR4LmNjCmluZGV4IGU0Mjk3ZTJkNmMzLi4zMjkzYzA5 NjgyMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYwor KysgYi9nY2MvY29uZmlnL252cHR4L252cHR4LmNjCkBAIC05ODksMTUgKzk4 OSwxNSBAQCB3cml0ZV92YXJfbWFya2VyIChGSUxFICpmaWxlLCBib29sIGlz X2RlZm4sIGJvb2wgZ2xvYmFsaXplLCBjb25zdCBjaGFyICpuYW1lKQogCiBz dGF0aWMgdm9pZAogd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJl YW0gJnMsIGJvb2wgaXNfZGVmbiwKLQkJICBjb25zdCBjaGFyICpuYW1lLCBj b25zdF90cmVlIGRlY2wpCisJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Rf dHJlZSBkZWNsLCBib29sIGZvcmNlX3B1YmxpYykKIHsKICAgaWYgKGxvb2t1 cF9hdHRyaWJ1dGUgKCJhbGlhcyIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkp ID09IE5VTEwpCi0gICAgd3JpdGVfZm5fbWFya2VyIChzLCBpc19kZWZuLCBU UkVFX1BVQkxJQyAoZGVjbCksIG5hbWUpOworICAgIHdyaXRlX2ZuX21hcmtl ciAocywgaXNfZGVmbiwgVFJFRV9QVUJMSUMgKGRlY2wpIHx8IGZvcmNlX3B1 YmxpYywgbmFtZSk7CiAKICAgLyogUFRYIGRlY2xhcmF0aW9uLiAgKi8KICAg aWYgKERFQ0xfRVhURVJOQUwgKGRlY2wpKQogICAgIHMgPDwgIi5leHRlcm4g IjsKLSAgZWxzZSBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQorICBlbHNlIGlm IChUUkVFX1BVQkxJQyAoZGVjbCkgfHwgZm9yY2VfcHVibGljKQogICAgIHMg PDwgKERFQ0xfV0VBSyAoZGVjbCkgPyAiLndlYWsgIiA6ICIudmlzaWJsZSAi KTsKICAgcyA8PCAod3JpdGVfYXNfa2VybmVsIChERUNMX0FUVFJJQlVURVMg KGRlY2wpKSA/ICIuZW50cnkgIiA6ICIuZnVuYyAiKTsKIApAQCAtMTA4Niw3 ICsxMDg2LDcgQEAgd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJl YW0gJnMsIGJvb2wgaXNfZGVmbiwKIAogc3RhdGljIHZvaWQKIHdyaXRlX2Zu X3Byb3RvIChzdGQ6OnN0cmluZ3N0cmVhbSAmcywgYm9vbCBpc19kZWZuLAot CQljb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wpCisJCWNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0X3RyZWUgZGVjbCwgYm9vbCBmb3JjZV9wdWJs aWM9ZmFsc2UpCiB7CiAgIGNvbnN0IGNoYXIgKnJlcGxhY2VtZW50ID0gbnZw dHhfbmFtZV9yZXBsYWNlbWVudCAobmFtZSk7CiAgIGNoYXIgKnJlcGxhY2Vk X2RvdHMgPSBOVUxMOwpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgd3JpdGVfZm5f cHJvdG8gKHN0ZDo6c3RyaW5nc3RyZWFtICZzLCBib29sIGlzX2RlZm4sCiAK ICAgaWYgKGlzX2RlZm4pCiAgICAgLyogRW1pdCBhIGRlY2xhcmF0aW9uLiAg VGhlIFBUWCBhc3NlbWJsZXIgZ2V0cyB1cHNldCB3aXRob3V0IGl0LiAgKi8K LSAgICB3cml0ZV9mbl9wcm90b18xIChzLCBmYWxzZSwgbmFtZSwgZGVjbCk7 CisgICAgd3JpdGVfZm5fcHJvdG9fMSAocywgZmFsc2UsIG5hbWUsIGRlY2ws IGZvcmNlX3B1YmxpYyk7CiAKLSAgd3JpdGVfZm5fcHJvdG9fMSAocywgaXNf ZGVmbiwgbmFtZSwgZGVjbCk7CisgIHdyaXRlX2ZuX3Byb3RvXzEgKHMsIGlz X2RlZm4sIG5hbWUsIGRlY2wsIGZvcmNlX3B1YmxpYyk7CiAKICAgaWYgKHJl cGxhY2VkX2RvdHMpCiAgICAgWERFTEVURSAocmVwbGFjZWRfZG90cyk7CkBA IC0xNDgxLDcgKzE0ODEsMTMgQEAgbnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9u YW1lIChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVl IGRlY2wpCiAgIHRyZWUgZm50eXBlID0gVFJFRV9UWVBFIChkZWNsKTsKICAg dHJlZSByZXN1bHRfdHlwZSA9IFRSRUVfVFlQRSAoZm50eXBlKTsKICAgaW50 IGFyZ25vID0gMDsKKyAgYm9vbCBmb3JjZV9wdWJsaWMgPSBmYWxzZTsKIAor ICAvKiBGb3IgcmV2ZXJzZS1vZmZsb2FkICdub2hvc3QnIGZ1bmN0aW9uczog SW4gb3JkZXIgdG8gYmUgY29sbGVjdGFibGUgaW4KKyAgICAgJyRvZmZsb2Fk X2Z1bmNfdGFibGUnLCBjZi4gbWtvZmZsb2FkLmNjLCB0aGUgZnVuY3Rpb24g aGFzIHRvIGJlIHZpc2libGUuICovCisgIGlmIChsb29rdXBfYXR0cmlidXRl ICgib21wIHRhcmdldCBkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiwKKwkJCURF Q0xfQVRUUklCVVRFUyAoZGVjbCkpKQorICAgIGZvcmNlX3B1YmxpYyA9IHRy dWU7CiAgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21wIHRhcmdldCBlbnRy eXBvaW50IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkKICAgICAgICYmICFs b29rdXBfYXR0cmlidXRlICgib2FjYyBmdW5jdGlvbiIsIERFQ0xfQVRUUklC VVRFUyAoZGVjbCkpKQogICAgIHsKQEAgLTE0OTMsNyArMTQ5OSw3IEBAIG52 cHR4X2RlY2xhcmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqZmlsZSwgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3RfdHJlZSBkZWNsKQogICAvKiBXZSBjb25zdHJ1 Y3QgdGhlIGluaXRpYWwgcGFydCBvZiB0aGUgZnVuY3Rpb24gaW50byBhIHN0 cmluZwogICAgICBzdHJlYW0sIGluIG9yZGVyIHRvIHNoYXJlIHRoZSBwcm90 b3R5cGUgd3JpdGluZyBjb2RlLiAgKi8KICAgc3RkOjpzdHJpbmdzdHJlYW0g czsKLSAgd3JpdGVfZm5fcHJvdG8gKHMsIHRydWUsIG5hbWUsIGRlY2wpOwor ICB3cml0ZV9mbl9wcm90byAocywgdHJ1ZSwgbmFtZSwgZGVjbCwgZm9yY2Vf cHVibGljKTsKICAgcyA8PCAie1xuIjsKIAogICBib29sIHJldHVybl9pbl9t ZW0gPSB3cml0ZV9yZXR1cm5fdHlwZSAocywgZmFsc2UsIHJlc3VsdF90eXBl KTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5j IGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggZDEzMDY2 NWVkMTkuLmFjNDAwZmMyYTFkIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdp bi9wbHVnaW4tbnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4t bnZwdHguYwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgbnZwdHhfc2V0X2Nsb2Nr dGljayAoQ1Vtb2R1bGUgbW9kdWxlLCBzdHJ1Y3QgcHR4X2RldmljZSAqZGV2 KQogaW50CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5z aWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJCQkg c3RydWN0IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRf dCAqKnJldl9mbl90YWJsZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKwkJ CSB1aW50NjRfdCAqKnJldl9mbl90YWJsZSkKIHsKICAgQ1Vtb2R1bGUgbW9k dWxlOwogICBjb25zdCBjaGFyICpjb25zdCAqdmFyX25hbWVzOwpAQCAtMTM3 Niw2ICsxMzc2LDIzIEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQg b3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0 YSwKICAgICB0YXJnX3RibC0+c3RhcnQgPSB0YXJnX3RibC0+ZW5kID0gMDsK ICAgdGFyZ190YmwrKzsKIAorICBpZiAocmV2X2ZuX3RhYmxlICYmIGZuX2Vu dHJpZXMgPT0gMCkKKyAgICAqcmV2X2ZuX3RhYmxlID0gTlVMTDsKKyAgZWxz ZSBpZiAocmV2X2ZuX3RhYmxlKQorICAgIHsKKyAgICAgIENVZGV2aWNlcHRy IHZhcjsKKyAgICAgIHNpemVfdCBieXRlczsKKyAgICAgIHIgPSBDVURBX0NB TExfTk9DSEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRlcywg bW9kdWxlLAorCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOworICAg ICAgaWYgKHIgIT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lOX2ZhdGFs ICgiY3VNb2R1bGVHZXRHbG9iYWwgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAo cikpOworICAgICAgYXNzZXJ0IChieXRlcyA9PSBzaXplb2YgKHVpbnQ2NF90 KSAqIGZuX2VudHJpZXMpOworICAgICAgKnJldl9mbl90YWJsZSA9IEdPTVBf UExVR0lOX21hbGxvYyAoc2l6ZW9mICh1aW50NjRfdCkgKiBmbl9lbnRyaWVz KTsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9I LCAqcmV2X2ZuX3RhYmxlLCB2YXIsIGJ5dGVzKTsKKyAgICAgIGlmIChyICE9 IENVREFfU1VDQ0VTUykKKwlHT01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5 RHRvSCBlcnJvcjogJXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgfQorCiAg IG52cHR4X3NldF9jbG9ja3RpY2sgKG1vZHVsZSwgZGV2KTsKIAogICByZXR1 cm4gZm5fZW50cmllcyArIHZhcl9lbnRyaWVzICsgb3RoZXJfZW50cmllczsK --------------p5rnNwZfrdZHuzv7MRdoGtug--