]> bbs.cooldavid.org Git - net-next-2.6.git/commit
x86/pci: insert ioapic resource before assigning unassigned resources
authorYinghai Lu <yinghai@kernel.org>
Fri, 10 Jul 2009 16:36:20 +0000 (09:36 -0700)
committerJesse Barnes <jbarnes@jbarnes-g45.(none)>
Fri, 10 Jul 2009 20:03:14 +0000 (13:03 -0700)
commit857fdc53a0a90c3ba7fcf5b1fb4c7a62ae03cf82
treef7b0c09479760fcb6dab89a2df7f7c3ca0a82a6d
parentc2cc49a2f8a479dde96a599646d30b6cc9dbed78
x86/pci: insert ioapic resource before assigning unassigned resources

Stephen reported that his DL585 G2 needed noapic after 2.6.22 (?)

Dann bisected it down to:
  commit 30a18d6c3f1e774de656ebd8ff219d53e2ba4029
  Date:   Tue Feb 19 03:21:20 2008 -0800

      x86: multi pci root bus with different io resource range, on
      64-bit

It turns out that:
  1. that AMD-based systems have two HT chains.
  2. BIOS doesn't allocate resources for BAR 6 of devices under 8132 etc
  3. that multi-peer-root patch will try to split root resources to peer
     root resources according to PCI conf of NB
  4. PCI core assigns unassigned resources, but they overlap with BARs
     that are used by ioapic addr of io4 and 8132.

The reason: at that point ioapic address are not inserted yet.  Solution
is to insert ioapic resources into the tree a bit earlier.

Reported-by: Stephen Frost <sfrost@snowman.net>
Reported-and-Tested-by: dann frazier <dannf@hp.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: stable@kernel.org
Signed-off-by: Jesse Barnes <jbarnes@jbarnes-g45.(none)>
arch/x86/include/asm/io_apic.h
arch/x86/kernel/apic/io_apic.c
arch/x86/pci/i386.c