]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/DxeCore:Clear RT attribute on SetCapabilities.
authorJiewen Yao <jiewen.yao@intel.com>
Mon, 9 Jan 2017 06:33:20 +0000 (14:33 +0800)
committerJiewen Yao <jiewen.yao@intel.com>
Thu, 12 Jan 2017 07:58:13 +0000 (15:58 +0800)
When gDS->SetMemorySpaceCapabilities() is called,
current DXE core will sync all GCD attributes to memory map
attributes, including RUNTIME attributes.
It is wrong, because RUNTIME attributes should be set for
runtime memory only.

This fix clears the RUNTIME attributes before convert to UEFI
memory map. So that the UEFI memory map is good after
gDS->SetMemorySpaceCapabilities() is called.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
MdeModulePkg/Core/Dxe/Gcd/Gcd.c

index e008ce8c12339700142c1375f3185c68a79c5a23..a06f8bb77cb01666a48100dd3790c7aa5e0ec621 100644 (file)
@@ -1628,7 +1628,7 @@ CoreSetMemorySpaceCapabilities (
 \r
   Status = CoreConvertSpace (GCD_SET_CAPABILITIES_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, Capabilities, 0);\r
   if (!EFI_ERROR(Status)) {\r
-    CoreUpdateMemoryAttributes(BaseAddress, RShiftU64(Length, EFI_PAGE_SHIFT), Capabilities);\r
+    CoreUpdateMemoryAttributes(BaseAddress, RShiftU64(Length, EFI_PAGE_SHIFT), Capabilities & (~EFI_MEMORY_RUNTIME));\r
   }\r
 \r
   return Status;\r