]> git.proxmox.com Git - mirror_edk2.git/blobdiff - QuarkSocPkg/QuarkNorthCluster/Smm/Dxe/SmmAccessDxe/SmmAccessDriver.c
QuarkSocPkg/SmmAccessDxe: Set region to UC on SMRAM close
[mirror_edk2.git] / QuarkSocPkg / QuarkNorthCluster / Smm / Dxe / SmmAccessDxe / SmmAccessDriver.c
index 6148dea1b457730ae11a2b7ce8c81768b333f616..830f8b83c3934f8e3031859e912597b3938725ba 100644 (file)
@@ -2,7 +2,7 @@
 This is the driver that publishes the SMM Access Protocol\r
 instance for the Tylersburg chipset.\r
 \r
-Copyright (c) 2013-2015 Intel Corporation.\r
+Copyright (c) 2013-2019 Intel Corporation.\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -221,6 +221,7 @@ Returns:
 \r
 --*/\r
 {\r
+  EFI_STATUS              Status;\r
   SMM_ACCESS_PRIVATE_DATA *SmmAccess;\r
   BOOLEAN                 OpenState;\r
   UINTN                   Index;\r
@@ -239,6 +240,21 @@ Returns:
     return EFI_DEVICE_ERROR;\r
   }\r
 \r
+  //\r
+  // Reset SMRAM cacheability to UC\r
+  //\r
+  for (Index = 0; Index < mSmmAccess.NumberRegions; Index++) {\r
+    DEBUG ((DEBUG_INFO, "SmmAccess->Close: Set to UC Base=%016lx  Size=%016lx\n", SmmAccess->SmramDesc[Index].CpuStart, SmmAccess->SmramDesc[Index].PhysicalSize));\r
+    Status = gDS->SetMemorySpaceAttributes(\r
+                    SmmAccess->SmramDesc[Index].CpuStart,\r
+                    SmmAccess->SmramDesc[Index].PhysicalSize,\r
+                    EFI_MEMORY_UC\r
+                    );\r
+    if (EFI_ERROR (Status)) {\r
+      DEBUG ((DEBUG_WARN, "SmmAccess: Failed to reset SMRAM window to EFI_MEMORY_UC\n"));\r
+    }\r
+  }\r
+\r
   //\r
   // Close TSEG\r
   //\r