Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux...
authorMike Travis <travis@sgi.com>
Thu, 1 Jan 2009 01:34:16 +0000 (17:34 -0800)
committerIngo Molnar <mingo@elte.hu>
Sat, 3 Jan 2009 17:53:31 +0000 (18:53 +0100)
Conflicts:
arch/x86/kernel/io_apic.c
kernel/rcuclassic.c
kernel/sched.c
kernel/time/tick-sched.c

Signed-off-by: Mike Travis <travis@sgi.com>
[ mingo@elte.hu: backmerged typo fix for io_apic.c ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
29 files changed:
1  2 
arch/ia64/include/asm/topology.h
arch/mips/include/asm/mach-ip27/topology.h
arch/powerpc/include/asm/topology.h
arch/sh/include/asm/topology.h
arch/x86/Kconfig
arch/x86/include/asm/irq.h
arch/x86/include/asm/topology.h
arch/x86/kernel/apic.c
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/cpu/mcheck/mce_amd_64.c
arch/x86/kernel/genx2apic_uv_x.c
arch/x86/kernel/io_apic.c
arch/x86/kernel/irq_64.c
arch/x86/kernel/irqinit_32.c
arch/x86/kernel/irqinit_64.c
arch/x86/kernel/setup_percpu.c
arch/x86/kernel/smp.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/tlb_32.c
arch/x86/kernel/tlb_64.c
arch/x86/kernel/traps.c
arch/x86/xen/mmu.c
include/linux/sched.h
kernel/rcuclassic.c
kernel/sched.c
kernel/sched_fair.c
kernel/sched_rt.c
kernel/sched_stats.h
kernel/time/tick-sched.c

Simple merge
index 373fca394a54a1a1841d06d2ebec20440aa4ca7d,236dae1cd29fe09e746b78a37d30c060cd5ad43a..375258559ae64fa26e09452c4e80ca978b2a3fe3
@@@ -46,8 -46,13 +46,12 @@@ static inline int pcibus_to_node(struc
                                        node_to_cpumask(pcibus_to_node(bus)) \
                                )
  
+ #define cpumask_of_pcibus(bus)        (pcibus_to_node(bus) == -1 ?            \
+                                cpu_all_mask :                         \
+                                cpumask_of_node(pcibus_to_node(bus)))
  /* sched_domains SD_NODE_INIT for PPC64 machines */
  #define SD_NODE_INIT (struct sched_domain) {          \
 -      .span                   = CPU_MASK_NONE,        \
        .parent                 = NULL,                 \
        .child                  = NULL,                 \
        .groups                 = NULL,                 \
Simple merge
Simple merge
index 4bb732e45a85f5f1296452f31c34b043783b8ecd,28e409fc73f3df33e4c6b2cbde5e99e0433e0fa1..592688ed04d33462d172936d56dff55fc6e52eac
@@@ -31,13 -31,9 +31,9 @@@ static inline int irq_canonicalize(int 
  # endif
  #endif
  
- #ifdef CONFIG_IRQBALANCE
- extern int irqbalance_disable(char *str);
- #endif
  #ifdef CONFIG_HOTPLUG_CPU
  #include <linux/cpumask.h>
 -extern void fixup_irqs(cpumask_t map);
 +extern void fixup_irqs(void);
  #endif
  
  extern unsigned int do_IRQ(struct pt_regs *regs);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/sched.c
index 756d981d91a40e0e80239ebca62355c62db06d78,f2095660efec72966823de6b66c6147367b8327b..27ba1d642f0f0c4c370e81a61b067874310532d0
@@@ -5477,17 -5426,8 +5495,16 @@@ long sched_setaffinity(pid_t pid, cons
        get_task_struct(p);
        read_unlock(&tasklist_lock);
  
 +      if (!alloc_cpumask_var(&cpus_allowed, GFP_KERNEL)) {
 +              retval = -ENOMEM;
 +              goto out_put_task;
 +      }
 +      if (!alloc_cpumask_var(&new_mask, GFP_KERNEL)) {
 +              retval = -ENOMEM;
 +              goto out_free_cpus_allowed;
 +      }
        retval = -EPERM;
-       if ((current->euid != p->euid) && (current->euid != p->uid) &&
-                       !capable(CAP_SYS_NICE))
+       if (!check_same_owner(p) && !capable(CAP_SYS_NICE))
                goto out_unlock;
  
        retval = security_task_setscheduler(p, 0, NULL);
Simple merge
Simple merge
Simple merge
index 70f872c71f4e47dbaef945cc99990fc9ce01d1db,8f3fc2582d38b7073927e9dc004ef38e16909ab0..76a574bbef97270672dee229b81b77872ba319e6
@@@ -282,8 -282,31 +282,31 @@@ void tick_nohz_stop_sched_tick(int inid
        /* Schedule the tick, if we are at least one jiffie off */
        if ((long)delta_jiffies >= 1) {
  
+               /*
+               * calculate the expiry time for the next timer wheel
+               * timer
+               */
+               expires = ktime_add_ns(last_update, tick_period.tv64 *
+                                  delta_jiffies);
+               /*
+                * If this cpu is the one which updates jiffies, then
+                * give up the assignment and let it be taken by the
+                * cpu which runs the tick timer next, which might be
+                * this cpu as well. If we don't drop this here the
+                * jiffies might be stale and do_timer() never
+                * invoked.
+                */
+               if (cpu == tick_do_timer_cpu)
+                       tick_do_timer_cpu = TICK_DO_TIMER_NONE;
                if (delta_jiffies > 1)
 -                      cpu_set(cpu, nohz_cpu_mask);
 +                      cpumask_set_cpu(cpu, nohz_cpu_mask);
+               /* Skip reprogram of event if its not changed */
+               if (ts->tick_stopped && ktime_equal(expires, dev->next_event))
+                       goto out;
                /*
                 * nohz_stop_sched_tick can be called several times before
                 * the nohz_restart_sched_tick is called. This happens when