Re: [Intel IOMMU][patch 8/8] Preserve some Virtual Address when devices cannot address entire range.

Ashok Raj
2007-04-24T22:29:36Z

On Wed, Apr 25, 2007 at 12:03:57AM +0200, Andi Kleen wrote:
> On Tuesday 24 April 2007 23:50:26 David Miller wrote:
> > From: Ashok Raj <ashok.raj@intel.com>
> > Date: Tue, 24 Apr 2007 14:38:35 -0700
> >
> > > Its not clear if we have a very generic device breakage.. most devices
> > > on these platforms are going to be more recent, (except maybe some
> > > legacy fd)...
> >
> > I'm not so sure, there are some "modern" sound cards that have
> > a 31-bit DMA addressing limitation because they use the 31st
> > bit as a status bit in their DMA descriptors :-)
>
> There's also a 2GB only megaraid RAID controller that's pretty popular
> because Dell shipped it for a long time.

Sounds like we have quite a few of those weird ones!

The real question is whats the working set for mapped dma handles for such
a controller. They would typically allocate only a few to what the controller
could handle, and would submit when the io completes right.. So typically
we shouldnt have any trouble since they would be able to reclaim what they
freed before submission (for iova).

Having a IOVA requirement in 2g etc is not a problem, except how many devices
on the same pci bus and what the total working set for iova is for that config.

The only way to gaurantee would be for the device to ask for a gauranteed set
maybe during pci_set_dma_mask() or some such time, and pre-reserve some
IOVA to gaurantee we never run out. BUt this is again driver changes and
wont be fair if some driver is greedy.