From 96b4f77a55833895677cf4b4a33fc50c7b3da032 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Fri, 2 Oct 2015 17:48:59 +0200 Subject: [PATCH] xenconsole: try to attach to PV console if HVM fails MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit HVM guests have always used the emulated serial console by default, but if the emulated serial pty cannot be fetched from xenstore try to use the PV console instead. Signed-off-by: Roger Pau Monné Acked-by: Wei Liu Cc: Ian Jackson Cc: Stefano Stabellini Cc: Ian Campbell Cc: Wei Liu --- tools/console/client/main.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/console/client/main.c b/tools/console/client/main.c index f130a605fe..d006fdcf60 100644 --- a/tools/console/client/main.c +++ b/tools/console/client/main.c @@ -333,7 +333,7 @@ int main(int argc, char **argv) { 0 }, }; - char *dom_path = NULL, *path = NULL; + char *dom_path = NULL, *path = NULL, *test = NULL; int spty, xsfd; struct xs_handle *xs; char *end; @@ -415,9 +415,15 @@ int main(int argc, char **argv) path = malloc(strlen(dom_path) + strlen("/device/console/0/tty") + 5); if (path == NULL) err(ENOMEM, "malloc"); - if (type == CONSOLE_SERIAL) + if (type == CONSOLE_SERIAL) { snprintf(path, strlen(dom_path) + strlen("/serial/0/tty") + 5, "%s/serial/%d/tty", dom_path, num); - else { + test = xs_read(xs, XBT_NULL, path, NULL); + free(test); + if (test == NULL) + type = CONSOLE_PV; + } + if (type == CONSOLE_PV) { + if (num == 0) snprintf(path, strlen(dom_path) + strlen("/console/tty") + 1, "%s/console/tty", dom_path); else -- 2.39.5