Bug 76771

Summary: MCFG rejected when it shouldn't be
Product: Drivers Reporter: Bjorn Helgaas (bjorn)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: v3.14 Subsystem:
Regression: No Bisected commit-id:

Description Bjorn Helgaas 2014-05-23 02:50:21 UTC
ECS is an AMD mechanism that allows access to extended PCI config space
(offsets 256-4095) via I/O ports CF8/CFCh.  We normally use ECAM, i.e.,
MMCONFIG, to access that space, but apparently old machines have issues
that meant we couldn't use ECAM.

On all recent AMD CPUs (Fam10h and everything newer), we enable ECS.  On some of those systems, I think we parse the MCFG table and use ECAM to access extended config space; in those cases, I don't think we actually use ECS.

On other systems, I think we reject the MCFG table for some reason, and then I think we *do* use ECS.

I want to stop enabling ECS on future AMD platforms because the ACPI, PCI Firmware, and AMD BKDG all recommend that we use ECAM, we already use ECAM all the time on Intel, and the ECS code is a maintenance problem.

That means we need to figure out how to make ECAM work all the time, which means we need to figure out how to use the MCFG tables that we currently reject.

Some examples of recent dmesg logs where we apparently reject MCFG and rely on ECS (they contain "PCI: not using MMCONFIG" and "Using configuration type 1 for extended access"):

http://forum.fedoraonline.it/viewtopic.php?pid=223356
http://forum.ubuntuusers.de/topic/bootfhehler/#post-6425337
http://crunchbang.org/forums/viewtopic.php?id=32117
http://forums.gentoo.org/viewtopic-t-960182-start-0.html
https://bugzilla.kernel.org/show_bug.cgi?id=68591