Merge branch 'sched-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip...
Linus Torvalds [Thu, 26 Mar 2009 23:05:01 +0000 (16:05 -0700)]
* 'sched-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (46 commits)
  sched: Add comments to find_busiest_group() function
  sched: Refactor the power savings balance code
  sched: Optimize the !power_savings_balance during fbg()
  sched: Create a helper function to calculate imbalance
  sched: Create helper to calculate small_imbalance in fbg()
  sched: Create a helper function to calculate sched_domain stats for fbg()
  sched: Define structure to store the sched_domain statistics for fbg()
  sched: Create a helper function to calculate sched_group stats for fbg()
  sched: Define structure to store the sched_group statistics for fbg()
  sched: Fix indentations in find_busiest_group() using gotos
  sched: Simple helper functions for find_busiest_group()
  sched: remove unused fields from struct rq
  sched: jiffies not printed per CPU
  sched: small optimisation of can_migrate_task()
  sched: fix typos in documentation
  sched: add avg_overlap decay
  x86, sched_clock(): mark variables read-mostly
  sched: optimize ttwu vs group scheduling
  sched: TIF_NEED_RESCHED -> need_reshed() cleanup
  sched: don't rebalance if attached on NULL domain
  ...

1  2 
arch/x86/kernel/tsc.c
include/linux/sched.h
lib/Kconfig
lib/Makefile

diff --combined arch/x86/kernel/tsc.c
  #include <asm/delay.h>
  #include <asm/hypervisor.h>
  
- unsigned int cpu_khz;           /* TSC clocks / usec, not used here */
+ unsigned int __read_mostly cpu_khz;   /* TSC clocks / usec, not used here */
  EXPORT_SYMBOL(cpu_khz);
- unsigned int tsc_khz;
+ unsigned int __read_mostly tsc_khz;
  EXPORT_SYMBOL(tsc_khz);
  
  /*
   * TSC can be unstable due to cpufreq or due to unsynced TSCs
   */
- static int tsc_unstable;
+ static int __read_mostly tsc_unstable;
  
  /* native_sched_clock() is called before tsc_init(), so
     we must start with the TSC soft disabled to prevent
     erroneous rdtsc usage on !cpu_has_tsc processors */
- static int tsc_disabled = -1;
+ static int __read_mostly tsc_disabled = -1;
  
  static int tsc_clocksource_reliable;
  /*
@@@ -543,6 -544,8 +544,6 @@@ unsigned long native_calibrate_tsc(void
        return tsc_pit_min;
  }
  
 -#ifdef CONFIG_X86_32
 -/* Only called from the Powernow K7 cpu freq driver */
  int recalibrate_cpu_khz(void)
  {
  #ifndef CONFIG_SMP
  
  EXPORT_SYMBOL(recalibrate_cpu_khz);
  
 -#endif /* CONFIG_X86_32 */
  
  /* Accelerators for sched_clock()
   * convert from cycles(64bits) => nanoseconds (64bits)
diff --combined include/linux/sched.h
@@@ -998,6 -998,7 +998,7 @@@ struct sched_class 
                              struct rq *busiest, struct sched_domain *sd,
                              enum cpu_idle_type idle);
        void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
+       int (*needs_post_schedule) (struct rq *this_rq);
        void (*post_schedule) (struct rq *this_rq);
        void (*task_wake_up) (struct rq *this_rq, struct task_struct *task);
  
@@@ -1052,6 -1053,10 +1053,10 @@@ struct sched_entity 
        u64                     last_wakeup;
        u64                     avg_overlap;
  
+       u64                     start_runtime;
+       u64                     avg_wakeup;
+       u64                     nr_migrations;
  #ifdef CONFIG_SCHEDSTATS
        u64                     wait_start;
        u64                     wait_max;
        u64                     exec_max;
        u64                     slice_max;
  
-       u64                     nr_migrations;
        u64                     nr_migrations_cold;
        u64                     nr_failed_migrations_affine;
        u64                     nr_failed_migrations_running;
@@@ -1164,6 -1168,7 +1168,7 @@@ struct task_struct 
  #endif
  
        struct list_head tasks;
+       struct plist_node pushable_tasks;
  
        struct mm_struct *mm, *active_mm;
  
        /* ??? */
        unsigned int personality;
        unsigned did_exec:1;
 +      unsigned in_execve:1;   /* Tell the LSMs that the process is doing an
 +                               * execve */
        pid_t pid;
        pid_t tgid;
  
@@@ -1675,6 -1678,16 +1680,16 @@@ static inline int set_cpus_allowed(stru
        return set_cpus_allowed_ptr(p, &new_mask);
  }
  
+ /*
+  * Architectures can set this to 1 if they have specified
+  * CONFIG_HAVE_UNSTABLE_SCHED_CLOCK in their arch Kconfig,
+  * but then during bootup it turns out that sched_clock()
+  * is reliable after all:
+  */
+ #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
+ extern int sched_clock_stable;
+ #endif
  extern unsigned long long sched_clock(void);
  
  extern void sched_clock_init(void);
diff --combined lib/Kconfig
@@@ -136,12 -136,6 +136,6 @@@ config TEXTSEARCH_B
  config TEXTSEARCH_FSM
        tristate
  
- #
- # plist support is select#ed if needed
- #
- config PLIST
-       boolean
  config HAS_IOMEM
        boolean
        depends on !NO_IOMEM
@@@ -174,10 -168,4 +168,10 @@@ config DISABLE_OBSOLETE_CPUMASK_FUNCTIO
         bool "Disable obsolete cpumask functions" if DEBUG_PER_CPU_MAPS
         depends on EXPERIMENTAL && BROKEN
  
 +#
 +# Netlink attribute parsing support is select'ed if needed
 +#
 +config NLATTR
 +      bool
 +
  endmenu
diff --combined lib/Makefile
@@@ -11,7 -11,8 +11,8 @@@ lib-y := ctype.o string.o vsprintf.o cm
         rbtree.o radix-tree.o dump_stack.o \
         idr.o int_sqrt.o extable.o prio_tree.o \
         sha1.o irq_regs.o reciprocal_div.o argv_split.o \
-        proportions.o prio_heap.o ratelimit.o show_mem.o is_single_threaded.o
+        proportions.o prio_heap.o ratelimit.o show_mem.o \
+        is_single_threaded.o plist.o
  
  lib-$(CONFIG_MMU) += ioremap.o
  lib-$(CONFIG_SMP) += cpumask.o
@@@ -40,7 -41,6 +41,6 @@@ lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += 
  lib-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
  obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
  obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o
- obj-$(CONFIG_PLIST) += plist.o
  obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
  obj-$(CONFIG_DEBUG_LIST) += list_debug.o
  obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o
@@@ -82,9 -82,7 +82,9 @@@ obj-$(CONFIG_HAVE_LMB) += lmb.
  
  obj-$(CONFIG_HAVE_ARCH_TRACEHOOK) += syscall.o
  
 -obj-$(CONFIG_DYNAMIC_PRINTK_DEBUG) += dynamic_printk.o
 +obj-$(CONFIG_DYNAMIC_DEBUG) += dynamic_debug.o
 +
 +obj-$(CONFIG_NLATTR) += nlattr.o
  
  hostprogs-y   := gen_crc32table
  clean-files   := crc32table.h