All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: Russell King <linux@arm.linux.org.uk>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	cdall@linaro.org, james.morse@arm.com
Cc: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu
Subject: [PATCH v3 02/25] arm64: KVM: Implement HVC_RESET_VECTORS stub hypercall
Date: Mon,  6 Mar 2017 14:24:35 +0000	[thread overview]
Message-ID: <20170306142458.8875-3-marc.zyngier@arm.com> (raw)
In-Reply-To: <20170306142458.8875-1-marc.zyngier@arm.com>

In order to restore HYP mode to its original condition, KVM currently
implements __kvm_hyp_reset(). As we're moving towards a hyp-stub
defined API, it becomes necessary to implement HVC_RESET_VECTORS.

This patch adds the HVC_RESET_VECTORS hypercall to the KVM init
code, which so far lacked any form of hypercall support.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm64/kvm/hyp-init.S | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
index 6b29d3d9e1f2..6cf98ccd10f2 100644
--- a/arch/arm64/kvm/hyp-init.S
+++ b/arch/arm64/kvm/hyp-init.S
@@ -22,6 +22,7 @@
 #include <asm/kvm_mmu.h>
 #include <asm/pgtable-hwdef.h>
 #include <asm/sysreg.h>
+#include <asm/virt.h>
 
 	.text
 	.pushsection	.hyp.idmap.text, "ax"
@@ -58,6 +59,9 @@ __invalid:
 	 * x2: HYP vectors
 	 */
 __do_hyp_init:
+	/* Check for a stub HVC call */
+	cmp	x0, #HVC_STUB_HCALL_NR
+	b.lo	__kvm_handle_stub_hvc
 
 	msr	ttbr0_el2, x0
 
@@ -119,6 +123,9 @@ __do_hyp_init:
 	eret
 ENDPROC(__kvm_hyp_init)
 
+ENTRY(__kvm_handle_stub_hvc)
+	cmp	x0, #HVC_RESET_VECTORS
+	b.ne	1f
 	/*
 	 * Reset kvm back to the hyp stub.
 	 */
@@ -133,9 +140,14 @@ ENTRY(__kvm_hyp_reset)
 	/* Install stub vectors */
 	adr_l	x0, __hyp_stub_vectors
 	msr	vbar_el2, x0
+	b	exit
 
+1:	mov	x0, #-1
+
+exit:
 	eret
 ENDPROC(__kvm_hyp_reset)
+ENDPROC(__kvm_handle_stub_hvc)
 
 	.ltorg
 
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 02/25] arm64: KVM: Implement HVC_RESET_VECTORS stub hypercall
Date: Mon,  6 Mar 2017 14:24:35 +0000	[thread overview]
Message-ID: <20170306142458.8875-3-marc.zyngier@arm.com> (raw)
In-Reply-To: <20170306142458.8875-1-marc.zyngier@arm.com>

In order to restore HYP mode to its original condition, KVM currently
implements __kvm_hyp_reset(). As we're moving towards a hyp-stub
defined API, it becomes necessary to implement HVC_RESET_VECTORS.

This patch adds the HVC_RESET_VECTORS hypercall to the KVM init
code, which so far lacked any form of hypercall support.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm64/kvm/hyp-init.S | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
index 6b29d3d9e1f2..6cf98ccd10f2 100644
--- a/arch/arm64/kvm/hyp-init.S
+++ b/arch/arm64/kvm/hyp-init.S
@@ -22,6 +22,7 @@
 #include <asm/kvm_mmu.h>
 #include <asm/pgtable-hwdef.h>
 #include <asm/sysreg.h>
+#include <asm/virt.h>
 
 	.text
 	.pushsection	.hyp.idmap.text, "ax"
@@ -58,6 +59,9 @@ __invalid:
 	 * x2: HYP vectors
 	 */
 __do_hyp_init:
+	/* Check for a stub HVC call */
+	cmp	x0, #HVC_STUB_HCALL_NR
+	b.lo	__kvm_handle_stub_hvc
 
 	msr	ttbr0_el2, x0
 
@@ -119,6 +123,9 @@ __do_hyp_init:
 	eret
 ENDPROC(__kvm_hyp_init)
 
+ENTRY(__kvm_handle_stub_hvc)
+	cmp	x0, #HVC_RESET_VECTORS
+	b.ne	1f
 	/*
 	 * Reset kvm back to the hyp stub.
 	 */
@@ -133,9 +140,14 @@ ENTRY(__kvm_hyp_reset)
 	/* Install stub vectors */
 	adr_l	x0, __hyp_stub_vectors
 	msr	vbar_el2, x0
+	b	exit
 
+1:	mov	x0, #-1
+
+exit:
 	eret
 ENDPROC(__kvm_hyp_reset)
+ENDPROC(__kvm_handle_stub_hvc)
 
 	.ltorg
 
-- 
2.11.0

  parent reply	other threads:[~2017-03-06 14:24 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-06 14:24 [PATCH v3 00/25] arm/arm64: KVM: Rework the hyp-stub API Marc Zyngier
2017-03-06 14:24 ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 01/25] arm64: hyp-stub: Implement HVC_RESET_VECTORS stub hypercall Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-13 17:53   ` James Morse
2017-03-13 17:53     ` James Morse
2017-03-21 17:04   ` Catalin Marinas
2017-03-21 17:04     ` Catalin Marinas
2017-03-21 17:25     ` James Morse
2017-03-21 17:25       ` James Morse
2017-03-21 17:37       ` Marc Zyngier
2017-03-21 17:37         ` Marc Zyngier
2017-03-21 17:41         ` James Morse
2017-03-21 17:41           ` James Morse
2017-03-21 18:36           ` Marc Zyngier
2017-03-21 18:36             ` Marc Zyngier
2017-03-21 17:26     ` Marc Zyngier
2017-03-21 17:26       ` Marc Zyngier
2017-03-06 14:24 ` Marc Zyngier [this message]
2017-03-06 14:24   ` [PATCH v3 02/25] arm64: KVM: " Marc Zyngier
2017-03-13 17:53   ` James Morse
2017-03-13 17:53     ` James Morse
2017-03-13 18:03     ` Marc Zyngier
2017-03-13 18:03       ` Marc Zyngier
2017-03-13 18:03       ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 03/25] arm64: KVM: Implement HVC_GET_VECTORS in the init code Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-13 17:54   ` James Morse
2017-03-13 17:54     ` James Morse
2017-03-06 14:24 ` [PATCH v3 04/25] arm64: KVM: Allow the main HYP code to use the init hyp stub implementation Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-13 17:59   ` James Morse
2017-03-13 17:59     ` James Morse
2017-03-06 14:24 ` [PATCH v3 05/25] arm64: KVM: Convert __cpu_reset_hyp_mode to using __hyp_reset_vectors Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-13 17:59   ` James Morse
2017-03-13 17:59     ` James Morse
2017-03-06 14:24 ` [PATCH v3 06/25] arm64: KVM: Implement HVC_SOFT_RESTART in the init code Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 07/25] ARM: hyp-stub: improve ABI Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 08/25] ARM: soft-reboot into same mode that we entered the kernel Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 09/25] ARM: KVM: Convert KVM to use HVC_GET_VECTORS Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 10/25] ARM: Update cpu_v7_reset documentation Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 11/25] ARM: hyp-stub: Use r1 for the soft-restart address Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 12/25] ARM: Expose the VA/IDMAP offset Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 13/25] ARM: hyp-stub: Implement HVC_RESET_VECTORS stub hypercall Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 14/25] ARM: KVM: " Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 15/25] ARM: KVM: Implement HVC_GET_VECTORS in the init code Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 16/25] ARM: KVM: Allow the main HYP code to use the init hyp stub implementation Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 17/25] ARM: KVM: Convert __cpu_reset_hyp_mode to using __hyp_reset_vectors Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 18/25] ARM: KVM: Implement HVC_SOFT_RESTART in the init code Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 19/25] arm/arm64: KVM: Use __hyp_reset_vectors() directly Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 20/25] arm/arm64: KVM: Remove kvm_get_idmap_start Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 21/25] arm/arm64: KVM: Use HVC_RESET_VECTORS to reinit HYP mode Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 22/25] ARM: decompressor: Remove __hyp_get_vectors usage Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 23/25] ARM: hyp-stub/KVM: Kill __hyp_get_vectors Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 24/25] arm64: " Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-06 14:24 ` [PATCH v3 25/25] arm/arm64: Add hyp-stub API documentation Marc Zyngier
2017-03-06 14:24   ` Marc Zyngier
2017-03-14 13:38 ` [PATCH v3 00/25] arm/arm64: KVM: Rework the hyp-stub API Keerthy
2017-03-14 13:38   ` Keerthy
2017-03-14 13:38   ` Keerthy
2017-03-14 13:55   ` Marc Zyngier
2017-03-14 13:55     ` Marc Zyngier
2017-03-14 14:25     ` Nishanth Menon
2017-03-14 14:25       ` Nishanth Menon
2017-03-15  2:25       ` Keerthy
2017-03-15  2:25         ` Keerthy
2017-03-14 16:05 ` Russell King - ARM Linux
2017-03-14 16:05   ` Russell King - ARM Linux
2017-03-14 16:09   ` Marc Zyngier
2017-03-14 16:09     ` Marc Zyngier
2017-03-17 11:43     ` Russell King - ARM Linux
2017-03-17 11:43       ` Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170306142458.8875-3-marc.zyngier@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=cdall@linaro.org \
    --cc=james.morse@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.