Re: [PATCH 2.6] Altix updates

From: Christoph Hellwig
Date: Tue Jan 20 2004 - 18:36:56 EST


On Tue, Jan 20, 2004 at 04:23:50PM -0600, Patrick Gefre wrote:
> I had one for bridge address/TIO, one for bridge address/nonTIO, one for
> soft address/TIO and one for soft address/nonTIO.
> I thought that was what you were proposing. In any event, here's how the
> basic code looks (leaving out type defs/error checking/
> etc) - the wrapper is embedded in the macro - note that we would always
> like to use the soft struct because it doesn't cost us a PIO
> but in the event that the soft struct is not available the bridge
> address must be used:

(horrible piece of sh^H^H^code snipped)

Eeek!

So taking your pio cycle stuff into account, what about:

void *
__pcireg_xxx_get(bridge_t *bridge, int type)
{
switch (type ) {
case BT_TIO:
return bridge_addr->ti_xxx;

case BT_PIC:
return bridge->addr->pic_xxx;

default:
/* */
}
}

and then have wrappers for both the plain bridge_t and the pcibr_soft.
In fact I wonder why you want the one taking bridge_t at all, there is
absolutely no reason why you should be able to get a bridge_t without
getting at the pcibr_soft easily.
>
> void *
> pcireg_xxx_get(void *ptr)
> {
> if ( IS_IOADDR(ptr) )
> return REAL_pcireg_xxx_get(ptr, IS_TIO(ptr) ? BT_TIO : BT_PIC);
> else
> return REAL_pcireg_xxx_get(ptr->bs_base, ptr->bs_bridge_type);
>
> }

No, this is borked again. The IS_IOADDR tests must go away.

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