[PATCH v3 0/2] sparse_init rewrite
From: Pavel Tatashin
Date: Sun Jul 01 2018 - 22:04:59 EST
v3 - v1
- Fixed two issues found by Baoquan He
v1 - v2
- Addressed comments from Oscar Salvador
In sparse_init() we allocate two large buffers to temporary hold usemap and
memmap for the whole machine. However, we can avoid doing that if we
changed sparse_init() to operated on per-node bases instead of doing it on
the whole machine beforehand.
As shown by Baoquan
The buffers are large enough to cause machine stop to boot on small memory
These patches should be applied on top of Baoquan's work, as
CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER is removed in that work.
For the ease of review, I split this work so the first patch only adds new
interfaces, the second patch enables them, and removes the old ones.
Pavel Tatashin (2):
mm/sparse: add sparse_init_nid()
mm/sparse: start using sparse_init_nid(), and remove old code
include/linux/mm.h | 9 +-
mm/sparse-vmemmap.c | 44 ++++---
mm/sparse.c | 279 +++++++++++++++-----------------------------
3 files changed, 125 insertions(+), 207 deletions(-)