mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
powerpc/64s/idle: Move soft interrupt mask logic into C code
This simplifies the asm and fixes irq-off tracing over sleep instructions. Also move powersave_nap check for POWER8 into C code, and move PSSCR register value calculation for POWER9 into C. Reviewed-by: Gautham R. Shenoy <[email protected]> Signed-off-by: Nicholas Piggin <[email protected]> Signed-off-by: Michael Ellerman <[email protected]>
This commit is contained in:
parent
42bed04255
commit
2201f994a5
9 changed files with 128 additions and 89 deletions
|
|
@ -73,9 +73,8 @@ static int nap_loop(struct cpuidle_device *dev,
|
|||
struct cpuidle_driver *drv,
|
||||
int index)
|
||||
{
|
||||
ppc64_runlatch_off();
|
||||
power7_idle();
|
||||
ppc64_runlatch_on();
|
||||
power7_idle_type(PNV_THREAD_NAP);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +97,8 @@ static int fastsleep_loop(struct cpuidle_device *dev,
|
|||
new_lpcr &= ~LPCR_PECE1;
|
||||
|
||||
mtspr(SPRN_LPCR, new_lpcr);
|
||||
power7_sleep();
|
||||
|
||||
power7_idle_type(PNV_THREAD_SLEEP);
|
||||
|
||||
mtspr(SPRN_LPCR, old_lpcr);
|
||||
|
||||
|
|
@ -110,10 +110,8 @@ static int stop_loop(struct cpuidle_device *dev,
|
|||
struct cpuidle_driver *drv,
|
||||
int index)
|
||||
{
|
||||
ppc64_runlatch_off();
|
||||
power9_idle_stop(stop_psscr_table[index].val,
|
||||
power9_idle_type(stop_psscr_table[index].val,
|
||||
stop_psscr_table[index].mask);
|
||||
ppc64_runlatch_on();
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue