History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

Conflicts: net/bridge/br_mdb.c br_mdb.c conflict was a function call being removed to fix a bug in 'net' but whose signature was changed in 'net-next'.

David S. Miller committed 11 years ago

Commit c5e40ee2 parents 0528318 c5dfd65544 files · +4152 −3347Browse files

Showing the changes to kernel (8 of 544 files). Show all

Unified · Split

8 files
  1. kernel/cpu.c +0 −9
  2. kernel/fork.c +6 −1
  3. kernel/irq/resend.c +13 −5
  4. kernel/sched/fair.c +1 −1
  5. kernel/time/tick-broadcast.c +0 −1
  6. kernel/time/tick-common.c +1 −0
  7. kernel/trace/trace.h +1 −0
  8. kernel/trace/trace_branch.c +10 −7
kernel/cpu.c+0−9
@@ -527,18 +527,9 @@ static int _cpu_up(unsigned int cpu, int tasks_frozen) · 526 unmodified lines
527 goto out_notify;527 goto out_notify;
528 }528 }
529 529
530 /*
531 * Some architectures have to walk the irq descriptors to
532 * setup the vector space for the cpu which comes online.
533 * Prevent irq alloc/free across the bringup.
534 */
535 irq_lock_sparse();
536
537 /* Arch-specific enabling code. */530 /* Arch-specific enabling code. */
538 ret = __cpu_up(cpu, idle);531 ret = __cpu_up(cpu, idle);
539 532
540 irq_unlock_sparse();
541
542 if (ret != 0)533 if (ret != 0)
543 goto out_notify;534 goto out_notify;
544 BUG_ON(!cpu_online(cpu));535 BUG_ON(!cpu_online(cpu));
kernel/fork.c+6−1
@@ -287,6 +287,11 @@ static void set_max_threads(unsigned int max_threads_suggested) · 286 unmodified lines
287 max_threads = clamp_t(u64, threads, MIN_THREADS, MAX_THREADS);287 max_threads = clamp_t(u64, threads, MIN_THREADS, MAX_THREADS);
288}288}
289 289
290#ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
291/* Initialized by the architecture: */
292int arch_task_struct_size __read_mostly;
293#endif
294
290void __init fork_init(void)295void __init fork_init(void)
291{296{
292#ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR297#ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR
@@ -295,7 +300,7 @@ void __init fork_init(void) · 2 unmodified lines
295#endif300#endif
296 /* create a slab on which task_structs can be allocated */301 /* create a slab on which task_structs can be allocated */
297 task_struct_cachep =302 task_struct_cachep =
298 kmem_cache_create("task_struct", sizeof(struct task_struct),303 kmem_cache_create("task_struct", arch_task_struct_size,
299 ARCH_MIN_TASKALIGN, SLAB_PANIC | SLAB_NOTRACK, NULL);304 ARCH_MIN_TASKALIGN, SLAB_PANIC | SLAB_NOTRACK, NULL);
300#endif305#endif
301 306
kernel/irq/resend.c+13−5
@@ -75,13 +75,21 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq) · 74 unmodified lines
75 !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) {75 !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) {
76#ifdef CONFIG_HARDIRQS_SW_RESEND76#ifdef CONFIG_HARDIRQS_SW_RESEND
77 /*77 /*
78 * If the interrupt has a parent irq and runs78 * If the interrupt is running in the thread
79 * in the thread context of the parent irq,79 * context of the parent irq we need to be
80 * retrigger the parent.80 * careful, because we cannot trigger it
81 * directly.
81 */82 */
82 if (desc->parent_irq &&83 if (irq_settings_is_nested_thread(desc)) {
83 irq_settings_is_nested_thread(desc))84 /*
85 * If the parent_irq is valid, we
86 * retrigger the parent, otherwise we
87 * do nothing.
88 */
89 if (!desc->parent_irq)
90 return;
84 irq = desc->parent_irq;91 irq = desc->parent_irq;
92 }
85 /* Set it pending and activate the softirq: */93 /* Set it pending and activate the softirq: */
86 set_bit(irq, irqs_resend);94 set_bit(irq, irqs_resend);
87 tasklet_schedule(&resend_tasklet);95 tasklet_schedule(&resend_tasklet);
kernel/sched/fair.c+1−1
@@ -3683,7 +3683,7 @@ static void throttle_cfs_rq(struct cfs_rq *cfs_rq) · 3682 unmodified lines
3683 cfs_rq->throttled = 1;3683 cfs_rq->throttled = 1;
3684 cfs_rq->throttled_clock = rq_clock(rq);3684 cfs_rq->throttled_clock = rq_clock(rq);
3685 raw_spin_lock(&cfs_b->lock);3685 raw_spin_lock(&cfs_b->lock);
3686 empty = list_empty(&cfs_rq->throttled_list);3686 empty = list_empty(&cfs_b->throttled_cfs_rq);
3687 3687
3688 /*3688 /*
3689 * Add to the _head_ of the list, so that an already-started3689 * Add to the _head_ of the list, so that an already-started
kernel/time/tick-broadcast.c+0−1
@@ -839,7 +839,6 @@ out: · 838 unmodified lines
839 raw_spin_unlock(&tick_broadcast_lock);839 raw_spin_unlock(&tick_broadcast_lock);
840 return ret;840 return ret;
841}841}
842EXPORT_SYMBOL_GPL(tick_broadcast_oneshot_control);
843 842
844/*843/*
845 * Reset the one shot broadcast for a cpu844 * Reset the one shot broadcast for a cpu
kernel/time/tick-common.c+1−0
@@ -363,6 +363,7 @@ int tick_broadcast_oneshot_control(enum tick_broadcast_state state) · 362 unmodified lines
363 363
364 return __tick_broadcast_oneshot_control(state);364 return __tick_broadcast_oneshot_control(state);
365}365}
366EXPORT_SYMBOL_GPL(tick_broadcast_oneshot_control);
366 367
367#ifdef CONFIG_HOTPLUG_CPU368#ifdef CONFIG_HOTPLUG_CPU
368/*369/*
kernel/trace/trace.h+1−0
@@ -444,6 +444,7 @@ enum { · 443 unmodified lines
444 444
445 TRACE_CONTROL_BIT,445 TRACE_CONTROL_BIT,
446 446
447 TRACE_BRANCH_BIT,
447/*448/*
448 * Abuse of the trace_recursion.449 * Abuse of the trace_recursion.
449 * As we need a way to maintain state if we are tracing the function450 * As we need a way to maintain state if we are tracing the function
kernel/trace/trace_branch.c+10−7
@@ -36,9 +36,12 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect) · 35 unmodified lines
36 struct trace_branch *entry;36 struct trace_branch *entry;
37 struct ring_buffer *buffer;37 struct ring_buffer *buffer;
38 unsigned long flags;38 unsigned long flags;
39 int cpu, pc;39 int pc;
40 const char *p;40 const char *p;
41 41
42 if (current->trace_recursion & TRACE_BRANCH_BIT)
43 return;
44
42 /*45 /*
43 * I would love to save just the ftrace_likely_data pointer, but46 * I would love to save just the ftrace_likely_data pointer, but
44 * this code can also be used by modules. Ugly things can happen47 * this code can also be used by modules. Ugly things can happen
@@ -49,10 +52,10 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect) · 4 unmodified lines
49 if (unlikely(!tr))52 if (unlikely(!tr))
50 return;53 return;
51 54
52 local_irq_save(flags);55 raw_local_irq_save(flags);
53 cpu = raw_smp_processor_id();56 current->trace_recursion |= TRACE_BRANCH_BIT;
54 data = per_cpu_ptr(tr->trace_buffer.data, cpu);57 data = this_cpu_ptr(tr->trace_buffer.data);
55 if (atomic_inc_return(&data->disabled) != 1)58 if (atomic_read(&data->disabled))
56 goto out;59 goto out;
57 60
58 pc = preempt_count();61 pc = preempt_count();
@@ -81,8 +84,8 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect) · 22 unmodified lines
81 __buffer_unlock_commit(buffer, event);84 __buffer_unlock_commit(buffer, event);
82 85
83 out:86 out:
84 atomic_dec(&data->disabled);87 current->trace_recursion &= ~TRACE_BRANCH_BIT;
85 local_irq_restore(flags);88 raw_local_irq_restore(flags);
86}89}
87 90
88static inline91static inline