[PATCH v1 2/2] mm: enforce pageblock_order < MAX_ORDER
Zi Yan
ziy at nvidia.com
Tue Feb 15 05:05:16 AEDT 2022
On 14 Feb 2022, at 12:41, David Hildenbrand wrote:
> Some places in the kernel don't really expect pageblock_order >=
> MAX_ORDER, and it looks like this is only possible in corner cases:
>
> 1) CONFIG_DEFERRED_STRUCT_PAGE_INIT we'll end up freeing pageblock_order
> pages via __free_pages_core(), which cannot possibly work.
>
> 2) find_zone_movable_pfns_for_nodes() will roundup the ZONE_MOVABLE
> start PFN to MAX_ORDER_NR_PAGES. Consequently with a bigger
> pageblock_order, we could have a single pageblock partially managed by
> two zones.
>
> 3) compaction code runs into __fragmentation_index() with order
> >= MAX_ORDER, when checking WARN_ON_ONCE(order >= MAX_ORDER). [1]
>
> 4) mm/page_reporting.c won't be reporting any pages with default
> page_reporting_order == pageblock_order, as we'll be skipping the
> reporting loop inside page_reporting_process_zone().
>
> 5) __rmqueue_fallback() will never be able to steal with
> ALLOC_NOFRAGMENT.
>
> pageblock_order >= MAX_ORDER is weird either way: it's a pure
> optimization for making alloc_contig_range(), as used for allcoation of
> gigantic pages, a little more reliable to succeed. However, if there is
> demand for somewhat reliable allocation of gigantic pages, affected setups
> should be using CMA or boottime allocations instead.
>
> So let's make sure that pageblock_order < MAX_ORDER and simplify.
>
> [1] https://lkml.kernel.org/r/87r189a2ks.fsf@linux.ibm.com
>
> Signed-off-by: David Hildenbrand <david at redhat.com>
> ---
> drivers/virtio/virtio_mem.c | 9 +++------
> include/linux/cma.h | 3 +--
> include/linux/pageblock-flags.h | 7 +++++--
> mm/Kconfig | 3 +++
> mm/page_alloc.c | 32 ++++++++------------------------
> 5 files changed, 20 insertions(+), 34 deletions(-)
LGTM. Thanks. Reviewed-by: Zi Yan <ziy at nvidia.com>
--
Best Regards,
Yan, Zi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 854 bytes
Desc: OpenPGP digital signature
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20220214/caabe402/attachment.sig>
More information about the Linuxppc-dev
mailing list