diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2015-11-24 10:53:51 -0500 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2016-06-21 03:43:42 -0400 |
commit | 5630a8e82b1ee4d13daa500c045603c5b4801fd9 (patch) | |
tree | dc29a1b7fb0defaaeeb5b116c35d1d9c7155fd35 /arch | |
parent | a1b7b9b286c0157748922526ecb353e550209833 (diff) |
KVM: s390: vsie: support intervention-bypass
We can easily enable intervention bypass for guest 2, so it can use it
for guest 3.
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/include/uapi/asm/kvm.h | 1 | ||||
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 2 | ||||
-rw-r--r-- | arch/s390/kvm/vsie.c | 2 |
3 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/include/uapi/asm/kvm.h b/arch/s390/include/uapi/asm/kvm.h index 9ed07479714f..347f4f61b656 100644 --- a/arch/s390/include/uapi/asm/kvm.h +++ b/arch/s390/include/uapi/asm/kvm.h | |||
@@ -103,6 +103,7 @@ struct kvm_s390_vm_cpu_machine { | |||
103 | #define KVM_S390_VM_CPU_FEAT_SIIF 3 | 103 | #define KVM_S390_VM_CPU_FEAT_SIIF 3 |
104 | #define KVM_S390_VM_CPU_FEAT_GPERE 4 | 104 | #define KVM_S390_VM_CPU_FEAT_GPERE 4 |
105 | #define KVM_S390_VM_CPU_FEAT_GSLS 5 | 105 | #define KVM_S390_VM_CPU_FEAT_GSLS 5 |
106 | #define KVM_S390_VM_CPU_FEAT_IB 6 | ||
106 | struct kvm_s390_vm_cpu_feat { | 107 | struct kvm_s390_vm_cpu_feat { |
107 | __u64 feat[16]; | 108 | __u64 feat[16]; |
108 | }; | 109 | }; |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index ce9813afd502..5ec598ca7660 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -273,6 +273,8 @@ static void kvm_s390_cpu_feat_init(void) | |||
273 | allow_cpu_feat(KVM_S390_VM_CPU_FEAT_GPERE); | 273 | allow_cpu_feat(KVM_S390_VM_CPU_FEAT_GPERE); |
274 | if (sclp.has_gsls) | 274 | if (sclp.has_gsls) |
275 | allow_cpu_feat(KVM_S390_VM_CPU_FEAT_GSLS); | 275 | allow_cpu_feat(KVM_S390_VM_CPU_FEAT_GSLS); |
276 | if (sclp.has_ib) | ||
277 | allow_cpu_feat(KVM_S390_VM_CPU_FEAT_IB); | ||
276 | } | 278 | } |
277 | 279 | ||
278 | int kvm_arch_init(void *opaque) | 280 | int kvm_arch_init(void *opaque) |
diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c index ea65bf2f0201..d29bd592fb3d 100644 --- a/arch/s390/kvm/vsie.c +++ b/arch/s390/kvm/vsie.c | |||
@@ -322,6 +322,8 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) | |||
322 | scb_s->ecb3 |= scb_o->ecb3 & 0x01U; | 322 | scb_s->ecb3 |= scb_o->ecb3 & 0x01U; |
323 | if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_SIIF)) | 323 | if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_SIIF)) |
324 | scb_s->eca |= scb_o->eca & 0x00000001U; | 324 | scb_s->eca |= scb_o->eca & 0x00000001U; |
325 | if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_IB)) | ||
326 | scb_s->eca |= scb_o->eca & 0x40000000U; | ||
325 | 327 | ||
326 | prepare_ibc(vcpu, vsie_page); | 328 | prepare_ibc(vcpu, vsie_page); |
327 | rc = shadow_crycb(vcpu, vsie_page); | 329 | rc = shadow_crycb(vcpu, vsie_page); |