Merge tag 'Smack-for-5.8' of git://github.com/cschaufler/smack-next
[linux-2.6-microblaze.git] / include / linux / sched.h
index 4418f5c..57a5ce9 100644 (file)
@@ -613,7 +613,7 @@ union rcu_special {
                u8                      blocked;
                u8                      need_qs;
                u8                      exp_hint; /* Hint for performance. */
-               u8                      deferred_qs;
+               u8                      need_mb; /* Readers need smp_mb(). */
        } b; /* Bits. */
        u32 s; /* Set of bits. */
 };
@@ -654,6 +654,7 @@ struct task_struct {
 
 #ifdef CONFIG_SMP
        struct llist_node               wake_entry;
+       unsigned int                    wake_entry_type;
        int                             on_cpu;
 #ifdef CONFIG_THREAD_INFO_IN_TASK
        /* Current CPU: */
@@ -724,6 +725,14 @@ struct task_struct {
        struct list_head                rcu_tasks_holdout_list;
 #endif /* #ifdef CONFIG_TASKS_RCU */
 
+#ifdef CONFIG_TASKS_TRACE_RCU
+       int                             trc_reader_nesting;
+       int                             trc_ipi_to_cpu;
+       union rcu_special               trc_reader_special;
+       bool                            trc_reader_checked;
+       struct list_head                trc_holdout_list;
+#endif /* #ifdef CONFIG_TASKS_TRACE_RCU */
+
        struct sched_info               sched_info;
 
        struct list_head                tasks;
@@ -983,6 +992,7 @@ struct task_struct {
        unsigned int                    hardirq_disable_event;
        int                             hardirqs_enabled;
        int                             hardirq_context;
+       u64                             hardirq_chain_key;
        unsigned long                   softirq_disable_ip;
        unsigned long                   softirq_enable_ip;
        unsigned int                    softirq_disable_event;
@@ -1289,6 +1299,12 @@ struct task_struct {
        unsigned long                   prev_lowest_stack;
 #endif
 
+#ifdef CONFIG_X86_MCE
+       u64                             mce_addr;
+       u64                             mce_status;
+       struct callback_head            mce_kill_me;
+#endif
+
        /*
         * New fields for task_struct should be added above here, so that
         * they are included in the randomized portion of task_struct.
@@ -1481,7 +1497,8 @@ extern struct pid *cad_pid;
 #define PF_KSWAPD              0x00020000      /* I am kswapd */
 #define PF_MEMALLOC_NOFS       0x00040000      /* All allocation requests will inherit GFP_NOFS */
 #define PF_MEMALLOC_NOIO       0x00080000      /* All allocation requests will inherit GFP_NOIO */
-#define PF_LESS_THROTTLE       0x00100000      /* Throttle me less: I clean memory */
+#define PF_LOCAL_THROTTLE      0x00100000      /* Throttle writes only against the bdi I write to,
+                                                * I am cleaning dirty pages from some other bdi. */
 #define PF_KTHREAD             0x00200000      /* I am a kernel thread */
 #define PF_RANDOMIZE           0x00400000      /* Randomize virtual address space */
 #define PF_SWAPWRITE           0x00800000      /* Allowed to write to swap */
@@ -1715,7 +1732,15 @@ extern char *__get_task_comm(char *to, size_t len, struct task_struct *tsk);
 })
 
 #ifdef CONFIG_SMP
-void scheduler_ipi(void);
+static __always_inline void scheduler_ipi(void)
+{
+       /*
+        * Fold TIF_NEED_RESCHED into the preempt_count; anybody setting
+        * TIF_NEED_RESCHED remotely (for the first time) will also send
+        * this IPI.
+        */
+       preempt_fold_need_resched();
+}
 extern unsigned long wait_task_inactive(struct task_struct *, long match_state);
 #else
 static inline void scheduler_ipi(void) { }