From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F80BC11F68 for ; Tue, 29 Jun 2021 16:35:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6CA2161DCB for ; Tue, 29 Jun 2021 16:35:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232755AbhF2QiQ (ORCPT ); Tue, 29 Jun 2021 12:38:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:44102 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232116AbhF2QiQ (ORCPT ); Tue, 29 Jun 2021 12:38:16 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C820F61DC2; Tue, 29 Jun 2021 16:35:45 +0000 (UTC) Date: Tue, 29 Jun 2021 17:35:43 +0100 From: Catalin Marinas To: Robin Murphy Cc: Lorenzo Pieralisi , ACPI Devel Maling List , Veronika Kabatova , Will Deacon , CKI Project , Mark Rutland , Memory Management , skt-results-master@redhat.com, Jeff Bastian , Jan Stancek , Linux ARM , rjw@rjwysocki.net, lenb@kernel.org, guohanjun@huawei.com, sudeep.holla@arm.com, ardb@kernel.org, lv.zheng@intel.com, tony.luck@intel.com Subject: Re: =?utf-8?B?4p2MIEZBSUw=?= =?utf-8?Q?=3A?= Test report for kernel 5.13.0-rc7 (arm-next, 8ab9b1a9) Message-ID: <20210629163543.GA12361@arm.com> References: <20210625083918.GA2736@willie-the-truck> <31ffe8fc-f5ee-2858-26c5-0fd8bdd68702@arm.com> <20210625110944.GB20835@arm.com> <48b23351-3dba-bec8-242f-3c918ae55708@arm.com> <8a28663f-6541-6ff4-3de0-b140e3f8a5b9@arm.com> <20210629144415.GA28457@lpieralisi> <14ca6f72-9b0f-ebd7-9cf8-a5d6190c8e5d@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <14ca6f72-9b0f-ebd7-9cf8-a5d6190c8e5d@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org On Tue, Jun 29, 2021 at 04:14:55PM +0100, Robin Murphy wrote: > On 2021-06-29 15:44, Lorenzo Pieralisi wrote: > > On Tue, Jun 29, 2021 at 12:48:14PM +0100, Robin Murphy wrote: > > > [ +ACPI audience ] > > > > > > On 2021-06-25 12:15, Robin Murphy wrote: > > > > On 2021-06-25 12:09, Catalin Marinas wrote: > > > > > On Fri, Jun 25, 2021 at 12:02:52PM +0100, Robin Murphy wrote: > > > > > > On 2021-06-25 10:52, Veronika Kabatova wrote: > > > > > > [...] > > > > > > > > >          ❌ stress: stress-ng > > > > > > > > > > > > > > > > Oh no, this looks like another alignment fault in memcpy: > > > > > > > > > > > > > > > > [13330.651903] Unable to handle kernel paging request at > > > > > > > > virtual address ffff8000534705ff [...] > > > > > > > > [13330.652218] Call trace: > > > > > > > > [13330.652221]  __memcpy+0x168/0x250 > > > > > > > > [13330.652225]  acpi_data_show+0x5c/0x8c > > > > > > > > [13330.652232]  sysfs_kf_bin_read+0x78/0xa0 > > > > > > > > [13330.652238]  kernfs_file_read_iter+0x9c/0x1a4 > > > > > > > > [13330.652241]  kernfs_fop_read_iter+0x34/0x50 > > > > > > > > [13330.652244]  new_sync_read+0xdc/0x154 > > > > > > > > [13330.652253]  vfs_read+0x158/0x1e4 > > > > > > > > [13330.652260]  ksys_read+0x64/0xec > > > > > > > > [13330.652266]  __arm64_sys_read+0x28/0x34 > > > > > > > > [13330.652273]  invoke_syscall+0x50/0x120 > > > > > > > > [13330.652280]  el0_svc_common.constprop.0+0x4c/0xd4 > > > > > > > > [13330.652284]  do_el0_svc+0x30/0x9c > > > > > > > > [13330.652286]  el0_svc+0x2c/0x54 > > > > > > > > [13330.652294]  el0t_64_sync_handler+0x1a4/0x1b0 > > > > > > > > [13330.652296]  el0t_64_sync+0x19c/0x1a0 > > > > > > > > [13330.652303] Code: a984346c a9c4342c f1010042 54fffee8 (a97c3c8e) > > > > > > > > [13330.652307] ---[ end trace 227d4380f57145d4 ]--- > > > > > > > > > > > > > > > > So maybe this issue isn't limited to weird modules, after all... > > > > > > > > > > > > > > It ran on the machine from the same set that we were able to reproduce > > > > > > > it on previously. If you or anyone else have an idea on how > > > > > > > to stabilize the reproducibility or have a debug patch we'll be happy to try it. > > > > > > > > > > > > Possibly it depends on the individual machines' firmware exactly how the > > > > > > relevant bits of their ACPI tables are aligned in memory? > > > > > > > > > > > > I've started digging into that callstack - it may not be a "weird module" > > > > > > but it's definitely crusty ACPI code... a238317ce818 ("ACPI: Clean up > > > > > > acpi_os_map/unmap_memory() to eliminate __iomem.") looks frankly a bit > > > > > > questionable in its decision to blithely cast away __iomem, but then the > > > > > > rationale in aafc65c731fe ("ACPI: add arm64 to the platforms that use > > > > > > ioremap") seems particularly dubious on top of that (especially > > > > > > given this end result). [...] > > > After picking through the UEFI spec I think I've now got a clearer picture > > > of what's happening, but I'm not sure where it goes from here... > > > > > > The spec implies that it *is* legitimate for runtime-loaded ACPI tables to > > > lie outside the EFI memory map, and that case they must be assumed to be > > > uncached, so the behaviour of acpi_os_ioremap() is correct. > > > > I'd agree with the reasoning, it would be good to pinpoint whether > > that's what actually triggers the issue. > > > > I'd like to replicate it if possible (it is TX2 HW but firmware > > config is likely to differ from the HW I have at hand), the > > test command line that triggers the fault would be useful as > > a starting point. > > > > Furthermore, is this a v5.13-rc* regression ? If so it would be > > good to bisect it - I can't recollect arm64 changes that could > > have introduced this regression in the last cycle but I may have > > missed something. > > The actual change which has brought this to light is the update to arm64's > memcpy() routine for 5.13 - the new version is more aggressive at making > unaligned loads from the source buffer, so now triggers alignment faults > more readily when (wrongly) used on iomem mappings in places that were > getting away with it by chance under the previous implementation (see also > [1], for example). I wouldn't revert any of the memcpy() stuff as it just uncovered an existing bug in how the ACPI tables are handled. Could we actually hit a similar issue with C code parsing the ACPI tables? Is there a way to map the ACPI tables as Normal Noncacheable (ioremap_wc)? Presumably no-one sane would place ACPI tables in memory that's sensitive to the access size. -- Catalin From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE5D3C11F67 for ; Tue, 29 Jun 2021 16:38:08 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9D16A61DC2 for ; Tue, 29 Jun 2021 16:38:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9D16A61DC2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5RZSUhjQQC2XcCa/Y0bPH+oRdIOnKaEQa6JXDfj/NLk=; b=Ay4qqhnPh2VWjz qTaupemu8xA/1ZcdAWmizW4AoofIB1uHt+hk8m1bkLJtqbisQ29lp2VvUAFzYH9bdhc4wLnJmA1Lq 9wjt7Nkgani2qlagRObHb3FNcGvp+IzHPJx8ckV4WhkX1SiqqCHmXTc+VCmCPw2gHz/rpUHUZW4R0 6HtF0cdHYJ2gAAIkIlJ/06VqtsU7ScqOS4zLfFr4RwZ+OnIqMDZeT0yUD+JqwXQywsryjMTvcz09l Gcef4qKEHVc3d162GoLZyLdXZcLqEgGJL7OkISeKtlWtP7+M1coKKVs16H9UAS6r35EN8ZzhW53DV I1XVtHm9RKlBYdVA2b1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lyGiG-00Bcd0-VW; Tue, 29 Jun 2021 16:35:53 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lyGiC-00Bccb-Vi for linux-arm-kernel@lists.infradead.org; Tue, 29 Jun 2021 16:35:50 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id C820F61DC2; Tue, 29 Jun 2021 16:35:45 +0000 (UTC) Date: Tue, 29 Jun 2021 17:35:43 +0100 From: Catalin Marinas To: Robin Murphy Cc: Lorenzo Pieralisi , ACPI Devel Maling List , Veronika Kabatova , Will Deacon , CKI Project , Mark Rutland , Memory Management , skt-results-master@redhat.com, Jeff Bastian , Jan Stancek , Linux ARM , rjw@rjwysocki.net, lenb@kernel.org, guohanjun@huawei.com, sudeep.holla@arm.com, ardb@kernel.org, lv.zheng@intel.com, tony.luck@intel.com Subject: Re: =?utf-8?B?4p2MIEZBSUw=?= =?utf-8?Q?=3A?= Test report for kernel 5.13.0-rc7 (arm-next, 8ab9b1a9) Message-ID: <20210629163543.GA12361@arm.com> References: <20210625083918.GA2736@willie-the-truck> <31ffe8fc-f5ee-2858-26c5-0fd8bdd68702@arm.com> <20210625110944.GB20835@arm.com> <48b23351-3dba-bec8-242f-3c918ae55708@arm.com> <8a28663f-6541-6ff4-3de0-b140e3f8a5b9@arm.com> <20210629144415.GA28457@lpieralisi> <14ca6f72-9b0f-ebd7-9cf8-a5d6190c8e5d@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <14ca6f72-9b0f-ebd7-9cf8-a5d6190c8e5d@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210629_093549_101634_528A2D89 X-CRM114-Status: GOOD ( 40.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBKdW4gMjksIDIwMjEgYXQgMDQ6MTQ6NTVQTSArMDEwMCwgUm9iaW4gTXVycGh5IHdy b3RlOgo+IE9uIDIwMjEtMDYtMjkgMTU6NDQsIExvcmVuem8gUGllcmFsaXNpIHdyb3RlOgo+ID4g T24gVHVlLCBKdW4gMjksIDIwMjEgYXQgMTI6NDg6MTRQTSArMDEwMCwgUm9iaW4gTXVycGh5IHdy b3RlOgo+ID4gPiBbICtBQ1BJIGF1ZGllbmNlIF0KPiA+ID4gCj4gPiA+IE9uIDIwMjEtMDYtMjUg MTI6MTUsIFJvYmluIE11cnBoeSB3cm90ZToKPiA+ID4gPiBPbiAyMDIxLTA2LTI1IDEyOjA5LCBD YXRhbGluIE1hcmluYXMgd3JvdGU6Cj4gPiA+ID4gPiBPbiBGcmksIEp1biAyNSwgMjAyMSBhdCAx MjowMjo1MlBNICswMTAwLCBSb2JpbiBNdXJwaHkgd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIDIwMjEt MDYtMjUgMTA6NTIsIFZlcm9uaWthIEthYmF0b3ZhIHdyb3RlOgo+ID4gPiA+ID4gPiBbLi4uXQo+ ID4gPiA+ID4gPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoCDinYwgc3RyZXNzOiBzdHJlc3MtbmcK PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gT2ggbm8sIHRoaXMgbG9va3MgbGlrZSBh bm90aGVyIGFsaWdubWVudCBmYXVsdCBpbiBtZW1jcHk6Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+IFsxMzMzMC42NTE5MDNdIFVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyBy ZXF1ZXN0IGF0Cj4gPiA+ID4gPiA+ID4gPiB2aXJ0dWFsIGFkZHJlc3MgZmZmZjgwMDA1MzQ3MDVm ZgpbLi4uXQo+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjIxOF0gQ2FsbCB0cmFjZToKPiA+ID4g PiA+ID4gPiA+IFsxMzMzMC42NTIyMjFdwqAgX19tZW1jcHkrMHgxNjgvMHgyNTAKPiA+ID4gPiA+ ID4gPiA+IFsxMzMzMC42NTIyMjVdwqAgYWNwaV9kYXRhX3Nob3crMHg1Yy8weDhjCj4gPiA+ID4g PiA+ID4gPiBbMTMzMzAuNjUyMjMyXcKgIHN5c2ZzX2tmX2Jpbl9yZWFkKzB4NzgvMHhhMAo+ID4g PiA+ID4gPiA+ID4gWzEzMzMwLjY1MjIzOF3CoCBrZXJuZnNfZmlsZV9yZWFkX2l0ZXIrMHg5Yy8w eDFhNAo+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI0MV3CoCBrZXJuZnNfZm9wX3JlYWRfaXRl cisweDM0LzB4NTAKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyNDRdwqAgbmV3X3N5bmNfcmVh ZCsweGRjLzB4MTU0Cj4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMjUzXcKgIHZmc19yZWFkKzB4 MTU4LzB4MWU0Cj4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMjYwXcKgIGtzeXNfcmVhZCsweDY0 LzB4ZWMKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyNjZdwqAgX19hcm02NF9zeXNfcmVhZCsw eDI4LzB4MzQKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyNzNdwqAgaW52b2tlX3N5c2NhbGwr MHg1MC8weDEyMAo+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI4MF3CoCBlbDBfc3ZjX2NvbW1v bi5jb25zdHByb3AuMCsweDRjLzB4ZDQKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyODRdwqAg ZG9fZWwwX3N2YysweDMwLzB4OWMKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyODZdwqAgZWww X3N2YysweDJjLzB4NTQKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyOTRdwqAgZWwwdF82NF9z eW5jX2hhbmRsZXIrMHgxYTQvMHgxYjAKPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIyOTZdwqAg ZWwwdF82NF9zeW5jKzB4MTljLzB4MWEwCj4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMzAzXSBD b2RlOiBhOTg0MzQ2YyBhOWM0MzQyYyBmMTAxMDA0MiA1NGZmZmVlOCAoYTk3YzNjOGUpCj4gPiA+ ID4gPiA+ID4gPiBbMTMzMzAuNjUyMzA3XSAtLS1bIGVuZCB0cmFjZSAyMjdkNDM4MGY1NzE0NWQ0 IF0tLS0KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gU28gbWF5YmUgdGhpcyBpc3N1 ZSBpc24ndCBsaW1pdGVkIHRvIHdlaXJkIG1vZHVsZXMsIGFmdGVyIGFsbC4uLgo+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+IEl0IHJhbiBvbiB0aGUgbWFjaGluZSBmcm9tIHRoZSBzYW1lIHNl dCB0aGF0IHdlIHdlcmUgYWJsZSB0byByZXByb2R1Y2UKPiA+ID4gPiA+ID4gPiBpdCBvbiBwcmV2 aW91c2x5LiBJZiB5b3Ugb3IgYW55b25lIGVsc2UgaGF2ZSBhbiBpZGVhIG9uIGhvdwo+ID4gPiA+ ID4gPiA+IHRvIHN0YWJpbGl6ZSB0aGUgcmVwcm9kdWNpYmlsaXR5IG9yIGhhdmUgYSBkZWJ1ZyBw YXRjaCB3ZSdsbCBiZSBoYXBweSB0byB0cnkgaXQuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBQ b3NzaWJseSBpdCBkZXBlbmRzIG9uIHRoZSBpbmRpdmlkdWFsIG1hY2hpbmVzJyBmaXJtd2FyZSBl eGFjdGx5IGhvdyB0aGUKPiA+ID4gPiA+ID4gcmVsZXZhbnQgYml0cyBvZiB0aGVpciBBQ1BJIHRh YmxlcyBhcmUgYWxpZ25lZCBpbiBtZW1vcnk/Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJJ3Zl IHN0YXJ0ZWQgZGlnZ2luZyBpbnRvIHRoYXQgY2FsbHN0YWNrIC0gaXQgbWF5IG5vdCBiZSBhICJ3 ZWlyZCBtb2R1bGUiCj4gPiA+ID4gPiA+IGJ1dCBpdCdzIGRlZmluaXRlbHkgY3J1c3R5IEFDUEkg Y29kZS4uLiBhMjM4MzE3Y2U4MTggKCJBQ1BJOiBDbGVhbiB1cAo+ID4gPiA+ID4gPiBhY3BpX29z X21hcC91bm1hcF9tZW1vcnkoKSB0byBlbGltaW5hdGUgX19pb21lbS4iKSBsb29rcyBmcmFua2x5 IGEgYml0Cj4gPiA+ID4gPiA+IHF1ZXN0aW9uYWJsZSBpbiBpdHMgZGVjaXNpb24gdG8gYmxpdGhl bHkgY2FzdCBhd2F5IF9faW9tZW0sIGJ1dCB0aGVuIHRoZQo+ID4gPiA+ID4gPiByYXRpb25hbGUg aW4gYWFmYzY1YzczMWZlICgiQUNQSTogYWRkIGFybTY0IHRvIHRoZSBwbGF0Zm9ybXMgdGhhdCB1 c2UKPiA+ID4gPiA+ID4gaW9yZW1hcCIpIHNlZW1zIHBhcnRpY3VsYXJseSBkdWJpb3VzIG9uIHRv cCBvZiB0aGF0IChlc3BlY2lhbGx5Cj4gPiA+ID4gPiA+IGdpdmVuIHRoaXMgZW5kIHJlc3VsdCku ClsuLi5dCj4gPiA+IEFmdGVyIHBpY2tpbmcgdGhyb3VnaCB0aGUgVUVGSSBzcGVjIEkgdGhpbmsg SSd2ZSBub3cgZ290IGEgY2xlYXJlciBwaWN0dXJlCj4gPiA+IG9mIHdoYXQncyBoYXBwZW5pbmcs IGJ1dCBJJ20gbm90IHN1cmUgd2hlcmUgaXQgZ29lcyBmcm9tIGhlcmUuLi4KPiA+ID4gCj4gPiA+ IFRoZSBzcGVjIGltcGxpZXMgdGhhdCBpdCAqaXMqIGxlZ2l0aW1hdGUgZm9yIHJ1bnRpbWUtbG9h ZGVkIEFDUEkgdGFibGVzIHRvCj4gPiA+IGxpZSBvdXRzaWRlIHRoZSBFRkkgbWVtb3J5IG1hcCwg YW5kIHRoYXQgY2FzZSB0aGV5IG11c3QgYmUgYXNzdW1lZCB0byBiZQo+ID4gPiB1bmNhY2hlZCwg c28gdGhlIGJlaGF2aW91ciBvZiBhY3BpX29zX2lvcmVtYXAoKSBpcyBjb3JyZWN0Lgo+ID4gCj4g PiBJJ2QgYWdyZWUgd2l0aCB0aGUgcmVhc29uaW5nLCBpdCB3b3VsZCBiZSBnb29kIHRvIHBpbnBv aW50IHdoZXRoZXIKPiA+IHRoYXQncyB3aGF0IGFjdHVhbGx5IHRyaWdnZXJzIHRoZSBpc3N1ZS4K PiA+IAo+ID4gSSdkIGxpa2UgdG8gcmVwbGljYXRlIGl0IGlmIHBvc3NpYmxlIChpdCBpcyBUWDIg SFcgYnV0IGZpcm13YXJlCj4gPiBjb25maWcgaXMgbGlrZWx5IHRvIGRpZmZlciBmcm9tIHRoZSBI VyBJIGhhdmUgYXQgaGFuZCksIHRoZQo+ID4gdGVzdCBjb21tYW5kIGxpbmUgdGhhdCB0cmlnZ2Vy cyB0aGUgZmF1bHQgd291bGQgYmUgdXNlZnVsIGFzCj4gPiBhIHN0YXJ0aW5nIHBvaW50Lgo+ID4g Cj4gPiBGdXJ0aGVybW9yZSwgaXMgdGhpcyBhIHY1LjEzLXJjKiByZWdyZXNzaW9uID8gSWYgc28g aXQgd291bGQgYmUKPiA+IGdvb2QgdG8gYmlzZWN0IGl0IC0gSSBjYW4ndCByZWNvbGxlY3QgYXJt NjQgY2hhbmdlcyB0aGF0IGNvdWxkCj4gPiBoYXZlIGludHJvZHVjZWQgdGhpcyByZWdyZXNzaW9u IGluIHRoZSBsYXN0IGN5Y2xlIGJ1dCBJIG1heSBoYXZlCj4gPiBtaXNzZWQgc29tZXRoaW5nLgo+ IAo+IFRoZSBhY3R1YWwgY2hhbmdlIHdoaWNoIGhhcyBicm91Z2h0IHRoaXMgdG8gbGlnaHQgaXMg dGhlIHVwZGF0ZSB0byBhcm02NCdzCj4gbWVtY3B5KCkgcm91dGluZSBmb3IgNS4xMyAtIHRoZSBu ZXcgdmVyc2lvbiBpcyBtb3JlIGFnZ3Jlc3NpdmUgYXQgbWFraW5nCj4gdW5hbGlnbmVkIGxvYWRz IGZyb20gdGhlIHNvdXJjZSBidWZmZXIsIHNvIG5vdyB0cmlnZ2VycyBhbGlnbm1lbnQgZmF1bHRz Cj4gbW9yZSByZWFkaWx5IHdoZW4gKHdyb25nbHkpIHVzZWQgb24gaW9tZW0gbWFwcGluZ3MgaW4g cGxhY2VzIHRoYXQgd2VyZQo+IGdldHRpbmcgYXdheSB3aXRoIGl0IGJ5IGNoYW5jZSB1bmRlciB0 aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gKHNlZSBhbHNvCj4gWzFdLCBmb3IgZXhhbXBsZSku CgpJIHdvdWxkbid0IHJldmVydCBhbnkgb2YgdGhlIG1lbWNweSgpIHN0dWZmIGFzIGl0IGp1c3Qg dW5jb3ZlcmVkIGFuCmV4aXN0aW5nIGJ1ZyBpbiBob3cgdGhlIEFDUEkgdGFibGVzIGFyZSBoYW5k bGVkLiBDb3VsZCB3ZSBhY3R1YWxseSBoaXQKYSBzaW1pbGFyIGlzc3VlIHdpdGggQyBjb2RlIHBh cnNpbmcgdGhlIEFDUEkgdGFibGVzPwoKSXMgdGhlcmUgYSB3YXkgdG8gbWFwIHRoZSBBQ1BJIHRh YmxlcyBhcyBOb3JtYWwgTm9uY2FjaGVhYmxlCihpb3JlbWFwX3djKT8gUHJlc3VtYWJseSBuby1v bmUgc2FuZSB3b3VsZCBwbGFjZSBBQ1BJIHRhYmxlcyBpbiBtZW1vcnkKdGhhdCdzIHNlbnNpdGl2 ZSB0byB0aGUgYWNjZXNzIHNpemUuCgotLSAKQ2F0YWxpbgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=