Commit 22bb182c authored by Joerg Roedel's avatar Joerg Roedel
Browse files

iommu: Set default domain type at runtime



Set the default domain-type at runtime, not at compile-time.
This keeps default domain type setting in one place when we
have to change it at runtime.

Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 5fa9e7c5
Loading
Loading
Loading
Loading
+15 −8
Original line number Original line Diff line number Diff line
@@ -26,11 +26,8 @@


static struct kset *iommu_group_kset;
static struct kset *iommu_group_kset;
static DEFINE_IDA(iommu_group_ida);
static DEFINE_IDA(iommu_group_ida);
#ifdef CONFIG_IOMMU_DEFAULT_PASSTHROUGH

static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY;
static unsigned int iommu_def_domain_type __read_mostly;
#else
static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_DMA;
#endif
static bool iommu_dma_strict __read_mostly = true;
static bool iommu_dma_strict __read_mostly = true;
static u32 iommu_cmd_line __read_mostly;
static u32 iommu_cmd_line __read_mostly;


@@ -76,7 +73,7 @@ static void iommu_set_cmd_line_dma_api(void)
	iommu_cmd_line |= IOMMU_CMD_LINE_DMA_API;
	iommu_cmd_line |= IOMMU_CMD_LINE_DMA_API;
}
}


static bool __maybe_unused iommu_cmd_line_dma_api(void)
static bool iommu_cmd_line_dma_api(void)
{
{
	return !!(iommu_cmd_line & IOMMU_CMD_LINE_DMA_API);
	return !!(iommu_cmd_line & IOMMU_CMD_LINE_DMA_API);
}
}
@@ -115,8 +112,18 @@ static const char *iommu_domain_type_str(unsigned int t)


static int __init iommu_subsys_init(void)
static int __init iommu_subsys_init(void)
{
{
	pr_info("Default domain type: %s\n",
	bool cmd_line = iommu_cmd_line_dma_api();
		iommu_domain_type_str(iommu_def_domain_type));

	if (!cmd_line) {
		if (IS_ENABLED(CONFIG_IOMMU_DEFAULT_PASSTHROUGH))
			iommu_set_default_passthrough(false);
		else
			iommu_set_default_translated(false);
	}

	pr_info("Default domain type: %s %s\n",
		iommu_domain_type_str(iommu_def_domain_type),
		cmd_line ? "(set via kernel command line)" : "");


	return 0;
	return 0;
}
}