From: Christian Borntraeger Date: Mon, 17 Jan 2022 17:40:32 +0000 (+0100) Subject: s390/nmi: handle vector validity failures for KVM guests X-Git-Tag: accepted/tizen/unified/20230118.172025~2845 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfd2a7f8deaa6c86bcb12dad82a8b8a871d8aff2;p=platform%2Fkernel%2Flinux-rpi.git s390/nmi: handle vector validity failures for KVM guests commit f094a39c6ba168f2df1edfd1731cca377af5f442 upstream. The machine check validity bit tells about the context. If a KVM guest was running the bit tells about the guest validity and the host state is not affected. As a guest can disable the guest validity this might result in unwanted host errors on machine checks. Cc: stable@vger.kernel.org Fixes: c929500d7a5a ("s390/nmi: s390: New low level handling for machine check happening in guest") Signed-off-by: Christian Borntraeger Reviewed-by: Heiko Carstens Signed-off-by: Heiko Carstens Signed-off-by: Greg Kroah-Hartman --- diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c index dffc65d..a50f2ff 100644 --- a/arch/s390/kernel/nmi.c +++ b/arch/s390/kernel/nmi.c @@ -273,7 +273,14 @@ static int notrace s390_validate_registers(union mci mci, int umode) /* Validate vector registers */ union ctlreg0 cr0; - if (!mci.vr) { + /* + * The vector validity must only be checked if not running a + * KVM guest. For KVM guests the machine check is forwarded by + * KVM and it is the responsibility of the guest to take + * appropriate actions. The host vector or FPU values have been + * saved by KVM and will be restored by KVM. + */ + if (!mci.vr && !test_cpu_flag(CIF_MCCK_GUEST)) { /* * Vector registers can't be restored. If the kernel * currently uses vector registers the system is