On 04/16/20 01:09, Rebecca Cran wrote: > On bhyve, the ACPI timer is located at a fixed IO address; it need > not be programmed into, nor fetched from, the PMBA -- power > management base address -- register of the PCI host bridge. > > Signed-off-by: Rebecca Cran <rebe...@bsdio.com> > --- > OvmfPkg/Include/IndustryStandard/Bhyve.h | 21 ++++++++++++ > OvmfPkg/Include/OvmfPlatforms.h | 1 + > .../AcpiTimerLib/BaseAcpiTimerLibBhyve.c | 33 +++++++++++++++++++ > .../AcpiTimerLib/BaseAcpiTimerLibBhyve.inf | 29 ++++++++++++++++ > 4 files changed, 84 insertions(+) > create mode 100644 OvmfPkg/Include/IndustryStandard/Bhyve.h > create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.c > create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.inf > > diff --git a/OvmfPkg/Include/IndustryStandard/Bhyve.h > b/OvmfPkg/Include/IndustryStandard/Bhyve.h > new file mode 100644 > index 0000000000..950f87048b > --- /dev/null > +++ b/OvmfPkg/Include/IndustryStandard/Bhyve.h > @@ -0,0 +1,21 @@ > +/** @file > + Various register numbers and value bits based on FreeBSD's bhyve > + at r359530. > + - https://svnweb.freebsd.org/base?view=revision&revision=359530 > + > + Copyright (C) 2020, Rebecca Cran <rebe...@bsdio.com> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef __BHYVE_H__ > +#define __BHYVE_H__ > + > +#include <Library/PciLib.h> > +#include <Uefi/UefiBaseType.h> > +#include <Uefi/UefiSpec.h> > +#include <Protocol/PciRootBridgeIo.h>
(1) These #include directives look unnecessary. > + > +#define BHYVE_ACPI_TIMER_IO_ADDR 0x408 > + > +#endif // __BHYVE_H__ > diff --git a/OvmfPkg/Include/OvmfPlatforms.h b/OvmfPkg/Include/OvmfPlatforms.h > index 59459231e8..77dd818e30 100644 > --- a/OvmfPkg/Include/OvmfPlatforms.h > +++ b/OvmfPkg/Include/OvmfPlatforms.h > @@ -14,6 +14,7 @@ > #include <IndustryStandard/Pci22.h> > #include <IndustryStandard/Q35MchIch9.h> > #include <IndustryStandard/I440FxPiix4.h> > +#include <IndustryStandard/Bhyve.h> > > // > // OVMF Host Bridge DID Address > diff --git a/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.c > b/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.c > new file mode 100644 > index 0000000000..58ebffac86 > --- /dev/null > +++ b/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.c > @@ -0,0 +1,33 @@ > +/** @file > + Provide InternalAcpiGetTimerTick for the bhyve instance of the > + Base ACPI Timer Library > + > + Copyright (C) 2020, Rebecca Cran <rebe...@bsdio.com> > + Copyright (C) 2014, Gabriel L. Somlo <so...@cmu.edu> > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#include <Library/DebugLib.h> (2) We don't use DebugLib here, so please remove this #include. (... in retrospect, I think the same #include should be removed from the preexistent C source too, in this directory, but that's for another day.) > +#include <Library/IoLib.h> > +#include <OvmfPlatforms.h> > + > +/** > + Internal function to read the current tick counter of ACPI. > + > + Read the current ACPI tick counter using the counter address cached > + by this instance's constructor. > + > + @return The tick counter read. > + > +**/ > +UINT32 > +InternalAcpiGetTimerTick ( > + VOID > + ) > +{ > + // > + // Return the current ACPI timer value. (3) Please replace "// Return" with "// Return". > + // > + return IoRead32 (BHYVE_ACPI_TIMER_IO_ADDR); > +} > diff --git a/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.inf > b/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.inf > new file mode 100644 > index 0000000000..1e48718f3d > --- /dev/null > +++ b/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLibBhyve.inf > @@ -0,0 +1,29 @@ > +## @file > +# Base ACPI Timer Library Instance for Bhyve. > +# > +# Copyright (C) 2020, Rebecca Cran <rebe...@bsdio.com> > +# Copyright (C) 2014, Gabriel L. Somlo <so...@cmu.edu> > +# Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved. > +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +## > + > +[Defines] > + INF_VERSION = 0x00010005 > + BASE_NAME = BaseAcpiTimerLibBhyve > + FILE_GUID = A5E3B247-7302-11EA-9C04-3CECEF0C1C08 > + MODULE_TYPE = BASE > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = TimerLib > + > +[Sources] > + AcpiTimerLib.c > + BaseAcpiTimerLibBhyve.c (4) "AcpiTimerLib.h" should be listed here, as that is the file that declares the InternalAcpiGetTimerTick() function. > + > +[Packages] > + MdePkg/MdePkg.dec > + OvmfPkg/OvmfPkg.dec (5) I think you can drop "OvmfPkg/OvmfPkg.dec", as you don't seem to be consuming any interface (such as guid, protocol, pcd, lib class, ...) that's declared in "OvmfPkg.dec". > + > +[LibraryClasses] > + IoLib > With (1)-(5) fixed/considered: Reviewed-by: Laszlo Ersek <ler...@redhat.com> Thanks! Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#57499): https://edk2.groups.io/g/devel/message/57499 Mute This Topic: https://groups.io/mt/73045133/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-