Re: [PATCH v13 6/6] iommu: Remove mode argument from iommu_set_dma_strict()

From: John Garry
Date: Thu Jun 17 2021 - 03:47:44 EST



@@ -349,10 +349,9 @@ static int __init iommu_dma_setup(char *str)
  }
  early_param("iommu.strict", iommu_dma_setup);
-void iommu_set_dma_strict(bool strict)
+void iommu_set_dma_strict(void)
  {
-    if (strict || !(iommu_cmd_line & IOMMU_CMD_LINE_STRICT))
-        iommu_dma_strict = strict;
+    iommu_dma_strict = true;

Sorry, I still can't get how iommu.strict kernel option works.

static int __init iommu_dma_setup(char *str)
{
        int ret = kstrtobool(str, &iommu_dma_strict);

        if (!ret)
                iommu_cmd_line |= IOMMU_CMD_LINE_STRICT;
        return ret;
}
early_param("iommu.strict", iommu_dma_setup);

The bit IOMMU_CMD_LINE_STRICT is only set, but not used anywhere.

It is used in patch 2/6:

+ pr_info("DMA domain TLB invalidation policy: %s mode %s\n",
+ iommu_dma_strict ? "strict" : "lazy",
+ (iommu_cmd_line & IOMMU_CMD_LINE_STRICT) ?
+ "(set via kernel command line)" : "");

Hence,
I am wondering how could it work? A bug or I missed anything?

It is really just used for informative purpose now.

Thanks,
john