diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
index 33c85b7..e2afe43 100644
--- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
+++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
@@ -1116,7 +1116,7 @@
     }
   }
   //
-  // Retrive uncommitted data from Form Browser
+  // Retrieve uncommitted data from Form Browser
   //
   CurrentFakeNVMap = &Private->BmmFakeNvData;
   OldFakeNVMap     = &Private->BmmOldFakeNVData;
diff --git a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.c b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.c
index 6224103..e29892f 100644
--- a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.c
+++ b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.c
@@ -678,7 +678,7 @@
 }
 
 /**
-  Prints a chracter to the default console, at
+  Prints a character to the default console, at
   the supplied cursor position, using L"%c" format.
 
   @param  Column     The cursor position to print the string at. When it is -1, use current Position.
diff --git a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.c b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.c
index 09e1366..253fbdc 100644
--- a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.c
+++ b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.c
@@ -24,7 +24,7 @@
   function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is
   responsible to invoke the passing-in function at the end of InitializeDebugAgent().
 
-  If the parameter Function is not NULL, Debug Agent Libary instance will invoke it by
+  If the parameter Function is not NULL, Debug Agent Library instance will invoke it by
   passing in the Context to be its parameter.
 
   If Function() is NULL, Debug Agent Library instance will return after setup debug
diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c
index de1b136..5f28928 100644
--- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c
+++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c
@@ -48,7 +48,7 @@
   @param SectionAttribute   The attribute of the input guided section.
 
   @retval EFI_SUCCESS            The size of destination buffer, the size of scratch buffer and 
-                                 the attribute of the input section are successull retrieved.
+                                 the attribute of the input section are successfully retrieved.
   @retval EFI_INVALID_PARAMETER  The GUID in InputSection does not match this instance guid.
 
 **/
