aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarsten Otte <cotte@de.ibm.com>2011-07-24 04:48:23 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2011-07-24 04:48:21 -0400
commitf7850c92884b40915001e332a0a33ed4f10158e8 (patch)
tree224c0d42a958aadcd198b1258578e7a07b36ff9f
parent092670cd90eb88c33661de21f1b4ee08d2597171 (diff)
[S390] remove kvm mmu reload on s390
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>
-rw-r--r--arch/s390/kvm/kvm-s390.c17
-rw-r--r--arch/s390/kvm/kvm-s390.h4
2 files changed, 2 insertions, 19 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 5a99f342fd0b..f17296e4fc89 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -294,7 +294,6 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu)
294int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) 294int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
295{ 295{
296 atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | CPUSTAT_SM); 296 atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | CPUSTAT_SM);
297 set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests);
298 vcpu->arch.sie_block->ecb = 6; 297 vcpu->arch.sie_block->ecb = 6;
299 vcpu->arch.sie_block->eca = 0xC1002001U; 298 vcpu->arch.sie_block->eca = 0xC1002001U;
300 vcpu->arch.sie_block->fac = (int) (long) facilities; 299 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)
485 sigset_t sigsaved; 484 sigset_t sigsaved;
486 485
487rerun_vcpu: 486rerun_vcpu:
488 if (vcpu->requests)
489 if (test_and_clear_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
490 kvm_s390_vcpu_set_mem(vcpu);
491
492 if (vcpu->sigset_active) 487 if (vcpu->sigset_active)
493 sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved); 488 sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
494 489
@@ -701,21 +696,13 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
701 struct kvm_memory_slot old, 696 struct kvm_memory_slot old,
702 int user_alloc) 697 int user_alloc)
703{ 698{
704 int i, rc; 699 int rc;
705 struct kvm_vcpu *vcpu;
706 700
707 701
708 rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr, 702 rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr,
709 mem->guest_phys_addr, mem->memory_size); 703 mem->guest_phys_addr, mem->memory_size);
710 if (rc) 704 if (rc)
711 return; 705 printk(KERN_WARNING "kvm-s390: failed to commit memory region\n");
712
713 /* request update of sie control block for all available vcpus */
714 kvm_for_each_vcpu(i, vcpu, kvm) {
715 if (test_and_set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
716 continue;
717 kvm_s390_inject_sigp_stop(vcpu, ACTION_RELOADVCPU_ON_STOP);
718 }
719 return; 706 return;
720} 707}
721 708
diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h
index 63e5190776e9..99b0b7597115 100644
--- a/arch/s390/kvm/kvm-s390.h
+++ b/arch/s390/kvm/kvm-s390.h
@@ -58,10 +58,6 @@ int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu,
58int kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code); 58int kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code);
59int kvm_s390_inject_sigp_stop(struct kvm_vcpu *vcpu, int action); 59int kvm_s390_inject_sigp_stop(struct kvm_vcpu *vcpu, int action);
60 60
61static inline void kvm_s390_vcpu_set_mem(struct kvm_vcpu *vcpu)
62{
63}
64
65/* implemented in priv.c */ 61/* implemented in priv.c */
66int kvm_s390_handle_b2(struct kvm_vcpu *vcpu); 62int kvm_s390_handle_b2(struct kvm_vcpu *vcpu);
67int kvm_s390_handle_e5(struct kvm_vcpu *vcpu); 63int kvm_s390_handle_e5(struct kvm_vcpu *vcpu);