Re: [Intel IOMMU][patch 8/8] Preserve some Virtual Address whendevices cannot address entire range.
From: David Miller
Date: Tue Apr 24 2007 - 17:24:01 EST
From: Andi Kleen <ak@xxxxxxx>
Date: Tue, 24 Apr 2007 23:12:54 +0200
> We already have a couple of other IOMMU architectures who essentially have the same
> problem. Have you checked how they solve this?
Sparc64, for one, only uses 32-bit IOMMU addresses. And we simply
don't try to handle the funny devices at all, in fact we can't
handle the ones that want mappings only in the low 16MB for
example since the hardware IOMMU window usually starts in the
middle of the 32-bit PCI address space.
We do it both because that's faster due to Single Address Cycles, as
mentioned, and also because that's simply is where the hardware's
IOMMU window is. You can't use 64-bit IOMMU addresses even if you
wanted to on sparc64.
My suggestion would be to allocate top-down in the 32-bit IOMMU space.
That might work, but my gut feeling is that this won't be sufficient
and we'll need some kind of device driver initiated reservation
mechanism for the <16MB et al. weird stuff.
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/