Subject: Re: PCI-cardbus adapter problem
To: Hayakawa Koichi <haya@ilink.sony.co.jp>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: tech-kern
Date: 05/17/2001 14:13:13
haya@ilink.sony.co.jp said:
> > it's better to not start at the end
>  > pf physical memory, but rather use the highest available region
>  > at the top of i386 32bit PCI memory space, which is where most
>  > things usually are mapped. 
> We have tried to use memory
> space at the end of physical memory, but it failed.  There
> are something (I don't know what they are) above the end of
> physical memory.

Hmm, there are (at least) 2 problems:
1. get an address range which is not used by anything
2. make sure it is forwarded to the subordinate bus

For 1., I'd say that the best way to do it would be to
do the ressource management (which is already done by the
extent maps) right and complete. This means, all the address
ranges mapped by PCI BARs must be reserved, even if they
are not used by the driver or the device is unconfigured.
(would have been done by the PCI framework) Further sources
of information would be the pnpbios (and acpi once this is
supported).
config_defer() doesn't do trt here btw. since the deferred
part of the cbb attachment gets run earlier then expected
- after the devices on the subordinate bus are attached.

For 2., there is not much one can do once PCI devices are
configured, besides finding a gap between ranges used by PCI
devices on the bus in question within the address window
forwarded by the parent bridge. The FIXUP code run at the
very beginning could try to lay out the address windows in
a way which leaves room for this.

haya@ilink.sony.co.jp said:
> I hope the device driver of pci-pci bridge will be able to control its
> memory-space windows. 

There is only one window of each kind, and it is generally
dangerous to fiddle with it after other PCI devices are
attached. So I'd say the driver can't do this.

best regards
Matthias