Random nitpick from the middle of a good writeup of tracking down a hardware bug, but 'SMC' in this context doesn't stand for 'Secure Memory Controller'. It's the Arm instruction that lets normal-world (kernel) code call into secure world code (firmware). Just like the SVC insn lets userspace call the kernel, SMC lets the kernel call the trusted firmware. PSCI is a standardized API that the firmware implements with functions like 'power CPU on/off' and 'reset system'. The PSCI spec is public so you can get the function ID values and argument values from there rather than guessing them from source code. PSCI is the preferred mechanism for reset, cpu hotplug, etc on 64-bit Arm (it abstracts the details of prodding reset controller hardware and so on away and lets the firmware deal with it.)