diff options
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 7337c577e949..a02979f1e1af 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -215,6 +215,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) | |||
215 | { | 215 | { |
216 | int rc; | 216 | int rc; |
217 | char debug_name[16]; | 217 | char debug_name[16]; |
218 | static unsigned long sca_offset; | ||
218 | 219 | ||
219 | rc = -EINVAL; | 220 | rc = -EINVAL; |
220 | #ifdef CONFIG_KVM_S390_UCONTROL | 221 | #ifdef CONFIG_KVM_S390_UCONTROL |
@@ -236,6 +237,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) | |||
236 | kvm->arch.sca = (struct sca_block *) get_zeroed_page(GFP_KERNEL); | 237 | kvm->arch.sca = (struct sca_block *) get_zeroed_page(GFP_KERNEL); |
237 | if (!kvm->arch.sca) | 238 | if (!kvm->arch.sca) |
238 | goto out_err; | 239 | goto out_err; |
240 | spin_lock(&kvm_lock); | ||
241 | sca_offset = (sca_offset + 16) & 0x7f0; | ||
242 | kvm->arch.sca = (struct sca_block *) ((char *) kvm->arch.sca + sca_offset); | ||
243 | spin_unlock(&kvm_lock); | ||
239 | 244 | ||
240 | sprintf(debug_name, "kvm-%u", current->pid); | 245 | sprintf(debug_name, "kvm-%u", current->pid); |
241 | 246 | ||