From: AMEET M. PARANJAPE <aparanja@redhat.com> Date: Thu, 30 Oct 2008 13:54:13 -0500 Subject: [net] e1000e: update driver to support recovery Message-id: 490A02D5.1080103@REDHAT.COM O-Subject: Re: [PATCH RHEL5.3 BZ445299 2/2 version2] Update e1000 express device driver to support recovery Bugzilla: 445299 RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com> RH-Acked-by: David Howells <dhowells@redhat.com> RHBZ#: ====== https://bugzilla.redhat.com/show_bug.cgi?id=445299 Description: =========== This patch is in response to the comments made in RKML post: http://post-office.corp.redhat.com/archives/rhkernel-list/2008-August/msg00924.html. and it removes the casts from the memset lines. The new patch was tested and verfied to work. The latest brewbuild ID is given below. I wasn't able to figure out how to contect back to the orginal thread using Thunderbird, but since this is time sensitive, I hope this will be OK for now. kABI Status: ============ No symbols were harmed. Brew: ===== Built on all platforms. https://brewweb.devel.redhat.com/taskinfo?taskID=1534373 This patch has been reworked based on the previous comments. Specifically it removes the two stats clearing lines. They aren't part of the EEH fix and aren't upstream yet. If they are accepted upstream, we will resubmit them under a different bug report. The patch has been tested and verified and has brew build: https://brewweb.devel.redhat.com/taskinfo?taskID=1547623. -- Ameet M. Paranjape aparanja@redhat.com IBM/Red Hat POWER Liason IRC name: aparanja diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index e3c67e3..8d24642 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c @@ -4604,6 +4604,8 @@ static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev) return PCI_ERS_RESULT_DISCONNECT; } pci_set_master(pdev); + restore_pcie_reg(pdev); + pci_restore_msi_state(pdev); pci_enable_wake(pdev, PCI_D3hot, 0); pci_enable_wake(pdev, PCI_D3cold, 0); @@ -4748,6 +4750,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, goto err_pci_reg; pci_set_master(pdev); + save_pcie_reg(pdev); err = -ENOMEM; netdev = alloc_etherdev(sizeof(struct e1000_adapter));