From: Oliver Upton <oliver.upton@linux.dev>
To: Kalesh Singh <kaleshsingh@google.com>
Cc: wangkefeng.wang@huawei.com, catalin.marinas@arm.com,
elver@google.com, vincenzo.frascino@arm.com, will@kernel.org,
android-mm@google.com, maz@kernel.org,
kvmarm@lists.cs.columbia.edu, madvenka@linux.microsoft.com,
kernel-team@android.com, drjones@redhat.com, ast@kernel.org,
broonie@kernel.org, linux-arm-kernel@lists.infradead.org,
andreyknvl@gmail.com, linux-kernel@vger.kernel.org,
mhiramat@kernel.org
Subject: Re: [PATCH v5 12/17] KVM: arm64: Save protected-nVHE (pKVM) hyp stacktrace
Date: Fri, 22 Jul 2022 15:33:39 +0000 [thread overview]
Message-ID: <YtrDU9TRjNWCTPVg@google.com> (raw)
In-Reply-To: <20220721055728.718573-13-kaleshsingh@google.com>
Hi Kalesh,
On Wed, Jul 20, 2022 at 10:57:23PM -0700, Kalesh Singh wrote:
> In protected nVHE mode, the host cannot access private owned hypervisor
> memory. Also the hypervisor aims to remains simple to reduce the attack
> surface and does not provide any printk support.
>
> For the above reasons, the approach taken to provide hypervisor stacktraces
> in protected mode is:
> 1) Unwind and save the hyp stack addresses in EL2 to a shared buffer
> with the host (done in this patch).
> 2) Delegate the dumping and symbolization of the addresses to the
> host in EL1 (later patch in the series).
>
> On hyp_panic(), the hypervisor prepares the stacktrace before returning to
> the host.
>
> Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> ---
Tried reworking this a bit and here is what I arrived at, WDYT?
Untested, of course :)
--
Thanks,
Oliver
diff --git a/arch/arm64/include/asm/stacktrace/nvhe.h b/arch/arm64/include/asm/stacktrace/nvhe.h
index 3078501f8e22..05d7e03e0a8c 100644
--- a/arch/arm64/include/asm/stacktrace/nvhe.h
+++ b/arch/arm64/include/asm/stacktrace/nvhe.h
@@ -21,6 +21,23 @@
#include <asm/stacktrace/common.h>
+/*
+ * kvm_nvhe_unwind_init - Start an unwind from the given nVHE HYP fp and pc
+ *
+ * @state : unwind_state to initialize
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ */
+static inline void kvm_nvhe_unwind_init(struct unwind_state *state,
+ unsigned long fp,
+ unsigned long pc)
+{
+ unwind_init_common(state, NULL);
+
+ state->fp = fp;
+ state->pc = pc;
+}
+
static inline bool on_accessible_stack(const struct task_struct *tsk,
unsigned long sp, unsigned long size,
struct stack_info *info)
diff --git a/arch/arm64/kvm/hyp/nvhe/stacktrace.c b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
index 96c8b93320eb..644276fb02af 100644
--- a/arch/arm64/kvm/hyp/nvhe/stacktrace.c
+++ b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
@@ -11,4 +11,69 @@ DEFINE_PER_CPU(unsigned long [OVERFLOW_STACK_SIZE/sizeof(long)], overflow_stack)
#ifdef CONFIG_PROTECTED_NVHE_STACKTRACE
DEFINE_PER_CPU(unsigned long [NVHE_STACKTRACE_SIZE/sizeof(long)], pkvm_stacktrace);
+
+/*
+ * pkvm_save_backtrace_entry - Saves a protected nVHE HYP stacktrace entry
+ *
+ * @arg : the index of the entry in the stacktrace buffer
+ * @where : the program counter corresponding to the stack frame
+ *
+ * Save the return address of a stack frame to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static bool pkvm_save_backtrace_entry(void *arg, unsigned long where)
+{
+ unsigned long *stacktrace = this_cpu_ptr(pkvm_stacktrace);
+ int *idx = (int *)arg;
+
+ /*
+ * Need 2 free slots: 1 for current entry and 1 for the
+ * delimiter.
+ */
+ if (*idx > ARRAY_SIZE(pkvm_stacktrace) - 2)
+ return false;
+
+ stacktrace[*idx] = where;
+ stacktrace[++*idx] = 0UL;
+
+ return true;
+}
+
+/*
+ * pkvm_save_backtrace - Saves the protected nVHE HYP stacktrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Save the unwinded stack addresses to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+ struct unwind_state state;
+ int idx = 0;
+
+ kvm_nvhe_unwind_init(&state, fp, pc);
+
+ unwind(&state, pkvm_save_backtrace_entry, &idx);
+}
+#else /* !CONFIG_PROTECTED_NVHE_STACKTRACE */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+}
#endif /* CONFIG_PROTECTED_NVHE_STACKTRACE */
+
+/*
+ * kvm_nvhe_prepare_backtrace - prepare to dump the nVHE backtrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Saves the information needed by the host to dump the nVHE hypervisor
+ * backtrace.
+ */
+void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc)
+{
+ if (is_protected_kvm_enabled())
+ pkvm_save_backtrace(fp, pc);
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
index 6db801db8f27..64e13445d0d9 100644
--- a/arch/arm64/kvm/hyp/nvhe/switch.c
+++ b/arch/arm64/kvm/hyp/nvhe/switch.c
@@ -34,6 +34,8 @@ DEFINE_PER_CPU(struct kvm_host_data, kvm_host_data);
DEFINE_PER_CPU(struct kvm_cpu_context, kvm_hyp_ctxt);
DEFINE_PER_CPU(unsigned long, kvm_hyp_vector);
+extern void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc);
+
static void __activate_traps(struct kvm_vcpu *vcpu)
{
u64 val;
@@ -375,6 +377,10 @@ asmlinkage void __noreturn hyp_panic(void)
__sysreg_restore_state_nvhe(host_ctxt);
}
+ /* Prepare to dump kvm nvhe hyp stacktrace */
+ kvm_nvhe_prepare_backtrace((unsigned long)__builtin_frame_address(0),
+ _THIS_IP_);
+
__hyp_do_panic(host_ctxt, spsr, elr, par);
unreachable();
}
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Oliver Upton <oliver.upton@linux.dev>
To: Kalesh Singh <kaleshsingh@google.com>
Cc: maz@kernel.org, mark.rutland@arm.com, broonie@kernel.org,
madvenka@linux.microsoft.com, tabba@google.com, will@kernel.org,
qperret@google.com, james.morse@arm.com,
alexandru.elisei@arm.com, suzuki.poulose@arm.com,
catalin.marinas@arm.com, andreyknvl@gmail.com,
vincenzo.frascino@arm.com, mhiramat@kernel.org, ast@kernel.org,
drjones@redhat.com, wangkefeng.wang@huawei.com, elver@google.com,
keirf@google.com, yuzenghui@huawei.com, ardb@kernel.org,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
android-mm@google.com, kernel-team@android.com
Subject: Re: [PATCH v5 12/17] KVM: arm64: Save protected-nVHE (pKVM) hyp stacktrace
Date: Fri, 22 Jul 2022 15:33:39 +0000 [thread overview]
Message-ID: <YtrDU9TRjNWCTPVg@google.com> (raw)
In-Reply-To: <20220721055728.718573-13-kaleshsingh@google.com>
Hi Kalesh,
On Wed, Jul 20, 2022 at 10:57:23PM -0700, Kalesh Singh wrote:
> In protected nVHE mode, the host cannot access private owned hypervisor
> memory. Also the hypervisor aims to remains simple to reduce the attack
> surface and does not provide any printk support.
>
> For the above reasons, the approach taken to provide hypervisor stacktraces
> in protected mode is:
> 1) Unwind and save the hyp stack addresses in EL2 to a shared buffer
> with the host (done in this patch).
> 2) Delegate the dumping and symbolization of the addresses to the
> host in EL1 (later patch in the series).
>
> On hyp_panic(), the hypervisor prepares the stacktrace before returning to
> the host.
>
> Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> ---
Tried reworking this a bit and here is what I arrived at, WDYT?
Untested, of course :)
--
Thanks,
Oliver
diff --git a/arch/arm64/include/asm/stacktrace/nvhe.h b/arch/arm64/include/asm/stacktrace/nvhe.h
index 3078501f8e22..05d7e03e0a8c 100644
--- a/arch/arm64/include/asm/stacktrace/nvhe.h
+++ b/arch/arm64/include/asm/stacktrace/nvhe.h
@@ -21,6 +21,23 @@
#include <asm/stacktrace/common.h>
+/*
+ * kvm_nvhe_unwind_init - Start an unwind from the given nVHE HYP fp and pc
+ *
+ * @state : unwind_state to initialize
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ */
+static inline void kvm_nvhe_unwind_init(struct unwind_state *state,
+ unsigned long fp,
+ unsigned long pc)
+{
+ unwind_init_common(state, NULL);
+
+ state->fp = fp;
+ state->pc = pc;
+}
+
static inline bool on_accessible_stack(const struct task_struct *tsk,
unsigned long sp, unsigned long size,
struct stack_info *info)
diff --git a/arch/arm64/kvm/hyp/nvhe/stacktrace.c b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
index 96c8b93320eb..644276fb02af 100644
--- a/arch/arm64/kvm/hyp/nvhe/stacktrace.c
+++ b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
@@ -11,4 +11,69 @@ DEFINE_PER_CPU(unsigned long [OVERFLOW_STACK_SIZE/sizeof(long)], overflow_stack)
#ifdef CONFIG_PROTECTED_NVHE_STACKTRACE
DEFINE_PER_CPU(unsigned long [NVHE_STACKTRACE_SIZE/sizeof(long)], pkvm_stacktrace);
+
+/*
+ * pkvm_save_backtrace_entry - Saves a protected nVHE HYP stacktrace entry
+ *
+ * @arg : the index of the entry in the stacktrace buffer
+ * @where : the program counter corresponding to the stack frame
+ *
+ * Save the return address of a stack frame to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static bool pkvm_save_backtrace_entry(void *arg, unsigned long where)
+{
+ unsigned long *stacktrace = this_cpu_ptr(pkvm_stacktrace);
+ int *idx = (int *)arg;
+
+ /*
+ * Need 2 free slots: 1 for current entry and 1 for the
+ * delimiter.
+ */
+ if (*idx > ARRAY_SIZE(pkvm_stacktrace) - 2)
+ return false;
+
+ stacktrace[*idx] = where;
+ stacktrace[++*idx] = 0UL;
+
+ return true;
+}
+
+/*
+ * pkvm_save_backtrace - Saves the protected nVHE HYP stacktrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Save the unwinded stack addresses to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+ struct unwind_state state;
+ int idx = 0;
+
+ kvm_nvhe_unwind_init(&state, fp, pc);
+
+ unwind(&state, pkvm_save_backtrace_entry, &idx);
+}
+#else /* !CONFIG_PROTECTED_NVHE_STACKTRACE */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+}
#endif /* CONFIG_PROTECTED_NVHE_STACKTRACE */
+
+/*
+ * kvm_nvhe_prepare_backtrace - prepare to dump the nVHE backtrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Saves the information needed by the host to dump the nVHE hypervisor
+ * backtrace.
+ */
+void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc)
+{
+ if (is_protected_kvm_enabled())
+ pkvm_save_backtrace(fp, pc);
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
index 6db801db8f27..64e13445d0d9 100644
--- a/arch/arm64/kvm/hyp/nvhe/switch.c
+++ b/arch/arm64/kvm/hyp/nvhe/switch.c
@@ -34,6 +34,8 @@ DEFINE_PER_CPU(struct kvm_host_data, kvm_host_data);
DEFINE_PER_CPU(struct kvm_cpu_context, kvm_hyp_ctxt);
DEFINE_PER_CPU(unsigned long, kvm_hyp_vector);
+extern void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc);
+
static void __activate_traps(struct kvm_vcpu *vcpu)
{
u64 val;
@@ -375,6 +377,10 @@ asmlinkage void __noreturn hyp_panic(void)
__sysreg_restore_state_nvhe(host_ctxt);
}
+ /* Prepare to dump kvm nvhe hyp stacktrace */
+ kvm_nvhe_prepare_backtrace((unsigned long)__builtin_frame_address(0),
+ _THIS_IP_);
+
__hyp_do_panic(host_ctxt, spsr, elr, par);
unreachable();
}
_______________________________________________
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: Oliver Upton <oliver.upton@linux.dev>
To: Kalesh Singh <kaleshsingh@google.com>
Cc: maz@kernel.org, mark.rutland@arm.com, broonie@kernel.org,
madvenka@linux.microsoft.com, tabba@google.com, will@kernel.org,
qperret@google.com, james.morse@arm.com,
alexandru.elisei@arm.com, suzuki.poulose@arm.com,
catalin.marinas@arm.com, andreyknvl@gmail.com,
vincenzo.frascino@arm.com, mhiramat@kernel.org, ast@kernel.org,
drjones@redhat.com, wangkefeng.wang@huawei.com, elver@google.com,
keirf@google.com, yuzenghui@huawei.com, ardb@kernel.org,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
android-mm@google.com, kernel-team@android.com
Subject: Re: [PATCH v5 12/17] KVM: arm64: Save protected-nVHE (pKVM) hyp stacktrace
Date: Fri, 22 Jul 2022 15:33:39 +0000 [thread overview]
Message-ID: <YtrDU9TRjNWCTPVg@google.com> (raw)
In-Reply-To: <20220721055728.718573-13-kaleshsingh@google.com>
Hi Kalesh,
On Wed, Jul 20, 2022 at 10:57:23PM -0700, Kalesh Singh wrote:
> In protected nVHE mode, the host cannot access private owned hypervisor
> memory. Also the hypervisor aims to remains simple to reduce the attack
> surface and does not provide any printk support.
>
> For the above reasons, the approach taken to provide hypervisor stacktraces
> in protected mode is:
> 1) Unwind and save the hyp stack addresses in EL2 to a shared buffer
> with the host (done in this patch).
> 2) Delegate the dumping and symbolization of the addresses to the
> host in EL1 (later patch in the series).
>
> On hyp_panic(), the hypervisor prepares the stacktrace before returning to
> the host.
>
> Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> ---
Tried reworking this a bit and here is what I arrived at, WDYT?
Untested, of course :)
--
Thanks,
Oliver
diff --git a/arch/arm64/include/asm/stacktrace/nvhe.h b/arch/arm64/include/asm/stacktrace/nvhe.h
index 3078501f8e22..05d7e03e0a8c 100644
--- a/arch/arm64/include/asm/stacktrace/nvhe.h
+++ b/arch/arm64/include/asm/stacktrace/nvhe.h
@@ -21,6 +21,23 @@
#include <asm/stacktrace/common.h>
+/*
+ * kvm_nvhe_unwind_init - Start an unwind from the given nVHE HYP fp and pc
+ *
+ * @state : unwind_state to initialize
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ */
+static inline void kvm_nvhe_unwind_init(struct unwind_state *state,
+ unsigned long fp,
+ unsigned long pc)
+{
+ unwind_init_common(state, NULL);
+
+ state->fp = fp;
+ state->pc = pc;
+}
+
static inline bool on_accessible_stack(const struct task_struct *tsk,
unsigned long sp, unsigned long size,
struct stack_info *info)
diff --git a/arch/arm64/kvm/hyp/nvhe/stacktrace.c b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
index 96c8b93320eb..644276fb02af 100644
--- a/arch/arm64/kvm/hyp/nvhe/stacktrace.c
+++ b/arch/arm64/kvm/hyp/nvhe/stacktrace.c
@@ -11,4 +11,69 @@ DEFINE_PER_CPU(unsigned long [OVERFLOW_STACK_SIZE/sizeof(long)], overflow_stack)
#ifdef CONFIG_PROTECTED_NVHE_STACKTRACE
DEFINE_PER_CPU(unsigned long [NVHE_STACKTRACE_SIZE/sizeof(long)], pkvm_stacktrace);
+
+/*
+ * pkvm_save_backtrace_entry - Saves a protected nVHE HYP stacktrace entry
+ *
+ * @arg : the index of the entry in the stacktrace buffer
+ * @where : the program counter corresponding to the stack frame
+ *
+ * Save the return address of a stack frame to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static bool pkvm_save_backtrace_entry(void *arg, unsigned long where)
+{
+ unsigned long *stacktrace = this_cpu_ptr(pkvm_stacktrace);
+ int *idx = (int *)arg;
+
+ /*
+ * Need 2 free slots: 1 for current entry and 1 for the
+ * delimiter.
+ */
+ if (*idx > ARRAY_SIZE(pkvm_stacktrace) - 2)
+ return false;
+
+ stacktrace[*idx] = where;
+ stacktrace[++*idx] = 0UL;
+
+ return true;
+}
+
+/*
+ * pkvm_save_backtrace - Saves the protected nVHE HYP stacktrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Save the unwinded stack addresses to the shared stacktrace buffer.
+ * The host can access this shared buffer from EL1 to dump the backtrace.
+ */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+ struct unwind_state state;
+ int idx = 0;
+
+ kvm_nvhe_unwind_init(&state, fp, pc);
+
+ unwind(&state, pkvm_save_backtrace_entry, &idx);
+}
+#else /* !CONFIG_PROTECTED_NVHE_STACKTRACE */
+static void pkvm_save_backtrace(unsigned long fp, unsigned long pc)
+{
+}
#endif /* CONFIG_PROTECTED_NVHE_STACKTRACE */
+
+/*
+ * kvm_nvhe_prepare_backtrace - prepare to dump the nVHE backtrace
+ *
+ * @fp : frame pointer at which to start the unwinding.
+ * @pc : program counter at which to start the unwinding.
+ *
+ * Saves the information needed by the host to dump the nVHE hypervisor
+ * backtrace.
+ */
+void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc)
+{
+ if (is_protected_kvm_enabled())
+ pkvm_save_backtrace(fp, pc);
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
index 6db801db8f27..64e13445d0d9 100644
--- a/arch/arm64/kvm/hyp/nvhe/switch.c
+++ b/arch/arm64/kvm/hyp/nvhe/switch.c
@@ -34,6 +34,8 @@ DEFINE_PER_CPU(struct kvm_host_data, kvm_host_data);
DEFINE_PER_CPU(struct kvm_cpu_context, kvm_hyp_ctxt);
DEFINE_PER_CPU(unsigned long, kvm_hyp_vector);
+extern void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc);
+
static void __activate_traps(struct kvm_vcpu *vcpu)
{
u64 val;
@@ -375,6 +377,10 @@ asmlinkage void __noreturn hyp_panic(void)
__sysreg_restore_state_nvhe(host_ctxt);
}
+ /* Prepare to dump kvm nvhe hyp stacktrace */
+ kvm_nvhe_prepare_backtrace((unsigned long)__builtin_frame_address(0),
+ _THIS_IP_);
+
__hyp_do_panic(host_ctxt, spsr, elr, par);
unreachable();
}
next prev parent reply other threads:[~2022-07-22 15:33 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-21 5:57 [PATCH v5 00/17] KVM nVHE Hypervisor stack unwinder Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 01/17] arm64: stacktrace: Add shared header for common stack unwinding code Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 02/17] arm64: stacktrace: Factor out on_accessible_stack_common() Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 03/17] arm64: stacktrace: Factor out unwind_next_common() Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 04/17] arm64: stacktrace: Handle frame pointer from different address spaces Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 05/17] arm64: stacktrace: Factor out common unwind() Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-25 14:05 ` Mark Brown
2022-07-25 14:05 ` Mark Brown
2022-07-25 14:05 ` Mark Brown
2022-07-21 5:57 ` [PATCH v5 06/17] arm64: stacktrace: Add description of stacktrace/common.h Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 07/17] KVM: arm64: On stack overflow switch to hyp overflow_stack Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 08/17] KVM: arm64: Add PROTECTED_NVHE_STACKTRACE Kconfig Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 09/17] KVM: arm64: Allocate shared pKVM hyp stacktrace buffers Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 9:57 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 10/17] KVM: arm64: Stub implementation of pKVM HYP stack unwinder Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 11/17] KVM: arm64: Stub implementation of non-protected nVHE " Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 12/17] KVM: arm64: Save protected-nVHE (pKVM) hyp stacktrace Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-22 15:33 ` Oliver Upton [this message]
2022-07-22 15:33 ` Oliver Upton
2022-07-22 15:33 ` Oliver Upton
2022-07-22 17:28 ` Kalesh Singh
2022-07-22 17:28 ` Kalesh Singh
2022-07-22 17:28 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 13/17] KVM: arm64: Prepare non-protected nVHE hypervisor stacktrace Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 14/17] KVM: arm64: Implement protected nVHE hyp stack unwinder Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 15/17] KVM: arm64: Implement non-protected " Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 9:58 ` Fuad Tabba
2022-07-21 5:57 ` [PATCH v5 16/17] KVM: arm64: Introduce pkvm_dump_backtrace() Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:59 ` Fuad Tabba
2022-07-21 9:59 ` Fuad Tabba
2022-07-21 9:59 ` Fuad Tabba
2022-07-22 11:16 ` Oliver Upton
2022-07-22 11:16 ` Oliver Upton
2022-07-22 11:16 ` Oliver Upton
2022-07-22 17:25 ` Kalesh Singh
2022-07-22 17:25 ` Kalesh Singh
2022-07-22 17:25 ` Kalesh Singh
2022-07-21 5:57 ` [PATCH v5 17/17] KVM: arm64: Introduce hyp_dump_backtrace() Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 5:57 ` Kalesh Singh
2022-07-21 9:59 ` Fuad Tabba
2022-07-21 9:59 ` Fuad Tabba
2022-07-21 9:59 ` Fuad Tabba
2022-07-21 20:35 ` Oliver Upton
2022-07-21 20:35 ` Oliver Upton
2022-07-21 20:35 ` Oliver Upton
2022-07-22 0:01 ` Kalesh Singh
2022-07-22 0:01 ` Kalesh Singh
2022-07-22 0:01 ` Kalesh Singh
2022-07-21 9:55 ` [PATCH v5 00/17] KVM nVHE Hypervisor stack unwinder Fuad Tabba
2022-07-21 9:55 ` Fuad Tabba
2022-07-21 9:55 ` Fuad Tabba
2022-07-21 16:06 ` Kalesh Singh
2022-07-21 16:06 ` Kalesh Singh
2022-07-21 16:06 ` Kalesh Singh
2022-07-22 10:48 ` Oliver Upton
2022-07-22 10:48 ` Oliver Upton
2022-07-22 10:48 ` Oliver Upton
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=YtrDU9TRjNWCTPVg@google.com \
--to=oliver.upton@linux.dev \
--cc=andreyknvl@gmail.com \
--cc=android-mm@google.com \
--cc=ast@kernel.org \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=drjones@redhat.com \
--cc=elver@google.com \
--cc=kaleshsingh@google.com \
--cc=kernel-team@android.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=madvenka@linux.microsoft.com \
--cc=maz@kernel.org \
--cc=mhiramat@kernel.org \
--cc=vincenzo.frascino@arm.com \
--cc=wangkefeng.wang@huawei.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.