Re: IOMMU and scatterlist limits

From: Pierre Ossman
Date: Sun Dec 18 2005 - 17:41:19 EST


Revisiting a dear old thread. :)

After some initial tests, some more questions popped up. See below.

Jens Axboe wrote:
> On Thu, Nov 17 2005, Pierre Ossman wrote:
>
>> Since there is no guarantee this will be mapped down to one segment
>> (that the hardware can accept), is it expected that the driver iterates
>> over the entire list or can I mark only the first segment as completed
>> and wait for the request to be reissued? (this is a MMC driver, which
>> behaves like the block layer)
>>
>
> Ah MMC, that explains a few things :-)
>
> It's quite legal (and possible) to partially handle a given request, you
> are not obliged to handle a request as a single unit. See how other
> block drivers have an end request handling function ala:
>
>

After testing this it seems the block layer never gives me more than
max_hw_segs segments. Is it being clever because I'm compiling for a
system without an IOMMU?

The hardware should (haven't properly tested this) be able to get new
DMA addresses during a transfer. In essence scatter gather with some CPU
support. Since I avoid MMC overhead this should give a nice performance
boost. But this relies on the block layer giving me more than one
segment. Do I need to lie in max_hw_segs to achieve this?

Rgds
Pierre

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/