From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (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 1BCAC803DF for ; Wed, 22 Mar 2017 18:42:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490233322; x=1521769322; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=8rrd+bdQfpMm4j3LZZYOaY5D3CP8k330dZDMJ/ZjJwU=; b=UInmbzaIpgg4x5+LNLfUdM9nUZTdzGIr/V8fQsMvJlQ/ITrsf/mF4EN8 pCHSxfA0eKoeJ9QgL+HrKawV1dcdFQ==; Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Mar 2017 18:42:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,207,1486454400"; d="scan'208";a="239354380" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 22 Mar 2017 18:42:01 -0700 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 22 Mar 2017 18:42:01 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 22 Mar 2017 18:42:01 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.88]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.204]) with mapi id 14.03.0248.002; Thu, 23 Mar 2017 09:41:57 +0800 From: "Zeng, Star" To: Laszlo Ersek , Leif Lindholm , "Tian, Feng" CC: edk2-devel-01 , Ard Biesheuvel , "Zeng, Star" Thread-Topic: [edk2] [PATCH v2 05/12] ArmPkg: introduce EDKII Platform Has ACPI Protocol, and plug-in library Thread-Index: AQHSn1/Ct9FsN6en9E+84QMKKTQOM6GaK/cAgAZJkQCAATfqoA== Date: Thu, 23 Mar 2017 01:41:56 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B8377AB@shsmsx102.ccr.corp.intel.com> References: <20170317204731.31488-1-lersek@redhat.com> <20170317204731.31488-6-lersek@redhat.com> <20170318150041.GL16034@bivouac.eciton.net> <1bc7b29c-7a71-86cb-adce-5a14de129c63@redhat.com> In-Reply-To: <1bc7b29c-7a71-86cb-adce-5a14de129c63@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2 05/12] ArmPkg: introduce EDKII Platform Has ACPI Protocol, and plug-in library X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2017 01:42:02 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I prefer to do not include the protocol definition and the library instance= into MdeModulePkg at this moment until they need to be used by multiple pl= atforms/archs. Thanks, Star -----Original Message----- From: Laszlo Ersek [mailto:lersek@redhat.com]=20 Sent: Wednesday, March 22, 2017 11:02 PM To: Leif Lindholm ; Zeng, Star ; Tian, Feng Cc: edk2-devel-01 ; Ard Biesheuvel Subject: Re: [edk2] [PATCH v2 05/12] ArmPkg: introduce EDKII Platform Has A= CPI Protocol, and plug-in library On 03/18/17 16:00, Leif Lindholm wrote: > On Fri, Mar 17, 2017 at 09:47:24PM +0100, Laszlo Ersek wrote: >> The presence of this protocol in the DXE protocol database implies=20 >> that the platform provides the operating system with an ACPI-based=20 >> hardware description. This is not necessarily mutually exclusive with=20 >> a Device Tree-based hardware description. A platform driver is=20 >> supposed to produce a single instance of the protocol (with NULL content= s), if appropriate. >> >> The decision to produce the protocol is platform specific; for=20 >> example, it could depend on an HII checkbox / underlying non-volatile UE= FI variable. >> >> The protocol is meant to be consumed by=20 >> "MdeModulePkg/Universal/Acpi/AcpiTableDxe", through the=20 >> PlatformHasAcpiLib plug-in. By linking this library into AcpiTableDxe=20 >> via NULL resolution in the platform DSC, the platform makes=20 >> EFI_ACPI_TABLE_PROTOCOL and (if enabled) EFI_ACPI_SDT_PROTOCOL=20 >> dependent on the above dynamic decision. >> >> In turn, other (platform and universal) DXE drivers that produce ACPI=20 >> tables will wait for EFI_ACPI_TABLE_PROTOCOL / EFI_ACPI_SDT_PROTOCOL,=20 >> via DEPEX, protocol notify, or a simple gBS->LocateProtocol() in a=20 >> "late enough" callback (such as Ready To Boot). >> >> Because this protocol is not standard, it is prefixed with EDKII /=20 >> Edkii, as seen elsewhere in MdeModulePkg and SecurityPkg, for=20 >> example. (ARM / Arm doesn't look future-proof enough; future UEFI=20 >> platforms could face the same issue.) In addition, an effort is made=20 >> to avoid the phrase "AcpiPlatform", as that belongs to drivers /=20 >> libraries that produce platform specific ACPI content (as opposed to=20 >> deciding whether the entire firmware will have access to EFI_ACPI_TABLE_= PROTOCOL). >=20 > I greatly approve, but since you've already done this generically - is=20 > there any good reason to keep this in ArmPkg? > I am strongly looking to get rid of "things that happen to have been=20 > implemented for ARM" from there and pruning it down to contain only=20 > things that are architecturelly ARM-specific. >=20 > MdeModulePkg? It looks like Ard is okay with this series after all, and you (Leif) also s= eem to tolerate it. The question is now if the MdeModulePkg owners are okay= to take this patch for MdeModulePkg. Star, Feng, can I add the protocol definition and the library instance in t= his patch to MdeModulePkg? (We've ruled out the dynamic PCD discussed previ= ously for AcpiTableDxe, because platforms would have even greater trouble s= etting such a PCD than using this protocol.) Can you guys please give a decisive answer in one or two days? Thank you, Laszlo >=20 > Regards, >=20 > Leif >=20 >> Cc: Ard Biesheuvel >> Cc: Leif Lindholm >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Laszlo Ersek >> --- >> ArmPkg/ArmPkg.dec | 4 ++ >> ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.inf | 40 +++++++++= +++++++++++ >> ArmPkg/Include/Protocol/PlatformHasAcpi.h | 34 +++++++++= ++++++++ >> ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.c | 36 +++++++++= +++++++++ >> 4 files changed, 114 insertions(+) >> >> diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec index=20 >> c4b4da2f95bb..0e49360a386a 100644 >> --- a/ArmPkg/ArmPkg.dec >> +++ b/ArmPkg/ArmPkg.dec >> @@ -52,6 +52,10 @@ [Ppis] >> ## Include/Ppi/ArmMpCoreInfo.h >> gArmMpCoreInfoPpiGuid =3D { 0x6847cc74, 0xe9ec, 0x4f8f, {0xa2, 0x9d,= =20 >> 0xab, 0x44, 0xe7, 0x54, 0xa8, 0xfc} } >> =20 >> +[Protocols] >> + ## Include/Protocol/PlatformHasAcpi.h >> + gEdkiiPlatformHasAcpiProtocolGuid =3D { 0xf0966b41, 0xc23f, 0x4= 1b9, { 0x96, 0x04, 0x0f, 0xf7, 0xe1, 0x11, 0x96, 0x5a } } >> + >> [PcdsFeatureFlag.common] >> =20 >> gArmTokenSpaceGuid.PcdCpuDxeProduceDebugSupport|FALSE|BOOLEAN|0x00000 >> 001 >> =20 >> diff --git a/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.inf=20 >> b/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.inf >> new file mode 100644 >> index 000000000000..c83da4d8e98a >> --- /dev/null >> +++ b/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.inf >> @@ -0,0 +1,40 @@ >> +## @file >> +# A hook-in library for MdeModulePkg/Universal/Acpi/AcpiTableDxe. >> +# >> +# Plugging this library instance into AcpiTableDxe makes #=20 >> +EFI_ACPI_TABLE_PROTOCOL and (if enabled) EFI_ACPI_SDT_PROTOCOL=20 >> +depend on the # platform's dynamic decision whether to expose an=20 >> +ACPI-based hardware # description to the operating system. >> +# >> +# Universal and platform specific DXE drivers that produce ACPI=20 >> +tables depend # on EFI_ACPI_TABLE_PROTOCOL / EFI_ACPI_SDT_PROTOCOL in t= urn. >> +# >> +# Copyright (C) 2017, Red Hat, Inc. >> +# >> +# This program and the accompanying materials are licensed and made=20 >> +available # under the terms and conditions of the BSD License which=20 >> +accompanies this # distribution. The full text of the license may be=20 >> +found at # http://opensource.org/licenses/bsd-license.php >> +# >> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"=20 >> +BASIS, WITHOUT # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPR= ESS OR IMPLIED. >> +## >> + >> +[Defines] >> + INF_VERSION =3D 1.25 >> + BASE_NAME =3D PlatformHasAcpiLib >> + FILE_GUID =3D 29beb028-0958-447b-be0a-12229235d7= 7d >> + MODULE_TYPE =3D BASE >> + VERSION_STRING =3D 1.0 >> + LIBRARY_CLASS =3D PlatformHasAcpiLib|DXE_DRIVER >> + CONSTRUCTOR =3D PlatformHasAcpiInitialize >> + >> +[Sources] >> + PlatformHasAcpiLib.c >> + >> +[Packages] >> + ArmPkg/ArmPkg.dec >> + MdePkg/MdePkg.dec >> + >> +[Depex] >> + gEdkiiPlatformHasAcpiProtocolGuid >> diff --git a/ArmPkg/Include/Protocol/PlatformHasAcpi.h=20 >> b/ArmPkg/Include/Protocol/PlatformHasAcpi.h >> new file mode 100644 >> index 000000000000..3cd0cfe4515d >> --- /dev/null >> +++ b/ArmPkg/Include/Protocol/PlatformHasAcpi.h >> @@ -0,0 +1,34 @@ >> +/** @file >> + EDKII Platform Has ACPI Protocol >> + >> + The presence of this protocol in the DXE protocol database implies=20 >> + that the platform provides the operating system with an ACPI-based=20 >> + hardware description. Note that this is not necessarily mutually=20 >> + exclusive with a Device Tree-based hardware description. A=20 >> + platform driver is supposed to produce a single instance of the=20 >> + protocol (with NULL contents), if appropriate. >> + >> + Copyright (C) 2017, Red Hat, Inc. >> + >> + This program and the accompanying materials are licensed and made=20 >> + available under the terms and conditions of the BSD License that=20 >> + accompanies this distribution. The full text of the license may be=20 >> + found at http://opensource.org/licenses/bsd-license.php. >> + >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"=20 >> +BASIS, WITHOUT >> + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> +**/ >> + >> + >> +#ifndef __EDKII_PLATFORM_HAS_ACPI_PROTOCOL_H__ >> +#define __EDKII_PLATFORM_HAS_ACPI_PROTOCOL_H__ >> + >> +#define EDKII_PLATFORM_HAS_ACPI_PROTOCOL_GUID \ >> + { \ >> + 0xf0966b41, 0xc23f, 0x41b9, \ >> + { 0x96, 0x04, 0x0f, 0xf7, 0xe1, 0x11, 0x96, 0x5a } \ >> + } >> + >> +extern EFI_GUID gEdkiiPlatformHasAcpiProtocolGuid; >> + >> +#endif >> diff --git a/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.c=20 >> b/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.c >> new file mode 100644 >> index 000000000000..79072da21c2b >> --- /dev/null >> +++ b/ArmPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.c >> @@ -0,0 +1,36 @@ >> +/** @file >> + A hook-in library for MdeModulePkg/Universal/Acpi/AcpiTableDxe. >> + >> + Plugging this library instance into AcpiTableDxe makes =20 >> + EFI_ACPI_TABLE_PROTOCOL and (if enabled) EFI_ACPI_SDT_PROTOCOL=20 >> + depend on the platform's dynamic decision whether to expose an=20 >> + ACPI-based hardware description to the operating system. >> + >> + Universal and platform specific DXE drivers that produce ACPI=20 >> + tables depend on EFI_ACPI_TABLE_PROTOCOL / EFI_ACPI_SDT_PROTOCOL in t= urn. >> + >> + Copyright (C) 2017, Red Hat, Inc. >> + >> + This program and the accompanying materials are licensed and made=20 >> + available under the terms and conditions of the BSD License which=20 >> + accompanies this distribution. The full text of the license may be=20 >> + found at http://opensource.org/licenses/bsd-license.php >> + >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"=20 >> +BASIS, WITHOUT >> + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> +**/ >> + >> +#include >> + >> +RETURN_STATUS >> +EFIAPI >> +PlatformHasAcpiInitialize ( >> + VOID >> + ) >> +{ >> + // >> + // Do nothing, just imbue AcpiTableDxe with an >> + // EDKII_PLATFORM_HAS_ACPI_PROTOCOL dependency. >> + // >> + return RETURN_SUCCESS; >> +} >> -- >> 2.9.3 >> >> > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel >=20