diff options
author | Jan Beulich <jbeulich@suse.com> | 2013-02-22 11:56:54 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-02-22 11:56:54 +0100 |
commit | 992fdf6f46252a459c6b1b8d971b2c71f01460f8 (patch) | |
tree | 060afbc1a832d4ab407effd8fc21ad31e05498e8 /xen/drivers/passthrough | |
parent | f74556693bca2ff61e3e0c103f90e1d552d795b6 (diff) | |
download | xen-992fdf6f46252a459c6b1b8d971b2c71f01460f8.tar.gz xen-992fdf6f46252a459c6b1b8d971b2c71f01460f8.tar.bz2 xen-992fdf6f46252a459c6b1b8d971b2c71f01460f8.zip |
honor ACPI v4 FADT flags
- force use of physical APIC mode if indicated so (as we don't support
xAPIC cluster mode, the respective flag is taken to force physical
mode too)
- don't use MSI if indicated so (implies no IOMMU)
Both can be overridden on the command line, for the MSI case this at
once adds a new command line option allowing to turn off PCI MSI (IOMMU
and HPET are unaffected by this).
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/drivers/passthrough')
-rw-r--r-- | xen/drivers/passthrough/amd/iommu_acpi.c | 3 | ||||
-rw-r--r-- | xen/drivers/passthrough/vtd/iommu.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthrough/amd/iommu_acpi.c index 40550c4a11..679c2a4137 100644 --- a/xen/drivers/passthrough/amd/iommu_acpi.c +++ b/xen/drivers/passthrough/amd/iommu_acpi.c @@ -1087,5 +1087,8 @@ int __init amd_iommu_get_ivrs_dev_entries(void) int __init amd_iommu_update_ivrs_mapping_acpi(void) { + if ( unlikely(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_MSI) ) + return -EPERM; + return acpi_table_parse(ACPI_SIG_IVRS, parse_ivrs_table); } diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 284e9f0f02..b6ea6850c5 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -2115,6 +2115,12 @@ int __init intel_vtd_setup(void) goto error; } + if ( unlikely(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_MSI) ) + { + ret = -EPERM; + goto error; + } + platform_quirks_init(); /* We enable the following features only if they are supported by all VT-d |