From mboxrd@z Thu Jan 1 00:00:00 1970 From: linas@austin.ibm.com (Linas Vepstas) Subject: [PATCH] please include in 2.6.18: e100 disable device on PCI error Date: Mon, 18 Sep 2006 15:01:22 -0500 Message-ID: <20060918200122.GD29167@austin.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, linux-pci@atrey.karlin.mff.cuni.cz, netdev@vger.kernel.org, Jesse Brandeburg , Rajesh Shah , "Ronciak, John" , "bibo,mao" , Auke Kok , Auke Kok Return-path: Received: from e35.co.us.ibm.com ([32.97.110.153]:46722 "EHLO e35.co.us.ibm.com") by vger.kernel.org with ESMTP id S1751893AbWIRUBg (ORCPT ); Mon, 18 Sep 2006 16:01:36 -0400 To: akpm@osdl.org, Greg KH Content-Disposition: inline Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi, Please apply the following one-liner patch to what will become the stable 2.6.18. This patch is low-risk because it affects only the PCI error recovery code, which dosn't run on most platforms (in particular, isn't invoked on current x86/ia64). This patch was originally sent on 29 June 2006 to fix a bug that showed up in an -mm build. The code from -mm made it into mainline, but this patch did not, and so we're unhappy. :-( Here's the original patch description: A recent patch in -mm3 titled gregkh-pci-pci-don-t-enable-device-if-already-enabled.patch causes pci_enable_device() to be a no-op if the kernel thinks that the device is already enabled. This change breaks the PCI error recovery mechanism in the e100 device driver, since, after PCI slot reset, the card is no longer enabled. This is a trivial fix for this problem. Tested. Signed-off-by: Linas Vepstas Signed-off-by: Andrew Morton Signed-off-by: Auke Kok ---- drivers/net/e100.c | 1 + 1 file changed, 1 insertion(+) Index: linux-2.6.18-rc7-git1/drivers/net/e100.c =================================================================== --- linux-2.6.18-rc7-git1.orig/drivers/net/e100.c 2006-09-18 14:21:49.000000000 -0500 +++ linux-2.6.18-rc7-git1/drivers/net/e100.c 2006-09-18 14:24:50.000000000 -0500 @@ -2799,6 +2799,7 @@ static pci_ers_result_t e100_io_error_de /* Detach; put netif into state similar to hotplug unplug. */ netif_poll_enable(netdev); netif_device_detach(netdev); + pci_disable_device(pdev); /* Request a slot reset. */ return PCI_ERS_RESULT_NEED_RESET;