* [PATCH 1/1] OvmfPkg/Include: remove QemuSmramSaveStateMap.h
@ 2023-07-04 9:52 Gerd Hoffmann
2023-09-07 13:55 ` [edk2-devel] " Ard Biesheuvel
0 siblings, 1 reply; 2+ messages in thread
From: Gerd Hoffmann @ 2023-07-04 9:52 UTC (permalink / raw)
To: devel
Cc: Jordan Justen, Gerd Hoffmann, Tom Lendacky, Jiewen Yao,
Michael Roth, Min Xu, Erdem Aktas, James Bottomley,
Ard Biesheuvel
The qemu/kvm SMM emulation uses the AMD SaveState layout.
So, now that we have AMD SaveState support merged we can just use
Amd/SmramSaveStateMap.h, QemuSmramSaveStateMap.h is not needed any more.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
.../Include/Register/QemuSmramSaveStateMap.h | 178 ------------------
.../PeiDxeMemEncryptSevLibInternal.c | 4 +-
.../SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 21 +--
3 files changed, 12 insertions(+), 191 deletions(-)
delete mode 100644 OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
diff --git a/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h b/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
deleted file mode 100644
index 8ffde0548c4c..000000000000
--- a/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/** @file
-SMRAM Save State Map Definitions.
-
-SMRAM Save State Map definitions based on contents of the
-Intel(R) 64 and IA-32 Architectures Software Developer's Manual
- Volume 3C, Section 34.4 SMRAM
- Volume 3C, Section 34.5 SMI Handler Execution Environment
- Volume 3C, Section 34.7 Managing Synchronous and Asynchronous SMIs
-
-and the AMD64 Architecture Programmer's Manual
- Volume 2, Section 10.2 SMM Resources
-
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
-Copyright (c) 2015, Red Hat, Inc.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef __QEMU_SMRAM_SAVE_STATE_MAP_H__
-#define __QEMU_SMRAM_SAVE_STATE_MAP_H__
-
-#pragma pack (1)
-
-///
-/// 32-bit SMRAM Save State Map
-///
-typedef struct {
- UINT8 Reserved0[0x200]; // 7c00h
- UINT8 Reserved1[0xf8]; // 7e00h
- UINT32 SMBASE; // 7ef8h
- UINT32 SMMRevId; // 7efch
- UINT16 IORestart; // 7f00h
- UINT16 AutoHALTRestart; // 7f02h
- UINT8 Reserved2[0x9C]; // 7f08h
- UINT32 IOMemAddr; // 7fa0h
- UINT32 IOMisc; // 7fa4h
- UINT32 _ES; // 7fa8h
- UINT32 _CS; // 7fach
- UINT32 _SS; // 7fb0h
- UINT32 _DS; // 7fb4h
- UINT32 _FS; // 7fb8h
- UINT32 _GS; // 7fbch
- UINT32 Reserved3; // 7fc0h
- UINT32 _TR; // 7fc4h
- UINT32 _DR7; // 7fc8h
- UINT32 _DR6; // 7fcch
- UINT32 _EAX; // 7fd0h
- UINT32 _ECX; // 7fd4h
- UINT32 _EDX; // 7fd8h
- UINT32 _EBX; // 7fdch
- UINT32 _ESP; // 7fe0h
- UINT32 _EBP; // 7fe4h
- UINT32 _ESI; // 7fe8h
- UINT32 _EDI; // 7fech
- UINT32 _EIP; // 7ff0h
- UINT32 _EFLAGS; // 7ff4h
- UINT32 _CR3; // 7ff8h
- UINT32 _CR0; // 7ffch
-} QEMU_SMRAM_SAVE_STATE_MAP32;
-
-///
-/// 64-bit SMRAM Save State Map
-///
-typedef struct {
- UINT8 Reserved0[0x200]; // 7c00h
-
- UINT16 _ES; // 7e00h
- UINT16 _ESAccessRights; // 7e02h
- UINT32 _ESLimit; // 7e04h
- UINT64 _ESBase; // 7e08h
-
- UINT16 _CS; // 7e10h
- UINT16 _CSAccessRights; // 7e12h
- UINT32 _CSLimit; // 7e14h
- UINT64 _CSBase; // 7e18h
-
- UINT16 _SS; // 7e20h
- UINT16 _SSAccessRights; // 7e22h
- UINT32 _SSLimit; // 7e24h
- UINT64 _SSBase; // 7e28h
-
- UINT16 _DS; // 7e30h
- UINT16 _DSAccessRights; // 7e32h
- UINT32 _DSLimit; // 7e34h
- UINT64 _DSBase; // 7e38h
-
- UINT16 _FS; // 7e40h
- UINT16 _FSAccessRights; // 7e42h
- UINT32 _FSLimit; // 7e44h
- UINT64 _FSBase; // 7e48h
-
- UINT16 _GS; // 7e50h
- UINT16 _GSAccessRights; // 7e52h
- UINT32 _GSLimit; // 7e54h
- UINT64 _GSBase; // 7e58h
-
- UINT32 _GDTRReserved1; // 7e60h
- UINT16 _GDTRLimit; // 7e64h
- UINT16 _GDTRReserved2; // 7e66h
- UINT64 _GDTRBase; // 7e68h
-
- UINT16 _LDTR; // 7e70h
- UINT16 _LDTRAccessRights; // 7e72h
- UINT32 _LDTRLimit; // 7e74h
- UINT64 _LDTRBase; // 7e78h
-
- UINT32 _IDTRReserved1; // 7e80h
- UINT16 _IDTRLimit; // 7e84h
- UINT16 _IDTRReserved2; // 7e86h
- UINT64 _IDTRBase; // 7e88h
-
- UINT16 _TR; // 7e90h
- UINT16 _TRAccessRights; // 7e92h
- UINT32 _TRLimit; // 7e94h
- UINT64 _TRBase; // 7e98h
-
- UINT64 IO_RIP; // 7ea0h
- UINT64 IO_RCX; // 7ea8h
- UINT64 IO_RSI; // 7eb0h
- UINT64 IO_RDI; // 7eb8h
- UINT32 IO_DWord; // 7ec0h
- UINT8 Reserved1[0x04]; // 7ec4h
- UINT8 IORestart; // 7ec8h
- UINT8 AutoHALTRestart; // 7ec9h
- UINT8 Reserved2[0x06]; // 7ecah
-
- UINT64 IA32_EFER; // 7ed0h
- UINT64 SVM_Guest; // 7ed8h
- UINT64 SVM_GuestVMCB; // 7ee0h
- UINT64 SVM_GuestVIntr; // 7ee8h
- UINT8 Reserved3[0x0c]; // 7ef0h
-
- UINT32 SMMRevId; // 7efch
- UINT32 SMBASE; // 7f00h
-
- UINT8 Reserved4[0x1c]; // 7f04h
- UINT64 SVM_GuestPAT; // 7f20h
- UINT64 SVM_HostIA32_EFER; // 7f28h
- UINT64 SVM_HostCR4; // 7f30h
- UINT64 SVM_HostCR3; // 7f38h
- UINT64 SVM_HostCR0; // 7f40h
-
- UINT64 _CR4; // 7f48h
- UINT64 _CR3; // 7f50h
- UINT64 _CR0; // 7f58h
- UINT64 _DR7; // 7f60h
- UINT64 _DR6; // 7f68h
- UINT64 _RFLAGS; // 7f70h
- UINT64 _RIP; // 7f78h
- UINT64 _R15; // 7f80h
- UINT64 _R14; // 7f88h
- UINT64 _R13; // 7f90h
- UINT64 _R12; // 7f98h
- UINT64 _R11; // 7fa0h
- UINT64 _R10; // 7fa8h
- UINT64 _R9; // 7fb0h
- UINT64 _R8; // 7fb8h
- UINT64 _RDI; // 7fc0h
- UINT64 _RSI; // 7fc8h
- UINT64 _RBP; // 7fd0h
- UINT64 _RSP; // 7fd8h
- UINT64 _RBX; // 7fe0h
- UINT64 _RDX; // 7fe8h
- UINT64 _RCX; // 7ff0h
- UINT64 _RAX; // 7ff8h
-} QEMU_SMRAM_SAVE_STATE_MAP64;
-
-///
-/// Union of 32-bit and 64-bit SMRAM Save State Maps
-///
-typedef union {
- QEMU_SMRAM_SAVE_STATE_MAP32 x86;
- QEMU_SMRAM_SAVE_STATE_MAP64 x64;
-} QEMU_SMRAM_SAVE_STATE_MAP;
-
-#pragma pack ()
-
-#endif
diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
index 78ea16ae06ff..43a2a3e3b7e3 100644
--- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
@@ -12,7 +12,7 @@
#include <Library/DebugLib.h>
#include <Library/MemEncryptSevLib.h>
#include <Library/PcdLib.h>
-#include <Register/QemuSmramSaveStateMap.h>
+#include <Register/Amd/SmramSaveStateMap.h>
#include <Register/SmramSaveStateMap.h>
#include <Uefi/UefiBaseType.h>
@@ -49,7 +49,7 @@ MemEncryptSevLocateInitialSmramSaveStateMapPages (
}
MapStart = SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET;
- MapEnd = MapStart + sizeof (QEMU_SMRAM_SAVE_STATE_MAP);
+ MapEnd = MapStart + sizeof (AMD_SMRAM_SAVE_STATE_MAP);
MapPagesStart = MapStart & ~(UINTN)EFI_PAGE_MASK;
MapPagesEnd = ALIGN_VALUE (MapEnd, EFI_PAGE_SIZE);
MapPagesSize = MapPagesEnd - MapPagesStart;
diff --git a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
index 4c354bafe42f..63822b126e3d 100644
--- a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
+++ b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
@@ -20,8 +20,7 @@
#include <Library/HobLib.h>
#include <Pcd/CpuHotEjectData.h>
#include <PiSmm.h>
-#include <Register/Intel/SmramSaveStateMap.h>
-#include <Register/QemuSmramSaveStateMap.h>
+#include <Register/Amd/SmramSaveStateMap.h>
#include <Guid/SmmBaseHob.h>
//
@@ -90,15 +89,15 @@ SmmCpuFeaturesInitializeProcessor (
IN CPU_HOT_PLUG_DATA *CpuHotPlugData
)
{
- QEMU_SMRAM_SAVE_STATE_MAP *CpuState;
+ AMD_SMRAM_SAVE_STATE_MAP *CpuState;
//
// Configure SMBASE.
//
- CpuState = (QEMU_SMRAM_SAVE_STATE_MAP *)(UINTN)(
- SMM_DEFAULT_SMBASE +
- SMRAM_SAVE_STATE_MAP_OFFSET
- );
+ CpuState = (AMD_SMRAM_SAVE_STATE_MAP *)(UINTN)(
+ SMM_DEFAULT_SMBASE +
+ SMRAM_SAVE_STATE_MAP_OFFSET
+ );
if ((CpuState->x86.SMMRevId & 0xFFFF) == 0) {
CpuState->x86.SMBASE = (UINT32)CpuHotPlugData->SmBase[CpuIndex];
} else {
@@ -150,10 +149,10 @@ SmmCpuFeaturesHookReturnFromSmm (
IN UINT64 NewInstructionPointer
)
{
- UINT64 OriginalInstructionPointer;
- QEMU_SMRAM_SAVE_STATE_MAP *CpuSaveState;
+ UINT64 OriginalInstructionPointer;
+ AMD_SMRAM_SAVE_STATE_MAP *CpuSaveState;
- CpuSaveState = (QEMU_SMRAM_SAVE_STATE_MAP *)CpuState;
+ CpuSaveState = (AMD_SMRAM_SAVE_STATE_MAP *)CpuState;
if ((CpuSaveState->x86.SMMRevId & 0xFFFF) == 0) {
OriginalInstructionPointer = (UINT64)CpuSaveState->x86._EIP;
CpuSaveState->x86._EIP = (UINT32)NewInstructionPointer;
@@ -166,7 +165,7 @@ SmmCpuFeaturesHookReturnFromSmm (
}
} else {
OriginalInstructionPointer = CpuSaveState->x64._RIP;
- if ((CpuSaveState->x64.IA32_EFER & LMA) == 0) {
+ if ((CpuSaveState->x64.EFER & LMA) == 0) {
CpuSaveState->x64._RIP = (UINT32)NewInstructionPointer32;
} else {
CpuSaveState->x64._RIP = (UINT32)NewInstructionPointer;
--
2.41.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/Include: remove QemuSmramSaveStateMap.h
2023-07-04 9:52 [PATCH 1/1] OvmfPkg/Include: remove QemuSmramSaveStateMap.h Gerd Hoffmann
@ 2023-09-07 13:55 ` Ard Biesheuvel
0 siblings, 0 replies; 2+ messages in thread
From: Ard Biesheuvel @ 2023-09-07 13:55 UTC (permalink / raw)
To: Gerd Hoffmann
Cc: devel, Jordan Justen, Tom Lendacky, Jiewen Yao, Michael Roth,
Min Xu, Erdem Aktas, James Bottomley, Ard Biesheuvel
On Tue, 4 Jul 2023 at 11:52, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> The qemu/kvm SMM emulation uses the AMD SaveState layout.
>
> So, now that we have AMD SaveState support merged we can just use
> Amd/SmramSaveStateMap.h, QemuSmramSaveStateMap.h is not needed any more.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
I'll queue this one up as well.
> ---
> .../Include/Register/QemuSmramSaveStateMap.h | 178 ------------------
> .../PeiDxeMemEncryptSevLibInternal.c | 4 +-
> .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 21 +--
> 3 files changed, 12 insertions(+), 191 deletions(-)
> delete mode 100644 OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
>
> diff --git a/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h b/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
> deleted file mode 100644
> index 8ffde0548c4c..000000000000
> --- a/OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
> +++ /dev/null
> @@ -1,178 +0,0 @@
> -/** @file
> -SMRAM Save State Map Definitions.
> -
> -SMRAM Save State Map definitions based on contents of the
> -Intel(R) 64 and IA-32 Architectures Software Developer's Manual
> - Volume 3C, Section 34.4 SMRAM
> - Volume 3C, Section 34.5 SMI Handler Execution Environment
> - Volume 3C, Section 34.7 Managing Synchronous and Asynchronous SMIs
> -
> -and the AMD64 Architecture Programmer's Manual
> - Volume 2, Section 10.2 SMM Resources
> -
> -Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
> -Copyright (c) 2015, Red Hat, Inc.<BR>
> -SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#ifndef __QEMU_SMRAM_SAVE_STATE_MAP_H__
> -#define __QEMU_SMRAM_SAVE_STATE_MAP_H__
> -
> -#pragma pack (1)
> -
> -///
> -/// 32-bit SMRAM Save State Map
> -///
> -typedef struct {
> - UINT8 Reserved0[0x200]; // 7c00h
> - UINT8 Reserved1[0xf8]; // 7e00h
> - UINT32 SMBASE; // 7ef8h
> - UINT32 SMMRevId; // 7efch
> - UINT16 IORestart; // 7f00h
> - UINT16 AutoHALTRestart; // 7f02h
> - UINT8 Reserved2[0x9C]; // 7f08h
> - UINT32 IOMemAddr; // 7fa0h
> - UINT32 IOMisc; // 7fa4h
> - UINT32 _ES; // 7fa8h
> - UINT32 _CS; // 7fach
> - UINT32 _SS; // 7fb0h
> - UINT32 _DS; // 7fb4h
> - UINT32 _FS; // 7fb8h
> - UINT32 _GS; // 7fbch
> - UINT32 Reserved3; // 7fc0h
> - UINT32 _TR; // 7fc4h
> - UINT32 _DR7; // 7fc8h
> - UINT32 _DR6; // 7fcch
> - UINT32 _EAX; // 7fd0h
> - UINT32 _ECX; // 7fd4h
> - UINT32 _EDX; // 7fd8h
> - UINT32 _EBX; // 7fdch
> - UINT32 _ESP; // 7fe0h
> - UINT32 _EBP; // 7fe4h
> - UINT32 _ESI; // 7fe8h
> - UINT32 _EDI; // 7fech
> - UINT32 _EIP; // 7ff0h
> - UINT32 _EFLAGS; // 7ff4h
> - UINT32 _CR3; // 7ff8h
> - UINT32 _CR0; // 7ffch
> -} QEMU_SMRAM_SAVE_STATE_MAP32;
> -
> -///
> -/// 64-bit SMRAM Save State Map
> -///
> -typedef struct {
> - UINT8 Reserved0[0x200]; // 7c00h
> -
> - UINT16 _ES; // 7e00h
> - UINT16 _ESAccessRights; // 7e02h
> - UINT32 _ESLimit; // 7e04h
> - UINT64 _ESBase; // 7e08h
> -
> - UINT16 _CS; // 7e10h
> - UINT16 _CSAccessRights; // 7e12h
> - UINT32 _CSLimit; // 7e14h
> - UINT64 _CSBase; // 7e18h
> -
> - UINT16 _SS; // 7e20h
> - UINT16 _SSAccessRights; // 7e22h
> - UINT32 _SSLimit; // 7e24h
> - UINT64 _SSBase; // 7e28h
> -
> - UINT16 _DS; // 7e30h
> - UINT16 _DSAccessRights; // 7e32h
> - UINT32 _DSLimit; // 7e34h
> - UINT64 _DSBase; // 7e38h
> -
> - UINT16 _FS; // 7e40h
> - UINT16 _FSAccessRights; // 7e42h
> - UINT32 _FSLimit; // 7e44h
> - UINT64 _FSBase; // 7e48h
> -
> - UINT16 _GS; // 7e50h
> - UINT16 _GSAccessRights; // 7e52h
> - UINT32 _GSLimit; // 7e54h
> - UINT64 _GSBase; // 7e58h
> -
> - UINT32 _GDTRReserved1; // 7e60h
> - UINT16 _GDTRLimit; // 7e64h
> - UINT16 _GDTRReserved2; // 7e66h
> - UINT64 _GDTRBase; // 7e68h
> -
> - UINT16 _LDTR; // 7e70h
> - UINT16 _LDTRAccessRights; // 7e72h
> - UINT32 _LDTRLimit; // 7e74h
> - UINT64 _LDTRBase; // 7e78h
> -
> - UINT32 _IDTRReserved1; // 7e80h
> - UINT16 _IDTRLimit; // 7e84h
> - UINT16 _IDTRReserved2; // 7e86h
> - UINT64 _IDTRBase; // 7e88h
> -
> - UINT16 _TR; // 7e90h
> - UINT16 _TRAccessRights; // 7e92h
> - UINT32 _TRLimit; // 7e94h
> - UINT64 _TRBase; // 7e98h
> -
> - UINT64 IO_RIP; // 7ea0h
> - UINT64 IO_RCX; // 7ea8h
> - UINT64 IO_RSI; // 7eb0h
> - UINT64 IO_RDI; // 7eb8h
> - UINT32 IO_DWord; // 7ec0h
> - UINT8 Reserved1[0x04]; // 7ec4h
> - UINT8 IORestart; // 7ec8h
> - UINT8 AutoHALTRestart; // 7ec9h
> - UINT8 Reserved2[0x06]; // 7ecah
> -
> - UINT64 IA32_EFER; // 7ed0h
> - UINT64 SVM_Guest; // 7ed8h
> - UINT64 SVM_GuestVMCB; // 7ee0h
> - UINT64 SVM_GuestVIntr; // 7ee8h
> - UINT8 Reserved3[0x0c]; // 7ef0h
> -
> - UINT32 SMMRevId; // 7efch
> - UINT32 SMBASE; // 7f00h
> -
> - UINT8 Reserved4[0x1c]; // 7f04h
> - UINT64 SVM_GuestPAT; // 7f20h
> - UINT64 SVM_HostIA32_EFER; // 7f28h
> - UINT64 SVM_HostCR4; // 7f30h
> - UINT64 SVM_HostCR3; // 7f38h
> - UINT64 SVM_HostCR0; // 7f40h
> -
> - UINT64 _CR4; // 7f48h
> - UINT64 _CR3; // 7f50h
> - UINT64 _CR0; // 7f58h
> - UINT64 _DR7; // 7f60h
> - UINT64 _DR6; // 7f68h
> - UINT64 _RFLAGS; // 7f70h
> - UINT64 _RIP; // 7f78h
> - UINT64 _R15; // 7f80h
> - UINT64 _R14; // 7f88h
> - UINT64 _R13; // 7f90h
> - UINT64 _R12; // 7f98h
> - UINT64 _R11; // 7fa0h
> - UINT64 _R10; // 7fa8h
> - UINT64 _R9; // 7fb0h
> - UINT64 _R8; // 7fb8h
> - UINT64 _RDI; // 7fc0h
> - UINT64 _RSI; // 7fc8h
> - UINT64 _RBP; // 7fd0h
> - UINT64 _RSP; // 7fd8h
> - UINT64 _RBX; // 7fe0h
> - UINT64 _RDX; // 7fe8h
> - UINT64 _RCX; // 7ff0h
> - UINT64 _RAX; // 7ff8h
> -} QEMU_SMRAM_SAVE_STATE_MAP64;
> -
> -///
> -/// Union of 32-bit and 64-bit SMRAM Save State Maps
> -///
> -typedef union {
> - QEMU_SMRAM_SAVE_STATE_MAP32 x86;
> - QEMU_SMRAM_SAVE_STATE_MAP64 x64;
> -} QEMU_SMRAM_SAVE_STATE_MAP;
> -
> -#pragma pack ()
> -
> -#endif
> diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
> index 78ea16ae06ff..43a2a3e3b7e3 100644
> --- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
> +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
> @@ -12,7 +12,7 @@
> #include <Library/DebugLib.h>
> #include <Library/MemEncryptSevLib.h>
> #include <Library/PcdLib.h>
> -#include <Register/QemuSmramSaveStateMap.h>
> +#include <Register/Amd/SmramSaveStateMap.h>
> #include <Register/SmramSaveStateMap.h>
> #include <Uefi/UefiBaseType.h>
>
> @@ -49,7 +49,7 @@ MemEncryptSevLocateInitialSmramSaveStateMapPages (
> }
>
> MapStart = SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET;
> - MapEnd = MapStart + sizeof (QEMU_SMRAM_SAVE_STATE_MAP);
> + MapEnd = MapStart + sizeof (AMD_SMRAM_SAVE_STATE_MAP);
> MapPagesStart = MapStart & ~(UINTN)EFI_PAGE_MASK;
> MapPagesEnd = ALIGN_VALUE (MapEnd, EFI_PAGE_SIZE);
> MapPagesSize = MapPagesEnd - MapPagesStart;
> diff --git a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
> index 4c354bafe42f..63822b126e3d 100644
> --- a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
> +++ b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
> @@ -20,8 +20,7 @@
> #include <Library/HobLib.h>
> #include <Pcd/CpuHotEjectData.h>
> #include <PiSmm.h>
> -#include <Register/Intel/SmramSaveStateMap.h>
> -#include <Register/QemuSmramSaveStateMap.h>
> +#include <Register/Amd/SmramSaveStateMap.h>
> #include <Guid/SmmBaseHob.h>
>
> //
> @@ -90,15 +89,15 @@ SmmCpuFeaturesInitializeProcessor (
> IN CPU_HOT_PLUG_DATA *CpuHotPlugData
> )
> {
> - QEMU_SMRAM_SAVE_STATE_MAP *CpuState;
> + AMD_SMRAM_SAVE_STATE_MAP *CpuState;
>
> //
> // Configure SMBASE.
> //
> - CpuState = (QEMU_SMRAM_SAVE_STATE_MAP *)(UINTN)(
> - SMM_DEFAULT_SMBASE +
> - SMRAM_SAVE_STATE_MAP_OFFSET
> - );
> + CpuState = (AMD_SMRAM_SAVE_STATE_MAP *)(UINTN)(
> + SMM_DEFAULT_SMBASE +
> + SMRAM_SAVE_STATE_MAP_OFFSET
> + );
> if ((CpuState->x86.SMMRevId & 0xFFFF) == 0) {
> CpuState->x86.SMBASE = (UINT32)CpuHotPlugData->SmBase[CpuIndex];
> } else {
> @@ -150,10 +149,10 @@ SmmCpuFeaturesHookReturnFromSmm (
> IN UINT64 NewInstructionPointer
> )
> {
> - UINT64 OriginalInstructionPointer;
> - QEMU_SMRAM_SAVE_STATE_MAP *CpuSaveState;
> + UINT64 OriginalInstructionPointer;
> + AMD_SMRAM_SAVE_STATE_MAP *CpuSaveState;
>
> - CpuSaveState = (QEMU_SMRAM_SAVE_STATE_MAP *)CpuState;
> + CpuSaveState = (AMD_SMRAM_SAVE_STATE_MAP *)CpuState;
> if ((CpuSaveState->x86.SMMRevId & 0xFFFF) == 0) {
> OriginalInstructionPointer = (UINT64)CpuSaveState->x86._EIP;
> CpuSaveState->x86._EIP = (UINT32)NewInstructionPointer;
> @@ -166,7 +165,7 @@ SmmCpuFeaturesHookReturnFromSmm (
> }
> } else {
> OriginalInstructionPointer = CpuSaveState->x64._RIP;
> - if ((CpuSaveState->x64.IA32_EFER & LMA) == 0) {
> + if ((CpuSaveState->x64.EFER & LMA) == 0) {
> CpuSaveState->x64._RIP = (UINT32)NewInstructionPointer32;
> } else {
> CpuSaveState->x64._RIP = (UINT32)NewInstructionPointer;
> --
> 2.41.0
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108391): https://edk2.groups.io/g/devel/message/108391
Mute This Topic: https://groups.io/mt/99943529/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-09-07 13:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-04 9:52 [PATCH 1/1] OvmfPkg/Include: remove QemuSmramSaveStateMap.h Gerd Hoffmann
2023-09-07 13:55 ` [edk2-devel] " Ard Biesheuvel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox