Re: 2.4 kernels do not boot on UX (Alpha)

From: Richard Henderson (rth@twiddle.net)
Date: Mon Sep 25 2000 - 13:40:06 EST


On Mon, Sep 25, 2000 at 04:22:38AM -0500, Jeff Garzik wrote:
> To give us a knowledge jump start... what is broken?

As far as I can tell, everything wrt actually configuring bridges.

If a bridge is completely uninitialized, then it won't be properly
added to the bus heirarchy, and neither will its children. More usual
is for the bridge to be partially initialized, with MEM for the bridge
and the device set, but IO completely disabled.

Either way we get the same result -- a device not properly rooted in
the bus heirarchy with its io and/or memory disabled. Which tends to
piss off most of the drivers we have.

The solution, in my opinion, is to be more aggressive with bus layout
and initialization in drivers/pci/setup.c. I think a proper implementation
would

  * Depth-first, sort the memory and io ranges for the bus by required
    alignment. This should give us better packing than we have currently.
    For now, each bus starts assigning io and mem ranges at zero. Note
    that this is in the kernel data structures only. Propagate up the
    size and required alignment of the bus to its device counterpart in
    the parent bus.

  * In the root bus, in some arch specific way, choose some non-zero
    address in which to place the block we've collected for its children.

  * Depth-last, propagate down the base addresses plus offset for the buses.

  * Diddle the hardware.

> The latest test9 pre-patches include some bridge cleanup..

I've not seen that yet...

r~
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 30 2000 - 21:00:16 EST