aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/hotplug
diff options
context:
space:
mode:
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>2007-07-05 14:10:45 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-07-11 19:02:12 -0400
commit5b57a6cea464fc686a6bc446f667c05901fa9734 (patch)
treea578ced7ef8bd86c700ac5c2ad31e4fcf6249965 /drivers/pci/hotplug
parentcca03dec2f0eb8f3c4578e067d2b20a366b940db (diff)
PCI: hotplug: pciehp: wait for 1 second after power off slot
According to the specification, we must wait for at least 1 second after turning power off before taking any action that relies on power having been removed from the slot/adapter. Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/hotplug')
-rw-r--r--drivers/pci/hotplug/pciehp_ctrl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
index 7f22caa70178..98e541ffef3d 100644
--- a/drivers/pci/hotplug/pciehp_ctrl.c
+++ b/drivers/pci/hotplug/pciehp_ctrl.c
@@ -197,6 +197,12 @@ static void set_slot_off(struct controller *ctrl, struct slot * pslot)
197 __FUNCTION__); 197 __FUNCTION__);
198 return; 198 return;
199 } 199 }
200 /*
201 * After turning power off, we must wait for at least
202 * 1 second before taking any action that relies on
203 * power having been removed from the slot/adapter.
204 */
205 msleep(1000);
200 } 206 }
201} 207}
202 208
@@ -615,6 +621,12 @@ int pciehp_disable_slot(struct slot *p_slot)
615 mutex_unlock(&p_slot->ctrl->crit_sect); 621 mutex_unlock(&p_slot->ctrl->crit_sect);
616 return -EINVAL; 622 return -EINVAL;
617 } 623 }
624 /*
625 * After turning power off, we must wait for at least
626 * 1 second before taking any action that relies on
627 * power having been removed from the slot/adapter.
628 */
629 msleep(1000);
618 } 630 }
619 631
620 ret = remove_board(p_slot); 632 ret = remove_board(p_slot);