linux/arch
Benjamin Herrenschmidt c1f343028d powerpc/pci: Reserve legacy regions on PCI
There's a problem on some embedded platforms when we re-assign
everything on PCI, such as 44x. The generic code tries to avoid
assigning devices to addresses overlapping the low legacy
addresses such as VGA hard decoded areas using constants that
are unfortunately no good for us, as they don't take into account
the address translation we do to access PCI busses.

Thus we end up allocating things like IO BARs to 0, which is
technically legal, but will shadow hard decoded ports for use
by things like VGA cards.

This works around it by attempting to reserve legacy regions
before we try to assign addresses.

NOTE: This may have nasty side effects in cases I haven't tested
yet:

 - We try to use FW mappings (ie. powermac) and the FW has allocated
a conflicting address over those legacy regions. This will typically
happen. I would expect the new code to just fail with an informative
message without harm but I haven't had a chance to test that scenario
yet.

 - A device with fixed BARs overlapping those legacy addresses such
as an IDE controller in legacy mode is in the system. I don't know
for sure yet what will happen there, I have to test :-)

Ideally, we should change PCIBIOS_MIN_IO/MIN_MEM accross the board
to take a bus pointer so they can provide appropriate per-bus translated
values to the generic code but that's a more invasive patch. I will
do that in the future, but in the meantime, this fixes the problem
locally

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2009-01-08 16:25:07 +11:00
..
alpha PCI: alpha: use generic INTx swizzle from PCI core 2009-01-07 11:13:13 -08:00
arm Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-01-07 15:41:01 -08:00
avr32 avr32: Move syscalls.h under arch/avr32/include/asm/ 2009-01-07 11:28:15 +01:00
blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 2009-01-07 12:00:25 -08:00
cris Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
frv take init_fs to saner place 2008-12-31 18:07:42 -05:00
h8300 h8300: introduce asm/swab.h 2009-01-06 18:10:28 -08:00
ia64 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
m32r Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-03 12:04:39 -08:00
m68k trivial: fix an -> a typos in documentation and comments 2009-01-06 11:28:07 +01:00
m68knommu m68knommu: introduce asm/swab.h 2009-01-06 18:10:28 -08:00
mips Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-01-07 15:41:01 -08:00
mn10300 take init_fs to saner place 2008-12-31 18:07:42 -05:00
parisc atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
powerpc powerpc/pci: Reserve legacy regions on PCI 2009-01-08 16:25:07 +11:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
sh PCI: sh: use generic INTx swizzle from PCI core 2009-01-07 11:13:15 -08:00
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2009-01-07 17:23:53 -08:00
um mm: invoke oom-killer from page fault 2009-01-06 15:58:58 -08:00
x86 trivial: replace last usages of __FUNCTION__ in kernel 2009-01-07 15:48:54 -08:00
xtensa xtensa: introduce swab.h 2009-01-07 12:22:04 -08:00
.gitignore
Kconfig