]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
KVM: s390: remove the tasklet used by the hrtimer
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Fri, 16 May 2014 10:08:29 +0000 (12:08 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 21 Jul 2014 11:22:42 +0000 (13:22 +0200)
We can get rid of the tasklet used for waking up a VCPU in the hrtimer
code but wakeup the VCPU directly.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/include/asm/kvm_host.h
arch/s390/kvm/interrupt.c
arch/s390/kvm/kvm-s390.c
arch/s390/kvm/kvm-s390.h

index b3acf28c8c9631b95facaa4544bc453cf85e139d..773bef7614d8d64b9dc9e73de97cef70af3e7740 100644 (file)
@@ -366,7 +366,6 @@ struct kvm_vcpu_arch {
        s390_fp_regs      guest_fpregs;
        struct kvm_s390_local_interrupt local_int;
        struct hrtimer    ckc_timer;
-       struct tasklet_struct tasklet;
        struct kvm_s390_pgm_info pgm;
        union  {
                struct cpuid    cpu_id;
index 65396e14ff0582a9be99165ee344b8eb51b6e952..1be3d8da49e91d6fb16807e459a8867a9d7be879 100644 (file)
@@ -629,23 +629,12 @@ void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu)
        }
 }
 
-void kvm_s390_tasklet(unsigned long parm)
-{
-       struct kvm_vcpu *vcpu = (struct kvm_vcpu *) parm;
-       kvm_s390_vcpu_wakeup(vcpu);
-}
-
-/*
- * low level hrtimer wake routine. Because this runs in hardirq context
- * we schedule a tasklet to do the real work.
- */
 enum hrtimer_restart kvm_s390_idle_wakeup(struct hrtimer *timer)
 {
        struct kvm_vcpu *vcpu;
 
        vcpu = container_of(timer, struct kvm_vcpu, arch.ckc_timer);
-       vcpu->preempted = true;
-       tasklet_schedule(&vcpu->arch.tasklet);
+       kvm_s390_vcpu_wakeup(vcpu);
 
        return HRTIMER_NORESTART;
 }
index b29a03132ecb06dcb7a4e725f1411309df5caf48..dd902e64c033d9b77b0397510523ab8585ec3293 100644 (file)
@@ -649,8 +649,6 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
                        return rc;
        }
        hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
-       tasklet_init(&vcpu->arch.tasklet, kvm_s390_tasklet,
-                    (unsigned long) vcpu);
        vcpu->arch.ckc_timer.function = kvm_s390_idle_wakeup;
        get_cpu_id(&vcpu->arch.cpu_id);
        vcpu->arch.cpu_id.version = 0xff;
index 665eaccb9ca57e7d0b2b423d09fe058598c2d41e..3862fa2cefe08603e503bfcea56b151ca22a249b 100644 (file)
@@ -138,7 +138,6 @@ static inline int kvm_s390_user_cpu_state_ctrl(struct kvm *kvm)
 int kvm_s390_handle_wait(struct kvm_vcpu *vcpu);
 void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu);
 enum hrtimer_restart kvm_s390_idle_wakeup(struct hrtimer *timer);
-void kvm_s390_tasklet(unsigned long parm);
 void kvm_s390_deliver_pending_interrupts(struct kvm_vcpu *vcpu);
 void kvm_s390_deliver_pending_machine_checks(struct kvm_vcpu *vcpu);
 void kvm_s390_clear_local_irqs(struct kvm_vcpu *vcpu);