summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/CapsulePei/Common
diff options
context:
space:
mode:
authorStar Zeng <star.zeng@intel.com>2015-07-27 03:04:41 +0000
committerlzeng14 <lzeng14@Edk2>2015-07-27 03:04:41 +0000
commit716087e2becafbac134a2cbd5e7cc6da684adc74 (patch)
treeabdad696191ad4cbccf0e38364a8f0816d1161ac /MdeModulePkg/Universal/CapsulePei/Common
parent353f5ba92f9420266bbf5dd86c3faae35db6a478 (diff)
downloadedk2-platforms-716087e2becafbac134a2cbd5e7cc6da684adc74.tar.xz
MdeModulePkg CapsuleX64: Reduce reserved memory consumption
We are going to reduce reserved memory consumption by page table buffer, then OS can have more available memory to use. Take PhysicalAddressBits = 48 and 2MB page granularity as example, 1:1 Virtual to Physical identity mapping page table buffer needs to be ((512 + 1) * 512 + 1) * 4096 = 1075843072 bytes = 0x40201000 bytes. The code is updated to build 4G page table by default and only use 8 extra pages to handles > 4G request by page fault. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18069 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/CapsulePei/Common')
-rw-r--r--MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h b/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h
index d1ed24a572..6210d2133e 100644
--- a/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h
+++ b/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h
@@ -1,7 +1,7 @@
/** @file
Common header file.
-Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -16,6 +16,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define _CAPSULE_COMMON_HEADER_
//
+// 8 extra pages for PF handler.
+//
+#define EXTRA_PAGE_TABLE_PAGES 8
+
+//
// This capsule PEIM puts its private data at the start of the
// coalesced capsule. Here's the structure definition.
//
@@ -33,6 +38,7 @@ typedef struct {
#define CAPSULE_TEST_SIGNATURE SIGNATURE_32('T', 'E', 'S', 'T')
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
+#pragma pack(1)
typedef struct {
EFI_PHYSICAL_ADDRESS EntryPoint;
EFI_PHYSICAL_ADDRESS StackBufferBase;
@@ -41,14 +47,23 @@ typedef struct {
EFI_PHYSICAL_ADDRESS BlockListAddr;
EFI_PHYSICAL_ADDRESS MemoryBase64Ptr;
EFI_PHYSICAL_ADDRESS MemorySize64Ptr;
+ BOOLEAN Page1GSupport;
} SWITCH_32_TO_64_CONTEXT;
typedef struct {
UINT16 ReturnCs;
EFI_PHYSICAL_ADDRESS ReturnEntryPoint;
UINT64 ReturnStatus;
+ //
+ // NOTICE:
+ // Be careful about the Base field of IA32_DESCRIPTOR
+ // that is UINTN type.
+ // To extend new field for this structure, add it to
+ // right before this Gdtr field.
+ //
IA32_DESCRIPTOR Gdtr;
} SWITCH_64_TO_32_CONTEXT;
+#pragma pack()
#endif
/**