|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3] plat/common: perform ACPI poweroff on shutdown for x86
Great!
Reviewed-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
On 29.03.19, 16:02, "Florian Schmidt" <Florian.Schmidt@xxxxxxxxx> wrote:
Note that this is hypervisor/emulator-specific and currently only
supports QEMU (and whoever is compatible with QEMU).
Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
---
plat/common/x86/cpu_native.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/plat/common/x86/cpu_native.c b/plat/common/x86/cpu_native.c
index 57ea3a21..e29c2dbc 100644
--- a/plat/common/x86/cpu_native.c
+++ b/plat/common/x86/cpu_native.c
@@ -51,10 +51,19 @@ unsigned long read_cr2(void)
void system_off(void)
{
/*
- * Poke the QEMU "isa-debug-exit" device to "shutdown". Should be
- * harmless if it is not present. This is used to enable automated
- * tests on virtio. Note that the actual QEMU exit() status will
- * be 83 ('S', 41 << 1 | 1).
+ * Perform an ACPI shutdown by writing (SLP_TYPa | SLP_EN) to PM1a_CNT.
+ * Generally speaking, we'd have to jump through a lot of hoops to
+ * collect those values, however, for QEMU, those are static. Should be
+ * harmless if we're not running on QEMU, especially considering we're
+ * already shutting down, so who cares if we crash.
+ */
+ outw(0x604, 0x2000);
+
+ /*
+ * If that didn't work for whatever reason, try poking the QEMU
+ * "isa-debug-exit" device to "shutdown". Should be harmless if it is
+ * not present. This is used to enable automated tests on virtio. Note
+ * that the actual QEMU exit() status will be 83 ('S', 41 << 1 | 1).
*/
outw(0x501, 41);
}
--
2.21.0
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |