mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-03-11 08:02:20 +00:00
The malta subtargets for mips64 and mips64el fail to start the init process
at boot, resulting in a boot loop. The issue was raised and analyzed within
FS#3277. Investigation suggested code near the [vdso] memory area of the
process was long jumping into a region inaccessible to the process, e.g.
init: - preinit -
init: Launched preinit instance, pid=522
do_page_fault(): sending SIGSEGV to init for invalid read access from 0000000000000360
epc = 0000000000000360 in init[aaab42b000+4000]
ra = 000000fffee385e0 in
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
Rebooting in 1 seconds..
Note the low-memory read access and epc are the same. Upstream kernel 5.6
included a relevant patch and discussion:
* d3f703c4359f ("mips: vdso: fix 'jalr t9' crash in vdso code")
Disassembly of the failing kernel's vdso.so confirmed presence of the
telltale long jumps, e.g.:
00000000000007c0 <__vdso_clock_getres@@LINUX_2.6>:
[...]
7dc: 0320f809 jalr t9
[...]
Restore booting mips64/mips64el malta by backporting the above commit:
* 310-v5.6-mips-vdso-fix-jalr-t9-crash-in-vdso-code.patch
Fixes:
|
||
---|---|---|
.. | ||
apm821xx | ||
ar71xx | ||
arc770 | ||
archs38 | ||
armvirt | ||
at91 | ||
ath25 | ||
ath79 | ||
bcm27xx | ||
bcm47xx | ||
bcm53xx | ||
bcm63xx | ||
cns3xxx | ||
gemini | ||
generic | ||
imx6 | ||
ipq40xx | ||
ipq806x | ||
ipq807x | ||
kirkwood | ||
lantiq | ||
layerscape | ||
malta | ||
mediatek | ||
mpc85xx | ||
mvebu | ||
mxs | ||
octeon | ||
octeontx | ||
omap | ||
oxnas | ||
pistachio | ||
ramips | ||
rb532 | ||
rockchip | ||
samsung | ||
sunxi | ||
tegra | ||
uml | ||
x86 | ||
zynq | ||
Makefile |