Re: IOMMU and graphics cards
From: David Woodhouse
Date: Tue Jul 07 2009 - 05:16:46 EST
On Tue, 2009-07-07 at 10:59 +0200, Joerg Roedel wrote:
> On Mon, Jul 06, 2009 at 10:35:59PM +0100, Dave Airlie wrote:
> > My memory of this is graphics becomes totally useless and can be 10x-50x
> > slower. I think ripping this out without the person doing the ripping
> > taking responsiblity for doing speed regression testing is totally insane.
>
> Are you sure that using the dma-api has such an performance impact? I've
> heard from other people that switching to dma-api with amd iommu had no
> significant performance impact.
The DMA API on its own shouldn't hurt at all. and I'm not sure about the
AMD IOMMU.
It's the other IOMMU that hurts -- something about cache-incoherent page
tables and having to flush the cache for every change... especially on
an architecture which doesn't have any sane cache management (because it
was always designed for everything to be cache coherent, dammit!) so you
end up _invalidating_ the cache at the same time as you write it back!
Of course, it's a lot saner now that we don't individually flush the
cache after _every_ PTE we change, but do it in batches instead.
Multi-page mapping/unmapping is now a _lot_ faster than it used to be.
I'm also looking at mapping the page tables uncached, so we don't have
to do the cache flushes at all.
> > I personally have no IOMMU hw from Intel or AMD and nobody has seen it fit
> > to supply me with any at any point in time, I'm not on the correct gravy
> > train. So I suspect the people with the hw will have to do the work and
> > the regression testing.
>
> You just need to switch to dma-api. You don't need an iommu to test.
> Most bugs in such code can also be found and eliminated using the
> dma-api debugging interface.
Indeed. Just turn on CONFIG_DMA_API_DEBUG (that might have some
performance impact, but it's not huge).
--
dwmw2
--
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/