From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 00840210D7F4C for ; Thu, 21 Jun 2018 21:44:03 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2018 21:44:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,255,1526367600"; d="scan'208";a="234631151" Received: from ray-dev.ccr.corp.intel.com (HELO [10.239.9.4]) ([10.239.9.4]) by orsmga005.jf.intel.com with ESMTP; 21 Jun 2018 21:44:02 -0700 To: Hao Wu , edk2-devel@lists.01.org Cc: Eric Dong , Jiewen Yao References: <20180622023859.13880-1-hao.a.wu@intel.com> <20180622023859.13880-2-hao.a.wu@intel.com> From: "Ni, Ruiyu" Message-ID: <31c35545-336b-24ea-d927-067a40bc3900@Intel.com> Date: Fri, 22 Jun 2018 12:44:22 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180622023859.13880-2-hao.a.wu@intel.com> Subject: Re: [PATCH v2 1/4] MdeModulePkg: Add definitions for EDKII PEI NVME host controller PPI X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jun 2018 04:44:04 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit On 6/22/2018 10:38 AM, Hao Wu wrote: > Introduces the below PPI: > > struct EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI { > EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR GetNvmeHcMmioBar; > EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH GetNvmeHcDevicePath; > }; > > The GetNvmeHcMmioBar service will provide the caller with the MMIO BAR > address of each NVMe HC within the system; > > The GetNvmeHcDevicePath service will provide the caller with the device > path information of each NVMe HC. > > Cc: Eric Dong > Cc: Ruiyu Ni > Cc: Jiewen Yao > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Hao Wu > Reviewed-by: Star Zeng > --- > MdeModulePkg/Include/Ppi/NvmExpressHostController.h | 92 ++++++++++++++++++++ > MdeModulePkg/MdeModulePkg.dec | 3 + > 2 files changed, 95 insertions(+) > > diff --git a/MdeModulePkg/Include/Ppi/NvmExpressHostController.h b/MdeModulePkg/Include/Ppi/NvmExpressHostController.h > new file mode 100644 > index 0000000000..3e22f5057b > --- /dev/null > +++ b/MdeModulePkg/Include/Ppi/NvmExpressHostController.h > @@ -0,0 +1,92 @@ > +/** @file > + > + Copyright (c) 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. > + > +**/ > + > +#ifndef _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI_H_ > +#define _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI_H_ > + > +#include > + > +/// > +/// Global ID for the EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI. > +/// > +#define EDKII_NVME_EXPRESS_HOST_CONTROLLER_PPI_GUID \ > + { \ > + 0xcae3aa63, 0x676f, 0x4da3, { 0xbd, 0x50, 0x6c, 0xc5, 0xed, 0xde, 0x9a, 0xad } \ > + } > + > +// > +// Forward declaration for the EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI. > +// > +typedef struct _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI; > + > +/** > + Get the MMIO base address of NVM Express host controller. > + > + @param[in] This The PPI instance pointer. > + @param[in] ControllerId The ID of the NVM Express host controller. > + @param[out] MmioBar The MMIO base address of the controller. > + > + @retval EFI_SUCCESS The operation succeeds. > + @retval EFI_INVALID_PARAMETER The parameters are invalid. > + @retval EFI_NOT_FOUND The specified NVM Express host controller not > + found. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR) ( > + IN EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *This, > + IN UINT8 ControllerId, > + OUT UINTN *MmioBar > + ); > + > +/** > + Get the device path of NVM Express host controller. > + > + @param[in] This The PPI instance pointer. > + @param[in] ControllerId The ID of the NVM Express host controller. > + @param[out] DevicePathLength The length of the device path in bytes specified > + by DevicePath. > + @param[out] DevicePath The device path of NVM Express host controller. > + This field re-uses EFI Device Path Protocol as > + defined by Section 10.2 EFI Device Path Protocol > + of UEFI 2.7 Specification. > + > + @retval EFI_SUCCESS The operation succeeds. > + @retval EFI_INVALID_PARAMETER The parameters are invalid. > + @retval EFI_NOT_FOUND The specified NVM Express host controller not > + found. > + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH) ( > + IN EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *This, > + IN UINT8 ControllerId, > + OUT UINTN *DevicePathLength, > + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath > + ); > + > +// > +// This PPI contains a set of services to interact with the NVM Express host > +// controller. > +// > +struct _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI { > + EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR GetNvmeHcMmioBar; > + EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH GetNvmeHcDevicePath; > +}; > + > +extern EFI_GUID gEdkiiPeiNvmExpressHostControllerPpiGuid; > + > +#endif > diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec > index cc397185f7..eeabd62418 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -464,6 +464,9 @@ > ## Include/Ppi/PlatformSpecificResetHandler.h > gEdkiiPlatformSpecificResetHandlerPpiGuid = { 0x75cf14ae, 0x3441, 0x49dc, { 0xaa, 0x10, 0xbb, 0x35, 0xa7, 0xba, 0x8b, 0xab } } > > + ## Include/Ppi/NvmExpressHostController.h > + gEdkiiPeiNvmExpressHostControllerPpiGuid = { 0xcae3aa63, 0x676f, 0x4da3, { 0xbd, 0x50, 0x6c, 0xc5, 0xed, 0xde, 0x9a, 0xad } } > + > [Protocols] > ## Load File protocol provides capability to load and unload EFI image into memory and execute it. > # Include/Protocol/LoadPe32Image.h > Reviewed-by: Ruiyu Ni -- Thanks, Ray