mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
KVM: s390: remove the tasklet used by the hrtimer
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>
This commit is contained in:
parent
0e9c85a5a3
commit
ea74c0ea1b
@ -366,7 +366,6 @@ struct kvm_vcpu_arch {
|
|||||||
s390_fp_regs guest_fpregs;
|
s390_fp_regs guest_fpregs;
|
||||||
struct kvm_s390_local_interrupt local_int;
|
struct kvm_s390_local_interrupt local_int;
|
||||||
struct hrtimer ckc_timer;
|
struct hrtimer ckc_timer;
|
||||||
struct tasklet_struct tasklet;
|
|
||||||
struct kvm_s390_pgm_info pgm;
|
struct kvm_s390_pgm_info pgm;
|
||||||
union {
|
union {
|
||||||
struct cpuid cpu_id;
|
struct cpuid cpu_id;
|
||||||
|
@ -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)
|
enum hrtimer_restart kvm_s390_idle_wakeup(struct hrtimer *timer)
|
||||||
{
|
{
|
||||||
struct kvm_vcpu *vcpu;
|
struct kvm_vcpu *vcpu;
|
||||||
|
|
||||||
vcpu = container_of(timer, struct kvm_vcpu, arch.ckc_timer);
|
vcpu = container_of(timer, struct kvm_vcpu, arch.ckc_timer);
|
||||||
vcpu->preempted = true;
|
kvm_s390_vcpu_wakeup(vcpu);
|
||||||
tasklet_schedule(&vcpu->arch.tasklet);
|
|
||||||
|
|
||||||
return HRTIMER_NORESTART;
|
return HRTIMER_NORESTART;
|
||||||
}
|
}
|
||||||
|
@ -649,8 +649,6 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
hrtimer_init(&vcpu->arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
|
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;
|
vcpu->arch.ckc_timer.function = kvm_s390_idle_wakeup;
|
||||||
get_cpu_id(&vcpu->arch.cpu_id);
|
get_cpu_id(&vcpu->arch.cpu_id);
|
||||||
vcpu->arch.cpu_id.version = 0xff;
|
vcpu->arch.cpu_id.version = 0xff;
|
||||||
|
@ -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);
|
int kvm_s390_handle_wait(struct kvm_vcpu *vcpu);
|
||||||
void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu);
|
void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu);
|
||||||
enum hrtimer_restart kvm_s390_idle_wakeup(struct hrtimer *timer);
|
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_interrupts(struct kvm_vcpu *vcpu);
|
||||||
void kvm_s390_deliver_pending_machine_checks(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);
|
void kvm_s390_clear_local_irqs(struct kvm_vcpu *vcpu);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user