From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=shenglei.zhang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D60DA21959CB2 for ; Tue, 13 Nov 2018 00:35:26 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2018 00:35:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,498,1534834800"; d="scan'208";a="105805358" Received: from shenglei-dev.ccr.corp.intel.com ([10.239.158.52]) by fmsmga004.fm.intel.com with ESMTP; 13 Nov 2018 00:35:25 -0800 From: Shenglei Zhang To: edk2-devel@lists.01.org Cc: Liming Gao , Michael D Kinney Date: Tue, 13 Nov 2018 16:35:12 +0800 Message-Id: <20181113083518.6824-3-shenglei.zhang@intel.com> X-Mailer: git-send-email 2.18.0.windows.1 In-Reply-To: <20181113083518.6824-1-shenglei.zhang@intel.com> References: <20181113083518.6824-1-shenglei.zhang@intel.com> Subject: [PATCH 2/8] IntelFrameworkPkg/Library: Remove DxeSmmDriverEntryPoint X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Nov 2018 08:35:27 -0000 DxeSmmDriverEntryPoint is not used, so it is removed. https://bugzilla.tianocore.org/show_bug.cgi?id=1190 Cc: Liming Gao Cc: Michael D Kinney Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Shenglei Zhang --- .../DxeSmmDriverEntryPoint/DriverEntryPoint.c | 276 ------------------ .../DxeSmmDriverEntryPoint.inf | 55 ---- .../DxeSmmDriverEntryPoint.uni | 21 -- 3 files changed, 352 deletions(-) delete mode 100644 IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c delete mode 100644 IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf delete mode 100644 IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c deleted file mode 100644 index d1491655fe..0000000000 --- a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c +++ /dev/null @@ -1,276 +0,0 @@ -/** @file - This file implement EfiMain() for library class DxeSmmDriverEntryPoint. - EfiMain() is common driver entry point for all SMM driver who uses DxeSmmDriverEntryPoint - library class. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include - -#include -#include -#include - -#include -#include -#include -#include - -/** - This function returns the size, in bytes, - of the device path data structure specified by DevicePath. - If DevicePath is NULL, then 0 is returned. - - @param DevicePath A pointer to a device path data structure. - - @return The size of a device path in bytes. - -**/ -UINTN -EFIAPI -SmmGetDevicePathSize ( - IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath - ) -{ - CONST EFI_DEVICE_PATH_PROTOCOL *Start; - - if (DevicePath == NULL) { - return 0; - } - - // - // Search for the end of the device path structure - // - Start = DevicePath; - while (!IsDevicePathEnd (DevicePath)) { - DevicePath = NextDevicePathNode (DevicePath); - } - - // - // Compute the size and add back in the size of the end device path structure - // - return ((UINTN) DevicePath - (UINTN) Start) + sizeof (EFI_DEVICE_PATH_PROTOCOL); -} - -/** - This function appends the device path SecondDevicePath - to every device path instance in FirstDevicePath. - - @param FirstDevicePath A pointer to a device path data structure. - - @param SecondDevicePath A pointer to a device path data structure. - - @return A pointer to the new device path is returned. - NULL is returned if space for the new device path could not be allocated from pool. - It is up to the caller to free the memory used by FirstDevicePath and SecondDevicePath - if they are no longer needed. - -**/ -EFI_DEVICE_PATH_PROTOCOL * -EFIAPI -SmmAppendDevicePath ( - IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath, - IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath - ) -{ - EFI_STATUS Status; - UINTN Size; - UINTN Size1; - UINTN Size2; - EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; - EFI_DEVICE_PATH_PROTOCOL *DevicePath2; - - ASSERT (FirstDevicePath != NULL && SecondDevicePath != NULL); - - // - // Allocate space for the combined device path. It only has one end node of - // length EFI_DEVICE_PATH_PROTOCOL - // - Size1 = SmmGetDevicePathSize (FirstDevicePath); - Size2 = SmmGetDevicePathSize (SecondDevicePath); - Size = Size1 + Size2 - sizeof (EFI_DEVICE_PATH_PROTOCOL); - - Status = gBS->AllocatePool (EfiBootServicesData, Size, (VOID **) &NewDevicePath); - - if (EFI_SUCCESS == Status) { - // - // CopyMem in gBS is used as this service should always be ready. We didn't choose - // to use a BaseMemoryLib function as such library instance may have constructor. - // - gBS->CopyMem ((VOID *) NewDevicePath, (VOID *) FirstDevicePath, Size1); - // - // Over write Src1 EndNode and do the copy - // - DevicePath2 = (EFI_DEVICE_PATH_PROTOCOL *) ((CHAR8 *) NewDevicePath + (Size1 - sizeof (EFI_DEVICE_PATH_PROTOCOL))); - gBS->CopyMem ((VOID *) DevicePath2, (VOID *) SecondDevicePath, Size2); - } - - return NewDevicePath; -} - -/** - Unload function that is registered in the LoadImage protocol. It un-installs - protocols produced and deallocates pool used by the driver. Called by the core - when unloading the driver. - - @param ImageHandle ImageHandle of the unloaded driver - - @return Status of the ProcessModuleUnloadList. - -**/ -EFI_STATUS -EFIAPI -_DriverUnloadHandler ( - EFI_HANDLE ImageHandle - ) -{ - // - // Call the unload handlers for all the modules. - // - // Note: All libraries were constructed in SMM space, - // therefore we can not destruct them in Unload - // handler. - // - return ProcessModuleUnloadList (ImageHandle); -} - -/** - Enrty point to DXE SMM Driver. - - @param ImageHandle ImageHandle of the loaded driver. - @param SystemTable Pointer to the EFI System Table. - - @retval EFI_SUCCESS One or more of the drivers returned a success code. - @retval !EFI_SUCESS The return status from the last driver entry point in the list. - -**/ -EFI_STATUS -EFIAPI -_ModuleEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; - EFI_SMM_BASE_PROTOCOL *SmmBase; - BOOLEAN InSmm; - EFI_DEVICE_PATH_PROTOCOL *CompleteFilePath; - EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath; - EFI_HANDLE Handle; - - // - // Cache a pointer to the Boot Services Table - // - gBS = SystemTable->BootServices; - - // - // Retrieve SMM Base Protocol - // - Status = gBS->LocateProtocol ( - &gEfiSmmBaseProtocolGuid, - NULL, - (VOID **) &SmmBase - ); - ASSERT_EFI_ERROR (Status); - - // - // Check to see if we are already in SMM - // - SmmBase->InSmm (SmmBase, &InSmm); - - // - // - // - if (!InSmm) { - // - // Retrieve the Loaded Image Protocol - // - Status = gBS->HandleProtocol ( - ImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID*)&LoadedImage - ); - ASSERT_EFI_ERROR (Status); - // - // Retrieve the Device Path Protocol from the DeviceHandle from which this driver was loaded - // - Status = gBS->HandleProtocol ( - LoadedImage->DeviceHandle, - &gEfiDevicePathProtocolGuid, - (VOID*)&ImageDevicePath - ); - ASSERT_EFI_ERROR (Status); - - // - // Build the full device path to the currently execuing image - // - CompleteFilePath = SmmAppendDevicePath (ImageDevicePath, LoadedImage->FilePath); - - // - // Load the image in memory to SMRAM; it will automatically generate the - // SMI. - // - Status = SmmBase->Register (SmmBase, CompleteFilePath, LoadedImage->ImageBase, 0, &Handle, FALSE); - ASSERT_EFI_ERROR (Status); - // - // Optionally install the unload handler - // - if (_gDriverUnloadImageCount > 0) { - Status = gBS->HandleProtocol ( - ImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID **)&LoadedImage - ); - ASSERT_EFI_ERROR (Status); - LoadedImage->Unload = _DriverUnloadHandler; - } - - return Status; - } - - // - // Call constructor for all libraries - // - ProcessLibraryConstructorList (ImageHandle, SystemTable); - - // - // Call the list of driver entry points - // - Status = ProcessModuleEntryPointList (ImageHandle, SystemTable); - if (EFI_ERROR (Status)) { - ProcessLibraryDestructorList (ImageHandle, SystemTable); - } - - return Status; -} - -/** - Enrty point wrapper of DXE SMM Driver. - - @param ImageHandle ImageHandle of the loaded driver. - @param SystemTable Pointer to the EFI System Table. - - @retval EFI_SUCCESS One or more of the drivers returned a success code. - @retval !EFI_SUCESS The return status from the last driver entry point in the list. - -**/ -EFI_STATUS -EFIAPI -EfiMain ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - return _ModuleEntryPoint (ImageHandle, SystemTable); -} diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf deleted file mode 100644 index 5b20355665..0000000000 --- a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf +++ /dev/null @@ -1,55 +0,0 @@ -## @file -# Framework SMM driver entry point library. -# -# Register driver in SMRAM and wrapper driver's library constructors and entry point. -# -# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = DxeSmmDriverEntryPoint - MODULE_UNI_FILE = DxeSmmDriverEntryPoint.uni - FILE_GUID = 79C5C7B7-1083-42a6-AD15-2A4E7C4274D7 - MODULE_TYPE = DXE_SMM_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = UefiDriverEntryPoint|DXE_SMM_DRIVER - - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 -# - -[Sources] - DriverEntryPoint.c - - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - - -[LibraryClasses] - DebugLib - UefiBootServicesTableLib - DevicePathLib - -[Protocols] - gEfiLoadedImageProtocolGuid ## CONSUMES - gEfiSmmBaseProtocolGuid ## CONSUMES - gEfiDevicePathProtocolGuid ## CONSUMES - -[Depex] - gEfiSmmBaseProtocolGuid - diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni deleted file mode 100644 index 5042026ac0..0000000000 --- a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni +++ /dev/null @@ -1,21 +0,0 @@ -// /** @file -// Framework SMM driver entry point library. -// -// Register driver in SMRAM and wrapper driver's library constructors and entry point. -// -// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "SMM Driver Entry Point Library" - -#string STR_MODULE_DESCRIPTION #language en-US "Registers a driver in SMRAM, and wrappers the driver's library constructors and entry point." - -- 2.18.0.windows.1