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 */ |
