diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-12 02:14:59 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:27 -0500 |
commit | 7aa6264543f19ceea9b5f386242917296d63be05 (patch) | |
tree | ca0639f3777fa5a7b553097535fcf505647f6701 /arch/sparc64/kernel/time.c | |
parent | b5a37e96b8dc067b979e44c4e109c9bc49c2f4d8 (diff) |
[SPARC64]: Do not try to write to %tick or %stick on SUN4V.
Writes by privileged code are disallowed. The hypervisor manages
the non-privileged bit.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/time.c')
-rw-r--r-- | arch/sparc64/kernel/time.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index 24681b9b4426..7041146f86f0 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c | |||
@@ -193,16 +193,22 @@ struct sparc64_tick_ops *tick_ops __read_mostly = &tick_operations; | |||
193 | 193 | ||
194 | static void stick_init_tick(unsigned long offset) | 194 | static void stick_init_tick(unsigned long offset) |
195 | { | 195 | { |
196 | tick_disable_protection(); | 196 | /* Writes to the %tick and %stick register are not |
197 | 197 | * allowed on sun4v. The Hypervisor controls that | |
198 | /* Let the user get at STICK too. */ | 198 | * bit, per-strand. |
199 | __asm__ __volatile__( | 199 | */ |
200 | " rd %%asr24, %%g2\n" | 200 | if (tlb_type != hypervisor) { |
201 | " andn %%g2, %0, %%g2\n" | 201 | tick_disable_protection(); |
202 | " wr %%g2, 0, %%asr24" | 202 | |
203 | : /* no outputs */ | 203 | /* Let the user get at STICK too. */ |
204 | : "r" (TICK_PRIV_BIT) | 204 | __asm__ __volatile__( |
205 | : "g1", "g2"); | 205 | " rd %%asr24, %%g2\n" |
206 | " andn %%g2, %0, %%g2\n" | ||
207 | " wr %%g2, 0, %%asr24" | ||
208 | : /* no outputs */ | ||
209 | : "r" (TICK_PRIV_BIT) | ||
210 | : "g1", "g2"); | ||
211 | } | ||
206 | 212 | ||
207 | __asm__ __volatile__( | 213 | __asm__ __volatile__( |
208 | " rd %%asr24, %%g1\n" | 214 | " rd %%asr24, %%g1\n" |