* device removal hangs where there are open uverbs refs
@ 2014-03-24 7:16 Or Gerlitz
[not found] ` <CAJZOPZ+No+UY+owMOCVFVWKOFy1xG4zsX23F9CT9ZXC2a0SNzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Or Gerlitz @ 2014-03-24 7:16 UTC (permalink / raw)
To: Roland Dreier; +Cc: Bart Van Assche, linux-rdma
Hi Roland,
>From time to time I get a customer case which goes through something
like the below trace which steps on a design limitation of the
upstream IB stack -- namely, if you have a process with open uverbs
reference -- device removal flow hangs and this would happen with any
device/driver, nothing specific to mlx4. So... I think it's about time
to address it.
Can't we just foricibly close their uverbs file descriptor from within
the kernel and drop the ref?
Or.
INFO: task mlx4:2003 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Call Trace:
[<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0
[<ffffffff814fe323>] wait_for_common+0x123/0x180
[<ffffffff814fe43d>] wait_for_completion+0x1d/0x20
[<ffffffffa04600b3>] ib_uverbs_remove_one+0x73/0xa0 [ib_uverbs]
[<ffffffffa036fa6f>] ib_unregister_device+0x4f/0x100 [ib_core]
[<ffffffffa038fd76>] mlx4_ib_remove+0x26/0x110 [mlx4_ib]
[<ffffffffa0348391>] mlx4_remove_device+0x71/0x90 [mlx4_core]
[<ffffffffa03483f3>] mlx4_unregister_device+0x43/0x90 [mlx4_core]
[<ffffffffa0349bb8>] mlx4_change_port_types+0x68/0x120 [mlx4_core]
[<ffffffffa03546ab>] mlx4_sense_port+0x9b/0xd0 [mlx4_core]
[<ffffffff8108c760>] worker_thread+0x170/0x2a0
[<ffffffff81091d66>] kthread+0x96/0xa0
[<ffffffff8100c14a>] child_rip+0xa/0x20
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread[parent not found: <CAJZOPZ+No+UY+owMOCVFVWKOFy1xG4zsX23F9CT9ZXC2a0SNzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* RE: device removal hangs where there are open uverbs refs [not found] ` <CAJZOPZ+No+UY+owMOCVFVWKOFy1xG4zsX23F9CT9ZXC2a0SNzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-03-24 14:25 ` Steve Wise 2014-03-25 10:44 ` Bart Van Assche 0 siblings, 1 reply; 4+ messages in thread From: Steve Wise @ 2014-03-24 14:25 UTC (permalink / raw) To: 'Or Gerlitz', 'Roland Dreier' Cc: 'Bart Van Assche', 'linux-rdma' > -----Original Message----- > From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On > Behalf Of Or Gerlitz > Sent: Monday, March 24, 2014 2:16 AM > To: Roland Dreier > Cc: Bart Van Assche; linux-rdma > Subject: device removal hangs where there are open uverbs refs > > Hi Roland, > > >From time to time I get a customer case which goes through something > like the below trace which steps on a design limitation of the > upstream IB stack -- namely, if you have a process with open uverbs > reference -- device removal flow hangs and this would happen with any > device/driver, nothing specific to mlx4. So... I think it's about time > to address it. > > Can't we just foricibly close their uverbs file descriptor from within > the kernel and drop the ref? > Here is a previous thread discussing the issue in 2010: http://marc.info/?l=linux-rdma&m=126961887406371&w=3 > Or. > > INFO: task mlx4:2003 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > Call Trace: > [<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0 > [<ffffffff814fe323>] wait_for_common+0x123/0x180 > [<ffffffff814fe43d>] wait_for_completion+0x1d/0x20 > [<ffffffffa04600b3>] ib_uverbs_remove_one+0x73/0xa0 [ib_uverbs] > [<ffffffffa036fa6f>] ib_unregister_device+0x4f/0x100 [ib_core] > [<ffffffffa038fd76>] mlx4_ib_remove+0x26/0x110 [mlx4_ib] > [<ffffffffa0348391>] mlx4_remove_device+0x71/0x90 [mlx4_core] > [<ffffffffa03483f3>] mlx4_unregister_device+0x43/0x90 [mlx4_core] > [<ffffffffa0349bb8>] mlx4_change_port_types+0x68/0x120 [mlx4_core] > [<ffffffffa03546ab>] mlx4_sense_port+0x9b/0xd0 [mlx4_core] > [<ffffffff8108c760>] worker_thread+0x170/0x2a0 > [<ffffffff81091d66>] kthread+0x96/0xa0 > [<ffffffff8100c14a>] child_rip+0xa/0x20 > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: device removal hangs where there are open uverbs refs 2014-03-24 14:25 ` Steve Wise @ 2014-03-25 10:44 ` Bart Van Assche [not found] ` <53315E18.2010601-HInyCGIudOg@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Bart Van Assche @ 2014-03-25 10:44 UTC (permalink / raw) To: Steve Wise, 'Or Gerlitz', 'Roland Dreier' Cc: 'Bart Van Assche', 'linux-rdma' On 03/24/14 15:25, Steve Wise wrote: >> -----Original Message----- >> From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On >> Behalf Of Or Gerlitz >> Sent: Monday, March 24, 2014 2:16 AM >> To: Roland Dreier >> Cc: Bart Van Assche; linux-rdma >> Subject: device removal hangs where there are open uverbs refs >> >> Hi Roland, >> >> >From time to time I get a customer case which goes through something >> like the below trace which steps on a design limitation of the >> upstream IB stack -- namely, if you have a process with open uverbs >> reference -- device removal flow hangs and this would happen with any >> device/driver, nothing specific to mlx4. So... I think it's about time >> to address it. >> >> Can't we just foricibly close their uverbs file descriptor from within >> the kernel and drop the ref? >> >> Or. >> >> INFO: task mlx4:2003 blocked for more than 120 seconds. >> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. >> Call Trace: >> [<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0 >> [<ffffffff814fe323>] wait_for_common+0x123/0x180 >> [<ffffffff814fe43d>] wait_for_completion+0x1d/0x20 >> [<ffffffffa04600b3>] ib_uverbs_remove_one+0x73/0xa0 [ib_uverbs] >> [<ffffffffa036fa6f>] ib_unregister_device+0x4f/0x100 [ib_core] >> [<ffffffffa038fd76>] mlx4_ib_remove+0x26/0x110 [mlx4_ib] >> [<ffffffffa0348391>] mlx4_remove_device+0x71/0x90 [mlx4_core] >> [<ffffffffa03483f3>] mlx4_unregister_device+0x43/0x90 [mlx4_core] >> [<ffffffffa0349bb8>] mlx4_change_port_types+0x68/0x120 [mlx4_core] >> [<ffffffffa03546ab>] mlx4_sense_port+0x9b/0xd0 [mlx4_core] >> [<ffffffff8108c760>] worker_thread+0x170/0x2a0 >> [<ffffffff81091d66>] kthread+0x96/0xa0 >> [<ffffffff8100c14a>] child_rip+0xa/0x20 > > Here is a previous thread discussing the issue in 2010: > > http://marc.info/?l=linux-rdma&m=126961887406371&w=3 There might be an easier solution for the issue reported by Or than what has been discussed in 2010. Is it necessary that mlx4_sense_port() blocks until ib_uverbs_remove_one() has finished ? Since mlx4_sense_port() runs periodically, how about changing that function such that it does not invoke mlx4_unregister_device() if a port is still in use but instead tries again to change the port type during the next call of mlx4_sense_port() ? Bart. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <53315E18.2010601-HInyCGIudOg@public.gmane.org>]
* Re: device removal hangs where there are open uverbs refs [not found] ` <53315E18.2010601-HInyCGIudOg@public.gmane.org> @ 2014-03-25 14:35 ` Carol Soto 0 siblings, 0 replies; 4+ messages in thread From: Carol Soto @ 2014-03-25 14:35 UTC (permalink / raw) To: Bart Van Assche, Steve Wise, 'Or Gerlitz', 'Roland Dreier' Cc: 'linux-rdma' On 3/25/2014 5:44 AM, Bart Van Assche wrote: > On 03/24/14 15:25, Steve Wise wrote: >>> -----Original Message----- >>> From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On >>> Behalf Of Or Gerlitz >>> Sent: Monday, March 24, 2014 2:16 AM >>> To: Roland Dreier >>> Cc: Bart Van Assche; linux-rdma >>> Subject: device removal hangs where there are open uverbs refs >>> >>> Hi Roland, >>> >>> >From time to time I get a customer case which goes through something >>> like the below trace which steps on a design limitation of the >>> upstream IB stack -- namely, if you have a process with open uverbs >>> reference -- device removal flow hangs and this would happen with any >>> device/driver, nothing specific to mlx4. So... I think it's about time >>> to address it. >>> >>> Can't we just foricibly close their uverbs file descriptor from within >>> the kernel and drop the ref? >>> >>> Or. >>> >>> INFO: task mlx4:2003 blocked for more than 120 seconds. >>> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. >>> Call Trace: >>> [<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0 >>> [<ffffffff814fe323>] wait_for_common+0x123/0x180 >>> [<ffffffff814fe43d>] wait_for_completion+0x1d/0x20 >>> [<ffffffffa04600b3>] ib_uverbs_remove_one+0x73/0xa0 [ib_uverbs] >>> [<ffffffffa036fa6f>] ib_unregister_device+0x4f/0x100 [ib_core] >>> [<ffffffffa038fd76>] mlx4_ib_remove+0x26/0x110 [mlx4_ib] >>> [<ffffffffa0348391>] mlx4_remove_device+0x71/0x90 [mlx4_core] >>> [<ffffffffa03483f3>] mlx4_unregister_device+0x43/0x90 [mlx4_core] >>> [<ffffffffa0349bb8>] mlx4_change_port_types+0x68/0x120 [mlx4_core] >>> [<ffffffffa03546ab>] mlx4_sense_port+0x9b/0xd0 [mlx4_core] >>> [<ffffffff8108c760>] worker_thread+0x170/0x2a0 >>> [<ffffffff81091d66>] kthread+0x96/0xa0 >>> [<ffffffff8100c14a>] child_rip+0xa/0x20 >> Here is a previous thread discussing the issue in 2010: >> >> http://marc.info/?l=linux-rdma&m=126961887406371&w=3 > There might be an easier solution for the issue reported by Or than what > has been discussed in 2010. Is it necessary that mlx4_sense_port() > blocks until ib_uverbs_remove_one() has finished ? Since > mlx4_sense_port() runs periodically, how about changing that function > such that it does not invoke mlx4_unregister_device() if a port is still > in use but instead tries again to change the port type during the next > call of mlx4_sense_port() ? > > Bart. > -- I have seen the same hang doing PCI error injection to Mellanox cards. Here is the stack trace: kernel: Call Trace: kernel: [c0000000fb40ef60] [0000000000000001] 0x1 (unreliable) kernel: [c0000000fb40f130] [c0000000000144f0] .__switch_to+0x1c0/0x390 kernel: [c0000000fb40f1e0] [c0000000006d3af8] .__schedule+0x328/0x920 kernel: [c0000000fb40f460] [c0000000006d1364] .schedule_timeout+0x244/0x2e0 kernel: [c0000000fb40f560] [c0000000006d47ac] .wait_for_common+0x18c/0x210 kernel: [c0000000fb40f630] [d0000000069a0af4] .ib_uverbs_remove_one+0xd4/0x150 [ib_uverbs] kernel: [c0000000fb40f6b0] [d0000000063d5174] .ib_unregister_device+0x74/0x150 [ib_core] kernel: [c0000000fb40f750] [d0000000066b7ad4] .mlx4_ib_remove+0x44/0x220 [mlx4_ib] kernel: [c0000000fb40f7e0] [d000000002d3d07c] .mlx4_remove_device+0xdc/0x120 [mlx4_core] kernel: [c0000000fb40f870] [d000000002d3d6ec] .mlx4_unregister_device+0x7c/0xf0 [mlx4_core] kernel: [c0000000fb40f900] [d000000002d3ec20] .mlx4_remove_one+0x60/0x3e0 [mlx4_core] kernel: [c0000000fb40f9a0] [d000000002d3efb8] .mlx4_pci_err_detected+0x18/0x40 [mlx4_core] kernel: [c0000000fb40fa20] [c000000000035600] .eeh_report_error+0xa0/0x120 kernel: [c0000000fb40fab0] [c0000000000342ec] .eeh_pe_dev_traverse+0x9c/0x190 kernel: [c0000000fb40fb60] [c000000000035c1c] .eeh_handle_normal_event+0x11c/0x3c0 kernel: [c0000000fb40fbf0] [c000000000035ef0] .eeh_handle_event+0x30/0x2b0 kernel: [c0000000fb40fc90] [c0000000000362b4] .eeh_event_handler+0x144/0x160 kernel: [c0000000fb40fd30] [c0000000000c01b8] .kthread+0xe8/0xf0 kernel: [c0000000fb40fe30] [c00000000000a168] .ret_from_kernel_thread+0x5c/0x74 The only way that I can get out of this hang is CTRL+C or send a signal to kill the application that has the file descriptor open. Is there any other way to close the file descriptor to avoid this hang? Carol > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-03-25 14:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-24 7:16 device removal hangs where there are open uverbs refs Or Gerlitz
[not found] ` <CAJZOPZ+No+UY+owMOCVFVWKOFy1xG4zsX23F9CT9ZXC2a0SNzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-24 14:25 ` Steve Wise
2014-03-25 10:44 ` Bart Van Assche
[not found] ` <53315E18.2010601-HInyCGIudOg@public.gmane.org>
2014-03-25 14:35 ` Carol Soto
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox