[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>
This commit is contained in:
Родитель
b5a37e96b8
Коммит
7aa6264543
|
@ -193,16 +193,22 @@ struct sparc64_tick_ops *tick_ops __read_mostly = &tick_operations;
|
|||
|
||||
static void stick_init_tick(unsigned long offset)
|
||||
{
|
||||
tick_disable_protection();
|
||||
/* Writes to the %tick and %stick register are not
|
||||
* allowed on sun4v. The Hypervisor controls that
|
||||
* bit, per-strand.
|
||||
*/
|
||||
if (tlb_type != hypervisor) {
|
||||
tick_disable_protection();
|
||||
|
||||
/* Let the user get at STICK too. */
|
||||
__asm__ __volatile__(
|
||||
" rd %%asr24, %%g2\n"
|
||||
" andn %%g2, %0, %%g2\n"
|
||||
" wr %%g2, 0, %%asr24"
|
||||
: /* no outputs */
|
||||
: "r" (TICK_PRIV_BIT)
|
||||
: "g1", "g2");
|
||||
/* Let the user get at STICK too. */
|
||||
__asm__ __volatile__(
|
||||
" rd %%asr24, %%g2\n"
|
||||
" andn %%g2, %0, %%g2\n"
|
||||
" wr %%g2, 0, %%asr24"
|
||||
: /* no outputs */
|
||||
: "r" (TICK_PRIV_BIT)
|
||||
: "g1", "g2");
|
||||
}
|
||||
|
||||
__asm__ __volatile__(
|
||||
" rd %%asr24, %%g1\n"
|
||||
|
|
Загрузка…
Ссылка в новой задаче