From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x22a.google.com (mail-it0-x22a.google.com [IPv6:2607:f8b0:4001:c0b::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4B7AA803B1 for ; Wed, 22 Mar 2017 07:14:48 -0700 (PDT) Received: by mail-it0-x22a.google.com with SMTP id 190so25066504itm.0 for ; Wed, 22 Mar 2017 07:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=w6Vll/dffdo+VYSa8wuits3sKx60/2a/39zyk/4/btY=; b=DCORuQQz9SO74PBCwEl/serZpLKv8GnrJdTDhcmjsXQ7Qowk1PydYJ2ro7IXiHcdgf MIGEA7eyu6tdcecVYcs9uj+UdBmp/WsBycL21Prk2X1oEKbAhkhSqJb2d+zpDsv6VIDz rzRcghke7oWG3MFOqcWPlcQ4eArAUHkUe51T4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=w6Vll/dffdo+VYSa8wuits3sKx60/2a/39zyk/4/btY=; b=gSYbi27T2tAJ4NddA6XWXRsQXonPieclhqNSmoY7EW58x1Ly+yxjuHpeLlC1X0LQaq icSoQuiIBKLrWjSJwyXLBUycTiPoRIH45MZCMpIpT+Ov5dNv+eLkax7t7ry0CCEwO9dv IOZx/WSyGna3c7ixqb6IviN3V0nEXyYOzZRxMOqTRYOvBQLfyaZrLif3DzqPos5003y2 iuiIbiVuhIIv3qGwgK7CLl3mqiaBP6sdvnIkzxKqeqlparLjFOWFZunhiuzwGnb1KsND ZnQlhTnnh4jop5x13tY2QhCnSe0XaUmjt02Hlr5e6osvcDgxpVH9354p29l2D+hI2htb APBw== X-Gm-Message-State: AFeK/H0SNnhHLhZh7VU1Ykj9H/AZAw2Qd70L5Gi0QhxELzbodrVEnTqoWoPqFCQXLHVGB4zCjmBODSqa2jU90Ggk X-Received: by 10.36.207.212 with SMTP id y203mr7842193itf.63.1490192087535; Wed, 22 Mar 2017 07:14:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.10.27 with HTTP; Wed, 22 Mar 2017 07:14:47 -0700 (PDT) In-Reply-To: <20170317204731.31488-8-lersek@redhat.com> References: <20170317204731.31488-1-lersek@redhat.com> <20170317204731.31488-8-lersek@redhat.com> From: Ard Biesheuvel Date: Wed, 22 Mar 2017 14:14:47 +0000 Message-ID: To: Laszlo Ersek Cc: edk2-devel-01 , Leif Lindholm Subject: Re: [PATCH v2 07/12] ArmVirtPkg: add PlatformHasAcpiDtDxe 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: Wed, 22 Mar 2017 14:14:48 -0000 Content-Type: text/plain; charset=UTF-8 On 17 March 2017 at 20:47, Laszlo Ersek wrote: > This driver produces the EDKII Platform Has ACPI and Platform Has Device > Tree protocols, exactly matching the current ACPI / DT exposure on QEMU, > according to ARM vs. AARCH64, and (in the latter case) to PcdPureAcpiBoot. > > Cc: Ard Biesheuvel > Cc: Leif Lindholm > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek Reviewed-by: Ard Biesheuvel > --- > ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf | 47 ++++++++++++ > ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c | 77 ++++++++++++++++++++ > 2 files changed, 124 insertions(+) > > diff --git a/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf b/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf > new file mode 100644 > index 000000000000..7724cf215dda > --- /dev/null > +++ b/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf > @@ -0,0 +1,47 @@ > +## @file > +# Decide whether the firmware should expose an ACPI- and/or a Device Tree-based > +# hardware description to the operating system. > +# > +# Copyright (c) 2017, Red Hat, Inc. > +# > +# 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 = 1.25 > + BASE_NAME = PlatformHasAcpiDtDxe > + FILE_GUID = 9d1dd27f-6d7f-427b-aec4-b62f6279c2f1 > + MODULE_TYPE = DXE_DRIVER > + VERSION_STRING = 1.0 > + ENTRY_POINT = PlatformHasAcpiDt > + > +[Sources] > + PlatformHasAcpiDtDxe.c > + > +[Packages] > + ArmPkg/ArmPkg.dec > + ArmVirtPkg/ArmVirtPkg.dec > + MdePkg/MdePkg.dec > + > +[LibraryClasses] > + BaseLib > + DebugLib > + PcdLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + > +[Protocols] > + gEdkiiPlatformHasAcpiProtocolGuid ## SOMETIMES_PRODUCES > + gEdkiiPlatformHasDeviceTreeProtocolGuid ## SOMETIMES_PRODUCES > + > +[FeaturePcd] > + gArmVirtTokenSpaceGuid.PcdPureAcpiBoot ## CONSUMES > + > +[Depex] > + TRUE > diff --git a/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c b/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c > new file mode 100644 > index 000000000000..8681f813a6b5 > --- /dev/null > +++ b/ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.c > @@ -0,0 +1,77 @@ > +/** @file > + Decide whether the firmware should expose an ACPI- and/or a Device Tree-based > + hardware description to the operating system. > + > + Copyright (c) 2017, Red Hat, Inc. > + > + 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 > + > +EFI_STATUS > +EFIAPI > +PlatformHasAcpiDt ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + > + Status = EFI_SUCCESS; > + > + // > + // If we fail to install any of the necessary protocols below, the OS will be > + // unbootable anyway (due to lacking hardware description), so tolerate no > + // errors here. > + // > + // Always make ACPI available on 64-bit systems. > + // > + if (MAX_UINTN == MAX_UINT64) { > + Status = gBS->InstallProtocolInterface ( > + &ImageHandle, > + &gEdkiiPlatformHasAcpiProtocolGuid, > + EFI_NATIVE_INTERFACE, > + NULL > + ); > + if (EFI_ERROR (Status)) { > + goto Failed; > + } > + } > + > + // > + // Expose the Device Tree unless PcdPureAcpiBoot is set. > + // > + if (!FeaturePcdGet (PcdPureAcpiBoot)) { > + Status = gBS->InstallProtocolInterface ( > + &ImageHandle, > + &gEdkiiPlatformHasDeviceTreeProtocolGuid, > + EFI_NATIVE_INTERFACE, > + NULL > + ); > + if (EFI_ERROR (Status)) { > + goto Failed; > + } > + } > + > + return Status; > + > +Failed: > + ASSERT_EFI_ERROR (Status); > + CpuDeadLoop (); > + // > + // Keep compilers happy. > + // > + return Status; > +} > -- > 2.9.3 > >