]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hyperv: Add definitions for hypervisor crash dump support
authorMukesh Rathor <mrathor@linux.microsoft.com>
Mon, 6 Oct 2025 22:42:05 +0000 (15:42 -0700)
committerWei Liu <wei.liu@kernel.org>
Sat, 15 Nov 2025 06:18:16 +0000 (06:18 +0000)
Add data structures for hypervisor crash dump support to the hypervisor
host ABI header file. Details of their usages are in subsequent commits.

Signed-off-by: Mukesh Rathor <mrathor@linux.microsoft.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
include/hyperv/hvhdk_mini.h

index 064bf735cab6b95388095aea9f1841097a4f1199..f2d7b50de7a42c8b0c79f7a9b81afe77c74c327c 100644 (file)
@@ -142,6 +142,17 @@ enum hv_system_property {
        /* Add more values when needed */
        HV_SYSTEM_PROPERTY_SCHEDULER_TYPE = 15,
        HV_DYNAMIC_PROCESSOR_FEATURE_PROPERTY = 21,
+       HV_SYSTEM_PROPERTY_CRASHDUMPAREA = 47,
+};
+
+#define HV_PFN_RANGE_PGBITS 24  /* HV_SPA_PAGE_RANGE_ADDITIONAL_PAGES_BITS */
+union hv_pfn_range {            /* HV_SPA_PAGE_RANGE */
+       u64 as_uint64;
+       struct {
+               /* 39:0: base pfn.  63:40: additional pages */
+               u64 base_pfn : 64 - HV_PFN_RANGE_PGBITS;
+               u64 add_pfns : HV_PFN_RANGE_PGBITS;
+       } __packed;
 };
 
 enum hv_dynamic_processor_feature_property {
@@ -168,6 +179,8 @@ struct hv_output_get_system_property {
 #if IS_ENABLED(CONFIG_X86)
                u64 hv_processor_feature_value;
 #endif
+               union hv_pfn_range hv_cda_info; /* CrashdumpAreaAddress */
+               u64 hv_tramp_pa;                /* CrashdumpTrampolineAddress */
        };
 } __packed;
 
@@ -267,6 +280,48 @@ union hv_gpa_page_access_state {
        u8 as_uint8;
 } __packed;
 
+enum hv_crashdump_action {
+       HV_CRASHDUMP_NONE = 0,
+       HV_CRASHDUMP_SUSPEND_ALL_VPS,
+       HV_CRASHDUMP_PREPARE_FOR_STATE_SAVE,
+       HV_CRASHDUMP_STATE_SAVED,
+       HV_CRASHDUMP_ENTRY,
+};
+
+struct hv_partition_event_root_crashdump_input {
+       u32 crashdump_action; /* enum hv_crashdump_action */
+} __packed;
+
+struct hv_input_disable_hyp_ex {   /* HV_X64_INPUT_DISABLE_HYPERVISOR_EX */
+       u64 rip;
+       u64 arg;
+} __packed;
+
+struct hv_crashdump_area {        /* HV_CRASHDUMP_AREA */
+       u32 version;
+       union {
+               u32 flags_as_uint32;
+               struct {
+                       u32 cda_valid : 1;
+                       u32 cda_unused : 31;
+               } __packed;
+       };
+       /* more unused fields */
+} __packed;
+
+union hv_partition_event_input {
+       struct hv_partition_event_root_crashdump_input crashdump_input;
+};
+
+enum hv_partition_event {
+       HV_PARTITION_EVENT_ROOT_CRASHDUMP = 2,
+};
+
+struct hv_input_notify_partition_event {
+       u32 event;      /* enum hv_partition_event */
+       union hv_partition_event_input input;
+} __packed;
+
 struct hv_lp_startup_status {
        u64 hv_status;
        u64 substatus1;