]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c
OvmfPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / Library / BaseMemEncryptSevLib / PeiDxeMemEncryptSevLibInternal.c
CommitLineData
a1f22614
BS
1/** @file\r
2\r
3 Secure Encrypted Virtualization (SEV) library helper function\r
4\r
b97dc4b9 5 Copyright (c) 2017 - 2020, AMD Incorporated. All rights reserved.<BR>\r
a1f22614 6\r
b26f0cf9 7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
a1f22614
BS
8\r
9**/\r
10\r
11#include <Library/BaseLib.h>\r
12#include <Library/DebugLib.h>\r
bd13ecf3 13#include <Library/MemEncryptSevLib.h>\r
61a044c6 14#include <Library/PcdLib.h>\r
61a044c6
LE
15#include <Register/QemuSmramSaveStateMap.h>\r
16#include <Register/SmramSaveStateMap.h>\r
17#include <Uefi/UefiBaseType.h>\r
a1f22614 18\r
61a044c6
LE
19/**\r
20 Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM\r
21 Save State Map.\r
22\r
23 @param[out] BaseAddress The base address of the lowest-address page that\r
24 covers the initial SMRAM Save State Map.\r
25\r
26 @param[out] NumberOfPages The number of pages in the page range that covers\r
27 the initial SMRAM Save State Map.\r
28\r
29 @retval RETURN_SUCCESS BaseAddress and NumberOfPages have been set on\r
30 output.\r
31\r
32 @retval RETURN_UNSUPPORTED SMM is unavailable.\r
33**/\r
34RETURN_STATUS\r
35EFIAPI\r
36MemEncryptSevLocateInitialSmramSaveStateMapPages (\r
ac0a286f
MK
37 OUT UINTN *BaseAddress,\r
38 OUT UINTN *NumberOfPages\r
61a044c6
LE
39 )\r
40{\r
ac0a286f
MK
41 UINTN MapStart;\r
42 UINTN MapEnd;\r
43 UINTN MapPagesStart; // MapStart rounded down to page boundary\r
44 UINTN MapPagesEnd; // MapEnd rounded up to page boundary\r
45 UINTN MapPagesSize; // difference between MapPagesStart and MapPagesEnd\r
61a044c6
LE
46\r
47 if (!FeaturePcdGet (PcdSmmSmramRequire)) {\r
48 return RETURN_UNSUPPORTED;\r
49 }\r
50\r
51 MapStart = SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET;\r
52 MapEnd = MapStart + sizeof (QEMU_SMRAM_SAVE_STATE_MAP);\r
53 MapPagesStart = MapStart & ~(UINTN)EFI_PAGE_MASK;\r
54 MapPagesEnd = ALIGN_VALUE (MapEnd, EFI_PAGE_SIZE);\r
55 MapPagesSize = MapPagesEnd - MapPagesStart;\r
56\r
57 ASSERT ((MapPagesSize & EFI_PAGE_MASK) == 0);\r
58\r
59 *BaseAddress = MapPagesStart;\r
60 *NumberOfPages = MapPagesSize >> EFI_PAGE_SHIFT;\r
61\r
62 return RETURN_SUCCESS;\r
63}\r