iommu/vt-d: Handle the failure case of dmar_reenable_qi()
authorYanfei Xu <yanfei.xu@intel.com>
Wed, 14 Jun 2023 02:47:03 +0000 (10:47 +0800)
committerJoerg Roedel <jroedel@suse.de>
Fri, 16 Jun 2023 14:38:32 +0000 (16:38 +0200)
dmar_reenable_qi() may not succeed. Check and return when it fails.

Signed-off-by: Yanfei Xu <yanfei.xu@intel.com>
Link: https://lore.kernel.org/r/20230605112659.308981-2-yanfei.xu@intel.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/iommu.c

index 323fa1a..e83fe24 100644 (file)
@@ -2967,10 +2967,15 @@ static int init_iommu_hw(void)
 {
        struct dmar_drhd_unit *drhd;
        struct intel_iommu *iommu = NULL;
+       int ret;
 
-       for_each_active_iommu(iommu, drhd)
-               if (iommu->qi)
-                       dmar_reenable_qi(iommu);
+       for_each_active_iommu(iommu, drhd) {
+               if (iommu->qi) {
+                       ret = dmar_reenable_qi(iommu);
+                       if (ret)
+                               return ret;
+               }
+       }
 
        for_each_iommu(iommu, drhd) {
                if (drhd->ignored) {