Hi Horatiu Vultur,
On 12.12.18 12:21, Horatiu Vultur wrote:
Is your Linux Kernel compile with CONFIG_CPU_MIPSR2_IRQ_VI? Because we
had similar issue with two of our boards(Ocelot and Luton).
No, its not configured for this MT7688 / RAMIPS SoC. Enabling this
option does fix this issue. Many thanks for the suggestion.
BTW: Should CPU_MIPSR2_IRQ_EI probably also be set?
In our case the problem was that that Linux Kernel didn't reserve memory
for the addresses pointed by ebase register and then later the kernel
used this address overwriting the interupt vector, that lead to random
crash.
Exactly what we've observed here. It took quite some debugging to
finally find the root-cause for this.
Thanks,
Stefan
The 12/12/2018 09:18, Stefan Roese wrote:
Hi!
I've been hunting for a problem for quite some time, where Linux
hangs / crashes in userspace at some point on my MT7688 based
systems. I found that this problem can be avoided (worked around)
by not giving Linux the full memory (by using DT memory node fixup
or mem= kernel cmdline). When reducing this memory by the memory
used by U-Boot (stack pointer minus some KiB value as this is the
"lowest" memory used by U-Boot), then Linux runs just fine.
My first idea here was, that this issue is cache related (most
likely I-cache). But all tests and debugging in this area did not
fix this issue (even running with caches disabled).
Finally I found that this line in U-Boot makes Linux break:
arch/mips/lib/traps.c:
void trap_init(ulong reloc_addr)
unsigned long ebase = gd->irq_sp;
...
write_c0_ebase(ebase);
This sets EBase to something like 0x87e9b000 on my system (128MiB).
And Linux then re-uses this value and copies the exceptions handlers
to this address, overwriting random code and leading to an unstable
system.
So my questions now is, how should this be handled on the MT7688
platform instead? One way would be to set EBase back to the
original value (0x80000000) before booting into Linux. Another
solution would be to add some Linux code like board_ebase_setup()
to the MT7688 Linux port.
Since I'm still no real MIPS expert yet, I would really like to get
some advise here on how to best solve this issue. Maybe I missed
something. Comments?
Thanks,
Stefan
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot