Messages in this thread | | | Date | Sun, 18 Dec 2005 23:41:42 +0100 | From | Pierre Ossman <> | Subject | Re: IOMMU and scatterlist limits |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |