]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/DxeResetSystemLib: Avoid depending on UefiRuntimeLib
authorRuiyu Ni <ruiyu.ni@intel.com>
Fri, 1 Jun 2018 07:09:58 +0000 (15:09 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Tue, 5 Jun 2018 05:49:17 +0000 (13:49 +0800)
Current DxeResetSystemLib depends on UefiRuntimeLib because it calls
EfiResetSystem() API exposed by UefiRuntimeLib.

Due to the commit:
"MdePkg/UefiRuntimeLib: Do not allow to be linked by DXE driver"
which reverts UefiRuntimeLib to only support DXE_RUNTIME_DRIVER,
removing UefiRuntimeLib dependency makes the DxeResetSystemLib
can be used by DXE drivers.

The patch also disallows the DxeResetSystemLib to be linked by
runtime driver, SMM drivers.
Runtime driver cannot link to this library because the gRT is not
converted when entering to RT.
SMM driver cannot link to this library because calling RT services
from SMM after EndOfDxe violates security guideline.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.c
MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf

index ea452e32319ff88d6a52ec1b6cba8d1fcea875bb..76bca223ae04cf3d1f731f130e11f5ffa158c612 100644 (file)
@@ -14,7 +14,7 @@
 \r
 #include <PiDxe.h>\r
 #include <Library/ResetSystemLib.h>\r
-#include <Library/UefiRuntimeLib.h>\r
+#include <Library/UefiRuntimeServicesTableLib.h>\r
 \r
 /**\r
   This function causes a system-wide reset (cold reset), in which\r
@@ -30,7 +30,7 @@ ResetCold (
   VOID\r
   )\r
 {\r
-  EfiResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
+  gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
 }\r
 \r
 /**\r
@@ -45,7 +45,7 @@ ResetWarm (
   VOID\r
   )\r
 {\r
-  EfiResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL);\r
+  gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL);\r
 }\r
 \r
 /**\r
@@ -60,7 +60,7 @@ ResetShutdown (
   VOID\r
   )\r
 {\r
-  EfiResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL);\r
+  gRT->ResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL);\r
 }\r
 \r
 /**\r
@@ -94,5 +94,5 @@ ResetPlatformSpecific (
   IN VOID    *ResetData\r
   )\r
 {\r
-  EfiResetSystem (EfiResetPlatformSpecific, EFI_SUCCESS, DataSize, ResetData);\r
+  gRT->ResetSystem (EfiResetPlatformSpecific, EFI_SUCCESS, DataSize, ResetData);\r
 }\r
index 6eb2766b93e42277997d695f13484dd0a3c93240..5cd52d88593eb5c251ce1cf2b8189d1bd313e41a 100644 (file)
@@ -19,7 +19,7 @@
   FILE_GUID                      = C2BDE4F6-65EE-440B-87B5-83ABF10EF45B\r
   MODULE_TYPE                    = DXE_DRIVER\r
   VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = ResetSystemLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
+  LIBRARY_CLASS                  = ResetSystemLib|DXE_CORE DXE_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
 \r
 #\r
 # The following information is for reference only and not required by the build tools.\r
@@ -35,5 +35,4 @@
   MdeModulePkg/MdeModulePkg.dec\r
 \r
 [LibraryClasses]\r
-  UefiRuntimeLib\r
-\r
+  UefiRuntimeServicesTableLib\r