0891920741
51e517e6-AMD-IOMMU-allocate-IRTEs.patch 51e5183f-AMD-IOMMU-untie-remap-and-vector-maps.patch 51e63df6-VMX-fix-interaction-of-APIC-V-and-Viridian-emulation.patch 52146070-ACPI-fix-acpi_os_map_memory.patch 5214d26a-VT-d-warn-about-CFI-being-enabled-by-firmware.patch 5215d094-Nested-VMX-Check-whether-interrupt-is-blocked-by-TPR.patch 5215d0c5-Nested-VMX-Force-check-ISR-when-L2-is-running.patch 5215d135-Nested-VMX-Clear-APIC-v-control-bit-in-vmcs02.patch 5215d2d5-Nested-VMX-Update-APIC-v-RVI-SVI-when-vmexit-to-L1.patch 5215d8b0-Correct-X2-APIC-HVM-emulation.patch - Dropped 520d417d-xen-Add-stdbool.h-workaround-for-BSD.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=267
69 lines
2.7 KiB
Diff
69 lines
2.7 KiB
Diff
# Commit 561e0f86660f10db492c1ead1cd772013a6cc32d
|
|
# Date 2013-07-16 11:54:07 +0200
|
|
# Author Jan Beulich <jbeulich@suse.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
AMD IOMMU: untie remap and vector maps
|
|
|
|
With the specific IRTEs used for an interrupt no longer depending on
|
|
the vector, there's no need to tie the remap sharing model to the
|
|
vector sharing one.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
|
|
Acked-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
|
|
|
|
|
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
|
|
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
|
|
@@ -207,50 +207,6 @@ int __init amd_iov_detect(void)
|
|
|
|
init_done = 1;
|
|
|
|
- /*
|
|
- * AMD IOMMUs don't distinguish between vectors destined for
|
|
- * different cpus when doing interrupt remapping. This means
|
|
- * that interrupts going through the same intremap table
|
|
- * can't share the same vector.
|
|
- *
|
|
- * If irq_vector_map isn't specified, choose a sensible default:
|
|
- * - If we're using per-device interemap tables, per-device
|
|
- * vector non-sharing maps
|
|
- * - If we're using a global interemap table, global vector
|
|
- * non-sharing map
|
|
- */
|
|
- if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_DEFAULT )
|
|
- {
|
|
- if ( amd_iommu_perdev_intremap )
|
|
- {
|
|
- /* Per-device vector map logic is broken for devices with multiple
|
|
- * MSI-X interrupts (and would also be for multiple MSI, if Xen
|
|
- * supported it).
|
|
- *
|
|
- * Until this is fixed, use global vector tables as far as the irq
|
|
- * logic is concerned to avoid the buggy behaviour of per-device
|
|
- * maps in map_domain_pirq(), and use per-device tables as far as
|
|
- * intremap code is concerned to avoid the security issue.
|
|
- */
|
|
- printk(XENLOG_WARNING "AMD-Vi: per-device vector map logic is broken. "
|
|
- "Using per-device-global maps instead until a fix is found.\n");
|
|
-
|
|
- opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_GLOBAL;
|
|
- }
|
|
- else
|
|
- {
|
|
- printk("AMD-Vi: Enabling global vector map\n");
|
|
- opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_GLOBAL;
|
|
- }
|
|
- }
|
|
- else
|
|
- {
|
|
- printk("AMD-Vi: Not overriding irq_vector_map setting\n");
|
|
-
|
|
- if ( opt_irq_vector_map != OPT_IRQ_VECTOR_MAP_GLOBAL )
|
|
- printk(XENLOG_WARNING "AMD-Vi: per-device vector map logic is broken. "
|
|
- "Use irq_vector_map=global to work around.\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();
|