|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH 3 of 3] xen: AMD IOMMU: Automatically enable per-devi
Automatically enable per-device vector maps when using IOMMU,
unless disabled specifically by an IOMMU parameter.
Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
diff -r 362a881a79a4 -r fffeeea7afbb xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c Tue Jul 26 17:21:23 2011 +0100
+++ b/xen/arch/x86/irq.c Tue Jul 26 17:21:23 2011 +0100
@@ -32,6 +32,7 @@ unsigned int __read_mostly nr_irqs_gsi =
unsigned int __read_mostly nr_irqs;
integer_param("nr_irqs", nr_irqs);
+/* This default may be changed by the AMD IOMMU code */
bool_t __read_mostly opt_irq_perdev_vector_map = 0;
boolean_param("irq-perdev-vector-map", opt_irq_perdev_vector_map);
diff -r 362a881a79a4 -r fffeeea7afbb xen/drivers/passthrough/amd/pci_amd_iommu.c
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c Tue Jul 26 17:21:23
2011 +0100
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c Tue Jul 26 17:21:23
2011 +0100
@@ -25,6 +25,9 @@
#include <asm/amd-iommu.h>
#include <asm/hvm/svm/amd-iommu-proto.h>
+extern bool_t __read_mostly opt_irq_perdev_vector_map;
+extern bool_t __read_mostly iommu_amd_perdev_vector_map;
+
struct amd_iommu *find_iommu_for_device(int bdf)
{
BUG_ON ( bdf >= ivrs_bdf_entries );
@@ -148,6 +151,18 @@ int __init amd_iov_detect(void)
return -ENODEV;
}
+ /* Enable use of per-device vector map unless otherwise
+ * specified */
+ if ( iommu_amd_perdev_vector_map )
+ {
+ printk("AMD-Vi: Enabling per-device vector maps\n");
+ opt_irq_perdev_vector_map=1;
+ }
+ else
+ {
+ printk("AMD-Vi: WARNING - not enabling per-device vector maps\n");
+ }
+
return scan_pci_devices();
}
diff -r 362a881a79a4 -r fffeeea7afbb xen/drivers/passthrough/iommu.c
--- a/xen/drivers/passthrough/iommu.c Tue Jul 26 17:21:23 2011 +0100
+++ b/xen/drivers/passthrough/iommu.c Tue Jul 26 17:21:23 2011 +0100
@@ -49,6 +49,7 @@ bool_t __read_mostly iommu_qinval = 1;
bool_t __read_mostly iommu_intremap = 1;
bool_t __read_mostly iommu_hap_pt_share;
bool_t __read_mostly iommu_debug;
+bool_t __read_mostly iommu_amd_perdev_vector_map = 1;
static void __init parse_iommu_param(char *s)
{
@@ -81,6 +82,8 @@ static void __init parse_iommu_param(cha
iommu_dom0_strict = 1;
else if ( !strcmp(s, "sharept") )
iommu_hap_pt_share = 1;
+ else if ( !strcmp(s, "no-perdev-vector-map") )
+ iommu_amd_perdev_vector_map = 0;
s = ss + 1;
} while ( ss );
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|