These lines of code were commented out when they were first added in commit
ba39592764ed ("Intel IOMMU: Intel IOMMU driver"). We do not want to restore
them because the VT-d spec has deprecated the read/write draining hit.
VT-d spec (section 11.4.2):
"
Hardware implementation with Major Version 2 or higher (VER_REG), always
performs required drain without software explicitly requesting a drain in
IOTLB invalidation. This field is deprecated and hardware will always
report it as 1 to maintain backward compatibility with software.
"
Remove the code to make the code cleaner.
Signed-off-by: Lu Baolu <[email protected]>
---
drivers/iommu/intel/iommu.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 4c0b7424c45e..e5c111ff4dd9 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -1312,15 +1312,7 @@ static void __iommu_flush_iotlb(struct intel_iommu *iommu, u16 did,
iommu->name, type);
return;
}
- /* Note: set drain read/write */
-#if 0
- /*
- * This is probably to be super secure.. Looks like we can
- * ignore it without any impact.
- */
- if (cap_read_drain(iommu->cap))
- val |= DMA_TLB_READ_DRAIN;
-#endif
+
if (cap_write_drain(iommu->cap))
val |= DMA_TLB_WRITE_DRAIN;
--
2.34.1
On Fri, Jun 09, 2023 at 02:05:14PM +0800, Lu Baolu wrote:
> These lines of code were commented out when they were first added in commit
> ba39592764ed ("Intel IOMMU: Intel IOMMU driver"). We do not want to restore
> them because the VT-d spec has deprecated the read/write draining hit.
>
> VT-d spec (section 11.4.2):
> "
> Hardware implementation with Major Version 2 or higher (VER_REG), always
> performs required drain without software explicitly requesting a drain in
> IOTLB invalidation. This field is deprecated and hardware will always
> report it as 1 to maintain backward compatibility with software.
> "
>
> Remove the code to make the code cleaner.
>
> Signed-off-by: Lu Baolu <[email protected]>
Reviewed-by: Jerry Snitselaar <[email protected]>
> ---
> drivers/iommu/intel/iommu.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index 4c0b7424c45e..e5c111ff4dd9 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -1312,15 +1312,7 @@ static void __iommu_flush_iotlb(struct intel_iommu *iommu, u16 did,
> iommu->name, type);
> return;
> }
> - /* Note: set drain read/write */
> -#if 0
> - /*
> - * This is probably to be super secure.. Looks like we can
> - * ignore it without any impact.
> - */
> - if (cap_read_drain(iommu->cap))
> - val |= DMA_TLB_READ_DRAIN;
> -#endif
> +
> if (cap_write_drain(iommu->cap))
> val |= DMA_TLB_WRITE_DRAIN;
>
> --
> 2.34.1
>