Messages in this thread | | | Subject | Re: [ANNOUNCE] 3.14-rt1 | From | Mike Galbraith <> | Date | Sat, 26 Apr 2014 10:38:11 +0200 |
| |
On Fri, 2014-04-25 at 09:40 +0200, Mike Galbraith wrote:
> Hotplug can still deadlock in rt trees too, and will if you beat it > hard.
Box actually deadlocks like so.
CPU3 boot.kdump sys_wait4 do_wait read_lock(&tasklist_lock) rt_read_lock __rt_spin_lock(lock) migrate_disable() pin_current_cpu() if (hp->grab_lock) { preempt_enable(); <== hmm hotplug_lock(hp); hp = &__get_cpu_var(hotplug_pcp); <== hmm struct hotplug_pcp { unplug = 0xffff8800b7d0e540, sync_tsk = 0x0, refcount = 0, <== hmm grab_lock = 1, ... lock = { ... owner = 0xffff8802039f0001, stress-cpu-hotplug_stress.sh?!? <=== he's way over yonder. Yo, dude, would you please NOT take percpu locks with you?
CPU0 stress-cpu-hotplug_stress.sh sysfs_write_file dev_attr_store online_store device_offline cpu_subsys_offline cpu_down _cpu_down cpu_hotplug_begin mutex_lock(&cpu_hotplug.lock); ... check_for_tasks write_lock_irq(&tasklist_lock); held by CPU3 boot.kdump over there ===>
CPU0 kworker/0:0 cpuset_hotplug_workfn+0x23e/0x380 rebuild_sched_domains+0x15/0x30 rebuild_sched_domains_locked+0x17/0x80 get_online_cpus+0x35/0x50 mutex_lock(&cpu_hotplug.lock); held by stress-cpu-hotplug_stress.sh
twiddle twiddle twiddle... INFO: task kworker/0:0:4 blocked for more than 120 seconds.
| |