On 2013/1/5 5:50, Bjorn Helgaas wrote: > [+to Yijing, +cc Kenji] > > On Fri, Jan 4, 2013 at 1:01 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> On Thu, Jan 3, 2013 at 8:41 AM, Jiang Liu <liuj97@xxxxxxxxx> wrote: >>> Hi Daniel, >>> It seems like an issue caused by recursive PCIe HPC. >>> Could you please help to try the patch from: >>> http://www.spinics.net/lists/linux-pci/msg18625.html >> >> Hi Gerry, >> >> I'm working on merging this patch. Seems like something that might be >> appropriate for stable as well. >> >> Did you look for similar problems in other hotplug drivers? > > Oops, sorry, I forgot that Yijing is the author of the patch in question. > > Yijing, please check for the same problem in other hotplug drivers. > Questions I have after a quick look: > OK, I will check the similar problems for other hotplug drivers, my pleasure. Thanks! Yijing. > - shpchp_wq looks like it might have the same deadlock issue. > > - pciehp_wq (and your per-slot replacement) are allocated with > alloc_workqueue(). shpchp_wq is allocated with > alloc_ordered_workqueue(). Why the difference? > > - The alloc/alloc_ordered difference might be related to 486b10b9f4, > where Kenji removed alloc_ordered from pciehp. Should a similar > change be made to shpchp? > > - acpiphp uses the global kacpi_hotplug_wq. We never flush or drain > kacpi_hotplug_wq, so I doubt there's a deadlock issue, but I wonder if > there are any ordering issues there because we *don't* ever wait for > things in that queue to be completed. > >>> Thanks! >>> Gerry >>> On 01/03/2013 11:11 PM, Daniel J Blueman wrote: >>>> When the Apple thunderbolt ethernet adapter comes loose on my Macbook >>>> Pro Retina (Intel DSL3510), we see pci_slot_name return >>>> non-deterministic data (ie varying each boot), and we see pciehp_wp >>>> remain armed with events causing the kthread to get stuck: >>>> >>>> tg3 0000:0a:00.0 eth0: Link is up at 1000 Mbps, full duplex >>>> tg3 0000:0a:00.0 eth0: Flow control is on for TX and on for RX >>>> <thunderbold adapter comes loose> >>>> pciehp 0000:06:03.0:pcie24: Card not present on Slot(3) >>>> tg3 0000:0a:00.0: tg3_abort_hw timed out, TX_MODE_ENABLE will not >>>> clear MAC_TX_MODE=ffffffff >>>> tg3 0000:0a:00.0 eth0: No firmware running >>>> tg3 0000:0a:00.0 eth0: Link is down >>>> pcieport 0000:00:01.1: System wakeup enabled by ACPI >>>> pciehp 0000:09:00.0:pcie24: unloading service driver pciehp >>>> pciehp 0000:09:00.0:pcie24: Latch open on >>>> Slot(\xfffffff89\xffffffbbe\x02\xffffff88\xffffffff\xffffffff\xffffffe09\xffffffbbe\x02\xffffff88\xffffffff\xfffffffffbcon) >>>> pciehp 0000:09:00.0:pcie24: Button pressed on >>>> Slot(\xfffffff89\xffffffbbe\x02\xffffff88\xffffffff\xffffffff\xffffffe09\xffffffbbe\x02\xffffff88\xffffffff\xfffffffffbcon) >>>> pciehp 0000:09:00.0:pcie24: Card present on >>>> Slot(\xfffffff89\xffffffbbe\x02\xffffff88\xffffffff\xffffffff\xffffffe09\xffffffbbe\x02\xffffff88\xffffffff\xfffffffffbcon) >>>> pciehp 0000:09:00.0:pcie24: Power fault on slot >>>> \xfffffff89\xffffffbbe\x02\xffffff88\xffffffff\xffffffff\xffffffe09\xffffffbbe\x02\xffffff88\xffffffff\xfffffffffbcon >>>> pciehp 0000:09:00.0:pcie24: Power fault bit 0 set >>>> pciehp 0000:09:00.0:pcie24: PCI slot >>>> #\xfffffff89\xffffffbbe\x02\xffffff88\xffffffff\xffffffff\xffffffe09\xffffffbbe\x02\xffffff88\xffffffff\xfffffffffbcon >>>> - powering on due to button press. >>>> pciehp 0000:09:00.0:pcie24: Link Training Error occurs >>>> pciehp 0000:09:00.0:pcie24: Failed to check link status >>>> INFO: task kworker/0:1:52 blocked for more than 120 seconds. >>>> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. >>>> kworker/0:1 D ffff880265893090 0 52 2 0x00000000 >>>> ffff8802655456f8 0000000000000046 ffffffff81a21a60 ffff880265545fd8 >>>> 0000000000004000 ffff880265545fd8 ffff880265892bb0 ffff880265adc8d0 >>>> 000000000000059e 0000000000000082 ffff880265545668 ffffffff810415aa >>>> Call Trace: >>>> [<ffffffff810415aa>] ? console_unlock+0x1fa/0x4a0 >>>> [<ffffffff8108d16d>] ? trace_hardirqs_off+0xd/0x10 >>>> [<ffffffff81041b19>] ? vprintk_emit+0x1c9/0x510 >>>> [<ffffffff81558db4>] schedule+0x24/0x70 >>>> [<ffffffff8155653c>] schedule_timeout+0x19c/0x1e0 >>>> [<ffffffff81558c43>] wait_for_common+0xe3/0x180 >>>> [<ffffffff8105adc1>] ? flush_workqueue+0x111/0x4d0 >>>> [<ffffffff81071140>] ? try_to_wake_up+0x2d0/0x2d0 >>>> [<ffffffff81558d88>] wait_for_completion+0x18/0x20 >>>> [<ffffffff8105ae86>] flush_workqueue+0x1d6/0x4d0 >>>> [<ffffffff8105acb0>] ? flush_workqueue_prep_cwqs+0x200/0x200 >>>> [<ffffffff8125e909>] pciehp_release_ctrl+0x39/0x90 >>>> [<ffffffff8125b945>] pciehp_remove+0x25/0x30 >>>> [<ffffffff81255bf2>] pcie_port_remove_service+0x52/0x70 >>>> [<ffffffff81306a27>] __device_release_driver+0x77/0xe0 >>>> [<ffffffff81306ab9>] device_release_driver+0x29/0x40 >>>> [<ffffffff813064b1>] bus_remove_device+0xf1/0x140 >>>> [<ffffffff81303fe7>] device_del+0x127/0x1c0 >>>> [<ffffffff81255d70>] ? resume_iter+0x40/0x40 >>>> [<ffffffff81304091>] device_unregister+0x11/0x20 >>>> [<ffffffff81255da5>] remove_iter+0x35/0x40 >>>> [<ffffffff81302eb6>] device_for_each_child+0x36/0x70 >>>> [<ffffffff81256341>] pcie_port_device_remove+0x21/0x40 >>>> [<ffffffff81256588>] pcie_portdrv_remove+0x28/0x50 >>>> [<ffffffff8124a821>] pci_device_remove+0x41/0xc0 >>>> [<ffffffff81306a27>] __device_release_driver+0x77/0xe0 >>>> [<ffffffff81306ab9>] device_release_driver+0x29/0x40 >>>> [<ffffffff813064b1>] bus_remove_device+0xf1/0x140 >>>> [<ffffffff81303fe7>] device_del+0x127/0x1c0 >>>> [<ffffffff81304091>] device_unregister+0x11/0x20 >>>> [<ffffffff8124566c>] pci_stop_bus_device+0x8c/0xa0 >>>> [<ffffffff81245615>] pci_stop_bus_device+0x35/0xa0 >>>> [<ffffffff81245811>] pci_stop_and_remove_bus_device+0x11/0x20 >>>> [<ffffffff8125cc91>] pciehp_unconfigure_device+0x91/0x190 >>>> [<ffffffff8125c76d>] ? pciehp_power_thread+0x2d/0x110 >>>> [<ffffffff8125c591>] pciehp_disable_slot+0x71/0x220 >>>> [<ffffffff8125c826>] pciehp_power_thread+0xe6/0x110 >>>> [<ffffffff8105d203>] process_one_work+0x193/0x550 >>>> [<ffffffff8105d1a1>] ? process_one_work+0x131/0x550 >>>> [<ffffffff8125c740>] ? pciehp_disable_slot+0x220/0x220 >>>> [<ffffffff8105d96d>] worker_thread+0x15d/0x400 >>>> [<ffffffff8109213d>] ? trace_hardirqs_on+0xd/0x10 >>>> [<ffffffff8105d810>] ? rescuer_thread+0x210/0x210 >>>> [<ffffffff81062bd6>] kthread+0xd6/0xe0 >>>> [<ffffffff8155a18b>] ? _raw_spin_unlock_irq+0x2b/0x50 >>>> [<ffffffff81062b00>] ? __init_kthread_worker+0x70/0x70 >>>> [<ffffffff8155ae6c>] ret_from_fork+0x7c/0xb0 >>>> [<ffffffff81062b00>] ? __init_kthread_worker+0x70/0x70 >>>> >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-pci" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html > > . > -- Thanks! Yijing -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html