This commit adds data structures for hypervisor crash dump support
to the hypervisor host ABI public header file. Details of their usages
can be found in subsequent commits.

Signed-off-by: Mukesh Rathor <mrat...@linux.microsoft.com>
---
 include/hyperv/hvhdk_mini.h | 55 +++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/include/hyperv/hvhdk_mini.h b/include/hyperv/hvhdk_mini.h
index 858f6a3925b3..ad9a8048fb4e 100644
--- a/include/hyperv/hvhdk_mini.h
+++ b/include/hyperv/hvhdk_mini.h
@@ -116,6 +116,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 {
@@ -142,6 +153,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;
 
@@ -234,6 +247,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;
-- 
2.36.1.vfs.0.0


Reply via email to