problem with blk_queue_bounce_limit()

David Mosberger
2003-06-05T06:28:48Z

On platforms with I/O MMU hardware, memory above 4GB, and IDE hard disks,
this check:

BUG_ON(dma_addr < BLK_BOUNCE_ISA);

causes an instant panic. The reason is quite obvious: since there is
an I/O MMU, BLK_BOUNCE_ISA is effectively unlimited, and most IDE
controllers can of course DMA only to <4GB.

So, the check is wrong. I think the proper way to fix this is to pass
a "struct dev" into the routine and then to use dma_supported() to
check whether bounce buffers will be needed. Do you agree? If so,
can you fix it?

Thanks,

--david