summaryrefslogtreecommitdiff
path: root/arch/sparc/include/asm/hypervisor.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-08-09 22:15:31 -0700
committerDavid S. Miller <davem@davemloft.net>2017-08-09 22:15:31 -0700
commit5389e239eba5ef0e1cad596dba4860890a3e6965 (patch)
tree1a27965ab0da09dd07cfa6a7515aa21deee0984e /arch/sparc/include/asm/hypervisor.h
parent99274b818a5dc7c3226866970a0cec0d40ed5f0f (diff)
parent8536e02e912a46aa1c100bb1f5ccdca42e4e1ad2 (diff)
Merge branch 'sparc64-Use-low-latency-path-to-resume-idle-cpu'
Vijay Kumar says: ==================== sparc64: Use low latency path to resume idle cpu CPU_POKE is a low latency path to resume the target cpu if suspended using CPU_YIELD. Use CPU_POKE to resume cpu if supported by hypervisor. Hackbench results (lower is better): Number of Process: w/o fix with fix 1 0.012 0.010 10 0.021 0.019 100 0.151 0.148 Changelog: v2: - Fixed comments and spacing (2/2) ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm/hypervisor.h')
-rw-r--r--arch/sparc/include/asm/hypervisor.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/sparc/include/asm/hypervisor.h b/arch/sparc/include/asm/hypervisor.h
index 73cb8978df58..3dc9215d0357 100644
--- a/arch/sparc/include/asm/hypervisor.h
+++ b/arch/sparc/include/asm/hypervisor.h
@@ -298,6 +298,24 @@ unsigned long sun4v_cpu_stop(unsigned long cpuid);
unsigned long sun4v_cpu_yield(void);
#endif
+/* cpu_poke()
+ * TRAP: HV_FAST_TRAP
+ * FUNCTION: HV_FAST_CPU_POKE
+ * RET0: status
+ * ERRORS: ENOCPU cpuid refers to a CPU that does not exist
+ * EINVAL cpuid is current CPU
+ *
+ * Poke CPU cpuid. If the target CPU is currently suspended having
+ * invoked the cpu-yield service, that vCPU will be resumed.
+ * Poke interrupts may only be sent to valid, non-local CPUs.
+ * It is not legal to poke the current vCPU.
+ */
+#define HV_FAST_CPU_POKE 0x13
+
+#ifndef __ASSEMBLY__
+unsigned long sun4v_cpu_poke(unsigned long cpuid);
+#endif
+
/* cpu_qconf()
* TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_CPU_QCONF