Re: Weirdness in __alloc_bootmem_node_high

From: Sam Ravnborg
Date: Tue Apr 24 2012 - 02:32:35 EST


On Sun, Apr 22, 2012 at 10:00:54PM -0400, David Miller wrote:
>
> So here is a sparc64 conversion to NO_BOOTMEM.
>
> Critically, I had to fix __alloc_bootmem_node to do what it promised
> to do. Which is retry the allocation without the goal if doing so
> with the goal fails.
>
> Otherwise all bootmem allocations with goal set to
> __pa(MAX_DMA_ADDRESS) fail on sparc64, because we set that to ~0 so
> effectively all such allocations evaluate roughly to "goal=~0,
> limit=~0" which can never succeed.
>
> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
> index db4e821..3763302 100644
> --- a/arch/sparc/Kconfig
> +++ b/arch/sparc/Kconfig
> @@ -109,6 +109,9 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNK
> config NEED_PER_CPU_PAGE_FIRST_CHUNK
> def_bool y if SPARC64
>
> +config NO_BOOTMEM
> + def_bool y if SPARC64

mm/Kconfig define NO_BOOTMEM so you can just add a "select NO_BOOTMEM"
to SPARC64.

Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/