diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/include/asm/kvm_host.h | 2 | ||||
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 27605b62b980..b95710a1f5dd 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h | |||
@@ -26,7 +26,7 @@ | |||
26 | 26 | ||
27 | struct sca_entry { | 27 | struct sca_entry { |
28 | atomic_t scn; | 28 | atomic_t scn; |
29 | __u64 reserved; | 29 | __u32 reserved; |
30 | __u64 sda; | 30 | __u64 sda; |
31 | __u64 reserved2[2]; | 31 | __u64 reserved2[2]; |
32 | } __attribute__((packed)); | 32 | } __attribute__((packed)); |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 0079b8c2a9a6..08a3b35d30be 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -207,6 +207,7 @@ out_nokvm: | |||
207 | void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) | 207 | void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) |
208 | { | 208 | { |
209 | VCPU_EVENT(vcpu, 3, "%s", "free cpu"); | 209 | VCPU_EVENT(vcpu, 3, "%s", "free cpu"); |
210 | clear_bit(63 - vcpu->vcpu_id, (unsigned long *) &vcpu->kvm->arch.sca->mcn); | ||
210 | if (vcpu->kvm->arch.sca->cpu[vcpu->vcpu_id].sda == | 211 | if (vcpu->kvm->arch.sca->cpu[vcpu->vcpu_id].sda == |
211 | (__u64) vcpu->arch.sie_block) | 212 | (__u64) vcpu->arch.sie_block) |
212 | vcpu->kvm->arch.sca->cpu[vcpu->vcpu_id].sda = 0; | 213 | vcpu->kvm->arch.sca->cpu[vcpu->vcpu_id].sda = 0; |
@@ -296,7 +297,7 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) | |||
296 | { | 297 | { |
297 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH); | 298 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH); |
298 | set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests); | 299 | set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests); |
299 | vcpu->arch.sie_block->ecb = 2; | 300 | vcpu->arch.sie_block->ecb = 6; |
300 | vcpu->arch.sie_block->eca = 0xC1002001U; | 301 | vcpu->arch.sie_block->eca = 0xC1002001U; |
301 | vcpu->arch.sie_block->fac = (int) (long) facilities; | 302 | vcpu->arch.sie_block->fac = (int) (long) facilities; |
302 | hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS); | 303 | hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS); |
@@ -329,6 +330,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, | |||
329 | kvm->arch.sca->cpu[id].sda = (__u64) vcpu->arch.sie_block; | 330 | kvm->arch.sca->cpu[id].sda = (__u64) vcpu->arch.sie_block; |
330 | vcpu->arch.sie_block->scaoh = (__u32)(((__u64)kvm->arch.sca) >> 32); | 331 | vcpu->arch.sie_block->scaoh = (__u32)(((__u64)kvm->arch.sca) >> 32); |
331 | vcpu->arch.sie_block->scaol = (__u32)(__u64)kvm->arch.sca; | 332 | vcpu->arch.sie_block->scaol = (__u32)(__u64)kvm->arch.sca; |
333 | set_bit(63 - id, (unsigned long *) &kvm->arch.sca->mcn); | ||
332 | 334 | ||
333 | spin_lock_init(&vcpu->arch.local_int.lock); | 335 | spin_lock_init(&vcpu->arch.local_int.lock); |
334 | INIT_LIST_HEAD(&vcpu->arch.local_int.list); | 336 | INIT_LIST_HEAD(&vcpu->arch.local_int.list); |