[patch 08/12] [PATCH] kvm-s390-ucontrol: disable sca

2011-12-14 Thread Carsten Otte
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

2011-12-10 Thread Carsten Otte
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

2011-12-09 Thread Carsten Otte
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

2011-12-09 Thread Carsten Otte
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

2011-12-08 Thread Carsten Otte
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

2011-12-01 Thread Carsten Otte
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