The patch titled Fix recovery path from errors during pcie_init() has been removed from the -mm tree. Its filename is fix-recovery-path-from-errors-during-pcie_init.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: Fix recovery path from errors during pcie_init() From: "Jan Beulich" <jbeulich@xxxxxxxxxx> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> Cc: Kristen Accardi <kristen.c.accardi@xxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/pci/hotplug/pciehp_hpc.c | 25 ++++++++++++++++++++----- 1 files changed, 20 insertions(+), 5 deletions(-) diff -puN drivers/pci/hotplug/pciehp_hpc.c~fix-recovery-path-from-errors-during-pcie_init drivers/pci/hotplug/pciehp_hpc.c --- devel/drivers/pci/hotplug/pciehp_hpc.c~fix-recovery-path-from-errors-during-pcie_init 2006-05-09 00:50:29.000000000 -0700 +++ devel-akpm/drivers/pci/hotplug/pciehp_hpc.c 2006-05-09 00:50:29.000000000 -0700 @@ -1479,7 +1479,7 @@ int pcie_init(struct controller * ctrl, rc = hp_register_read_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word); if (rc) { err("%s : hp_register_read_word SLOT_CTRL failed\n", __FUNCTION__); - goto abort_free_ctlr; + goto abort_free_irq; } intr_enable = intr_enable | PRSN_DETECT_ENABLE; @@ -1505,19 +1505,19 @@ int pcie_init(struct controller * ctrl, rc = hp_register_write_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word); if (rc) { err("%s : hp_register_write_word SLOT_CTRL failed\n", __FUNCTION__); - goto abort_free_ctlr; + goto abort_free_irq; } rc = hp_register_read_word(php_ctlr->pci_dev, SLOT_STATUS(ctrl->cap_base), slot_status); if (rc) { err("%s : hp_register_read_word SLOT_STATUS failed\n", __FUNCTION__); - goto abort_free_ctlr; + goto abort_disable_intr; } temp_word = 0x1F; /* Clear all events */ rc = hp_register_write_word(php_ctlr->pci_dev, SLOT_STATUS(ctrl->cap_base), temp_word); if (rc) { err("%s : hp_register_write_word SLOT_STATUS failed\n", __FUNCTION__); - goto abort_free_ctlr; + goto abort_disable_intr; } if (pciehp_force) { @@ -1526,7 +1526,7 @@ int pcie_init(struct controller * ctrl, } else { rc = pciehp_get_hp_hw_control_from_firmware(ctrl->pci_dev); if (rc) - goto abort_free_ctlr; + goto abort_disable_intr; } /* Add this HPC instance into the HPC list */ @@ -1553,6 +1553,21 @@ int pcie_init(struct controller * ctrl, return 0; /* We end up here for the many possible ways to fail this API. */ +abort_disable_intr: + rc = hp_register_read_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word); + if (!rc) { + temp_word &= ~(intr_enable | HP_INTR_ENABLE); + rc = hp_register_write_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word); + } + if (rc) + err("%s : disabling interrupts failed\n", __FUNCTION__); + +abort_free_irq: + if (pciehp_poll_mode) + del_timer_sync(&php_ctlr->int_poll_timer); + else + free_irq(php_ctlr->irq, ctrl); + abort_free_ctlr: pcie_cap_base = saved_cap_base; kfree(php_ctlr); _ Patches currently in -mm which might be from jbeulich@xxxxxxxxxx are origin.patch dprintk-adjustments-to-cpufreq-nforce2.patch dprintk-adjustments-to-cpufreq-speedstep-centrino.patch cpufreq-dprintk-adjustments.patch mpt_interrupt-should-return-irq_none-when.patch disable-config_stack_unwind.patch fix-x86-microcode-driver-handling-of-multiple-matching.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-vs-x86_64-mm-reliable-stack-trace-support-i386.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-vs-x86_64-mm-reliable-stack-trace-support-i386-2.patch adjust-handle_irr_event-return-type.patch lock-validator-irqtrace-cleanup-include-asm-x86_64-irqflagsh.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html