[PATCH 01/21] mm: memblock: replace dereferences of memblock_region.nid with API calls

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport There are several places in the code that directly dereference memblock_region.nid despite this field being defined only when CONFIG_HAVE_MEMBLOCK_NODE_MAP=y. Replace these with calls to memblock_get_region_nid() to improve code robustness and to avoid possible breakage when

[PATCH 00/21] mm: rework free_area_init*() funcitons

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport Hi, After the discussion [1] about removal of CONFIG_NODES_SPAN_OTHER_NODES and CONFIG_HAVE_MEMBLOCK_NODE_MAP options, I took it a bit further and updated the node/zone initialization. Since all architectures have memblock, it is possible to use only the newer version of fr

[PATCH 02/21] mm: make early_pfn_to_nid() and related defintions close to each other

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The early_pfn_to_nid() and it's helper __early_pfn_to_nid() are spread around include/linux/mm.h, include/linux/mmzone.h and mm/page_alloc.c. Drop unused stub for __early_pfn_to_nid() and move its actual generic implementation close to its users. Signed-off-by: Mike Rapoport

[PATCH 04/21] mm: free_area_init: use maximal zone PFNs rather than zone sizes

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport Currently, architectures that use free_area_init() to initialize memory map and node and zone structures need to calculate zone and hole sizes. We can use free_area_init_nodes() instead and let it detect the zone boundaries while the architectures will only have to supply the

[PATCH 03/21] mm: remove CONFIG_HAVE_MEMBLOCK_NODE_MAP option

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The CONFIG_HAVE_MEMBLOCK_NODE_MAP is used to differentiate initialization of nodes and zones structures between the systems that have region to node mapping in memblock and those that don't. Currently all the NUMA architectures enable this option and for the non-NUMA systems

[PATCH 05/21] mm: use free_area_init() instead of free_area_init_nodes()

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() has effectively became a wrapper for free_area_init_nodes() and there is no point of keeping it. Still free_area_init() name is shorter and more general as it does not imply necessity to initialize multiple nodes. Rename free_area_init_nodes() to free_are

[PATCH 06/21] alpha: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 07/21] arm: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 08/21] arm64: simplify detection of memory zone boundaries for UMA configs

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 12/21] sparc32: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 11/21] parisc: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 09/21] csky: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 10/21] m68k: mm: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 13/21] unicore32: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 15/21] mm: memmap_init: iterate over memblock regions rather that check each PFN

2020-04-12 Thread Mike Rapoport
From: Baoquan He When called during boot the memmap_init_zone() function checks if each PFN is valid and actually belongs to the node being initialized using early_pfn_valid() and early_pfn_in_nid(). Each such check may cost up to O(log(n)) where n is the number of memory banks, so for large amo

[PATCH 16/21] mm: remove early_pfn_in_nid() and CONFIG_NODES_SPAN_OTHER_NODES

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The commit f47ac088c406 ("mm: memmap_init: iterate over memblock regions rather that check each PFN") made early_pfn_in_nid() obsolete and since CONFIG_NODES_SPAN_OTHER_NODES is only used to pick a stub or a real implementation of early_pfn_in_nid() it is also not needed anymo

[PATCH 14/21] xtensa: simplify detection of memory zone boundaries

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init() function only requires the definition of maximal PFN for each of the supported zone rater than calculation of actual zone sizes and the sizes of the holes between the zones. After removal of CONFIG_HAVE_MEMBLOCK_NODE_MAP the free_area_init() is available

[PATCH 19/21] mm: clean up free_area_init_node() and its helpers

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init_node() now always uses memblock info and the zone PFN limits so it does not need the backwards compatibility functions to calculate the zone spanned and absent pages. The removal of the compat_ versions of zone_{abscent,spanned}_pages_in_node() in turn, make

