[PATCH 1/4] powerpc/64s: Add DEBUG_PAGEALLOC for radix
Michael Ellerman
mpe at ellerman.id.au
Mon Sep 19 17:00:26 AEST 2022
Nicholas Miehlbradt <nicholas at linux.ibm.com> writes:
> There is support for DEBUG_PAGEALLOC on hash but not on radix.
> Add support on radix.
>
> Signed-off-by: Nicholas Miehlbradt <nicholas at linux.ibm.com>
> ---
> arch/powerpc/mm/book3s64/radix_pgtable.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
> index db2f3d193448..483c99bfbde5 100644
> --- a/arch/powerpc/mm/book3s64/radix_pgtable.c
> +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
> @@ -30,6 +30,7 @@
> #include <asm/trace.h>
> #include <asm/uaccess.h>
> #include <asm/ultravisor.h>
> +#include <asm/set_memory.h>
>
> #include <trace/events/thp.h>
>
> @@ -503,6 +504,9 @@ static unsigned long __init radix_memory_block_size(void)
> {
> unsigned long mem_block_size = MIN_MEMORY_BLOCK_SIZE;
>
> + if (debug_pagealloc_enabled())
> + return PAGE_SIZE;
> +
> /*
> * OPAL firmware feature is set by now. Hence we are ok
> * to test OPAL feature.
> @@ -519,6 +523,9 @@ static unsigned long __init radix_memory_block_size(void)
>
> static unsigned long __init radix_memory_block_size(void)
> {
> + if (debug_pagealloc_enabled())
> + return PAGE_SIZE;
> +
> return 1UL * 1024 * 1024 * 1024;
> }
This value ends up in radix_mem_block_size, which is returned by
pnv_memory_block_size(), which is wired up as ppc_md.memory_block_size,
and that's called by memory_block_size_bytes().
And I thought that value had to be >= MIN_MEMORY_BLOCK_SIZE.
#define MIN_MEMORY_BLOCK_SIZE (1UL << SECTION_SIZE_BITS)
#define SECTION_SIZE_BITS 24
I would expect us to hit the panic in memory_dev_init().
So that's odd.
I suspect you need to leave radix_memory_block_size() alone, or at least
make sure you return MIN_MEMORY_BLOCK_SIZE when debug page alloc is
enabled.
We probably need a separate variable that holds the max page size used
for the linear mapping, and that would then be 1G in the normal case or
PAGE_SIZE in the debug page alloc case.
cheers
More information about the Linuxppc-dev
mailing list