aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/arch/sparc/kernel/process_64.c
diff options
context:
space:
mode:
authorVijay Kumar <vijay.ac.kumar@oracle.com>2017-07-21 10:23:57 -0600
committerDavid S. Miller <davem@davemloft.net>2017-08-09 22:15:10 -0700
commit8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2 (patch)
tree1a27965ab0da09dd07cfa6a7515aa21deee0984e /arch/sparc/kernel/process_64.c
parentsparc64: Add a new hypercall CPU_POKE (diff)
downloadwireguard-linux-8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2.tar.xz
wireguard-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.c7
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__(