This is a note to let you know that I've just added the patch titled x86/Hyper-V: Trigger crash enlightenment only once during system crash. to the 5.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: x86-hyper-v-trigger-crash-enlightenment-only-once-during-system-crash.patch and it can be found in the queue-5.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 73f26e526f19afb3a06b76b970a76bcac2cafd05 Mon Sep 17 00:00:00 2001 From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> Date: Mon, 6 Apr 2020 08:53:28 -0700 Subject: x86/Hyper-V: Trigger crash enlightenment only once during system crash. From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> commit 73f26e526f19afb3a06b76b970a76bcac2cafd05 upstream. When a guest VM panics, Hyper-V should be notified only once via the crash synthetic MSRs. Current Linux code might write these crash MSRs twice during a system panic: 1) hyperv_panic/die_event() calling hyperv_report_panic() 2) hv_kmsg_dump() calling hyperv_report_panic_msg() Fix this by not calling hyperv_report_panic() if a kmsg dump has been successfully registered. The notification will happen later via hyperv_report_panic_msg(). Fixes: 7ed4325a44ea ("Drivers: hv: vmbus: Make panic reporting to be more useful") Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx> Signed-off-by: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20200406155331.2105-4-Tianyu.Lan@xxxxxxxxxxxxx Signed-off-by: Wei Liu <wei.liu@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/hv/vmbus_drv.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -55,7 +55,13 @@ static int hyperv_panic_event(struct not vmbus_initiate_unload(true); - if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + /* + * Hyper-V should be notified only once about a panic. If we will be + * doing hyperv_report_panic_msg() later with kmsg data, don't do + * the notification here. + */ + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE + && !hv_panic_page) { regs = current_pt_regs(); hyperv_report_panic(regs, val); } @@ -68,7 +74,13 @@ static int hyperv_die_event(struct notif struct die_args *die = (struct die_args *)args; struct pt_regs *regs = die->regs; - hyperv_report_panic(regs, val); + /* + * Hyper-V should be notified only once about a panic. If we will be + * doing hyperv_report_panic_msg() later with kmsg data, don't do + * the notification here. + */ + if (!hv_panic_page) + hyperv_report_panic(regs, val); return NOTIFY_DONE; } Patches currently in stable-queue which might be from Tianyu.Lan@xxxxxxxxxxxxx are queue-5.4/x86-hyper-v-unload-vmbus-channel-in-hv-panic-callback.patch queue-5.4/x86-hyper-v-trigger-crash-enlightenment-only-once-during-system-crash.patch queue-5.4/x86-hyper-v-report-crash-register-data-or-kmsg-before-running-crash-kernel.patch queue-5.4/x86-hyper-v-report-crash-register-data-when-sysctl_record_panic_msg-is-not-set.patch queue-5.4/x86-hyper-v-report-crash-data-in-die-when-panic_on_oops-is-set.patch