]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
KVM: s390: instruction-execution-protection support
authorJanosch Frank <frankja@linux.vnet.ibm.com>
Thu, 4 Aug 2016 07:57:36 +0000 (09:57 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 30 Jan 2017 10:17:28 +0000 (11:17 +0100)
The new Instruction Execution Protection needs to be enabled before
the guest can use it. Therefore we pass the IEP facility bit to the
guest and enable IEP interpretation.

Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/kvm-s390.c
arch/s390/kvm/vsie.c
arch/s390/tools/gen_facilities.c

index bec71e902be3f8030697084540130227ecb55088..e5130818fb0382e8e294e696a222103667a2b790 100644 (file)
@@ -1938,6 +1938,8 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 
        if (test_kvm_facility(vcpu->kvm, 8) && sclp.has_pfmfi)
                vcpu->arch.sie_block->ecb2 |= 0x08;
+       if (test_kvm_facility(vcpu->kvm, 130))
+               vcpu->arch.sie_block->ecb2 |= 0x20;
        vcpu->arch.sie_block->eca = 0x1002000U;
        if (sclp.has_cei)
                vcpu->arch.sie_block->eca |= 0x80000000U;
index d8673e243f13bf7315e36203890401cae191cea2..ed62c6d57d93bfa5d362a929f1e338c0ca46dc3a 100644 (file)
@@ -324,6 +324,9 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
        /* Run-time-Instrumentation */
        if (test_kvm_facility(vcpu->kvm, 64))
                scb_s->ecb3 |= scb_o->ecb3 & 0x01U;
+       /* Instruction Execution Prevention */
+       if (test_kvm_facility(vcpu->kvm, 130))
+               scb_s->ecb2 |= scb_o->ecb2 & 0x20U;
        if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_SIIF))
                scb_s->eca |= scb_o->eca & 0x00000001U;
        if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_IB))
index b6ac8dfee0014d77a63c4d27aba9e6a7ee94f00f..0cf802de52a1d2d6917f93858bd4feae22d4abeb 100644 (file)
@@ -80,6 +80,7 @@ static struct facility_def facility_defs[] = {
                        76, /* msa extension 3 */
                        77, /* msa extension 4 */
                        78, /* enhanced-DAT 2 */
+                       130, /* instruction-execution-protection */
                        131, /* enhanced-SOP 2 and side-effect */
                        -1  /* END */
                }