From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 411FD3853D62 for ; Fri, 18 Nov 2022 17:41:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 411FD3853D62 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.96,175,1665475200"; d="diff'?scan'208";a="87114523" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 18 Nov 2022 09:41:07 -0800 IronPort-SDR: xPE+UlcJyS3ONpstGAWBspIXxTVVdVKXVO7xMRnsEUBqYf4DjMfnyblUYQtmLwFh0jfzLrUF0R IG39C0VYYcQFqyzhb6gq59RuixDWbhMUoPFoefZoysrU7aYIpnBfrYnvkuqkYX5/CKo/YBOHNV AjcWcXKQwmzJtFbsIOwMBoE/PaQ/o30+Hw7oHyEyN3xSrvv8ilEO25brDmgFfJwNdP0XQ9rmIb /Cd4ynOMwrDzIG7/hPpbvqOLFYdykjfmsQhiAkg92DvG10vel0WQM67Rkm5qyYjf5kj3WxUQqW QS0= Content-Type: multipart/mixed; boundary="------------qhacKslh20P0TQWMhHvYEZCg" Message-ID: Date: Fri, 18 Nov 2022 18:41:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [Patch] libgomp/gcn: Prepare for reverse-offload callback handling Content-Language: en-US From: Tobias Burnus To: Andrew Stubbs , gcc-patches CC: Jakub Jelinek References: <55dacdd3-4a82-8087-fdba-824d9910e186@codesourcery.com> <02ec5f29-953b-63dd-7d44-04f9af36a114@codesourcery.com> <1c5166f4-91d2-b320-7fd9-6831c7e26342@codesourcery.com> In-Reply-To: <1c5166f4-91d2-b320-7fd9-6831c7e26342@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-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-11.4 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: --------------qhacKslh20P0TQWMhHvYEZCg Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Attached is the updated/rediffed version, which now uses the builtin instead of the 'asm("s8"). The code in principle works; that is: If no private stack variables are copied, it works. Or in other words: reverse-offload target regions that don't use firstprivate or mapping work, the rest would crash. That's avoided by not accepting reverse offload inside GOMP_OFFLOAD_get_num_devices for now. To get it working, the manual stack allocation patch + the trivial update to that get_num_devices func is needed, but no change to the attached patch. In order to reduce local patches, I would love to have it on mainline =E2= =80=93 otherwise, I have at least the current version in gcc-patches@. Tobias PS: Previous patch email quoted below. Note: there were two follow up emails, one by Andrew and one by me; cf. your own mail archive (of this thread) or https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603383.html + the next two by thread messages. On 12.10.22 16:29, Tobias Burnus wrote: > 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 - th= at > 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= _rev, > 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 --------------qhacKslh20P0TQWMhHvYEZCg Content-Type: text/x-patch; charset="UTF-8"; name="rev-offload-run-gcn-v3.diff" Content-Disposition: attachment; filename="rev-offload-run-gcn-v3.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 L2NvbmZpZy9nY24vdGFyZ2V0LmMKaW5kZXggYzg0ODRmYTE4ZDkuLjI3ODU0NTY1ZDQwIDEw MDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9nY24vdGFyZ2V0LmMKKysrIGIvbGliZ29tcC9j b25maWcvZ2NuL3RhcmdldC5jCkBAIC0yNCw4ICsyNCwxMSBAQAogICAgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2luY2x1ZGUgImxpYmdvbXAuaCIKKyNpbmNs dWRlICJsaWJnb21wLWdjbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogCitleHRlcm4gdm9s YXRpbGUgc3RydWN0IGdvbXBfb2ZmbG9hZF9pY3ZzIEdPTVBfQURESVRJT05BTF9JQ1ZTOwor CiBib29sCiBHT01QX3RlYW1zNCAodW5zaWduZWQgaW50IG51bV90ZWFtc19sb3dlciwgdW5z aWduZWQgaW50IG51bV90ZWFtc191cHBlciwKIAkgICAgIHVuc2lnbmVkIGludCB0aHJlYWRf bGltaXQsIGJvb2wgZmlyc3QpCkBAIC03NSwxNiArNzgsNDMgQEAgR09NUF90YXJnZXRfZXh0 IChpbnQgZGV2aWNlLCB2b2lkICgqZm4pICh2b2lkICopLCBzaXplX3QgbWFwbnVtLAogCQkg dm9pZCAqKmhvc3RhZGRycywgc2l6ZV90ICpzaXplcywgdW5zaWduZWQgc2hvcnQgKmtpbmRz LAogCQkgdW5zaWduZWQgaW50IGZsYWdzLCB2b2lkICoqZGVwZW5kLCB2b2lkICoqYXJncykK IHsKLSAgKHZvaWQpIGRldmljZTsKLSAgKHZvaWQpIGZuOwotICAodm9pZCkgbWFwbnVtOwot ICAodm9pZCkgaG9zdGFkZHJzOwotICAodm9pZCkgc2l6ZXM7Ci0gICh2b2lkKSBraW5kczsK ICAgKHZvaWQpIGZsYWdzOwogICAodm9pZCkgZGVwZW5kOwogICAodm9pZCkgYXJnczsKLSAg X19idWlsdGluX3VucmVhY2hhYmxlICgpOworCisgIGlmIChkZXZpY2UgIT0gR09NUF9ERVZJ Q0VfSE9TVF9GQUxMQkFDSyB8fCBmbiA9PSBOVUxMKQorICAgIHJldHVybjsKKworICAvKiBU aGUgb3V0cHV0IGRhdGEgaXMgYXQgKCh2b2lkKikga2VybmFyZ3MpWzJdLiAgKi8KKyAgcmVn aXN0ZXIgdm9pZCAqKmtlcm5hcmdzID0gKHZvaWQqKikgX19idWlsdGluX2djbl9rZXJuYXJn X3B0ciAoKTsKKyAgc3RydWN0IG91dHB1dCAqZGF0YSA9IChzdHJ1Y3Qgb3V0cHV0ICopIGtl cm5hcmdzWzJdOworICAvKiBSZXNlcnZlIG9uZSBzbG90LiAqLworICB1bnNpZ25lZCBpbnQg aW5kZXggPSBfX2F0b21pY19mZXRjaF9hZGQgKCZkYXRhLT5uZXh0X291dHB1dCwgMSwKKwkJ CQkJICAgX19BVE9NSUNfQUNRVUlSRSk7CisKKyAgaWYgKCh1bnNpZ25lZCBpbnQpIChpbmRl eCArIDEpIDwgZGF0YS0+Y29uc3VtZWQpCisgICAgYWJvcnQgKCk7ICAvKiBPdmVyZmxvdy4g ICovCisKKyAgLyogU3BpbmxvY2sgd2hpbGUgdGhlIGhvc3QgY2F0Y2hlcyB1cC4gICovCisg IGlmIChpbmRleCA+PSAxMDI0KQorICAgIHdoaWxlIChfX2F0b21pY19sb2FkX24gKCZkYXRh LT5jb25zdW1lZCwgX19BVE9NSUNfQUNRVUlSRSkKKwkgICA8PSAoaW5kZXggLSAxMDI0KSkK KyAgICAgIGFzbSAoInNfc2xlZXAgNjQiKTsKKworICB1bnNpZ25lZCBpbnQgc2xvdCA9IGlu ZGV4ICUgMTAyNDsKKyAgdWludDY0X3QgYWRkcnNfc2l6ZXNfa2luZFszXSA9IHsodWludDY0 X3QpIGhvc3RhZGRycywgKHVpbnQ2NF90KSBzaXplcywKKwkJCQkgICh1aW50NjRfdCkga2lu ZHN9OworICBkYXRhLT5xdWV1ZVtzbG90XS5tc2dfdTY0WzBdID0gKHVpbnQ2NF90KSBmbjsK KyAgZGF0YS0+cXVldWVbc2xvdF0ubXNnX3U2NFsxXSA9ICh1aW50NjRfdCkgbWFwbnVtOwor ICBkYXRhLT5xdWV1ZVtzbG90XS52YWx1ZV91NjRbMF0gPSAodWludDY0X3QpICZhZGRyc19z aXplc19raW5kWzBdOworICBkYXRhLT5xdWV1ZVtzbG90XS52YWx1ZV91NjRbMV0gPSAodWlu dDY0X3QpIEdPTVBfQURESVRJT05BTF9JQ1ZTLmRldmljZV9udW07CisKKyAgZGF0YS0+cXVl dWVbc2xvdF0udHlwZSA9IDQ7IC8qIFJldmVyc2Ugb2ZmbG9hZC4gICovCisgIF9fYXRvbWlj X3N0b3JlX24gKCZkYXRhLT5xdWV1ZVtzbG90XS53cml0dGVuLCAxLCBfX0FUT01JQ19SRUxF QVNFKTsKKworICAvKiBTcGlubG9jayB3aGlsZSB0aGUgaG9zdCBjYXRjaGVzIHVwLiAgKi8K KyAgd2hpbGUgKF9fYXRvbWljX2xvYWRfbiAoJmRhdGEtPnF1ZXVlW3Nsb3RdLndyaXR0ZW4s IF9fQVRPTUlDX0FDUVVJUkUpICE9IDApCisgICAgYXNtICgic19zbGVlcCA2NCIpOwogfQog CiB2b2lkCmRpZmYgLS1naXQgYS9saWJnb21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMgYi9saWJn b21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMKaW5kZXggMDRiMTIyZjJhMDkuLmZmZTVjZjVhZjJj IDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMKKysrIGIvbGliZ29t cC9wbHVnaW4vcGx1Z2luLWdjbi5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8ZGxm Y24uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlICJsaWJnb21wLXBsdWdpbi5o IgorI2luY2x1ZGUgImNvbmZpZy9nY24vbGliZ29tcC1nY24uaCIgIC8qIEZvciBzdHJ1Y3Qg b3V0cHV0LiAgKi8KICNpbmNsdWRlICJnb21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgPGVs Zi5oPgogI2luY2x1ZGUgIm9hY2MtcGx1Z2luLmgiCkBAIC0yNTIsMjEgKzI1Myw3IEBAIHN0 cnVjdCBrZXJuYXJncyB7CiAgIGludDY0X3QgYXJlbmFfcHRyOwogCiAgIC8qIE91dHB1dCBk YXRhLiAgKi8KLSAgc3RydWN0IG91dHB1dCB7Ci0gICAgaW50IHJldHVybl92YWx1ZTsKLSAg ICB1bnNpZ25lZCBpbnQgbmV4dF9vdXRwdXQ7Ci0gICAgc3RydWN0IHByaW50Zl9kYXRhIHsK LSAgICAgIGludCB3cml0dGVuOwotICAgICAgY2hhciBtc2dbMTI4XTsKLSAgICAgIGludCB0 eXBlOwotICAgICAgdW5pb24gewotCWludDY0X3QgaXZhbHVlOwotCWRvdWJsZSBkdmFsdWU7 Ci0JY2hhciB0ZXh0WzEyOF07Ci0gICAgICB9OwotICAgIH0gcXVldWVbMTAyNF07Ci0gICAg dW5zaWduZWQgaW50IGNvbnN1bWVkOwotICB9IG91dHB1dF9kYXRhOworICBzdHJ1Y3Qgb3V0 cHV0IG91dHB1dF9kYXRhOwogfTsKIAogLyogQSBxdWV1ZSBlbnRyeSBmb3IgYSBmdXR1cmUg YXN5bmNocm9ub3VzIGxhdW5jaC4gICovCkBAIC0xOTMxLDYgKzE5MTgsMTkgQEAgY3JlYXRl X2tlcm5lbF9kaXNwYXRjaCAoc3RydWN0IGtlcm5lbF9pbmZvICprZXJuZWwsIGludCBudW1f dGVhbXMpCiAgIHJldHVybiBzaGFkb3c7CiB9CiAKK3N0YXRpYyB2b2lkCitwcm9jZXNzX3Jl dmVyc2Vfb2ZmbG9hZCAodWludDY0X3QgZm4sIHVpbnQ2NF90IG1hcG51bSwgdWludDY0X3Qg cmV2X2RhdGEsCisJCQkgdWludDY0X3QgZGV2X251bTY0KQoreworICBpbnQgZGV2X251bSA9 IGRldl9udW02NDsKKyAgdWludDY0X3QgYWRkcnNfc2l6ZXNfa2luZHNbM107CisgIEdPTVBf T0ZGTE9BRF9ob3N0MmRldiAoZGV2X251bSwgJmFkZHJzX3NpemVzX2tpbmRzLCAodm9pZCAq KSByZXZfZGF0YSwKKwkJCSBzaXplb2YgKGFkZHJzX3NpemVzX2tpbmRzKSk7CisgIEdPTVBf UExVR0lOX3RhcmdldF9yZXYgKGZuLCBtYXBudW0sIGFkZHJzX3NpemVzX2tpbmRzWzBdLAor CQkJICBhZGRyc19zaXplc19raW5kc1sxXSwgYWRkcnNfc2l6ZXNfa2luZHNbMl0sCisJCQkg IGRldl9udW0sIE5VTEwsIE5VTEwsIE5VTEwpOworfQorCiAvKiBPdXRwdXQgYW55IGRhdGEg d3JpdHRlbiB0byBjb25zb2xlIG91dHB1dCBmcm9tIHRoZSBrZXJuZWwuICBJdCBpcyBleHBl Y3RlZAogICAgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHBvbGxlZCBkdXJpbmcga2VybmVsIGV4 ZWN1dGlvbi4KIApAQCAtMTk3NSw2ICsxOTc1LDEwIEBAIGNvbnNvbGVfb3V0cHV0IChzdHJ1 Y3Qga2VybmVsX2luZm8gKmtlcm5lbCwgc3RydWN0IGtlcm5hcmdzICprZXJuYXJncywKIAlj YXNlIDE6IHByaW50ZiAoIiUuMTI4cyVmXG4iLCBkYXRhLT5tc2csIGRhdGEtPmR2YWx1ZSk7 IGJyZWFrOwogCWNhc2UgMjogcHJpbnRmICgiJS4xMjhzJS4xMjhzXG4iLCBkYXRhLT5tc2cs IGRhdGEtPnRleHQpOyBicmVhazsKIAljYXNlIDM6IHByaW50ZiAoIiUuMTI4cyUuMTI4cyIs IGRhdGEtPm1zZywgZGF0YS0+dGV4dCk7IGJyZWFrOworCWNhc2UgNDoKKwkgIHByb2Nlc3Nf cmV2ZXJzZV9vZmZsb2FkIChkYXRhLT5tc2dfdTY0WzBdLCBkYXRhLT5tc2dfdTY0WzFdLAor CQkJCSAgIGRhdGEtPnZhbHVlX3U2NFswXSxkYXRhLT52YWx1ZV91NjRbMV0pOworCSAgYnJl YWs7CiAJZGVmYXVsdDogcHJpbnRmICgiR0NOIHByaW50IGJ1ZmZlciBlcnJvciFcbiIpOyBi cmVhazsKIAl9CiAgICAgICBkYXRhLT53cml0dGVuID0gMDsK --------------qhacKslh20P0TQWMhHvYEZCg--