Commit c49825facfd4969585224a896a5e717f88450cad
Committed by
Jens Axboe
1 parent
4b1977698c
Exists in
master
and in
39 other branches
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>
Showing 1 changed file with 1 additions and 3 deletions Side-by-side Diff
block/blk-settings.c
... | ... | @@ -214,16 +214,14 @@ |
214 | 214 | */ |
215 | 215 | if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) |
216 | 216 | dma = 1; |
217 | - q->limits.bounce_pfn = max_low_pfn; | |
218 | 217 | #else |
219 | 218 | if (b_pfn < blk_max_low_pfn) |
220 | 219 | dma = 1; |
221 | - q->limits.bounce_pfn = b_pfn; | |
222 | 220 | #endif |
221 | + q->limits.bounce_pfn = b_pfn; | |
223 | 222 | if (dma) { |
224 | 223 | init_emergency_isa_pool(); |
225 | 224 | q->bounce_gfp = GFP_NOIO | GFP_DMA; |
226 | - q->limits.bounce_pfn = b_pfn; | |
227 | 225 | } |
228 | 226 | } |
229 | 227 | EXPORT_SYMBOL(blk_queue_bounce_limit); |