cpu/intel/smm: Drop em64t save state
This save state is just plainly wrong in many regards and em64t100 should be used. Checked with a model 0x17 core2 CPU. Change-Id: I4d89691e87c91dd12b34a44b74849b18b4ac5369 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36660 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
7f8b0cd89c
commit
1818733faa
|
@ -18,7 +18,6 @@
|
||||||
#include <cpu/x86/smm.h>
|
#include <cpu/x86/smm.h>
|
||||||
#include <cpu/x86/smi_deprecated.h>
|
#include <cpu/x86/smi_deprecated.h>
|
||||||
#include <cpu/amd/amd64_save_state.h>
|
#include <cpu/amd/amd64_save_state.h>
|
||||||
#include <cpu/intel/em64t_save_state.h>
|
|
||||||
#include <cpu/intel/em64t100_save_state.h>
|
#include <cpu/intel/em64t100_save_state.h>
|
||||||
#include <cpu/intel/em64t101_save_state.h>
|
#include <cpu/intel/em64t101_save_state.h>
|
||||||
#include <cpu/x86/legacy_save_state.h>
|
#include <cpu/x86/legacy_save_state.h>
|
||||||
|
@ -29,7 +28,7 @@
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AMD64,
|
AMD64,
|
||||||
EM64T,
|
EM64T100,
|
||||||
EM64T101,
|
EM64T101,
|
||||||
LEGACY
|
LEGACY
|
||||||
} save_state_type_t;
|
} save_state_type_t;
|
||||||
|
@ -38,7 +37,7 @@ typedef struct {
|
||||||
save_state_type_t type;
|
save_state_type_t type;
|
||||||
union {
|
union {
|
||||||
amd64_smm_state_save_area_t *amd64_state_save;
|
amd64_smm_state_save_area_t *amd64_state_save;
|
||||||
em64t_smm_state_save_area_t *em64t_state_save;
|
em64t100_smm_state_save_area_t *em64t100_state_save;
|
||||||
em64t101_smm_state_save_area_t *em64t101_state_save;
|
em64t101_smm_state_save_area_t *em64t101_state_save;
|
||||||
legacy_smm_state_save_area_t *legacy_state_save;
|
legacy_smm_state_save_area_t *legacy_state_save;
|
||||||
};
|
};
|
||||||
|
@ -178,10 +177,10 @@ void smi_handler(u32 smm_revision)
|
||||||
SMM_LEGACY_ARCH_OFFSET, node);
|
SMM_LEGACY_ARCH_OFFSET, node);
|
||||||
break;
|
break;
|
||||||
case 0x00030100:
|
case 0x00030100:
|
||||||
state_save.type = EM64T;
|
state_save.type = EM64T100;
|
||||||
state_save.em64t_state_save =
|
state_save.em64t100_state_save =
|
||||||
smm_save_state(smm_base,
|
smm_save_state(smm_base,
|
||||||
SMM_EM64T_ARCH_OFFSET, node);
|
SMM_EM64T100_ARCH_OFFSET, node);
|
||||||
break;
|
break;
|
||||||
case 0x00030101: /* SandyBridge, IvyBridge, and Haswell */
|
case 0x00030101: /* SandyBridge, IvyBridge, and Haswell */
|
||||||
state_save.type = EM64T101;
|
state_save.type = EM64T101;
|
||||||
|
|
|
@ -17,10 +17,8 @@
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <cpu/x86/smm.h>
|
#include <cpu/x86/smm.h>
|
||||||
|
|
||||||
/* Intel Revision 30100 SMM State-Save Area
|
/* Intel Revision 30100 SMM State-Save Area */
|
||||||
* The following processor architectures use this:
|
|
||||||
* - Bay Trail
|
|
||||||
*/
|
|
||||||
#define SMM_EM64T100_ARCH_OFFSET 0x7c00
|
#define SMM_EM64T100_ARCH_OFFSET 0x7c00
|
||||||
#define SMM_EM64T100_SAVE_STATE_OFFSET \
|
#define SMM_EM64T100_SAVE_STATE_OFFSET \
|
||||||
SMM_SAVE_STATE_BEGIN(SMM_EM64T100_ARCH_OFFSET)
|
SMM_SAVE_STATE_BEGIN(SMM_EM64T100_ARCH_OFFSET)
|
||||||
|
|
|
@ -1,101 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the coreboot project.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; version 2 of the License.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __EM64T_SAVE_STATE_H__
|
|
||||||
#define __EM64T_SAVE_STATE_H__
|
|
||||||
|
|
||||||
#include <types.h>
|
|
||||||
#include <cpu/x86/smm.h>
|
|
||||||
|
|
||||||
/* Intel Core 2 (EM64T) SMM State-Save Area
|
|
||||||
* starts @ 0x7c00
|
|
||||||
*/
|
|
||||||
#define SMM_EM64T_ARCH_OFFSET 0x7c00
|
|
||||||
#define SMM_EM64T_SAVE_STATE_OFFSET \
|
|
||||||
SMM_SAVE_STATE_BEGIN(SMM_EM64T_ARCH_OFFSET)
|
|
||||||
typedef struct {
|
|
||||||
u8 reserved0[256];
|
|
||||||
u8 reserved1[208];
|
|
||||||
|
|
||||||
u32 gdtr_upper_base;
|
|
||||||
u32 ldtr_upper_base;
|
|
||||||
u32 idtr_upper_base;
|
|
||||||
|
|
||||||
u8 reserved2[4];
|
|
||||||
|
|
||||||
u64 io_rdi;
|
|
||||||
u64 io_rip;
|
|
||||||
u64 io_rcx;
|
|
||||||
u64 io_rsi;
|
|
||||||
u64 cr4;
|
|
||||||
|
|
||||||
u8 reserved3[68];
|
|
||||||
|
|
||||||
u64 gdtr_base;
|
|
||||||
u64 idtr_base;
|
|
||||||
u64 ldtr_base;
|
|
||||||
|
|
||||||
u8 reserved4[84];
|
|
||||||
|
|
||||||
u32 smm_revision;
|
|
||||||
u32 smbase;
|
|
||||||
|
|
||||||
u16 io_restart;
|
|
||||||
u16 autohalt_restart;
|
|
||||||
|
|
||||||
u8 reserved5[24];
|
|
||||||
|
|
||||||
u64 r15;
|
|
||||||
u64 r14;
|
|
||||||
u64 r13;
|
|
||||||
u64 r12;
|
|
||||||
u64 r11;
|
|
||||||
u64 r10;
|
|
||||||
u64 r9;
|
|
||||||
u64 r8;
|
|
||||||
|
|
||||||
u64 rax;
|
|
||||||
u64 rcx;
|
|
||||||
u64 rdx;
|
|
||||||
u64 rbx;
|
|
||||||
|
|
||||||
u64 rsp;
|
|
||||||
u64 rbp;
|
|
||||||
u64 rsi;
|
|
||||||
u64 rdi;
|
|
||||||
|
|
||||||
|
|
||||||
u64 io_mem_addr;
|
|
||||||
u32 io_misc_info;
|
|
||||||
|
|
||||||
u32 es_sel;
|
|
||||||
u32 cs_sel;
|
|
||||||
u32 ss_sel;
|
|
||||||
u32 ds_sel;
|
|
||||||
u32 fs_sel;
|
|
||||||
u32 gs_sel;
|
|
||||||
|
|
||||||
u32 ldtr_sel;
|
|
||||||
u32 tr_sel;
|
|
||||||
|
|
||||||
u64 dr7;
|
|
||||||
u64 dr6;
|
|
||||||
u64 rip;
|
|
||||||
u64 efer;
|
|
||||||
u64 rflags;
|
|
||||||
|
|
||||||
u64 cr3;
|
|
||||||
u64 cr0;
|
|
||||||
} __packed em64t_smm_state_save_area_t;
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue