summaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/stacktrace/common.h
diff options
context:
space:
mode:
authorKalesh Singh <kaleshsingh@google.com>2022-07-26 09:37:43 +0200
committerMarc Zyngier <maz@kernel.org>2022-07-26 11:49:39 +0200
commitdb129d486ebdf4e3168282236f9d9008b42cac7e (patch)
treea192d8042d29349f6b0f47a3003ecd8470e54e2f /arch/arm64/include/asm/stacktrace/common.h
parentKVM: arm64: Prepare non-protected nVHE hypervisor stacktrace (diff)
downloadlinux-db129d486ebdf4e3168282236f9d9008b42cac7e.tar.xz
linux-db129d486ebdf4e3168282236f9d9008b42cac7e.zip
KVM: arm64: Implement non-protected nVHE hyp stack unwinder
Implements the common framework necessary for unwind() to work for non-protected nVHE mode: - on_accessible_stack() - on_overflow_stack() - unwind_next() Non-protected nVHE unwind() is used to unwind and dump the hypervisor stacktrace by the host in EL1 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Reviewed-by: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20220726073750.3219117-11-kaleshsingh@google.com
Diffstat (limited to 'arch/arm64/include/asm/stacktrace/common.h')
-rw-r--r--arch/arm64/include/asm/stacktrace/common.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/stacktrace/common.h b/arch/arm64/include/asm/stacktrace/common.h
index 45474b383630..3ebb69ea374a 100644
--- a/arch/arm64/include/asm/stacktrace/common.h
+++ b/arch/arm64/include/asm/stacktrace/common.h
@@ -34,6 +34,7 @@ enum stack_type {
STACK_TYPE_OVERFLOW,
STACK_TYPE_SDEI_NORMAL,
STACK_TYPE_SDEI_CRITICAL,
+ STACK_TYPE_HYP,
__NR_STACK_TYPES
};
@@ -186,6 +187,7 @@ static inline int unwind_next_common(struct unwind_state *state,
*
* TASK -> IRQ -> OVERFLOW -> SDEI_NORMAL
* TASK -> SDEI_NORMAL -> SDEI_CRITICAL -> OVERFLOW
+ * HYP -> OVERFLOW
*
* ... but the nesting itself is strict. Once we transition from one
* stack to another, it's never valid to unwind back to that first