tdm
Android Expert
Kids reported another spurious reboot. It's not the same as the last one though. Here's the relevant lines in /proc/last_kmsg:
[ 7674.264465] saw_set_voltage: 8901_s1: msm_spm_set_vdd failed -5
[ 7674.264892] decrease_vdd: vdd_sc (cpu1) decrease failed (-5)
[ 7674.265106] cpufreq: cpu1 init at 1674000 switching to 1512000
[ 7692.417480] SysRq : Emergency Remount R/O
... followed by about two dozen lines of shutdown stuff.
EIO is 5 (so -EIO is -5). There are two ways for msm_spm_set_vdd() to return -EIO: (1) the if() in that function fails, or (2) msm_spm_drv_set_vdd() returns -EIO. We can rule out (2) since the error path in msm_spm_drv_set_vdd() logs an error and we don't see it. So it must be (1). Here's the if():
if (!atomic_read(&msm_spm_set_vdd_x_cpu_allowed) &&
unlikely(smp_processor_id() != cpu)) {
goto set_vdd_x_cpu_bail;
}
Now what the heck is that code doing and why did it fail...?
[ 7674.264465] saw_set_voltage: 8901_s1: msm_spm_set_vdd failed -5
[ 7674.264892] decrease_vdd: vdd_sc (cpu1) decrease failed (-5)
[ 7674.265106] cpufreq: cpu1 init at 1674000 switching to 1512000
[ 7692.417480] SysRq : Emergency Remount R/O
... followed by about two dozen lines of shutdown stuff.
EIO is 5 (so -EIO is -5). There are two ways for msm_spm_set_vdd() to return -EIO: (1) the if() in that function fails, or (2) msm_spm_drv_set_vdd() returns -EIO. We can rule out (2) since the error path in msm_spm_drv_set_vdd() logs an error and we don't see it. So it must be (1). Here's the if():
if (!atomic_read(&msm_spm_set_vdd_x_cpu_allowed) &&
unlikely(smp_processor_id() != cpu)) {
goto set_vdd_x_cpu_bail;
}
Now what the heck is that code doing and why did it fail...?