aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/include/asm/smp.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/tile/include/asm/smp.h')
-rw-r--r--arch/tile/include/asm/smp.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/arch/tile/include/asm/smp.h b/arch/tile/include/asm/smp.h
index da24858a7392..532124ae4b12 100644
--- a/arch/tile/include/asm/smp.h
+++ b/arch/tile/include/asm/smp.h
@@ -20,6 +20,7 @@
20#include <asm/processor.h> 20#include <asm/processor.h>
21#include <linux/cpumask.h> 21#include <linux/cpumask.h>
22#include <linux/irqreturn.h> 22#include <linux/irqreturn.h>
23#include <hv/hypervisor.h>
23 24
24/* Set up this tile to support receiving hypervisor messages */ 25/* Set up this tile to support receiving hypervisor messages */
25void init_messaging(void); 26void init_messaging(void);
@@ -39,9 +40,6 @@ void send_IPI_single(int dest, int tag);
39/* Process an IPI message */ 40/* Process an IPI message */
40void evaluate_message(int tag); 41void evaluate_message(int tag);
41 42
42/* Process an IRQ_RESCHEDULE IPI. */
43irqreturn_t handle_reschedule_ipi(int irq, void *token);
44
45/* Boot a secondary cpu */ 43/* Boot a secondary cpu */
46void online_secondary(void); 44void online_secondary(void);
47 45
@@ -56,6 +54,20 @@ extern HV_Topology smp_topology;
56#define smp_height (smp_topology.height) 54#define smp_height (smp_topology.height)
57#define smp_width (smp_topology.width) 55#define smp_width (smp_topology.width)
58 56
57/* Convenience functions for converting cpu <-> coords. */
58static inline int cpu_x(int cpu)
59{
60 return cpu % smp_width;
61}
62static inline int cpu_y(int cpu)
63{
64 return cpu / smp_width;
65}
66static inline int xy_to_cpu(int x, int y)
67{
68 return y * smp_width + x;
69}
70
59/* Hypervisor message tags sent via the tile send_IPI*() routines. */ 71/* Hypervisor message tags sent via the tile send_IPI*() routines. */
60#define MSG_TAG_START_CPU 1 72#define MSG_TAG_START_CPU 1
61#define MSG_TAG_STOP_CPU 2 73#define MSG_TAG_STOP_CPU 2
@@ -85,6 +97,9 @@ void print_disabled_cpus(void);
85#define smp_master_cpu 0 97#define smp_master_cpu 0
86#define smp_height 1 98#define smp_height 1
87#define smp_width 1 99#define smp_width 1
100#define cpu_x(cpu) 0
101#define cpu_y(cpu) 0
102#define xy_to_cpu(x, y) 0
88 103
89#endif /* !CONFIG_SMP */ 104#endif /* !CONFIG_SMP */
90 105
@@ -123,4 +138,10 @@ static inline int __cpulist_parse_crop(const char *buf, struct cpumask *dstp,
123 return bitmap_parselist_crop(buf, cpumask_bits(dstp), nbits); 138 return bitmap_parselist_crop(buf, cpumask_bits(dstp), nbits);
124} 139}
125 140
141/* Initialize the IPI subsystem. */
142void ipi_init(void);
143
144/* Function for start-cpu message to cause us to jump to. */
145extern unsigned long start_cpu_function_addr;
146
126#endif /* _ASM_TILE_SMP_H */ 147#endif /* _ASM_TILE_SMP_H */