All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kalesh Singh <kaleshsingh@google.com>
To: Fuad Tabba <tabba@google.com>
Cc: Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
	Quentin Perret <qperret@google.com>,
	Suren Baghdasaryan <surenb@google.com>,
	"Cc: Android Kernel" <kernel-team@android.com>,
	James Morse <james.morse@arm.com>,
	Alexandru Elisei <alexandru.elisei@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Mark Brown <broonie@kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Peter Collingbourne <pcc@google.com>,
	"Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>,
	Andrew Walbran <qwandor@google.com>,
	Andrew Scull <ascull@google.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"moderated list:ARM64 PORT (AARCH64 ARCHITECTURE)" 
	<linux-arm-kernel@lists.infradead.org>,
	kvmarm@lists.cs.columbia.edu, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 6/8] KVM: arm64: Add hypervisor overflow stack
Date: Thu, 24 Feb 2022 09:56:30 -0800	[thread overview]
Message-ID: <CAC_TJve3wW91UMtCNHeDSZ8hspySmuYO2WgEYEH3Dk=Uj+GkJw@mail.gmail.com> (raw)
In-Reply-To: <CA+EHjTwhpjDDnKRU3QrJysgMhYH7eTi2_LrWpxCArLoP-1-BrQ@mail.gmail.com>

On Thu, Feb 24, 2022 at 4:27 AM Fuad Tabba <tabba@google.com> wrote:
>
> Hi Kalesh,
>
> On Thu, Feb 24, 2022 at 5:21 AM Kalesh Singh <kaleshsingh@google.com> wrote:
> >
> > Allocate and switch to 16-byte aligned secondary stack on overflow. This
> > provides us stack space to better handle overflows; and is used in
> > a subsequent patch to dump the hypervisor stacktrace. The overflow stack
> > is only allocated if CONFIG_NVHE_EL2_DEBUG is enabled, as hypervisor
> > stacktraces is a debug feature dependent on CONFIG_NVHE_EL2_DEBUG.
> >
> > Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> > ---
> >  arch/arm64/kvm/hyp/nvhe/host.S   | 5 +++++
> >  arch/arm64/kvm/hyp/nvhe/switch.c | 5 +++++
> >  2 files changed, 10 insertions(+)
> >
> > diff --git a/arch/arm64/kvm/hyp/nvhe/host.S b/arch/arm64/kvm/hyp/nvhe/host.S
> > index 749961bfa5ba..367a01e8abed 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/host.S
> > +++ b/arch/arm64/kvm/hyp/nvhe/host.S
> > @@ -179,6 +179,10 @@ SYM_FUNC_END(__host_hvc)
> >         b       hyp_panic
> >
> >  .L__hyp_sp_overflow\@:
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +       /* Switch to the overflow stack */
> > +       adr_this_cpu sp, hyp_overflow_stack + PAGE_SIZE, x0
> > +#else
> >         /*
> >          * Reset SP to the top of the stack, to allow handling the hyp_panic.
> >          * This corrupts the stack but is ok, since we won't be attempting
> > @@ -186,6 +190,7 @@ SYM_FUNC_END(__host_hvc)
> >          */
>
> Nit: Maybe you should update this comment as well, since whether it
> corrupts the stack or not depends on what happens above with
> CONFIG_NVHE_EL2_DEBUG.

Ack, will update it in the next version.

