Problem with regulator_shutdown() introduced in r331989
Milan Obuch
freebsd-arm at dino.sk
Sat Apr 7 19:34:23 UTC 2018
Hi,
after some time with running slightly older sources based kernel I
decided to upgrade, but current sources based kernel does not boot on
Orange Pi Zero, maybe on other Allwinner based boards too, I did not
test them. Problem manifests itself on console with following:
Release APs
CPU(3) applied BP hardening: not necessary
CPU(1) applied BP hardening: not necessary
CPU(2) applied BP hardening: not necessary
WARNING: WITNESS option enabled, expect reduced performance.
regulator: shuting down vcc3v0
Trying to mount root from ufs:/dev/mmcsd0s2a [rw]...
GEOM: new disk mmcsd0
regulator: shuting down vcc5v0
regulator: shuting down vcc-wifi
mmc0: panic: Invalid enable count
cpuid = 0
time = 1
KDB: stack backtrace:
db_trace_self() at db_trace_self
pc = 0xc03be8dc lr = 0xc00bba1c (db_trace_self_wrapper+0x30)
sp = 0xc0713c90 fp = 0xc0713da8
db_trace_self_wrapper() at db_trace_self_wrapper+0x30
pc = 0xc00bba1c lr = 0xc01ea0d8 (vpanic+0x154)
sp = 0xc0713db0 fp = 0xc0713dd0
r4 = 0x00000100 r5 = 0x00000001
r6 = 0xc0431ec1 r7 = 0xc0553cc8
vpanic() at vpanic+0x154
pc = 0xc01ea0d8 lr = 0xc01e9ed0 (doadump)
sp = 0xc0713dd8 fp = 0xc0713dec
r4 = 0xc0431ec1 r5 = 0xc0713df4
r6 = 0x00000000 r7 = 0x00000000
r8 = 0xc2df0400 r9 = 0xc053b988
r10 = 0xc1b71e80
doadump() at doadump
pc = 0xc01e9ed0 lr = 0xc00cd9e8 (regnode_fixed_enable+0x150)
sp = 0xc0713df4 fp = 0xc0713e20
r4 = 0x00000000 r5 = 0xc1b71e80
regnode_fixed_enable() at regnode_fixed_enable+0x150
pc = 0xc00cd9e8 lr = 0xc00cbb60 (regnode_stop+0x1d4)
sp = 0xc0713e28 fp = 0xc0713e48
r4 = 0x00000000 r5 = 0xc2ded780
r6 = 0xc2ded7b4 r7 = 0xc0504a00
r8 = 0xc05cacc8 r9 = 0xc053b988
r10 = 0xc05cabd0
regnode_stop() at regnode_stop+0x1d4
pc = 0xc00cbb60 lr = 0xc00cd2f0 (regulator_shutdown+0x9c)
sp = 0xc0713e50 fp = 0xc0713e68
r4 = 0xc0548a54 r5 = 0xc2ded780
r6 = 0xc0431da6 r7 = 0xc0551c8c
regulator_shutdown() at regulator_shutdown+0x9c
pc = 0xc00cd2f0 lr = 0xc0189500 (mi_startup+0x18c)
sp = 0xc0713e70 fp = 0xc0713e90
r4 = 0xc05caccc r5 = 0x00000001
r6 = 0xc053ac6c r7 = 0x00000000
mi_startup() at mi_startup+0x18c
pc = 0xc0189500 lr = 0xc0000244 (_start+0x144)
sp = 0xc0713e98 fp = 0x00000000
r4 = 0xc0000378 r5 = 0xc05e4000
r6 = 0x42050680 r7 = 0x00c52078
r8 = 0xc06dc000 r9 = 0x00000002
r10 = 0x01c28000
_start() at _start+0x144
pc = 0xc0000244 lr = 0xc0000244 (_start+0x144)
sp = 0xc0713e98 fp = 0x00000000
KDB: enter: panic
[ thread pid 0 tid 100000 ]
Stopped at $d.3: ldrb r15, [r15, r15, ror r15]!
db>
I can override it with either manually entering
set hw.regulator.disable_unused=0
on loader prompt, or putting line
hw.regulator.disable_unused=0
into /boot/loader.conf file.
Either way, system boots then normally and works as expected. Has
anybody any explanation what's going on? What purpose does this
function actually serve? Reading source, disabling unused regulatos
looks like a way to conserve power, but I am not sure if I think about
it the right way. Anyway, something is wrong - why has mmc0 invalid
enable count? Looks strange to me...
Regards,
Milan
More information about the freebsd-arm
mailing list