On Thu 25-08-22 18:41:28, Sebastian Andrzej Siewior wrote: > From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > > Use VM_WARN_ON_IRQS_ENABLED() and preempt_disable/enable_nested() to > replace the CONFIG_PREEMPT_RT #ifdeffery. > > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxxxx> > Cc: Roman Gushchin <roman.gushchin@xxxxxxxxx> > Cc: Shakeel Butt <shakeelb@xxxxxxxxxx> > Cc: Muchun Song <songmuchun@xxxxxxxxxxxxx> > Cc: cgroups@xxxxxxxxxxxxxxx > Cc: linux-mm@xxxxxxxxx > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> > Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> > Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> Thanks! > --- > mm/memcontrol.c | 19 ++++++------------- > 1 file changed, 6 insertions(+), 13 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index b69979c9ced5c..d35b6fa560f0a 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -597,25 +597,18 @@ static u64 flush_next_time; > */ > static void memcg_stats_lock(void) > { > -#ifdef CONFIG_PREEMPT_RT > - preempt_disable(); > -#else > - VM_BUG_ON(!irqs_disabled()); > -#endif > + preempt_disable_nested(); > + VM_WARN_ON_IRQS_ENABLED(); > } > > static void __memcg_stats_lock(void) > { > -#ifdef CONFIG_PREEMPT_RT > - preempt_disable(); > -#endif > + preempt_disable_nested(); > } > > static void memcg_stats_unlock(void) > { > -#ifdef CONFIG_PREEMPT_RT > - preempt_enable(); > -#endif > + preempt_enable_nested(); > } > > static inline void memcg_rstat_updated(struct mem_cgroup *memcg, int val) > @@ -715,7 +708,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, > * interrupt context while other caller need to have disabled interrupt. > */ > __memcg_stats_lock(); > - if (IS_ENABLED(CONFIG_DEBUG_VM) && !IS_ENABLED(CONFIG_PREEMPT_RT)) { > + if (IS_ENABLED(CONFIG_DEBUG_VM)) { > switch (idx) { > case NR_ANON_MAPPED: > case NR_FILE_MAPPED: > @@ -725,7 +718,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, > WARN_ON_ONCE(!in_task()); > break; > default: > - WARN_ON_ONCE(!irqs_disabled()); > + VM_WARN_ON_IRQS_ENABLED(); > } > } > > -- > 2.37.2 -- Michal Hocko SUSE Labs