diff --git a/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.c b/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.c
index cad5702..0ba88d8 100644
--- a/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.c
+++ b/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.c
@@ -248,7 +248,7 @@
         }
       } else {
         //
-        // If variable services are not yet availible optionally get the global
+        // If variable services are not yet available optionally get the global
         // debug print error level mask from a HOB.
         //
         Hob = GetFirstGuidHob (&gEfiGenericVariableGuid);
diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c
index 727cc42..a4579bf 100644
--- a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c
+++ b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c
@@ -1430,10 +1430,10 @@
 
 
 /**
-  Get the next string, which is distinguished by specified seperator.
+  Get the next string, which is distinguished by specified separator.
 
   @param[in]  String             Pointer to the string.
-  @param[in]  Seperator          Specified seperator used to distinguish where is the beginning
+  @param[in]  Separator          Specified separator used to distinguish where is the beginning
                                  of next string.
 
   @return     Pointer to the next string.
@@ -1444,7 +1444,7 @@
 EFIAPI
 AsciiStrGetNextToken (
   IN CONST CHAR8 *String,
-  IN       CHAR8 Seperator
+  IN       CHAR8 Separator
   )
 {
   CONST CHAR8 *Token;
@@ -1454,7 +1454,7 @@
     if (*Token == 0) {
       return NULL;
     }
-    if (*Token == Seperator) {
+    if (*Token == Separator) {
       return (CHAR8 *)(Token + 1);
     }
     Token++;
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
index ab4df80..27fef71 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
@@ -1439,7 +1439,7 @@
   }
 
   //
-  // All pending send tokens should be flushed by reseting the IP instances.
+  // All pending send tokens should be flushed by resetting the IP instances.
   //
   ASSERT (IsListEmpty (&IpIo->PendingSndList));
 
diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
index 7700f0ff..148bebf 100644
--- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
+++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
@@ -301,7 +301,7 @@
   Build a syslog packet, including the Ethernet/Ip/Udp headers
   and user's message.
 
-  @param[in]  Level     Syslog servity level
+  @param[in]  Level     Syslog severity level
   @param[in]  Module    The module that generates the log
   @param[in]  File      The file that contains the current log
   @param[in]  Line      The line of code in the File that contains the current log
@@ -475,7 +475,7 @@
   This function will locate a instance of SNP then send the message through it.
   Because it isn't open the SNP BY_DRIVER, apply caution when using it.
 
-  @param Level    The servity level of the message.
+  @param Level    The severity level of the message.
   @param Module   The Moudle that generates the log.
   @param File     The file that contains the log.
   @param Line     The exact line that contains the log.
@@ -1151,7 +1151,7 @@
   @param[in]  ChildHandleBuffer  An array of child handles to be freed. May be NULL
                                  if NumberOfChildren is 0.
 
-  @retval TURE                   Found the input Handle in ChildHandleBuffer.
+  @retval TRUE                   Found the input Handle in ChildHandleBuffer.
   @retval FALSE                  Can't find the input Handle in ChildHandleBuffer.
 
 **/
@@ -1636,7 +1636,7 @@
 /**
   Iterate through the netmap and call CallBack for each item.
 
-  It will contiue the traverse if CallBack returns EFI_SUCCESS, otherwise, break
+  It will continue the traverse if CallBack returns EFI_SUCCESS, otherwise, break
   from the loop. It returns the CallBack's last return value. This function is
   delete safe for the current item.
 
@@ -2765,7 +2765,7 @@
 
 /**
   Convert one Null-terminated ASCII string to EFI_IPv6_ADDRESS. The format of the
-  string is defined in RFC 4291 - Text Pepresentation of Addresses.
+  string is defined in RFC 4291 - Text Representation of Addresses.
 
   @param[in]      String         The pointer to the Ascii string.
   @param[out]     Ip6Address     The pointer to the converted IPv6 address.
@@ -3004,7 +3004,7 @@
 
 /**
   Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS.  The format of
-  the string is defined in RFC 4291 - Text Pepresentation of Addresses.
+  the string is defined in RFC 4291 - Text Representation of Addresses.
 
   @param[in]      String         The pointer to the Ascii string.
   @param[out]     Ip6Address     The pointer to the converted IPv6 address.
@@ -3046,7 +3046,7 @@
 
 /**
   Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS and prefix length.
-  The format of the string is defined in RFC 4291 - Text Pepresentation of Addresses
+  The format of the string is defined in RFC 4291 - Text Representation of Addresses
   Prefixes: ipv6-address/prefix-length.
 
   @param[in]      String         The pointer to the Ascii string.
@@ -3401,4 +3401,4 @@
   *Tail = 0;
 
   return QueryName;
-}
\ No newline at end of file
+}
diff --git a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.c b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.c
index 6e3dcdd..f979bdf 100644
--- a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.c
+++ b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.c
@@ -129,7 +129,7 @@
   @param SectionAttribute   The attribute of the input guided section.
 
   @retval EFI_SUCCESS            The size of destination buffer, the size of scratch buffer and 
-                                 the attribute of the input section are successull retrieved.
+                                 the attribute of the input section are successfully retrieved.
   @retval EFI_INVALID_PARAMETER  The GUID in InputSection does not match this instance guid.
 
 **/
diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c
index 08dd17b..bd21468 100644
--- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c
+++ b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c
@@ -40,7 +40,7 @@
 
   @param[in]  Buffer   The pointer to the buffer to be checked.
 
-  @retval     TURE     The buffer is in SMRAM ranges.
+  @retval     TRUE     The buffer is in SMRAM ranges.
   @retval     FALSE    The buffer is out of SMRAM ranges.
 **/
 BOOLEAN
diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryProfileLib.c b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryProfileLib.c
index f6a064a..ffae221 100644
--- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryProfileLib.c
+++ b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryProfileLib.c
@@ -28,7 +28,7 @@
 
   @param[in]  Buffer   The pointer to the buffer to be checked.
 
-  @retval     TURE     The buffer is in SMRAM ranges.
+  @retval     TRUE     The buffer is in SMRAM ranges.
   @retval     FALSE    The buffer is out of SMRAM ranges.
 **/
 BOOLEAN
diff --git a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c
index 74655c6..b96f8dd 100644
--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c
+++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c
@@ -926,7 +926,7 @@
   }
 
   //
-  // Retrive uncommitted data from Form Browser.
+  // Retrieve uncommitted data from Form Browser.
   //
   VariableCleanupData = &Private->VariableCleanupData;
   HiiGetBrowserData (&mVariableCleanupHiiGuid, mVarStoreName, sizeof (VARIABLE_CLEANUP_DATA), (UINT8 *) VariableCleanupData);
diff --git a/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/MemoryAllocationLib.c b/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/MemoryAllocationLib.c
index 34ff120..e9bbf02 100644
--- a/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/MemoryAllocationLib.c
+++ b/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/MemoryAllocationLib.c
@@ -116,7 +116,7 @@
 
   @param[in]  Buffer   The pointer to the buffer to be checked.
 
-  @retval     TURE     The buffer is in SMRAM ranges.
+  @retval     TRUE     The buffer is in SMRAM ranges.
   @retval     FALSE    The buffer is out of SMRAM ranges.
 **/
 BOOLEAN
diff --git a/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryProfileLib.c b/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryProfileLib.c
index dcf0868..85e7c9c 100644
--- a/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryProfileLib.c
+++ b/MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryProfileLib.c
@@ -28,7 +28,7 @@
 
   @param[in]  Buffer   The pointer to the buffer to be checked.
 
-  @retval     TURE     The buffer is in SMRAM ranges.
+  @retval     TRUE     The buffer is in SMRAM ranges.
   @retval     FALSE    The buffer is out of SMRAM ranges.
 **/
 BOOLEAN
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c
index a13917b..4059dac 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c
@@ -251,7 +251,7 @@
   }
 
   //
-  // Try to connect the PCI device path, so that GOP dirver could start on this 
+  // Try to connect the PCI device path, so that GOP driver could start on this
   // device and create child handles with GraphicsOutput Protocol installed
   // on them, then we get device paths of these child handles and select 
   // them as possible console device.
diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLanguage.c b/MdeModulePkg/Library/UefiHiiLib/HiiLanguage.c
index 2519afa..f4ef36c 100644
--- a/MdeModulePkg/Library/UefiHiiLib/HiiLanguage.c
+++ b/MdeModulePkg/Library/UefiHiiLib/HiiLanguage.c
@@ -27,9 +27,9 @@
   @param[in]  HiiHandle  A handle that was previously registered in the HII Database.
 
   @retval NULL   HiiHandle is not registered in the HII database
-  @retval NULL   There are not enough resources available to retrieve the suported 
+  @retval NULL   There are not enough resources available to retrieve the supported
                  languages.
-  @retval NULL   The list of suported languages could not be retrieved.
+  @retval NULL   The list of supported languages could not be retrieved.
   @retval Other  A pointer to the Null-terminated ASCII string of supported languages.
 
 **/
diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
index afd9985..8579501 100644
--- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
+++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c
@@ -383,13 +383,13 @@
   for freeing the allocated buffer using FreePool().
 
   @param Handle            The HII handle.
-  @param Buffer            On return, opints to a pointer which point to the buffer that contain the formset opcode.
+  @param Buffer            On return, points to a pointer which point to the buffer that contain the formset opcode.
   @param BufferSize        On return, points to the length of the buffer.
 
   @retval EFI_OUT_OF_RESOURCES   No enough memory resource is allocated.
   @retval EFI_NOT_FOUND          Can't find the package data for the input Handle.
   @retval EFI_INVALID_PARAMETER  The input parameters are not correct.
-  @retval EFI_SUCCESS            Get the formset opcode from the hii handle sucessfully.
+  @retval EFI_SUCCESS            Get the formset opcode from the hii handle successfully.
 
 **/
 EFI_STATUS
@@ -696,17 +696,17 @@
 
   @param[in]  Guid          Pointer to an EFI_GUID that is the routing information
                             GUID.  Each of the 16 bytes in Guid is converted to 
-                            a 2 Unicode character hexidecimal string.  This is 
+                            a 2 Unicode character hexadecimal string.  This is
                             an optional parameter that may be NULL.
   @param[in]  Name          Pointer to a Null-terminated Unicode string that is 
                             the routing information NAME.  This is an optional 
                             parameter that may be NULL.  Each 16-bit Unicode 
                             character in Name is converted to a 4 character Unicode 
-                            hexidecimal string.                        
+                            hexadecimal string.
   @param[in]  DriverHandle  The driver handle which supports a Device Path Protocol
                             that is the routing information PATH.  Each byte of
                             the Device Path associated with DriverHandle is converted
-                            to a 2 Unicode character hexidecimal string.
+                            to a 2 Unicode character hexadecimal string.
 
   @retval NULL   DriverHandle does not support the Device Path Protocol.
   @retval Other  A pointer to the Null-terminate Unicode <ConfigHdr> string
@@ -1130,7 +1130,7 @@
   UINT64                       VarValue;
   EFI_IFR_TYPE_VALUE           TmpValue;
   EFI_STATUS                   Status;
-  EFI_HII_PACKAGE_HEADER       PacakgeHeader;
+  EFI_HII_PACKAGE_HEADER       PackageHeader;
   UINT32                       PackageOffset;
   UINT8                        *PackageData;
   UINTN                        IfrOffset;
