From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id BA3133858C2F for ; Thu, 25 Aug 2022 17:30:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA3133858C2F 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,263,1654588800"; d="diff'?scan'208,217";a="84699004" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 25 Aug 2022 09:30:19 -0800 IronPort-SDR: O5NTzziEkZaBqWZTYPnXSUsIB5eRZUM3aZdwTDuaZ6Chr1vBJ3bh4tg5VOXJBIho4DMNoAYuG9 3oPJae8Mf137spzThEq3e3m4X1CNXsFA+3jMwXZsngUJC/pJ1TylDL4siCXvKmFPaHvuQdT2QM MrCEz5tWxwTtBLNepEZVV+CtMikO9d/oR0mwVZ9TJsjEIOhdY67p6b9lXoXCuJCzFb4dLiPlrF pdKdKtqn9+dc3vqSE2XupCFSQK2DI68Zt82y89fnWGs1gkmAg0OB2KsaMBa0B1f9/rrxfHxRSd Fgw= Content-Type: multipart/mixed; boundary="------------bVHI0hEY0rBZ0WgpgVSm3dWR" Message-ID: Date: Thu, 25 Aug 2022 19:30:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: [Patch][2/3] 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: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) 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,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: <20220825173014.eKw9b0D5A6Fvka7mxQOmX5Sw7Bufrf3c-t5BRSYDg2M@z> --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: multipart/alternative; boundary="------------Y9069WJIFBcklnB17wmlLKFq" --------------Y9069WJIFBcklnB17wmlLKFq Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable 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 --------------Y9069WJIFBcklnB17wmlLKFq-- --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: text/x-patch; charset="UTF-8"; name="fn-lookup-nvptx.diff" Content-Disposition: attachment; filename="fn-lookup-nvptx.diff" Content-Transfer-Encoding: base64 bnZwdHg6IGxpYmdvbXArbWtvZmZsb2FkLmNjOiBQcmVwYXJlIGZvciByZXZl cnNlIG9mZmxvYWQgZm4gbG9va3VwCgpBZGQgc3VwcG9ydCB0byBudnB0eCBm b3IgcmV2ZXJzZSBsb29rdXAgb2YgZnVuY3Rpb24gbmFtZSB0byBwcmVwYXJl IGZvcgonb21wIHRhcmdldCBkZXZpY2UoYW5jZXN0b3I6MSknLgoKZ2NjL0No YW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgKHJlY29y ZF9pZCk6IFN0cmlwIHF1b3RhdGlvbnMgZnJvbQoJZnVuY3Rpb24gbmFtZS4K CShwcm9jZXNzKTogRm9yIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FE LCBjaGVjayB0aGF0IC1tYXJjaCBpcwoJYXQgbGVhc3Qgc21fMzUsIGNyZWF0 ZSAnJG9mZmxvYWRfZnVuY190YWJsZScgZ2xvYmFsIGFycmF5IGFuZCBpbml0 Cgl3aXRoIHJldmVyc2Utb2ZmbG9hZCBmdW5jdGlvbiBhZGRyZXNzZXMuCgkq IGNvbmZpZy9udnB0eC9udnB0eC5jYyAod3JpdGVfZm5fcHJvdG9fMSwgd3Jp dGVfZm5fcHJvdG8pOiBOZXcKCWZvcmNlX3B1YmxpYyBhdHRyaWJ1dGUgdG8g Zm9yY2UgLnZpc2libGUuCgkobnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9uYW1l KTogRm9yICJvbXAgdGFyZ2V0CglkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiBh dHRyaWJ1dCwgZm9yY2UgLnZpc2libGUvVFJFRV9QVUJMSUMuCgpsaWJnb21w L0NoYW5nZUxvZzoKCgkqIHBsdWdpbi9wbHVnaW4tbnZwdHguYyAoR09NUF9P RkZMT0FEX2xvYWRfaW1hZ2UpOiBSZWFkIG9mZmxvYWQKCWZ1bmN0aW9uIGFk ZHJlc3MgdGFibGUgJyRvZmZsb2FkX2Z1bmNfdGFibGUnIGlmIHJldl9mbl90 YWJsZQoJaXMgbm90IE5VTEwuCgogZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxv YWQuY2MgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tCiBnY2MvY29uZmlnL252cHR4L252cHR4LmNjICAgICB8ICAy MCArKysrKy0tLQogbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMgfCAg MTkgKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv bnZwdHgvbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxv YWQuY2MKaW5kZXggM2VlYTBhOGYxMzguLmM0OTY3NjZiMWNjIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYworKysgYi9nY2Mv Y29uZmlnL252cHR4L21rb2ZmbG9hZC5jYwpAQCAtMTA4LDEyICsxMDgsMTQg QEAgeHB1dGVudiAoY29uc3QgY2hhciAqc3RyaW5nKQogc3RhdGljIHZvaWQK IHJlY29yZF9pZCAoY29uc3QgY2hhciAqcDEsIGlkX21hcCAqKip3aGVyZSkK IHsKKyAgZ2NjX2Fzc2VydCAocDFbMF0gPT0gJyInKTsKKyAgcDErKzsKICAg Y29uc3QgY2hhciAqZW5kID0gc3RyY2hyIChwMSwgJ1xuJyk7CiAgIGlmICgh ZW5kKQogICAgIGZhdGFsX2Vycm9yIChpbnB1dF9sb2NhdGlvbiwgIm1hbGZv cm1lZCBwdHggZmlsZSIpOwogCiAgIGlkX21hcCAqdiA9IFhORVcgKGlkX21h cCk7Ci0gIHNpemVfdCBsZW4gPSBlbmQgLSBwMTsKKyAgc2l6ZV90IGxlbiA9 IGVuZCAtIHAxIC0gMSA7IC8qIHJlbW92ZSB0YWlsaW5nICciJyAgKi8KICAg di0+cHR4X25hbWUgPSBYTkVXVkVDIChjaGFyLCBsZW4gKyAxKTsKICAgbWVt Y3B5ICh2LT5wdHhfbmFtZSwgcDEsIGxlbik7CiAgIHYtPnB0eF9uYW1lW2xl bl0gPSAnXDAnOwpAQCAtMjQyLDYgKzI0NCwxMCBAQCBwcm9jZXNzIChGSUxF ICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGlk X21hcCBjb25zdCAqaWQ7CiAgIHVuc2lnbmVkIG9ial9jb3VudCA9IDA7CiAg IHVuc2lnbmVkIGl4OworICBjb25zdCBjaGFyICpzbV92ZXIgPSBOVUxMLCAq dmVyc2lvbiA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnNtX3ZlcjIgPSBOVUxM LCAqdmVyc2lvbjIgPSBOVUxMOworICBzaXplX3QgZmlsZV9jbnQgPSAwOwor ICBzaXplX3QgKmZpbGVfaWR4ID0gWEFMTE9DQVZFQyAoc2l6ZV90LCBsZW4p OwogCiAgIGZwcmludGYgKG91dCwgIiNpbmNsdWRlIDxzdGRpbnQuaD5cblxu Iik7CiAKQEAgLTI1MCw2ICsyNTYsOCBAQCBwcm9jZXNzIChGSUxFICppbiwg RklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAgewogICAgICAgY2hhciBjOwor ICAgICAgYm9vbCBvdXRwdXRfZm5fcHRyID0gZmFsc2U7CisgICAgICBmaWxl X2lkeFtmaWxlX2NudCsrXSA9IGk7CiAKICAgICAgIGZwcmludGYgKG91dCwg InN0YXRpYyBjb25zdCBjaGFyIHB0eF9jb2RlXyV1W10gPVxuXHRcIiIsIG9i al9jb3VudCsrKTsKICAgICAgIHdoaWxlICgoYyA9IGlucHV0W2krK10pKQpA QCAtMjYxLDYgKzI2OSwxNiBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAq b3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIGNhc2UgJ1xuJzoK IAkgICAgICBmcHJpbnRmIChvdXQsICJcXG5cIlxuXHRcIiIpOwogCSAgICAg IC8qIExvb2sgZm9yIG1hcHBpbmdzIG9uIHN1YnNlcXVlbnQgbGluZXMuICAq LworCSAgICAgIGlmIChVTkxJS0VMWSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBp LCAiLnRhcmdldCBzbV8iKSkpCisJCXsKKwkJICBzbV92ZXIgPSBpbnB1dCAr IGkgKyBzdHJsZW4gKCIudGFyZ2V0IHNtXyIpOworCQkgIGNvbnRpbnVlOwor CQl9CisJICAgICAgaWYgKFVOTElLRUxZIChzdGFydHN3aXRoIChpbnB1dCAr IGksICIudmVyc2lvbiAiKSkpCisJCXsKKwkJICB2ZXJzaW9uID0gaW5wdXQg KyBpICsgc3RybGVuICgiLnZlcnNpb24gIik7CisJCSAgY29udGludWU7CisJ CX0KIAkgICAgICB3aGlsZSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiLy86 IikpCiAJCXsKIAkJICBpICs9IDM7CkBAIC0yNjgsNyArMjg2LDEwIEBAIHBy b2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1 aXJlcykKIAkJICBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiVkFSX01B UCAiKSkKIAkJICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOCwgJnZhcnNf dGFpbCk7CiAJCSAgZWxzZSBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAi RlVOQ19NQVAgIikpCi0JCSAgICByZWNvcmRfaWQgKGlucHV0ICsgaSArIDks ICZmdW5jc190YWlsKTsKKwkJICAgIHsKKwkJICAgICAgb3V0cHV0X2ZuX3B0 ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOSwg JmZ1bmNzX3RhaWwpOworCQkgICAgfQogCQkgIGVsc2UKIAkJICAgIGFib3J0 ICgpOwogCQkgIC8qIFNraXAgdG8gbmV4dCBsaW5lLiAqLwpAQCAtMjg2LDYg KzMwNyw4MSBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50 MzJfdCBvbXBfcmVxdWlyZXMpCiAJICBwdXRjIChjLCBvdXQpOwogCX0KICAg ICAgIGZwcmludGYgKG91dCwgIlwiO1xuXG4iKTsKKyAgICAgIGlmIChvdXRw dXRfZm5fcHRyCisJICAmJiAob21wX3JlcXVpcmVzICYgR09NUF9SRVFVSVJF U19SRVZFUlNFX09GRkxPQUQpICE9IDApCisJeworCSAgaWYgKHNtX3ZlciAm JiBzbV92ZXJbMF0gPT0gJzMnICYmIHNtX3ZlclsxXSA9PSAnMCcKKwkgICAg ICAmJiBzbV92ZXJbMl0gPT0gJ1xuJykKKwkgICAgZmF0YWxfZXJyb3IgKGlu cHV0X2xvY2F0aW9uLAorCQkJICIlPG9tcCByZXF1aXJlcyByZXZlcnNlX29m ZmxvYWQlPiByZXF1aXJlcyBhdCBsZWFzdCAiCisJCQkgIiU8c21fMzUlPiBm b3IgJTwtbWlzYT0lPiIpOworCSAgc21fdmVyMiA9IHNtX3ZlcjsKKwkgIHZl cnNpb24yID0gdmVyc2lvbjsKKwl9CisgICAgfQorCisgIC8qIENyZWF0ZSBm dW5jdGlvbi1wb2ludGVyIGFycmF5LCByZXF1aXJlZCBmb3IgcmV2ZXJzZQor ICAgICBvZmZsb2FkIGZ1bmN0aW9uLXBvaW50ZXIgbG9va3VwLiAgKi8KKwor ICBpZiAoZnVuY19pZHMgJiYgKG9tcF9yZXF1aXJlcyAmIEdPTVBfUkVRVUlS RVNfUkVWRVJTRV9PRkZMT0FEKSAhPSAwKQorICAgIHsKKyAgICAgIGNvbnN0 IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVHSU4gR0xPQkFMIEZVTkNUSU9OIERF Q0w6ICI7CisgICAgICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3QgY2hh ciBwdHhfY29kZV8ldVtdID1cbiIsIG9ial9jb3VudCsrKTsKKyAgICAgIGZw cmludGYgKG91dCwgIlx0XCIudmVyc2lvbiAiKTsKKyAgICAgIGZvciAoc2l6 ZV90IGkgPSAwOyB2ZXJzaW9uMltpXSAhPSAnXDAnICYmIHZlcnNpb24yW2ld ICE9ICdcbic7IGkrKykKKwlmcHV0YyAodmVyc2lvbjJbaV0sIG91dCk7Cisg ICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRcIi50YXJnZXQgc21fIik7Cisg ICAgICBmb3IgKHNpemVfdCBpID0gMDsgdmVyc2lvbjJbaV0gIT0gJ1wwJyAm JiBzbV92ZXIyW2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAoc21fdmVyMltp XSwgb3V0KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlwiXG5cdFwiLmZpbGUg MSBcXFwiPGR1bW15PlxcXCJcIlxuIik7CisKKyAgICAgIHNpemVfdCBmaWR4 ID0gMDsKKyAgICAgIGZvciAoaWQgPSBmdW5jX2lkczsgaWQ7IGlkID0gaWQt Pm5leHQpCisJeworCSAgLyogT25seSAnbm9ob3N0JyBmdW5jdGlvbnMgYXJl IG5lZWRlZCAtIHVzZSBOVUxMIGZvciB0aGUgcmVzdC4KKwkgICAgIEFsdGVy bmF0aXZlbHksIGJlc2lkZXMgc2VhcmNoaW5nIGZvciAnQkVHSU4gRlVOQ1RJ T04gREVDTCcsCisJICAgICBjaGVja2luZyBmb3IgJy52aXNpYmxlIC5lbnRy eSAnICsgaWQtPnB0eF9uYW1lIHdvdWxkIGJlCisJICAgICByZXF1aXJlZC4g ICovCisJICBpZiAoIWVuZHN3aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0 IikpCisJICAgIGNvbnRpbnVlOworCSAgZnByaW50ZiAob3V0LCAiXHRcIi5l eHRlcm4gIik7CisJICBjb25zdCBjaGFyICpwID0gaW5wdXQgKyBmaWxlX2lk eFtmaWR4XTsKKwkgIHdoaWxlICh0cnVlKQorCSAgICB7CisJICAgICAgcCA9 IHN0cnN0ciAocCwgbmVlZGxlKTsKKwkgICAgICBpZiAoIXApCisJCXsKKwkJ ICBmaWR4Kys7CisJCSAgaWYgKGZpZHggPj0gZmlsZV9jbnQpCisJCSAgICBi cmVhazsKKwkJICBwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkJICBj b250aW51ZTsKKwkJfQorCSAgICAgIHAgKz0gc3RybGVuIChuZWVkbGUpOwor CSAgICAgIGlmICghc3RhcnRzd2l0aCAocCwgaWQtPnB0eF9uYW1lKSkKKwkJ Y29udGludWU7CisJICAgICAgcCArPSBzdHJsZW4gKGlkLT5wdHhfbmFtZSk7 CisJICAgICAgaWYgKCpwICE9ICdcbicpCisJCWNvbnRpbnVlOworCSAgICAg IHArKzsKKwkgICAgICBnY2NfYXNzZXJ0IChzdGFydHN3aXRoIChwLCAiLnZp c2libGUgIikpOworCSAgICAgIHAgKz0gc3RybGVuICgiLnZpc2libGUgIik7 CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsgcCsr KQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAgICAgYnJlYWs7CisJICAgIH0K KwkgIGZwcmludGYgKG91dCwgIlwiXG4iKTsKKwkgIGlmIChmaWR4ID09IGZp bGVfY250KQorCSAgICBmYXRhbF9lcnJvciAoaW5wdXRfbG9jYXRpb24sCisJ CQkgIkNhbm5vdCBmaW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciAlcXMi LAorCQkJIGlkLT5wdHhfbmFtZSk7CisJfQorICAgICAgZnByaW50ZiAob3V0 LCAiXHRcIi52aXNpYmxlIC5nbG9iYWwgLmFsaWduIDggLnU2NCAiCisJCSAg ICAiJG9mZmxvYWRfZnVuY190YWJsZVtdID0geyIpOworICAgICAgZm9yIChj b21tYSA9ICIiLCBpZCA9IGZ1bmNfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCisJZnByaW50ZiAob3V0LCAiJXNcIlxuXHRcdFwiJXMi LCBjb21tYSwKKwkJIGVuZHN3aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0 IikgPyBpZC0+cHR4X25hbWUgOiAiMCIpOworICAgICAgZnByaW50ZiAob3V0 LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQogCiAgIC8qIER1bXAgb3V0IGFy cmF5IG9mIHBvaW50ZXJzIHRvIHB0eCBvYmplY3Qgc3RyaW5ncy4gICovCkBA IC0zMDAsNyArMzk2LDcgQEAgcHJvY2VzcyAoRklMRSAqaW4sIEZJTEUgKm91 dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQogICAvKiBEdW1wIG91dCB2YXJp YWJsZSBpZGVudHMuICAqLwogICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgdmFyX21hcHBpbmdzW10gPSB7Iik7CiAgIGZvciAo Y29tbWEgPSAiIiwgaWQgPSB2YXJfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCi0gICAgZnByaW50ZiAob3V0LCAiJXNcblx0JXMiLCBj b21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xu XHRcIiVzXCIiLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKICAgZnByaW50ZiAo b3V0LCAiXG59O1xuXG4iKTsKIAogICAvKiBEdW1wIG91dCBmdW5jdGlvbiBp ZGVudHMuICAqLwpAQCAtMzA5LDcgKzQwNSw3IEBAIHByb2Nlc3MgKEZJTEUg KmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkgICAi ICB1bnNpZ25lZCBzaG9ydCBkaW1bJWRdO1xuIgogCSAgICJ9IGZ1bmNfbWFw cGluZ3NbXSA9IHtcbiIsIEdPTVBfRElNX01BWCk7CiAgIGZvciAoY29tbWEg PSAiIiwgaWQgPSBmdW5jX2lkczsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlk LT5uZXh0KQotICAgIGZwcmludGYgKG91dCwgIiVzXG5cdHslc30iLCBjb21t YSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xuXHR7 XCIlc1wifSIsIGNvbW1hLCBpZC0+cHR4X25hbWUpOwogICBmcHJpbnRmIChv dXQsICJcbn07XG5cbiIpOwogCiAgIGZwcmludGYgKG91dCwKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvbnZwdHgvbnZwdHguY2MgYi9nY2MvY29uZmlnL252 cHR4L252cHR4LmNjCmluZGV4IGU0Mjk3ZTJkNmMzLi4zMjkzYzA5NjgyMiAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYworKysgYi9n Y2MvY29uZmlnL252cHR4L252cHR4LmNjCkBAIC05ODksMTUgKzk4OSwxNSBA QCB3cml0ZV92YXJfbWFya2VyIChGSUxFICpmaWxlLCBib29sIGlzX2RlZm4s IGJvb2wgZ2xvYmFsaXplLCBjb25zdCBjaGFyICpuYW1lKQogCiBzdGF0aWMg dm9pZAogd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMs IGJvb2wgaXNfZGVmbiwKLQkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90 cmVlIGRlY2wpCisJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3RfdHJlZSBk ZWNsLCBib29sIGZvcmNlX3B1YmxpYykKIHsKICAgaWYgKGxvb2t1cF9hdHRy aWJ1dGUgKCJhbGlhcyIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpID09IE5V TEwpCi0gICAgd3JpdGVfZm5fbWFya2VyIChzLCBpc19kZWZuLCBUUkVFX1BV QkxJQyAoZGVjbCksIG5hbWUpOworICAgIHdyaXRlX2ZuX21hcmtlciAocywg aXNfZGVmbiwgVFJFRV9QVUJMSUMgKGRlY2wpIHx8IGZvcmNlX3B1YmxpYywg bmFtZSk7CiAKICAgLyogUFRYIGRlY2xhcmF0aW9uLiAgKi8KICAgaWYgKERF Q0xfRVhURVJOQUwgKGRlY2wpKQogICAgIHMgPDwgIi5leHRlcm4gIjsKLSAg ZWxzZSBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQorICBlbHNlIGlmIChUUkVF X1BVQkxJQyAoZGVjbCkgfHwgZm9yY2VfcHVibGljKQogICAgIHMgPDwgKERF Q0xfV0VBSyAoZGVjbCkgPyAiLndlYWsgIiA6ICIudmlzaWJsZSAiKTsKICAg cyA8PCAod3JpdGVfYXNfa2VybmVsIChERUNMX0FUVFJJQlVURVMgKGRlY2wp KSA/ICIuZW50cnkgIiA6ICIuZnVuYyAiKTsKIApAQCAtMTA4Niw3ICsxMDg2 LDcgQEAgd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMs IGJvb2wgaXNfZGVmbiwKIAogc3RhdGljIHZvaWQKIHdyaXRlX2ZuX3Byb3Rv IChzdGQ6OnN0cmluZ3N0cmVhbSAmcywgYm9vbCBpc19kZWZuLAotCQljb25z dCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wpCisJCWNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0X3RyZWUgZGVjbCwgYm9vbCBmb3JjZV9wdWJsaWM9ZmFs c2UpCiB7CiAgIGNvbnN0IGNoYXIgKnJlcGxhY2VtZW50ID0gbnZwdHhfbmFt ZV9yZXBsYWNlbWVudCAobmFtZSk7CiAgIGNoYXIgKnJlcGxhY2VkX2RvdHMg PSBOVUxMOwpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgd3JpdGVfZm5fcHJvdG8g KHN0ZDo6c3RyaW5nc3RyZWFtICZzLCBib29sIGlzX2RlZm4sCiAKICAgaWYg KGlzX2RlZm4pCiAgICAgLyogRW1pdCBhIGRlY2xhcmF0aW9uLiAgVGhlIFBU WCBhc3NlbWJsZXIgZ2V0cyB1cHNldCB3aXRob3V0IGl0LiAgKi8KLSAgICB3 cml0ZV9mbl9wcm90b18xIChzLCBmYWxzZSwgbmFtZSwgZGVjbCk7CisgICAg d3JpdGVfZm5fcHJvdG9fMSAocywgZmFsc2UsIG5hbWUsIGRlY2wsIGZvcmNl X3B1YmxpYyk7CiAKLSAgd3JpdGVfZm5fcHJvdG9fMSAocywgaXNfZGVmbiwg bmFtZSwgZGVjbCk7CisgIHdyaXRlX2ZuX3Byb3RvXzEgKHMsIGlzX2RlZm4s IG5hbWUsIGRlY2wsIGZvcmNlX3B1YmxpYyk7CiAKICAgaWYgKHJlcGxhY2Vk X2RvdHMpCiAgICAgWERFTEVURSAocmVwbGFjZWRfZG90cyk7CkBAIC0xNDgx LDcgKzE0ODEsMTMgQEAgbnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9uYW1lIChG SUxFICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wp CiAgIHRyZWUgZm50eXBlID0gVFJFRV9UWVBFIChkZWNsKTsKICAgdHJlZSBy ZXN1bHRfdHlwZSA9IFRSRUVfVFlQRSAoZm50eXBlKTsKICAgaW50IGFyZ25v ID0gMDsKKyAgYm9vbCBmb3JjZV9wdWJsaWMgPSBmYWxzZTsKIAorICAvKiBG b3IgcmV2ZXJzZS1vZmZsb2FkICdub2hvc3QnIGZ1bmN0aW9uczogSW4gb3Jk ZXIgdG8gYmUgY29sbGVjdGFibGUgaW4KKyAgICAgJyRvZmZsb2FkX2Z1bmNf dGFibGUnLCBjZi4gbWtvZmZsb2FkLmNjLCB0aGUgZnVuY3Rpb24gaGFzIHRv IGJlIHZpc2libGUuICovCisgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21w IHRhcmdldCBkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiwKKwkJCURFQ0xfQVRU UklCVVRFUyAoZGVjbCkpKQorICAgIGZvcmNlX3B1YmxpYyA9IHRydWU7CiAg IGlmIChsb29rdXBfYXR0cmlidXRlICgib21wIHRhcmdldCBlbnRyeXBvaW50 IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkKICAgICAgICYmICFsb29rdXBf YXR0cmlidXRlICgib2FjYyBmdW5jdGlvbiIsIERFQ0xfQVRUUklCVVRFUyAo ZGVjbCkpKQogICAgIHsKQEAgLTE0OTMsNyArMTQ5OSw3IEBAIG52cHR4X2Rl Y2xhcmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAq bmFtZSwgY29uc3RfdHJlZSBkZWNsKQogICAvKiBXZSBjb25zdHJ1Y3QgdGhl IGluaXRpYWwgcGFydCBvZiB0aGUgZnVuY3Rpb24gaW50byBhIHN0cmluZwog ICAgICBzdHJlYW0sIGluIG9yZGVyIHRvIHNoYXJlIHRoZSBwcm90b3R5cGUg d3JpdGluZyBjb2RlLiAgKi8KICAgc3RkOjpzdHJpbmdzdHJlYW0gczsKLSAg d3JpdGVfZm5fcHJvdG8gKHMsIHRydWUsIG5hbWUsIGRlY2wpOworICB3cml0 ZV9mbl9wcm90byAocywgdHJ1ZSwgbmFtZSwgZGVjbCwgZm9yY2VfcHVibGlj KTsKICAgcyA8PCAie1xuIjsKIAogICBib29sIHJldHVybl9pbl9tZW0gPSB3 cml0ZV9yZXR1cm5fdHlwZSAocywgZmFsc2UsIHJlc3VsdF90eXBlKTsKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jIGIvbGli Z29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggZDEzMDY2NWVkMTku LmFjNDAwZmMyYTFkIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVn aW4tbnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHgu YwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgbnZwdHhfc2V0X2Nsb2NrdGljayAo Q1Vtb2R1bGUgbW9kdWxlLCBzdHJ1Y3QgcHR4X2RldmljZSAqZGV2KQogaW50 CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQg dmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJCQkgc3RydWN0 IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRfdCAqKnJl dl9mbl90YWJsZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKwkJCSB1aW50 NjRfdCAqKnJldl9mbl90YWJsZSkKIHsKICAgQ1Vtb2R1bGUgbW9kdWxlOwog ICBjb25zdCBjaGFyICpjb25zdCAqdmFyX25hbWVzOwpAQCAtMTM3Niw2ICsx Mzc2LDIzIEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3JkLCB1 bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0YSwKICAg ICB0YXJnX3RibC0+c3RhcnQgPSB0YXJnX3RibC0+ZW5kID0gMDsKICAgdGFy Z190YmwrKzsKIAorICBpZiAocmV2X2ZuX3RhYmxlICYmIGZuX2VudHJpZXMg PT0gMCkKKyAgICAqcmV2X2ZuX3RhYmxlID0gTlVMTDsKKyAgZWxzZSBpZiAo cmV2X2ZuX3RhYmxlKQorICAgIHsKKyAgICAgIENVZGV2aWNlcHRyIHZhcjsK KyAgICAgIHNpemVfdCBieXRlczsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9D SEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRlcywgbW9kdWxl LAorCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOworICAgICAgaWYg KHIgIT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lOX2ZhdGFsICgiY3VN b2R1bGVHZXRHbG9iYWwgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOwor ICAgICAgYXNzZXJ0IChieXRlcyA9PSBzaXplb2YgKHVpbnQ2NF90KSAqIGZu X2VudHJpZXMpOworICAgICAgKnJldl9mbl90YWJsZSA9IEdPTVBfUExVR0lO X21hbGxvYyAoc2l6ZW9mICh1aW50NjRfdCkgKiBmbl9lbnRyaWVzKTsKKyAg ICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9ILCAqcmV2 X2ZuX3RhYmxlLCB2YXIsIGJ5dGVzKTsKKyAgICAgIGlmIChyICE9IENVREFf U1VDQ0VTUykKKwlHT01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5RHRvSCBl cnJvcjogJXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgfQorCiAgIG52cHR4 X3NldF9jbG9ja3RpY2sgKG1vZHVsZSwgZGV2KTsKIAogICByZXR1cm4gZm5f ZW50cmllcyArIHZhcl9lbnRyaWVzICsgb3RoZXJfZW50cmllczsK --------------bVHI0hEY0rBZ0WgpgVSm3dWR--