Re: [PATCH] mm: Add ARCH_FORCE_PAGE_BLOCK_ORDER to select page block order

From: Juan Yescas
Date: Thu May 01 2025 - 17:07:36 EST


On Thu, May 1, 2025 at 11:38 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> On Wed, Apr 30, 2025 at 10:25:11PM -0700, Juan Yescas wrote:
> > Problem: On large page size configurations (16KiB, 64KiB), the CMA
> > alignment requirement (CMA_MIN_ALIGNMENT_BYTES) increases considerably,
> > and this causes the CMA reservations to be larger than necessary.
> > This means that system will have less available MIGRATE_UNMOVABLE and
> > MIGRATE_RECLAIMABLE page blocks since MIGRATE_CMA can't fallback to them.
> >
> > The CMA_MIN_ALIGNMENT_BYTES increases because it depends on
> > MAX_PAGE_ORDER which depends on ARCH_FORCE_MAX_ORDER. The value of
> > ARCH_FORCE_MAX_ORDER increases on 16k and 64k kernels.
>
> Sure, but why would any architecture *NOT* want to set this?
> This seems like you're making each architecture bump into the problem
> by itself, when the real problem is that the CMA people never thought
> about this and should have come up with better defaults.

Sorry Matthew about my previous reply. I think I misunderstood you.

You mean that we should move the configuration to mm/Kconfig as per Zi
suggestion so that other architectures can utilize if need? and have
something like this in mm/Kconfig

config ARCH_FORCE_PAGE_BLOCK_ORDER
int "Page Block Order"
range 1 ARCH_FORCE_MAX_ORDER
default ARCH_FORCE_MAX_ORDER if ARCH_FORCE_MAX_ORDER
default 10 if !ARCH_FORCE_MAX_ORDER

Or should we include ARCH_FORCE_PAGE_BLOCK_ORDER only on the
architectures that configure ARCH_FORCE_MAX_ORDER? In this case

arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/loongarch/Kconfig
arch/m68k/Kconfig.cpu
arch/mips/Kconfig
arch/nios2/Kconfig
arch/powerpc/Kconfig
arch/sh/mm/Kconfig
arch/sparc/Kconfig
arch/xtensa/Kconfig