]> asedeno.scripts.mit.edu Git - linux.git/commit
parisc: Switch from DISCONTIGMEM to SPARSEMEM
authorHelge Deller <deller@gmx.de>
Tue, 9 Apr 2019 19:52:35 +0000 (21:52 +0200)
committerHelge Deller <deller@gmx.de>
Fri, 3 May 2019 21:47:40 +0000 (23:47 +0200)
commitdbdf0760990583649bfaca75fd98f76afd5f3905
tree7caa3387834d951c5c55aad14b1dfd78cd262257
parent6b1370ae392b79ac3e2d053205f4107d4a55c102
parisc: Switch from DISCONTIGMEM to SPARSEMEM

The commit 1c30844d2dfe ("mm: reclaim small amounts of memory when an
external fragmentation event occurs") breaks memory management on a
parisc c8000 workstation with this memory layout:

0) Start 0x0000000000000000 End 0x000000003fffffff Size   1024 MB
1) Start 0x0000000100000000 End 0x00000001bfdfffff Size   3070 MB
2) Start 0x0000004040000000 End 0x00000040ffffffff Size   3072 MB

With the patch 1c30844d2dfe, the kernel will incorrectly reclaim the
first zone when it fills up, ignoring the fact that there are two
completely free zones. Basiscally, it limits cache size to 1GiB.

The parisc kernel is currently using the DISCONTIGMEM implementation,
but isn't NUMA. Avoid this issue or strange work-arounds by switching to
the more commonly used SPARSEMEM implementation.

Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Fixes: 1c30844d2dfe ("mm: reclaim small amounts of memory when an external fragmentation event occurs")
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/Kconfig
arch/parisc/include/asm/mmzone.h
arch/parisc/include/asm/page.h
arch/parisc/include/asm/sparsemem.h [new file with mode: 0644]
arch/parisc/kernel/parisc_ksyms.c
arch/parisc/mm/init.c