From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id EB2E13821FE7 for ; Wed, 12 Oct 2022 14:30:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EB2E13821FE7 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.95,179,1661846400"; d="diff'?scan'208";a="84583934" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 12 Oct 2022 06:30:00 -0800 IronPort-SDR: RTN6Vt6gptGd9cTVNmL4oAjKnYo+3+oRR6qpDUARamC75aHjbwEURBjR7REwAFFvp0aZmHkzN6 yvae/YRCsg6vLrHRNhN/L5saxC7etfzj0D7HZDsF++YKSrTmdz9aDQkUIzjgSyHPVaQqUgUgWT WzVlAHmI0cu588gRYeGm08ptKr+/+2i4+Z1TucnWYieJDql+Ev1qh7e8rVLeA0EQHmsDKC1lUZ bSnSdQPYT/WEwUqU2i1B59Xjiypkp/+gzZ3SubCzwfG4MXRouRQlN2YG3r0N5kD/evqBfzjlbq YQU= Content-Type: multipart/mixed; boundary="------------7082SWMzcuMiESaXDiKAXGNN" Message-ID: <1c5166f4-91d2-b320-7fd9-6831c7e26342@codesourcery.com> Date: Wed, 12 Oct 2022 16:29:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.2 Subject: Re: [Patch] libgomp/gcn: Prepare for reverse-offload callback handling Content-Language: en-US To: Andrew Stubbs , gcc-patches CC: Jakub Jelinek References: <55dacdd3-4a82-8087-fdba-824d9910e186@codesourcery.com> <02ec5f29-953b-63dd-7d44-04f9af36a114@codesourcery.com> From: Tobias Burnus In-Reply-To: <02ec5f29-953b-63dd-7d44-04f9af36a114@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-14.mgc.mentorg.com (139.181.222.14) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP 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: --------------7082SWMzcuMiESaXDiKAXGNN Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 29.09.22 18:24, Andrew Stubbs wrote: > On 27/09/2022 14:16, Tobias Burnus wrote: >> Andrew did suggest a while back to piggyback on the console_output >> handling, >> avoiding another atomic access. - If this is still wanted, I like to >> have some >> guidance regarding how to actually implement it. > [...] > The point is that you can use the "msg" and "text" fields for whatever > data you want, as long as you invent a new value for "type". > [....] > You can make "case 4" do whatever you want. There are enough bytes for > 4 pointers, and you could use multiple packets (although it's not safe > to assume they're contiguous or already arrived; maybe "case 4" for > part 1, "case 5" for part 2). It's possible to change this structure, > of course, but the target implementation is in newlib so versioning > becomes a problem. I think =E2=80=93 also looking at the Newlib write.c implementation - that= the data is contiguous: there is an atomic add, where instead of passing '1' for a single slot, I could also add '2' for two slots. Attached is one variant =E2=80=93 for the decl of the GOMP_OFFLOAD_target_r= ev, it needs the generic parts of the sister nvptx patch.* 2*128 bytes were not enough, I need 3*128 bytes. (Or rather 5*64 + 32.) As target_ext is blocking, I decided to use a stack local variable for the remaining arguments and pass it along. Alternatively, I could also use 2 slots - and process them together. This would avoid one device->host memory copy but would make console_output less clear. OK for mainline? Tobias * https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603354.html PS: Currently, device stack variables are private and cannot be accessed from the host; this will change in a separate patch. It not only affects the "rest" part as used in this patch but also the actual arrays behind addr, kinds, and sizes. And quite likely a lot of the map/firstprivate variables passed to addr. As num_devices() will return 0 or -1, this is for now a non-issue. ----------------- 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 --------------7082SWMzcuMiESaXDiKAXGNN Content-Type: text/x-patch; charset="UTF-8"; name="rev-offload-run-gcn-v2.diff" Content-Disposition: attachment; filename="rev-offload-run-gcn-v2.diff" Content-Transfer-Encoding: base64 bGliZ29tcC9nY246IFByZXBhcmUgZm9yIHJldmVyc2Utb2ZmbG9hZCBjYWxsYmFjayBoYW5k bGluZwoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBjb25maWcvZ2NuL2xpYmdvbXAtZ2NuLmg6 IE5ldyBmaWxlOyBjb250YWlucwoJc3RydWN0IG91dHB1dCwgZGVjbGFyZWQgcHJldmlvdXNs eSBpbiBwbHVnaW4tZ2NuLmMuCgkqIGNvbmZpZy9nY24vdGFyZ2V0LmM6IEluY2x1ZGUgaXQu CgkoR09NUF9BRERJVElPTkFMX0lDVlMpOiBEZWNsYXJlIGFzIGV4dGVybiB2YXIuCgkoR09N UF90YXJnZXRfZXh0KTogSGFuZGxlIHJldmVyc2Ugb2ZmbG9hZC4KCSogcGx1Z2luL3BsdWdp bi1nY24uYzogSW5jbHVkZSBsaWJnb21wLWdjbi5oLgoJKHN0cnVjdCBrZXJuYXJncyk6IFJl cGxhY2Ugc3RydWN0IGRlZiBieSB0aGUgb25lCglmcm9tIGxpYmdvbXAtZ2NuLmggZm9yIG91 dHB1dF9kYXRhLgoJKHByb2Nlc3NfcmV2ZXJzZV9vZmZsb2FkKTogTmV3LgoJKGNvbnNvbGVf b3V0cHV0KTogQ2FsbCBpdC4KCiBsaWJnb21wL2NvbmZpZy9nY24vbGliZ29tcC1nY24uaCB8 IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmdvbXAv Y29uZmlnL2djbi90YXJnZXQuYyAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0KIGxpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24uYyAgICAgIHwgMzQgKysrKysrKysr KysrLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgMjIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvZ2NuL2xpYmdvbXAt Z2NuLmggYi9saWJnb21wL2NvbmZpZy9nY24vbGliZ29tcC1nY24uaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTE1NjBiZTc4N2YKLS0tIC9kZXYvbnVsbAor KysgYi9saWJnb21wL2NvbmZpZy9nY24vbGliZ29tcC1nY24uaApAQCAtMCwwICsxLDYxIEBA CisvKiBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisgICBDb250cmlidXRlZCBieSBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5 LmNvbT4uCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBh bmQgTXVsdGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisKKyAgIExpYmdv bXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRl ciB2ZXJzaW9uLgorCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIg U2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkg RXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBv ZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUg cmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyBkZWZpbmVzIGFuZCB0eXBl IGRlZmluaXRpb25zIHNoYXJlZCBiZXR3ZWVuIHRoZQorICAgbnZwdHggdGFyZ2V0J3MgbGli Z29tcC5hIGFuZCB0aGUgcGx1Z2luLW52cHR4LmMsIGJ1dCB0aGF0IGlzIG9ubHkKKyAgIG5l ZWRlZiBmb3IgdGhpcyB0YXJnZXQuICAqLworCisjaWZuZGVmIExJQkdPTVBfR0NOX0gKKyNk ZWZpbmUgTElCR09NUF9HQ05fSCAxCisKKy8qIFRoaXMgc3RydWN0IGlzIGFsc28gdXNlZCBp biBOZXdsaWIncyBsaWJjL3N5cy9hbWRnY24vd3JpdGUuYy4gICovCitzdHJ1Y3Qgb3V0cHV0 Cit7CisgIGludCByZXR1cm5fdmFsdWU7CisgIHVuc2lnbmVkIGludCBuZXh0X291dHB1dDsK KyAgc3RydWN0IHByaW50Zl9kYXRhIHsKKyAgICBpbnQgd3JpdHRlbjsKKyAgICB1bmlvbiB7 CisgICAgICBjaGFyIG1zZ1sxMjhdOworICAgICAgdWludDY0X3QgbXNnX3U2NFsyXTsKKyAg ICB9OworICAgIGludCB0eXBlOworICAgIHVuaW9uIHsKKyAgICAgIGludDY0X3QgaXZhbHVl OworICAgICAgZG91YmxlIGR2YWx1ZTsKKyAgICAgIGNoYXIgdGV4dFsxMjhdOworICAgICAg dWludDY0X3QgdmFsdWVfdTY0WzJdOworICAgIH07CisgIH0gcXVldWVbMTAyNF07CisgIHVu c2lnbmVkIGludCBjb25zdW1lZDsKK307CisKKyNpZiAoX19TSVpFT0ZfU0hPUlRfXyAhPSAy IFwKKyAgICAgfHwgX19TSVpFT0ZfU0laRV9UX18gIT0gOCBcCisgICAgIHx8IF9fU0laRU9G X1BPSU5URVJfXyAhPSA4KQorI2Vycm9yICJEYXRhLXR5cGUgY29udmVyc2lvbiByZXF1aXJl ZCBmb3IgcmV2X29mZmxvYWQiCisjZW5kaWYKKworI2VuZGlmICAvKiBMSUJHT01QX0dDTl9I ICovCmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZy9nY24vdGFyZ2V0LmMgYi9saWJnb21w L2NvbmZpZy9nY24vdGFyZ2V0LmMKaW5kZXggYzg0ODRmYTE4ZDkuLmY1YTRiZjY0NjU1IDEw MDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9nY24vdGFyZ2V0LmMKKysrIGIvbGliZ29tcC9j b25maWcvZ2NuL3RhcmdldC5jCkBAIC0yNCw4ICsyNCwxMSBAQAogICAgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2luY2x1ZGUgImxpYmdvbXAuaCIKKyNpbmNs dWRlICJsaWJnb21wLWdjbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogCitleHRlcm4gdm9s YXRpbGUgc3RydWN0IGdvbXBfb2ZmbG9hZF9pY3ZzIEdPTVBfQURESVRJT05BTF9JQ1ZTOwor CiBib29sCiBHT01QX3RlYW1zNCAodW5zaWduZWQgaW50IG51bV90ZWFtc19sb3dlciwgdW5z aWduZWQgaW50IG51bV90ZWFtc191cHBlciwKIAkgICAgIHVuc2lnbmVkIGludCB0aHJlYWRf bGltaXQsIGJvb2wgZmlyc3QpCkBAIC03NSwxNiArNzgsNDMgQEAgR09NUF90YXJnZXRfZXh0 IChpbnQgZGV2aWNlLCB2b2lkICgqZm4pICh2b2lkICopLCBzaXplX3QgbWFwbnVtLAogCQkg dm9pZCAqKmhvc3RhZGRycywgc2l6ZV90ICpzaXplcywgdW5zaWduZWQgc2hvcnQgKmtpbmRz LAogCQkgdW5zaWduZWQgaW50IGZsYWdzLCB2b2lkICoqZGVwZW5kLCB2b2lkICoqYXJncykK IHsKLSAgKHZvaWQpIGRldmljZTsKLSAgKHZvaWQpIGZuOwotICAodm9pZCkgbWFwbnVtOwot ICAodm9pZCkgaG9zdGFkZHJzOwotICAodm9pZCkgc2l6ZXM7Ci0gICh2b2lkKSBraW5kczsK ICAgKHZvaWQpIGZsYWdzOwogICAodm9pZCkgZGVwZW5kOwogICAodm9pZCkgYXJnczsKLSAg X19idWlsdGluX3VucmVhY2hhYmxlICgpOworCisgIGlmIChkZXZpY2UgIT0gR09NUF9ERVZJ Q0VfSE9TVF9GQUxMQkFDSyB8fCBmbiA9PSBOVUxMKQorICAgIHJldHVybjsKKworICAvKiBU aGUgb3V0cHV0IGRhdGEgaXMgYXQgKCh2b2lkKikga2VybmFyZ3MpWzJdLiAgKi8KKyAgcmVn aXN0ZXIgdm9pZCAqKmtlcm5hcmdzIGFzbSgiczgiKTsKKyAgc3RydWN0IG91dHB1dCAqZGF0 YSA9IChzdHJ1Y3Qgb3V0cHV0ICopIGtlcm5hcmdzWzJdOworICAvKiBSZXNlcnZlIG9uZSBz bG90LiAqLworICB1bnNpZ25lZCBpbnQgaW5kZXggPSBfX2F0b21pY19mZXRjaF9hZGQgKCZk YXRhLT5uZXh0X291dHB1dCwgMSwKKwkJCQkJICAgX19BVE9NSUNfQUNRVUlSRSk7CisKKyAg aWYgKCh1bnNpZ25lZCBpbnQpIChpbmRleCArIDEpIDwgZGF0YS0+Y29uc3VtZWQpCisgICAg YWJvcnQgKCk7ICAvKiBPdmVyZmxvdy4gICovCisKKyAgLyogU3BpbmxvY2sgd2hpbGUgdGhl IGhvc3QgY2F0Y2hlcyB1cC4gICovCisgIGlmIChpbmRleCA+PSAxMDI0KQorICAgIHdoaWxl IChfX2F0b21pY19sb2FkX24gKCZkYXRhLT5jb25zdW1lZCwgX19BVE9NSUNfQUNRVUlSRSkK KwkgICA8PSAoaW5kZXggLSAxMDI0KSkKKyAgICAgIGFzbSAoInNfc2xlZXAgNjQiKTsKKwor ICB1bnNpZ25lZCBpbnQgc2xvdCA9IGluZGV4ICUgMTAyNDsKKyAgdWludDY0X3QgYWRkcnNf c2l6ZXNfa2luZFszXSA9IHsodWludDY0X3QpIGhvc3RhZGRycywgKHVpbnQ2NF90KSBzaXpl cywKKwkJCQkgICh1aW50NjRfdCkga2luZHN9OworICBkYXRhLT5xdWV1ZVtzbG90XS5tc2df dTY0WzBdID0gKHVpbnQ2NF90KSBmbjsKKyAgZGF0YS0+cXVldWVbc2xvdF0ubXNnX3U2NFsx XSA9ICh1aW50NjRfdCkgbWFwbnVtOworICBkYXRhLT5xdWV1ZVtzbG90XS52YWx1ZV91NjRb MF0gPSAodWludDY0X3QpICZhZGRyc19zaXplc19raW5kWzBdOworICBkYXRhLT5xdWV1ZVtz bG90XS52YWx1ZV91NjRbMV0gPSAodWludDY0X3QpIEdPTVBfQURESVRJT05BTF9JQ1ZTLmRl dmljZV9udW07CisKKyAgZGF0YS0+cXVldWVbc2xvdF0udHlwZSA9IDQ7IC8qIFJldmVyc2Ug b2ZmbG9hZC4gICovCisgIF9fYXRvbWljX3N0b3JlX24gKCZkYXRhLT5xdWV1ZVtzbG90XS53 cml0dGVuLCAxLCBfX0FUT01JQ19SRUxFQVNFKTsKKworICAvKiBTcGlubG9jayB3aGlsZSB0 aGUgaG9zdCBjYXRjaGVzIHVwLiAgKi8KKyAgd2hpbGUgKF9fYXRvbWljX2xvYWRfbiAoJmRh dGEtPnF1ZXVlW3Nsb3RdLndyaXR0ZW4sIF9fQVRPTUlDX0FDUVVJUkUpICE9IDApCisgICAg YXNtICgic19zbGVlcCA2NCIpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9saWJnb21wL3Bs dWdpbi9wbHVnaW4tZ2NuLmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMKaW5kZXgg MDRiMTIyZjJhMDkuLmZmZTVjZjVhZjJjIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9w bHVnaW4tZ2NuLmMKKysrIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jCkBAIC00Miw2 ICs0Miw3IEBACiAjaW5jbHVkZSA8ZGxmY24uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNp bmNsdWRlICJsaWJnb21wLXBsdWdpbi5oIgorI2luY2x1ZGUgImNvbmZpZy9nY24vbGliZ29t cC1nY24uaCIgIC8qIEZvciBzdHJ1Y3Qgb3V0cHV0LiAgKi8KICNpbmNsdWRlICJnb21wLWNv bnN0YW50cy5oIgogI2luY2x1ZGUgPGVsZi5oPgogI2luY2x1ZGUgIm9hY2MtcGx1Z2luLmgi CkBAIC0yNTIsMjEgKzI1Myw3IEBAIHN0cnVjdCBrZXJuYXJncyB7CiAgIGludDY0X3QgYXJl bmFfcHRyOwogCiAgIC8qIE91dHB1dCBkYXRhLiAgKi8KLSAgc3RydWN0IG91dHB1dCB7Ci0g ICAgaW50IHJldHVybl92YWx1ZTsKLSAgICB1bnNpZ25lZCBpbnQgbmV4dF9vdXRwdXQ7Ci0g ICAgc3RydWN0IHByaW50Zl9kYXRhIHsKLSAgICAgIGludCB3cml0dGVuOwotICAgICAgY2hh ciBtc2dbMTI4XTsKLSAgICAgIGludCB0eXBlOwotICAgICAgdW5pb24gewotCWludDY0X3Qg aXZhbHVlOwotCWRvdWJsZSBkdmFsdWU7Ci0JY2hhciB0ZXh0WzEyOF07Ci0gICAgICB9Owot ICAgIH0gcXVldWVbMTAyNF07Ci0gICAgdW5zaWduZWQgaW50IGNvbnN1bWVkOwotICB9IG91 dHB1dF9kYXRhOworICBzdHJ1Y3Qgb3V0cHV0IG91dHB1dF9kYXRhOwogfTsKIAogLyogQSBx dWV1ZSBlbnRyeSBmb3IgYSBmdXR1cmUgYXN5bmNocm9ub3VzIGxhdW5jaC4gICovCkBAIC0x OTMxLDYgKzE5MTgsMTkgQEAgY3JlYXRlX2tlcm5lbF9kaXNwYXRjaCAoc3RydWN0IGtlcm5l bF9pbmZvICprZXJuZWwsIGludCBudW1fdGVhbXMpCiAgIHJldHVybiBzaGFkb3c7CiB9CiAK K3N0YXRpYyB2b2lkCitwcm9jZXNzX3JldmVyc2Vfb2ZmbG9hZCAodWludDY0X3QgZm4sIHVp bnQ2NF90IG1hcG51bSwgdWludDY0X3QgcmV2X2RhdGEsCisJCQkgdWludDY0X3QgZGV2X251 bTY0KQoreworICBpbnQgZGV2X251bSA9IGRldl9udW02NDsKKyAgdWludDY0X3QgYWRkcnNf c2l6ZXNfa2luZHNbM107CisgIEdPTVBfT0ZGTE9BRF9ob3N0MmRldiAoZGV2X251bSwgJmFk ZHJzX3NpemVzX2tpbmRzLCAodm9pZCAqKSByZXZfZGF0YSwKKwkJCSBzaXplb2YgKGFkZHJz X3NpemVzX2tpbmRzKSk7CisgIEdPTVBfUExVR0lOX3RhcmdldF9yZXYgKGZuLCBtYXBudW0s IGFkZHJzX3NpemVzX2tpbmRzWzBdLAorCQkJICBhZGRyc19zaXplc19raW5kc1sxXSwgYWRk cnNfc2l6ZXNfa2luZHNbMl0sCisJCQkgIGRldl9udW0sIE5VTEwsIE5VTEwsIE5VTEwpOwor fQorCiAvKiBPdXRwdXQgYW55IGRhdGEgd3JpdHRlbiB0byBjb25zb2xlIG91dHB1dCBmcm9t IHRoZSBrZXJuZWwuICBJdCBpcyBleHBlY3RlZAogICAgdGhhdCB0aGlzIGZ1bmN0aW9uIGlz IHBvbGxlZCBkdXJpbmcga2VybmVsIGV4ZWN1dGlvbi4KIApAQCAtMTk3NSw2ICsxOTc1LDEw IEBAIGNvbnNvbGVfb3V0cHV0IChzdHJ1Y3Qga2VybmVsX2luZm8gKmtlcm5lbCwgc3RydWN0 IGtlcm5hcmdzICprZXJuYXJncywKIAljYXNlIDE6IHByaW50ZiAoIiUuMTI4cyVmXG4iLCBk YXRhLT5tc2csIGRhdGEtPmR2YWx1ZSk7IGJyZWFrOwogCWNhc2UgMjogcHJpbnRmICgiJS4x MjhzJS4xMjhzXG4iLCBkYXRhLT5tc2csIGRhdGEtPnRleHQpOyBicmVhazsKIAljYXNlIDM6 IHByaW50ZiAoIiUuMTI4cyUuMTI4cyIsIGRhdGEtPm1zZywgZGF0YS0+dGV4dCk7IGJyZWFr OworCWNhc2UgNDoKKwkgIHByb2Nlc3NfcmV2ZXJzZV9vZmZsb2FkIChkYXRhLT5tc2dfdTY0 WzBdLCBkYXRhLT5tc2dfdTY0WzFdLAorCQkJCSAgIGRhdGEtPnZhbHVlX3U2NFswXSxkYXRh LT52YWx1ZV91NjRbMV0pOworCSAgYnJlYWs7CiAJZGVmYXVsdDogcHJpbnRmICgiR0NOIHBy aW50IGJ1ZmZlciBlcnJvciFcbiIpOyBicmVhazsKIAl9CiAgICAgICBkYXRhLT53cml0dGVu ID0gMDsK --------------7082SWMzcuMiESaXDiKAXGNN--