mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 21:54:27 +02:00
PrmPkg: Don't Set Access Attributes of Runtime MMIO Ranges
Passing in access attributes to SetMemorySpaceAttributes() will cause the existing attributes to be overwritten. The MMIO region should have the appropriate attributes applied during memory protection initialization and the attributes of the memory space descriptor are inaccurate. Don't pass in any CPU arch attributes so SetMemorySpaceAttributes() doesn't subsequently call gCpu->SetMemoryAttributes(). Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
This commit is contained in:
parent
a7abb77c59
commit
a96d2a8f2d
@ -152,10 +152,15 @@ SetRuntimeMemoryRangeAttributes (
|
||||
continue;
|
||||
}
|
||||
|
||||
// The memory space descriptor access attributes are not accurate. Don't pass
|
||||
// in access attributes so SetMemorySpaceAttributes() doesn't update them.
|
||||
// EFI_MEMORY_RUNTIME is not a CPU arch attribute, so calling
|
||||
// SetMemorySpaceAttributes() with only it set will not clear existing page table
|
||||
// attributes for this region, such as EFI_MEMORY_XP
|
||||
Status = gDS->SetMemorySpaceAttributes (
|
||||
RuntimeMmioRanges->Range[Index].PhysicalBaseAddress,
|
||||
(UINT64)RuntimeMmioRanges->Range[Index].Length,
|
||||
Descriptor.Attributes | EFI_MEMORY_RUNTIME
|
||||
EFI_MEMORY_RUNTIME
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
if (EFI_ERROR (Status)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user