On Tue, 2019-06-18 at 22:52 -0700, Dan Williams wrote: > The libnvdimm sub-system has suffered a series of hacks and broken > workarounds for the memory-hotplug implementation's awkward > section-aligned (128MB) granularity. For example the following > backtrace > is emitted when attempting arch_add_memory() with physical address > ranges that intersect 'System RAM' (RAM) with 'Persistent Memory' > (PMEM) > within a given section: > > # cat /proc/iomem | grep -A1 -B1 Persistent\ Memory > 100000000-1ffffffff : System RAM > 200000000-303ffffff : Persistent Memory (legacy) > 304000000-43fffffff : System RAM > 440000000-23ffffffff : Persistent Memory > 2400000000-43bfffffff : Persistent Memory > 2400000000-43bfffffff : namespace2.0 > > WARNING: CPU: 38 PID: 928 at arch/x86/mm/init_64.c:850 > add_pages+0x5c/0x60 > [..] > RIP: 0010:add_pages+0x5c/0x60 > [..] > Call Trace: > devm_memremap_pages+0x460/0x6e0 > pmem_attach_disk+0x29e/0x680 [nd_pmem] > ? nd_dax_probe+0xfc/0x120 [libnvdimm] > nvdimm_bus_probe+0x66/0x160 [libnvdimm] > > It was discovered that the problem goes beyond RAM vs PMEM collisions > as > some platform produce PMEM vs PMEM collisions within a given section. > The libnvdimm workaround for that case revealed that the libnvdimm > section-alignment-padding implementation has been broken for a long > while. A fix for that long-standing breakage introduces as many > problems > as it solves as it would require a backward-incompatible change to > the > namespace metadata interpretation. Instead of that dubious route [1], > address the root problem in the memory-hotplug implementation. > > Note that EEXIST is no longer treated as success as that is how > sparse_add_section() reports subsection collisions, it was also > obviated > by recent changes to perform the request_region() for 'System RAM' > before arch_add_memory() in the add_memory() sequence. > > [1]: https://lore.kernel.org/r/155000671719.348031.234736316014111923 > [email protected] > Cc: Michal Hocko <[email protected]> > Cc: Vlastimil Babka <[email protected]> > Cc: Logan Gunthorpe <[email protected]> > Cc: Oscar Salvador <[email protected]> > Cc: Pavel Tatashin <[email protected]> > Signed-off-by: Dan Williams <[email protected]>
Reviewed-by: Oscar Salvador <[email protected]> -- Oscar Salvador SUSE L3

