[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Add flush for xen console
Add flush function for xen console. Shutdown can be requested before the hypervisor gets to print everything to the console and stops trying. This happens in ukutest and does not get to print Passed(x/y). This patch assures everything is written before shutting down. Changes since v1 * Add barrier() to avoid infinite loop caused by compiler optimization Signed-off-by: Birlea Costin <costin.birlea@xxxxxxxxx> --- plat/xen/console.c | 14 ++++++++++++++ plat/xen/include/common/console.h | 3 +++ plat/xen/shutdown.c | 3 +++ 3 files changed, 20 insertions(+) diff --git a/plat/xen/console.c b/plat/xen/console.c index c0b35c7..ac93bfc 100644 --- a/plat/xen/console.c +++ b/plat/xen/console.c @@ -203,6 +203,20 @@ static void hvconsole_input(evtchn_port_t port __unused, /* NOT IMPLEMENTED YET */ } +void hvconsole_flush() +{ + struct xencons_interface *intf; + + if (!console_ready) + return; + + intf = console_ring; + if (unlikely(!intf)) + return ; + + while (intf->out_cons < intf->out_prod) + barrier(); +} void _libxenplat_init_console(void) { diff --git a/plat/xen/include/common/console.h b/plat/xen/include/common/console.h index c51c69b..b4f1b51 100644 --- a/plat/xen/include/common/console.h +++ b/plat/xen/include/common/console.h @@ -45,4 +45,7 @@ void _libxenplat_prepare_console(void); */ void _libxenplat_init_console(void); + +void hvconsole_flush(void); + #endif /* __CONSOLE_H__ */ diff --git a/plat/xen/shutdown.c b/plat/xen/shutdown.c index e1758ff..272ece4 100644 --- a/plat/xen/shutdown.c +++ b/plat/xen/shutdown.c @@ -40,6 +40,7 @@ #include <errno.h> #include <xen/xen.h> +#include <common/console.h> #if defined __X86_32__ #include <xen-x86/hypercall32.h> @@ -65,6 +66,8 @@ void ukplat_terminate(enum ukplat_gstate request) break; } + hvconsole_flush(); + for (;;) { struct sched_shutdown sched_shutdown = { .reason = reason }; -- 2.11.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 |