aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMalahal Naineni <malahal@us.ibm.com>2010-09-24 14:25:49 -0400
committerJens Axboe <jaxboe@fusionio.com>2010-09-24 14:27:16 -0400
commitc49825facfd4969585224a896a5e717f88450cad (patch)
tree2c244fdf033f858147875333024838e493d9e43e /block
parent4b1977698ceb4c4caa800d475127139da49966f9 (diff)
block: set the bounce_pfn to the actual DMA limit rather than to max memory
The bounce_pfn of the request queue in 64 bit systems is set to the current max_low_pfn. Adding more memory later makes this incorrect. Memory allocated beyond this boot time max_low_pfn appear to require bounce buffers (bounce buffers are actually not allocated but used in calculating segments that may result in "over max segments limit" errors). Signed-off-by: Malahal Naineni <malahal@us.ibm.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block')
-rw-r--r--block/blk-settings.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c
index f8f2ddf20613..f47af5031eaa 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -214,16 +214,14 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_mask)
214 */ 214 */
215 if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) 215 if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
216 dma = 1; 216 dma = 1;
217 q->limits.bounce_pfn = max_low_pfn;
218#else 217#else
219 if (b_pfn < blk_max_low_pfn) 218 if (b_pfn < blk_max_low_pfn)
220 dma = 1; 219 dma = 1;
221 q->limits.bounce_pfn = b_pfn;
222#endif 220#endif
221 q->limits.bounce_pfn = b_pfn;
223 if (dma) { 222 if (dma) {
224 init_emergency_isa_pool(); 223 init_emergency_isa_pool();
225 q->bounce_gfp = GFP_NOIO | GFP_DMA; 224 q->bounce_gfp = GFP_NOIO | GFP_DMA;
226 q->limits.bounce_pfn = b_pfn;
227 } 225 }
228} 226}
229EXPORT_SYMBOL(blk_queue_bounce_limit); 227EXPORT_SYMBOL(blk_queue_bounce_limit);