*SmrrBase = (UINT32)CurrentSmramRange->CpuStart;\r
*SmrrSize = (UINT32)CurrentSmramRange->PhysicalSize;\r
\r
+ //\r
+ // Extend *SmrrBase/*SmrrSize to include adjacent SMRAM ranges\r
+ //\r
do {\r
Found = FALSE;\r
for (Index = 0; Index < mSmmCpuSmramRangeCount; Index++) {\r
SetMemMapAttributes ();\r
\r
//\r
- // For outside SMRAM, we only map SMM communication buffer or MMIO.\r
+ // Do not protect memory outside SMRAM when SMM static page table is not enabled.\r
//\r
- SetUefiMemMapAttributes ();\r
+ if (mCpuSmmStaticPageTable) {\r
\r
- //\r
- // Set page table itself to be read-only\r
- //\r
- SetPageTableAttributes ();\r
+ //\r
+ // For outside SMRAM, we only map SMM communication buffer or MMIO.\r
+ //\r
+ SetUefiMemMapAttributes ();\r
+\r
+ //\r
+ // Set page table itself to be read-only\r
+ //\r
+ SetPageTableAttributes ();\r
+ }\r
\r
//\r
// Configure SMM Code Access Check feature if available.\r