Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

loongson2f deadlocks fix



Hi,

It looks like we didn't build our LOONGSON kernels with the full
loongson2f errata workaround. I changed so now we add the following
two flags that were previously missing to kernel builds:

-Wa,-mfix-loongson2f-jump -Wa,-mfix-loongson2f-nop

I assume the jump fix is the 'big one' (I didn't test it separately),
it also sounds costly.

It seems like it changes this code:
ffffffff802057c0:       dec20010        ld      v0,16(s6)
ffffffff802057c4:       0040f809        jalr    v0
ffffffff802057c8:       00000000        nop

Into this:
ffffffff80205ec0:       dec20010        ld      v0,16(s6)
ffffffff80205ec4:       3c01cfff        lui     at,0xcfff
ffffffff80205ec8:       3421ffff        ori     at,at,0xffff
ffffffff80205ecc:       00411024        and     v0,v0,at
ffffffff80205ed0:       0040f809        jalr    v0
ffffffff80205ed4:       00200825        move    at,at

My machine seems a lot more stable, but with a rare occurring issue it's
hard to know for sure.

Additionally we were not clearing RAS which linux does (also changed to
match).

If we have additional issues, it sounds like we may want to consider
building userland with the changed nops. my machine seems stable now,
and it was described as a rare issue.

https://sourceware.org/ml/binutils/2009-11/msg00387.html
https://www.linux-mips.org/archives/linux-mips/2010-03/msg00149.html


Home | Main Index | Thread Index | Old Index