On Tue, 24 Oct 2000, jamal wrote:
> 
> (Now that i see Martin alive).
> Could we pursue this further?

The trouble definitely seems to be the fact that your PCI-PCI bridge does
not seem to have been set up for bridging:

        bus res 0 0 00000000-00000000
        bus res 1 0 00000000-00000000
        bus res 2 1200 e4000000-e5ffffff

and it appears that the reason 2.2.x works is simply that 2.2.x doesn't
care because it doesn't keep track of resources at all - it just takes
what the devices say their resources are. And the bridge obviously
_works_, it just doesn't tell which area it bridges.

Can you do a "lspci -vvxxx" on a 2.2.x setup, so that I can take a look at
what the bridge claims it is doing.

I quite frankly have no idea what to do otherwise. We could special-case a
bridge resource that is all zeroes, and say that it's a "transparent"
bridge and just say that the resource is the same as the parent resource.
That might get you going. It's probably not the right thing to do, but you
_can_ try something like this in pci_read_bridge_bases(), where it does

        if (base && base <= limit) {
                res->flags |= ...
                ..
-       }
+       } else {
+               /* Transparent bridge */
+               child->resource[0] = child->bus->resource[0];
+       }

        ..

(and do same thing for resource[1] and resource[2]..)

Does the above make it work for you? I don't know if PCI even has the
notion of transparent bridging, and quite frankly I doubt it does. The
above would be nothing but a hack that basically says "I don't understand
the resources of this bridge, so I'll just say it bridges everything".

                Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to