From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B28943FBA9; Wed, 28 Feb 2024 16:26:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709137610; cv=none; b=ccJq6f9D+yLH0pwMh/AIGPYaRu/QJW06klzC5mij8DWEH4u+CmLhgiRTeMA2seQfTDDXse8E5ZctzM8BGepGafhGEEKEXJiVtQjNjRAJsfe8StNT9k87ev6i83LGIuLiiYBNOyitOVO4Nfpc/BjmxyR7loE2SvbX5DZY8Ek+rsQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709137610; c=relaxed/simple; bh=1mSJiKFveQIcxWUIOdkvzQ2W+3D7jbH1bL69Ehdc/yY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=pcdeET4XmV8RAeEUhztc34VBXp25TMImMmbW85NCZXXo1qV8e3QJhy9RB2wL22pek38LT5USdapTRg7cnZpro3F9BycSBqXTzwGzRGVZ45XR3zPZgjNWBGBGbIuoxasDj1WqYPfEwe5rh3w/aI14AMiA+2vRVqBZzy8e/RUBWcA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oVqn6QUE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oVqn6QUE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 155E1C433C7; Wed, 28 Feb 2024 16:26:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709137610; bh=1mSJiKFveQIcxWUIOdkvzQ2W+3D7jbH1bL69Ehdc/yY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=oVqn6QUEeQbM2a4tYvbqKYOaLr8t7uOwvVSd3bqV+lsvDt9tkYSR8xnsdKr+lOCiU CZOf9vQt2KEnN4bveiKcvGMJTXjxm2PhqkAsnz5WypOWq7OwnrpyTX58fEfNwX7J8l eG9bQXiTQ1jwb0FPIjcsrBj+coy8kR3/3ZL5mtHjIuspJ8SlbH949BMqZudWeekl23 1jKX3aYwVPEcGT4aXxac6TXOf2h+HJSnkv4I388UUZPlt+TAiDSx4mPJorTFR+6tKd 3B8oABI8qB8/gfrybDKR/LttigggdNps8lLOUx5kQwegY6B5PBenGShBGh26yMAG/4 dax5em0LZHBrA== Date: Wed, 28 Feb 2024 10:26:47 -0600 From: Rob Herring To: Mark Rutland Cc: Will Deacon , Stephen Boyd , linux-kernel@vger.kernel.org, patches@lists.linux.dev, linux-um@lists.infradead.org, linux-arm-kernel@lists.infradead.org, kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, devicetree@vger.kernel.org, Frank Rowand , Catalin Marinas Subject: Re: [PATCH v4 5/7] arm64: Unconditionally call unflatten_device_tree() Message-ID: <20240228162647.GA4086865-robh@kernel.org> References: <20240217010557.2381548-1-sboyd@kernel.org> <20240217010557.2381548-6-sboyd@kernel.org> <20240223000317.GA3835346-robh@kernel.org> <20240223102345.GA10274@willie-the-truck> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Tue, Feb 27, 2024 at 05:34:58PM +0000, Mark Rutland wrote: > On Fri, Feb 23, 2024 at 11:17:02AM -0700, Rob Herring wrote: > > On Fri, Feb 23, 2024 at 3:23 AM Will Deacon wrote: > > > > > > On Thu, Feb 22, 2024 at 05:03:17PM -0700, Rob Herring wrote: > > > > On Fri, Feb 16, 2024 at 05:05:54PM -0800, Stephen Boyd wrote: > > > > > Call this function unconditionally so that we can populate an empty DTB > > > > > on platforms that don't boot with a firmware provided or builtin DTB. > > > > > When ACPI is in use, unflatten_device_tree() ignores the > > > > > 'initial_boot_params' pointer so the live DT on those systems won't be > > > > > whatever that's pointing to. Similarly, when kexec copies the DT data > > > > > the previous kernel to the new one on ACPI systems, > > > > > of_kexec_alloc_and_setup_fdt() will ignore the live DT (the empty root > > > > > one) and copy the 'initial_boot_params' data. > > > > > > > > > > Cc: Rob Herring > > > > > Cc: Frank Rowand > > > > > Cc: Catalin Marinas > > > > > Cc: Will Deacon > > > > > Cc: Mark Rutland > > > > > Cc: > > > > > Signed-off-by: Stephen Boyd > > > > > --- > > > > > arch/arm64/kernel/setup.c | 3 +-- > > > > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > > > > > Catalin, Will, Can I get an ack on this so I can take the series via the > > > > DT tree. > > > > > > Mark had strong pretty strong objections to this in version one: > > > > Yes, I had concerns with it as well. > > > > > https://lore.kernel.org/all/ZaZtbU9hre3YhZam@FVFF77S0Q05N/ > > > > > > and this patch looks the same now as it did then. Did something else > > > change? > > > > Yes, that version unflattened the bootloader passed DT. Now within > > unflatten_devicetree(), the bootloader DT is ignored if ACPI is > > enabled and we unflatten an empty tree. That will prevent the kernel > > getting 2 h/w descriptions if/when a platform does such a thing. Also, > > kexec still uses the bootloader provided DT as before. > > That avoids the main instance of my concern, and means that this'll boot > without issue, but IIUC this opens the door to dynamically instantiating DT > devices atop an ACPI base system, which I think in general is something that's > liable to cause more problems than it solves. > > I understand that's desireable for the selftests, though I still don't believe > it's strictly necessary -- there are plenty of other things that only work if > the kernel is booted in a specific configuration. Why add to the test matrix if we don't have to? > Putting the selftests aside, why do we need to do this? Is there any other > reason to enable this? See my Plumbers talk... Or in short, there's 3 main usecases: - PCI FPGA card with devices instantiated in it - SoCs which expose their peripherals via a PCI endpoint. - Injecting test devices with QEMU (testing, but not what this series does. Jonathan Cameron's usecase) In all cases, drivers already exist for the devices, and they often only support DT. DT overlays is the natural solution for this, and there's now kernel support for it (dynamically generating PCI DT nodes when they don't exist). The intent is to do the same thing on ACPI systems. I don't see another solution other than 'go away, you're crazy'. There's ACPI overlays, but that's only a debug feature. Also, that would encourage more of the DT bindings in ACPI which I find worse than this mixture. There's swnodes, but that's just board files and platform_data 2.0. I share the concerns with mixing, but I don't see a better solution. The scope of what's possible is contained enough to avoid issues. Rob 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 6F243C5478C for ; Wed, 28 Feb 2024 16:27:07 +0000 (UTC) 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=GsA/LGLjhhdFmx5sZxxX/RomVdrgE52v7NXzRLYWcH4=; b=UVo7ayColXtg4y cZEx7+Ep/jNgfQPUNi8q/1EjfQi3VxIpa39HttIFGNR9GLDgQ6EAbq/IxmGq1ouAnKTj/7l78Wqsb 8s7ypaCMbjkTYxruM6lnQwO90U1WKulpuMpmD1Ljzz0QMrrL6vgHn9h8pB6yvuA/bGG7jSGDSmG0+ YyQtJKwx5/dKMOrLaT4cHMmQ/C6irfmccMWBUgFkpIxkfvhy1xstaYjQBi6iBjVA6DEC7GZ0YI1wK zql6hK8R0UnylMF3+Nmc3f9mRNUH50hLxF+RxnaRm+ZWyjOYqmgYh1ue/MIC7YwIqCt7QTPo9/TAB Zbe69oh8ZM5NuRAcm4Pw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfMll-0000000A7CR-2HUo; Wed, 28 Feb 2024 16:26:57 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfMli-0000000A7B5-0rCx; Wed, 28 Feb 2024 16:26:56 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id F39A7CE2279; Wed, 28 Feb 2024 16:26:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 155E1C433C7; Wed, 28 Feb 2024 16:26:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709137610; bh=1mSJiKFveQIcxWUIOdkvzQ2W+3D7jbH1bL69Ehdc/yY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=oVqn6QUEeQbM2a4tYvbqKYOaLr8t7uOwvVSd3bqV+lsvDt9tkYSR8xnsdKr+lOCiU CZOf9vQt2KEnN4bveiKcvGMJTXjxm2PhqkAsnz5WypOWq7OwnrpyTX58fEfNwX7J8l eG9bQXiTQ1jwb0FPIjcsrBj+coy8kR3/3ZL5mtHjIuspJ8SlbH949BMqZudWeekl23 1jKX3aYwVPEcGT4aXxac6TXOf2h+HJSnkv4I388UUZPlt+TAiDSx4mPJorTFR+6tKd 3B8oABI8qB8/gfrybDKR/LttigggdNps8lLOUx5kQwegY6B5PBenGShBGh26yMAG/4 dax5em0LZHBrA== Date: Wed, 28 Feb 2024 10:26:47 -0600 From: Rob Herring To: Mark Rutland Cc: Will Deacon , Stephen Boyd , linux-kernel@vger.kernel.org, patches@lists.linux.dev, linux-um@lists.infradead.org, linux-arm-kernel@lists.infradead.org, kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, devicetree@vger.kernel.org, Frank Rowand , Catalin Marinas Subject: Re: [PATCH v4 5/7] arm64: Unconditionally call unflatten_device_tree() Message-ID: <20240228162647.GA4086865-robh@kernel.org> References: <20240217010557.2381548-1-sboyd@kernel.org> <20240217010557.2381548-6-sboyd@kernel.org> <20240223000317.GA3835346-robh@kernel.org> <20240223102345.GA10274@willie-the-truck> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240228_082654_732555_6AD8D552 X-CRM114-Status: GOOD ( 33.71 ) 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 T24gVHVlLCBGZWIgMjcsIDIwMjQgYXQgMDU6MzQ6NThQTSArMDAwMCwgTWFyayBSdXRsYW5kIHdy b3RlOgo+IE9uIEZyaSwgRmViIDIzLCAyMDI0IGF0IDExOjE3OjAyQU0gLTA3MDAsIFJvYiBIZXJy aW5nIHdyb3RlOgo+ID4gT24gRnJpLCBGZWIgMjMsIDIwMjQgYXQgMzoyM+KAr0FNIFdpbGwgRGVh Y29uIDx3aWxsQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gPgo+ID4gPiBPbiBUaHUsIEZlYiAyMiwg MjAyNCBhdCAwNTowMzoxN1BNIC0wNzAwLCBSb2IgSGVycmluZyB3cm90ZToKPiA+ID4gPiBPbiBG cmksIEZlYiAxNiwgMjAyNCBhdCAwNTowNTo1NFBNIC0wODAwLCBTdGVwaGVuIEJveWQgd3JvdGU6 Cj4gPiA+ID4gPiBDYWxsIHRoaXMgZnVuY3Rpb24gdW5jb25kaXRpb25hbGx5IHNvIHRoYXQgd2Ug Y2FuIHBvcHVsYXRlIGFuIGVtcHR5IERUQgo+ID4gPiA+ID4gb24gcGxhdGZvcm1zIHRoYXQgZG9u J3QgYm9vdCB3aXRoIGEgZmlybXdhcmUgcHJvdmlkZWQgb3IgYnVpbHRpbiBEVEIuCj4gPiA+ID4g PiBXaGVuIEFDUEkgaXMgaW4gdXNlLCB1bmZsYXR0ZW5fZGV2aWNlX3RyZWUoKSBpZ25vcmVzIHRo ZQo+ID4gPiA+ID4gJ2luaXRpYWxfYm9vdF9wYXJhbXMnIHBvaW50ZXIgc28gdGhlIGxpdmUgRFQg b24gdGhvc2Ugc3lzdGVtcyB3b24ndCBiZQo+ID4gPiA+ID4gd2hhdGV2ZXIgdGhhdCdzIHBvaW50 aW5nIHRvLiBTaW1pbGFybHksIHdoZW4ga2V4ZWMgY29waWVzIHRoZSBEVCBkYXRhCj4gPiA+ID4g PiB0aGUgcHJldmlvdXMga2VybmVsIHRvIHRoZSBuZXcgb25lIG9uIEFDUEkgc3lzdGVtcywKPiA+ ID4gPiA+IG9mX2tleGVjX2FsbG9jX2FuZF9zZXR1cF9mZHQoKSB3aWxsIGlnbm9yZSB0aGUgbGl2 ZSBEVCAodGhlIGVtcHR5IHJvb3QKPiA+ID4gPiA+IG9uZSkgYW5kIGNvcHkgdGhlICdpbml0aWFs X2Jvb3RfcGFyYW1zJyBkYXRhLgo+ID4gPiA+ID4KPiA+ID4gPiA+IENjOiBSb2IgSGVycmluZyA8 cm9iaCtkdEBrZXJuZWwub3JnPgo+ID4gPiA+ID4gQ2M6IEZyYW5rIFJvd2FuZCA8ZnJvd2FuZC5s aXN0QGdtYWlsLmNvbT4KPiA+ID4gPiA+IENjOiBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFy aW5hc0Bhcm0uY29tPgo+ID4gPiA+ID4gQ2M6IFdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+ Cj4gPiA+ID4gPiBDYzogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KPiA+ID4g PiA+IENjOiA8bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnPgo+ID4gPiA+ID4g U2lnbmVkLW9mZi1ieTogU3RlcGhlbiBCb3lkIDxzYm95ZEBrZXJuZWwub3JnPgo+ID4gPiA+ID4g LS0tCj4gPiA+ID4gPiAgYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYyB8IDMgKy0tCj4gPiA+ID4g PiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQo+ID4gPiA+ Cj4gPiA+ID4gQ2F0YWxpbiwgV2lsbCwgQ2FuIEkgZ2V0IGFuIGFjayBvbiB0aGlzIHNvIEkgY2Fu IHRha2UgdGhlIHNlcmllcyB2aWEgdGhlCj4gPiA+ID4gRFQgdHJlZS4KPiA+ID4KPiA+ID4gTWFy ayBoYWQgc3Ryb25nIHByZXR0eSBzdHJvbmcgb2JqZWN0aW9ucyB0byB0aGlzIGluIHZlcnNpb24g b25lOgo+ID4gCj4gPiBZZXMsIEkgaGFkIGNvbmNlcm5zIHdpdGggaXQgYXMgd2VsbC4KPiA+IAo+ ID4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvWmFadGJVOWhyZTNZaFphbUBGVkZGNzdT MFEwNU4vCj4gPiA+Cj4gPiA+IGFuZCB0aGlzIHBhdGNoIGxvb2tzIHRoZSBzYW1lIG5vdyBhcyBp dCBkaWQgdGhlbi4gRGlkIHNvbWV0aGluZyBlbHNlCj4gPiA+IGNoYW5nZT8KPiA+IAo+ID4gWWVz LCB0aGF0IHZlcnNpb24gdW5mbGF0dGVuZWQgdGhlIGJvb3Rsb2FkZXIgcGFzc2VkIERULiBOb3cg d2l0aGluCj4gPiB1bmZsYXR0ZW5fZGV2aWNldHJlZSgpLCB0aGUgYm9vdGxvYWRlciBEVCBpcyBp Z25vcmVkIGlmIEFDUEkgaXMKPiA+IGVuYWJsZWQgYW5kIHdlIHVuZmxhdHRlbiBhbiBlbXB0eSB0 cmVlLiBUaGF0IHdpbGwgcHJldmVudCB0aGUga2VybmVsCj4gPiBnZXR0aW5nIDIgaC93IGRlc2Ny aXB0aW9ucyBpZi93aGVuIGEgcGxhdGZvcm0gZG9lcyBzdWNoIGEgdGhpbmcuIEFsc28sCj4gPiBr ZXhlYyBzdGlsbCB1c2VzIHRoZSBib290bG9hZGVyIHByb3ZpZGVkIERUIGFzIGJlZm9yZS4KPiAK PiBUaGF0IGF2b2lkcyB0aGUgbWFpbiBpbnN0YW5jZSBvZiBteSBjb25jZXJuLCBhbmQgbWVhbnMg dGhhdCB0aGlzJ2xsIGJvb3QKPiB3aXRob3V0IGlzc3VlLCBidXQgSUlVQyB0aGlzIG9wZW5zIHRo ZSBkb29yIHRvIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRpbmcgRFQKPiBkZXZpY2VzIGF0b3AgYW4g QUNQSSBiYXNlIHN5c3RlbSwgd2hpY2ggSSB0aGluayBpbiBnZW5lcmFsIGlzIHNvbWV0aGluZyB0 aGF0J3MKPiBsaWFibGUgdG8gY2F1c2UgbW9yZSBwcm9ibGVtcyB0aGFuIGl0IHNvbHZlcy4KPiAK PiBJIHVuZGVyc3RhbmQgdGhhdCdzIGRlc2lyZWFibGUgZm9yIHRoZSBzZWxmdGVzdHMsIHRob3Vn aCBJIHN0aWxsIGRvbid0IGJlbGlldmUKPiBpdCdzIHN0cmljdGx5IG5lY2Vzc2FyeSAtLSB0aGVy ZSBhcmUgcGxlbnR5IG9mIG90aGVyIHRoaW5ncyB0aGF0IG9ubHkgd29yayBpZgo+IHRoZSBrZXJu ZWwgaXMgYm9vdGVkIGluIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KCldoeSBhZGQgdG8gdGhl IHRlc3QgbWF0cml4IGlmIHdlIGRvbid0IGhhdmUgdG8/Cgo+IFB1dHRpbmcgdGhlIHNlbGZ0ZXN0 cyBhc2lkZSwgd2h5IGRvIHdlIG5lZWQgdG8gZG8gdGhpcz8gSXMgdGhlcmUgYW55IG90aGVyCj4g cmVhc29uIHRvIGVuYWJsZSB0aGlzPwoKU2VlIG15IFBsdW1iZXJzIHRhbGsuLi4KCk9yIGluIHNo b3J0LCB0aGVyZSdzIDMgbWFpbiB1c2VjYXNlczoKCi0gUENJIEZQR0EgY2FyZCB3aXRoIGRldmlj ZXMgaW5zdGFudGlhdGVkIGluIGl0IAotIFNvQ3Mgd2hpY2ggZXhwb3NlIHRoZWlyIHBlcmlwaGVy YWxzIHZpYSBhIFBDSSBlbmRwb2ludC4KLSBJbmplY3RpbmcgdGVzdCBkZXZpY2VzIHdpdGggUUVN VSAodGVzdGluZywgYnV0IG5vdCB3aGF0IHRoaXMgc2VyaWVzIAogIGRvZXMuIEpvbmF0aGFuIENh bWVyb24ncyB1c2VjYXNlKQoKSW4gYWxsIGNhc2VzLCBkcml2ZXJzIGFscmVhZHkgZXhpc3QgZm9y IHRoZSBkZXZpY2VzLCBhbmQgdGhleSBvZnRlbiBvbmx5IApzdXBwb3J0IERULiBEVCBvdmVybGF5 cyBpcyB0aGUgbmF0dXJhbCBzb2x1dGlvbiBmb3IgdGhpcywgYW5kIHRoZXJlJ3MgCm5vdyBrZXJu ZWwgc3VwcG9ydCBmb3IgaXQgKGR5bmFtaWNhbGx5IGdlbmVyYXRpbmcgUENJIERUIG5vZGVzIHdo ZW4gdGhleSAKZG9uJ3QgZXhpc3QpLiBUaGUgaW50ZW50IGlzIHRvIGRvIHRoZSBzYW1lIHRoaW5n IG9uIEFDUEkgc3lzdGVtcy4KCkkgZG9uJ3Qgc2VlIGFub3RoZXIgc29sdXRpb24gb3RoZXIgdGhh biAnZ28gYXdheSwgeW91J3JlIGNyYXp5Jy4gVGhlcmUncyAKQUNQSSBvdmVybGF5cywgYnV0IHRo YXQncyBvbmx5IGEgZGVidWcgZmVhdHVyZS4gQWxzbywgdGhhdCB3b3VsZCAKZW5jb3VyYWdlIG1v cmUgb2YgdGhlIERUIGJpbmRpbmdzIGluIEFDUEkgd2hpY2ggSSBmaW5kIHdvcnNlIHRoYW4gdGhp cyAKbWl4dHVyZS4gVGhlcmUncyBzd25vZGVzLCBidXQgdGhhdCdzIGp1c3QgYm9hcmQgZmlsZXMg YW5kIHBsYXRmb3JtX2RhdGEgCjIuMC4KCkkgc2hhcmUgdGhlIGNvbmNlcm5zIHdpdGggbWl4aW5n LCBidXQgSSBkb24ndCBzZWUgYSBiZXR0ZXIgc29sdXRpb24uIFRoZSAKc2NvcGUgb2Ygd2hhdCdz IHBvc3NpYmxlIGlzIGNvbnRhaW5lZCBlbm91Z2ggdG8gYXZvaWQgaXNzdWVzLgoKUm9iCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==