Reviewed-by: Star Zeng <star.z...@intel.com> -----Original Message----- From: Yao, Jiewen Sent: Monday, January 9, 2017 2:35 PM To: edk2-devel@lists.01.org Cc: Zeng, Star <star.z...@intel.com>; Tian, Feng <feng.t...@intel.com> Subject: [PATCH] MdeModulePkg/DxeCore:Clear RT attribute on SetCapabilities.
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.z...@intel.com> Cc: Feng Tian <feng.t...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen....@intel.com> --- MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c index bd7c6c6..056fc6a 100644 --- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c +++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c @@ -1624,7 +1624,7 @@ CoreSetMemorySpaceCapabilities ( Status = CoreConvertSpace (GCD_SET_CAPABILITIES_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, Capabilities, 0); if (!EFI_ERROR(Status)) { - CoreUpdateMemoryAttributes(BaseAddress, RShiftU64(Length, EFI_PAGE_SHIFT), Capabilities); + CoreUpdateMemoryAttributes(BaseAddress, RShiftU64(Length, + EFI_PAGE_SHIFT), Capabilities & (~EFI_MEMORY_RUNTIME)); } return Status; -- 2.7.4.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel