aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2011-04-05 06:50:24 -0400
committerJoerg Roedel <joerg.roedel@amd.com>2011-04-11 03:04:03 -0400
commit60f723b4117507c05c8b0b5c8b98ecc12a76878e (patch)
treefb176152997ad9e92ba5e50b27e9bb7e53767b63
parentcb41ed85efa01e633388314c03a4f3004c6b783b (diff)
x86/amd-iommu: Add flag to indicate IOTLB support
This patch adds a flag to the AMD IOMMU driver to indicate that all IOMMUs present in the system support device IOTLBs. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r--arch/x86/include/asm/amd_iommu_types.h2
-rw-r--r--arch/x86/kernel/amd_iommu_init.c4
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/include/asm/amd_iommu_types.h b/arch/x86/include/asm/amd_iommu_types.h
index f5d184e7d5be..cb811c965548 100644
--- a/arch/x86/include/asm/amd_iommu_types.h
+++ b/arch/x86/include/asm/amd_iommu_types.h
@@ -250,6 +250,8 @@ extern bool amd_iommu_dump;
250 250
251/* global flag if IOMMUs cache non-present entries */ 251/* global flag if IOMMUs cache non-present entries */
252extern bool amd_iommu_np_cache; 252extern bool amd_iommu_np_cache;
253/* Only true if all IOMMUs support device IOTLBs */
254extern bool amd_iommu_iotlb_sup;
253 255
254/* 256/*
255 * Make iterating over all IOMMUs easier 257 * Make iterating over all IOMMUs easier
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 8848dda808e2..b6c634f3dc07 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -137,6 +137,7 @@ int amd_iommus_present;
137 137
138/* IOMMUs have a non-present cache? */ 138/* IOMMUs have a non-present cache? */
139bool amd_iommu_np_cache __read_mostly; 139bool amd_iommu_np_cache __read_mostly;
140bool amd_iommu_iotlb_sup __read_mostly = true;
140 141
141/* 142/*
142 * The ACPI table parsing functions set this variable on an error 143 * The ACPI table parsing functions set this variable on an error
@@ -673,6 +674,9 @@ static void __init init_iommu_from_pci(struct amd_iommu *iommu)
673 MMIO_GET_LD(range)); 674 MMIO_GET_LD(range));
674 iommu->evt_msi_num = MMIO_MSI_NUM(misc); 675 iommu->evt_msi_num = MMIO_MSI_NUM(misc);
675 676
677 if (!(iommu->cap & (1 << IOMMU_CAP_IOTLB)))
678 amd_iommu_iotlb_sup = false;
679
676 if (!is_rd890_iommu(iommu->dev)) 680 if (!is_rd890_iommu(iommu->dev))
677 return; 681 return;
678 682