387129caad
- bnc#803712 - after live migration rcu_sched_state detected stalls xen.migrate.tools-xend_move_assert_to_exception_block.patch xen.migrate.tools-libxc_print_stats_if_migration_is_aborted.patch xen.migrate.tools_set_number_of_dirty_pages_during_migration.patch xen.migrate.tools_notify_restore_to_hangup_during_migration_--abort_if_busy.patch - bnc#811764 - XEN (hypervisor or kernel) has a problem with EFI variable services x86-EFI-set-variable-permit-attrs.patch - Upstream patches from Jan 26060-ACPI-ERST-table-size-checks.patch 26692-x86-fully-protect-MSI-X-table-from-PV-guest-accesses.patch 26702-powernow-add-fixups-for-AMD-P-state-figures.patch 26704-x86-MCA-suppress-bank-clearing-for-certain-injected-events.patch (bnc#805579) 26731-AMD-IOMMU-Process-softirqs-while-building-dom0-iommu-mappings.patch 26733-VT-d-Enumerate-IOMMUs-when-listing-capabilities.patch 26734-ACPI-ERST-Name-table-in-otherwise-opaque-error-messages.patch 26736-ACPI-APEI-Unlock-apei_iomaps_lock-on-error-path.patch 26737-ACPI-APEI-Add-apei_exec_run_optional.patch 26742-IOMMU-properly-check-whether-interrupt-remapping-is-enabled.patch 26743-VT-d-deal-with-5500-5520-X58-errata.patch (bnc#801910) 26744-AMD-IOMMU-allow-disabling-only-interrupt-remapping.patch - PVonHVM: __devinit was removed in linux-3.8 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=234
64 lines
2.5 KiB
Diff
64 lines
2.5 KiB
Diff
# Commit 92b8bc03bd4b582cb524db51494d0dba7607e7ac
|
|
# Date 2013-03-25 16:55:22 +0100
|
|
# Author Jan Beulich <jbeulich@suse.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
AMD IOMMU: allow disabling only interrupt remapping when certain IVRS consistency checks fail
|
|
|
|
After some more thought on the XSA-36 and specifically the comments we
|
|
got regarding disabling the IOMMU in this situation altogether making
|
|
things worse instead of better, I came to the conclusion that we can
|
|
actually restrict the action in affected cases to just disabling
|
|
interrupt remapping. That doesn't make the situation worse than prior
|
|
to the XSA-36 fixes (where interrupt remapping didn't really protect
|
|
domains from one another), but allows at least DMA isolation to still
|
|
be utilized.
|
|
|
|
To do so, disabling of interrupt remapping must be explicitly requested
|
|
on the command line - respective checks will then be skipped.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Acked-by: Suravee Suthikulanit <suravee.suthikulpanit@amd.com>
|
|
|
|
--- a/xen/drivers/passthrough/amd/iommu_acpi.c
|
|
+++ b/xen/drivers/passthrough/amd/iommu_acpi.c
|
|
@@ -664,6 +664,9 @@ static u16 __init parse_ivhd_device_spec
|
|
return dev_length;
|
|
}
|
|
|
|
+ if ( !iommu_intremap )
|
|
+ return dev_length;
|
|
+
|
|
/*
|
|
* Some BIOSes have IOAPIC broken entries so we check for IVRS
|
|
* consistency here --- whether entry's IOAPIC ID is valid and
|
|
@@ -902,7 +905,7 @@ static int __init parse_ivrs_table(struc
|
|
}
|
|
|
|
/* Each IO-APIC must have been mentioned in the table. */
|
|
- for ( apic = 0; !error && apic < nr_ioapics; ++apic )
|
|
+ for ( apic = 0; !error && iommu_intremap && apic < nr_ioapics; ++apic )
|
|
{
|
|
if ( !nr_ioapic_entries[apic] ||
|
|
ioapic_sbdf[IO_APIC_ID(apic)].pin_setup )
|
|
--- a/xen/drivers/passthrough/amd/iommu_init.c
|
|
+++ b/xen/drivers/passthrough/amd/iommu_init.c
|
|
@@ -1192,7 +1192,8 @@ int __init amd_iommu_init(void)
|
|
|
|
BUG_ON( !iommu_found() );
|
|
|
|
- if ( amd_iommu_perdev_intremap && amd_sp5100_erratum28() )
|
|
+ if ( iommu_intremap && amd_iommu_perdev_intremap &&
|
|
+ amd_sp5100_erratum28() )
|
|
goto error_out;
|
|
|
|
ivrs_bdf_entries = amd_iommu_get_ivrs_dev_entries();
|
|
@@ -1209,7 +1210,7 @@ int __init amd_iommu_init(void)
|
|
goto error_out;
|
|
|
|
/* initialize io-apic interrupt remapping entries */
|
|
- if ( amd_iommu_setup_ioapic_remapping() != 0 )
|
|
+ if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
|
|
goto error_out;
|
|
|
|
/* allocate and initialize a global device table shared by all iommus */
|