Commit c49825facfd4969585224a896a5e717f88450cad

Authored by Malahal Naineni
Committed by Jens Axboe
1 parent 4b1977698c

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);