From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from regular1.263xmail.com ([211.150.99.141]:44692 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751456AbdHJIkW (ORCPT ); Thu, 10 Aug 2017 04:40:22 -0400 Message-ID: <598C1BDF.6010203@rock-chips.com> Date: Thu, 10 Aug 2017 16:39:59 +0800 From: jeffy MIME-Version: 1.0 To: Shawn Lin , Bjorn Helgaas , Marc Zyngier , Thomas Gleixner CC: Heiko Stuebner , linux-pci@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Douglas Anderson , Brian Norris Subject: Re: [RFC PATCH] PCI: rockchip: fix system hang up if activate CONFIG_DEBUG_SHIRQ References: <1502353273-123788-1-git-send-email-shawn.lin@rock-chips.com> In-Reply-To: <1502353273-123788-1-git-send-email-shawn.lin@rock-chips.com> Content-Type: text/plain; charset=UTF-8; format=flowed Sender: linux-pci-owner@vger.kernel.org List-ID: 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. From mboxrd@z Thu Jan 1 00:00:00 1970 From: jeffy Subject: Re: [RFC PATCH] PCI: rockchip: fix system hang up if activate CONFIG_DEBUG_SHIRQ Date: Thu, 10 Aug 2017 16:39:59 +0800 Message-ID: <598C1BDF.6010203@rock-chips.com> References: <1502353273-123788-1-git-send-email-shawn.lin@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1502353273-123788-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Shawn Lin , Bjorn Helgaas , Marc Zyngier , Thomas Gleixner Cc: Heiko Stuebner , linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Brian Norris , Douglas Anderson , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-rockchip.vger.kernel.org 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.