Re: [PATCH v10 09/13] mm/sparsemem: Support sub-section hotplug

From: Oscar Salvador
Date: Mon Jun 24 2019 - 16:45:34 EST


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
> 7.stgit@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Cc: Michal Hocko <mhocko@xxxxxxxx>
> Cc: Vlastimil Babka <vbabka@xxxxxxx>
> Cc: Logan Gunthorpe <logang@xxxxxxxxxxxx>
> Cc: Oscar Salvador <osalvador@xxxxxxx>
> Cc: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx>
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

Reviewed-by: Oscar Salvador <osalvador@xxxxxxx>


--
Oscar Salvador
SUSE L3