iommu: Add config option to set passthrough as default
This allows the default behavior to be controlled by a kernel config option instead of changing the commandline for the kernel to include "iommu.passthrough=on" or "iommu=pt" on machines where this is desired. Likewise, for machines where this config option is enabled, it can be disabled at boot time with "iommu.passthrough=off" or "iommu=nopt". Also corrected iommu=pt documentation for IA-64, since it has no code that parses iommu= at all. Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
Родитель
c52c72d3de
Коммит
58d1131777
|
@ -1716,7 +1716,8 @@
|
|||
merge
|
||||
nomerge
|
||||
soft
|
||||
pt [x86, IA-64]
|
||||
pt [x86]
|
||||
nopt [x86]
|
||||
nobypass [PPC/POWERNV]
|
||||
Disable IOMMU bypass, using IOMMU for PCI devices.
|
||||
|
||||
|
|
|
@ -40,8 +40,14 @@ int iommu_detected __read_mostly = 0;
|
|||
* devices and allow every device to access to whole physical memory. This is
|
||||
* useful if a user wants to use an IOMMU only for KVM device assignment to
|
||||
* guests and not for driver dma translation.
|
||||
* It is also possible to disable by default in kernel config, and enable with
|
||||
* iommu=nopt at boot time.
|
||||
*/
|
||||
#ifdef CONFIG_IOMMU_DEFAULT_PASSTHROUGH
|
||||
int iommu_pass_through __read_mostly = 1;
|
||||
#else
|
||||
int iommu_pass_through __read_mostly;
|
||||
#endif
|
||||
|
||||
extern struct iommu_table_entry __iommu_table[], __iommu_table_end[];
|
||||
|
||||
|
@ -135,6 +141,8 @@ static __init int iommu_setup(char *p)
|
|||
#endif
|
||||
if (!strncmp(p, "pt", 2))
|
||||
iommu_pass_through = 1;
|
||||
if (!strncmp(p, "nopt", 4))
|
||||
iommu_pass_through = 0;
|
||||
|
||||
gart_parse_options(p);
|
||||
|
||||
|
|
|
@ -70,6 +70,17 @@ config IOMMU_DEBUGFS
|
|||
debug/iommu directory, and then populate a subdirectory with
|
||||
entries as required.
|
||||
|
||||
config IOMMU_DEFAULT_PASSTHROUGH
|
||||
bool "IOMMU passthrough by default"
|
||||
depends on IOMMU_API
|
||||
help
|
||||
Enable passthrough by default, removing the need to pass in
|
||||
iommu.passthrough=on or iommu=pt through command line. If this
|
||||
is enabled, you can still disable with iommu.passthrough=off
|
||||
or iommu=nopt depending on the architecture.
|
||||
|
||||
If unsure, say N here.
|
||||
|
||||
config IOMMU_IOVA
|
||||
tristate
|
||||
|
||||
|
|
|
@ -36,7 +36,11 @@
|
|||
|
||||
static struct kset *iommu_group_kset;
|
||||
static DEFINE_IDA(iommu_group_ida);
|
||||
#ifdef CONFIG_IOMMU_DEFAULT_PASSTHROUGH
|
||||
static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY;
|
||||
#else
|
||||
static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_DMA;
|
||||
#endif
|
||||
|
||||
struct iommu_callback_data {
|
||||
const struct iommu_ops *ops;
|
||||
|
|
Загрузка…
Ссылка в новой задаче