s390/cmma: fix handling of swapper_pg_dir and invalid_pg_dir
authorHeiko Carstens <hca@linux.ibm.com>
Tue, 24 Oct 2023 08:15:20 +0000 (10:15 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Wed, 25 Oct 2023 13:08:29 +0000 (15:08 +0200)
commit84bb41d5df48868055d159d9247b80927f1f70f9
tree03c72792894391e36d4a6031cd76e64b7ec43e26
parent44d93045247661acbd50b1629e62f415f2747577
s390/cmma: fix handling of swapper_pg_dir and invalid_pg_dir

If the cmma no-dat feature is available the kernel page tables are walked
to identify and mark all pages which are used for address translation (all
region, segment, and page tables). In a subsequent loop all other pages are
marked as "no-dat" pages with the ESSA instruction.

This information is visible to the hypervisor, so that the hypervisor can
optimize purging of guest TLB entries. All pages used for swapper_pg_dir
and invalid_pg_dir are incorrectly marked as no-dat, which in turn can
result in incorrect guest TLB flushes.

Fix this by marking those pages correctly as being used for DAT.

Cc: <stable@vger.kernel.org>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/mm/page-states.c