diff options
author | Jon Mason <jdmason@us.ibm.com> | 2006-06-26 13:58:14 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 10:48:19 -0700 |
commit | e465058d55a88feb4c7ecabe63eea7ea7147e206 (patch) | |
tree | d431ed689e072415915694eecdfbcb9304287f01 /arch/x86_64/Kconfig | |
parent | 0dc243ae10c8309c170a3af9f1adad1924a9f217 (diff) | |
download | linux-e465058d55a88feb4c7ecabe63eea7ea7147e206.tar.gz linux-e465058d55a88feb4c7ecabe63eea7ea7147e206.tar.bz2 linux-e465058d55a88feb4c7ecabe63eea7ea7147e206.zip |
[PATCH] x86_64: Calgary IOMMU - Calgary specific bits
This patch hooks Calgary into the build, the x86-64 IOMMU
initialization paths, and introduces the Calgary specific bits. The
implementation draws inspiration from both PPC (which has support for
the same chip but requires firmware support which we don't have on
x86-64) and gart. Calgary is different from gart in that it support a
translation table per PHB, as opposed to the single gart aperture.
Changes from previous version:
* Addition of boot-time disablement for bus-level translation/isolation
(e.g, enable userspace DMA for things like X)
* Usage of newer IOMMU abstraction functions
Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/Kconfig')
-rw-r--r-- | arch/x86_64/Kconfig | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index e8c52a1eec06..ccc4a7fb97a3 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig @@ -405,6 +405,25 @@ config IOMMU device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified too. +config CALGARY_IOMMU + bool "IBM Calgary IOMMU support" + default y + select SWIOTLB + depends on PCI && EXPERIMENTAL + help + Support for hardware IOMMUs in IBM's xSeries x366 and x460 + systems. Needed to run systems with more than 3GB of memory + properly with 32-bit PCI devices that do not support DAC + (Double Address Cycle). Calgary also supports bus level + isolation, where all DMAs pass through the IOMMU. This + prevents them from going anywhere except their intended + destination. This catches hard-to-find kernel bugs and + mis-behaving drivers and devices that do not use the DMA-API + properly to set up their DMA buffers. The IOMMU can be + turned off at boot time with the iommu=off parameter. + Normally the kernel will make the right choice by itself. + If unsure, say Y. + # need this always selected by IOMMU for the VIA workaround config SWIOTLB bool |