iommu/vt-d: Don't disable IR when it was previously enabled
authorJoerg Roedel <[email protected]>
Fri, 12 Jun 2015 13:15:34 +0000 (15:15 +0200)
committerJoerg Roedel <[email protected]>
Tue, 16 Jun 2015 08:59:36 +0000 (10:59 +0200)
Keep it enabled in kdump kernel to guarantee interrupt
delivery.

Tested-by: ZhenHua Li <[email protected]>
Tested-by: Baoquan He <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
drivers/iommu/intel_irq_remapping.c

index 14e10de4a5481623ccb9e90a18699197c08b0bff..47fcebf39e9e26717de9824734c4b15d3acc4f2e 100644 (file)
@@ -742,9 +742,6 @@ static int __init intel_prepare_irq_remapping(void)
                        pr_info("%s does not support EIM\n", iommu->name);
                        eim = 0;
                }
-
-               /* Disable IRQ remapping if it is already enabled */
-               iommu_disable_irq_remapping(iommu);
        }
 
        eim_mode = eim;
@@ -777,7 +774,8 @@ static int __init intel_enable_irq_remapping(void)
         * Setup Interrupt-remapping for all the DRHD's now.
         */
        for_each_iommu(iommu, drhd) {
-               iommu_enable_irq_remapping(iommu);
+               if (!ir_pre_enabled(iommu))
+                       iommu_enable_irq_remapping(iommu);
                setup = true;
        }