Re: CONFIG_BIGMEM and rawio

Andrea Arcangeli (andrea@suse.de)
Sat, 4 Sep 1999 13:33:52 +0200 (CEST)


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/