AHCI: Do not acquire ata_host::lock from single IRQ handler
authorAlexander Gordeev <agordeev@redhat.com>
Mon, 6 Oct 2014 15:26:35 +0000 (16:26 +0100)
committerTejun Heo <tj@kernel.org>
Mon, 6 Oct 2014 15:43:36 +0000 (11:43 -0400)
There is no need to acquire ata_host::lock spinlock from
hardware context single IRQ interrupt handler since the
handler does not access host data that could be altered
by concurrent processors.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: linux-ide@vger.kernel.org
drivers/ata/libahci.c

index 3ce3d23e4f97cca458b3c3b2b4329c485a6236f2..5eb61c9e63da95cbd24a54ee0604262288c8a9f6 100644 (file)
@@ -1875,8 +1875,6 @@ static irqreturn_t ahci_single_irq_intr(int irq, void *dev_instance)
 
        irq_masked = irq_stat & hpriv->port_map;
 
-       spin_lock(&host->lock);
-
        for (i = 0; i < host->n_ports; i++) {
                struct ata_port *ap;
 
@@ -1908,8 +1906,6 @@ static irqreturn_t ahci_single_irq_intr(int irq, void *dev_instance)
         */
        writel(irq_stat, mmio + HOST_IRQ_STAT);
 
-       spin_unlock(&host->lock);
-
        VPRINTK("EXIT\n");
 
        return handled ? IRQ_WAKE_THREAD : IRQ_NONE;