[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1561409129.3058.1.camel@suse.de>
Date: Mon, 24 Jun 2019 22:45:29 +0200
From: Oscar Salvador <osalvador@...e.de>
To: Dan Williams <dan.j.williams@...el.com>, akpm@...ux-foundation.org
Cc: Michal Hocko <mhocko@...e.com>, Vlastimil Babka <vbabka@...e.cz>,
Logan Gunthorpe <logang@...tatee.com>,
Pavel Tatashin <pasha.tatashin@...een.com>, linux-mm@...ck.org,
linux-nvdimm@...ts.01.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v10 09/13] mm/sparsemem: Support sub-section hotplug
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@...llia2-desk3.amr.corp.intel.com
> Cc: Michal Hocko <mhocko@...e.com>
> Cc: Vlastimil Babka <vbabka@...e.cz>
> Cc: Logan Gunthorpe <logang@...tatee.com>
> Cc: Oscar Salvador <osalvador@...e.de>
> Cc: Pavel Tatashin <pasha.tatashin@...een.com>
> Signed-off-by: Dan Williams <dan.j.williams@...el.com>
Reviewed-by: Oscar Salvador <osalvador@...e.de>
--
Oscar Salvador
SUSE L3
Powered by blists - more mailing lists