[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2 of 2] x86/VT-d: Sandy-Bridge BT98 Erratum
Reference: http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e5-family-spec-update.pdf Disable the IOMMU on affected systems. Specifying iommu=no-intremap on the Xen command line will allow use of basic VT-d functionality without suffering the system instability, albeit with the security problems associated with disabling interrupt remapping. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> diff -r 89ba0b0192c4 -r 9c2aed177e25 xen/drivers/passthrough/vtd/quirks.c --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -267,6 +267,27 @@ static void __init tylersburg_intremap_q } } +/* Xeon E5 Family processors (Sandy-Bridge) suffer from erratum BT98, which + * affects Stepping C-1, but is reported fixed in Stepping C-2. + * + * This causes system instability when using x2apic and VT-d queued + * invalidation. The workaround is to disable x2apic and VT-d. + */ +static void __init snb_bt98_erratum(void) +{ + const struct cpuinfo_x86 *c = &boot_cpu_data; + + if ( !( c->x86_vendor == X86_VENDOR_INTEL && + c->x86 == 6 && + c->x86_model == 0x2d && + c->x86_mask == 0x6 ) ) + return; + + printk(XENLOG_WARNING VTDPREFIX + " Disabling IOMMU due to Sandy-Bridge BT98 erratum\n"); + iommu_enable = 0; +} + /* initialize platform identification flags */ void __init platform_quirks_init(void) { @@ -288,9 +309,12 @@ void __init platform_quirks_init(void) /* ioremap IGD MMIO+0x2000 page */ map_igd_reg(); - /* Tylersburg interrupt remap quirk */ + /* Interrupt remapping quirks */ if ( iommu_intremap ) + { tylersburg_intremap_quirk(); + snb_bt98_erratum(); + } } /* _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |