]> git.proxmox.com Git - mirror_edk2.git/blobdiff - QuarkSocPkg/QuarkNorthCluster/Library/MtrrLib/MtrrLib.c
QuarkSocPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / QuarkSocPkg / QuarkNorthCluster / Library / MtrrLib / MtrrLib.c
index 4a88dff21a0172b3c329a6edfa4c88d9a463382a..7df1c15f5bd82088d79319b8de073baba9262142 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
 MTRR setting library\r
 \r
-Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -23,6 +17,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #define QUARK_SOC_CPUID_FAMILY_MODEL_STEPPING         0x590\r
 \r
+#define CACHE_MTRR_ENABLED                            0x800\r
+#define CACHE_FIXED_MTRR_ENABLED                      0x400\r
+#define IA32_MTRR_CAP_VCNT_MASK                       0xFF\r
+\r
 //\r
 // Context to save and restore when MTRRs are programmed\r
 //\r
@@ -121,7 +119,7 @@ GetVariableMtrrCountWorker (
 {\r
   UINT32  VariableMtrrCount;\r
 \r
-  VariableMtrrCount = (UINT32)(MtrrRegisterRead (QUARK_NC_HOST_BRIDGE_IA32_MTRR_CAP) & MTRR_LIB_IA32_MTRR_CAP_VCNT_MASK);\r
+  VariableMtrrCount = (UINT32)(MtrrRegisterRead (QUARK_NC_HOST_BRIDGE_IA32_MTRR_CAP) & IA32_MTRR_CAP_VCNT_MASK);\r
   ASSERT (VariableMtrrCount <= MTRR_NUMBER_OF_VARIABLE_MTRR);\r
   return VariableMtrrCount;\r
 }\r
@@ -464,11 +462,9 @@ ProgramFixedMtrr (
 {\r
   UINT32  MsrNum;\r
   UINT32  ByteShift;\r
-  UINT64  TempQword;\r
   UINT64  OrMask;\r
   UINT64  ClearMask;\r
 \r
-  TempQword = 0;\r
   OrMask    = 0;\r
   ClearMask = 0;\r
 \r
@@ -560,7 +556,7 @@ MtrrGetMemoryAttributeInVariableMtrrWorker (
 \r
   ZeroMem (VariableMtrr, sizeof (VARIABLE_MTRR) * MTRR_NUMBER_OF_VARIABLE_MTRR);\r
   for (Index = 0, UsedMtrr = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
-    if ((VariableSettings->Mtrr[Index].Mask & MTRR_LIB_CACHE_MTRR_ENABLED) != 0) {\r
+    if ((VariableSettings->Mtrr[Index].Mask & CACHE_MTRR_ENABLED) != 0) {\r
       VariableMtrr[Index].Msr         = (UINT32)Index;\r
       VariableMtrr[Index].BaseAddress = (VariableSettings->Mtrr[Index].Base & MtrrValidAddressMask);\r
       VariableMtrr[Index].Length      = ((~(VariableSettings->Mtrr[Index].Mask & MtrrValidAddressMask)) & MtrrValidBitsMask) + 1;\r
@@ -584,7 +580,7 @@ MtrrGetMemoryAttributeInVariableMtrrWorker (
   @param[in]   MtrrValidAddressMask  The valid address mask for MTRR\r
   @param[out]  VariableMtrr          The array to shadow variable MTRRs content\r
 \r
-  @return                       The return value of this paramter indicates the\r
+  @return                       The return value of this parameter indicates the\r
                                 number of MTRRs which has been used.\r
 \r
 **/\r
@@ -971,7 +967,7 @@ ProgramVariableMtrr (
   // MTRR Physical Mask\r
   //\r
   TempQword = ~(Length - 1);\r
-  VariableSettings->Mtrr[MtrrNumber].Mask = (TempQword & MtrrValidAddressMask) | MTRR_LIB_CACHE_MTRR_ENABLED;\r
+  VariableSettings->Mtrr[MtrrNumber].Mask = (TempQword & MtrrValidAddressMask) | CACHE_MTRR_ENABLED;\r
 }\r
 \r
 \r
@@ -1038,13 +1034,12 @@ MtrrLibInitializeMtrrMask (
     AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
 \r
     PhysicalAddressBits = (UINT8) RegEax;\r
-\r
-    *MtrrValidBitsMask    = LShiftU64 (1, PhysicalAddressBits) - 1;\r
-    *MtrrValidAddressMask = *MtrrValidBitsMask & 0xfffffffffffff000ULL;\r
   } else {\r
-    *MtrrValidBitsMask    = MTRR_LIB_MSR_VALID_MASK;\r
-    *MtrrValidAddressMask = MTRR_LIB_CACHE_VALID_ADDRESS;\r
+    PhysicalAddressBits = 36;\r
   }\r
+\r
+  *MtrrValidBitsMask    = LShiftU64 (1, PhysicalAddressBits) - 1;\r
+  *MtrrValidAddressMask = *MtrrValidBitsMask & 0xfffffffffffff000ULL;\r
 }\r
 \r
 \r
@@ -1160,7 +1155,7 @@ MtrrGetMemoryAttributeByAddressWorker (
   }\r
   MtrrType = MTRR_CACHE_INVALID_TYPE;\r
 \r
-  if ((TempQword & MTRR_LIB_CACHE_MTRR_ENABLED) == 0) {\r
+  if ((TempQword & CACHE_MTRR_ENABLED) == 0) {\r
     return CacheUncacheable;\r
   }\r
 \r
@@ -1168,7 +1163,7 @@ MtrrGetMemoryAttributeByAddressWorker (
   // If address is less than 1M, then try to go through the fixed MTRR\r
   //\r
   if (Address < BASE_1MB) {\r
-    if ((TempQword & MTRR_LIB_CACHE_FIXED_MTRR_ENABLED) != 0) {\r
+    if ((TempQword & CACHE_FIXED_MTRR_ENABLED) != 0) {\r
       //\r
       // Go through the fixed MTRR\r
       //\r
@@ -1542,7 +1537,7 @@ MtrrSetMemoryAttributeWorker (
       }\r
       if (MtrrSetting != NULL) {\r
         MtrrSetting->Fixed.Mtrr[MsrNum] = (MtrrSetting->Fixed.Mtrr[MsrNum] & ~ClearMask) | OrMask;\r
-        MtrrSetting->MtrrDefType |= MTRR_LIB_CACHE_FIXED_MTRR_ENABLED;\r
+        MtrrSetting->MtrrDefType |= CACHE_FIXED_MTRR_ENABLED;\r
       } else {\r
         if (!FixedSettingsValid[MsrNum]) {\r
           WorkingFixedSettings.Mtrr[MsrNum] = MtrrRegisterRead (mMtrrLibFixedMtrrTable[MsrNum].Msr);\r
@@ -1657,7 +1652,7 @@ MtrrSetMemoryAttributeWorker (
   // Find first unused MTRR\r
   //\r
   for (MsrNum = 0; MsrNum < VariableMtrrCount; MsrNum++) {\r
-    if ((VariableSettings->Mtrr[MsrNum].Mask & MTRR_LIB_CACHE_MTRR_ENABLED) == 0) {\r
+    if ((VariableSettings->Mtrr[MsrNum].Mask & CACHE_MTRR_ENABLED) == 0) {\r
       break;\r
     }\r
   }\r
@@ -1677,7 +1672,7 @@ MtrrSetMemoryAttributeWorker (
       // Find unused MTRR\r
       //\r
       for (; MsrNum < VariableMtrrCount; MsrNum++) {\r
-        if ((VariableSettings->Mtrr[MsrNum].Mask & MTRR_LIB_CACHE_MTRR_ENABLED) == 0) {\r
+        if ((VariableSettings->Mtrr[MsrNum].Mask & CACHE_MTRR_ENABLED) == 0) {\r
           break;\r
         }\r
       }\r
@@ -1708,7 +1703,7 @@ MtrrSetMemoryAttributeWorker (
     // Find unused MTRR\r
     //\r
     for (; MsrNum < VariableMtrrCount; MsrNum++) {\r
-      if ((VariableSettings->Mtrr[MsrNum].Mask & MTRR_LIB_CACHE_MTRR_ENABLED) == 0) {\r
+      if ((VariableSettings->Mtrr[MsrNum].Mask & CACHE_MTRR_ENABLED) == 0) {\r
         break;\r
       }\r
     }\r
@@ -1731,7 +1726,7 @@ MtrrSetMemoryAttributeWorker (
     // Find unused MTRR\r
     //\r
     for (; MsrNum < VariableMtrrCount; MsrNum++) {\r
-      if ((VariableSettings->Mtrr[MsrNum].Mask & MTRR_LIB_CACHE_MTRR_ENABLED) == 0) {\r
+      if ((VariableSettings->Mtrr[MsrNum].Mask & CACHE_MTRR_ENABLED) == 0) {\r
         break;\r
       }\r
     }\r
@@ -1804,7 +1799,7 @@ Done:
   DEBUG((DEBUG_CACHE, "  Status = %r\n", Status));\r
   if (!RETURN_ERROR (Status)) {\r
     if (MtrrSetting != NULL) {\r
-      MtrrSetting->MtrrDefType |= MTRR_LIB_CACHE_MTRR_ENABLED;\r
+      MtrrSetting->MtrrDefType |= CACHE_MTRR_ENABLED;\r
     }\r
     MtrrDebugPrintAllMtrrsWorker (MtrrSetting);\r
   }\r