From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0F73639FEC for ; Wed, 13 Dec 2023 17:44:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com 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 4703EC15; Wed, 13 Dec 2023 09:45:39 -0800 (PST) Received: from raptor (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 37DBF3F762; Wed, 13 Dec 2023 09:44:48 -0800 (PST) Date: Wed, 13 Dec 2023 17:44:37 +0000 From: Alexandru Elisei To: Rob Herring Cc: catalin.marinas@arm.com, will@kernel.org, oliver.upton@linux.dev, maz@kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, arnd@arndb.de, akpm@linux-foundation.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, mhiramat@kernel.org, rppt@kernel.org, hughd@google.com, pcc@google.com, steven.price@arm.com, anshuman.khandual@arm.com, vincenzo.frascino@arm.com, david@redhat.com, eugenis@google.com, kcc@google.com, hyesoo.yu@samsung.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Subject: Re: [PATCH RFC v2 11/27] arm64: mte: Reserve tag storage memory Message-ID: References: <20231119165721.9849-1-alexandru.elisei@arm.com> <20231119165721.9849-12-alexandru.elisei@arm.com> Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev 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 Wed, Dec 13, 2023 at 11:22:17AM -0600, Rob Herring wrote: > On Wed, Dec 13, 2023 at 8:51 AM Alexandru Elisei > wrote: > > > > Hi, > > > > On Wed, Dec 13, 2023 at 08:06:44AM -0600, Rob Herring wrote: > > > On Wed, Dec 13, 2023 at 7:05 AM Alexandru Elisei > > > wrote: > > > > > > > > Hi Rob, > > > > > > > > On Tue, Dec 12, 2023 at 12:44:06PM -0600, Rob Herring wrote: > > > > > On Tue, Dec 12, 2023 at 10:38 AM Alexandru Elisei > > > > > wrote: > > > > > > > > > > > > Hi Rob, > > > > > > > > > > > > Thank you so much for the feedback, I'm not very familiar with device tree, > > > > > > and any comments are very useful. > > > > > > > > > > > > On Mon, Dec 11, 2023 at 11:29:40AM -0600, Rob Herring wrote: > > > > > > > On Sun, Nov 19, 2023 at 10:59 AM Alexandru Elisei > > > > > > > wrote: > > > > > > > > > > > > > > > > Allow the kernel to get the size and location of the MTE tag storage > > > > > > > > regions from the DTB. This memory is marked as reserved for now. > > > > > > > > > > > > > > > > The DTB node for the tag storage region is defined as: > > > > > > > > > > > > > > > > tags0: tag-storage@8f8000000 { > > > > > > > > compatible = "arm,mte-tag-storage"; > > > > > > > > reg = <0x08 0xf8000000 0x00 0x4000000>; > > > > > > > > block-size = <0x1000>; > > > > > > > > memory = <&memory0>; // Associated tagged memory node > > > > > > > > }; > > > > > > > > > > > > > > I skimmed thru the discussion some. If this memory range is within > > > > > > > main RAM, then it definitely belongs in /reserved-memory. > > > > > > > > > > > > Ok, will do that. > > > > > > > > > > > > If you don't mind, why do you say that it definitely belongs in > > > > > > reserved-memory? I'm not trying to argue otherwise, I'm curious about the > > > > > > motivation. > > > > > > > > > > Simply so that /memory nodes describe all possible memory and > > > > > /reserved-memory is just adding restrictions. It's also because > > > > > /reserved-memory is what gets handled early, and we don't need > > > > > multiple things to handle early. > > > > > > > > > > > Tag storage is not DMA and can live anywhere in memory. > > > > > > > > > > Then why put it in DT at all? The only reason CMA is there is to set > > > > > the size. It's not even clear to me we need CMA in DT either. The > > > > > reasoning long ago was the kernel didn't do a good job of moving and > > > > > reclaiming contiguous space, but that's supposed to be better now (and > > > > > most h/w figured out they need IOMMUs). > > > > > > > > > > But for tag storage you know the size as it is a function of the > > > > > memory size, right? After all, you are validating the size is correct. > > > > > I guess there is still the aspect of whether you want enable MTE or > > > > > not which could be done in a variety of ways. > > > > > > > > Oh, sorry, my bad, I should have been clearer about this. I don't want to > > > > put it in the DT as a "linux,cma" node. But I want it to be managed by CMA. > > > > > > Yes, I understand, but my point remains. Why do you need this in DT? > > > If the location doesn't matter and you can calculate the size from the > > > memory size, what else is there to add to the DT? > > > > I am afraid there has been a misunderstanding. What do you mean by > > "location doesn't matter"? > > You said: > > Tag storage is not DMA and can live anywhere in memory. > > Which I took as the kernel can figure out where to put it. But maybe > you meant the h/w platform can hard code it to be anywhere in memory? > If so, then yes, DT is needed. Ah, I see, sorry for not being clear enough, you are correct: tag storage is a hardware property, and software needs a mechanism (in this case, the dt) to discover its properties. > > > At the very least, Linux needs to know the address and size of a memory > > region to use it. The series is about using the tag storage memory for > > data. Tag storage cannot be described as a regular memory node because it > > cannot be tagged (and normal memory can). > > If the tag storage lives in the middle of memory, then it would be > described in the memory node, but removed by being in reserved-memory > node. I don't follow. Would you mind going into more details? > > > Then there's the matter of the tag storage block size (explained in this > > commit message), and also knowing the memory range for which a tag storage > > region stores the tags. This is explained in the cover letter. > > Honestly, I just forgot about that part. I totally understand, there are a lot of things to consider at the same time. Thanks, Alex 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 E88CFC4167B for ; Wed, 13 Dec 2023 17:45:24 +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=X5lRiLDuRExc4V8CfpR2HKLEcuED8Y/OOMGc1QZ4oko=; b=z6TJNq7H8LT43B +udmSfDoQB0wQCNo6tb4D5Y82Nn1vspvS74smG/UZUcjh5jf9aEsUmuL327jEeLQHvoqYG7KSePPt tyiwWKAW3D6d1OOiL8vQpfk6PpePslIU/vVVF/9Omm66Ke8pX9bgcw+xZwMYOw9X8y8LO8wo24ru4 s177EsvEMmW8+huLCpmDQycBl5vywsWyz1C+Z6zKBHP/jcC9vz19hZaj+RapUwPeBBAap1NIdNdTN UO8YLk5Nc8Ps5Jd/QTVOleMfTu8Ct14RdgD0QfASlqe5OHBIj/7ftMaySqnSeENwd+w2cK1llSQjX eEALB0RD/2rHeOA/EDAQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rDTI4-00FeCa-1T; Wed, 13 Dec 2023 17:45:00 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rDTI1-00FeAR-23 for linux-arm-kernel@lists.infradead.org; Wed, 13 Dec 2023 17:44:59 +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 4703EC15; Wed, 13 Dec 2023 09:45:39 -0800 (PST) Received: from raptor (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 37DBF3F762; Wed, 13 Dec 2023 09:44:48 -0800 (PST) Date: Wed, 13 Dec 2023 17:44:37 +0000 From: Alexandru Elisei To: Rob Herring Cc: catalin.marinas@arm.com, will@kernel.org, oliver.upton@linux.dev, maz@kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, arnd@arndb.de, akpm@linux-foundation.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, mhiramat@kernel.org, rppt@kernel.org, hughd@google.com, pcc@google.com, steven.price@arm.com, anshuman.khandual@arm.com, vincenzo.frascino@arm.com, david@redhat.com, eugenis@google.com, kcc@google.com, hyesoo.yu@samsung.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Subject: Re: [PATCH RFC v2 11/27] arm64: mte: Reserve tag storage memory Message-ID: References: <20231119165721.9849-1-alexandru.elisei@arm.com> <20231119165721.9849-12-alexandru.elisei@arm.com> 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-20231213_094457_766021_9D955C4A X-CRM114-Status: GOOD ( 45.46 ) 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 T24gV2VkLCBEZWMgMTMsIDIwMjMgYXQgMTE6MjI6MTdBTSAtMDYwMCwgUm9iIEhlcnJpbmcgd3Jv dGU6Cj4gT24gV2VkLCBEZWMgMTMsIDIwMjMgYXQgODo1MeKAr0FNIEFsZXhhbmRydSBFbGlzZWkK PiA8YWxleGFuZHJ1LmVsaXNlaUBhcm0uY29tPiB3cm90ZToKPiA+Cj4gPiBIaSwKPiA+Cj4gPiBP biBXZWQsIERlYyAxMywgMjAyMyBhdCAwODowNjo0NEFNIC0wNjAwLCBSb2IgSGVycmluZyB3cm90 ZToKPiA+ID4gT24gV2VkLCBEZWMgMTMsIDIwMjMgYXQgNzowNeKAr0FNIEFsZXhhbmRydSBFbGlz ZWkKPiA+ID4gPGFsZXhhbmRydS5lbGlzZWlAYXJtLmNvbT4gd3JvdGU6Cj4gPiA+ID4KPiA+ID4g PiBIaSBSb2IsCj4gPiA+ID4KPiA+ID4gPiBPbiBUdWUsIERlYyAxMiwgMjAyMyBhdCAxMjo0NDow NlBNIC0wNjAwLCBSb2IgSGVycmluZyB3cm90ZToKPiA+ID4gPiA+IE9uIFR1ZSwgRGVjIDEyLCAy MDIzIGF0IDEwOjM44oCvQU0gQWxleGFuZHJ1IEVsaXNlaQo+ID4gPiA+ID4gPGFsZXhhbmRydS5l bGlzZWlAYXJtLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEhpIFJvYiwKPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gVGhhbmsgeW91IHNvIG11Y2ggZm9yIHRoZSBmZWVkYmFjaywg SSdtIG5vdCB2ZXJ5IGZhbWlsaWFyIHdpdGggZGV2aWNlIHRyZWUsCj4gPiA+ID4gPiA+IGFuZCBh bnkgY29tbWVudHMgYXJlIHZlcnkgdXNlZnVsLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBN b24sIERlYyAxMSwgMjAyMyBhdCAxMToyOTo0MEFNIC0wNjAwLCBSb2IgSGVycmluZyB3cm90ZToK PiA+ID4gPiA+ID4gPiBPbiBTdW4sIE5vdiAxOSwgMjAyMyBhdCAxMDo1OeKAr0FNIEFsZXhhbmRy dSBFbGlzZWkKPiA+ID4gPiA+ID4gPiA8YWxleGFuZHJ1LmVsaXNlaUBhcm0uY29tPiB3cm90ZToK PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBBbGxvdyB0aGUga2VybmVsIHRvIGdldCB0 aGUgc2l6ZSBhbmQgbG9jYXRpb24gb2YgdGhlIE1URSB0YWcgc3RvcmFnZQo+ID4gPiA+ID4gPiA+ ID4gcmVnaW9ucyBmcm9tIHRoZSBEVEIuIFRoaXMgbWVtb3J5IGlzIG1hcmtlZCBhcyByZXNlcnZl ZCBmb3Igbm93Lgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFRoZSBEVEIgbm9kZSBm b3IgdGhlIHRhZyBzdG9yYWdlIHJlZ2lvbiBpcyBkZWZpbmVkIGFzOgo+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgdGFnczA6IHRhZy1zdG9yYWdlQDhmODAwMDAwMCB7Cj4g PiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sbXRlLXRhZy1z dG9yYWdlIjsKPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICByZWcgPSA8MHgwOCAweGY4 MDAwMDAwIDB4MDAgMHg0MDAwMDAwPjsKPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBi bG9jay1zaXplID0gPDB4MTAwMD47Cj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgbWVt b3J5ID0gPCZtZW1vcnkwPjsgICAgLy8gQXNzb2NpYXRlZCB0YWdnZWQgbWVtb3J5IG5vZGUKPiA+ ID4gPiA+ID4gPiA+ICAgICAgICAgfTsKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEkgc2tp bW1lZCB0aHJ1IHRoZSBkaXNjdXNzaW9uIHNvbWUuIElmIHRoaXMgbWVtb3J5IHJhbmdlIGlzIHdp dGhpbgo+ID4gPiA+ID4gPiA+IG1haW4gUkFNLCB0aGVuIGl0IGRlZmluaXRlbHkgYmVsb25ncyBp biAvcmVzZXJ2ZWQtbWVtb3J5Lgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPaywgd2lsbCBkbyB0 aGF0Lgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBJZiB5b3UgZG9uJ3QgbWluZCwgd2h5IGRvIHlv dSBzYXkgdGhhdCBpdCBkZWZpbml0ZWx5IGJlbG9uZ3MgaW4KPiA+ID4gPiA+ID4gcmVzZXJ2ZWQt bWVtb3J5PyBJJ20gbm90IHRyeWluZyB0byBhcmd1ZSBvdGhlcndpc2UsIEknbSBjdXJpb3VzIGFi b3V0IHRoZQo+ID4gPiA+ID4gPiBtb3RpdmF0aW9uLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFNpbXBs eSBzbyB0aGF0IC9tZW1vcnkgbm9kZXMgZGVzY3JpYmUgYWxsIHBvc3NpYmxlIG1lbW9yeSBhbmQK PiA+ID4gPiA+IC9yZXNlcnZlZC1tZW1vcnkgaXMganVzdCBhZGRpbmcgcmVzdHJpY3Rpb25zLiBJ dCdzIGFsc28gYmVjYXVzZQo+ID4gPiA+ID4gL3Jlc2VydmVkLW1lbW9yeSBpcyB3aGF0IGdldHMg aGFuZGxlZCBlYXJseSwgYW5kIHdlIGRvbid0IG5lZWQKPiA+ID4gPiA+IG11bHRpcGxlIHRoaW5n cyB0byBoYW5kbGUgZWFybHkuCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiBUYWcgc3RvcmFnZSBpcyBu b3QgRE1BIGFuZCBjYW4gbGl2ZSBhbnl3aGVyZSBpbiBtZW1vcnkuCj4gPiA+ID4gPgo+ID4gPiA+ ID4gVGhlbiB3aHkgcHV0IGl0IGluIERUIGF0IGFsbD8gVGhlIG9ubHkgcmVhc29uIENNQSBpcyB0 aGVyZSBpcyB0byBzZXQKPiA+ID4gPiA+IHRoZSBzaXplLiBJdCdzIG5vdCBldmVuIGNsZWFyIHRv IG1lIHdlIG5lZWQgQ01BIGluIERUIGVpdGhlci4gVGhlCj4gPiA+ID4gPiByZWFzb25pbmcgbG9u ZyBhZ28gd2FzIHRoZSBrZXJuZWwgZGlkbid0IGRvIGEgZ29vZCBqb2Igb2YgbW92aW5nIGFuZAo+ ID4gPiA+ID4gcmVjbGFpbWluZyBjb250aWd1b3VzIHNwYWNlLCBidXQgdGhhdCdzIHN1cHBvc2Vk IHRvIGJlIGJldHRlciBub3cgKGFuZAo+ID4gPiA+ID4gbW9zdCBoL3cgZmlndXJlZCBvdXQgdGhl eSBuZWVkIElPTU1VcykuCj4gPiA+ID4gPgo+ID4gPiA+ID4gQnV0IGZvciB0YWcgc3RvcmFnZSB5 b3Uga25vdyB0aGUgc2l6ZSBhcyBpdCBpcyBhIGZ1bmN0aW9uIG9mIHRoZQo+ID4gPiA+ID4gbWVt b3J5IHNpemUsIHJpZ2h0PyBBZnRlciBhbGwsIHlvdSBhcmUgdmFsaWRhdGluZyB0aGUgc2l6ZSBp cyBjb3JyZWN0Lgo+ID4gPiA+ID4gSSBndWVzcyB0aGVyZSBpcyBzdGlsbCB0aGUgYXNwZWN0IG9m IHdoZXRoZXIgeW91IHdhbnQgZW5hYmxlIE1URSBvcgo+ID4gPiA+ID4gbm90IHdoaWNoIGNvdWxk IGJlIGRvbmUgaW4gYSB2YXJpZXR5IG9mIHdheXMuCj4gPiA+ID4KPiA+ID4gPiBPaCwgc29ycnks IG15IGJhZCwgSSBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZXIgYWJvdXQgdGhpcy4gSSBkb24ndCB3 YW50IHRvCj4gPiA+ID4gcHV0IGl0IGluIHRoZSBEVCBhcyBhICJsaW51eCxjbWEiIG5vZGUuIEJ1 dCBJIHdhbnQgaXQgdG8gYmUgbWFuYWdlZCBieSBDTUEuCj4gPiA+Cj4gPiA+IFllcywgSSB1bmRl cnN0YW5kLCBidXQgbXkgcG9pbnQgcmVtYWlucy4gV2h5IGRvIHlvdSBuZWVkIHRoaXMgaW4gRFQ/ Cj4gPiA+IElmIHRoZSBsb2NhdGlvbiBkb2Vzbid0IG1hdHRlciBhbmQgeW91IGNhbiBjYWxjdWxh dGUgdGhlIHNpemUgZnJvbSB0aGUKPiA+ID4gbWVtb3J5IHNpemUsIHdoYXQgZWxzZSBpcyB0aGVy ZSB0byBhZGQgdG8gdGhlIERUPwo+ID4KPiA+IEkgYW0gYWZyYWlkIHRoZXJlIGhhcyBiZWVuIGEg bWlzdW5kZXJzdGFuZGluZy4gV2hhdCBkbyB5b3UgbWVhbiBieQo+ID4gImxvY2F0aW9uIGRvZXNu J3QgbWF0dGVyIj8KPiAKPiBZb3Ugc2FpZDoKPiA+IFRhZyBzdG9yYWdlIGlzIG5vdCBETUEgYW5k IGNhbiBsaXZlIGFueXdoZXJlIGluIG1lbW9yeS4KPiAKPiBXaGljaCBJIHRvb2sgYXMgdGhlIGtl cm5lbCBjYW4gZmlndXJlIG91dCB3aGVyZSB0byBwdXQgaXQuIEJ1dCBtYXliZQo+IHlvdSBtZWFu dCB0aGUgaC93IHBsYXRmb3JtIGNhbiBoYXJkIGNvZGUgaXQgdG8gYmUgYW55d2hlcmUgaW4gbWVt b3J5Pwo+IElmIHNvLCB0aGVuIHllcywgRFQgaXMgbmVlZGVkLgoKQWgsIEkgc2VlLCBzb3JyeSBm b3Igbm90IGJlaW5nIGNsZWFyIGVub3VnaCwgeW91IGFyZSBjb3JyZWN0OiB0YWcgc3RvcmFnZQpp cyBhIGhhcmR3YXJlIHByb3BlcnR5LCBhbmQgc29mdHdhcmUgbmVlZHMgYSBtZWNoYW5pc20gKGlu IHRoaXMgY2FzZSwgdGhlCmR0KSB0byBkaXNjb3ZlciBpdHMgcHJvcGVydGllcy4KCj4gCj4gPiBB dCB0aGUgdmVyeSBsZWFzdCwgTGludXggbmVlZHMgdG8ga25vdyB0aGUgYWRkcmVzcyBhbmQgc2l6 ZSBvZiBhIG1lbW9yeQo+ID4gcmVnaW9uIHRvIHVzZSBpdC4gVGhlIHNlcmllcyBpcyBhYm91dCB1 c2luZyB0aGUgdGFnIHN0b3JhZ2UgbWVtb3J5IGZvcgo+ID4gZGF0YS4gVGFnIHN0b3JhZ2UgY2Fu bm90IGJlIGRlc2NyaWJlZCBhcyBhIHJlZ3VsYXIgbWVtb3J5IG5vZGUgYmVjYXVzZSBpdAo+ID4g Y2Fubm90IGJlIHRhZ2dlZCAoYW5kIG5vcm1hbCBtZW1vcnkgY2FuKS4KPiAKPiBJZiB0aGUgdGFn IHN0b3JhZ2UgbGl2ZXMgaW4gdGhlIG1pZGRsZSBvZiBtZW1vcnksIHRoZW4gaXQgd291bGQgYmUK PiBkZXNjcmliZWQgaW4gdGhlIG1lbW9yeSBub2RlLCBidXQgcmVtb3ZlZCBieSBiZWluZyBpbiBy ZXNlcnZlZC1tZW1vcnkKPiBub2RlLgoKSSBkb24ndCBmb2xsb3cuIFdvdWxkIHlvdSBtaW5kIGdv aW5nIGludG8gbW9yZSBkZXRhaWxzPwoKPiAKPiA+IFRoZW4gdGhlcmUncyB0aGUgbWF0dGVyIG9m IHRoZSB0YWcgc3RvcmFnZSBibG9jayBzaXplIChleHBsYWluZWQgaW4gdGhpcwo+ID4gY29tbWl0 IG1lc3NhZ2UpLCBhbmQgYWxzbyBrbm93aW5nIHRoZSBtZW1vcnkgcmFuZ2UgZm9yIHdoaWNoIGEg dGFnIHN0b3JhZ2UKPiA+IHJlZ2lvbiBzdG9yZXMgdGhlIHRhZ3MuIFRoaXMgaXMgZXhwbGFpbmVk IGluIHRoZSBjb3ZlciBsZXR0ZXIuCj4gCj4gSG9uZXN0bHksIEkganVzdCBmb3Jnb3QgYWJvdXQg dGhhdCBwYXJ0LgoKSSB0b3RhbGx5IHVuZGVyc3RhbmQsIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGlu Z3MgdG8gY29uc2lkZXIgYXQgdGhlIHNhbWUKdGltZS4KClRoYW5rcywKQWxleAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=