Skip to content

Commit

Permalink
ARM: hyp-stub: Implement HVC_RESET_VECTORS stub hypercall
Browse files Browse the repository at this point in the history
Let's define a new stub hypercall that resets the HYP configuration
to its default: hyp-stub vectors, and MMU disabled.

Of course, for the hyp-stub itself, this is a trivial no-op.
Hypervisors will have a bit more work to do.

Tested-by: Keerthy <j-keerthy@ti.com>
Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <cdall@linaro.org>
  • Loading branch information
Marc Zyngier authored and Christoffer Dall committed Apr 9, 2017
1 parent 4c70cf0 commit 7d1bf4e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
3 changes: 3 additions & 0 deletions arch/arm/include/asm/virt.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ extern char __hyp_text_end[];
#define HVC_GET_VECTORS 0
#define HVC_SET_VECTORS 1
#define HVC_SOFT_RESTART 2
#define HVC_RESET_VECTORS 3

#define HVC_STUB_HCALL_NR 4

#endif /* __ASSEMBLY__ */

Expand Down
11 changes: 10 additions & 1 deletion arch/arm/kernel/hyp-stub.S
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,10 @@ __hyp_stub_do_trap:
bne 1f
bx r1

1: ldr r0, =HVC_STUB_ERR
1: teq r0, #HVC_RESET_VECTORS
beq __hyp_stub_exit

ldr r0, =HVC_STUB_ERR

__hyp_stub_exit:
__ERET
Expand Down Expand Up @@ -264,6 +267,12 @@ ENTRY(__hyp_soft_restart)
ret lr
ENDPROC(__hyp_soft_restart)

ENTRY(__hyp_reset_vectors)
mov r0, #HVC_RESET_VECTORS
__HVC(0)
ret lr
ENDPROC(__hyp_reset_vectors)

#ifndef ZIMAGE
.align 2
.L__boot_cpu_mode_offset:
Expand Down

0 comments on commit 7d1bf4e

Please sign in to comment.