Skip to content

Commit b324d96

Browse files
Patrick Payneos-d
authored andcommitted
Add the EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE attribute.
Add the EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE resource attribute as per the PI 1.8 spec. This flag is used to indicate that the memory should be treated as special purpose memory (SPM). Also adds GCD code that marks the SPM with the EFI_MEMORY_SP bit and sets the GCD memory type to EfiGcdMemoryTypeSystemMemory.
1 parent 0eb94a3 commit b324d96

File tree

1 file changed

+23
-1
lines changed
  • MdeModulePkg/Core/Dxe/Gcd

1 file changed

+23
-1
lines changed

MdeModulePkg/Core/Dxe/Gcd/Gcd.c

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
1616

1717
#define MINIMUM_INITIAL_MEMORY_SIZE 0x10000
1818

19+
// MU_CHANGE BEGIN: Add EFI_MEMORY_SP
20+
1921
#define MEMORY_ATTRIBUTE_MASK (EFI_RESOURCE_ATTRIBUTE_PRESENT | \
2022
EFI_RESOURCE_ATTRIBUTE_INITIALIZED | \
2123
EFI_RESOURCE_ATTRIBUTE_TESTED | \
@@ -26,7 +28,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
2628
EFI_RESOURCE_ATTRIBUTE_16_BIT_IO | \
2729
EFI_RESOURCE_ATTRIBUTE_32_BIT_IO | \
2830
EFI_RESOURCE_ATTRIBUTE_64_BIT_IO | \
29-
EFI_RESOURCE_ATTRIBUTE_PERSISTENT )
31+
EFI_RESOURCE_ATTRIBUTE_PERSISTENT | \
32+
EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE )
33+
34+
// MU_CHANGE END: Add EFI_MEMORY_SP
3035

3136
#define TESTED_MEMORY_ATTRIBUTES (EFI_RESOURCE_ATTRIBUTE_PRESENT | \
3237
EFI_RESOURCE_ATTRIBUTE_INITIALIZED | \
@@ -92,6 +97,7 @@ GCD_ATTRIBUTE_CONVERSION_ENTRY mAttributeConversionTable[] = {
9297
{ EFI_RESOURCE_ATTRIBUTE_TESTED, EFI_MEMORY_TESTED, FALSE },
9398
{ EFI_RESOURCE_ATTRIBUTE_PERSISTABLE, EFI_MEMORY_NV, TRUE },
9499
{ EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE, EFI_MEMORY_MORE_RELIABLE, TRUE },
100+
{ EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE, EFI_MEMORY_SP, TRUE }, // MU_CHANGE: Add EFI_MEMORY_SP
95101
{ 0, 0, FALSE }
96102
};
97103

@@ -703,6 +709,14 @@ ConverToCpuArchAttributes (
703709
CpuArchAttributes |= EFI_MEMORY_WP;
704710
}
705711

712+
// MU_CHANGE BEGIN: Add EFI_MEMORY_SP
713+
714+
if ((Attributes & EFI_MEMORY_SP) == EFI_MEMORY_SP) {
715+
CpuArchAttributes |= EFI_MEMORY_SP;
716+
}
717+
718+
// MU_CHANGE END: Add EFI_MEMORY_SP
719+
706720
return CpuArchAttributes;
707721
}
708722

@@ -2611,6 +2625,14 @@ CoreInitializeGcdServices (
26112625
GcdMemoryType = EfiGcdMemoryTypeReserved;
26122626
}
26132627

2628+
// MU_CHANGE BEGIN: Add EFI_MEMORY_SP
2629+
2630+
if ((ResourceHob->ResourceAttribute & EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE) == EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE) {
2631+
GcdMemoryType = EfiGcdMemoryTypeReserved;
2632+
}
2633+
2634+
// MU_CHANGE END: Add EFI_MEMORY_SP
2635+
26142636
if ((ResourceHob->ResourceAttribute & EFI_RESOURCE_ATTRIBUTE_PERSISTENT) == EFI_RESOURCE_ATTRIBUTE_PERSISTENT) {
26152637
GcdMemoryType = EfiGcdMemoryTypePersistent;
26162638
}

0 commit comments

Comments
 (0)