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:
Keir Fraser committed 2008-05-23 09:48:44 +01:00
1 parent 80a73755d2
commit 1580fd56fd
2 files changed
+23 -6

No files matched your search

+11 -3
View File
@@ -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 )
{
+12 -3
View File
@@ -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 */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.