[S390] remove kvm mmu reload on s390
authorCarsten Otte <cotte@de.ibm.com>
Sun, 24 Jul 2011 08:48:23 +0000 (10:48 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 24 Jul 2011 08:48:21 +0000 (10:48 +0200)
This patch removes the mmu reload logic for kvm on s390. Via Martin's
new gmap interface, we can safely add or remove memory slots while
guest CPUs are in-flight. Thus, the mmu reload logic is not needed
anymore.

Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kvm/kvm-s390.c
arch/s390/kvm/kvm-s390.h

index 5a99f342fd0b67418b36c6a4cd174b6006303255..f17296e4fc89df28f52f78812eaf42bee8e94d4c 100644 (file)
@@ -294,7 +294,6 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu)
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 {
        atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | CPUSTAT_SM);
-       set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests);
        vcpu->arch.sie_block->ecb   = 6;
        vcpu->arch.sie_block->eca   = 0xC1002001U;
        vcpu->arch.sie_block->fac   = (int) (long) facilities;
@@ -485,10 +484,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
        sigset_t sigsaved;
 
 rerun_vcpu:
-       if (vcpu->requests)
-               if (test_and_clear_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
-                       kvm_s390_vcpu_set_mem(vcpu);
-
        if (vcpu->sigset_active)
                sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
 
@@ -701,21 +696,13 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
                                struct kvm_memory_slot old,
                                int user_alloc)
 {
-       int i, rc;
-       struct kvm_vcpu *vcpu;
+       int rc;
 
 
        rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr,
                mem->guest_phys_addr, mem->memory_size);
        if (rc)
-               return;
-
-       /* request update of sie control block for all available vcpus */
-       kvm_for_each_vcpu(i, vcpu, kvm) {
-               if (test_and_set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
-                       continue;
-               kvm_s390_inject_sigp_stop(vcpu, ACTION_RELOADVCPU_ON_STOP);
-       }
+               printk(KERN_WARNING "kvm-s390: failed to commit memory region\n");
        return;
 }
 
index 63e5190776e9f9e9a6fe3dc8447bf560363a471f..99b0b7597115e023396953e7748f260d8d469091 100644 (file)
@@ -58,10 +58,6 @@ int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu,
 int kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code);
 int kvm_s390_inject_sigp_stop(struct kvm_vcpu *vcpu, int action);
 
-static inline void kvm_s390_vcpu_set_mem(struct kvm_vcpu *vcpu)
-{
-}
-
 /* implemented in priv.c */
 int kvm_s390_handle_b2(struct kvm_vcpu *vcpu);
 int kvm_s390_handle_e5(struct kvm_vcpu *vcpu);