All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ata: fix sleep-while-holding-spinlock in sata_nv
@ 2008-05-20 22:58 ` Arjan van de Ven
  0 siblings, 0 replies; 6+ messages in thread
From: Arjan van de Ven @ 2008-05-20 22:58 UTC (permalink / raw)
  To: linux-ide, linux-kernel


From: Arjan van de Ven <arjan@linux.intel.com>
Subject: [PATCH] ata: fix sleep-while-holding-spinlock in sata_nv

blk_queue_bounce_limit() is a sleeping function, so reorganize
the code a little to not call it while holding a spinlock.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 drivers/ata/sata_nv.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 858f706..a7bc56d 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -671,6 +671,11 @@ static int nv_adma_slave_config(struct scsi_device *sdev)
 	port1 = ap->host->ports[1]->private_data;
 	sdev0 = ap->host->ports[0]->link.device[0].sdev;
 	sdev1 = ap->host->ports[1]->link.device[0].sdev;
+
+	blk_queue_segment_boundary(sdev->request_queue, segment_boundary);
+	blk_queue_max_hw_segments(sdev->request_queue, sg_tablesize);
+	spin_unlock_irqrestore(ap->lock, flags);
+
 	if ((port0->flags & NV_ADMA_ATAPI_SETUP_COMPLETE) ||
 	    (port1->flags & NV_ADMA_ATAPI_SETUP_COMPLETE)) {
 		/** We have to set the DMA mask to 32-bit if either port is in
@@ -701,14 +706,11 @@ static int nv_adma_slave_config(struct scsi_device *sdev)
 					       pp->adma_dma_mask);
 	}
 
-	blk_queue_segment_boundary(sdev->request_queue, segment_boundary);
-	blk_queue_max_hw_segments(sdev->request_queue, sg_tablesize);
 	ata_port_printk(ap, KERN_INFO,
 		"DMA mask 0x%llX, segment boundary 0x%lX, hw segs %hu\n",
 		(unsigned long long)*ap->host->dev->dma_mask,
 		segment_boundary, sg_tablesize);
 
-	spin_unlock_irqrestore(ap->lock, flags);
 
 	return rc;
 }
-- 
1.5.4.5


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-05-21 15:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <fa.m+kShlzXY/wmFlvZXsE0W7wQIxU@ifi.uio.no>
2008-05-21  2:17 ` [PATCH] ata: fix sleep-while-holding-spinlock in sata_nv Robert Hancock
2008-05-21  4:43   ` Arjan van de Ven
2008-05-21 14:31     ` Robert Hancock
2008-05-21 15:16       ` Arjan van de Ven
2008-05-20 22:58 Arjan van de Ven
2008-05-20 22:58 ` Arjan van de Ven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.