On Fri, Jan 14, 2022 at 10:50:05AM +0530, Aneesh Kumar K.V wrote: > Yu Zhao <yuzhao@xxxxxxxxxx> writes: > > On Thu, Jan 13, 2022 at 04:01:31PM +0530, Aneesh Kumar K.V wrote: > >> Yu Zhao <yuzhao@xxxxxxxxxx> writes: > >> > >> > Add /sys/kernel/mm/lru_gen/enabled as a runtime kill switch. > >> > >> Got the below lockdep warning while using the above kill/enable switch > >> > >> > >> [ 84.252952] ====================================================== > >> [ 84.253012] WARNING: possible circular locking dependency detected > >> [ 84.253074] 5.16.0-rc8-16204-g1cdcf1120b31 #511 Not tainted > >> [ 84.253135] ------------------------------------------------------ > >> [ 84.253194] bash/2862 is trying to acquire lock: > >> [ 84.253243] c0000000021ff740 (cgroup_mutex){+.+.}-{3:3}, at: store_enable+0x80/0x1510 > >> [ 84.253340] > >> but task is already holding lock: > >> [ 84.253410] c000000002221348 (mem_hotplug_lock){++++}-{0:0}, at: mem_hotplug_begin+0x30/0x50 > >> [ 84.253503] > >> which lock already depends on the new lock. > >> > >> [ 84.255933] Chain exists of: > >> cgroup_mutex --> cpu_hotplug_lock --> mem_hotplug_lock > > > > Thanks. Will reverse the order between mem_hotplug_lock and > > cgroup_mutex in the next spin. > > It also needs the unlocked variant of static_key_enable/disable. Right. This is what I have at the moment. Tested with QEMU memory hotplug. Can you please give it try too? Thanks. cgroup_lock() cpus_read_lock() get_online_mems() if (enable) static_branch_enable_cpuslocked() else static_branch_disable_cpuslocked() put_online_mems() cpus_read_unlock() cgroup_unlock()