[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- --- arch/s390/kvm/kvm-s390.c | 30 -- 1 file changed, 20 insertions(+), 10 deletions(-) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -228,10 +228,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -368,12 +371,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- --- arch/s390/kvm/kvm-s390.c | 30 -- 1 file changed, 20 insertions(+), 10 deletions(-) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -234,10 +234,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -374,12 +377,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- Index: linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c === --- linux-2.5-cecsim.orig/arch/s390/kvm/kvm-s390.c +++ linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c @@ -234,10 +234,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -374,12 +377,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- Index: linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c === --- linux-2.5-cecsim.orig/arch/s390/kvm/kvm-s390.c +++ linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c @@ -234,10 +234,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -374,12 +377,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- Index: linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c === --- linux-2.5-cecsim.orig/arch/s390/kvm/kvm-s390.c +++ linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c @@ -234,10 +234,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -374,12 +377,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca
This patch makes sure user controlled virtual machines do not use a system control area (sca). This is needed in order to create virtual machines with more cpus than the size of the sca [64]. Signed-off-by: Carsten Otte co...@de.ibm.com --- Index: linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c === --- linux-2.5-cecsim.orig/arch/s390/kvm/kvm-s390.c +++ linux-2.5-cecsim/arch/s390/kvm/kvm-s390.c @@ -244,10 +244,13 @@ out_err: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); - clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); - if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == - (__u64) vcpu-arch.sie_block) - vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + if (!kvm_is_ucontrol(vcpu-kvm)) { + clear_bit(63 - vcpu-vcpu_id, + (unsigned long *) vcpu-kvm-arch.sca-mcn); + if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == + (__u64) vcpu-arch.sie_block) + vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; + } smp_mb(); if (kvm_is_ucontrol(vcpu-kvm)) @@ -384,12 +387,19 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st goto out_free_cpu; vcpu-arch.sie_block-icpua = id; - BUG_ON(!kvm-arch.sca); - if (!kvm-arch.sca-cpu[id].sda) - kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; - vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); - vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; - set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + if (!kvm_is_ucontrol(kvm)) { + if (!kvm-arch.sca) { + WARN_ON_ONCE(1); + goto out_free_cpu; + } + if (!kvm-arch.sca-cpu[id].sda) + kvm-arch.sca-cpu[id].sda = + (__u64) vcpu-arch.sie_block; + vcpu-arch.sie_block-scaoh = + (__u32)(((__u64)kvm-arch.sca) 32); + vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); + } spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html