Merge tag 'v4.2' into p/abusse/merge_upgrade
authorAnselm Busse <anselm.busse@tu-berlin.de>
Mon, 18 Jan 2016 20:50:10 +0000 (21:50 +0100)
committerAnselm Busse <anselm.busse@tu-berlin.de>
Mon, 18 Jan 2016 20:50:10 +0000 (21:50 +0100)
Linux 4.2

# Conflicts:
# arch/x86/Kconfig.debug
# include/linux/sched.h
# kernel/sched/Makefile

19 files changed:
1  2 
Makefile
arch/x86/Kconfig.debug
include/linux/sched.h
init/main.c
kernel/cpu.c
kernel/kthread.c
kernel/sched/Makefile
kernel/sched/cfs/Makefile
kernel/sched/cfs/auto_group.c
kernel/sched/cfs/auto_group.h
kernel/sched/cfs/core.c
kernel/sched/cfs/cputime.c
kernel/sched/cfs/debug.c
kernel/sched/cfs/fair.c
kernel/sched/cfs/rt.c
kernel/sched/cfs/sched.h
kernel/sched/cfs/stats.h
kernel/sched/idle.c
kernel/sysctl.c

diff --cc Makefile
Simple merge
@@@ -332,6 -344,27 +344,29 @@@ config X86_DEBUG_STATIC_CPU_HA
  
          If unsure, say N.
  
+ config X86_DEBUG_FPU
+       bool "Debug the x86 FPU code"
+       depends on DEBUG_KERNEL
+       default y
+       ---help---
+         If this option is enabled then there will be extra sanity
+         checks and (boot time) debug printouts added to the kernel.
+         This debugging adds some small amount of runtime overhead
+         to the kernel.
+         If unsure, say N.
+ config PUNIT_ATOM_DEBUG
+       tristate "ATOM Punit debug driver"
+       select DEBUG_FS
+       select IOSF_MBI
+       ---help---
+         This is a debug driver, which gets the power states
+         of all Punit North Complex devices. The power states of
+         each device is exposed as part of the debugfs interface.
+         The current power state can be read from
+         /sys/kernel/debug/punit_atom/dev_power_state
 +source "kernel/sched/modsched/Kconfig.debug"
 +
  endmenu
@@@ -1729,11 -1775,23 +1780,26 @@@ struct task_struct 
  #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
        unsigned long   task_state_change;
  #endif
+       int pagefault_disabled;
 +#ifdef CONFIG_MOD_SCHED
 +      struct fw_task fw_task;
 +#endif
+ /* CPU-specific state of this task */
+       struct thread_struct thread;
+ /*
+  * WARNING: on x86, 'thread_struct' contains a variable-sized
+  * structure.  It *MUST* be at the end of 'task_struct'.
+  *
+  * Do not put anything below here!
+  */
  };
  
+ #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
+ extern int arch_task_struct_size __read_mostly;
+ #else
+ # define arch_task_struct_size (sizeof(struct task_struct))
+ #endif
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
  #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
  
diff --cc init/main.c
Simple merge
diff --cc kernel/cpu.c
  #include <linux/suspend.h>
  #include <linux/lockdep.h>
  #include <linux/tick.h>
+ #include <linux/irq.h>
  #include <trace/events/power.h>
  
 +#ifdef CONFIG_MOD_SCHED
 +    #include <fw_comm.h>
 +#endif
 +
  #include "smpboot.h"
  
  #ifdef CONFIG_SMP
Simple merge
@@@ -1,8 -1,21 +1,8 @@@
 -ifdef CONFIG_FUNCTION_TRACER
 -CFLAGS_REMOVE_clock.o = $(CC_FLAGS_FTRACE)
 -endif
 +KBUILD_CFLAGS += -Ikernel/sched/
  
 -ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
 -# According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
 -# needed for x86 only.  Why this used to be enabled for all architectures is beyond
 -# me.  I suspect most platforms don't need this, but until we know that for sure
 -# I turn this off for IA-64 only.  Andreas Schwab says it's also needed on m68k
 -# to get a correct value for the wait-channel (WCHAN in ps). --davidm
 -CFLAGS_core.o := $(PROFILING) -fno-omit-frame-pointer
 -endif
 -
 -obj-y += core.o loadavg.o clock.o cputime.o
 -obj-y += idle_task.o fair.o rt.o deadline.o stop_task.o
 +obj-y += clock.o
