linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC 0/3] Regressions due to 7b79d10a2d64 ("mm: convert kmalloc_section_memmap() to populate_section_memmap()") and Kasan initialization on
@ 2017-02-15 20:58 Nicolai Stange
  2017-02-15 20:58 ` [RFC 1/3] sparse-vmemmap: let vmemmap_populate_basepages() cover the whole range Nicolai Stange
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Nicolai Stange @ 2017-02-15 20:58 UTC (permalink / raw)
  To: Dan Williams; +Cc: Andrew Morton, linux-mm, Nicolai Stange

Hi Dan,

your recent commit 7b79d10a2d64 ("mm: convert kmalloc_section_memmap() to
populate_section_memmap()") seems to cause some issues with respect to
Kasan initialization on x86.

This is because Kasan's initialization (ab)uses the arch provided
vmemmap_populate().

The first one is a boot failure, see [1/3]. The commit before the
aforementioned one works fine.

The second one, i.e. [2/3], is something that hit my eye while browsing
the source and I verified that this is indeed an issue by printk'ing and
dumping the page tables.

The third one are excessive warnings from vmemmap_verify() due to Kasan's
NUMA_NO_NODE page populations.


I'll be travelling the next two days and certainly not be able to respond
or polish these patches any further. Furthermore, the next merge window is
close. So please, take these three patches as bug reports only, meant to
illustrate the issues. Feel free to use, change and adopt them however
you deemed best.

That being said,
- [2/3] will break arm64 due to the current lack of a pmd_large().
- Maybe it's easier and better to restore former behaviour by letting
  Kasan's shadow initialization on x86 use vmemmap_populate_hugepages()
  directly rather than vmemmap_populate(). This would require x86_64
  implying X86_FEATURE_PSE though. I'm not sure whether this holds,
  in particular not since the vmemmap_populate() from
  arch/x86/mm/init_64.c checks for it.

Thanks,

Nicolai

Nicolai Stange (3):
  sparse-vmemmap: let vmemmap_populate_basepages() cover the whole range
  sparse-vmemmap: make vmemmap_populate_basepages() skip HP mapped
    ranges
  sparse-vmemmap: let vmemmap_verify() ignore NUMA_NO_NODE requests

 mm/sparse-vmemmap.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

-- 
2.11.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-03-10  8:45 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-15 20:58 [RFC 0/3] Regressions due to 7b79d10a2d64 ("mm: convert kmalloc_section_memmap() to populate_section_memmap()") and Kasan initialization on Nicolai Stange
2017-02-15 20:58 ` [RFC 1/3] sparse-vmemmap: let vmemmap_populate_basepages() cover the whole range Nicolai Stange
2017-02-15 20:58 ` [RFC 2/3] sparse-vmemmap: make vmemmap_populate_basepages() skip HP mapped ranges Nicolai Stange
2017-02-15 20:58 ` [RFC 3/3] sparse-vmemmap: let vmemmap_verify() ignore NUMA_NO_NODE requests Nicolai Stange
2017-02-15 21:10 ` [RFC 0/3] Regressions due to 7b79d10a2d64 ("mm: convert kmalloc_section_memmap() to populate_section_memmap()") and Kasan initialization on Andrew Morton
2017-02-15 21:26   ` Dan Williams
2017-02-15 21:54     ` Andrew Morton
2017-02-25 19:03 ` Dan Williams
2017-02-27  9:34   ` Dmitry Vyukov
2017-03-03 16:08   ` Andrey Ryabinin
2017-03-10  0:58     ` Dan Williams
2017-03-10  8:46       ` Andrey Ryabinin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).