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 F3C5B1ADFFD; Tue, 15 Oct 2024 11:16:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728990986; cv=none; b=cCJ9DQCOVcPk0T50RYPeFPq9kBuJKBciOy9hkj6VVg6AM9mBwtm/UjCOcCQCJLrUJzRguuq1uRqS0ga6ortG8xKqFW2oonHHJpcBGSqYoFFisSJx4tj+ooGCWano6qiy3S7NnHU50kE1ZtHtKj9js9qsOepajDnhkgOMQWAPUdw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728990986; c=relaxed/simple; bh=uw0HbJ0kiobzTbS5RjhFjh8Y60N2Q6x4PT1X8C2PtW0=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=GBl8/rbz6mCsa/wPYYs6ZXEWXwYt7BDGDHtvl/eNY5M3273pefkLo891o3SBnM3ChV3wFR7YaptaeZFziFYmFA4mooY7UM5xJOrh0GhbPrTifAdVqM9SDIUbzpmjHJJc7B2Ww3KsYD1HJRjX4hoBIWRxBuyqg8Z4sK4erJVkKVk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 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 DB00E1007; Tue, 15 Oct 2024 04:16:53 -0700 (PDT) Received: from [10.57.86.207] (unknown [10.57.86.207]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 613183F51B; Tue, 15 Oct 2024 04:16:14 -0700 (PDT) Message-ID: Date: Tue, 15 Oct 2024 12:16:12 +0100 Precedence: bulk X-Mailing-List: linux-alpha@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v1 01/57] mm: Add macros ahead of supporting boot-time page size selection Content-Language: en-GB To: Pingfan Liu Cc: "David S. Miller" , "James E.J. Bottomley" , Andreas Larsson , Andrew Morton , Anshuman Khandual , Anton Ivanov , Ard Biesheuvel , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Chris Zankel , Dave Hansen , David Hildenbrand , Dinh Nguyen , Geert Uytterhoeven , Greg Marsden , Helge Deller , Huacai Chen , Ingo Molnar , Ivan Ivanov , Johannes Berg , John Paul Adrian Glaubitz , Jonas Bonn , Kalesh Singh , Marc Zyngier , Mark Rutland , Matthias Brugger , Max Filippov , Miroslav Benes , Rich Felker , Richard Weinberger , Stafford Horne , Stefan Kristiansson , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , Yoshinori Sato , x86@kernel.org, linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-um@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, sparclinux@vger.kernel.org References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> <9b7e4f65-a171-4574-bd53-580e79527fbc@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 15/10/2024 04:04, Pingfan Liu wrote: > On Mon, Oct 14, 2024 at 10:07 PM Ryan Roberts wrote: >> >> On 14/10/2024 14:54, Pingfan Liu wrote: >>> Hello Ryan, >>> >>> On Mon, Oct 14, 2024 at 11:58:08AM +0100, Ryan Roberts wrote: >>>> arm64 can support multiple base page sizes. Instead of selecting a page >>>> size at compile time, as is done today, we will make it possible to >>>> select the desired page size on the command line. >>>> >>>> In this case PAGE_SHIFT and it's derivatives, PAGE_SIZE and PAGE_MASK >>>> (as well as a number of other macros related to or derived from >>>> PAGE_SHIFT, but I'm not worrying about those yet), are no longer >>>> compile-time constants. So the code base needs to cope with that. >>>> >>>> As a first step, introduce MIN and MAX variants of these macros, which >>>> express the range of possible page sizes. These are always compile-time >>>> constants and can be used in many places where PAGE_[SHIFT|SIZE|MASK] >>>> were previously used where a compile-time constant is required. >>>> (Subsequent patches will do that conversion work). When the arch/build >>>> doesn't support boot-time page size selection, the MIN and MAX variants >>>> are equal and everything resolves as it did previously. >>>> >>> >>> MIN and MAX appear to construct a boundary, but it may be not enough. >>> Please see the following comment inline. >>> >>>> Additionally, introduce DEFINE_GLOBAL_PAGE_SIZE_VAR[_CONST]() which wrap >>>> global variable defintions so that for boot-time page size selection >>>> builds, the variable being wrapped is initialized at boot-time, instead >>>> of compile-time. This is done by defining a function to do the >>>> assignment, which has the "constructor" attribute. Constructor is >>>> preferred over initcall, because when compiling a module, the module is >>>> limited to a single initcall but constructors are unlimited. For >>>> built-in code, constructors are now called earlier to guarrantee that >>>> the variables are initialized by the time they are used. Any arch that >>>> wants to enable boot-time page size selection will need to select >>>> CONFIG_CONSTRUCTORS. >>>> >>>> These new macros need to be available anywhere PAGE_SHIFT and friends >>>> are available. Those are defined via asm/page.h (although some arches >>>> have a sub-include that defines them). Unfortunately there is no >>>> reliable asm-generic header we can easily piggy-back on, so let's define >>>> a new one, pgtable-geometry.h, which we include near where each arch >>>> defines PAGE_SHIFT. Ugh. >>>> >>>> ------- >>>> >>>> Most of the problems that need to be solved over the next few patches >>>> fall into these broad categories, which are all solved with the help of >>>> these new macros: >>>> >>>> 1. Assignment of values derived from PAGE_SIZE in global variables >>>> >>>> For boot-time page size builds, we must defer the initialization of >>>> these variables until boot-time, when the page size is known. See >>>> DEFINE_GLOBAL_PAGE_SIZE_VAR[_CONST]() as described above. >>>> >>>> 2. Define static storage in units related to PAGE_SIZE >>>> >>>> This static storage will be defined according to PAGE_SIZE_MAX. >>>> >>>> 3. Define size of struct so that it is related to PAGE_SIZE >>>> >>>> The struct often contains an array that is sized to fill the page. In >>>> this case, use a flexible array with dynamic allocation. In other >>>> cases, the struct fits exactly over a page, which is a header (e.g. >>>> swap file header). In this case, remove the padding, and manually >>>> determine the struct pointer within the page. >>>> >>> >>> About two years ago, I tried to do similar thing in your series, but ran >>> into problem at this point, or maybe not exactly as the point you list >>> here. I consider this as the most challenged part. >>> >>> The scenario is >>> struct X { >>> a[size_a]; >>> b[size_b]; >>> c; >>> }; >>> >>> Where size_a = f(PAGE_SHIFT), size_b=g(PAGE_SHIFT). One of f() and g() >>> is proportional to PAGE_SHIFT, the other is inversely proportional. >>> >>> How can you fix the reference of X.a and X.b? >> >> If you need to allocate static memory, then in this scenario, assuming f() is >> proportional and g() is inversely-proportional, then I guess you need >> size_a=f(PAGE_SIZE_MAX) and size_b=g(PAGE_SIZE_MIN). Or if you can allocate the > > My point is that such stuff can not be handled by scripts > automatically and needs manual intervention. Yes agreed. I spent some time thinking about how much of this could be automated (i.e. with Cochinelle or otherwise), but concluded that it's very difficult. As a result, all of the patches in this series are manually created. > >> memory dynamically, then make a and b pointers to dynamically allocated buffers. >> > > This seems a better way out. > >> Is there a specific place in the source where this pattern is used today? It >> might be easier to discuss in the context of the code if so. >> > > No such code at hand. Just throw out the potential issue and be > curious about it which frustrates me. > I hope people can reach an agreement on it and turn this useful series > into reality. Yes, hope so! > > Thanks, > > Pingfan > 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 0B835CFC28A for ; Tue, 15 Oct 2024 11:22:31 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=BXoL7SgntedvIxy1lWw3HsZAlzNR1UdirooTykxUDcU=; b=xJInPAa+bZklEF uXi6fDPh27Uw88ybhCF69SZqys09YfeaS295ac4IWl8cPS4K4UjfI4kFvVwsM2JTcrFzBsJe86Smm wWCizabcK+u9zX+uW6IDgDuQNeQ0s+5a4A6QmhMwvcq6TqhMnNdG98R2ZCrXQ0PKXg7YeOU8WMia/ WTXOZHzUpCFOF2q/932ZXLvTW1cXWCwFsKIVSEMvSsrrYy3GY2s/fRheQYlhbssss5OtebVsjptUc EdIM9IW7EzaexejhovJyJVShg45VKk3xGV1TVJkWv+P6lzWSTL8Pa2VmLWM7PPYijrjC9Hi/5l79X HfNblgA8yJWT3WXpaMSw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0fdB-000000080Px-2XzS; Tue, 15 Oct 2024 11:22:25 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0fXM-00000007zBw-3w9q; Tue, 15 Oct 2024 11:16:26 +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 DB00E1007; Tue, 15 Oct 2024 04:16:53 -0700 (PDT) Received: from [10.57.86.207] (unknown [10.57.86.207]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 613183F51B; Tue, 15 Oct 2024 04:16:14 -0700 (PDT) Message-ID: Date: Tue, 15 Oct 2024 12:16:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v1 01/57] mm: Add macros ahead of supporting boot-time page size selection Content-Language: en-GB To: Pingfan Liu Cc: "David S. Miller" , "James E.J. Bottomley" , Andreas Larsson , Andrew Morton , Anshuman Khandual , Anton Ivanov , Ard Biesheuvel , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Chris Zankel , Dave Hansen , David Hildenbrand , Dinh Nguyen , Geert Uytterhoeven , Greg Marsden , Helge Deller , Huacai Chen , Ingo Molnar , Ivan Ivanov , Johannes Berg , John Paul Adrian Glaubitz , Jonas Bonn , Kalesh Singh , Marc Zyngier , Mark Rutland , Matthias Brugger , Max Filippov , Miroslav Benes , Rich Felker , Richard Weinberger , Stafford Horne , Stefan Kristiansson , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , Yoshinori Sato , x86@kernel.org, linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-um@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, sparclinux@vger.kernel.org References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> <9b7e4f65-a171-4574-bd53-580e79527fbc@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241015_041625_092334_7FDD9BDA X-CRM114-Status: GOOD ( 32.56 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gMTUvMTAvMjAyNCAwNDowNCwgUGluZ2ZhbiBMaXUgd3JvdGU6Cj4gT24gTW9uLCBPY3QgMTQs IDIwMjQgYXQgMTA6MDfigK9QTSBSeWFuIFJvYmVydHMgPHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPiB3 cm90ZToKPj4KPj4gT24gMTQvMTAvMjAyNCAxNDo1NCwgUGluZ2ZhbiBMaXUgd3JvdGU6Cj4+PiBI ZWxsbyBSeWFuLAo+Pj4KPj4+IE9uIE1vbiwgT2N0IDE0LCAyMDI0IGF0IDExOjU4OjA4QU0gKzAx MDAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+PiBhcm02NCBjYW4gc3VwcG9ydCBtdWx0aXBsZSBi YXNlIHBhZ2Ugc2l6ZXMuIEluc3RlYWQgb2Ygc2VsZWN0aW5nIGEgcGFnZQo+Pj4+IHNpemUgYXQg Y29tcGlsZSB0aW1lLCBhcyBpcyBkb25lIHRvZGF5LCB3ZSB3aWxsIG1ha2UgaXQgcG9zc2libGUg dG8KPj4+PiBzZWxlY3QgdGhlIGRlc2lyZWQgcGFnZSBzaXplIG9uIHRoZSBjb21tYW5kIGxpbmUu Cj4+Pj4KPj4+PiBJbiB0aGlzIGNhc2UgUEFHRV9TSElGVCBhbmQgaXQncyBkZXJpdmF0aXZlcywg UEFHRV9TSVpFIGFuZCBQQUdFX01BU0sKPj4+PiAoYXMgd2VsbCBhcyBhIG51bWJlciBvZiBvdGhl ciBtYWNyb3MgcmVsYXRlZCB0byBvciBkZXJpdmVkIGZyb20KPj4+PiBQQUdFX1NISUZULCBidXQg SSdtIG5vdCB3b3JyeWluZyBhYm91dCB0aG9zZSB5ZXQpLCBhcmUgbm8gbG9uZ2VyCj4+Pj4gY29t cGlsZS10aW1lIGNvbnN0YW50cy4gU28gdGhlIGNvZGUgYmFzZSBuZWVkcyB0byBjb3BlIHdpdGgg dGhhdC4KPj4+Pgo+Pj4+IEFzIGEgZmlyc3Qgc3RlcCwgaW50cm9kdWNlIE1JTiBhbmQgTUFYIHZh cmlhbnRzIG9mIHRoZXNlIG1hY3Jvcywgd2hpY2gKPj4+PiBleHByZXNzIHRoZSByYW5nZSBvZiBw b3NzaWJsZSBwYWdlIHNpemVzLiBUaGVzZSBhcmUgYWx3YXlzIGNvbXBpbGUtdGltZQo+Pj4+IGNv bnN0YW50cyBhbmQgY2FuIGJlIHVzZWQgaW4gbWFueSBwbGFjZXMgd2hlcmUgUEFHRV9bU0hJRlR8 U0laRXxNQVNLXQo+Pj4+IHdlcmUgcHJldmlvdXNseSB1c2VkIHdoZXJlIGEgY29tcGlsZS10aW1l IGNvbnN0YW50IGlzIHJlcXVpcmVkLgo+Pj4+IChTdWJzZXF1ZW50IHBhdGNoZXMgd2lsbCBkbyB0 aGF0IGNvbnZlcnNpb24gd29yaykuIFdoZW4gdGhlIGFyY2gvYnVpbGQKPj4+PiBkb2Vzbid0IHN1 cHBvcnQgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24sIHRoZSBNSU4gYW5kIE1BWCB2YXJp YW50cwo+Pj4+IGFyZSBlcXVhbCBhbmQgZXZlcnl0aGluZyByZXNvbHZlcyBhcyBpdCBkaWQgcHJl dmlvdXNseS4KPj4+Pgo+Pj4KPj4+IE1JTiBhbmQgTUFYIGFwcGVhciB0byBjb25zdHJ1Y3QgYSBi b3VuZGFyeSwgYnV0IGl0IG1heSBiZSBub3QgZW5vdWdoLgo+Pj4gUGxlYXNlIHNlZSB0aGUgZm9s bG93aW5nIGNvbW1lbnQgaW5saW5lLgo+Pj4KPj4+PiBBZGRpdGlvbmFsbHksIGludHJvZHVjZSBE RUZJTkVfR0xPQkFMX1BBR0VfU0laRV9WQVJbX0NPTlNUXSgpIHdoaWNoIHdyYXAKPj4+PiBnbG9i YWwgdmFyaWFibGUgZGVmaW50aW9ucyBzbyB0aGF0IGZvciBib290LXRpbWUgcGFnZSBzaXplIHNl bGVjdGlvbgo+Pj4+IGJ1aWxkcywgdGhlIHZhcmlhYmxlIGJlaW5nIHdyYXBwZWQgaXMgaW5pdGlh bGl6ZWQgYXQgYm9vdC10aW1lLCBpbnN0ZWFkCj4+Pj4gb2YgY29tcGlsZS10aW1lLiBUaGlzIGlz IGRvbmUgYnkgZGVmaW5pbmcgYSBmdW5jdGlvbiB0byBkbyB0aGUKPj4+PiBhc3NpZ25tZW50LCB3 aGljaCBoYXMgdGhlICJjb25zdHJ1Y3RvciIgYXR0cmlidXRlLiBDb25zdHJ1Y3RvciBpcwo+Pj4+ IHByZWZlcnJlZCBvdmVyIGluaXRjYWxsLCBiZWNhdXNlIHdoZW4gY29tcGlsaW5nIGEgbW9kdWxl LCB0aGUgbW9kdWxlIGlzCj4+Pj4gbGltaXRlZCB0byBhIHNpbmdsZSBpbml0Y2FsbCBidXQgY29u c3RydWN0b3JzIGFyZSB1bmxpbWl0ZWQuIEZvcgo+Pj4+IGJ1aWx0LWluIGNvZGUsIGNvbnN0cnVj dG9ycyBhcmUgbm93IGNhbGxlZCBlYXJsaWVyIHRvIGd1YXJyYW50ZWUgdGhhdAo+Pj4+IHRoZSB2 YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGJ5IHRoZSB0aW1lIHRoZXkgYXJlIHVzZWQuIEFueSBh cmNoIHRoYXQKPj4+PiB3YW50cyB0byBlbmFibGUgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBzZWxlY3Rp b24gd2lsbCBuZWVkIHRvIHNlbGVjdAo+Pj4+IENPTkZJR19DT05TVFJVQ1RPUlMuCj4+Pj4KPj4+ PiBUaGVzZSBuZXcgbWFjcm9zIG5lZWQgdG8gYmUgYXZhaWxhYmxlIGFueXdoZXJlIFBBR0VfU0hJ RlQgYW5kIGZyaWVuZHMKPj4+PiBhcmUgYXZhaWxhYmxlLiBUaG9zZSBhcmUgZGVmaW5lZCB2aWEg YXNtL3BhZ2UuaCAoYWx0aG91Z2ggc29tZSBhcmNoZXMKPj4+PiBoYXZlIGEgc3ViLWluY2x1ZGUg dGhhdCBkZWZpbmVzIHRoZW0pLiBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vCj4+Pj4gcmVsaWFi bGUgYXNtLWdlbmVyaWMgaGVhZGVyIHdlIGNhbiBlYXNpbHkgcGlnZ3ktYmFjayBvbiwgc28gbGV0 J3MgZGVmaW5lCj4+Pj4gYSBuZXcgb25lLCBwZ3RhYmxlLWdlb21ldHJ5LmgsIHdoaWNoIHdlIGlu Y2x1ZGUgbmVhciB3aGVyZSBlYWNoIGFyY2gKPj4+PiBkZWZpbmVzIFBBR0VfU0hJRlQuIFVnaC4K Pj4+Pgo+Pj4+IC0tLS0tLS0KPj4+Pgo+Pj4+IE1vc3Qgb2YgdGhlIHByb2JsZW1zIHRoYXQgbmVl ZCB0byBiZSBzb2x2ZWQgb3ZlciB0aGUgbmV4dCBmZXcgcGF0Y2hlcwo+Pj4+IGZhbGwgaW50byB0 aGVzZSBicm9hZCBjYXRlZ29yaWVzLCB3aGljaCBhcmUgYWxsIHNvbHZlZCB3aXRoIHRoZSBoZWxw IG9mCj4+Pj4gdGhlc2UgbmV3IG1hY3JvczoKPj4+Pgo+Pj4+IDEuIEFzc2lnbm1lbnQgb2YgdmFs dWVzIGRlcml2ZWQgZnJvbSBQQUdFX1NJWkUgaW4gZ2xvYmFsIHZhcmlhYmxlcwo+Pj4+Cj4+Pj4g ICBGb3IgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBidWlsZHMsIHdlIG11c3QgZGVmZXIgdGhlIGluaXRp YWxpemF0aW9uIG9mCj4+Pj4gICB0aGVzZSB2YXJpYWJsZXMgdW50aWwgYm9vdC10aW1lLCB3aGVu IHRoZSBwYWdlIHNpemUgaXMga25vd24uIFNlZQo+Pj4+ICAgREVGSU5FX0dMT0JBTF9QQUdFX1NJ WkVfVkFSW19DT05TVF0oKSBhcyBkZXNjcmliZWQgYWJvdmUuCj4+Pj4KPj4+PiAyLiBEZWZpbmUg c3RhdGljIHN0b3JhZ2UgaW4gdW5pdHMgcmVsYXRlZCB0byBQQUdFX1NJWkUKPj4+Pgo+Pj4+ICAg VGhpcyBzdGF0aWMgc3RvcmFnZSB3aWxsIGJlIGRlZmluZWQgYWNjb3JkaW5nIHRvIFBBR0VfU0la RV9NQVguCj4+Pj4KPj4+PiAzLiBEZWZpbmUgc2l6ZSBvZiBzdHJ1Y3Qgc28gdGhhdCBpdCBpcyBy ZWxhdGVkIHRvIFBBR0VfU0laRQo+Pj4+Cj4+Pj4gICBUaGUgc3RydWN0IG9mdGVuIGNvbnRhaW5z IGFuIGFycmF5IHRoYXQgaXMgc2l6ZWQgdG8gZmlsbCB0aGUgcGFnZS4gSW4KPj4+PiAgIHRoaXMg Y2FzZSwgdXNlIGEgZmxleGlibGUgYXJyYXkgd2l0aCBkeW5hbWljIGFsbG9jYXRpb24uIEluIG90 aGVyCj4+Pj4gICBjYXNlcywgdGhlIHN0cnVjdCBmaXRzIGV4YWN0bHkgb3ZlciBhIHBhZ2UsIHdo aWNoIGlzIGEgaGVhZGVyIChlLmcuCj4+Pj4gICBzd2FwIGZpbGUgaGVhZGVyKS4gSW4gdGhpcyBj YXNlLCByZW1vdmUgdGhlIHBhZGRpbmcsIGFuZCBtYW51YWxseQo+Pj4+ICAgZGV0ZXJtaW5lIHRo ZSBzdHJ1Y3QgcG9pbnRlciB3aXRoaW4gdGhlIHBhZ2UuCj4+Pj4KPj4+Cj4+PiBBYm91dCB0d28g eWVhcnMgYWdvLCBJIHRyaWVkIHRvIGRvIHNpbWlsYXIgdGhpbmcgaW4geW91ciBzZXJpZXMsIGJ1 dCByYW4KPj4+IGludG8gcHJvYmxlbSBhdCB0aGlzIHBvaW50LCBvciBtYXliZSBub3QgZXhhY3Rs eSBhcyB0aGUgcG9pbnQgeW91IGxpc3QKPj4+IGhlcmUuIEkgY29uc2lkZXIgdGhpcyBhcyB0aGUg bW9zdCBjaGFsbGVuZ2VkIHBhcnQuCj4+Pgo+Pj4gVGhlIHNjZW5hcmlvIGlzCj4+PiBzdHJ1Y3Qg WCB7Cj4+PiAgICAgICBhW3NpemVfYV07Cj4+PiAgICAgICBiW3NpemVfYl07Cj4+PiAgICAgICBj Owo+Pj4gfTsKPj4+Cj4+PiBXaGVyZSBzaXplX2EgPSBmKFBBR0VfU0hJRlQpLCBzaXplX2I9ZyhQ QUdFX1NISUZUKS4gT25lIG9mIGYoKSBhbmQgZygpCj4+PiBpcyBwcm9wb3J0aW9uYWwgdG8gUEFH RV9TSElGVCwgdGhlIG90aGVyIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwuCj4+Pgo+Pj4gSG93 IGNhbiB5b3UgZml4IHRoZSByZWZlcmVuY2Ugb2YgWC5hIGFuZCBYLmI/Cj4+Cj4+IElmIHlvdSBu ZWVkIHRvIGFsbG9jYXRlIHN0YXRpYyBtZW1vcnksIHRoZW4gaW4gdGhpcyBzY2VuYXJpbywgYXNz dW1pbmcgZigpIGlzCj4+IHByb3BvcnRpb25hbCBhbmQgZygpIGlzIGludmVyc2VseS1wcm9wb3J0 aW9uYWwsIHRoZW4gSSBndWVzcyB5b3UgbmVlZAo+PiBzaXplX2E9ZihQQUdFX1NJWkVfTUFYKSBh bmQgc2l6ZV9iPWcoUEFHRV9TSVpFX01JTikuIE9yIGlmIHlvdSBjYW4gYWxsb2NhdGUgdGhlCj4g Cj4gTXkgcG9pbnQgaXMgdGhhdCBzdWNoIHN0dWZmIGNhbiBub3QgYmUgaGFuZGxlZCBieSBzY3Jp cHRzCj4gYXV0b21hdGljYWxseSBhbmQgbmVlZHMgbWFudWFsIGludGVydmVudGlvbi4KClllcyBh Z3JlZWQuIEkgc3BlbnQgc29tZSB0aW1lIHRoaW5raW5nIGFib3V0IGhvdyBtdWNoIG9mIHRoaXMg Y291bGQgYmUgYXV0b21hdGVkCihpLmUuIHdpdGggQ29jaGluZWxsZSBvciBvdGhlcndpc2UpLCBi dXQgY29uY2x1ZGVkIHRoYXQgaXQncyB2ZXJ5IGRpZmZpY3VsdC4gQXMKYSByZXN1bHQsIGFsbCBv ZiB0aGUgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyBhcmUgbWFudWFsbHkgY3JlYXRlZC4KCj4gCj4+ IG1lbW9yeSBkeW5hbWljYWxseSwgdGhlbiBtYWtlIGEgYW5kIGIgcG9pbnRlcnMgdG8gZHluYW1p Y2FsbHkgYWxsb2NhdGVkIGJ1ZmZlcnMuCj4+Cj4gCj4gVGhpcyBzZWVtcyBhIGJldHRlciB3YXkg b3V0Lgo+IAo+PiBJcyB0aGVyZSBhIHNwZWNpZmljIHBsYWNlIGluIHRoZSBzb3VyY2Ugd2hlcmUg dGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG9kYXk/IEl0Cj4+IG1pZ2h0IGJlIGVhc2llciB0byBkaXNj dXNzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb2RlIGlmIHNvLgo+Pgo+IAo+IE5vIHN1Y2ggY29k ZSBhdCBoYW5kLiBKdXN0IHRocm93IG91dCB0aGUgcG90ZW50aWFsIGlzc3VlIGFuZCBiZQo+IGN1 cmlvdXMgYWJvdXQgaXQgd2hpY2ggZnJ1c3RyYXRlcyBtZS4KPiBJIGhvcGUgcGVvcGxlIGNhbiBy ZWFjaCBhbiBhZ3JlZW1lbnQgb24gaXQgYW5kIHR1cm4gdGhpcyB1c2VmdWwgc2VyaWVzCj4gaW50 byByZWFsaXR5LgoKWWVzLCBob3BlIHNvIQoKPiAKPiBUaGFua3MsCj4gCj4gUGluZ2Zhbgo+IAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJp c2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK 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 B51B9CFC28A for ; Tue, 15 Oct 2024 11:22:26 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=iTnknAi9QyWCfCIOqXDYBcomcG6XT5bJl3OFYhRALtA=; b=egFa0z9jZ5dJx2 3+xIeraFjexSRlKJjlfuFP72LbRI87U1XLzrzVMfRULkBgDcWnHTXG7LkFxkq8Kekx2s8BeIwjKRp Xqt5G2xjXzL487Tz9BwmAUeKsaVbZOYzvgRF9Plh8dAp3we4ZMDuZnRKMRXO+JAwopzS94IxKUDya JS0/tkaGPlY4j6BExDa1otsjPTDOuDU/y1+VYzTm9tY6s6K3xJmPcyuLOlEc3G64WJd6T49mYDahe RRpG6DZ/UxauCEmz5PTFRItnxyG8L65r7QnWsppvL3kQtq5EscMFPZXQkprTP4WYoqf5KoWEJ60yC wZShNIGaHBpQfiq4+T/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0fdC-000000080Q1-1B2V; Tue, 15 Oct 2024 11:22:26 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0fXM-00000007zBw-3w9q; Tue, 15 Oct 2024 11:16:26 +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 DB00E1007; Tue, 15 Oct 2024 04:16:53 -0700 (PDT) Received: from [10.57.86.207] (unknown [10.57.86.207]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 613183F51B; Tue, 15 Oct 2024 04:16:14 -0700 (PDT) Message-ID: Date: Tue, 15 Oct 2024 12:16:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v1 01/57] mm: Add macros ahead of supporting boot-time page size selection Content-Language: en-GB To: Pingfan Liu Cc: "David S. Miller" , "James E.J. Bottomley" , Andreas Larsson , Andrew Morton , Anshuman Khandual , Anton Ivanov , Ard Biesheuvel , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Chris Zankel , Dave Hansen , David Hildenbrand , Dinh Nguyen , Geert Uytterhoeven , Greg Marsden , Helge Deller , Huacai Chen , Ingo Molnar , Ivan Ivanov , Johannes Berg , John Paul Adrian Glaubitz , Jonas Bonn , Kalesh Singh , Marc Zyngier , Mark Rutland , Matthias Brugger , Max Filippov , Miroslav Benes , Rich Felker , Richard Weinberger , Stafford Horne , Stefan Kristiansson , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , Yoshinori Sato , x86@kernel.org, linux-alpha@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-um@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, sparclinux@vger.kernel.org References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> <9b7e4f65-a171-4574-bd53-580e79527fbc@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241015_041625_092334_7FDD9BDA X-CRM114-Status: GOOD ( 32.56 ) X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org T24gMTUvMTAvMjAyNCAwNDowNCwgUGluZ2ZhbiBMaXUgd3JvdGU6Cj4gT24gTW9uLCBPY3QgMTQs IDIwMjQgYXQgMTA6MDfigK9QTSBSeWFuIFJvYmVydHMgPHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPiB3 cm90ZToKPj4KPj4gT24gMTQvMTAvMjAyNCAxNDo1NCwgUGluZ2ZhbiBMaXUgd3JvdGU6Cj4+PiBI ZWxsbyBSeWFuLAo+Pj4KPj4+IE9uIE1vbiwgT2N0IDE0LCAyMDI0IGF0IDExOjU4OjA4QU0gKzAx MDAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+PiBhcm02NCBjYW4gc3VwcG9ydCBtdWx0aXBsZSBi YXNlIHBhZ2Ugc2l6ZXMuIEluc3RlYWQgb2Ygc2VsZWN0aW5nIGEgcGFnZQo+Pj4+IHNpemUgYXQg Y29tcGlsZSB0aW1lLCBhcyBpcyBkb25lIHRvZGF5LCB3ZSB3aWxsIG1ha2UgaXQgcG9zc2libGUg dG8KPj4+PiBzZWxlY3QgdGhlIGRlc2lyZWQgcGFnZSBzaXplIG9uIHRoZSBjb21tYW5kIGxpbmUu Cj4+Pj4KPj4+PiBJbiB0aGlzIGNhc2UgUEFHRV9TSElGVCBhbmQgaXQncyBkZXJpdmF0aXZlcywg UEFHRV9TSVpFIGFuZCBQQUdFX01BU0sKPj4+PiAoYXMgd2VsbCBhcyBhIG51bWJlciBvZiBvdGhl ciBtYWNyb3MgcmVsYXRlZCB0byBvciBkZXJpdmVkIGZyb20KPj4+PiBQQUdFX1NISUZULCBidXQg SSdtIG5vdCB3b3JyeWluZyBhYm91dCB0aG9zZSB5ZXQpLCBhcmUgbm8gbG9uZ2VyCj4+Pj4gY29t cGlsZS10aW1lIGNvbnN0YW50cy4gU28gdGhlIGNvZGUgYmFzZSBuZWVkcyB0byBjb3BlIHdpdGgg dGhhdC4KPj4+Pgo+Pj4+IEFzIGEgZmlyc3Qgc3RlcCwgaW50cm9kdWNlIE1JTiBhbmQgTUFYIHZh cmlhbnRzIG9mIHRoZXNlIG1hY3Jvcywgd2hpY2gKPj4+PiBleHByZXNzIHRoZSByYW5nZSBvZiBw b3NzaWJsZSBwYWdlIHNpemVzLiBUaGVzZSBhcmUgYWx3YXlzIGNvbXBpbGUtdGltZQo+Pj4+IGNv bnN0YW50cyBhbmQgY2FuIGJlIHVzZWQgaW4gbWFueSBwbGFjZXMgd2hlcmUgUEFHRV9bU0hJRlR8 U0laRXxNQVNLXQo+Pj4+IHdlcmUgcHJldmlvdXNseSB1c2VkIHdoZXJlIGEgY29tcGlsZS10aW1l IGNvbnN0YW50IGlzIHJlcXVpcmVkLgo+Pj4+IChTdWJzZXF1ZW50IHBhdGNoZXMgd2lsbCBkbyB0 aGF0IGNvbnZlcnNpb24gd29yaykuIFdoZW4gdGhlIGFyY2gvYnVpbGQKPj4+PiBkb2Vzbid0IHN1 cHBvcnQgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24sIHRoZSBNSU4gYW5kIE1BWCB2YXJp YW50cwo+Pj4+IGFyZSBlcXVhbCBhbmQgZXZlcnl0aGluZyByZXNvbHZlcyBhcyBpdCBkaWQgcHJl dmlvdXNseS4KPj4+Pgo+Pj4KPj4+IE1JTiBhbmQgTUFYIGFwcGVhciB0byBjb25zdHJ1Y3QgYSBi b3VuZGFyeSwgYnV0IGl0IG1heSBiZSBub3QgZW5vdWdoLgo+Pj4gUGxlYXNlIHNlZSB0aGUgZm9s bG93aW5nIGNvbW1lbnQgaW5saW5lLgo+Pj4KPj4+PiBBZGRpdGlvbmFsbHksIGludHJvZHVjZSBE RUZJTkVfR0xPQkFMX1BBR0VfU0laRV9WQVJbX0NPTlNUXSgpIHdoaWNoIHdyYXAKPj4+PiBnbG9i YWwgdmFyaWFibGUgZGVmaW50aW9ucyBzbyB0aGF0IGZvciBib290LXRpbWUgcGFnZSBzaXplIHNl bGVjdGlvbgo+Pj4+IGJ1aWxkcywgdGhlIHZhcmlhYmxlIGJlaW5nIHdyYXBwZWQgaXMgaW5pdGlh bGl6ZWQgYXQgYm9vdC10aW1lLCBpbnN0ZWFkCj4+Pj4gb2YgY29tcGlsZS10aW1lLiBUaGlzIGlz IGRvbmUgYnkgZGVmaW5pbmcgYSBmdW5jdGlvbiB0byBkbyB0aGUKPj4+PiBhc3NpZ25tZW50LCB3 aGljaCBoYXMgdGhlICJjb25zdHJ1Y3RvciIgYXR0cmlidXRlLiBDb25zdHJ1Y3RvciBpcwo+Pj4+ IHByZWZlcnJlZCBvdmVyIGluaXRjYWxsLCBiZWNhdXNlIHdoZW4gY29tcGlsaW5nIGEgbW9kdWxl LCB0aGUgbW9kdWxlIGlzCj4+Pj4gbGltaXRlZCB0byBhIHNpbmdsZSBpbml0Y2FsbCBidXQgY29u c3RydWN0b3JzIGFyZSB1bmxpbWl0ZWQuIEZvcgo+Pj4+IGJ1aWx0LWluIGNvZGUsIGNvbnN0cnVj dG9ycyBhcmUgbm93IGNhbGxlZCBlYXJsaWVyIHRvIGd1YXJyYW50ZWUgdGhhdAo+Pj4+IHRoZSB2 YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIGJ5IHRoZSB0aW1lIHRoZXkgYXJlIHVzZWQuIEFueSBh cmNoIHRoYXQKPj4+PiB3YW50cyB0byBlbmFibGUgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBzZWxlY3Rp b24gd2lsbCBuZWVkIHRvIHNlbGVjdAo+Pj4+IENPTkZJR19DT05TVFJVQ1RPUlMuCj4+Pj4KPj4+ PiBUaGVzZSBuZXcgbWFjcm9zIG5lZWQgdG8gYmUgYXZhaWxhYmxlIGFueXdoZXJlIFBBR0VfU0hJ RlQgYW5kIGZyaWVuZHMKPj4+PiBhcmUgYXZhaWxhYmxlLiBUaG9zZSBhcmUgZGVmaW5lZCB2aWEg YXNtL3BhZ2UuaCAoYWx0aG91Z2ggc29tZSBhcmNoZXMKPj4+PiBoYXZlIGEgc3ViLWluY2x1ZGUg dGhhdCBkZWZpbmVzIHRoZW0pLiBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vCj4+Pj4gcmVsaWFi bGUgYXNtLWdlbmVyaWMgaGVhZGVyIHdlIGNhbiBlYXNpbHkgcGlnZ3ktYmFjayBvbiwgc28gbGV0 J3MgZGVmaW5lCj4+Pj4gYSBuZXcgb25lLCBwZ3RhYmxlLWdlb21ldHJ5LmgsIHdoaWNoIHdlIGlu Y2x1ZGUgbmVhciB3aGVyZSBlYWNoIGFyY2gKPj4+PiBkZWZpbmVzIFBBR0VfU0hJRlQuIFVnaC4K Pj4+Pgo+Pj4+IC0tLS0tLS0KPj4+Pgo+Pj4+IE1vc3Qgb2YgdGhlIHByb2JsZW1zIHRoYXQgbmVl ZCB0byBiZSBzb2x2ZWQgb3ZlciB0aGUgbmV4dCBmZXcgcGF0Y2hlcwo+Pj4+IGZhbGwgaW50byB0 aGVzZSBicm9hZCBjYXRlZ29yaWVzLCB3aGljaCBhcmUgYWxsIHNvbHZlZCB3aXRoIHRoZSBoZWxw IG9mCj4+Pj4gdGhlc2UgbmV3IG1hY3JvczoKPj4+Pgo+Pj4+IDEuIEFzc2lnbm1lbnQgb2YgdmFs dWVzIGRlcml2ZWQgZnJvbSBQQUdFX1NJWkUgaW4gZ2xvYmFsIHZhcmlhYmxlcwo+Pj4+Cj4+Pj4g ICBGb3IgYm9vdC10aW1lIHBhZ2Ugc2l6ZSBidWlsZHMsIHdlIG11c3QgZGVmZXIgdGhlIGluaXRp YWxpemF0aW9uIG9mCj4+Pj4gICB0aGVzZSB2YXJpYWJsZXMgdW50aWwgYm9vdC10aW1lLCB3aGVu IHRoZSBwYWdlIHNpemUgaXMga25vd24uIFNlZQo+Pj4+ICAgREVGSU5FX0dMT0JBTF9QQUdFX1NJ WkVfVkFSW19DT05TVF0oKSBhcyBkZXNjcmliZWQgYWJvdmUuCj4+Pj4KPj4+PiAyLiBEZWZpbmUg c3RhdGljIHN0b3JhZ2UgaW4gdW5pdHMgcmVsYXRlZCB0byBQQUdFX1NJWkUKPj4+Pgo+Pj4+ICAg VGhpcyBzdGF0aWMgc3RvcmFnZSB3aWxsIGJlIGRlZmluZWQgYWNjb3JkaW5nIHRvIFBBR0VfU0la RV9NQVguCj4+Pj4KPj4+PiAzLiBEZWZpbmUgc2l6ZSBvZiBzdHJ1Y3Qgc28gdGhhdCBpdCBpcyBy ZWxhdGVkIHRvIFBBR0VfU0laRQo+Pj4+Cj4+Pj4gICBUaGUgc3RydWN0IG9mdGVuIGNvbnRhaW5z IGFuIGFycmF5IHRoYXQgaXMgc2l6ZWQgdG8gZmlsbCB0aGUgcGFnZS4gSW4KPj4+PiAgIHRoaXMg Y2FzZSwgdXNlIGEgZmxleGlibGUgYXJyYXkgd2l0aCBkeW5hbWljIGFsbG9jYXRpb24uIEluIG90 aGVyCj4+Pj4gICBjYXNlcywgdGhlIHN0cnVjdCBmaXRzIGV4YWN0bHkgb3ZlciBhIHBhZ2UsIHdo aWNoIGlzIGEgaGVhZGVyIChlLmcuCj4+Pj4gICBzd2FwIGZpbGUgaGVhZGVyKS4gSW4gdGhpcyBj YXNlLCByZW1vdmUgdGhlIHBhZGRpbmcsIGFuZCBtYW51YWxseQo+Pj4+ICAgZGV0ZXJtaW5lIHRo ZSBzdHJ1Y3QgcG9pbnRlciB3aXRoaW4gdGhlIHBhZ2UuCj4+Pj4KPj4+Cj4+PiBBYm91dCB0d28g eWVhcnMgYWdvLCBJIHRyaWVkIHRvIGRvIHNpbWlsYXIgdGhpbmcgaW4geW91ciBzZXJpZXMsIGJ1 dCByYW4KPj4+IGludG8gcHJvYmxlbSBhdCB0aGlzIHBvaW50LCBvciBtYXliZSBub3QgZXhhY3Rs eSBhcyB0aGUgcG9pbnQgeW91IGxpc3QKPj4+IGhlcmUuIEkgY29uc2lkZXIgdGhpcyBhcyB0aGUg bW9zdCBjaGFsbGVuZ2VkIHBhcnQuCj4+Pgo+Pj4gVGhlIHNjZW5hcmlvIGlzCj4+PiBzdHJ1Y3Qg WCB7Cj4+PiAgICAgICBhW3NpemVfYV07Cj4+PiAgICAgICBiW3NpemVfYl07Cj4+PiAgICAgICBj Owo+Pj4gfTsKPj4+Cj4+PiBXaGVyZSBzaXplX2EgPSBmKFBBR0VfU0hJRlQpLCBzaXplX2I9ZyhQ QUdFX1NISUZUKS4gT25lIG9mIGYoKSBhbmQgZygpCj4+PiBpcyBwcm9wb3J0aW9uYWwgdG8gUEFH RV9TSElGVCwgdGhlIG90aGVyIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwuCj4+Pgo+Pj4gSG93 IGNhbiB5b3UgZml4IHRoZSByZWZlcmVuY2Ugb2YgWC5hIGFuZCBYLmI/Cj4+Cj4+IElmIHlvdSBu ZWVkIHRvIGFsbG9jYXRlIHN0YXRpYyBtZW1vcnksIHRoZW4gaW4gdGhpcyBzY2VuYXJpbywgYXNz dW1pbmcgZigpIGlzCj4+IHByb3BvcnRpb25hbCBhbmQgZygpIGlzIGludmVyc2VseS1wcm9wb3J0 aW9uYWwsIHRoZW4gSSBndWVzcyB5b3UgbmVlZAo+PiBzaXplX2E9ZihQQUdFX1NJWkVfTUFYKSBh bmQgc2l6ZV9iPWcoUEFHRV9TSVpFX01JTikuIE9yIGlmIHlvdSBjYW4gYWxsb2NhdGUgdGhlCj4g Cj4gTXkgcG9pbnQgaXMgdGhhdCBzdWNoIHN0dWZmIGNhbiBub3QgYmUgaGFuZGxlZCBieSBzY3Jp cHRzCj4gYXV0b21hdGljYWxseSBhbmQgbmVlZHMgbWFudWFsIGludGVydmVudGlvbi4KClllcyBh Z3JlZWQuIEkgc3BlbnQgc29tZSB0aW1lIHRoaW5raW5nIGFib3V0IGhvdyBtdWNoIG9mIHRoaXMg Y291bGQgYmUgYXV0b21hdGVkCihpLmUuIHdpdGggQ29jaGluZWxsZSBvciBvdGhlcndpc2UpLCBi dXQgY29uY2x1ZGVkIHRoYXQgaXQncyB2ZXJ5IGRpZmZpY3VsdC4gQXMKYSByZXN1bHQsIGFsbCBv ZiB0aGUgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyBhcmUgbWFudWFsbHkgY3JlYXRlZC4KCj4gCj4+ IG1lbW9yeSBkeW5hbWljYWxseSwgdGhlbiBtYWtlIGEgYW5kIGIgcG9pbnRlcnMgdG8gZHluYW1p Y2FsbHkgYWxsb2NhdGVkIGJ1ZmZlcnMuCj4+Cj4gCj4gVGhpcyBzZWVtcyBhIGJldHRlciB3YXkg b3V0Lgo+IAo+PiBJcyB0aGVyZSBhIHNwZWNpZmljIHBsYWNlIGluIHRoZSBzb3VyY2Ugd2hlcmUg dGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG9kYXk/IEl0Cj4+IG1pZ2h0IGJlIGVhc2llciB0byBkaXNj dXNzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb2RlIGlmIHNvLgo+Pgo+IAo+IE5vIHN1Y2ggY29k ZSBhdCBoYW5kLiBKdXN0IHRocm93IG91dCB0aGUgcG90ZW50aWFsIGlzc3VlIGFuZCBiZQo+IGN1 cmlvdXMgYWJvdXQgaXQgd2hpY2ggZnJ1c3RyYXRlcyBtZS4KPiBJIGhvcGUgcGVvcGxlIGNhbiBy ZWFjaCBhbiBhZ3JlZW1lbnQgb24gaXQgYW5kIHR1cm4gdGhpcyB1c2VmdWwgc2VyaWVzCj4gaW50 byByZWFsaXR5LgoKWWVzLCBob3BlIHNvIQoKPiAKPiBUaGFua3MsCj4gCj4gUGluZ2Zhbgo+IAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXNu cHMtYXJjIG1haWxpbmcgbGlzdApsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtc25wcy1hcmMK