x86: work around io allocation overlap of HT links
authorYinghai Lu <yhlu.kernel@gmail.com>
Sun, 13 Apr 2008 08:41:58 +0000 (01:41 -0700)
committerIngo Molnar <mingo@elte.hu>
Sat, 26 Apr 2008 21:41:04 +0000 (23:41 +0200)
commite8ee6f0ae5cd860e8e6c02807edfa3c1fa01bcb5
tree800e742a999207617506a9475dc40e3c6234d11a
parentcbf9bd603ab1fc4d2ecb1c6a4b7bd1cc50a7e82a
x86: work around io allocation overlap of HT links

normally BIOSes assign io/mmio range to different HT links without
overlapping, even same node same link should get non overlapping
entries.

but Rafael L. Wysocki's buggy BIOS creates a link with overlapping
entries for mmio and io:

  node 0 link 0: io port [1000, ffffff]
  node 0 link 0: mmio [e0000000efffffff]
  node 0 link 0: mmio [a0000, bffff]
  node 0 link 0: mmio [80000000ffffffff]

try to merge them and we will get:

  bus: [00, ff] on node 0 link 0
  bus: 00 index 0 io port: [0, ffff]
  bus: 00 index 1 mmio: [80000000fcffffffff]
  bus: 00 index 2 mmio: [a0000, bffff]

so later we will reduce the chance to assign used resource to
unassigned device.

Reported-by: "Rafael J. Wysocki" <rjw@sisk.pl>
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Tested-by: "Rafael J. Wysocki" <rjw@sisk.pl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/pci/k8-bus_64.c