SMM: Fix save state searching for GSMI

The search for save state was comparing the entire RAX
value when it needs to just operate on the bottom byte
so it can find the GSMI command in bits 7:0 but not the
extended command code in bits 15:8.

Change-Id: I526c60e6b3732fa3680a17a4bed2a2ef23ccf94f
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/1774
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Duncan Laurie 2012-10-10 12:11:55 -07:00 committed by Ronald G. Minnich
parent 38109d558a
commit 4b85d9b434
1 changed files with 2 additions and 2 deletions

View File

@ -429,7 +429,7 @@ static void southbridge_smi_sleep(unsigned int node, smm_state_save_area_t *stat
* core in case we are not running on the same core that * core in case we are not running on the same core that
* initiated the IO transaction. * initiated the IO transaction.
*/ */
static em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u64 cmd) static em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u8 cmd)
{ {
em64t101_smm_state_save_area_t *state; em64t101_smm_state_save_area_t *state;
u32 base = smi_get_tseg_base() + 0x8000 + 0x7d00; u32 base = smi_get_tseg_base() + 0x8000 + 0x7d00;
@ -453,7 +453,7 @@ static em64t101_smm_state_save_area_t *smi_apmc_find_state_save(u64 cmd)
continue; continue;
/* Check AX against the requested command */ /* Check AX against the requested command */
if (state->rax != cmd) if ((state->rax & 0xff) != cmd)
continue; continue;
return state; return state;