diff options
Diffstat (limited to 'drivers/iommu/amd_iommu_init.c')
-rw-r--r-- | drivers/iommu/amd_iommu_init.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 7c3fd572a23b..c7a5d7e14547 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c | |||
@@ -755,6 +755,7 @@ static void __init init_iommu_from_pci(struct amd_iommu *iommu) | |||
755 | iommu->features = ((u64)high << 32) | low; | 755 | iommu->features = ((u64)high << 32) | low; |
756 | 756 | ||
757 | if (iommu_feature(iommu, FEATURE_GT)) { | 757 | if (iommu_feature(iommu, FEATURE_GT)) { |
758 | int glxval; | ||
758 | u32 pasids; | 759 | u32 pasids; |
759 | u64 shift; | 760 | u64 shift; |
760 | 761 | ||
@@ -763,6 +764,14 @@ static void __init init_iommu_from_pci(struct amd_iommu *iommu) | |||
763 | pasids = (1 << shift); | 764 | pasids = (1 << shift); |
764 | 765 | ||
765 | amd_iommu_max_pasids = min(amd_iommu_max_pasids, pasids); | 766 | amd_iommu_max_pasids = min(amd_iommu_max_pasids, pasids); |
767 | |||
768 | glxval = iommu->features & FEATURE_GLXVAL_MASK; | ||
769 | glxval >>= FEATURE_GLXVAL_SHIFT; | ||
770 | |||
771 | if (amd_iommu_max_glx_val == -1) | ||
772 | amd_iommu_max_glx_val = glxval; | ||
773 | else | ||
774 | amd_iommu_max_glx_val = min(amd_iommu_max_glx_val, glxval); | ||
766 | } | 775 | } |
767 | 776 | ||
768 | if (iommu_feature(iommu, FEATURE_GT) && | 777 | if (iommu_feature(iommu, FEATURE_GT) && |