projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c7d6245
)
iommu/vt-d: Allow zero SAGAW if second-stage not supported
author
Lu Baolu
<baolu.lu@linux.intel.com>
Wed, 29 Mar 2023 13:47:20 +0000
(21:47 +0800)
committer
Joerg Roedel
<jroedel@suse.de>
Fri, 31 Mar 2023 08:06:15 +0000
(10:06 +0200)
The VT-d spec states (in section 11.4.2) that hardware implementations
reporting second-stage translation support (SSTS) field as Clear also
report the SAGAW field as 0. Fix an inappropriate check in alloc_iommu().
Fixes:
792fb43ce2c9
("iommu/vt-d: Enable Intel IOMMU scalable mode by default")
Suggested-by: Raghunathan Srinivasan <raghunathan.srinivasan@intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link:
https://lore.kernel.org/r/20230318024824.124542-1-baolu.lu@linux.intel.com
Link:
https://lore.kernel.org/r/20230329134721.469447-3-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/dmar.c
patch
|
blob
|
history
diff --git
a/drivers/iommu/intel/dmar.c
b/drivers/iommu/intel/dmar.c
index
6acfe87
..
23828d1
100644
(file)
--- a/
drivers/iommu/intel/dmar.c
+++ b/
drivers/iommu/intel/dmar.c
@@
-1071,7
+1071,8
@@
static int alloc_iommu(struct dmar_drhd_unit *drhd)
}
err = -EINVAL;
- if (cap_sagaw(iommu->cap) == 0) {
+ if (!cap_sagaw(iommu->cap) &&
+ (!ecap_smts(iommu->ecap) || ecap_slts(iommu->ecap))) {
pr_info("%s: No supported address widths. Not attempting DMA translation.\n",
iommu->name);
drhd->ignored = 1;