iommu/vt-d: Don't disable IR when it was previously enabled
authorJoerg Roedel <jroedel@suse.de>
Fri, 12 Jun 2015 13:15:34 +0000 (15:15 +0200)
committerJoerg Roedel <jroedel@suse.de>
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 <zhen-hual@hp.com>
Tested-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
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;
        }