Hi, Corey. Osamu Samukawa <osa-samuk...@tg.jp.nec.com> reported a deadlock in the ipmi.
Kosuke Tatsukawa <ta...@ab.jp.nec.com> characterized it as follows. -------------------------------------------------------------------------------- Below is the source code level stack trace. ipmi_thread() [drivers/char/ipmi/ipmi_si_intf.c:995] smi_event_handler() [drivers/char/ipmi/ipmi_si_intf.c:765] handle_transaction_done() [drivers/char/ipmi/ipmi_si_intf.c:555] deliver_recv_msg() [drivers/char/ipmi/ipmi_si_intf.c:283] ipmi_smi_msg_received() [drivers/char/ipmi/ipmi_msghandler.c:4503] intf_err_seq() [drivers/char/ipmi/ipmi_msghandler.c:1149] smi_remove_watch() [drivers/char/ipmi/ipmi_msghandler.c:999] set_need_watch() [drivers/char/ipmi/ipmi_si_intf.c:1066] Upstream commit e1891cffd4c4896a899337a243273f0e23c028df adds code to ipmi_smi_msg_received() to call smi_remove_watch() via intf_err_seq() and this seems to be causing the deadlock. commit e1891cffd4c4896a899337a243273f0e23c028df Author: Corey Minyard <cminy...@mvista.com> Date: Wed Oct 24 15:17:04 2018 -0500 ipmi: Make the smi watcher be disabled immediately when not needed -------------------------------------------------------------------------------- I looked at the code, and Kosuke's analysis is correct. Function set_need_watch tries to take out the same si_lock that was taken earlier by ipmi_thread. Do we really need to take out the si_lock in ipmi_thread? Do we really need to block IRQs that early? Thanks and regards, Tony Camuso <tcam...@redhat.com> _______________________________________________ Openipmi-developer mailing list Openipmi-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openipmi-developer