linux_dsm_epyc7002/arch/x86/pci
Bjorn Helgaas 284f5f9dba PCI: work around Stratus ftServer broken PCIe hierarchy
A PCIe downstream port is a P2P bridge.  Its secondary interface is
a link that should lead only to device 0 (unless ARI is enabled)[1], so
we don't probe for non-zero device numbers.

Some Stratus ftServer systems have a PCIe downstream port (02:00.0) that
leads to both an upstream port (03:00.0) and a downstream port (03:01.0),
and 03:01.0 has important devices below it:

  [0000:02]-+-00.0-[03-3c]--+-00.0-[04-09]--...
                            \-01.0-[0a-0d]--+-[USB]
                                            +-[NIC]
                                            +-...

Previously, we didn't enumerate device 03:01.0, so USB and the network
didn't work.  This patch adds a DMI quirk to scan all device numbers,
not just 0, below a downstream port.

Based on a patch by Prarit Bhargava.

[1] PCIe spec r3.0, sec 7.3.1

CC: Myron Stowe <mstowe@redhat.com>
CC: Don Dutile <ddutile@redhat.com>
CC: James Paradis <james.paradis@stratus.com>
CC: Matthew Wilcox <matthew.r.wilcox@intel.com>
CC: Jesse Barnes <jbarnes@virtuousgeek.org>
CC: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
2012-04-30 15:21:02 -06:00
..
acpi.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-03-23 14:02:12 -07:00
amd_bus.c x86/PCI: amd: factor out MMCONFIG discovery 2012-01-06 12:11:19 -08:00
broadcom_bus.c x86/PCI: read Broadcom CNB20LE host bridge info before PCI scan 2012-01-06 12:11:12 -08:00
bus_numa.c x86/PCI: convert to pci_create_root_bus() and pci_scan_root_bus() 2012-01-06 12:11:14 -08:00
bus_numa.h Merge branch 'x86-bootmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-03-03 08:15:05 -08:00
ce4100.c x86: constify PCI raw ops structures 2011-10-14 09:05:28 -07:00
common.c PCI: work around Stratus ftServer broken PCIe hierarchy 2012-04-30 15:21:02 -06:00
direct.c x86: constify PCI raw ops structures 2011-10-14 09:05:28 -07:00
early.c x86/PCI: remove early PCI pr_debug statements 2009-11-24 15:25:19 -08:00
fixup.c PCI: Use class for quirk for pci_fixup_video 2012-02-24 14:34:46 -08:00
i386.c x86/PCI: add spinlock held check to 'pcibios_fwaddrmap_lookup()' 2012-03-02 12:03:58 -08:00
init.c x86, olpc: Use pci subarch init for OLPC 2010-02-25 19:26:23 -08:00
irq.c x86/PCI: irq and pci_ids patch for Intel Panther Point DeviceIDs 2011-05-10 15:43:36 -07:00
legacy.c x86/PCI: use pci_scan_bus() instead of pci_scan_bus_parented() 2012-01-06 12:11:13 -08:00
Makefile x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y 2012-01-12 07:54:18 -08:00
mmconfig_32.c x86: constify PCI raw ops structures 2011-10-14 09:05:28 -07:00
mmconfig_64.c x86: constify PCI raw ops structures 2011-10-14 09:05:28 -07:00
mmconfig-shared.c x66, UV: Enable 64-bit ACPI MFCG support for SGI UV2 platform 2011-06-03 16:00:03 +02:00
mrst.c x86/mrst/pci: avoid SoC fixups on non-SoC platforms 2012-02-23 12:33:27 -08:00
numaq_32.c x86/PCI: use pci_scan_bus() instead of pci_scan_bus_parented() 2012-01-06 12:11:13 -08:00
olpc.c x86: constify PCI raw ops structures 2011-10-14 09:05:28 -07:00
pcbios.c typo fixes: aera -> area, exntension -> extension 2011-12-09 15:22:07 +01:00
visws.c PCI: Make the struct pci_dev * argument of pci_fixup_irqs const. 2011-07-22 08:26:06 -07:00
xen.c Features: 2012-03-22 20:16:14 -07:00