Messages in this thread | | | Date | Sat, 4 Sep 1999 13:33:52 +0200 (CEST) | From | Andrea Arcangeli <> | Subject | Re: CONFIG_BIGMEM and rawio |
| |
On Fri, 3 Sep 1999, Stephen C. Tweedie wrote:
>> So you are supposing that only the DMA lowlevel drivers are following >> the b_reqnext pointer. > >How does that follow?
Excuse me, I am not sure I am understanding correctly your reply.
Anyway if you are asking me which code does follow the b_reqnext list by hand and play with the not yet bounced buffers look at line 247 of drivers/block/ide-dma.c (btw the check for bh null should be replaced with a panic ;). Then at line 202 the I/O completation-dma interrupt reacall do_end_request for all the phisically-consecutive bh chained into the b_reqnext list, to tell the higher level that the I/O is just completed for all such bhs.
So if you bounce only the req->bh then if a driver does what the ide-dma.c does but by not using DMA, then the bounce buffer thing won't work correctly with bigmem and the kernel won't be stable. The DMA case will work by luck (DMA can break too if the driver has a buggy PCI controller that forgets the high bit of the bus address as you mentioned).
I guessed your plan is to bounce only the req->bh because otherwise you wouldn't need to do a buffer-bounce inside end_that_request_first().
Andrea
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |