mirror-linux/drivers/hv
Jork Loeser 5170a82e89 x86/hyperv: Skip LP/VP creation on kexec
After a kexec the logical processors and virtual processors already
exist in the hypervisor because they were created by the previous
kernel. Attempting to add them again causes either a BUG_ON or
corrupted VP state leading to MCEs in the new kernel.

Add hv_lp_exists() to probe whether an LP is already present by
calling HVCALL_GET_LOGICAL_PROCESSOR_RUN_TIME. When it succeeds the
LP exists and we skip the add-LP and create-VP loops entirely.

Also add hv_call_notify_all_processors_started() which informs the
hypervisor that all processors are online. This is required after
adding LPs (fresh boot) and is a no-op on kexec since we skip that
path.

Co-developed-by: Anirudh Rayabharam <anrayabh@linux.microsoft.com>
Signed-off-by: Anirudh Rayabharam <anrayabh@linux.microsoft.com>
Co-developed-by: Stanislav Kinsburskii <stanislav.kinsburskii@gmail.com>
Signed-off-by: Stanislav Kinsburskii <stanislav.kinsburskii@gmail.com>
Co-developed-by: Mukesh Rathor <mrathor@linux.microsoft.com>
Signed-off-by: Mukesh Rathor <mrathor@linux.microsoft.com>
Signed-off-by: Jork Loeser <jloeser@linux.microsoft.com>
Reviewed-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
2026-04-22 06:23:25 +00:00
..
Kconfig mshv: Add support for movable memory regions 2025-12-05 23:20:49 +00:00
Makefile mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
channel.c Drivers: hv: fix missing kernel-doc description for 'size' in request_arr_init() 2025-11-15 06:18:16 +00:00
channel_mgmt.c Drivers: hv: vmbus: Limit channel interrupt scan to relid high water mark 2026-04-14 04:42:02 +00:00
connection.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
hv.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
hv_balloon.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
hv_common.c mshv: Handle insufficient root memory hypervisor statuses 2026-02-19 06:42:11 +00:00
hv_debugfs.c hv_debugfs: Make hv_debug_root static 2020-04-04 17:47:43 +01:00
hv_kvp.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hv_proc.c x86/hyperv: Skip LP/VP creation on kexec 2026-04-22 06:23:25 +00:00
hv_snapshot.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hv_trace.c hv: add SPDX license to trace 2018-03-28 13:24:56 +02:00
hv_trace.h Drivers: hv: vmbus: Drivers: hv: vmbus: Introduce CHANNELMSG_MODIFYCHANNEL_RESPONSE 2021-04-18 13:03:11 +00:00
hv_trace_balloon.h hv_balloon: trace post_status 2018-03-06 09:57:17 -08:00
hv_util.c Drivers: hv: use kmalloc_array() instead of kmalloc() 2025-12-05 23:16:49 +00:00
hv_utils_transport.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hv_utils_transport.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 280 2019-06-05 17:36:36 +02:00
hyperv_vmbus.h Drivers: hv: vmbus: Limit channel interrupt scan to relid high water mark 2026-04-14 04:42:02 +00:00
mshv.h mshv: Use common "entry virt" APIs to do work in root before running guest 2025-09-30 22:50:48 +00:00
mshv_common.c mshv: hide x86-specific functions on arm64 2025-12-17 18:04:15 +00:00
mshv_debugfs.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
mshv_debugfs_counters.c mshv: Add data for printing stats page counters 2026-02-04 06:17:05 +00:00
mshv_eventfd.c mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
mshv_eventfd.h mshv: clear eventfd counter on irqfd shutdown 2026-02-04 06:36:19 +00:00
mshv_irq.c mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
mshv_portid_table.c Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs 2025-03-21 18:24:22 +00:00
mshv_regions.c mshv: Fix error handling in mshv_region_pin 2026-03-18 16:18:49 +00:00
mshv_root.h mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
mshv_root_hv_call.c mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
mshv_root_main.c mshv: Add tracepoint for GPA intercept handling 2026-04-22 06:23:25 +00:00
mshv_synic.c mshv: add arm64 support for doorbell & intercept SINTs 2026-02-25 19:09:49 +00:00
mshv_trace.c mshv: Introduce tracing support 2026-04-14 04:42:02 +00:00
mshv_trace.h mshv: Add tracepoint for GPA intercept handling 2026-04-22 06:23:25 +00:00
mshv_vtl.h Drivers: hv: Introduce mshv_vtl driver 2025-12-05 23:16:26 +00:00
mshv_vtl_main.c mshv_vtl: Fix vmemmap_shift exceeding MAX_FOLIO_ORDER 2026-04-14 04:44:31 +00:00
ring_buffer.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
vmbus_drv.c x86/hyperv: move stimer cleanup to hv_machine_shutdown() 2026-04-22 06:23:25 +00:00