Skip to content

Commit

Permalink
[PATCH] pciehp: handle sticky power-fault status
Browse files Browse the repository at this point in the history
This patch disables power fault, MRL sensor and presence detection
interrupts when a PCIe slot is powered-off and enables those
interrupts when it is powered-on again. This is necessary to prevent
the associated events from causing an endless cycle of interrupts
due to the power-fault bit, which stays set till power is restored
to the slot.

Signed-off-by: Thomas Schaefer <thomas.schaefer@kontron.com>
Signed-off-by: Rajesh Shah <rajesh.shah@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Thomas Schaefer authored and Greg Kroah-Hartman committed Jan 9, 2006
1 parent 9d26512 commit c7ab337
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions drivers/pci/hotplug/pciehp_hpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -787,8 +787,13 @@ static int hpc_power_on_slot(struct slot * slot)

slot_cmd = (slot_ctrl & ~PWR_CTRL) | POWER_ON;

/* Enable detection that we turned off at slot power-off time */
if (!pciehp_poll_mode)
slot_cmd = slot_cmd | HP_INTR_ENABLE;
slot_cmd = slot_cmd |
PWR_FAULT_DETECT_ENABLE |
MRL_DETECT_ENABLE |
PRSN_DETECT_ENABLE |
HP_INTR_ENABLE;

retval = pcie_write_cmd(slot, slot_cmd);

Expand Down Expand Up @@ -833,8 +838,18 @@ static int hpc_power_off_slot(struct slot * slot)

slot_cmd = (slot_ctrl & ~PWR_CTRL) | POWER_OFF;

/*
* If we get MRL or presence detect interrupts now, the isr
* will notice the sticky power-fault bit too and issue power
* indicator change commands. This will lead to an endless loop
* of command completions, since the power-fault bit remains on
* till the slot is powered on again.
*/
if (!pciehp_poll_mode)
slot_cmd = slot_cmd | HP_INTR_ENABLE;
slot_cmd = (slot_cmd &
~PWR_FAULT_DETECT_ENABLE &
~MRL_DETECT_ENABLE &
~PRSN_DETECT_ENABLE) | HP_INTR_ENABLE;

retval = pcie_write_cmd(slot, slot_cmd);

Expand Down

0 comments on commit c7ab337

Please sign in to comment.