Thanks,
Kalesh
>
> Thanks,
> /fuad
>
> >         ldr_this_cpu    x0, kvm_init_params + NVHE_INIT_STACK_HYP_VA, x1
> >         mov     sp, x0
> > +#endif
> >
> >         bl      hyp_panic_bad_stack
> >         ASM_BUG()
> > diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
> > index 703a5d3f611b..efc20273a352 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/switch.c
> > +++ b/arch/arm64/kvm/hyp/nvhe/switch.c
> > @@ -34,6 +34,11 @@ 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);
> >
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +DEFINE_PER_CPU(unsigned long [PAGE_SIZE/sizeof(long)], hyp_overflow_stack)
> > +       __aligned(16);
> > +#endif
> > +
> >  static void __activate_traps(struct kvm_vcpu *vcpu)
> >  {
> >         u64 val;
> > --
> > 2.35.1.473.g83b2b277ed-goog
> >

WARNING: multiple messages have this Message-ID (diff)
From: Kalesh Singh <kaleshsingh@google.com>
To: Fuad Tabba <tabba@google.com>
Cc: Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
	Quentin Perret <qperret@google.com>,
	 Suren Baghdasaryan <surenb@google.com>,
	"Cc: Android Kernel" <kernel-team@android.com>,
	 James Morse <james.morse@arm.com>,
	Alexandru Elisei <alexandru.elisei@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	 Mark Rutland <mark.rutland@arm.com>,
	Mark Brown <broonie@kernel.org>,
	 Masami Hiramatsu <mhiramat@kernel.org>,
	Peter Collingbourne <pcc@google.com>,
	 "Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>,
	Andrew Walbran <qwandor@google.com>,
	 Andrew Scull <ascull@google.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	 Ard Biesheuvel <ardb@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	 "moderated list:ARM64 PORT (AARCH64 ARCHITECTURE)"
	<linux-arm-kernel@lists.infradead.org>,
	kvmarm@lists.cs.columbia.edu,
	 LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 6/8] KVM: arm64: Add hypervisor overflow stack
Date: Thu, 24 Feb 2022 09:56:30 -0800	[thread overview]
Message-ID: <CAC_TJve3wW91UMtCNHeDSZ8hspySmuYO2WgEYEH3Dk=Uj+GkJw@mail.gmail.com> (raw)
In-Reply-To: <CA+EHjTwhpjDDnKRU3QrJysgMhYH7eTi2_LrWpxCArLoP-1-BrQ@mail.gmail.com>

On Thu, Feb 24, 2022 at 4:27 AM Fuad Tabba <tabba@google.com> wrote:
>
> Hi Kalesh,
>
> On Thu, Feb 24, 2022 at 5:21 AM Kalesh Singh <kaleshsingh@google.com> wrote:
> >
> > Allocate and switch to 16-byte aligned secondary stack on overflow. This
> > provides us stack space to better handle overflows; and is used in
> > a subsequent patch to dump the hypervisor stacktrace. The overflow stack
> > is only allocated if CONFIG_NVHE_EL2_DEBUG is enabled, as hypervisor
> > stacktraces is a debug feature dependent on CONFIG_NVHE_EL2_DEBUG.
> >
> > Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> > ---
> >  arch/arm64/kvm/hyp/nvhe/host.S   | 5 +++++
> >  arch/arm64/kvm/hyp/nvhe/switch.c | 5 +++++
> >  2 files changed, 10 insertions(+)
> >
> > diff --git a/arch/arm64/kvm/hyp/nvhe/host.S b/arch/arm64/kvm/hyp/nvhe/host.S
> > index 749961bfa5ba..367a01e8abed 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/host.S
> > +++ b/arch/arm64/kvm/hyp/nvhe/host.S
> > @@ -179,6 +179,10 @@ SYM_FUNC_END(__host_hvc)
> >         b       hyp_panic
> >
> >  .L__hyp_sp_overflow\@:
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +       /* Switch to the overflow stack */
> > +       adr_this_cpu sp, hyp_overflow_stack + PAGE_SIZE, x0
> > +#else
> >         /*
> >          * Reset SP to the top of the stack, to allow handling the hyp_panic.
> >          * This corrupts the stack but is ok, since we won't be attempting
> > @@ -186,6 +190,7 @@ SYM_FUNC_END(__host_hvc)
> >          */
>
> Nit: Maybe you should update this comment as well, since whether it
> corrupts the stack or not depends on what happens above with
> CONFIG_NVHE_EL2_DEBUG.

Ack, will update it in the next version.

