[PATCH] 2.5.14: New PCI allocation code (alpha, arm, parisc) [1/2]
authorIvan Kokshaysky <ink@jurassic.park.msu.ru>
Tue, 7 May 2002 03:27:32 +0000 (20:27 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Tue, 7 May 2002 03:27:32 +0000 (20:27 -0700)
commit8a3d0b80edc3f9fa9766a2c46cbefd7954602408
treec4d8c09bd08406ad5a24c5c4fa9ac34dabe4af52
parent7c59354d546ae8c11228be80a255cb45d7f975f1
[PATCH] 2.5.14: New PCI allocation code (alpha, arm, parisc) [1/2]

This changes PCI resource allocation algorithm to 3 passes vs.
current 2 passes. Extra pass is used for calculation of required
size and alignment of PCI buses behind PCI-PCI bridges. After
that, in the pass #3, these buses get allocated like regular
PCI devices. This gives tighter PCI IO and memory packing -
for instance, this fixes allocation problems on certain alphas
with very small (112Mb) PCI memory range. Also, the new code
- will allow mixed approach to resource allocation:
  architecture can keep BIOS settings for some devices,
  and re-allocate resources for others, including improperly
  initialized bridges;
- makes prefetchable ranges support much simpler;
- allows sizing of IO and memory ranges for the host
  bridges, which might be very useful in some situations.

It was tested on various alphas; I haven't heard any complaints
from rmk and rth, so probably all of this is ok. :-)

Part 1:
- for all archs, 4th argument (align) added to
  pcibios_align_resource (and its callers).
  It's necessary because this function will be called for
  bus resources as well, and in this case size != alignment.
- for several archs, dead/bogus code removed from
  pcibios_fixup_pbus_ranges().
27 files changed:
arch/alpha/kernel/pci.c
arch/arm/kernel/bios32.c
arch/i386/kernel/pci/i386.c
arch/ia64/kernel/pci.c
arch/mips/ddb5074/pci.c
arch/mips/ddb5476/pci.c
arch/mips/ddb5xxx/common/pci.c
arch/mips/gt64120/common/pci.c
arch/mips/ite-boards/generic/it8172_pci.c
arch/mips/kernel/pci.c
arch/mips/mips-boards/generic/pci.c
arch/mips/sni/pci.c
arch/mips64/mips-boards/generic/pci.c
arch/mips64/sgi-ip27/ip27-pci.c
arch/mips64/sgi-ip32/ip32-pci.c
arch/parisc/kernel/pci.c
arch/ppc/kernel/pci.c
arch/ppc64/kernel/pci.c
arch/sh/kernel/pci_st40.c
arch/sh/kernel/pcibios.c
arch/sparc/kernel/pcic.c
arch/sparc64/kernel/pci.c
arch/x86_64/kernel/pci-x86_64.c
drivers/pci/setup-res.c
include/linux/ioport.h
include/linux/pci.h
kernel/resource.c