diff options
Diffstat (limited to 'arch/x86/kernel/amd_iommu_init.c')
-rw-r--r-- | arch/x86/kernel/amd_iommu_init.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c index 047905dc3e14..28b078133688 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? */ |
139 | bool amd_iommu_np_cache __read_mostly; | 139 | bool amd_iommu_np_cache __read_mostly; |
140 | bool 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 |
@@ -687,6 +688,9 @@ static void __init init_iommu_from_pci(struct amd_iommu *iommu) | |||
687 | MMIO_GET_LD(range)); | 688 | MMIO_GET_LD(range)); |
688 | iommu->evt_msi_num = MMIO_MSI_NUM(misc); | 689 | iommu->evt_msi_num = MMIO_MSI_NUM(misc); |
689 | 690 | ||
691 | if (!(iommu->cap & (1 << IOMMU_CAP_IOTLB))) | ||
692 | amd_iommu_iotlb_sup = false; | ||
693 | |||
690 | /* read extended feature bits */ | 694 | /* read extended feature bits */ |
691 | low = readl(iommu->mmio_base + MMIO_EXT_FEATURES); | 695 | low = readl(iommu->mmio_base + MMIO_EXT_FEATURES); |
692 | high = readl(iommu->mmio_base + MMIO_EXT_FEATURES + 4); | 696 | high = readl(iommu->mmio_base + MMIO_EXT_FEATURES + 4); |