From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out01.mta.xmission.com (out01.mta.xmission.com [166.70.13.231]) by mx.groups.io with SMTP id smtpd.web11.565.1587610957017243269 for ; Wed, 22 Apr 2020 20:02:37 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: bsdio.com, ip: 166.70.13.231, mailfrom: rebecca@bsdio.com) Received: from in01.mta.xmission.com ([166.70.13.51]) by out01.mta.xmission.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jRS8J-000865-QF; Wed, 22 Apr 2020 21:02:35 -0600 Received: from mta5.zcs.xmission.com ([166.70.13.69]) by in01.mta.xmission.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.87) (envelope-from ) id 1jRS8G-0000zn-5s; Wed, 22 Apr 2020 21:02:35 -0600 Received: from localhost (localhost [127.0.0.1]) by mta5.zcs.xmission.com (Postfix) with ESMTP id 08C27128048B; Wed, 22 Apr 2020 21:02:32 -0600 (MDT) X-Amavis-Modified: Mail body modified (using disclaimer) - mta5.zcs.xmission.com Received: from mta5.zcs.xmission.com ([127.0.0.1]) by localhost (mta5.zcs.xmission.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id zn305dBMU8ZA; Wed, 22 Apr 2020 21:02:31 -0600 (MDT) Received: from photon.int.bluestop.org (muon.bluestop.org [65.103.231.193]) by mta5.zcs.xmission.com (Postfix) with ESMTPSA id 5724312803DF; Wed, 22 Apr 2020 21:02:31 -0600 (MDT) From: "Rebecca Cran" To: devel@edk2.groups.io, Jordan Justen , Laszlo Ersek , Ard Biesheuvel Cc: Rebecca Cran Date: Wed, 22 Apr 2020 21:02:13 -0600 Message-Id: <20200423030214.57861-2-rebecca@bsdio.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200423030214.57861-1-rebecca@bsdio.com> References: <20200423030214.57861-1-rebecca@bsdio.com> MIME-Version: 1.0 X-XM-SPF: eid=1jRS8G-0000zn-5s;;;mid=<20200423030214.57861-2-rebecca@bsdio.com>;;;hst=in01.mta.xmission.com;;;ip=166.70.13.69;;;frm=rebecca@bsdio.com;;;spf=pass X-SA-Exim-Connect-IP: 166.70.13.69 X-SA-Exim-Mail-From: rebecca@bsdio.com X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on sa01.xmission.com X-Spam-Level: *** X-Spam-Status: No, score=3.9 required=8.0 tests=ALL_TRUSTED,BAYES_50, DCC_CHECK_NEGATIVE,LotsOfNums_01,TooManyTo_001,TooManyTo_002, TooManyTo_003,XMNoVowels autolearn=disabled version=3.4.2 X-Spam-Virus: No X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.5000] * 1.5 XMNoVowels Alpha-numberic number with no vowels * 0.5 TooManyTo_002 Multiple "To" Header Recipients 3x (uncommon) * 0.6 TooManyTo_003 Multiple "To" Header Recipients 4x (uncommon) * 0.3 TooManyTo_001 Multiple "To" Header Recipients 2x (uncommon) * 1.2 LotsOfNums_01 BODY: Lots of long strings of numbers * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa01 1397; IP=ok Body=1 Fuz1=1] [Fuz2=1] X-Spam-DCC: XMission; sa01 1397; IP=ok Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ***;devel@edk2.groups.io, Jordan Justen , Laszlo Ersek , Ard Biesheuvel X-Spam-Relay-Country: X-Spam-Timing: total 2963 ms - load_scoreonly_sql: 0.03 (0.0%), signal_user_changed: 4.5 (0.2%), b_tie_ro: 3.1 (0.1%), parse: 1.36 (0.0%), extract_message_metadata: 18 (0.6%), get_uri_detail_list: 1.92 (0.1%), tests_pri_-1000: 2.8 (0.1%), tests_pri_-950: 1.02 (0.0%), tests_pri_-900: 0.79 (0.0%), tests_pri_-90: 69 (2.3%), check_bayes: 67 (2.3%), b_tokenize: 8 (0.3%), b_tok_get_all: 9 (0.3%), b_comp_prob: 1.80 (0.1%), b_tok_touch_all: 46 (1.5%), b_finish: 0.78 (0.0%), tests_pri_0: 2857 (96.4%), check_dkim_signature: 0.43 (0.0%), check_dkim_adsp: 2552 (86.1%), poll_dns_idle: 2546 (85.9%), tests_pri_10: 1.84 (0.1%), tests_pri_500: 5 (0.2%), rewrite_mail: 0.00 (0.0%) Subject: [PATCH 1/2] OvmfPkg: Add DxeResetSystemLibBhyve X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Thu, 05 May 2016 13:38:54 -0600) X-SA-Exim-Scanned: Yes (on in01.mta.xmission.com) Content-Transfer-Encoding: 8bit Introduce the DxeResetSystemLibBhyve library to support powering off bhyve guests. Signed-off-by: Rebecca Cran Cc: Jordan Justen Cc: Laszlo Ersek Cc: Ard Biesheuvel --- OvmfPkg/Include/IndustryStandard/Bhyve.h | 2 + .../ResetSystemLib/DxeResetShutdownBhyve.c | 43 +++++++++++++++++++ .../ResetSystemLib/DxeResetSystemLibBhyve.inf | 38 ++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 OvmfPkg/Library/ResetSystemLib/DxeResetShutdownBhyve.c create mode 100644 OvmfPkg/Library/ResetSystemLib/DxeResetSystemLibBhyve.inf diff --git a/OvmfPkg/Include/IndustryStandard/Bhyve.h b/OvmfPkg/Include/IndustryStandard/Bhyve.h index 02ce5587ee..9745d62688 100644 --- a/OvmfPkg/Include/IndustryStandard/Bhyve.h +++ b/OvmfPkg/Include/IndustryStandard/Bhyve.h @@ -13,4 +13,6 @@ #define BHYVE_ACPI_TIMER_IO_ADDR 0x408 +#define BHYVE_PM_VALUE 0x408 + #endif // __BHYVE_H__ diff --git a/OvmfPkg/Library/ResetSystemLib/DxeResetShutdownBhyve.c b/OvmfPkg/Library/ResetSystemLib/DxeResetShutdownBhyve.c new file mode 100644 index 0000000000..cb30d75ee2 --- /dev/null +++ b/OvmfPkg/Library/ResetSystemLib/DxeResetShutdownBhyve.c @@ -0,0 +1,43 @@ +/** @file + DXE 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 // CpuDeadLoop() +#include // IoOr16() +#include // ResetShutdown() +#include // BHYVE_PM_VALUE + +EFI_STATUS +EFIAPI +DxeResetInit ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return EFI_SUCCESS; +} + +/** + 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_VALUE, 10, 13, 5); + IoOr16 (BHYVE_PM_VALUE, BIT13); + CpuDeadLoop (); +} diff --git a/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLibBhyve.inf b/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLibBhyve.inf new file mode 100644 index 0000000000..c7923a4755 --- /dev/null +++ b/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLibBhyve.inf @@ -0,0 +1,38 @@ +## @file +# DXE library instance for ResetSystem library class for bhyve +# +# 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 = DxeResetSystemLibBhyve + FILE_GUID = 88a12688-98f5-44a6-bf4b-7894706a2d11 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = ResetSystemLib|DXE_DRIVER DXE_RUNTIME_DRIVER SMM_CORE DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION + CONSTRUCTOR = DxeResetInit + +# +# The following information is for reference only and not required by the build +# tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + DxeResetShutdownBhyve.c + ResetSystemLib.c + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[LibraryClasses] + BaseLib + IoLib + TimerLib -- 2.20.1