Commit eb40963c authored by David Milburn's avatar David Milburn Committed by Jeff Garzik

libata: ahci enclosure management led sync

Synchronize ahci_sw_activity and ahci_sw_activity_blink with ata_port lock.
Signed-off-by: default avatarDavid Milburn <dmilburn@redhat.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent e7c0d217
...@@ -1223,6 +1223,7 @@ static void ahci_sw_activity_blink(unsigned long arg) ...@@ -1223,6 +1223,7 @@ static void ahci_sw_activity_blink(unsigned long arg)
struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; struct ahci_em_priv *emp = &pp->em_priv[link->pmp];
unsigned long led_message = emp->led_state; unsigned long led_message = emp->led_state;
u32 activity_led_state; u32 activity_led_state;
unsigned long flags;
led_message &= 0xffff0000; led_message &= 0xffff0000;
led_message |= ap->port_no | (link->pmp << 8); led_message |= ap->port_no | (link->pmp << 8);
...@@ -1231,6 +1232,7 @@ static void ahci_sw_activity_blink(unsigned long arg) ...@@ -1231,6 +1232,7 @@ static void ahci_sw_activity_blink(unsigned long arg)
* toggle state of LED and reset timer. If not, * toggle state of LED and reset timer. If not,
* turn LED to desired idle state. * turn LED to desired idle state.
*/ */
spin_lock_irqsave(ap->lock, flags);
if (emp->saved_activity != emp->activity) { if (emp->saved_activity != emp->activity) {
emp->saved_activity = emp->activity; emp->saved_activity = emp->activity;
/* get the current LED state */ /* get the current LED state */
...@@ -1253,6 +1255,7 @@ static void ahci_sw_activity_blink(unsigned long arg) ...@@ -1253,6 +1255,7 @@ static void ahci_sw_activity_blink(unsigned long arg)
if (emp->blink_policy == BLINK_OFF) if (emp->blink_policy == BLINK_OFF)
led_message |= (1 << 16); led_message |= (1 << 16);
} }
spin_unlock_irqrestore(ap->lock, flags);
ahci_transmit_led_message(ap, led_message, 4); ahci_transmit_led_message(ap, led_message, 4);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment