mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
tboot, s3: Fix S3 issue of Xen and tboot, since the structure
acpi_sleep_info is changed but some of the code in Xen is not synchronized up with this change, which causes Xen S3 failure. Signed-off-by: Shane Wang <shane.wang@intel.com>
This commit is contained in:
1 parent
80a73755d2
commit
1580fd56fd
2 files changed
+23
-6
No files matched your search
@@ -238,9 +238,17 @@ static int acpi_get_wake_status(void)
|
||||
static void tboot_sleep(u8 sleep_state)
|
||||
{
|
||||
uint32_t shutdown_type;
|
||||
|
||||
*((struct acpi_sleep_info *)(unsigned long)g_tboot_shared->acpi_sinfo) =
|
||||
acpi_sinfo;
|
||||
|
||||
g_tboot_shared->acpi_sinfo.pm1a_cnt =
|
||||
(uint16_t)acpi_sinfo.pm1a_cnt_blk.address;
|
||||
g_tboot_shared->acpi_sinfo.pm1b_cnt =
|
||||
(uint16_t)acpi_sinfo.pm1b_cnt_blk.address;
|
||||
g_tboot_shared->acpi_sinfo.pm1a_evt =
|
||||
(uint16_t)acpi_sinfo.pm1a_evt_blk.address;
|
||||
g_tboot_shared->acpi_sinfo.pm1b_evt =
|
||||
(uint16_t)acpi_sinfo.pm1b_evt_blk.address;
|
||||
g_tboot_shared->acpi_sinfo.pm1a_cnt_val = acpi_sinfo.pm1a_cnt_val;
|
||||
g_tboot_shared->acpi_sinfo.pm1b_cnt_val = acpi_sinfo.pm1b_cnt_val;
|
||||
|
||||
switch ( sleep_state )
|
||||
{
|
||||
|
||||
@@ -46,7 +46,15 @@ typedef struct __attribute__ ((__packed__)) {
|
||||
} uuid_t;
|
||||
|
||||
/* used to communicate between tboot and the launched kernel (i.e. Xen) */
|
||||
#define MAX_TB_ACPI_SINFO_SIZE 64
|
||||
|
||||
typedef struct __attribute__ ((__packed__)) {
|
||||
uint16_t pm1a_cnt;
|
||||
uint16_t pm1b_cnt;
|
||||
uint16_t pm1a_evt;
|
||||
uint16_t pm1b_evt;
|
||||
uint16_t pm1a_cnt_val;
|
||||
uint16_t pm1b_cnt_val;
|
||||
} tboot_acpi_sleep_info;
|
||||
|
||||
typedef struct __attribute__ ((__packed__)) {
|
||||
/* version 0x01+ fields: */
|
||||
@@ -58,8 +66,9 @@ typedef struct __attribute__ ((__packed__)) {
|
||||
uint32_t shutdown_type; /* type of shutdown (TB_SHUTDOWN_*) */
|
||||
uint32_t s3_tb_wakeup_entry;/* entry point for tboot s3 wake up */
|
||||
uint32_t s3_k_wakeup_entry; /* entry point for xen s3 wake up */
|
||||
uint8_t acpi_sinfo[MAX_TB_ACPI_SINFO_SIZE];
|
||||
/* where kernel put acpi sleep info in Sx */
|
||||
tboot_acpi_sleep_info
|
||||
acpi_sinfo; /* where kernel put acpi sleep info in Sx */
|
||||
uint8_t reserved[52]; /* this pad is for compat with old field */
|
||||
/* version 0x02+ fields: */
|
||||
uint32_t tboot_base; /* starting addr for tboot */
|
||||
uint32_t tboot_size; /* size of tboot */
|
||||
|
||||