Messages in this thread | | | Date | Thu, 10 Aug 2017 16:39:59 +0800 | From | jeffy <> | Subject | Re: [RFC PATCH] PCI: rockchip: fix system hang up if activate CONFIG_DEBUG_SHIRQ |
| |
Hi shawn,
On 08/10/2017 04:21 PM, Shawn Lin wrote: > With CONFIG_DEBUG_SHIRQ enabled, the irq tear down routine > would still access the irq handler registed as a shard irq. > Per the comment within the function of __free_irq, it says > "It's a shared IRQ -- the driver ought to be prepared for > an IRQ event to happen even now it's being freed". However > when failing to probe the driver, it may disable the clock > for accessing the register and the following check for shared > irq state would call the irq handler which accesses the register > w/o the clk enabled. That will hang the system forever.
i think this extra irq call is to make sure it's safe to get a shared irq when we are freeing it, and we would not get this irq after freed it.
so maybe just call devm_free_irq before disable clks(and other required resources for the irq handler)? and also do it in the rockchip_pcie_remove.
| |