[PATCH 17/21] mm: free_area_init: allow defining max_zone_pfn in descending order

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport Some architectures (e.g. ARC) have the ZONE_HIGHMEM zone below the ZONE_NORMAL. Allowing free_area_init() parse max_zone_pfn array even it is sorted in descending order allows using free_area_init() on such architectures. Add top -> down traversal of max_zone_pfn array in fre

[PATCH 18/21] mm: rename free_area_init_node() to free_area_init_memoryless_node()

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The free_area_init_node() is only used by x86 to initialize a memory-less nodes. Make its name reflect this and drop all the function parameters except node ID as they are anyway zero. Signed-off-by: Mike Rapoport --- arch/x86/mm/numa.c | 5 + include/linux/mm.h | 9 +++

[PATCH 20/21] mm: simplify find_min_pfn_with_active_regions()

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport The find_min_pfn_with_active_regions() calls find_min_pfn_for_node() with nid parameter set to MAX_NUMNODES. This makes the find_min_pfn_for_node() traverse all memblock memory regions although the first PFN in the system can be easily found with memblock_start_of_DRAM(). Use

[PATCH 21/21] docs/vm: update memory-models documentation

2020-04-12 Thread Mike Rapoport
From: Mike Rapoport to reflect the updates to free_area_init() family of functions. Signed-off-by: Mike Rapoport --- Documentation/vm/memory-model.rst | 9 - 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Documentation/vm/memory-model.rst b/Documentation/vm/memory-model

[PATCH] arc: ptrace: hard-code "arc" instead of UTS_MACHINE

2020-04-12 Thread Masahiro Yamada
ARC uses the UTS_MACHINE defined in the top Makefile as follows: UTS_MACHINE := $(ARCH) We know it is "arc" when we are building the kernel for ARC. Hard-code user_regset_view::name, like many other architectures do. Signed-off-by: Masahiro Yamada --- arch/arc/kernel/Makefile | 3 --- a

[PATCH] arc: remove #ifndef CONFIG_AS_CFI_SIGNAL_FRAME

2020-04-12 Thread Masahiro Yamada
CONFIG_AS_CFI_SIGNAL_FRAME is never defined for ARC. Suggested-by: Nick Desaulniers Signed-off-by: Masahiro Yamada --- arch/arc/kernel/unwind.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arc/kernel/unwind.c b/arch/arc/kernel/unwind.c index 27ea64b1fa33..f87758a6851b 100644 --- a

Re: [PATCH] arc: ptrace: hard-code "arc" instead of UTS_MACHINE

2020-04-12 Thread Vineet Gupta
Hi Masahiro San, On 4/12/20 6:32 PM, Masahiro Yamada wrote: > ARC uses the UTS_MACHINE defined in the top Makefile as follows: > > UTS_MACHINE := $(ARCH) > > We know it is "arc" when we are building the kernel for ARC. > Hard-code user_regset_view::name, like many other architectures do. >

Re: [PATCH] arc: remove #ifndef CONFIG_AS_CFI_SIGNAL_FRAME

2020-04-12 Thread Vineet Gupta
On 4/12/20 7:05 PM, Masahiro Yamada wrote: > CONFIG_AS_CFI_SIGNAL_FRAME is never defined for ARC. > > Suggested-by: Nick Desaulniers Where, how ? > Signed-off-by: Masahiro Yamada > --- > > arch/arc/kernel/unwind.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/arch/arc/kernel/unw

Re: [PATCH] arc: remove #ifndef CONFIG_AS_CFI_SIGNAL_FRAME

2020-04-12 Thread Masahiro Yamada
On Mon, Apr 13, 2020 at 2:38 PM Vineet Gupta wrote: > > On 4/12/20 7:05 PM, Masahiro Yamada wrote: > > CONFIG_AS_CFI_SIGNAL_FRAME is never defined for ARC. > > > > Suggested-by: Nick Desaulniers > > Where, how ? I was working on various cleanups of x86 CONFIG_AS_* macros. https://lore.kernel.o