On Sunday 17 February 2008 00:35:30 Andrew Sharp wrote:
> Actually, IIRC, resources are based on what the device requested, so a
> device behind a bridge could request a resource starting at 0. I had
> to change this for a system as well. I changed it to
>
> if (!r->start && !r->end) {
>
> because I couldn't see anything in the code that made r->start == 0 an
> improper thing. Not to mention I couldn't access the device any other
> way. Both being 0 is definitelty bogus.
I think what's happening for me is the following:
I have a PCI bridge and behind that bridge is one device.
This has a fixed location and fixed size memory window (hardwired).
register_pci_controller() requires me to pass some io_resource
and mem_resource in the controller struct. So I pass the memory window
which is assigned to the controller and the devices behind it.
Later I fixup the bases and sizes for each resource in the
pcibios_plat_dev_init() routine.
So, well. I still don't know where the mips PCI subsystem would
detect this resource conflict and what that means to me.
If I simply rip out the check everything works fine, as I fixup
the addresses and sizes later anyway. (I fixup more stuff like the
IRQ routing an so on, too).
The code is in drivers/ssb/driver_pcicore.c
--
Greetings Michael.
|