+ //\r
+ // In case the memory to free is marked as read-only (e.g. EfiRuntimeServicesCode).\r
+ //\r
+ if (mSmmMemoryAttribute != NULL) {\r
+ Attributes = 0;\r
+ mSmmMemoryAttribute->GetMemoryAttributes (\r
+ mSmmMemoryAttribute,\r
+ Start,\r
+ EFI_PAGES_TO_SIZE (PagesToFree),\r
+ &Attributes\r
+ );\r
+ if ((Attributes & EFI_MEMORY_RO) != 0) {\r
+ mSmmMemoryAttribute->ClearMemoryAttributes (\r
+ mSmmMemoryAttribute,\r
+ Start,\r
+ EFI_PAGES_TO_SIZE (PagesToFree),\r
+ EFI_MEMORY_RO\r
+ );\r
+ }\r
+ }\r
+\r