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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5043D0E6FA for ; Mon, 21 Oct 2024 11:47:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D5796B0083; Mon, 21 Oct 2024 07:47:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 485BB6B0088; Mon, 21 Oct 2024 07:47:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3310E6B0089; Mon, 21 Oct 2024 07:47:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 12DE86B0083 for ; Mon, 21 Oct 2024 07:47:30 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 583AE16188E for ; Mon, 21 Oct 2024 11:47:12 +0000 (UTC) X-FDA: 82697433294.20.6019E06 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf03.hostedemail.com (Postfix) with ESMTP id 790C620009 for ; Mon, 21 Oct 2024 11:47:20 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf03.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729511083; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PggymHgfWgM5wpjT1OsAEgrjFu8ujGt/6nWR2L5mqAo=; b=V4xjlETjNIjRBF3NiEQnwqZMn7L6Gu4Z+An1Su46Lw7SmEM+J8qg4zOHZNboW3edn4YLOH aJXG2gQFVs2Ar0xWPMmtMML2JwMslZEeIx1Q+cIVOrLo8NZ8TUlwWD8O7qIp77LZdzIVj5 NLGPEDbe5GDDVuJyNXAx/pSoDZyCqhQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729511083; a=rsa-sha256; cv=none; b=DZzidOXC69Noot8fm2fKitXbln4Vapi4hNIpbd6Nwhe2T7z9ldn06T+6Ro+CCOQW2iv9u1 RIBqOLRLtLUvSjXfDdJVRc1GnRMzt+tn+VFL+qNLIMl6HrvaKfHV4A+LS4STr0ai1VUA3V tuDU4lFkNSio6ggaXvbyOnalMxfVolw= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf03.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@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 52C9EDA7; Mon, 21 Oct 2024 04:47:56 -0700 (PDT) Received: from [10.57.87.148] (unknown [10.57.87.148]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 824FD3F528; Mon, 21 Oct 2024 04:47:23 -0700 (PDT) Message-ID: <059721e2-5dd8-47da-b7f8-d6423f912216@arm.com> Date: Mon, 21 Oct 2024 12:47:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v1 00/57] Boot-time page size selection for arm64 Content-Language: en-GB To: Petr Tesarik , Michael Kelley Cc: Andrew Morton , Anshuman Khandual , Ard Biesheuvel , Catalin Marinas , David Hildenbrand , Greg Marsden , Ivan Ivanov , Kalesh Singh , Marc Zyngier , Mark Rutland , Matthias Brugger , Miroslav Benes , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241017142752.17f2c816@mordecai.tesarici.cz> <20241018145600.0473b1bd@mordecai.tesarici.cz> <20241018164105.0e5cc7a9@mordecai.tesarici.cz> From: Ryan Roberts In-Reply-To: <20241018164105.0e5cc7a9@mordecai.tesarici.cz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 790C620009 X-Stat-Signature: z3pzhp8gjyyhceabj1ini3fd1wcx8caa X-Rspam-User: X-HE-Tag: 1729511240-911633 X-HE-Meta: U2FsdGVkX1/bX9fNlI03R6wJKlrynEhsNbrKmIJRwI/oexyAHos9WCLRIM62UaCneFNoPMvDwpa4iB+rQxPtofnyvN4G3PCbhvAU0z/vdi/yGPfdx3PixR6vh1MxA/x7N/f+MVUPmoN8/UetD+MnQpZHIZMim600bORisN3AZroLm66M9riB2F0LoKoQ8qwocd7Ckvf5pkyYIM5QWKZMHZsec/Ow0eOEK1G3xFOj9L8czTxwcQjxI8bJ5u8AkEQJIBtzMy78tOswNiQL9Qkm/W971EHRohqm0insxueVYetykgHZr4d5MNzijphjUQ0Rar+9ZhzleUMFWA/TIbkno8z+UMmrw+d4SBZV4P53R1pLURJuWnUiHa0kvApypyk8vkYKGlocdmFUBj0OzNcjG0hteSxqu9sZ/mG58HybwiTADLz14IFR/vDyyKIMJ/vquE7veqOrqn79p3CD/ARhAx6ht4LKQxMavOdCh4Hz531S0EtuKx0Vacq32HMwfTvwtzZh55jqSzNlfe9opvSx3TYHkAdPanRon2A11ARO4QiSvfvg+3FDiqkvIRxJ2n3+Ur765/NImWJMGz2CZ+q4f53/WX0b0UJphNlGdo6LPIwqG5Z+Dl1j0ackFxx1t7UzEd+gRNzmyuLIJLSyqRucaEGhn1Tq+dzLOA6todgahNMXJKJBduxBHbSfooAfapqzmS5ExZg8Oc9wU8mEyKQ1svd1k4/m9BhrGKXVJqBEGQt8c9Oczjy7quR1SVI03DH8DrEx0n3iWrZ0VHELdVYpICYMgy/4Ndm2/B9vrd1ERQUw6+/DqbhYJBbNBI9ebOOSfEqLMNyj4xBMI945gJcVlBzGyqpbWeMEt6WJJ+kTRU6zKABHph+rYtHkGLXfDakqILBEHK62hAvKDwAN5CYwEKGdP+a8eIjMq4WLY4YpHL1T8+qWVO/j2sP5d2L+LYJQiTU0RIgZhn04qQBDahG re9YPAXQ OIf/6h7j8S1ORxbbbUsayu/WSohQAGe1ijj/trsjENGB/jO1LzOhY23kcB7v09+bcljoQLp3VlIGEFiknLC9nI6VXO5mNmdFy0HR66EGVMhopQdq0P6+6aIC6EWzjGo2zEHIWhtDbdH7k7so2tImpvJ0WL/AvqMz/jEfg1ebqK4oPSdkcjndrrblhnhv7w2Qbrg40jgY+HJh4P7DjTgIZpeQBy7NFZg/1DiabXfqevOc3mESzbNFA0c/42ZP2laRf/rbKD7bNpEDFD5CwSePXGXHJfLQLILR8JT03 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 18/10/2024 15:41, Petr Tesarik wrote: > On Fri, 18 Oct 2024 14:56:00 +0200 > Petr Tesarik wrote: > >> On Thu, 17 Oct 2024 13:32:43 +0100 >> Ryan Roberts wrote: >> >>> On 17/10/2024 13:27, Petr Tesarik wrote: >>>> On Mon, 14 Oct 2024 11:55:11 +0100 >>>> Ryan Roberts wrote: >>>> >>>>> [...] >>>>> The series is arranged as follows: >>>>> >>>>> - patch 1: Add macros required for converting non-arch code to support >>>>> boot-time page size selection >>>>> - patches 2-36: Remove PAGE_SIZE compile-time constant assumption from all >>>>> non-arch code >>>> >>>> I have just tried to recompile the openSUSE kernel with these patches >>>> applied, and I'm running into this: >>>> >>>> CC arch/arm64/hyperv/hv_core.o >>>> In file included from ../arch/arm64/hyperv/hv_core.c:14:0: >>>> ../include/linux/hyperv.h:158:5: error: variably modified ‘reserved2’ at file scope >>>> u8 reserved2[PAGE_SIZE - 68]; >>>> ^~~~~~~~~ >>>> >>>> It looks like one more place which needs a patch, right? >>> >>> As mentioned in the cover letter, so far I've only converted enough to get the >>> defconfig *image* building (i.e. no modules). If you are compiling a different >>> config or compiling the modules for defconfig, you will likely run into these >>> types of issues. >>> >>> That said, I do have some patches to fix Hyper-V, which Michael Kelley was kind >>> enough to send me. >>> >>> I understand that Suse might be able to help with wider performance testing - if >>> that's the reason you are trying to compile, you could send me your config and >>> I'll start working on fixing up other drivers? >> >> You're right, performance testing is my goal. >> >> Heh, the openSUSE master config is cranked up to max. ;-) That would be >> a lot of work, and we don't need all those options for running our test >> suite. Let me disable the conflicting options instead. >> [...] >> I'll see if I can do something about btrfs. Then I can try to boot the >> kernel... > > FWIW the kernel builds and _boots_ after applying this patch: Amazing - thanks for doing this! > > fs/btrfs/compression.h | 2 +- > fs/btrfs/defrag.c | 2 +- > fs/btrfs/extent_io.h | 2 +- > fs/btrfs/scrub.c | 2 +- > include/linux/raid/pq.h | 4 ++-- > lib/raid6/algos.c | 2 +- > 6 files changed, 7 insertions(+), 7 deletions(-) > > --- a/fs/btrfs/compression.h > +++ b/fs/btrfs/compression.h > @@ -33,7 +33,7 @@ struct btrfs_bio; > /* Maximum length of compressed data stored on disk */ > #define BTRFS_MAX_COMPRESSED (SZ_128K) > #define BTRFS_MAX_COMPRESSED_PAGES (BTRFS_MAX_COMPRESSED / PAGE_SIZE) > -static_assert((BTRFS_MAX_COMPRESSED % PAGE_SIZE) == 0); > +static_assert((BTRFS_MAX_COMPRESSED % PAGE_SIZE_MAX) == 0); > > /* Maximum size of data before compression */ > #define BTRFS_MAX_UNCOMPRESSED (SZ_128K) > --- a/fs/btrfs/defrag.c > +++ b/fs/btrfs/defrag.c > @@ -1144,7 +1144,7 @@ next: > } > > #define CLUSTER_SIZE (SZ_256K) > -static_assert(PAGE_ALIGNED(CLUSTER_SIZE)); > +static_assert(IS_ALIGNED(CLUSTER_SIZE, PAGE_SIZE_MAX)); > > /* > * Defrag one contiguous target range. > --- a/fs/btrfs/extent_io.h > +++ b/fs/btrfs/extent_io.h > @@ -89,7 +89,7 @@ enum { > int __init extent_buffer_init_cachep(void); > void __cold extent_buffer_free_cachep(void); > > -#define INLINE_EXTENT_BUFFER_PAGES (BTRFS_MAX_METADATA_BLOCKSIZE / PAGE_SIZE) > +#define INLINE_EXTENT_BUFFER_PAGES (BTRFS_MAX_METADATA_BLOCKSIZE / PAGE_SIZE_MIN) While this works, I'm not sure if you would want to have 2 separate macros; 1 for worst-case static allocation, and 1 for dynamic allocation and iterating. I could imagine if you allocate PAGE_SIZE_MAX pages into the worst case number of slots that would increase memory. I'm not familiar with the code so don't know if this is a problem in practice. Certainly what you have done is much simpler if acceptable. > struct extent_buffer { > u64 start; > u32 len; > --- a/fs/btrfs/scrub.c > +++ b/fs/btrfs/scrub.c > @@ -100,7 +100,7 @@ enum scrub_stripe_flags { > SCRUB_STRIPE_FLAG_NO_REPORT, > }; > > -#define SCRUB_STRIPE_PAGES (BTRFS_STRIPE_LEN / PAGE_SIZE) > +#define SCRUB_STRIPE_PAGES (BTRFS_STRIPE_LEN / PAGE_SIZE_MIN) Same comment. Thanks, Ryan > > /* > * Represent one contiguous range with a length of BTRFS_STRIPE_LEN. > --- a/include/linux/raid/pq.h > +++ b/include/linux/raid/pq.h > @@ -12,7 +12,7 @@ > > #include > > -extern const char raid6_empty_zero_page[PAGE_SIZE]; > +extern const char raid6_empty_zero_page[PAGE_SIZE_MAX]; > > #else /* ! __KERNEL__ */ > /* Used for testing in user space */ > @@ -39,7 +39,7 @@ typedef uint64_t u64; > #ifndef PAGE_SHIFT > # define PAGE_SHIFT 12 > #endif > -extern const char raid6_empty_zero_page[PAGE_SIZE]; > +extern const char raid6_empty_zero_page[PAGE_SIZE_MAX]; > > #define __init > #define __exit > --- a/lib/raid6/algos.c > +++ b/lib/raid6/algos.c > @@ -19,7 +19,7 @@ > #include > #include > /* In .bss so it's zeroed */ > -const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256))); > +const char raid6_empty_zero_page[PAGE_SIZE_MAX] __attribute__((aligned(256))); > EXPORT_SYMBOL(raid6_empty_zero_page); > #endif > > > Petr T