From f159102a130fac9b416418eb9b6fa35b63426ca5 Mon Sep 17 00:00:00 2001 From: Rebecca Cran Date: Sun, 3 May 2020 20:18:53 -0600 Subject: OvmfPkg: Add BaseResetSystemLibBhyve Introduce BaseResetSystemLibBhyve.inf, to support powering off bhyve guests. Signed-off-by: Rebecca Cran Cc: Jordan Justen Cc: Laszlo Ersek Cc: Ard Biesheuvel Message-Id: <20200504021853.76658-1-rebecca@bsdio.com> [lersek@redhat.com: MODULE_TYPE: replace DXE_DRIVER with BASE] [lersek@redhat.com: replace with ] [lersek@redhat.com: strip ".inf" from subject line] Reviewed-by: Laszlo Ersek --- .../ResetSystemLib/BaseResetShutdownBhyve.c | 34 ++++++++++++++++++ .../ResetSystemLib/BaseResetSystemLibBhyve.inf | 40 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 OvmfPkg/Library/ResetSystemLib/BaseResetShutdownBhyve.c create mode 100644 OvmfPkg/Library/ResetSystemLib/BaseResetSystemLibBhyve.inf (limited to 'OvmfPkg/Library') diff --git a/OvmfPkg/Library/ResetSystemLib/BaseResetShutdownBhyve.c b/OvmfPkg/Library/ResetSystemLib/BaseResetShutdownBhyve.c new file mode 100644 index 0000000000..c2ac847877 --- /dev/null +++ b/OvmfPkg/Library/ResetSystemLib/BaseResetShutdownBhyve.c @@ -0,0 +1,34 @@ +/** @file + Base Reset System Library Shutdown API implementation for bhyve. + + Copyright (C) 2020, Rebecca Cran + Copyright (C) 2020, Red Hat, Inc. + Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include // BIT13 + +#include // BHYVE_PM_REG +#include // CpuDeadLoop() +#include // IoOr16() +#include // ResetShutdown() + +/** + Calling this function causes the system to enter a power state equivalent + to the ACPI G2/S5 or G3 states. + + System shutdown should not return, if it returns, it means the system does + not support shut down reset. +**/ +VOID +EFIAPI +ResetShutdown ( + VOID + ) +{ + IoBitFieldWrite16 (BHYVE_PM_REG, 10, 13, 5); + IoOr16 (BHYVE_PM_REG, BIT13); + CpuDeadLoop (); +} diff --git a/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLibBhyve.inf b/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLibBhyve.inf new file mode 100644 index 0000000000..74124aed38 --- /dev/null +++ b/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLibBhyve.inf @@ -0,0 +1,40 @@ +## @file +# Base library instance for ResetSystem library class for bhyve +# +# Copyright (C) 2020, Rebecca Cran +# Copyright (C) 2020, Red Hat, Inc. +# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 1.29 + BASE_NAME = BaseResetSystemLibBhyve + FILE_GUID = 5c71b08f-0ade-4607-8b9d-946c2757fee8 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = ResetSystemLib + +# +# The following information is for reference only and not required by the build +# tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + BaseResetShutdownBhyve.c + ResetSystemLib.c + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[LibraryClasses] + BaseLib + IoLib + TimerLib + -- cgit v1.2.3