Message ID | 20190423224748.3765-13-fancer.lancer@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | mips: Post-bootmem-memblock transition fixes | expand |
On Wed, Apr 24, 2019 at 01:47:48AM +0300, Serge Semin wrote: > Since memblock-patchset was introduced the reserved-memory nodes are > supported being declared in dt-files. So these nodes are actually parsed > during the arch setup procedure when the early_init_fdt_scan_reserved_mem() > method is called. But some of the features like private reserved memory > pools aren't available at the moment, since OF_RESERVED_MEM isn't enabled > for the MIPS platform. Lets fix it by enabling the config. > > But due to the arch-specific boot mem_map container utilization we need > to manually call the fdt_init_reserved_mem() method after all the available > and reserved memory has been moved to memblock. The function call performed > before bootmem_init() fails due to the lack of any memblock memory regions > to allocate from at that stage. Architectures should not select this symbol directly, it will be automatically enabled if either DMA_DECLARE_COHERENT or DMA_CMA are enabled, which are required for the actual underlying memory allocators.
On Tue, Apr 23, 2019 at 11:17:50PM -0700, Christoph Hellwig wrote: Hello Christoph > On Wed, Apr 24, 2019 at 01:47:48AM +0300, Serge Semin wrote: > > Since memblock-patchset was introduced the reserved-memory nodes are > > supported being declared in dt-files. So these nodes are actually parsed > > during the arch setup procedure when the early_init_fdt_scan_reserved_mem() > > method is called. But some of the features like private reserved memory > > pools aren't available at the moment, since OF_RESERVED_MEM isn't enabled > > for the MIPS platform. Lets fix it by enabling the config. > > > > But due to the arch-specific boot mem_map container utilization we need > > to manually call the fdt_init_reserved_mem() method after all the available > > and reserved memory has been moved to memblock. The function call performed > > before bootmem_init() fails due to the lack of any memblock memory regions > > to allocate from at that stage. > > Architectures should not select this symbol directly, it will be > automatically enabled if either DMA_DECLARE_COHERENT or DMA_CMA > are enabled, which are required for the actual underlying memory > allocators. Thanks for the comment. I should have checked this before porting the patch from kernel 4.9. This symbol has been selected there by the platforms. I'll remove the forcible selection of the config in the next patchset revision. -Sergey
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 4a5f5b0ee9a9..0bf9e89e4023 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2988,6 +2988,7 @@ config USE_OF bool select OF select OF_EARLY_FLATTREE + select OF_RESERVED_MEM select IRQ_DOMAIN config UHI_BOOT diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index fbd216b4e929..ab349d2381c3 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -27,6 +27,7 @@ #include <linux/dma-contiguous.h> #include <linux/decompress/generic.h> #include <linux/of_fdt.h> +#include <linux/of_reserved_mem.h> #include <asm/addrspace.h> #include <asm/bootinfo.h> @@ -825,6 +826,8 @@ static void __init arch_mem_init(char **cmdline_p) memblock_reserve(__pa_symbol(&__nosave_begin), __pa_symbol(&__nosave_end) - __pa_symbol(&__nosave_begin)); + fdt_init_reserved_mem(); + memblock_dump_all(); early_memtest(PFN_PHYS(min_low_pfn), PFN_PHYS(max_low_pfn));
Since memblock-patchset was introduced the reserved-memory nodes are supported being declared in dt-files. So these nodes are actually parsed during the arch setup procedure when the early_init_fdt_scan_reserved_mem() method is called. But some of the features like private reserved memory pools aren't available at the moment, since OF_RESERVED_MEM isn't enabled for the MIPS platform. Lets fix it by enabling the config. But due to the arch-specific boot mem_map container utilization we need to manually call the fdt_init_reserved_mem() method after all the available and reserved memory has been moved to memblock. The function call performed before bootmem_init() fails due to the lack of any memblock memory regions to allocate from at that stage. Signed-off-by: Serge Semin <fancer.lancer@gmail.com> --- arch/mips/Kconfig | 1 + arch/mips/kernel/setup.c | 3 +++ 2 files changed, 4 insertions(+)