Reviewed-By: Olivier Martin <[email protected]> > -----Original Message----- > From: Laszlo Ersek [mailto:[email protected]] > Sent: 24 January 2015 23:05 > To: [email protected]; [email protected]; > [email protected]; [email protected]; > [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected] > Subject: [edk2] [PATCH 3/3] ArmVirtualizationPkg: add simple ACPI > Platform Driver to the QEMU platform > > Introduce an ACPI platform driver for ARM / AARCH64 virtual machines. > For > the time being it is only a thin wrapper around OvmfPkg's > QemuLoaderLib, > ie. it downloads ACPI blobs from QEMU over fw_cfg, processes them, and > installs the resultant ACPI tables. > > We deliberately make no attempt to add (or even support) static asl(c) > files built into the firmware, as the targeted VMs have fully dynamic > hardware, and the ACPI payload generated by QEMU is expected to be > self-describing & complete. > > Developers are welcome to extend this driver with logic for other > hypervisors -- like Xen -- and to include the driver in the > corresponding > platform DSC and FDF files. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <[email protected]> > --- > > ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf > | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatform.c > | 39 +++++++++++++++++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > | 1 + > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > | 7 +++++++ > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf > | 6 ++++++ > 5 files changed, 103 insertions(+) > > diff --git > a/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.i > nf > b/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.i > nf > new file mode 100644 > index 0000000..5d480ec > --- /dev/null > +++ > b/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.i > nf > @@ -0,0 +1,50 @@ > +## @file > +# ACPI Platform Driver for ARM/AARCH64 virtual machines. > +# > +# Copyright (C) 2015, Red Hat, Inc. > +# Copyright (c) 2008 - 2012, Intel Corporation. All rights > reserved.<BR> > +# > +# 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 = AcpiPlatformDxe > + FILE_GUID = BE0E9D2B-C31B-48AB-8C10- > 551DC2845D01 > + MODULE_TYPE = DXE_DRIVER > + VERSION_STRING = 1.0 > + ENTRY_POINT = AcpiPlatformEntryPoint > + > +# > +# The following information is for reference only and not required by > the build > +# tools. > +# > +# VALID_ARCHITECTURES = ARM AARCH64 > +# > + > +[Sources] > + AcpiPlatform.c > + > +[Packages] > + MdePkg/MdePkg.dec > + OvmfPkg/OvmfPkg.dec > + > +[LibraryClasses] > + DebugLib > + QemuLoaderLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + > +[Protocols] > + gEfiAcpiTableProtocolGuid # PROTOCOL > ALWAYS_CONSUMED > + > +[Depex] > + gEfiAcpiTableProtocolGuid > diff --git > a/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatform.c > b/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatform.c > new file mode 100644 > index 0000000..a7a52d0 > --- /dev/null > +++ > b/ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatform.c > @@ -0,0 +1,39 @@ > +/** @file > + ACPI Platform Driver for ARM/AARCH64 virtual machines. > + > + Copyright (C) 2015, Red Hat, Inc. > + Copyright (c) 2008 - 2012, Intel Corporation. All rights > reserved.<BR> > + > + 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 <Library/DebugLib.h> > +#include <Library/QemuLoaderLib.h> > +#include <Library/UefiBootServicesTableLib.h> > + > +EFI_STATUS > +EFIAPI > +AcpiPlatformEntryPoint ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + EFI_ACPI_TABLE_PROTOCOL *AcpiTable; > + > + // > + // Our Depex ensures that this always succeeds. > + // > + Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, > + NULL /* Registration */, (VOID **)&AcpiTable); > + ASSERT_EFI_ERROR (Status); > + > + return InstallAllQemuLinkedTables (AcpiTable); > +} > diff --git > a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > index b05f1ec..f17cd2f 100644 > --- a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > +++ b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > @@ -41,12 +41,13 @@ > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntr > yPoint.inf > > UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/Uefi > ApplicationEntryPoint.inf > HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf > > UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServi > cesLib.inf > > UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf > + > OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLi > b/BaseOrderedCollectionRedBlackTreeLib.inf > > # > # Allow dynamic PCDs > # > PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > diff --git > a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > index 30e48d1..7509cbb 100644 > --- a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > +++ b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > @@ -40,12 +40,13 @@ > > [LibraryClasses.common] > # Virtio Support > VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf > > VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevic > eLib.inf > > QemuFwCfgLib|ArmPlatformPkg/ArmVirtualizationPkg/Library/QemuFwCfgLib/Q > emuFwCfgLib.inf > + QemuLoaderLib|OvmfPkg/Library/QemuLoaderLib/QemuLoaderLib.inf > > > ArmPlatformLib|ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualiz > ationPlatformLib/ArmVirtualizationPlatformLib.inf > > ArmPlatformSysConfigLib|ArmPlatformPkg/Library/ArmPlatformSysConfigLibN > ull/ArmPlatformSysConfigLibNull.inf > > TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf > > @@ -277,6 +278,12 @@ > > # > # SCSI Bus and Disk Driver > # > MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf > MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf > + > + # > + # ACPI Support > + # > + MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf > + > ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf > diff --git > a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf > b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf > index 2b71d61..9b94b73 100644 > --- a/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf > +++ b/ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf > @@ -188,12 +188,18 @@ READ_LOCK_STATUS = TRUE > # > # SCSI Bus and Disk Driver > # > INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf > INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf > > + # > + # ACPI Support > + # > + INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf > + INF > ArmPlatformPkg/ArmVirtualizationPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf > + > [FV.FVMAIN_COMPACT] > FvAlignment = 16 > ERASE_POLARITY = 1 > MEMORY_MAPPED = TRUE > STICKY_WRITE = TRUE > LOCK_CAP = TRUE > -- > 1.8.3.1 > > > ----------------------------------------------------------------------- > ------- > New Year. New Location. New Benefits. New Data Center in Ashburn, VA. > GigeNET is offering a free month of service with a new server in > Ashburn. > Choose from 2 high performing configs, both with 100TB of bandwidth. > Higher redundancy.Lower latency.Increased capacity.Completely > compliant. > http://p.sf.net/sfu/gigenet > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
