mshv: Add definitions for MSHV sleep state configuration

Add the definitions required to configure sleep states in mshv hypervsior.

Signed-off-by: Praveen K Paladugu <prapal@linux.microsoft.com>
Co-developed-by: Anatol Belski <anbelski@linux.microsoft.com>
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
Reviewed-by: Easwar Hariharan <easwar.hariharan@linux.microsoft.com>
Reviewed-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Acked-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
master
Praveen K Paladugu 2025-12-05 14:17:06 -06:00 committed by Wei Liu
parent b9a66cd5cc
commit 723c47a221
2 changed files with 43 additions and 1 deletions

View File

@ -465,12 +465,14 @@ union hv_vp_assist_msr_contents { /* HV_REGISTER_VP_ASSIST_PAGE */
#define HVCALL_RESET_DEBUG_SESSION 0x006b
#define HVCALL_MAP_STATS_PAGE 0x006c
#define HVCALL_UNMAP_STATS_PAGE 0x006d
#define HVCALL_SET_SYSTEM_PROPERTY 0x006f
#define HVCALL_ADD_LOGICAL_PROCESSOR 0x0076
#define HVCALL_GET_SYSTEM_PROPERTY 0x007b
#define HVCALL_MAP_DEVICE_INTERRUPT 0x007c
#define HVCALL_UNMAP_DEVICE_INTERRUPT 0x007d
#define HVCALL_RETARGET_INTERRUPT 0x007e
#define HVCALL_NOTIFY_PARTITION_EVENT 0x0087
#define HVCALL_ENTER_SLEEP_STATE 0x0084
#define HVCALL_NOTIFY_PORT_RING_EMPTY 0x008b
#define HVCALL_REGISTER_INTERCEPT_RESULT 0x0091
#define HVCALL_ASSERT_VIRTUAL_INTERRUPT 0x0094

View File

@ -140,6 +140,7 @@ enum hv_snp_status {
enum hv_system_property {
/* Add more values when needed */
HV_SYSTEM_PROPERTY_SLEEP_STATE = 3,
HV_SYSTEM_PROPERTY_SCHEDULER_TYPE = 15,
HV_DYNAMIC_PROCESSOR_FEATURE_PROPERTY = 21,
HV_SYSTEM_PROPERTY_CRASHDUMPAREA = 47,
@ -155,6 +156,19 @@ union hv_pfn_range { /* HV_SPA_PAGE_RANGE */
} __packed;
};
enum hv_sleep_state {
HV_SLEEP_STATE_S1 = 1,
HV_SLEEP_STATE_S2 = 2,
HV_SLEEP_STATE_S3 = 3,
HV_SLEEP_STATE_S4 = 4,
HV_SLEEP_STATE_S5 = 5,
/*
* After hypervisor has received this, any follow up sleep
* state registration requests will be rejected.
*/
HV_SLEEP_STATE_LOCK = 6
};
enum hv_dynamic_processor_feature_property {
/* Add more values when needed */
HV_X64_DYNAMIC_PROCESSOR_FEATURE_MAX_ENCRYPTED_PARTITIONS = 13,
@ -184,6 +198,32 @@ struct hv_output_get_system_property {
};
} __packed;
struct hv_sleep_state_info {
u32 sleep_state; /* enum hv_sleep_state */
u8 pm1a_slp_typ;
u8 pm1b_slp_typ;
} __packed;
struct hv_input_set_system_property {
u32 property_id; /* enum hv_system_property */
u32 reserved;
union {
/* More fields to be filled in when needed */
struct hv_sleep_state_info set_sleep_state_info;
/*
* Add a reserved field to ensure the union is 8-byte aligned as
* existing members may not be. This is a temporary measure
* until all remaining members are added.
*/
u64 reserved0[8];
};
} __packed;
struct hv_input_enter_sleep_state { /* HV_INPUT_ENTER_SLEEP_STATE */
u32 sleep_state; /* enum hv_sleep_state */
} __packed;
struct hv_input_map_stats_page {
u32 type; /* enum hv_stats_object_type */
u32 padding;