[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] VT-d: deal with 5500/5520/X58 errata
Looks fine, Acked! Thanks! Xiantao > -----Original Message----- > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] > Sent: Wednesday, March 20, 2013 12:48 AM > To: xen-devel > Cc: Jacob Shin; suravee.suthikulpanit@xxxxxxx; Andrew Cooper; Malcolm > Crossley; Zhang, Xiantao > Subject: [PATCH 3/3] VT-d: deal with 5500/5520/X58 errata > > http://www.intel.com/content/www/us/en/chipsets/5520-and-5500-chipset-ioh- > specification-update.html > > Stepping B-3 has two errata (#47 and #53) related to Interrupt > remapping, to which the workaround is for the BIOS to completely disable > interrupt remapping. These errata are fixed in stepping C-2. > > Unfortunately this chipset stepping is very common and many BIOSes are > not disabling interrupt remapping on this stepping . We can detect this in > Xen and prevent Xen from using the problematic interrupt remapping feature. > > The Intel 5500/5520/X58 chipset does not support VT-d > Extended Interrupt Mode(EIM). This means the iommu_supports_eim() check > always fails and so x2apic mode cannot be enabled in Xen before this quirk > disables the interrupt remapping feature. > > Signed-off-by: Malcolm Crossley <malcolm.crossley@xxxxxxxxxx> > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > > Gate the function call to check the quirk on interrupt remapping being > requested to get enabled, and upon failure disable the IOMMU to be in > line with what the changes for XSA-36 (plus follow-ups) did. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > --- a/xen/drivers/passthrough/vtd/iommu.c > +++ b/xen/drivers/passthrough/vtd/iommu.c > @@ -2125,6 +2125,11 @@ int __init intel_vtd_setup(void) > } > > platform_quirks_init(); > + if ( !iommu_enable ) > + { > + ret = -ENODEV; > + goto error; > + } > > /* We enable the following features only if they are supported by all > VT-d > * engines: Snoop Control, DMA passthrough, Queued Invalidation and > --- a/xen/drivers/passthrough/vtd/quirks.c > +++ b/xen/drivers/passthrough/vtd/quirks.c > @@ -244,6 +244,29 @@ void vtd_ops_postamble_quirk(struct iomm > } > } > > +/* 5500/5520/X58 Chipset Interrupt remapping errata, for stepping B-3. > + * Fixed in stepping C-2. */ > +static void __init tylersburg_intremap_quirk(void) > +{ > + uint32_t bus, device; > + uint8_t rev; > + > + for ( bus = 0; bus < 0x100; bus++ ) > + { > + /* Match on System Management Registers on Device 20 Function 0 */ > + device = pci_conf_read32(0, bus, 20, 0, PCI_VENDOR_ID); > + rev = pci_conf_read8(0, bus, 20, 0, PCI_REVISION_ID); > + > + if ( rev == 0x13 && device == 0x342e8086 ) > + { > + printk(XENLOG_WARNING VTDPREFIX > + "Disabling IOMMU due to Intel 5500/5520/X58 Chipset > errata #47, > #53\n"); > + iommu_enable = 0; > + break; > + } > + } > +} > + > /* initialize platform identification flags */ > void __init platform_quirks_init(void) > { > @@ -264,6 +287,10 @@ void __init platform_quirks_init(void) > > /* ioremap IGD MMIO+0x2000 page */ > map_igd_reg(); > + > + /* Tylersburg interrupt remap quirk */ > + if ( iommu_intremap ) > + tylersburg_intremap_quirk(); > } > > /* > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |