On Tue, Jun 18, 2019 at 10:51:33PM -0700, Dan Williams wrote:
Changes since v9 [1]:
Fix multiple issues related to the fact that pfn_valid() has traditionally returned true for any pfn in an 'early' (onlined at boot) section regardless of whether that pfn represented 'System RAM'. Teach pfn_valid() to maintain its traditional behavior in the presence of subsections. Specifically, subsection precision for pfn_valid() is only considered for non-early / hot-plugged sections. (Qian)
Related to the first item introduce a SECTION_IS_EARLY (->section_mem_map flag) to remove the existing hacks for determining an early section by looking at whether the usemap was allocated from the slab.
Kill off the EEXIST hackery in __add_pages(). It breaks (arch_add_memory() false-positive) the detection of subsection collisions reported by section_activate(). It is also obviated by David's recent reworks to move the 'System RAM' request_region() earlier in the add_memory() sequence().
Switch to an arch-independent / static subsection-size of 2MB. Otherwise, a per-arch subsection-size is a roadblock on the path to persistent memory namespace compatibility across archs. (Jeff)
Update the changelog for "libnvdimm/pfn: Fix fsdax-mode namespace info-block zero-fields" to clarify that the "Cc: stable" is only there as safety measure for a distro that decides to backport "libnvdimm/pfn: Stop padding pmem namespaces to section alignment", otherwise there is no known bug exposure in older kernels. (Andrew)
Drop some redundant subsection checks (Oscar)
Collect some reviewed-bys
Hi Dan,
I am planning to give it a final review later tomorrow. Now that this work is settled, I took the chance to dust off and push my vmemmap-hotplug, and I am working on that right now. But I would definetely come back to this tomorrow.
Thanks for the work