diff options
| author | Andrew Morton <akpm@osdl.org> | 2003-12-29 05:49:45 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-12-29 05:49:45 -0800 |
| commit | f2059100b50774d36e94d2cb633c3a6edbe921a9 (patch) | |
| tree | 8af14020c13a7a9f7556d316588128935556b55e /include | |
| parent | b14a4258a69ee74c226097e0ed36f1b3ae6bbcfc (diff) | |
[PATCH] Critical x86-64 IOMMU fixes for 2.6.0
From: Andi Kleen <ak@muc.de>
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.
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-x86_64/io.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-x86_64/io.h b/include/asm-x86_64/io.h index bf9738f9a23b..7d37aa7f3945 100644 --- a/include/asm-x86_64/io.h +++ b/include/asm-x86_64/io.h @@ -304,8 +304,8 @@ out: /* Disable vmerge for now. Need to fix the block layer code to check for non iommu addresses first. When the IOMMU is force it is safe to enable. */ -extern int force_iommu; -#define BIO_VERMGE_BOUNDARY (force_iommu ? 4096 : 0) +extern int iommu_merge; +#define BIO_VMERGE_BOUNDARY (iommu_merge ? 4096 : 0) #endif /* __KERNEL__ */ |
