diff options
author | Jiewen Yao <jiewen.yao@intel.com> | 2017-01-09 14:33:20 +0800 |
---|---|---|
committer | Jiewen Yao <jiewen.yao@intel.com> | 2017-01-12 15:58:13 +0800 |
commit | 32fd9c4150d0eaada633b6c35cc09c79d78ddaf8 (patch) | |
tree | 759bc5187cce5c5a5449ac282cb4b508c7542b4c /MdeModulePkg | |
parent | bf3b7aae7100b60ff8a387f0b7604dbb6ff29fc9 (diff) | |
download | edk2-32fd9c4150d0eaada633b6c35cc09c79d78ddaf8.zip edk2-32fd9c4150d0eaada633b6c35cc09c79d78ddaf8.tar.gz edk2-32fd9c4150d0eaada633b6c35cc09c79d78ddaf8.tar.bz2 |
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.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>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r-- | MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c index e008ce8..a06f8bb 100644 --- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c +++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c @@ -1628,7 +1628,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;
|