• Kai-Heng Feng's avatar
    PCI: Coalesce host bridge contiguous apertures · 7c3855c4
    Kai-Heng Feng authored
    Built-in graphics at 07:00.0 on HP EliteDesk 805 G6 doesn't work because
    graphics can't get the BAR it needs.  The BIOS configuration is
    correct: BARs 0 and 2 both fit in the 00:08.1 bridge window.
    
    But that 00:08.1 window covers two host bridge apertures from _CRS.
    Previously we assumed this was illegal, so we clipped the window to fit
    into one aperture (see 0f7e7aee ("PCI: Add pci_bus_clip_resource() to
    clip to fit upstream window")).
    
      pci_bus 0000:00: root bus resource [mem 0x10020200000-0x100303fffff window]
      pci_bus 0000:00: root bus resource [mem 0x10030400000-0x100401fffff window]
    
      pci 0000:00:08.1:   bridge window [mem 0x10030000000-0x100401fffff 64bit pref]
      pci 0000:07:00.0: reg 0x10: [mem 0x10030000000-0x1003fffffff 64bit pref]
      pci 0000:07:00.0: reg 0x18: [mem 0x10040000000-0x100401fffff 64bit pref]
    
      pci 0000:00:08.1: can't claim BAR 15 [mem 0x10030000000-0x100401fffff 64bit pref]: no compatible bridge window
      pci 0000:00:08.1: [mem 0x10030000000-0x100401fffff 64bit pref] clipped to [mem 0x10030000000-0x100303fffff 64bit pref]
      pci 0000:00:08.1:   bridge window [mem 0x10030000000-0x100303fffff 64bit pref]
    
      pci 0000:07:00.0: can't claim BAR 0 [mem 0x10030000000-0x1003fffffff 64bit pref]: no compatible bridge window
      pci 0000:07:00.0: can't claim BAR 2 [mem 0x10040000000-0x100401fffff 64bit pref]: no compatible bridge window
    
    However, the host bridge apertures are contiguous, so there's no need to
    clip in this case.  Coalesce contiguous apertures so we can allocate from
    the entire contiguous region.
    
    Previous commit 65db0405 ("PCI: Coalesce host bridge contiguous
    apertures") was similar but sorted the apertures, and Guenter Roeck
    reported a regression in ppc:sam460ex qemu emulation from nvme; see
    https://lore.kernel.org/all/20210709231529.GA3270116@roeck-us.net/
    
    [bhelgaas: commit log]
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=212013Suggested-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Link: https://lore.kernel.org/r/20210713125007.1260304-1-kai.heng.feng@canonical.comSigned-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    7c3855c4
probe.c 85.6 KB