[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCHv4 38/43] plat/kvm: Implement shutdown for Arm64
Hi Wei, On 06/07/18 10:03, Wei Chen wrote: 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 | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plat/kvm/shutdown.c b/plat/kvm/shutdown.c index a513df9..0f0a01f 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>@@ -38,7 +39,11 @@ void ukplat_terminate(enum ukplat_gstate request __unused)* be 83 ('S', 41 << 1 | 1). */ uk_printk("Unikraft halted\n"); +#if defined(__X86_64__) outw(0x501, 41); +#elif defined(__ARM_64__) + system_off(); +#endif/** If we got here, there is no way to initiate "shutdown" on virtio @@ -49,7 +54,9 @@ void ukplat_terminate(enum ukplat_gstate request __unused)static void cpu_halt(void){ - __asm__ __volatile__("cli; hlt"); + local_irq_disable(); + halt(); I think you want to move halt() in the for loop for Arm because WFI will come back when an interrupt is received. This means you will go into a busy loop wasting power. + for (;;) ; } Cheers, -- Julien Grall _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |