All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boqun Feng <boqun.feng@gmail.com>
To: Michael Kelley <mikelley@microsoft.com>
Cc: will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org,
	linux-efi@vger.kernel.org, wei.liu@kernel.org, kys@microsoft.com,
	sthemmin@microsoft.com, ardb@kernel.org
Subject: Re: [PATCH v11 2/5] arm64: hyperv: Add panic handler
Date: Wed, 21 Jul 2021 22:54:36 +0800	[thread overview]
Message-ID: <YPg1LNq62LMZiXLX@boqun-archlinux> (raw)
In-Reply-To: <1626793023-13830-3-git-send-email-mikelley@microsoft.com>

On Tue, Jul 20, 2021 at 07:57:00AM -0700, Michael Kelley wrote:
> Add a function to inform Hyper-V about a guest panic.
> 
> This code is built only when CONFIG_HYPERV is enabled.
> 
> Signed-off-by: Michael Kelley <mikelley@microsoft.com>

Reviewed-by: Boqun Feng <boqun.feng@gmail.com>

Regards,
Boqun

> ---
>  arch/arm64/hyperv/hv_core.c | 52 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/arch/arm64/hyperv/hv_core.c b/arch/arm64/hyperv/hv_core.c
> index 4c5dc0f..b54c347 100644
> --- a/arch/arm64/hyperv/hv_core.c
> +++ b/arch/arm64/hyperv/hv_core.c
> @@ -127,3 +127,55 @@ u64 hv_get_vpreg(u32 msr)
>  	return output.as64.low;
>  }
>  EXPORT_SYMBOL_GPL(hv_get_vpreg);
> +
> +/*
> + * hyperv_report_panic - report a panic to Hyper-V.  This function uses
> + * the older version of the Hyper-V interface that admittedly doesn't
> + * pass enough information to be useful beyond just recording the
> + * occurrence of a panic. The parallel hv_kmsg_dump() uses the
> + * new interface that allows reporting 4 Kbytes of data, which is much
> + * more useful. Hyper-V on ARM64 always supports the newer interface, but
> + * we retain support for the older version because the sysadmin is allowed
> + * to disable the newer version via sysctl in case of information security
> + * concerns about the more verbose version.
> + */
> +void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
> +{
> +	static bool	panic_reported;
> +	u64		guest_id;
> +
> +	/* Don't report a panic to Hyper-V if we're not going to panic */
> +	if (in_die && !panic_on_oops)
> +		return;
> +
> +	/*
> +	 * We prefer to report panic on 'die' chain as we have proper
> +	 * registers to report, but if we miss it (e.g. on BUG()) we need
> +	 * to report it on 'panic'.
> +	 *
> +	 * Calling code in the 'die' and 'panic' paths ensures that only
> +	 * one CPU is running this code, so no atomicity is needed.
> +	 */
> +	if (panic_reported)
> +		return;
> +	panic_reported = true;
> +
> +	guest_id = hv_get_vpreg(HV_REGISTER_GUEST_OSID);
> +
> +	/*
> +	 * Hyper-V provides the ability to store only 5 values.
> +	 * Pick the passed in error value, the guest_id, the PC,
> +	 * and the SP.
> +	 */
> +	hv_set_vpreg(HV_REGISTER_CRASH_P0, err);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P1, guest_id);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P2, regs->pc);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P3, regs->sp);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P4, 0);
> +
> +	/*
> +	 * Let Hyper-V know there is crash data available
> +	 */
> +	hv_set_vpreg(HV_REGISTER_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY);
> +}
> +EXPORT_SYMBOL_GPL(hyperv_report_panic);
> -- 
> 1.8.3.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Boqun Feng <boqun.feng@gmail.com>
To: Michael Kelley <mikelley@microsoft.com>
Cc: will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org,
	linux-efi@vger.kernel.org, wei.liu@kernel.org, kys@microsoft.com,
	sthemmin@microsoft.com, ardb@kernel.org
Subject: Re: [PATCH v11 2/5] arm64: hyperv: Add panic handler
Date: Wed, 21 Jul 2021 22:54:36 +0800	[thread overview]
Message-ID: <YPg1LNq62LMZiXLX@boqun-archlinux> (raw)
In-Reply-To: <1626793023-13830-3-git-send-email-mikelley@microsoft.com>

On Tue, Jul 20, 2021 at 07:57:00AM -0700, Michael Kelley wrote:
> Add a function to inform Hyper-V about a guest panic.
> 
> This code is built only when CONFIG_HYPERV is enabled.
> 
> Signed-off-by: Michael Kelley <mikelley@microsoft.com>

Reviewed-by: Boqun Feng <boqun.feng@gmail.com>

Regards,
Boqun

