aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/hpilo.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/hpilo.c')
-rw-r--r--drivers/misc/hpilo.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/misc/hpilo.c b/drivers/misc/hpilo.c
index 6df0da4085e3..12ccdf94e4fa 100644
--- a/drivers/misc/hpilo.c
+++ b/drivers/misc/hpilo.c
@@ -736,7 +736,14 @@ static void ilo_remove(struct pci_dev *pdev)
736 free_irq(pdev->irq, ilo_hw); 736 free_irq(pdev->irq, ilo_hw);
737 ilo_unmap_device(pdev, ilo_hw); 737 ilo_unmap_device(pdev, ilo_hw);
738 pci_release_regions(pdev); 738 pci_release_regions(pdev);
739 pci_disable_device(pdev); 739 /*
740 * pci_disable_device(pdev) used to be here. But this PCI device has
741 * two functions with interrupt lines connected to a single pin. The
742 * other one is a USB host controller. So when we disable the PIN here
743 * e.g. by rmmod hpilo, the controller stops working. It is because
744 * the interrupt link is disabled in ACPI since it is not refcounted
745 * yet. See acpi_pci_link_free_irq called from acpi_pci_irq_disable.
746 */
740 kfree(ilo_hw); 747 kfree(ilo_hw);
741 ilo_hwdev[(minor / max_ccb)] = 0; 748 ilo_hwdev[(minor / max_ccb)] = 0;
742} 749}
@@ -826,7 +833,7 @@ unmap:
826free_regions: 833free_regions:
827 pci_release_regions(pdev); 834 pci_release_regions(pdev);
828disable: 835disable:
829 pci_disable_device(pdev); 836/* pci_disable_device(pdev); see comment in ilo_remove */
830free: 837free:
831 kfree(ilo_hw); 838 kfree(ilo_hw);
832out: 839out: