From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: pasha.tatashin@soleen.com, jmorris@namei.org, sashal@kernel.org,
ebiederm@xmission.com, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org, corbet@lwn.net,
catalin.marinas@arm.com, will@kernel.org,
linux-arm-kernel@lists.infradead.org, maz@kernel.org,
james.morse@arm.com, vladimir.murzin@arm.com,
matthias.bgg@gmail.com, linux-mm@kvack.org, mark.rutland@arm.com,
steve.capper@arm.com, rfontana@redhat.com, tglx@linutronix.de,
selindag@gmail.com, tyhicks@linux.microsoft.com
Subject: [PATCH v12 03/17] arm64: hyp-stub: Move el1_sync into the vectors
Date: Tue, 2 Mar 2021 19:22:16 -0500 [thread overview]
Message-ID: <20210303002230.1083176-4-pasha.tatashin@soleen.com> (raw)
In-Reply-To: <20210303002230.1083176-1-pasha.tatashin@soleen.com>
From: James Morse <james.morse@arm.com>
The hyp-stub's el1_sync code doesn't do very much, this can easily fit
in the vectors.
With this, all of the hyp-stubs behaviour is contained in its vectors.
This lets kexec and hibernate copy the hyp-stub when they need its
behaviour, instead of re-implementing it.
Signed-off-by: James Morse <james.morse@arm.com>
[Fixed merging issues]
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
---
arch/arm64/kernel/hyp-stub.S | 59 ++++++++++++++++++------------------
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index ff329c5c074d..d1a73d0f74e0 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -21,6 +21,34 @@ SYM_CODE_START_LOCAL(\label)
.align 7
b \label
SYM_CODE_END(\label)
+.endm
+
+.macro hyp_stub_el1_sync
+SYM_CODE_START_LOCAL(hyp_stub_el1_sync)
+ .align 7
+ cmp x0, #HVC_SET_VECTORS
+ b.ne 2f
+ msr vbar_el2, x1
+ b 9f
+
+2: cmp x0, #HVC_SOFT_RESTART
+ b.ne 3f
+ mov x0, x2
+ mov x2, x4
+ mov x4, x1
+ mov x1, x3
+ br x4 // no return
+
+3: cmp x0, #HVC_RESET_VECTORS
+ beq 9f // Nothing to reset!
+
+ /* Someone called kvm_call_hyp() against the hyp-stub... */
+ mov_q x0, HVC_STUB_ERR
+ eret
+
+9: mov x0, xzr
+ eret
+SYM_CODE_END(hyp_stub_el1_sync)
.endm
.text
@@ -39,7 +67,7 @@ SYM_CODE_START(__hyp_stub_vectors)
invalid_vector hyp_stub_el2h_fiq_invalid // FIQ EL2h
invalid_vector hyp_stub_el2h_error_invalid // Error EL2h
- ventry el1_sync // Synchronous 64-bit EL1
+ hyp_stub_el1_sync // Synchronous 64-bit EL1
invalid_vector hyp_stub_el1_irq_invalid // IRQ 64-bit EL1
invalid_vector hyp_stub_el1_fiq_invalid // FIQ 64-bit EL1
invalid_vector hyp_stub_el1_error_invalid // Error 64-bit EL1
@@ -55,35 +83,6 @@ SYM_CODE_END(__hyp_stub_vectors)
# Check the __hyp_stub_vectors didn't overflow
.org . - (__hyp_stub_vectors_end - __hyp_stub_vectors) + SZ_2K
-
-SYM_CODE_START_LOCAL(el1_sync)
- cmp x0, #HVC_SET_VECTORS
- b.ne 1f
- msr vbar_el2, x1
- b 9f
-
-1: cmp x0, #HVC_VHE_RESTART
- b.eq mutate_to_vhe
-
-2: cmp x0, #HVC_SOFT_RESTART
- b.ne 3f
- mov x0, x2
- mov x2, x4
- mov x4, x1
- mov x1, x3
- br x4 // no return
-
-3: cmp x0, #HVC_RESET_VECTORS
- beq 9f // Nothing to reset!
-
- /* Someone called kvm_call_hyp() against the hyp-stub... */
- mov_q x0, HVC_STUB_ERR
- eret
-
-9: mov x0, xzr
- eret
-SYM_CODE_END(el1_sync)
-
// nVHE? No way! Give me the real thing!
SYM_CODE_START_LOCAL(mutate_to_vhe)
// Sanity check: MMU *must* be off
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: pasha.tatashin@soleen.com, jmorris@namei.org, sashal@kernel.org,
ebiederm@xmission.com, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org, corbet@lwn.net,
catalin.marinas@arm.com, will@kernel.org,
linux-arm-kernel@lists.infradead.org, maz@kernel.org,
james.morse@arm.com, vladimir.murzin@arm.com,
matthias.bgg@gmail.com, linux-mm@kvack.org, mark.rutland@arm.com,
steve.capper@arm.com, rfontana@redhat.com, tglx@linutronix.de,
selindag@gmail.com, tyhicks@linux.microsoft.com
Subject: [PATCH v12 03/17] arm64: hyp-stub: Move el1_sync into the vectors
Date: Tue, 2 Mar 2021 19:22:16 -0500 [thread overview]
Message-ID: <20210303002230.1083176-4-pasha.tatashin@soleen.com> (raw)
In-Reply-To: <20210303002230.1083176-1-pasha.tatashin@soleen.com>
From: James Morse <james.morse@arm.com>
The hyp-stub's el1_sync code doesn't do very much, this can easily fit
in the vectors.
With this, all of the hyp-stubs behaviour is contained in its vectors.
This lets kexec and hibernate copy the hyp-stub when they need its
behaviour, instead of re-implementing it.
Signed-off-by: James Morse <james.morse@arm.com>
[Fixed merging issues]
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
---
arch/arm64/kernel/hyp-stub.S | 59 ++++++++++++++++++------------------
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index ff329c5c074d..d1a73d0f74e0 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -21,6 +21,34 @@ SYM_CODE_START_LOCAL(\label)
.align 7
b \label
SYM_CODE_END(\label)
+.endm
+
+.macro hyp_stub_el1_sync
+SYM_CODE_START_LOCAL(hyp_stub_el1_sync)
+ .align 7
+ cmp x0, #HVC_SET_VECTORS
+ b.ne 2f
+ msr vbar_el2, x1
+ b 9f
+
+2: cmp x0, #HVC_SOFT_RESTART
+ b.ne 3f
+ mov x0, x2
+ mov x2, x4
+ mov x4, x1
+ mov x1, x3
+ br x4 // no return
+
+3: cmp x0, #HVC_RESET_VECTORS
+ beq 9f // Nothing to reset!
+
+ /* Someone called kvm_call_hyp() against the hyp-stub... */
+ mov_q x0, HVC_STUB_ERR
+ eret
+
+9: mov x0, xzr
+ eret
+SYM_CODE_END(hyp_stub_el1_sync)
.endm
.text
@@ -39,7 +67,7 @@ SYM_CODE_START(__hyp_stub_vectors)
invalid_vector hyp_stub_el2h_fiq_invalid // FIQ EL2h
invalid_vector hyp_stub_el2h_error_invalid // Error EL2h
- ventry el1_sync // Synchronous 64-bit EL1
+ hyp_stub_el1_sync // Synchronous 64-bit EL1
invalid_vector hyp_stub_el1_irq_invalid // IRQ 64-bit EL1
invalid_vector hyp_stub_el1_fiq_invalid // FIQ 64-bit EL1
invalid_vector hyp_stub_el1_error_invalid // Error 64-bit EL1
@@ -55,35 +83,6 @@ SYM_CODE_END(__hyp_stub_vectors)
# Check the __hyp_stub_vectors didn't overflow
.org . - (__hyp_stub_vectors_end - __hyp_stub_vectors) + SZ_2K
-
-SYM_CODE_START_LOCAL(el1_sync)
- cmp x0, #HVC_SET_VECTORS
- b.ne 1f
- msr vbar_el2, x1
- b 9f
-
-1: cmp x0, #HVC_VHE_RESTART
- b.eq mutate_to_vhe
-
-2: cmp x0, #HVC_SOFT_RESTART
- b.ne 3f
- mov x0, x2
- mov x2, x4
- mov x4, x1
- mov x1, x3
- br x4 // no return
-
-3: cmp x0, #HVC_RESET_VECTORS
- beq 9f // Nothing to reset!
-
- /* Someone called kvm_call_hyp() against the hyp-stub... */
- mov_q x0, HVC_STUB_ERR
- eret
-
-9: mov x0, xzr
- eret
-SYM_CODE_END(el1_sync)
-
// nVHE? No way! Give me the real thing!
SYM_CODE_START_LOCAL(mutate_to_vhe)
// Sanity check: MMU *must* be off
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: pasha.tatashin@soleen.com, jmorris@namei.org, sashal@kernel.org,
ebiederm@xmission.com, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org, corbet@lwn.net,
catalin.marinas@arm.com, will@kernel.org,
linux-arm-kernel@lists.infradead.org, maz@kernel.org,
james.morse@arm.com, vladimir.murzin@arm.com,
matthias.bgg@gmail.com, linux-mm@kvack.org, mark.rutland@arm.com,
steve.capper@arm.com, rfontana@redhat.com, tglx@linutronix.de,
selindag@gmail.com, tyhicks@linux.microsoft.com
Subject: [PATCH v12 03/17] arm64: hyp-stub: Move el1_sync into the vectors
Date: Tue, 2 Mar 2021 19:22:16 -0500 [thread overview]
Message-ID: <20210303002230.1083176-4-pasha.tatashin@soleen.com> (raw)
In-Reply-To: <20210303002230.1083176-1-pasha.tatashin@soleen.com>
From: James Morse <james.morse@arm.com>
The hyp-stub's el1_sync code doesn't do very much, this can easily fit
in the vectors.
With this, all of the hyp-stubs behaviour is contained in its vectors.
This lets kexec and hibernate copy the hyp-stub when they need its
behaviour, instead of re-implementing it.
Signed-off-by: James Morse <james.morse@arm.com>
[Fixed merging issues]
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
---
arch/arm64/kernel/hyp-stub.S | 59 ++++++++++++++++++------------------
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index ff329c5c074d..d1a73d0f74e0 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -21,6 +21,34 @@ SYM_CODE_START_LOCAL(\label)
.align 7
b \label
SYM_CODE_END(\label)
+.endm
+
+.macro hyp_stub_el1_sync
+SYM_CODE_START_LOCAL(hyp_stub_el1_sync)
+ .align 7
+ cmp x0, #HVC_SET_VECTORS
+ b.ne 2f
+ msr vbar_el2, x1
+ b 9f
+
+2: cmp x0, #HVC_SOFT_RESTART
+ b.ne 3f
+ mov x0, x2
+ mov x2, x4
+ mov x4, x1
+ mov x1, x3
+ br x4 // no return
+
+3: cmp x0, #HVC_RESET_VECTORS
+ beq 9f // Nothing to reset!
+
+ /* Someone called kvm_call_hyp() against the hyp-stub... */
+ mov_q x0, HVC_STUB_ERR
+ eret
+
+9: mov x0, xzr
+ eret
+SYM_CODE_END(hyp_stub_el1_sync)
.endm
.text
@@ -39,7 +67,7 @@ SYM_CODE_START(__hyp_stub_vectors)
invalid_vector hyp_stub_el2h_fiq_invalid // FIQ EL2h
invalid_vector hyp_stub_el2h_error_invalid // Error EL2h
- ventry el1_sync // Synchronous 64-bit EL1
+ hyp_stub_el1_sync // Synchronous 64-bit EL1
invalid_vector hyp_stub_el1_irq_invalid // IRQ 64-bit EL1
invalid_vector hyp_stub_el1_fiq_invalid // FIQ 64-bit EL1
invalid_vector hyp_stub_el1_error_invalid // Error 64-bit EL1
@@ -55,35 +83,6 @@ SYM_CODE_END(__hyp_stub_vectors)
# Check the __hyp_stub_vectors didn't overflow
.org . - (__hyp_stub_vectors_end - __hyp_stub_vectors) + SZ_2K
-
-SYM_CODE_START_LOCAL(el1_sync)
- cmp x0, #HVC_SET_VECTORS
- b.ne 1f
- msr vbar_el2, x1
- b 9f
-
-1: cmp x0, #HVC_VHE_RESTART
- b.eq mutate_to_vhe
-
-2: cmp x0, #HVC_SOFT_RESTART
- b.ne 3f
- mov x0, x2
- mov x2, x4
- mov x4, x1
- mov x1, x3
- br x4 // no return
-
-3: cmp x0, #HVC_RESET_VECTORS
- beq 9f // Nothing to reset!
-
- /* Someone called kvm_call_hyp() against the hyp-stub... */
- mov_q x0, HVC_STUB_ERR
- eret
-
-9: mov x0, xzr
- eret
-SYM_CODE_END(el1_sync)
-
// nVHE? No way! Give me the real thing!
SYM_CODE_START_LOCAL(mutate_to_vhe)
// Sanity check: MMU *must* be off
--
2.25.1
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2021-03-03 11:03 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-03 0:22 [PATCH v12 00/17] arm64: MMU enabled kexec relocation Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 01/17] arm64: hyp-stub: Check the size of the HYP stub's vectors Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 02/17] arm64: hyp-stub: Move invalid vector entries into the vectors Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin [this message]
2021-03-03 0:22 ` [PATCH v12 03/17] arm64: hyp-stub: Move el1_sync " Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 04/17] arm64: kernel: add helper for booted at EL2 and not VHE Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 05/17] arm64: trans_pgd: hibernate: Add trans_pgd_copy_el2_vectors Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 06/17] arm64: hibernate: abstract ttrb0 setup function Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 07/17] arm64: kexec: flush image and lists during kexec load time Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 08/17] arm64: kexec: skip relocation code for inplace kexec Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 09/17] arm64: kexec: Use dcache ops macros instead of open-coding Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 10/17] arm64: kexec: pass kimage as the only argument to relocation function Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 11/17] arm64: kexec: kexec may require EL2 vectors Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 12/17] arm64: kexec: relocate in EL1 mode Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 13/17] arm64: kexec: use ld script for relocation function Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 14/17] arm64: kexec: install a copy of the linear-map Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 15/17] arm64: kexec: keep MMU enabled during kexec relocation Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 16/17] arm64: kexec: remove the pre-kexec PoC maintenance Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` [PATCH v12 17/17] arm64: kexec: Remove cpu-reset.h Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-03 0:22 ` Pavel Tatashin
2021-03-22 1:36 ` [PATCH v12 00/17] arm64: MMU enabled kexec relocation Pingfan Liu
2021-03-22 1:36 ` Pingfan Liu
2021-03-22 1:36 ` Pingfan Liu
2021-03-22 1:36 ` Pingfan Liu
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=20210303002230.1083176-4-pasha.tatashin@soleen.com \
--to=pasha.tatashin@soleen.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=ebiederm@xmission.com \
--cc=james.morse@arm.com \
--cc=jmorris@namei.org \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=maz@kernel.org \
--cc=rfontana@redhat.com \
--cc=sashal@kernel.org \
--cc=selindag@gmail.com \
--cc=steve.capper@arm.com \
--cc=tglx@linutronix.de \
--cc=tyhicks@linux.microsoft.com \
--cc=vladimir.murzin@arm.com \
--cc=will@kernel.org \
/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.