> ---
>  arch/arm64/hyperv/hv_core.c | 52 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/arch/arm64/hyperv/hv_core.c b/arch/arm64/hyperv/hv_core.c
> index 4c5dc0f..b54c347 100644
> --- a/arch/arm64/hyperv/hv_core.c
> +++ b/arch/arm64/hyperv/hv_core.c
> @@ -127,3 +127,55 @@ u64 hv_get_vpreg(u32 msr)
>  	return output.as64.low;
>  }
>  EXPORT_SYMBOL_GPL(hv_get_vpreg);
> +
> +/*
> + * hyperv_report_panic - report a panic to Hyper-V.  This function uses
> + * the older version of the Hyper-V interface that admittedly doesn't
> + * pass enough information to be useful beyond just recording the
> + * occurrence of a panic. The parallel hv_kmsg_dump() uses the
> + * new interface that allows reporting 4 Kbytes of data, which is much
> + * more useful. Hyper-V on ARM64 always supports the newer interface, but
> + * we retain support for the older version because the sysadmin is allowed
> + * to disable the newer version via sysctl in case of information security
> + * concerns about the more verbose version.
> + */
> +void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
> +{
> +	static bool	panic_reported;
> +	u64		guest_id;
> +
> +	/* Don't report a panic to Hyper-V if we're not going to panic */
> +	if (in_die && !panic_on_oops)
> +		return;
> +
> +	/*
> +	 * We prefer to report panic on 'die' chain as we have proper
> +	 * registers to report, but if we miss it (e.g. on BUG()) we need
> +	 * to report it on 'panic'.
> +	 *
> +	 * Calling code in the 'die' and 'panic' paths ensures that only
> +	 * one CPU is running this code, so no atomicity is needed.
> +	 */
> +	if (panic_reported)
> +		return;
> +	panic_reported = true;
> +
> +	guest_id = hv_get_vpreg(HV_REGISTER_GUEST_OSID);
> +
> +	/*
> +	 * Hyper-V provides the ability to store only 5 values.
> +	 * Pick the passed in error value, the guest_id, the PC,
> +	 * and the SP.
> +	 */
> +	hv_set_vpreg(HV_REGISTER_CRASH_P0, err);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P1, guest_id);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P2, regs->pc);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P3, regs->sp);
> +	hv_set_vpreg(HV_REGISTER_CRASH_P4, 0);
> +
> +	/*
> +	 * Let Hyper-V know there is crash data available
> +	 */
> +	hv_set_vpreg(HV_REGISTER_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY);
> +}
> +EXPORT_SYMBOL_GPL(hyperv_report_panic);
> -- 
> 1.8.3.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-07-21 14:56 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-20 14:56 [PATCH v11 0/5] Enable Linux guests on Hyper-V on ARM64 Michael Kelley
2021-07-20 14:56 ` Michael Kelley
2021-07-20 14:56 ` [PATCH v11 1/5] arm64: hyperv: Add Hyper-V hypercall and register access utilities Michael Kelley
2021-07-20 14:56   ` Michael Kelley
2021-07-20 14:57 ` [PATCH v11 2/5] arm64: hyperv: Add panic handler Michael Kelley
2021-07-20 14:57   ` Michael Kelley
2021-07-21 14:54   ` Boqun Feng [this message]
2021-07-21 14:54     ` Boqun Feng
2021-07-27 17:08   ` Sunil Muthuswamy
2021-07-27 17:08     ` Sunil Muthuswamy
2021-07-20 14:57 ` [PATCH v11 3/5] arm64: hyperv: Initialize hypervisor on boot Michael Kelley
2021-07-20 14:57   ` Michael Kelley
2021-07-21 14:55   ` Boqun Feng
2021-07-21 14:55     ` Boqun Feng
2021-07-27 17:05   ` Sunil Muthuswamy
2021-07-27 17:05     ` Sunil Muthuswamy
2021-08-02 15:55   ` Marc Zyngier
2021-08-02 15:55     ` Marc Zyngier
2021-08-02 16:26   ` Mark Rutland
2021-08-02 16:26     ` Mark Rutland
2021-08-02 17:13     ` Michael Kelley
2021-08-02 17:13       ` Michael Kelley
2021-07-20 14:57 ` [PATCH v11 4/5] arm64: efi: Export screen_info Michael Kelley
2021-07-20 14:57   ` Michael Kelley
2021-07-20 14:57 ` [PATCH v11 5/5] Drivers: hv: Enable Hyper-V code to be built on ARM64 Michael Kelley
2021-07-20 14:57   ` Michael Kelley
2021-07-21 14:52   ` Boqun Feng
2021-07-21 14:52     ` Boqun Feng
2021-08-02 15:15 ` [PATCH v11 0/5] Enable Linux guests on Hyper-V " Michael Kelley
2021-08-02 15:15   ` Michael Kelley
2021-08-02 16:01 ` Marc Zyngier
2021-08-02 16:01   ` Marc Zyngier
2021-08-02 16:28   ` Mark Rutland
2021-08-02 16:28     ` Mark Rutland

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=YPg1LNq62LMZiXLX@boqun-archlinux \
    --to=boqun.feng@gmail.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=kys@microsoft.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mikelley@microsoft.com \
    --cc=sthemmin@microsoft.com \
    --cc=wei.liu@kernel.org \
    --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.