RE: [PATCH] 2.6.5- es7000 subarch update

From: Zwane Mwaikambo
Date: Mon Apr 12 2004 - 15:51:53 EST


On Mon, 12 Apr 2004, Protasevich, Natalie wrote:

> It is actually close to what I had in my initial patch when I posted it
> (and got in trouble with the timer IRQ0):
>
> ...
> intsrc.mpc_dstirq = pin;
> ...
> - && (mp_irqs[i].mpc_srcbusirq == intsrc.mpc_srcbusirq)) {
> + && (mp_irqs[i].mpc_dstirq == intsrc.mpc_dstirq)) {
>
> This code indexes mp_irqs[] by the pin, but has a similar "miscounting"
> problem and adds a second element with the same bus irq. I think this
> code could work either way being indexed by the pin or by the bus irq, but it
> has to be fixed in either case. (As I understand, with srcbusirq it
> doesn't work as is for much fewer people than with dstirq :)

Indeed it does, i'm beginning to wonder if the problem is in the mpparse
code for boxes such as Andrew's which get broken. Because really if we
overwrite the previous entry then this is acting very much like what the
function says it does. The only thing which i think makes things look
awkward with your patch is;

for (i = 0; i < mp_irq_entries; i++) {
if ((mp_irqs[i].mpc_srcbus == intsrc.mpc_srcbus)
&& (mp_irqs[i].mpc_srcbusirq == intsrc.mpc_srcbusirq)) {
mp_irqs[i] = intsrc;
+ if (intsrc.mpc_srcbusirq > pin) { <=======
+ int j;
+ for (j = 0; j < i; j++)
+ if (mp_irqs[j].mpc_dstirq == intsrc.mpc_dstirq)
+ mp_irqs[j].mpc_irqtype = -1;
+ }
found = 1;
break;
}
}

That just happens to get boxes like Andrew's out of the path because his
only gets broken with the irq0 override.
-
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/