Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
xen.31136
611cba4e-VT-d-Tylersburg-errata-more-steppings....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 611cba4e-VT-d-Tylersburg-errata-more-steppings.patch of Package xen.31136
# Commit 517a90d1ca09ce00e50d46ac25566cc3bd2eb34d # Date 2021-08-18 09:44:14 +0200 # Author Jan Beulich <jbeulich@suse.com> # Committer Jan Beulich <jbeulich@suse.com> VT-d: Tylersburg errata apply to further steppings While for 5500 and 5520 chipsets only B3 and C2 are mentioned in the spec update, X58's also mentions B2, and searching the internet suggests systems with this stepping are actually in use. Even worse, for X58 erratum #69 is marked applicable even to C2. Split the check to cover all applicable steppings and to also report applicable errata numbers in the log message. The splitting requires using the DMI port instead of the System Management Registers device, but that's then in line (also revision checking wise) with the spec updates. Fixes: 6890cebc6a98 ("VT-d: deal with 5500/5520/X58 errata") Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -270,26 +270,42 @@ static int __init parse_snb_timeout(cons } custom_param("snb_igd_quirk", parse_snb_timeout); -/* 5500/5520/X58 Chipset Interrupt remapping errata, for stepping B-3. - * Fixed in stepping C-2. */ +/* + * 5500/5520/X58 chipset interrupt remapping errata, for steppings B2 and B3. + * Fixed in stepping C2 except on X58. + */ static void __init tylersburg_intremap_quirk(void) { - uint32_t bus, device; + unsigned int bus; 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); + /* Match on DMI port (Device 0 Function 0) */ + rev = pci_conf_read8(0, bus, 0, 0, PCI_REVISION_ID); - if ( rev == 0x13 && device == 0x342e8086 ) + switch ( pci_conf_read32(0, bus, 0, 0, PCI_VENDOR_ID) ) { + default: + continue; + + case 0x34038086: case 0x34068086: + if ( rev >= 0x22 ) + continue; printk(XENLOG_WARNING VTDPREFIX - "Disabling IOMMU due to Intel 5500/5520/X58 Chipset errata #47, #53\n"); - iommu_enable = 0; + "Disabling IOMMU due to Intel 5500/5520 chipset errata #47 and #53\n"); + iommu_enable = false; + break; + + case 0x34058086: + printk(XENLOG_WARNING VTDPREFIX + "Disabling IOMMU due to Intel X58 chipset %s\n", + rev < 0x22 ? "errata #62 and #69" : "erratum #69"); + iommu_enable = false; break; } + + break; } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor