angler-fishThe Vulnerability History Project

powerpc/64s: Reimplement book3s idle code in C

      Reimplement Book3S idle code in C, moving POWER7/8/9 implementation
speific HV idle code to the powernv platform code.

Book3S assembly stubs are kept in common code and used only to save
the stack frame and non-volatile GPRs before executing architected
idle instructions, and restoring the stack and reloading GPRs then
returning to C after waking from idle.

The complex logic dealing with threads and subcores, locking, SPRs,
HMIs, timebase resync, etc., is all done in C which makes it more
maintainable.

This is not a strict translation to C code, there are some
significant differences:

- Idle wakeup no longer uses the ->cpu_restore call to reinit SPRs,
  but saves and restores them itself.

- The optimisation where EC=ESL=0 idle modes did not have to save GPRs
  or change MSR is restored, because it's now simple to do. ESL=1
  sleeps that do not lose GPRs can use this optimization too.

- KVM secondary entry and cede is now more of a ca
    
commit 10d91611f426d4bafd2a83d966c36da811b2f7ad
+3 -16
+22 -18
+6 -3
+4 -4
-18
+14 -9
+146 -914
+2 -2
+72 -46
+689 -173
+1 -1
+10 -14
expand_less