Please consider applying this patch, I would consider it critical for x86-64.
The 2.6.0 x86-64 IOMMU code unfortunately had a few problems, leading
to non booting systems and in a few cases to data corruption.
It fixes a two serious bugs in handling special kinds of scatter gather
lists in pci_map_sg.
AGP was completely broken with IOMMU because of a wrong #ifdef.
Fix that.
One TLB flush optimization I did a long time ago seems to break on
some 3ware boards (who require IOMMU because they don't support 64bit
addresses). The breakage lead to data corruption. This patch diables
the optimization for now and fixes a potential SMP race in the flush
code too. The TLB flush is done in a slower, but more reliable way
now too.
This patch fixes them. Please consider applying, because some of these
problems hit quite many people.
This also disables the IOMMU_DEBUG in the defconfig. A lot of people
were using the IOMMU when they didn't need to, which multiplied the
problems.
IOMMU merge is disabled for now. This was an experimental optimization
which helped with some block devices, but for production it seems to
be better to disable it for now because there are some questionable
corner cases when the IOMMU aperture fragments. The same is done
for IOMMU SAC force, which was related to that.
i386 has quite broken semantics for pci_alloc_consistent(). It uses
the standard device DMA mask instead of the consistent mask. Make us
bug-to-bug compatible here. This fixes problems with some sound
drivers that don't support full 32bit addressing.