Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58d11317 authored by Olof Johansson's avatar Olof Johansson Committed by Joerg Roedel
Browse files

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: default avatarOlof Johansson <olof@lixom.net>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent c52c72d3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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.

+8 −0
Original line number Diff line number Diff line
@@ -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);

+11 −0
Original line number Diff line number Diff line
@@ -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

+4 −0
Original line number Diff line number Diff line
@@ -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;