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
next prev parent 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: linkBe 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.