From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> MEMCG has a few constructs which are not compatible with PREEMPT_RT's requirements. This includes: - relying on disabled interrupts from spin_lock_irqsave() locking for something not related to lock itself (like the per-CPU counter). - explicitly disabling interrupts and acquiring a spinlock_t based lock like in memcg_check_events() -> eventfd_signal(). - explicitly disabling interrupts and freeing memory like in drain_obj_stock() -> obj_cgroup_put() -> obj_cgroup_release() -> percpu_ref_exit(). Commit 559271146efc ("mm/memcg: optimize user context object stock access") continued to optimize for the CPU local access which complicates the PREEMPT_RT locking requirements further. Disable MEMCG on PREEMPT_RT until the whole situation can be evaluated again. [ bigeasy: commit description. ] Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- init/Kconfig | 1 + 1 file changed, 1 insertion(+) --- a/init/Kconfig +++ b/init/Kconfig @@ -943,6 +943,7 @@ config PAGE_COUNTER config MEMCG bool "Memory controller" + depends on !PREEMPT_RT select PAGE_COUNTER select EVENTFD help