Ralf,
Considering RM7k the latest kernel improperly sets some hazards. At
least, mtc0_tlbw_hazard and tlbw_use_hazard shall contain 4 nops, not 2.
Also, there shall be 10 nops after modification of the K0 field of the
config register. The suspicious place I see is in
arch/mips/mm/c-r4k.c:coherency_setup():
change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
If the K0 field has the value different than CONF_CM_DEFAULT, we
definitely need nops here and, I'm afraid, even the line shall be
executed uncached.
Strictly speaking, manual doesn't clearly define the term
"modification". I expect, if I write the same value in the K0 field, it
doesn't consider "modification".
And I guess all boards with RM7k select DMA_NONCOHERENT. Otherwise,
CONF_CM_DEFAULT will have a garbage in case of RM7k. Perhaps, it's worth
to select DMA_NONCOHERENT inside the "config CPU_RM7000" block.
Regards,
Gleb.