|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv6 30/37] plat/kvm: Implement shutdown for Arm64
From: Wei Chen <Wei.Chen@xxxxxxx>
QEMU/KVM provide a PSCI interface for virtual machine on
Arm64 platform. So we use this interface to implement
platform system off function.
Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx>
---
plat/kvm/shutdown.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/plat/kvm/shutdown.c b/plat/kvm/shutdown.c
index a513df9..474bfb4 100644
--- a/plat/kvm/shutdown.c
+++ b/plat/kvm/shutdown.c
@@ -22,7 +22,8 @@
*/
#include <errno.h>
-#include <x86/cpu.h>
+#include <cpu.h>
+#include <irq.h>
#include <uk/print.h>
#include <uk/plat/bootstrap.h>
@@ -31,14 +32,10 @@ static void cpu_halt(void) __noreturn;
/* TODO: implement CPU reset */
void ukplat_terminate(enum ukplat_gstate request __unused)
{
- /*
- * 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).
- */
uk_printk("Unikraft halted\n");
- outw(0x501, 41);
+
+ /* Try to make system off */
+ system_off();
/*
* If we got here, there is no way to initiate "shutdown" on virtio
@@ -49,9 +46,7 @@ void ukplat_terminate(enum ukplat_gstate request __unused)
static void cpu_halt(void)
{
- __asm__ __volatile__("cli; hlt");
- for (;;)
- ;
+ __CPU_HALT();
}
int ukplat_suspend(void)
--
2.17.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |