diff options
| author | Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 2002-05-06 20:27:32 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-05-06 20:27:32 -0700 |
| commit | 8a3d0b80edc3f9fa9766a2c46cbefd7954602408 (patch) | |
| tree | c4d8c09bd08406ad5a24c5c4fa9ac34dabe4af52 /include/linux/pci.h | |
| parent | 7c59354d546ae8c11228be80a255cb45d7f975f1 (diff) | |
[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().
Diffstat (limited to 'include/linux/pci.h')
| -rw-r--r-- | include/linux/pci.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index 44007acbf3ed..65a5a3bcfcdb 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -500,7 +500,8 @@ int pcibios_enable_device(struct pci_dev *); char *pcibios_setup (char *str); /* Used only when drivers/pci/setup.c is used */ -void pcibios_align_resource(void *, struct resource *, unsigned long); +void pcibios_align_resource(void *, struct resource *, + unsigned long, unsigned long); void pcibios_update_resource(struct pci_dev *, struct resource *, struct resource *, int); void pcibios_update_irq(struct pci_dev *, int irq); |
