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 64233C11F65 for ; Wed, 30 Jun 2021 10:37:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 461B56199B for ; Wed, 30 Jun 2021 10:37:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233959AbhF3Kjy (ORCPT ); Wed, 30 Jun 2021 06:39:54 -0400 Received: from foss.arm.com ([217.140.110.172]:35134 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229882AbhF3Kjx (ORCPT ); Wed, 30 Jun 2021 06:39:53 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 00EF611D4; Wed, 30 Jun 2021 03:37:25 -0700 (PDT) Received: from lpieralisi (e121166-lin.cambridge.arm.com [10.1.196.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 208C13F5A1; Wed, 30 Jun 2021 03:37:20 -0700 (PDT) Date: Wed, 30 Jun 2021 11:37:15 +0100 From: Lorenzo Pieralisi To: Catalin Marinas Cc: Robin Murphy , 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: <20210630103715.GA12089@lpieralisi> 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> <20210629163543.GA12361@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210629163543.GA12361@arm.com> User-Agent: Mutt/1.9.4 (2018-02-28) Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org On Tue, Jun 29, 2021 at 05:35:43PM +0100, Catalin Marinas wrote: > 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? I agree - I don't think a revert should be considered, this looks like a long standing ACPI bug. This needs debugging but I believe that it all depends on the table being in the EFI map or not. I'd help a lot if I managed to reproduce the bug for a given set-up so that we can check which table is causing it. > Is there a way to map the ACPI tables as Normal Noncacheable > (ioremap_wc)? That's a good point. IIUC UEFI 2.9 (2.3.6) requires tables loaded at runtime (see above - I really would like to understand what table is triggering this bug) that are not in the EFI memory map and whose attributes cannot be retrieved through ACPI descriptors to be considered non-cacheable. The question is whether [arm64] acpi_os_ioremap() can be changed so that the above is mapped to Normal NC rather than device-nGnRnE; this may cause surprises the other way around (given that dev-nGnRnE is an all encompassing fallback - again IIUC, I believe Ard knows better than me if he has time to chime in). We need a reproducer and some tracing in the ACPI code. Lorenzo >Presumably no-one sane would place ACPI tables in memory that's >sensitive to the access size. 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,URIBL_BLOCKED,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 9A3C6C11F69 for ; Wed, 30 Jun 2021 10:39:16 +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 5E4B761A2B for ; Wed, 30 Jun 2021 10:39:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5E4B761A2B 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=C4zJhqRay1bMBM5kvbp8NC4p3dH8RX59v8kkfCHqdbk=; b=cveB5LUbOyc/yM 71wbvHu977NtNoIWFtpfQ6iBz6Mq7i4wkCzoIB+TSK9NJGrFfuMR+8Qz2aydADNlwj1pFi5fEOpnX u3LkEfBslk7NEy/zqwQKDcWuqRbFwjL4MJsthlngt9d17fGhSmPh0J+1EsVmKyJWjIFuxGBaS+tEc OqoEohw8/kiX4AidIMXVzTE2YQc9x3EdXRy/cMcvoX244U0iWDmMGHqkaWk+735sLQJ9PEYCIyEqg 7Zs13r3wjo600sqjSSvPT+Ip0Fz+qFPx1RqM+NR9xNzfv/KLu+21c5KnRwKGmcezIDB4CfMeb50ip mm4hgKqXQKdqrfEJfmWQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lyXb2-00DdBl-DK; Wed, 30 Jun 2021 10:37:32 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lyXay-00DdAT-Dw for linux-arm-kernel@lists.infradead.org; Wed, 30 Jun 2021 10:37:30 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 00EF611D4; Wed, 30 Jun 2021 03:37:25 -0700 (PDT) Received: from lpieralisi (e121166-lin.cambridge.arm.com [10.1.196.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 208C13F5A1; Wed, 30 Jun 2021 03:37:20 -0700 (PDT) Date: Wed, 30 Jun 2021 11:37:15 +0100 From: Lorenzo Pieralisi To: Catalin Marinas Cc: Robin Murphy , 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: <20210630103715.GA12089@lpieralisi> 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> <20210629163543.GA12361@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210629163543.GA12361@arm.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210630_033728_610014_4DCCE20D X-CRM114-Status: GOOD ( 46.94 ) 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 T24gVHVlLCBKdW4gMjksIDIwMjEgYXQgMDU6MzU6NDNQTSArMDEwMCwgQ2F0YWxpbiBNYXJpbmFz IHdyb3RlOgo+IE9uIFR1ZSwgSnVuIDI5LCAyMDIxIGF0IDA0OjE0OjU1UE0gKzAxMDAsIFJvYmlu IE11cnBoeSB3cm90ZToKPiA+IE9uIDIwMjEtMDYtMjkgMTU6NDQsIExvcmVuem8gUGllcmFsaXNp IHdyb3RlOgo+ID4gPiBPbiBUdWUsIEp1biAyOSwgMjAyMSBhdCAxMjo0ODoxNFBNICswMTAwLCBS b2JpbiBNdXJwaHkgd3JvdGU6Cj4gPiA+ID4gWyArQUNQSSBhdWRpZW5jZSBdCj4gPiA+ID4gCj4g PiA+ID4gT24gMjAyMS0wNi0yNSAxMjoxNSwgUm9iaW4gTXVycGh5IHdyb3RlOgo+ID4gPiA+ID4g T24gMjAyMS0wNi0yNSAxMjowOSwgQ2F0YWxpbiBNYXJpbmFzIHdyb3RlOgo+ID4gPiA+ID4gPiBP biBGcmksIEp1biAyNSwgMjAyMSBhdCAxMjowMjo1MlBNICswMTAwLCBSb2JpbiBNdXJwaHkgd3Jv dGU6Cj4gPiA+ID4gPiA+ID4gT24gMjAyMS0wNi0yNSAxMDo1MiwgVmVyb25pa2EgS2FiYXRvdmEg d3JvdGU6Cj4gPiA+ID4gPiA+ID4gWy4uLl0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgwqDCoMKgwqDC oMKgwqDCoCDinYwgc3RyZXNzOiBzdHJlc3MtbmcKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gPiA+IE9oIG5vLCB0aGlzIGxvb2tzIGxpa2UgYW5vdGhlciBhbGlnbm1lbnQgZmF1bHQg aW4gbWVtY3B5Ogo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1 MTkwM10gVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQKPiA+ID4gPiA+ ID4gPiA+ID4gdmlydHVhbCBhZGRyZXNzIGZmZmY4MDAwNTM0NzA1ZmYKPiBbLi4uXQo+ID4gPiA+ ID4gPiA+ID4gPiBbMTMzMzAuNjUyMjE4XSBDYWxsIHRyYWNlOgo+ID4gPiA+ID4gPiA+ID4gPiBb MTMzMzAuNjUyMjIxXcKgIF9fbWVtY3B5KzB4MTY4LzB4MjUwCj4gPiA+ID4gPiA+ID4gPiA+IFsx MzMzMC42NTIyMjVdwqAgYWNwaV9kYXRhX3Nob3crMHg1Yy8weDhjCj4gPiA+ID4gPiA+ID4gPiA+ IFsxMzMzMC42NTIyMzJdwqAgc3lzZnNfa2ZfYmluX3JlYWQrMHg3OC8weGEwCj4gPiA+ID4gPiA+ ID4gPiA+IFsxMzMzMC42NTIyMzhdwqAga2VybmZzX2ZpbGVfcmVhZF9pdGVyKzB4OWMvMHgxYTQK PiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI0MV3CoCBrZXJuZnNfZm9wX3JlYWRfaXRlcisw eDM0LzB4NTAKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI0NF3CoCBuZXdfc3luY19yZWFk KzB4ZGMvMHgxNTQKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI1M13CoCB2ZnNfcmVhZCsw eDE1OC8weDFlNAo+ID4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMjYwXcKgIGtzeXNfcmVhZCsw eDY0LzB4ZWMKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI2Nl3CoCBfX2FybTY0X3N5c19y ZWFkKzB4MjgvMHgzNAo+ID4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMjczXcKgIGludm9rZV9z eXNjYWxsKzB4NTAvMHgxMjAKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMwLjY1MjI4MF3CoCBlbDBf c3ZjX2NvbW1vbi5jb25zdHByb3AuMCsweDRjLzB4ZDQKPiA+ID4gPiA+ID4gPiA+ID4gWzEzMzMw LjY1MjI4NF3CoCBkb19lbDBfc3ZjKzB4MzAvMHg5Ywo+ID4gPiA+ID4gPiA+ID4gPiBbMTMzMzAu NjUyMjg2XcKgIGVsMF9zdmMrMHgyYy8weDU0Cj4gPiA+ID4gPiA+ID4gPiA+IFsxMzMzMC42NTIy OTRdwqAgZWwwdF82NF9zeW5jX2hhbmRsZXIrMHgxYTQvMHgxYjAKPiA+ID4gPiA+ID4gPiA+ID4g WzEzMzMwLjY1MjI5Nl3CoCBlbDB0XzY0X3N5bmMrMHgxOWMvMHgxYTAKPiA+ID4gPiA+ID4gPiA+ ID4gWzEzMzMwLjY1MjMwM10gQ29kZTogYTk4NDM0NmMgYTljNDM0MmMgZjEwMTAwNDIgNTRmZmZl ZTggKGE5N2MzYzhlKQo+ID4gPiA+ID4gPiA+ID4gPiBbMTMzMzAuNjUyMzA3XSAtLS1bIGVuZCB0 cmFjZSAyMjdkNDM4MGY1NzE0NWQ0IF0tLS0KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+IFNvIG1heWJlIHRoaXMgaXNzdWUgaXNuJ3QgbGltaXRlZCB0byB3ZWlyZCBtb2R1bGVz LCBhZnRlciBhbGwuLi4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gSXQgcmFuIG9u IHRoZSBtYWNoaW5lIGZyb20gdGhlIHNhbWUgc2V0IHRoYXQgd2Ugd2VyZSBhYmxlIHRvIHJlcHJv ZHVjZQo+ID4gPiA+ID4gPiA+ID4gaXQgb24gcHJldmlvdXNseS4gSWYgeW91IG9yIGFueW9uZSBl bHNlIGhhdmUgYW4gaWRlYSBvbiBob3cKPiA+ID4gPiA+ID4gPiA+IHRvIHN0YWJpbGl6ZSB0aGUg cmVwcm9kdWNpYmlsaXR5IG9yIGhhdmUgYSBkZWJ1ZyBwYXRjaCB3ZSdsbCBiZSBoYXBweSB0byB0 cnkgaXQuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gUG9zc2libHkgaXQgZGVwZW5kcyBv biB0aGUgaW5kaXZpZHVhbCBtYWNoaW5lcycgZmlybXdhcmUgZXhhY3RseSBob3cgdGhlCj4gPiA+ ID4gPiA+ID4gcmVsZXZhbnQgYml0cyBvZiB0aGVpciBBQ1BJIHRhYmxlcyBhcmUgYWxpZ25lZCBp biBtZW1vcnk/Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gSSd2ZSBzdGFydGVkIGRpZ2dp bmcgaW50byB0aGF0IGNhbGxzdGFjayAtIGl0IG1heSBub3QgYmUgYSAid2VpcmQgbW9kdWxlIgo+ ID4gPiA+ID4gPiA+IGJ1dCBpdCdzIGRlZmluaXRlbHkgY3J1c3R5IEFDUEkgY29kZS4uLiBhMjM4 MzE3Y2U4MTggKCJBQ1BJOiBDbGVhbiB1cAo+ID4gPiA+ID4gPiA+IGFjcGlfb3NfbWFwL3VubWFw X21lbW9yeSgpIHRvIGVsaW1pbmF0ZSBfX2lvbWVtLiIpIGxvb2tzIGZyYW5rbHkgYSBiaXQKPiA+ ID4gPiA+ID4gPiBxdWVzdGlvbmFibGUgaW4gaXRzIGRlY2lzaW9uIHRvIGJsaXRoZWx5IGNhc3Qg YXdheSBfX2lvbWVtLCBidXQgdGhlbiB0aGUKPiA+ID4gPiA+ID4gPiByYXRpb25hbGUgaW4gYWFm YzY1YzczMWZlICgiQUNQSTogYWRkIGFybTY0IHRvIHRoZSBwbGF0Zm9ybXMgdGhhdCB1c2UKPiA+ ID4gPiA+ID4gPiBpb3JlbWFwIikgc2VlbXMgcGFydGljdWxhcmx5IGR1YmlvdXMgb24gdG9wIG9m IHRoYXQgKGVzcGVjaWFsbHkKPiA+ID4gPiA+ID4gPiBnaXZlbiB0aGlzIGVuZCByZXN1bHQpLgo+ IFsuLi5dCj4gPiA+ID4gQWZ0ZXIgcGlja2luZyB0aHJvdWdoIHRoZSBVRUZJIHNwZWMgSSB0aGlu ayBJJ3ZlIG5vdyBnb3QgYSBjbGVhcmVyIHBpY3R1cmUKPiA+ID4gPiBvZiB3aGF0J3MgaGFwcGVu aW5nLCBidXQgSSdtIG5vdCBzdXJlIHdoZXJlIGl0IGdvZXMgZnJvbSBoZXJlLi4uCj4gPiA+ID4g Cj4gPiA+ID4gVGhlIHNwZWMgaW1wbGllcyB0aGF0IGl0ICppcyogbGVnaXRpbWF0ZSBmb3IgcnVu dGltZS1sb2FkZWQgQUNQSSB0YWJsZXMgdG8KPiA+ID4gPiBsaWUgb3V0c2lkZSB0aGUgRUZJIG1l bW9yeSBtYXAsIGFuZCB0aGF0IGNhc2UgdGhleSBtdXN0IGJlIGFzc3VtZWQgdG8gYmUKPiA+ID4g PiB1bmNhY2hlZCwgc28gdGhlIGJlaGF2aW91ciBvZiBhY3BpX29zX2lvcmVtYXAoKSBpcyBjb3Jy ZWN0Lgo+ID4gPiAKPiA+ID4gSSdkIGFncmVlIHdpdGggdGhlIHJlYXNvbmluZywgaXQgd291bGQg YmUgZ29vZCB0byBwaW5wb2ludCB3aGV0aGVyCj4gPiA+IHRoYXQncyB3aGF0IGFjdHVhbGx5IHRy aWdnZXJzIHRoZSBpc3N1ZS4KPiA+ID4gCj4gPiA+IEknZCBsaWtlIHRvIHJlcGxpY2F0ZSBpdCBp ZiBwb3NzaWJsZSAoaXQgaXMgVFgyIEhXIGJ1dCBmaXJtd2FyZQo+ID4gPiBjb25maWcgaXMgbGlr ZWx5IHRvIGRpZmZlciBmcm9tIHRoZSBIVyBJIGhhdmUgYXQgaGFuZCksIHRoZQo+ID4gPiB0ZXN0 IGNvbW1hbmQgbGluZSB0aGF0IHRyaWdnZXJzIHRoZSBmYXVsdCB3b3VsZCBiZSB1c2VmdWwgYXMK PiA+ID4gYSBzdGFydGluZyBwb2ludC4KPiA+ID4gCj4gPiA+IEZ1cnRoZXJtb3JlLCBpcyB0aGlz IGEgdjUuMTMtcmMqIHJlZ3Jlc3Npb24gPyBJZiBzbyBpdCB3b3VsZCBiZQo+ID4gPiBnb29kIHRv IGJpc2VjdCBpdCAtIEkgY2FuJ3QgcmVjb2xsZWN0IGFybTY0IGNoYW5nZXMgdGhhdCBjb3VsZAo+ ID4gPiBoYXZlIGludHJvZHVjZWQgdGhpcyByZWdyZXNzaW9uIGluIHRoZSBsYXN0IGN5Y2xlIGJ1 dCBJIG1heSBoYXZlCj4gPiA+IG1pc3NlZCBzb21ldGhpbmcuCj4gPiAKPiA+IFRoZSBhY3R1YWwg Y2hhbmdlIHdoaWNoIGhhcyBicm91Z2h0IHRoaXMgdG8gbGlnaHQgaXMgdGhlIHVwZGF0ZSB0byBh cm02NCdzCj4gPiBtZW1jcHkoKSByb3V0aW5lIGZvciA1LjEzIC0gdGhlIG5ldyB2ZXJzaW9uIGlz IG1vcmUgYWdncmVzc2l2ZSBhdCBtYWtpbmcKPiA+IHVuYWxpZ25lZCBsb2FkcyBmcm9tIHRoZSBz b3VyY2UgYnVmZmVyLCBzbyBub3cgdHJpZ2dlcnMgYWxpZ25tZW50IGZhdWx0cwo+ID4gbW9yZSBy ZWFkaWx5IHdoZW4gKHdyb25nbHkpIHVzZWQgb24gaW9tZW0gbWFwcGluZ3MgaW4gcGxhY2VzIHRo YXQgd2VyZQo+ID4gZ2V0dGluZyBhd2F5IHdpdGggaXQgYnkgY2hhbmNlIHVuZGVyIHRoZSBwcmV2 aW91cyBpbXBsZW1lbnRhdGlvbiAoc2VlIGFsc28KPiA+IFsxXSwgZm9yIGV4YW1wbGUpLgo+IAo+ IEkgd291bGRuJ3QgcmV2ZXJ0IGFueSBvZiB0aGUgbWVtY3B5KCkgc3R1ZmYgYXMgaXQganVzdCB1 bmNvdmVyZWQgYW4KPiBleGlzdGluZyBidWcgaW4gaG93IHRoZSBBQ1BJIHRhYmxlcyBhcmUgaGFu ZGxlZC4gQ291bGQgd2UgYWN0dWFsbHkgaGl0Cj4gYSBzaW1pbGFyIGlzc3VlIHdpdGggQyBjb2Rl IHBhcnNpbmcgdGhlIEFDUEkgdGFibGVzPwoKSSBhZ3JlZSAtIEkgZG9uJ3QgdGhpbmsgYSByZXZl cnQgc2hvdWxkIGJlIGNvbnNpZGVyZWQsIHRoaXMgbG9va3MgbGlrZQphIGxvbmcgc3RhbmRpbmcg QUNQSSBidWcuCgpUaGlzIG5lZWRzIGRlYnVnZ2luZyBidXQgSSBiZWxpZXZlIHRoYXQgaXQgYWxs IGRlcGVuZHMgb24gdGhlIHRhYmxlCmJlaW5nIGluIHRoZSBFRkkgbWFwIG9yIG5vdC4gSSdkIGhl bHAgYSBsb3QgaWYgSSBtYW5hZ2VkIHRvIHJlcHJvZHVjZQp0aGUgYnVnIGZvciBhIGdpdmVuIHNl dC11cCBzbyB0aGF0IHdlIGNhbiBjaGVjayB3aGljaCB0YWJsZSBpcyBjYXVzaW5nCml0LgoKPiBJ cyB0aGVyZSBhIHdheSB0byBtYXAgdGhlIEFDUEkgdGFibGVzIGFzIE5vcm1hbCBOb25jYWNoZWFi bGUKPiAoaW9yZW1hcF93Yyk/CgpUaGF0J3MgYSBnb29kIHBvaW50LiBJSVVDIFVFRkkgMi45ICgy LjMuNikgcmVxdWlyZXMgdGFibGVzIGxvYWRlZCBhdApydW50aW1lIChzZWUgYWJvdmUgLSBJIHJl YWxseSB3b3VsZCBsaWtlIHRvIHVuZGVyc3RhbmQgd2hhdCB0YWJsZQppcyB0cmlnZ2VyaW5nIHRo aXMgYnVnKSB0aGF0IGFyZSBub3QgaW4gdGhlIEVGSSBtZW1vcnkgbWFwIGFuZCB3aG9zZQphdHRy aWJ1dGVzIGNhbm5vdCBiZSByZXRyaWV2ZWQgdGhyb3VnaCBBQ1BJIGRlc2NyaXB0b3JzIHRvIGJl IGNvbnNpZGVyZWQKbm9uLWNhY2hlYWJsZS4KClRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIFthcm02 NF0gYWNwaV9vc19pb3JlbWFwKCkgY2FuIGJlIGNoYW5nZWQgc28gdGhhdAp0aGUgYWJvdmUgaXMg bWFwcGVkIHRvIE5vcm1hbCBOQyByYXRoZXIgdGhhbiBkZXZpY2UtbkduUm5FOyB0aGlzIG1heQpj YXVzZSBzdXJwcmlzZXMgdGhlIG90aGVyIHdheSBhcm91bmQgKGdpdmVuIHRoYXQgZGV2LW5HblJu RSBpcyBhbgphbGwgZW5jb21wYXNzaW5nIGZhbGxiYWNrIC0gYWdhaW4gSUlVQywgSSBiZWxpZXZl IEFyZCBrbm93cyBiZXR0ZXIKdGhhbiBtZSBpZiBoZSBoYXMgdGltZSB0byBjaGltZSBpbikuCgpX ZSBuZWVkIGEgcmVwcm9kdWNlciBhbmQgc29tZSB0cmFjaW5nIGluIHRoZSBBQ1BJIGNvZGUuCgpM b3JlbnpvCgo+UHJlc3VtYWJseSBuby1vbmUgc2FuZSB3b3VsZCBwbGFjZSBBQ1BJIHRhYmxlcyBp biBtZW1vcnkgdGhhdCdzCj5zZW5zaXRpdmUgdG8gdGhlIGFjY2VzcyBzaXplLgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=