diff options
Diffstat (limited to 'include/linux/sched.h')
| -rw-r--r-- | include/linux/sched.h | 23 | 
1 files changed, 18 insertions, 5 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 3f5395ae86bc..dc4ad4c58fae 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -36,6 +36,7 @@  #include <linux/seqlock.h>  #include <linux/kcsan.h>  #include <linux/rv.h> +#include <linux/livepatch_sched.h>  #include <asm/kmap_size.h>  /* task_struct member predeclarations (sorted alphabetically): */ @@ -1313,7 +1314,10 @@ struct task_struct {  #ifdef CONFIG_SCHED_MM_CID  	int				mm_cid;		/* Current cid in mm */ +	int				last_mm_cid;	/* Most recent cid in mm */ +	int				migrate_from_cpu;  	int				mm_cid_active;	/* Whether cid bitmap is active */ +	struct callback_head		cid_work;  #endif  	struct tlbflush_unmap_batch	tlb_ubc; @@ -2067,6 +2071,9 @@ extern int __cond_resched(void);  #if defined(CONFIG_PREEMPT_DYNAMIC) && defined(CONFIG_HAVE_PREEMPT_DYNAMIC_CALL) +void sched_dynamic_klp_enable(void); +void sched_dynamic_klp_disable(void); +  DECLARE_STATIC_CALL(cond_resched, __cond_resched);  static __always_inline int _cond_resched(void) @@ -2075,6 +2082,7 @@ static __always_inline int _cond_resched(void)  }  #elif defined(CONFIG_PREEMPT_DYNAMIC) && defined(CONFIG_HAVE_PREEMPT_DYNAMIC_KEY) +  extern int dynamic_cond_resched(void);  static __always_inline int _cond_resched(void) @@ -2082,20 +2090,25 @@ static __always_inline int _cond_resched(void)  	return dynamic_cond_resched();  } -#else +#else /* !CONFIG_PREEMPTION */  static inline int _cond_resched(void)  { +	klp_sched_try_switch();  	return __cond_resched();  } -#endif /* CONFIG_PREEMPT_DYNAMIC */ +#endif /* PREEMPT_DYNAMIC && CONFIG_HAVE_PREEMPT_DYNAMIC_CALL */ -#else +#else /* CONFIG_PREEMPTION && !CONFIG_PREEMPT_DYNAMIC */ -static inline int _cond_resched(void) { return 0; } +static inline int _cond_resched(void) +{ +	klp_sched_try_switch(); +	return 0; +} -#endif /* !defined(CONFIG_PREEMPTION) || defined(CONFIG_PREEMPT_DYNAMIC) */ +#endif /* !CONFIG_PREEMPTION || CONFIG_PREEMPT_DYNAMIC */  #define cond_resched() ({			\  	__might_resched(__FILE__, __LINE__, 0);	\  | 
