diff options
Diffstat (limited to 'arch/tile/include/asm/smp.h')
-rw-r--r-- | arch/tile/include/asm/smp.h | 27 |
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 */ |
25 | void init_messaging(void); | 26 | void 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 */ |
40 | void evaluate_message(int tag); | 41 | void evaluate_message(int tag); |
41 | 42 | ||
42 | /* Process an IRQ_RESCHEDULE IPI. */ | ||
43 | irqreturn_t handle_reschedule_ipi(int irq, void *token); | ||
44 | |||
45 | /* Boot a secondary cpu */ | 43 | /* Boot a secondary cpu */ |
46 | void online_secondary(void); | 44 | void 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. */ | ||
58 | static inline int cpu_x(int cpu) | ||
59 | { | ||
60 | return cpu % smp_width; | ||
61 | } | ||
62 | static inline int cpu_y(int cpu) | ||
63 | { | ||
64 | return cpu / smp_width; | ||
65 | } | ||
66 | static 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. */ | ||
142 | void ipi_init(void); | ||
143 | |||
144 | /* Function for start-cpu message to cause us to jump to. */ | ||
145 | extern unsigned long start_cpu_function_addr; | ||
146 | |||
126 | #endif /* _ASM_TILE_SMP_H */ | 147 | #endif /* _ASM_TILE_SMP_H */ |