0d71e75f73
26369-libxl-devid.patch - fate##313584: pass bios information to XEN HVM guest 26554-hvm-firmware-passthrough.patch 26555-hvm-firmware-passthrough.patch 26556-hvm-firmware-passthrough.patch - Upstream patches from Jan 26516-ACPI-parse-table-retval.patch (Replaces CVE-2013-0153-xsa36.patch) 26517-AMD-IOMMU-clear-irtes.patch (Replaces CVE-2013-0153-xsa36.patch) 26518-AMD-IOMMU-disable-if-SATA-combined-mode.patch (Replaces CVE-2013-0153-xsa36.patch) 26519-AMD-IOMMU-perdev-intremap-default.patch (Replaces CVE-2013-0153-xsa36.patch) 26526-pvdrv-no-devinit.patch 26529-gcc48-build-fix.patch 26531-AMD-IOMMU-IVHD-special-missing.patch (Replaces CVE-2013-0153-xsa36.patch) 26532-AMD-IOMMU-phantom-MSI.patch 26536-xenoprof-div-by-0.patch 26576-x86-APICV-migration.patch 26577-x86-APICV-x2APIC.patch 26578-AMD-IOMMU-replace-BUG_ON.patch - bnc#797014 - no way to control live migrations 26547-tools-xc_fix_logic_error_in_stdiostream_progress.patch 26548-tools-xc_handle_tty_output_differently_in_stdiostream_progress.patch 26549-tools-xc_turn_XCFLAGS_*_into_shifts.patch 26550-tools-xc_restore_logging_in_xc_save.patch 26551-tools-xc_log_pid_in_xc_save-xc_restore_output.patch - PVonHVM: __devinit was removed in linux-3.8 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=229
78 lines
2.3 KiB
Diff
78 lines
2.3 KiB
Diff
References: CVE-2013-0153 XSA-36 bnc#800275
|
|
|
|
# HG changeset patch
|
|
# User Boris Ostrovsky <boris.ostrovsky@amd.com>
|
|
# Date 1360074085 -3600
|
|
# Node ID e379a23b04655e9e43dc50944a5c9d1e59d8bee9
|
|
# Parent 601139e2b0db7dc8a5bb69b9b7373fb87742741c
|
|
AMD,IOMMU: Disable IOMMU if SATA Combined mode is on
|
|
|
|
AMD's SP5100 chipset can be placed into SATA Combined mode
|
|
that may cause prevent dom0 from booting when IOMMU is
|
|
enabled and per-device interrupt remapping table is used.
|
|
While SP5100 erratum 28 requires BIOSes to disable this mode,
|
|
some may still use it.
|
|
|
|
This patch checks whether this mode is on and, if per-device
|
|
table is in use, disables IOMMU.
|
|
|
|
This is XSA-36 / CVE-2013-0153.
|
|
|
|
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@amd.com>
|
|
|
|
Flipped operands of && in amd_iommu_init() to make the message issued
|
|
by amd_sp5100_erratum28() match reality (when amd_iommu_perdev_intremap
|
|
is zero, there's really no point in calling the function).
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Committed-by: Jan Beulich <jbeulich@suse.com>
|
|
|
|
--- a/xen/drivers/passthrough/amd/iommu_init.c
|
|
+++ b/xen/drivers/passthrough/amd/iommu_init.c
|
|
@@ -1118,12 +1118,45 @@ static int __init amd_iommu_setup_device
|
|
return 0;
|
|
}
|
|
|
|
+/* Check whether SP5100 SATA Combined mode is on */
|
|
+static bool_t __init amd_sp5100_erratum28(void)
|
|
+{
|
|
+ u32 bus, id;
|
|
+ u16 vendor_id, dev_id;
|
|
+ u8 byte;
|
|
+
|
|
+ for (bus = 0; bus < 256; bus++)
|
|
+ {
|
|
+ id = pci_conf_read32(0, bus, 0x14, 0, PCI_VENDOR_ID);
|
|
+
|
|
+ vendor_id = id & 0xffff;
|
|
+ dev_id = (id >> 16) & 0xffff;
|
|
+
|
|
+ /* SP5100 SMBus module sets Combined mode on */
|
|
+ if (vendor_id != 0x1002 || dev_id != 0x4385)
|
|
+ continue;
|
|
+
|
|
+ byte = pci_conf_read8(0, bus, 0x14, 0, 0xad);
|
|
+ if ( (byte >> 3) & 1 )
|
|
+ {
|
|
+ printk(XENLOG_WARNING "AMD-Vi: SP5100 erratum 28 detected, disabling IOMMU.\n"
|
|
+ "If possible, disable SATA Combined mode in BIOS or contact your vendor for BIOS update.\n");
|
|
+ return 1;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
int __init amd_iommu_init(void)
|
|
{
|
|
struct amd_iommu *iommu;
|
|
|
|
BUG_ON( !iommu_found() );
|
|
|
|
+ if ( amd_iommu_perdev_intremap && amd_sp5100_erratum28() )
|
|
+ goto error_out;
|
|
+
|
|
ivrs_bdf_entries = amd_iommu_get_ivrs_dev_entries();
|
|
|
|
if ( !ivrs_bdf_entries )
|