[PATCH v2 0/7] mm/hotplug: Only use subsection map in VMEMMAP case

Baoquan He
2020-02-20T04:33:36Z

Memory sub-section hotplug was added to fix the issue that nvdimm could
be mapped at non-section aligned starting address. A subsection map is
added into struct mem_section_usage to implement it. However, sub-section
is only supported in VMEMMAP case. Hence there's no need to operate
subsection map in SPARSEMEM|!VMEMMAP case. In this patchset, change
codes to make sub-section map and the relevant operation only available
in VMEMMAP case.

And since sub-section hotplug added, the hot add/remove functionality
have been broken in SPARSEMEM|!VMEMMAP case. Wei Yang and I, each of us
make one patch to fix one of the failures. In this patchset, the patch
1/7 from me is used to fix the hot remove failure. Wei Yang's patch has
been merged by Andrew.

Changelog:
v1->v2:
Move the hot remove fixing patch to the front so that people can
back port it to easier. Suggested by David.

Split the old patch which invalidate the sub-section map in
!VMEMMAP case into two patches, patch 4/7, and patch 6/7. This
makes patch reviewing easier. David by David.

Take Wei Yang's fixing patch out to post alone, since it has been
reviewed and acked by people. Suggested by Andrew.

Fix a code comment mistake in the current patch 2/7. Found out by
Wei Yang during reviewing.

Baoquan He (7):
mm/hotplug: fix hot remove failure in SPARSEMEM|!VMEMMAP case
mm/sparse.c: introduce new function fill_subsection_map()
mm/sparse.c: introduce a new function clear_subsection_map()
mm/sparse.c: only use subsection map in VMEMMAP case
mm/sparse.c: add code comment about sub-section hotplug
mm/sparse.c: move subsection_map related codes together
mm/sparse.c: Use __get_free_pages() instead in
populate_section_memmap()

include/linux/mmzone.h | 2 +
mm/sparse.c | 178 +++++++++++++++++++++++++++++------------
2 files changed, 127 insertions(+), 53 deletions(-)

--
2.17.2