linux/arch/s390/mm
Claudio Imbrenda a52c25848e KVM: s390: pv: handle secure storage violations for protected guests
A secure storage violation is triggered when a protected guest tries to
access secure memory that has been mapped erroneously, or that belongs
to a different protected guest or to the ultravisor.

With upcoming patches, protected guests will be able to trigger secure
storage violations in normal operation. This happens for example if a
protected guest is rebooted with deferred destroy enabled and the new
guest is also protected.

When the new protected guest touches pages that have not yet been
destroyed, and thus are accounted to the previous protected guest, a
secure storage violation is raised.

This patch adds handling of secure storage violations for protected
guests.

This exception is handled by first trying to destroy the page, because
it is expected to belong to a defunct protected guest where a destroy
should be possible. Note that a secure page can only be destroyed if
its protected VM does not have any CPUs, which only happens when the
protected VM is being terminated. If that fails, a normal export of
the page is attempted.

This means that pages that trigger the exception will be made
non-secure (in one way or another) before attempting to use them again
for a different secure guest.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Acked-by: Janosch Frank <frankja@linux.ibm.com>
Link: https://lore.kernel.org/r/20220628135619.32410-3-imbrenda@linux.ibm.com
Message-Id: <20220628135619.32410-3-imbrenda@linux.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
2022-07-13 14:42:11 +00:00
..
cmm.c s390/cmm: add missing virt_to_phys() conversion 2021-12-10 16:14:25 +01:00
dump_pagetables.c s390: add support for BEAR enhancement facility 2021-10-26 15:21:29 +02:00
extable.c s390/uaccess: use exception handler to zero result on get_user() failure 2022-06-01 12:03:17 +02:00
extmem.c s390/extmem: remove stale -ENOSPC comment and handling 2020-07-03 10:49:16 +02:00
fault.c KVM: s390: pv: handle secure storage violations for protected guests 2022-07-13 14:42:11 +00:00
gmap.c KVM: s390: pv: leak the topmost page table when destroy fails 2022-07-13 14:42:11 +00:00
hugetlbpage.c s390/mm,hugetlb: don't use pte_val()/pXd_val() as lvalue 2022-03-01 21:05:10 +01:00
init.c swiotlb: make the swiotlb_init interface more useful 2022-04-18 07:21:11 +02:00
kasan_init.c s390/mm: use set_pXd()/set_pte() helper functions everywhere 2022-03-01 21:05:10 +01:00
maccess.c s390/extable: move EX_TABLE define to asm-extable.h 2022-03-08 00:33:00 +01:00
Makefile s390/extable: move extable related functions to mm/extable.c 2022-03-08 00:33:00 +01:00
mmap.c s390/mmap: increase stack/mmap gap to 128MB 2022-04-25 13:54:14 +02:00
page-states.c s390/extable: move EX_TABLE define to asm-extable.h 2022-03-08 00:33:00 +01:00
pageattr.c s390/mm,pageattr: don't use pte_val()/pXd_val() as lvalue 2022-03-01 21:05:10 +01:00
pgalloc.c s390/mm: use CRST_ALLOC_ORDER instead of number 2022-02-09 22:56:04 +01:00
pgtable.c s390/mm: use non-quiescing sske for KVM switch to keyed guest 2022-06-01 12:03:16 +02:00
vmem.c s390: raise minimum supported machine generation to z10 2022-03-10 15:58:17 +01:00