Thanks,
Kalesh
>
> Thanks,
> /fuad
>
> >         ldr_this_cpu    x0, kvm_init_params + NVHE_INIT_STACK_HYP_VA, x1
> >         mov     sp, x0
> > +#endif
> >
> >         bl      hyp_panic_bad_stack
> >         ASM_BUG()
> > diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
> > index 703a5d3f611b..efc20273a352 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/switch.c
> > +++ b/arch/arm64/kvm/hyp/nvhe/switch.c
> > @@ -34,6 +34,11 @@ 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);
> >
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +DEFINE_PER_CPU(unsigned long [PAGE_SIZE/sizeof(long)], hyp_overflow_stack)
> > +       __aligned(16);
> > +#endif
> > +
> >  static void __activate_traps(struct kvm_vcpu *vcpu)
> >  {
> >         u64 val;
> > --
> > 2.35.1.473.g83b2b277ed-goog
> >

_______________________________________________
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: Kalesh Singh <kaleshsingh@google.com>
To: Fuad Tabba <tabba@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	kvmarm@lists.cs.columbia.edu, Andrew Walbran <qwandor@google.com>,
	Marc Zyngier <maz@kernel.org>,
	"Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>,
	"Cc: Android Kernel" <kernel-team@android.com>,
	Suren Baghdasaryan <surenb@google.com>,
	Mark Brown <broonie@kernel.org>,
	Peter Collingbourne <pcc@google.com>,
	"moderated list:ARM64 PORT \(AARCH64 ARCHITECTURE\)"
	<linux-arm-kernel@lists.infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v3 6/8] KVM: arm64: Add hypervisor overflow stack
Date: Thu, 24 Feb 2022 09:56:30 -0800	[thread overview]
Message-ID: <CAC_TJve3wW91UMtCNHeDSZ8hspySmuYO2WgEYEH3Dk=Uj+GkJw@mail.gmail.com> (raw)
In-Reply-To: <CA+EHjTwhpjDDnKRU3QrJysgMhYH7eTi2_LrWpxCArLoP-1-BrQ@mail.gmail.com>

On Thu, Feb 24, 2022 at 4:27 AM Fuad Tabba <tabba@google.com> wrote:
>
> Hi Kalesh,
>
> On Thu, Feb 24, 2022 at 5:21 AM Kalesh Singh <kaleshsingh@google.com> wrote:
> >
> > Allocate and switch to 16-byte aligned secondary stack on overflow. This
> > provides us stack space to better handle overflows; and is used in
> > a subsequent patch to dump the hypervisor stacktrace. The overflow stack
> > is only allocated if CONFIG_NVHE_EL2_DEBUG is enabled, as hypervisor
> > stacktraces is a debug feature dependent on CONFIG_NVHE_EL2_DEBUG.
> >
> > Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> > ---
> >  arch/arm64/kvm/hyp/nvhe/host.S   | 5 +++++
> >  arch/arm64/kvm/hyp/nvhe/switch.c | 5 +++++
> >  2 files changed, 10 insertions(+)
> >
> > diff --git a/arch/arm64/kvm/hyp/nvhe/host.S b/arch/arm64/kvm/hyp/nvhe/host.S
> > index 749961bfa5ba..367a01e8abed 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/host.S
> > +++ b/arch/arm64/kvm/hyp/nvhe/host.S
> > @@ -179,6 +179,10 @@ SYM_FUNC_END(__host_hvc)
> >         b       hyp_panic
> >
> >  .L__hyp_sp_overflow\@:
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +       /* Switch to the overflow stack */
> > +       adr_this_cpu sp, hyp_overflow_stack + PAGE_SIZE, x0
> > +#else
> >         /*
> >          * Reset SP to the top of the stack, to allow handling the hyp_panic.
> >          * This corrupts the stack but is ok, since we won't be attempting
> > @@ -186,6 +190,7 @@ SYM_FUNC_END(__host_hvc)
> >          */
>
> Nit: Maybe you should update this comment as well, since whether it
> corrupts the stack or not depends on what happens above with
> CONFIG_NVHE_EL2_DEBUG.

Ack, will update it in the next version.

