]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: s390: remove change-recording override support
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 31 Mar 2017 10:50:48 +0000 (12:50 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 3 Apr 2017 10:45:08 +0000 (12:45 +0200)
commit0fb94dc2d1c9f0e8c635bb07a33d52c8ecd42984
tree3ac2a82e5fecac467afbfed03afe9ab09c347e64
parent972bf42af2e0540797254b6ac6cecd7495749afd
KVM: s390: remove change-recording override support

Change-recording override (CO) was never implemented in any
machine. According to the architecture it is unpredictable if a
translation-specification exception will be recognized if the bit is
set and EDAT1 does not apply.
Therefore the easiest solution is to simply ignore the bit.

This also fixes commit ed28d0ea4b13 ("KVM: s390:
instruction-execution-protection support"). A guest may enable
instruction-execution-protection (IEP) but not EDAT1. In such a case
the guest_translate() function (arch/s390/kvm/gaccess.c) will report a
specification exception on pages that have the IEP bit set while it
should not.

It might make sense to add full IEP support to guest_translate() and
the GACC_IFETCH case. However, as far as I can tell the GACC_IFETCH
case is currently only used after an instruction was executed in order
to fetch the failing instruction. So there is no additional problem
*currently*.

Fixes: ed28d0ea4b13 ("KVM: s390: instruction-execution-protection support")
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/gaccess.c