AMD,IOMMU: Make per-device interrupt remapping table default
authorBoris Ostrovsky <boris.ostrovsky@amd.com>
Tue, 5 Feb 2013 14:22:11 +0000 (15:22 +0100)
committerBoris Ostrovsky <boris.ostrovsky@amd.com>
Tue, 5 Feb 2013 14:22:11 +0000 (15:22 +0100)
Using global interrupt remapping table may be insecure, as
described by XSA-36. This patch makes per-device mode default.

This is XSA-36 / CVE-2013-0153.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@amd.com>
Moved warning in amd_iov_detect() to location covering all cases.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/irq.c
xen/drivers/passthrough/amd/pci_amd_iommu.c
xen/drivers/passthrough/iommu.c

index 068c5a022886c7a7b94343b94c4bae20ba5f55c7..b98deb58f69fd044b04d0202f99e75bbe6c306c5 100644 (file)
@@ -1942,9 +1942,6 @@ int map_domain_pirq(
         spin_lock_irqsave(&desc->lock, flags);
         set_domain_irq_pirq(d, irq, info);
         spin_unlock_irqrestore(&desc->lock, flags);
-
-        if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_PERDEV )
-            printk(XENLOG_INFO "Per-device vector maps for GSIs not implemented yet.\n");
     }
 
 done:
index 79699d3582264279a0d7194d79fae1a2fb8a62c9..edf1b9f1f30e9dd33ed7b0fd2d8bab83f23be8b8 100644 (file)
@@ -208,6 +208,8 @@ int __init amd_iov_detect(void)
     {
         printk("AMD-Vi: Not overriding irq_vector_map setting\n");
     }
+    if ( !amd_iommu_perdev_intremap )
+        printk(XENLOG_WARNING "AMD-Vi: Using global interrupt remap table is not recommended (see XSA-36)!\n");
     return scan_pci_devices();
 }
 
index 527e6e97510669218a02f2537c5dade82ae44618..69c355230910d45d309a18c680645887e81f351e 100644 (file)
@@ -53,7 +53,7 @@ bool_t __read_mostly iommu_qinval = 1;
 bool_t __read_mostly iommu_intremap = 1;
 bool_t __read_mostly iommu_hap_pt_share = 1;
 bool_t __read_mostly iommu_debug;
-bool_t __read_mostly amd_iommu_perdev_intremap;
+bool_t __read_mostly amd_iommu_perdev_intremap = 1;
 
 DEFINE_PER_CPU(bool_t, iommu_dont_flush_iotlb);