This is a note to let you know that I've just added the patch titled

    MISC: hpilo, remove pci_disable_device

to the 3.4-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     misc-hpilo-remove-pci_disable_device.patch
and it can be found in the queue-3.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 499f98ab5a0bd25310fe45b93baa524aae61d7cc Mon Sep 17 00:00:00 2001
From: Jiri Slaby <[email protected]>
Date: Thu, 13 Sep 2012 16:06:48 +0200
Subject: MISC: hpilo, remove pci_disable_device

From: Jiri Slaby <[email protected]>

commit bcdee04ea7ae0406ae69094f6df1aacb66a69a0b upstream.

pci_disable_device(pdev) used to be in pci remove function. But this
PCI device has two functions with interrupt lines connected to a
single pin. The other one is a USB host controller. So when we disable
the PIN there e.g. by rmmod hpilo, the controller stops working. It is
because the interrupt link is disabled in ACPI since it is not
refcounted yet. See acpi_pci_link_free_irq called from
acpi_pci_irq_disable.

It is not the best solution whatsoever, but as a workaround until the
ACPI irq link refcounting is sorted out this should fix the reported
errors.

References: https://lkml.org/lkml/2008/11/4/535

Signed-off-by: Jiri Slaby <[email protected]>
Cc: Grant Grundler <[email protected]>
Cc: Nobin Mathew <[email protected]>
Cc: Robert Hancock <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: David Altobelli <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Ben Hutchings <[email protected]>
Cc: Qiang Huang <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/misc/hpilo.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

--- a/drivers/misc/hpilo.c
+++ b/drivers/misc/hpilo.c
@@ -735,7 +735,14 @@ static void ilo_remove(struct pci_dev *p
        free_irq(pdev->irq, ilo_hw);
        ilo_unmap_device(pdev, ilo_hw);
        pci_release_regions(pdev);
-       pci_disable_device(pdev);
+       /*
+        * pci_disable_device(pdev) used to be here. But this PCI device has
+        * two functions with interrupt lines connected to a single pin. The
+        * other one is a USB host controller. So when we disable the PIN here
+        * e.g. by rmmod hpilo, the controller stops working. It is because
+        * the interrupt link is disabled in ACPI since it is not refcounted
+        * yet. See acpi_pci_link_free_irq called from acpi_pci_irq_disable.
+        */
        kfree(ilo_hw);
        ilo_hwdev[(minor / MAX_CCB)] = 0;
 }
@@ -820,7 +827,7 @@ unmap:
 free_regions:
        pci_release_regions(pdev);
 disable:
-       pci_disable_device(pdev);
+/*     pci_disable_device(pdev);  see comment in ilo_remove */
 free:
        kfree(ilo_hw);
 out:


Patches currently in stable-queue which might be from [email protected] are

queue-3.4/misc-hpilo-remove-pci_disable_device.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to