Messages in this thread | | | From | Pavel Tatashin <> | Subject | [PATCH v5 0/5] sparse_init rewrite | Date | Thu, 12 Jul 2018 16:37:25 -0400 |
| |
Changelog: v5 - v4 - Fixed the issue that was reported on ppc64 when CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER is removed - Consolidated the new buffer allocation between vmemmap and non-vmemmap variants of sparse layout. - Removed all review-by comments, because I had to do significant amount of changes compared to previous version and need another round of review. - I also would appreciate if those who reported problems with PPC64 could test this change. v4 - v3 - Addressed comments from Dave Hansen 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 http://lkml.kernel.org/r/20180628062857.29658-1-bhe@redhat.com
The buffers are large enough to cause machine stop to boot on small memory systems.
Another benefit of these changes is that they also obsolete CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER.
Pavel Tatashin (5): mm/sparse: abstract sparse buffer allocations mm/sparse: use the new sparse buffer functions in non-vmemmap mm/sparse: move buffer init/fini to the common place mm/sparse: add new sparse_init_nid() and sparse_init() mm/sparse: delete old sprase_init and enable new one
include/linux/mm.h | 7 +- mm/Kconfig | 4 - mm/sparse-vmemmap.c | 59 +-------- mm/sparse.c | 300 +++++++++++++++----------------------------- 4 files changed, 105 insertions(+), 265 deletions(-)
-- 2.18.0
| |