kernel_optimize_test/arch/s390
Gerald Schaefer 2d1fc1eb9b s390/mm: simplify page table helpers for large entries
For pmds and puds, there are a couple of page table helper functions that
only make sense for large entries, like pxd_(mk)dirty/young/write etc.

We currently explicitly check if the entries are large, but in practice
those functions must never be used for normal entries, which point to lower
level page tables, so the code can be simplified.

This also fixes a theoretical bug, where common code could use one of the
functions before actually marking a pmd large, like this:

pmd = pmd_mkhuge(pmd_mkdirty(pmd))

With the current implementation, the resulting large pmd would not be dirty
as requested. This could in theory result in the loss of dirty information,
e.g. after collapsing into a transparent hugepage. Common code currently
always marks an entry large before using one of the functions, but there is
no hard requirement for this. The only requirement would be that it never
uses the functions for normal entries pointing to lower level page tables,
but they might be called before marking an entry large during its creation.

In order to avoid issues with future common code, and to simplify the page
table helpers, remove the checks for large entries and rely on common code
never using them for normal entries.

This was found by testing a patch from from Anshuman Khandual, which is
currently discussed on LKML ("mm/debug: Add tests validating architecture
page table helpers").

Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2019-10-31 17:20:53 +01:00
..
appldata proc/sysctl: add shared variables for range check 2019-07-18 17:08:07 -07:00
boot s390/boot: fix section name escaping 2019-10-31 17:20:52 +01:00
configs s390: update defconfigs 2019-10-04 16:37:33 +02:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2019-09-18 12:11:14 -07:00
hypfs Merge branch 'work.mount3' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-09-24 12:33:34 -07:00
include s390/mm: simplify page table helpers for large entries 2019-10-31 17:20:53 +01:00
kernel s390/process: avoid custom stack unwinding in get_wchan 2019-10-31 17:20:53 +01:00
kvm KVM: s390: mark __insn32_query() as __always_inline 2019-10-05 13:51:22 +02:00
lib s390/alternatives: make use of asm_inline 2019-10-31 17:20:51 +01:00
mm mm: treewide: clarify pgtable_page_{ctor,dtor}() naming 2019-09-26 10:10:44 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2019-09-06 16:49:17 +02:00
numa s390/numa: correct early_param handling 2019-08-26 12:51:17 +02:00
oprofile
pci s390/pci: mark function(s) __always_inline 2019-10-04 16:37:33 +02:00
purgatory crypto: sha256 - Merge crypto/sha256.h into crypto/sha.h 2019-09-05 14:54:54 +10:00
scripts s390/build: use size command to perform empty .bss check 2019-08-08 14:36:53 +02:00
tools s390: add support for IBM z15 machines 2019-09-13 12:19:14 +02:00
Kbuild
Kconfig s390/Kconfig: add z13s and z14 ZR1 to TUNE descriptions 2019-10-10 10:50:14 +02:00
Kconfig.debug
Makefile s390: add support for IBM z15 machines 2019-09-13 12:19:14 +02:00