- obj-y += wait.o idle.o completion.o
+ obj-y += wait.o completion.o idle.o
 -obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o
 -obj-$(CONFIG_SCHED_AUTOGROUP) += auto_group.o
 -obj-$(CONFIG_SCHEDSTATS) += stats.o
  obj-$(CONFIG_SCHED_DEBUG) += debug.o
  obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o
 +obj-$(CONFIG_CFS_SCHED) += cfs/
 +obj-$(CONFIG_MOD_SCHED) += modsched/
index 51c3591,0000000..8b2a1ca
mode 100644,000000..100644
--- /dev/null
@@@ -1,19 -1,0 +1,19 @@@
- obj-y += core.o proc.o cputime.o
 +ifdef CONFIG_FUNCTION_TRACER
 +CFLAGS_REMOVE_clock.o = $(CC_FLAGS_FTRACE)
 +endif
 +
 +ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
 +# According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
 +# needed for x86 only.  Why this used to be enabled for all architectures is beyond
 +# me.  I suspect most platforms don't need this, but until we know that for sure
 +# I turn this off for IA-64 only.  Andreas Schwab says it's also needed on m68k
 +# to get a correct value for the wait-channel (WCHAN in ps). --davidm
 +CFLAGS_core.o := $(PROFILING) -fno-omit-frame-pointer
 +endif
 +
++obj-y += core.o loadavg.o cputime.o
 +obj-y += idle_task.o fair.o rt.o deadline.o stop_task.o
 +obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o
 +obj-$(CONFIG_SCHED_AUTOGROUP) += auto_group.o
 +obj-$(CONFIG_SCHEDSTATS) += stats.o
 +obj-$(CONFIG_SCHED_DEBUG) += debug.o
Simple merge
Simple merge
@@@ -2732,31 -2983,15 +2989,28 @@@ again
   *          - return from syscall or exception to user-space
   *          - return from interrupt-handler to user-space
   *
-  * WARNING: all callers must re-check need_resched() afterward and reschedule
-  * accordingly in case an event triggered the need for rescheduling (such as
-  * an interrupt waking up a task) while preemption was disabled in __schedule().
+  * WARNING: must be called with preemption disabled!
   */
 +//void print_rb_nodes(struct rq *rq) {
 +//    struct task_struct *p;
 +//
 +//    if (!rq->cfs.rb_leftmost)
 +//            return;
 +//
 +//    p = pick_next_task(rq);
 +//    if (rq->cfs.rb_leftmost)
 +//            print_rb_nodes(rq);
 +//    put_prev_task(rq, p);
 +//
 +//    printk("%i ", p->pid);
 +//}
  static void __sched __schedule(void)
  {
        struct task_struct *prev, *next;
        unsigned long *switch_count;
        struct rq *rq;
 -      int cpu;
 +      int i, cpu;
  
-       preempt_disable();
        cpu = smp_processor_id();
        rq = cpu_rq(cpu);
        rcu_note_context_switch();
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
  
  #include <trace/events/power.h>
  
 -#include "sched.h"
 +#ifdef CONFIG_MOD_SCHED
 +#include <os/linux.h>
 +#else
 +#include "cfs/sched.h"
 +#endif
  
+ /**
+  * sched_idle_set_state - Record idle state for the current CPU.
+  * @idle_state: State to record.
+  */
+ void sched_idle_set_state(struct cpuidle_state *idle_state)
+ {
+       idle_set_state(this_rq(), idle_state);
+ }
  static int __read_mostly cpu_idle_force_poll;
  
  void cpu_idle_poll_ctrl(bool enable)
diff --cc kernel/sysctl.c
Simple merge