Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched: Fix missing kernel-doc notation Revert "x86, timers: Check for pending timers after (device) interrupts" sched: Update the clock of runqueue select_task_rq() selected
This commit is contained in:
@@ -244,7 +244,6 @@ unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
|
|||||||
__func__, smp_processor_id(), vector, irq);
|
__func__, smp_processor_id(), vector, irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
run_local_timers();
|
|
||||||
irq_exit();
|
irq_exit();
|
||||||
|
|
||||||
set_irq_regs(old_regs);
|
set_irq_regs(old_regs);
|
||||||
@@ -269,7 +268,6 @@ void smp_generic_interrupt(struct pt_regs *regs)
|
|||||||
if (generic_interrupt_extension)
|
if (generic_interrupt_extension)
|
||||||
generic_interrupt_extension();
|
generic_interrupt_extension();
|
||||||
|
|
||||||
run_local_timers();
|
|
||||||
irq_exit();
|
irq_exit();
|
||||||
|
|
||||||
set_irq_regs(old_regs);
|
set_irq_regs(old_regs);
|
||||||
|
@@ -198,7 +198,6 @@ void smp_reschedule_interrupt(struct pt_regs *regs)
|
|||||||
{
|
{
|
||||||
ack_APIC_irq();
|
ack_APIC_irq();
|
||||||
inc_irq_stat(irq_resched_count);
|
inc_irq_stat(irq_resched_count);
|
||||||
run_local_timers();
|
|
||||||
/*
|
/*
|
||||||
* KVM uses this interrupt to force a cpu out of guest mode
|
* KVM uses this interrupt to force a cpu out of guest mode
|
||||||
*/
|
*/
|
||||||
|
@@ -676,6 +676,7 @@ inline void update_rq_clock(struct rq *rq)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* runqueue_is_locked
|
* runqueue_is_locked
|
||||||
|
* @cpu: the processor in question.
|
||||||
*
|
*
|
||||||
* Returns true if the current cpu runqueue is locked.
|
* Returns true if the current cpu runqueue is locked.
|
||||||
* This interface allows printk to be called with the runqueue lock
|
* This interface allows printk to be called with the runqueue lock
|
||||||
@@ -2311,7 +2312,7 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state,
|
|||||||
{
|
{
|
||||||
int cpu, orig_cpu, this_cpu, success = 0;
|
int cpu, orig_cpu, this_cpu, success = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct rq *rq;
|
struct rq *rq, *orig_rq;
|
||||||
|
|
||||||
if (!sched_feat(SYNC_WAKEUPS))
|
if (!sched_feat(SYNC_WAKEUPS))
|
||||||
wake_flags &= ~WF_SYNC;
|
wake_flags &= ~WF_SYNC;
|
||||||
@@ -2319,7 +2320,7 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state,
|
|||||||
this_cpu = get_cpu();
|
this_cpu = get_cpu();
|
||||||
|
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
rq = task_rq_lock(p, &flags);
|
rq = orig_rq = task_rq_lock(p, &flags);
|
||||||
update_rq_clock(rq);
|
update_rq_clock(rq);
|
||||||
if (!(p->state & state))
|
if (!(p->state & state))
|
||||||
goto out;
|
goto out;
|
||||||
@@ -2350,6 +2351,10 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state,
|
|||||||
set_task_cpu(p, cpu);
|
set_task_cpu(p, cpu);
|
||||||
|
|
||||||
rq = task_rq_lock(p, &flags);
|
rq = task_rq_lock(p, &flags);
|
||||||
|
|
||||||
|
if (rq != orig_rq)
|
||||||
|
update_rq_clock(rq);
|
||||||
|
|
||||||
WARN_ON(p->state != TASK_WAKING);
|
WARN_ON(p->state != TASK_WAKING);
|
||||||
cpu = task_cpu(p);
|
cpu = task_cpu(p);
|
||||||
|
|
||||||
@@ -3656,6 +3661,7 @@ static void update_group_power(struct sched_domain *sd, int cpu)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* update_sg_lb_stats - Update sched_group's statistics for load balancing.
|
* update_sg_lb_stats - Update sched_group's statistics for load balancing.
|
||||||
|
* @sd: The sched_domain whose statistics are to be updated.
|
||||||
* @group: sched_group whose statistics are to be updated.
|
* @group: sched_group whose statistics are to be updated.
|
||||||
* @this_cpu: Cpu for which load balance is currently performed.
|
* @this_cpu: Cpu for which load balance is currently performed.
|
||||||
* @idle: Idle status of this_cpu
|
* @idle: Idle status of this_cpu
|
||||||
|
Reference in New Issue
Block a user