x86/PCI: Coalesce multiple overlapping host bridge windows
authorAlexey Neyman <stilor@att.net>
Wed, 9 Oct 2013 22:16:38 +0000 (16:16 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 10 Oct 2013 13:11:59 +0000 (07:11 -0600)
commit3ad674d6c6c5724c83f10f422d826420c83536cd
treebf5856358a7c924c79e9d79e8fb1741009e3df47
parent6b49ee49af11890f83fa660a99cd95ac6dacd2fa
x86/PCI: Coalesce multiple overlapping host bridge windows

Previously we coalesced windows by expanding the first overlapping one and
making the second invalid.  But we never look at the expanded first window
again, so we fail to notice other windows that overlap it.  For example, we
coalesced these:

  [io  0x0000-0x03af] // #0
  [io  0x03e0-0x0cf7] // #1
  [io  0x0000-0xdfff] // #2

into these, which still overlap:

  [io  0x0000-0xdfff] // #0
  [io  0x03e0-0x0cf7] // #1

The fix is to expand the *second* overlapping resource and ignore the
first, so we get this instead with no overlaps:

  [io  0x0000-0xdfff] // #2

[bhelgaas: changelog]
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=62511
Signed-off-by: Alexey Neyman <stilor@att.net>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
arch/x86/pci/acpi.c