Thanks,
Kalesh
>
> Thanks,
> /fuad
>
> >         ldr_this_cpu    x0, kvm_init_params + NVHE_INIT_STACK_HYP_VA, x1
> >         mov     sp, x0
> > +#endif
> >
> >         bl      hyp_panic_bad_stack
> >         ASM_BUG()
> > diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
> > index 703a5d3f611b..efc20273a352 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/switch.c
> > +++ b/arch/arm64/kvm/hyp/nvhe/switch.c
> > @@ -34,6 +34,11 @@ 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);
> >
> > +#ifdef CONFIG_NVHE_EL2_DEBUG
> > +DEFINE_PER_CPU(unsigned long [PAGE_SIZE/sizeof(long)], hyp_overflow_stack)
> > +       __aligned(16);
> > +#endif
> > +
> >  static void __activate_traps(struct kvm_vcpu *vcpu)
> >  {
> >         u64 val;
> > --
> > 2.35.1.473.g83b2b277ed-goog
> >
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

  reply	other threads:[~2022-02-24 17:56 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-24  5:13 [PATCH v3 0/8] KVM: arm64: Hypervisor stack enhancements Kalesh Singh
2022-02-24  5:13 ` Kalesh Singh
2022-02-24  5:13 ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 1/8] KVM: arm64: Introduce hyp_alloc_private_va_range() Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24 12:24   ` Fuad Tabba
2022-02-24 12:24     ` Fuad Tabba
2022-02-24 12:24     ` Fuad Tabba
2022-02-24 17:20     ` Kalesh Singh
2022-02-24 17:20       ` Kalesh Singh
2022-02-24 17:20       ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 2/8] KVM: arm64: Introduce pkvm_alloc_private_va_range() Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24 12:25   ` Fuad Tabba
2022-02-24 12:25     ` Fuad Tabba
2022-02-24 12:25     ` Fuad Tabba
2022-02-24 17:28     ` Kalesh Singh
2022-02-24 17:28       ` Kalesh Singh
2022-02-24 17:28       ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 3/8] KVM: arm64: Add guard pages for KVM nVHE hypervisor stack Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24 12:26   ` Fuad Tabba
2022-02-24 12:26     ` Fuad Tabba
2022-02-24 12:26     ` Fuad Tabba
2022-02-24 17:54     ` Kalesh Singh
2022-02-24 17:54       ` Kalesh Singh
2022-02-24 17:54       ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 4/8] KVM: arm64: Add guard pages for pKVM (protected nVHE) " Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 5/8] KVM: arm64: Detect and handle hypervisor stack overflows Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 6/8] KVM: arm64: Add hypervisor overflow stack Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24 12:26   ` Fuad Tabba
2022-02-24 12:26     ` Fuad Tabba
2022-02-24 12:26     ` Fuad Tabba
2022-02-24 17:56     ` Kalesh Singh [this message]
2022-02-24 17:56       ` Kalesh Singh
2022-02-24 17:56       ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 7/8] KVM: arm64: Unwind and dump nVHE HYP stacktrace Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24 12:28   ` Fuad Tabba
2022-02-24 12:28     ` Fuad Tabba
2022-02-24 12:28     ` Fuad Tabba
2022-02-24 18:08     ` Kalesh Singh
2022-02-24 18:08       ` Kalesh Singh
2022-02-24 18:08       ` Kalesh Singh
2022-02-24  5:13 ` [PATCH v3 8/8] KVM: arm64: Symbolize the nVHE HYP backtrace Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-24  5:13   ` Kalesh Singh
2022-02-25  3:59 ` [PATCH v3 0/8] KVM: arm64: Hypervisor stack enhancements Kalesh Singh
2022-02-25  3:59   ` Kalesh Singh
2022-02-25  3:59   ` Kalesh Singh

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='CAC_TJve3wW91UMtCNHeDSZ8hspySmuYO2WgEYEH3Dk=Uj+GkJw@mail.gmail.com' \
    --to=kaleshsingh@google.com \
    --cc=alexandru.elisei@arm.com \
    --cc=ardb@kernel.org \
    --cc=ascull@google.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.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=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=pcc@google.com \
    --cc=qperret@google.com \
    --cc=qwandor@google.com \
    --cc=surenb@google.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.com \
    /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.