diff --git a/[refs] b/[refs] index dfed457725cc..60b9e42b7ebc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 44c65d169c5d2e5c872581ebc65f12710d7c3b71 +refs/heads/master: 933cb8e5fcdebd4b666165e3f039f814d62b0e52 diff --git a/trunk/drivers/ata/sata_mv.c b/trunk/drivers/ata/sata_mv.c index be9ae4fc5cbe..8245c82505cc 100644 --- a/trunk/drivers/ata/sata_mv.c +++ b/trunk/drivers/ata/sata_mv.c @@ -1575,6 +1575,7 @@ static int mv_port_start(struct ata_port *ap) struct device *dev = ap->host->dev; struct mv_host_priv *hpriv = ap->host->private_data; struct mv_port_priv *pp; + unsigned long flags; int tag; pp = devm_kzalloc(dev, sizeof(*pp), GFP_KERNEL); @@ -1610,8 +1611,12 @@ static int mv_port_start(struct ata_port *ap) pp->sg_tbl_dma[tag] = pp->sg_tbl_dma[0]; } } + + spin_lock_irqsave(ap->lock, flags); mv_save_cached_regs(ap); mv_edma_cfg(ap, 0, 0); + spin_unlock_irqrestore(ap->lock, flags); + return 0; out_port_free_dma_mem: @@ -1630,8 +1635,12 @@ static int mv_port_start(struct ata_port *ap) */ static void mv_port_stop(struct ata_port *ap) { + unsigned long flags; + + spin_lock_irqsave(ap->lock, flags); mv_stop_edma(ap); mv_enable_port_irqs(ap, 0); + spin_unlock_irqrestore(ap->lock, flags); mv_port_free_dma_mem(ap); }