diff options
author | Vijay Kumar <vijay.ac.kumar@oracle.com> | 2017-07-21 10:23:57 -0600 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-09 22:15:10 -0700 |
commit | 8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2 (patch) | |
tree | 1a27965ab0da09dd07cfa6a7515aa21deee0984e /arch/sparc/kernel/process_64.c | |
parent | 28d43de741cc67a9d8748de7dcb6c5f54cfa669c (diff) | |
download | linux-8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2.tar.gz linux-8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2.tar.bz2 linux-8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2.zip |
sparc64: Use CPU_POKE to resume idle cpu
Use CPU_POKE hypervisor call to resume idle cpu if supported.
Signed-off-by: Vijay Kumar <vijay.ac.kumar@oracle.com>
Reviewed-by: Anthony Yznaga <anthony.yznaga@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/process_64.c')
-rw-r--r-- | arch/sparc/kernel/process_64.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index b96104da5bd6..44e5da405f96 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -77,8 +77,13 @@ void arch_cpu_idle(void) : "=&r" (pstate) : "i" (PSTATE_IE)); - if (!need_resched() && !cpu_is_offline(smp_processor_id())) + if (!need_resched() && !cpu_is_offline(smp_processor_id())) { sun4v_cpu_yield(); + /* If resumed by cpu_poke then we need to explicitly + * call scheduler_ipi(). + */ + scheduler_poke(); + } /* Re-enable interrupts. */ __asm__ __volatile__( |