]> Git Repo - linux.git/commitdiff
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <[email protected]>
Thu, 26 May 2016 00:11:43 +0000 (17:11 -0700)
committerLinus Torvalds <[email protected]>
Thu, 26 May 2016 00:11:43 +0000 (17:11 -0700)
Pull scheduler fixes from Ingo Molnar:
 "Two fixes: one for a lost wakeup, the other to fix the compiler
  optimizing out preempt operations on ARM64 (and possibly other non-x86
  architectures)"

* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/core: Fix remote wakeups
  sched/preempt: Fix preempt_count manipulations

1  2 
include/linux/sched.h

diff --combined include/linux/sched.h
index 21c26e78aec5a36a018e8c95b7ea5221e8381eb1,e053517a88b6a6c18f464a4e01c7dce075df33ae..23e075dcdfe4efaaf3974c70cabc71344b3557a9
@@@ -521,7 -521,6 +521,7 @@@ static inline int get_dumpable(struct m
  
  #define MMF_HAS_UPROBES               19      /* has uprobes */
  #define MMF_RECALC_UPROBES    20      /* MMF_HAS_UPROBES can be wrong */
 +#define MMF_OOM_REAPED                21      /* mm has been already reaped */
  
  #define MMF_INIT_MASK         (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK)
  
@@@ -669,7 -668,6 +669,7 @@@ struct signal_struct 
        atomic_t                sigcnt;
        atomic_t                live;
        int                     nr_threads;
 +      atomic_t oom_victims; /* # of TIF_MEDIE threads in this thread group */
        struct list_head        thread_head;
  
        wait_queue_head_t       wait_chldexit;  /* for wait4() */
        struct tty_audit_buf *tty_audit_buf;
  #endif
  
 -      oom_flags_t oom_flags;
 +      /*
 +       * Thread is the potential origin of an oom condition; kill first on
 +       * oom
 +       */
 +      bool oom_flag_origin;
        short oom_score_adj;            /* OOM kill score adjustment */
        short oom_score_adj_min;        /* OOM kill score adjustment min value.
                                         * Only settable by CAP_SYS_RESOURCE. */
@@@ -1539,6 -1533,7 +1539,7 @@@ struct task_struct 
        unsigned sched_reset_on_fork:1;
        unsigned sched_contributes_to_load:1;
        unsigned sched_migrated:1;
+       unsigned sched_remote_wakeup:1;
        unsigned :0; /* force alignment to the next boundary */
  
        /* unserialized, strictly 'current' */
@@@ -2254,7 -2249,6 +2255,7 @@@ static inline void memalloc_noio_restor
  #define PFA_NO_NEW_PRIVS 0    /* May not gain new privileges. */
  #define PFA_SPREAD_PAGE  1      /* Spread page cache over cpuset */
  #define PFA_SPREAD_SLAB  2      /* Spread some slab caches over cpuset */
 +#define PFA_LMK_WAITING  3      /* Lowmemorykiller is waiting */
  
  
  #define TASK_PFA_TEST(name, func)                                     \
@@@ -2278,9 -2272,6 +2279,9 @@@ TASK_PFA_TEST(SPREAD_SLAB, spread_slab
  TASK_PFA_SET(SPREAD_SLAB, spread_slab)
  TASK_PFA_CLEAR(SPREAD_SLAB, spread_slab)
  
 +TASK_PFA_TEST(LMK_WAITING, lmk_waiting)
 +TASK_PFA_SET(LMK_WAITING, lmk_waiting)
 +
  /*
   * task->jobctl flags
   */
@@@ -2731,24 -2722,14 +2732,24 @@@ extern struct mm_struct * mm_alloc(void
  
  /* mmdrop drops the mm and the page tables */
  extern void __mmdrop(struct mm_struct *);
 -static inline void mmdrop(struct mm_struct * mm)
 +static inline void mmdrop(struct mm_struct *mm)
  {
        if (unlikely(atomic_dec_and_test(&mm->mm_count)))
                __mmdrop(mm);
  }
  
 +static inline bool mmget_not_zero(struct mm_struct *mm)
 +{
 +      return atomic_inc_not_zero(&mm->mm_users);
 +}
 +
  /* mmput gets rid of the mappings and all user-space */
  extern void mmput(struct mm_struct *);
 +/* same as above but performs the slow path from the async kontext. Can
 + * be called from the atomic context as well
 + */
 +extern void mmput_async(struct mm_struct *);
 +
  /* Grab a reference to a task's mm, if it is not already going away */
  extern struct mm_struct *get_task_mm(struct task_struct *task);
  /*
@@@ -2777,14 -2758,7 +2778,14 @@@ static inline int copy_thread_tls
  }
  #endif
  extern void flush_thread(void);
 -extern void exit_thread(void);
 +
 +#ifdef CONFIG_HAVE_EXIT_THREAD
 +extern void exit_thread(struct task_struct *tsk);
 +#else
 +static inline void exit_thread(struct task_struct *tsk)
 +{
 +}
 +#endif
  
  extern void exit_files(struct task_struct *);
  extern void __cleanup_sighand(struct sighand_struct *);
@@@ -3378,10 -3352,7 +3379,10 @@@ struct update_util_data 
                     u64 time, unsigned long util, unsigned long max);
  };
  
 -void cpufreq_set_update_util_data(int cpu, struct update_util_data *data);
 +void cpufreq_add_update_util_hook(int cpu, struct update_util_data *data,
 +                      void (*func)(struct update_util_data *data, u64 time,
 +                                   unsigned long util, unsigned long max));
 +void cpufreq_remove_update_util_hook(int cpu);
  #endif /* CONFIG_CPU_FREQ */
  
  #endif
This page took 0.07732 seconds and 4 git commands to generate.