Merge tag 'v4.3-rc6' into locking/core, to pick up fixes before applying new changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
+1
-1
@@ -22,7 +22,6 @@
|
||||
|
||||
/**
|
||||
* handle_bad_irq - handle spurious and unhandled irqs
|
||||
* @irq: the interrupt number
|
||||
* @desc: description of the interrupt
|
||||
*
|
||||
* Handles spurious and unhandled IRQ's. It also prints a debugmessage.
|
||||
@@ -35,6 +34,7 @@ void handle_bad_irq(struct irq_desc *desc)
|
||||
kstat_incr_irqs_this_cpu(desc);
|
||||
ack_bad_irq(irq);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(handle_bad_irq);
|
||||
|
||||
/*
|
||||
* Special, empty irq handler:
|
||||
|
||||
+1
-5
@@ -228,11 +228,7 @@ static void msi_domain_update_chip_ops(struct msi_domain_info *info)
|
||||
{
|
||||
struct irq_chip *chip = info->chip;
|
||||
|
||||
BUG_ON(!chip);
|
||||
if (!chip->irq_mask)
|
||||
chip->irq_mask = pci_msi_mask_irq;
|
||||
if (!chip->irq_unmask)
|
||||
chip->irq_unmask = pci_msi_unmask_irq;
|
||||
BUG_ON(!chip || !chip->irq_mask || !chip->irq_unmask);
|
||||
if (!chip->irq_set_affinity)
|
||||
chip->irq_set_affinity = msi_domain_set_affinity;
|
||||
}
|
||||
|
||||
+5
-5
@@ -2517,11 +2517,11 @@ static struct rq *finish_task_switch(struct task_struct *prev)
|
||||
* If a task dies, then it sets TASK_DEAD in tsk->state and calls
|
||||
* schedule one last time. The schedule call will never return, and
|
||||
* the scheduled task must drop that reference.
|
||||
* The test for TASK_DEAD must occur while the runqueue locks are
|
||||
* still held, otherwise prev could be scheduled on another cpu, die
|
||||
* there before we look at prev->state, and then the reference would
|
||||
* be dropped twice.
|
||||
* Manfred Spraul <manfred@colorfullife.com>
|
||||
*
|
||||
* We must observe prev->state before clearing prev->on_cpu (in
|
||||
* finish_lock_switch), otherwise a concurrent wakeup can get prev
|
||||
* running on another CPU and we could rave with its RUNNING -> DEAD
|
||||
* transition, resulting in a double drop.
|
||||
*/
|
||||
prev_state = prev->state;
|
||||
vtime_task_switch(prev);
|
||||
|
||||
@@ -1078,9 +1078,10 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
|
||||
* After ->on_cpu is cleared, the task can be moved to a different CPU.
|
||||
* We must ensure this doesn't happen until the switch is completely
|
||||
* finished.
|
||||
*
|
||||
* Pairs with the control dependency and rmb in try_to_wake_up().
|
||||
*/
|
||||
smp_wmb();
|
||||
prev->on_cpu = 0;
|
||||
smp_store_release(&prev->on_cpu, 0);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG_SPINLOCK
|
||||
/* this is a valid case when another task releases the spinlock */
|
||||
|
||||
@@ -1251,7 +1251,7 @@ void __init timekeeping_init(void)
|
||||
set_normalized_timespec64(&tmp, -boot.tv_sec, -boot.tv_nsec);
|
||||
tk_set_wall_to_mono(tk, tmp);
|
||||
|
||||
timekeeping_update(tk, TK_MIRROR);
|
||||
timekeeping_update(tk, TK_MIRROR | TK_CLOCK_WAS_SET);
|
||||
|
||||
write_seqcount_end(&tk_core.seq);
|
||||
raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
|
||||
|
||||
+4
-4
@@ -1458,13 +1458,13 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
|
||||
timer_stats_timer_set_start_info(&dwork->timer);
|
||||
|
||||
dwork->wq = wq;
|
||||
/* timer isn't guaranteed to run in this cpu, record earlier */
|
||||
if (cpu == WORK_CPU_UNBOUND)
|
||||
cpu = raw_smp_processor_id();
|
||||
dwork->cpu = cpu;
|
||||
timer->expires = jiffies + delay;
|
||||
|
||||
if (unlikely(cpu != WORK_CPU_UNBOUND))
|
||||
add_timer_on(timer, cpu);
|
||||
else
|
||||
add_timer(timer);
|
||||
add_timer_on(timer, cpu);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user