From: Arjan van de Ven Date: Fri, 17 Oct 2008 16:20:26 +0000 (-0700) Subject: Merge commit 'linus/master' into merge-linus X-Git-Tag: v2.6.28-rc1~18^2^2~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=651dab4264e4ba0e563f5ff56f748127246e9065;p=platform%2Fkernel%2Flinux-3.10.git Merge commit 'linus/master' into merge-linus Conflicts: arch/x86/kvm/i8254.c --- 651dab4264e4ba0e563f5ff56f748127246e9065 diff --cc arch/x86/kvm/i8254.c index 1bf8f57,634132a..11c6725 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c @@@ -200,13 -200,14 +200,14 @@@ static int __pit_timer_fn(struct kvm_kp if (!atomic_inc_and_test(&pt->pending)) set_bit(KVM_REQ_PENDING_TIMER, &vcpu0->requests); - if (vcpu0 && waitqueue_active(&vcpu0->wq)) { - vcpu0->arch.mp_state = KVM_MP_STATE_RUNNABLE; + + if (vcpu0 && waitqueue_active(&vcpu0->wq)) wake_up_interruptible(&vcpu0->wq); - } - pt->timer.expires = ktime_add_ns(pt->timer.expires, pt->period); - pt->scheduled = ktime_to_ns(pt->timer.expires); + hrtimer_add_expires_ns(&pt->timer, pt->period); - pt->scheduled = ktime_to_ns(hrtimer_get_expires(&pt->timer)); ++ pt->scheduled = hrtimer_get_expires_ns(&pt->timer); + if (pt->period) - ps->channels[0].count_load_time = pt->timer.expires; ++ ps->channels[0].count_load_time = hrtimer_get_expires(&pt->timer); return (pt->period == 0 ? 0 : 1); } diff --cc arch/x86/kvm/lapic.c index a5b61de,6571926..0fc3cab --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@@ -947,13 -941,14 +941,12 @@@ static int __apic_timer_fn(struct kvm_l if(!atomic_inc_and_test(&apic->timer.pending)) set_bit(KVM_REQ_PENDING_TIMER, &apic->vcpu->requests); - if (waitqueue_active(q)) { - apic->vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; + if (waitqueue_active(q)) wake_up_interruptible(q); - } + if (apic_lvtt_period(apic)) { result = 1; - apic->timer.dev.expires = ktime_add_ns( - apic->timer.dev.expires, - apic->timer.period); + hrtimer_add_expires_ns(&apic->timer.dev, apic->timer.period); } return result; } diff --cc kernel/time/tick-sched.c index b33be61,b711ffc..a547be1 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@@ -622,10 -634,10 +634,10 @@@ void tick_setup_sched_timer(void */ hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ts->sched_timer.function = tick_sched_timer; - ts->sched_timer.cb_mode = HRTIMER_CB_IRQSAFE_NO_SOFTIRQ; + ts->sched_timer.cb_mode = HRTIMER_CB_IRQSAFE_PERCPU; /* Get the next period (per cpu) */ - ts->sched_timer.expires = tick_init_jiffy_update(); + hrtimer_set_expires(&ts->sched_timer, tick_init_jiffy_update()); offset = ktime_to_ns(tick_period) >> 1; do_div(offset, num_possible_cpus()); offset *= smp_processor_id();