]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
KVM: s390: vsie: support shared IPTE-interlock facility
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Wed, 25 Nov 2015 08:59:49 +0000 (09:59 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 21 Jun 2016 07:43:40 +0000 (09:43 +0200)
As we forward the whole SCA provided by guest 2, we can directly forward
SIIF if available.

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/include/uapi/asm/kvm.h
arch/s390/kvm/kvm-s390.c
arch/s390/kvm/vsie.c

index c5e4537e96d92e1bff6967dbead4269508f1208c..1d2e820f763d409c000b0d657920acd05e839d5f 100644 (file)
@@ -100,6 +100,7 @@ struct kvm_s390_vm_cpu_machine {
 #define KVM_S390_VM_CPU_FEAT_ESOP      0
 #define KVM_S390_VM_CPU_FEAT_SIEF2     1
 #define KVM_S390_VM_CPU_FEAT_64BSCAO   2
+#define KVM_S390_VM_CPU_FEAT_SIIF      3
 struct kvm_s390_vm_cpu_feat {
        __u64 feat[16];
 };
index e0c5a57bf58b9366331b7972760db38284962c8e..d735612f908101a478d198c72c06bb73e90c1401 100644 (file)
@@ -267,6 +267,8 @@ static void kvm_s390_cpu_feat_init(void)
        allow_cpu_feat(KVM_S390_VM_CPU_FEAT_SIEF2);
        if (sclp.has_64bscao)
                allow_cpu_feat(KVM_S390_VM_CPU_FEAT_64BSCAO);
+       if (sclp.has_siif)
+               allow_cpu_feat(KVM_S390_VM_CPU_FEAT_SIIF);
 }
 
 int kvm_arch_init(void *opaque)
index 44e66c32902619dfbc69955980ad386d6efe0f76..1615ed37f7dad05007be7b4a9816a2baa890e4bc 100644 (file)
@@ -315,6 +315,8 @@ 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;
+       if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_SIIF))
+               scb_s->eca |= scb_o->eca & 0x00000001U;
 
        prepare_ibc(vcpu, vsie_page);
        rc = shadow_crycb(vcpu, vsie_page);