Commit:     bfceafc5979d9055e04f03f970de6ff7a4bce1b6
Parent:     5b57a6cea464fc686a6bc446f667c05901fa9734
Author:     Gary Hade <[EMAIL PROTECTED]>
AuthorDate: Thu Jul 5 11:10:46 2007 -0700
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Wed Jul 11 16:02:12 2007 -0700

    PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3
    On systems where the optional _PS3 ACPI object is not implemented
    acpiphp fails to power off the slot.  This is happening because the
    current code does not attempt to remove power using the _EJ0 ACPI
    object.  This patch restores the _EJ0 evaluation attempt which was
    apparently inadvertently removed from the power-off sequence when the
    _EJ0 evaluation code was relocated from power_off_slot() to
    Signed-off-by: Gary Hade <[EMAIL PROTECTED]>
    Signed-off-by: Kristen Carlson Accardi <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
 drivers/pci/hotplug/acpiphp.h      |    1 +
 drivers/pci/hotplug/acpiphp_core.c |    6 +++++-
 drivers/pci/hotplug/acpiphp_glue.c |    2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/hotplug/acpiphp.h b/drivers/pci/hotplug/acpiphp.h
index ddbadd9..f6cc0c5 100644
--- a/drivers/pci/hotplug/acpiphp.h
+++ b/drivers/pci/hotplug/acpiphp.h
@@ -211,6 +211,7 @@ typedef int (*acpiphp_callback)(struct acpiphp_slot *slot, 
void *data);
 extern int acpiphp_enable_slot (struct acpiphp_slot *slot);
 extern int acpiphp_disable_slot (struct acpiphp_slot *slot);
+extern int acpiphp_eject_slot (struct acpiphp_slot *slot);
 extern u8 acpiphp_get_power_status (struct acpiphp_slot *slot);
 extern u8 acpiphp_get_attention_status (struct acpiphp_slot *slot);
 extern u8 acpiphp_get_latch_status (struct acpiphp_slot *slot);
diff --git a/drivers/pci/hotplug/acpiphp_core.c 
index fa5c019..a0ca63a 100644
--- a/drivers/pci/hotplug/acpiphp_core.c
+++ b/drivers/pci/hotplug/acpiphp_core.c
@@ -156,11 +156,15 @@ static int enable_slot(struct hotplug_slot *hotplug_slot)
 static int disable_slot(struct hotplug_slot *hotplug_slot)
        struct slot *slot = hotplug_slot->private;
+       int retval;
        dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name);
        /* disable the specified slot */
-       return acpiphp_disable_slot(slot->acpi_slot);
+       retval = acpiphp_disable_slot(slot->acpi_slot);
+       if (!retval)
+               retval = acpiphp_eject_slot(slot->acpi_slot);
+       return retval;
diff --git a/drivers/pci/hotplug/acpiphp_glue.c 
index 9ef4e98..3cc5a82 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -1282,7 +1282,7 @@ static unsigned int get_slot_status(struct acpiphp_slot 
  * acpiphp_eject_slot - physically eject the slot
-static int acpiphp_eject_slot(struct acpiphp_slot *slot)
+int acpiphp_eject_slot(struct acpiphp_slot *slot)
        acpi_status status;
        struct acpiphp_func *func;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to