diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index bb48449737938ee8163e077fa7343369f732d8d6..178e9dee217a6d1b9941b75d54a16ff941a01edb 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -369,6 +369,16 @@ struct mm_struct { unsigned long highest_vm_end; /* highest vma end address */ pgd_t * pgd; +#ifdef CONFIG_MEMBARRIER + /** + * @membarrier_state: Flags controlling membarrier behavior. + * + * This field is close to @pgd to hopefully fit in the same + * cache-line, which needs to be touched by switch_mm(). + */ + atomic_t membarrier_state; +#endif + /** * @mm_users: The number of users including userspace. * @@ -439,16 +449,6 @@ struct mm_struct { struct core_state *core_state; /* coredumping support */ -#ifdef CONFIG_MEMBARRIER - /** - * @membarrier_state: Flags controlling membarrier behavior. - * - * This field is close to @pgd to hopefully fit in the same - * cache-line, which needs to be touched by switch_mm(). - */ - atomic_t membarrier_state; -#endif - #ifdef CONFIG_AIO spinlock_t ioctx_lock; struct kioctx_table __rcu *ioctx_table; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 378bf05237c6518baaab946e58f3e22fa12b9d39..2213dac95a16d28b3b95e553cc694cc69439fded 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -843,6 +843,10 @@ struct rq { atomic_t nr_iowait; +#ifdef CONFIG_MEMBARRIER + int membarrier_state; +#endif + #ifdef CONFIG_SMP struct root_domain *rd; struct sched_domain *sd; @@ -926,14 +930,7 @@ struct rq { struct cpuidle_state *idle_state; #endif -#if defined(CONFIG_MEMBARRIER) && !defined(__GENKSYMS__) - union { - int membarrier_state; - long membarrier_state_KABI; - }; -#else KABI_RESERVE(1) -#endif KABI_RESERVE(2) };