Commit 723c47a2 authored by Praveen K Paladugu's avatar Praveen K Paladugu Committed by Wei Liu
Browse files

mshv: Add definitions for MSHV sleep state configuration



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

Signed-off-by: default avatarPraveen K Paladugu <prapal@linux.microsoft.com>
Co-developed-by: default avatarAnatol Belski <anbelski@linux.microsoft.com>
Signed-off-by: default avatarAnatol Belski <anbelski@linux.microsoft.com>
Reviewed-by: default avatarEaswar Hariharan <easwar.hariharan@linux.microsoft.com>
Reviewed-by: default avatarNuno Das Neves <nunodasneves@linux.microsoft.com>
Acked-by: default avatarStanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
parent b9a66cd5
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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
+40 −0
Original line number Diff line number Diff line
@@ -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;