Fix DMA access of block device in 64-bit kernel on some non-x86 systems with 4GB...
authorYang Shi <yang.shi@windriver.com>
Tue, 4 Mar 2008 10:20:51 +0000 (11:20 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Tue, 4 Mar 2008 10:20:51 +0000 (11:20 +0100)
For some non-x86 systems with 4GB or upper 4GB memory,
we need increase the range of addresses that can be
used for direct DMA in 64-bit kernel.

Signed-off-by: Yang Shi <yang.shi@windriver.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/blk-settings.c

index a9f37f5..18fab51 100644 (file)
@@ -140,7 +140,7 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_addr)
        /* Assume anything <= 4GB can be handled by IOMMU.
           Actually some IOMMUs can handle everything, but I don't
           know of a way to test this here. */
-       if (b_pfn < (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
+       if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
                dma = 1;
        q->bounce_pfn = max_low_pfn;
 #else