@@ -1167,15 +1167,15 @@
   //
   PackageOffset = sizeof (EFI_HII_PACKAGE_LIST_HEADER);
   while (PackageOffset < PackageListLength) {
-    CopyMem (&PacakgeHeader, (UINT8 *) HiiPackageList + PackageOffset, sizeof (PacakgeHeader));
+    CopyMem (&PackageHeader, (UINT8 *) HiiPackageList + PackageOffset, sizeof (PackageHeader));
 
     //
     // Parse IFR opcode from the form package.
     //
-    if (PacakgeHeader.Type == EFI_HII_PACKAGE_FORMS) {
-      IfrOffset   = sizeof (PacakgeHeader);
+    if (PackageHeader.Type == EFI_HII_PACKAGE_FORMS) {
+      IfrOffset   = sizeof (PackageHeader);
       PackageData = (UINT8 *) HiiPackageList + PackageOffset;
-      while (IfrOffset < PacakgeHeader.Length) {
+      while (IfrOffset < PackageHeader.Length) {
         IfrOpHdr = (EFI_IFR_OP_HEADER *) (PackageData + IfrOffset);
         //
         // Validate current setting to the value built in IFR opcode
@@ -1710,7 +1710,7 @@
     //
     // Go to next package.
     //
-    PackageOffset += PacakgeHeader.Length;
+    PackageOffset += PackageHeader.Length;
   }
 
   return EFI_SUCCESS;
@@ -2107,7 +2107,7 @@
   @param DefaultId  Specifies the type of defaults to retrieve only for setting default action.
   @param ActionType Action supports setting defaults and validate current setting.
   
-  @retval TURE    Action runs successfully.
+  @retval TRUE    Action runs successfully.
   @retval FALSE   Action is not valid or Action can't be executed successfully..
 **/
 BOOLEAN
@@ -2501,7 +2501,7 @@
                     entirety of the current HII database will be reset.
   @param DefaultId  Specifies the type of defaults to retrieve.
   
-  @retval TURE    The default value is set successfully.
+  @retval TRUE    The default value is set successfully.
   @retval FALSE   The default value can't be found and set.
 **/
 BOOLEAN
@@ -4206,7 +4206,7 @@
   UINTN                        BufferSize;
   UINT8                        *UpdateBufferPos;
   EFI_HII_PACKAGE_HEADER       *Package;
-  EFI_HII_PACKAGE_HEADER       *TempPacakge;
+  EFI_HII_PACKAGE_HEADER       *TempPackage;
   EFI_HII_PACKAGE_HEADER       PackageHeader;
   BOOLEAN                      Updated;
   HII_LIB_OPCODE_BUFFER        *OpCodeBufferStart;
@@ -4218,7 +4218,7 @@
   ASSERT (HiiHandle != NULL);
   ASSERT (StartOpCodeHandle != NULL);
   UpdatePackageList = NULL;
-  TempPacakge       = NULL;
+  TempPackage       = NULL;
   HiiPackageList    = NULL;
   
   //
@@ -4264,8 +4264,8 @@
   //
   // Allocate temp buffer to store the temp updated package buffer
   //
-  TempPacakge = AllocateZeroPool (BufferSize);
-  if (TempPacakge == NULL) {
+  TempPackage = AllocateZeroPool (BufferSize);
+  if (TempPackage == NULL) {
     Status = EFI_OUT_OF_RESOURCES;
     goto Finish;
   }
@@ -4293,7 +4293,7 @@
       //
       // Check this package is the matched package.
       //
-      Status = InternalHiiUpdateFormPackageData (FormSetGuid, FormId, Package, OpCodeBufferStart, OpCodeBufferEnd, TempPacakge);
+      Status = InternalHiiUpdateFormPackageData (FormSetGuid, FormId, Package, OpCodeBufferStart, OpCodeBufferEnd, TempPackage);
       //
       // The matched package is found. Its package buffer will be updated by the input new data.
       //
@@ -4305,7 +4305,7 @@
         //
         // Add updated package buffer
         //
-        Package = TempPacakge;
+        Package = TempPackage;
       }
     }
 
@@ -4344,8 +4344,8 @@
     FreePool (UpdatePackageList);
   }
   
-  if (TempPacakge != NULL) {
-    FreePool (TempPacakge);
+  if (TempPackage != NULL) {
+    FreePool (TempPackage);
   }
 
   return Status; 
diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiString.c b/MdeModulePkg/Library/UefiHiiLib/HiiString.c
index bfae3f8..c6a241e 100644
--- a/MdeModulePkg/Library/UefiHiiLib/HiiString.c
+++ b/MdeModulePkg/Library/UefiHiiLib/HiiString.c
@@ -100,7 +100,7 @@
     Language = Supported;
 
     //
-    // Search for the next language seperator and replace it with a Null-terminator
+    // Search for the next language separator and replace it with a Null-terminator
     //
     for (; *Supported != 0 && *Supported != ';'; Supported++);
     if (*Supported != 0) {
diff --git a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
index cab9296..5cb056f 100644
--- a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
+++ b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
@@ -1308,7 +1308,7 @@
 
     while ((UINTN) HiiPackageHeader < ((UINTN) HiiPackageListHeader + HiiPackageListHeader->PackageLength)) {
       //
-      // Parse Hii Pacakge.
+      // Parse Hii Package.
       //
       VarCheckParseHiiPackage (HiiPackageHeader, FALSE);
 
