You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
From 583ea68595acd012c1a99328302fd16b6fe04caf Mon Sep 17 00:00:00 2001 |
|
From: Thilo Boehm <tboehm@linux.vnet.ibm.com> |
|
Date: Wed, 11 Sep 2013 16:45:41 +0200 |
|
Subject: [PATCH 21/60] VSMS: add default console |
|
|
|
A new function to add a default console has been added. As with |
|
the default graphics and default input device, the default device |
|
generation is optional and depends on the domain type and |
|
architecture. |
|
Initially, we only create an s390 console, which is necessary to |
|
define a runnable guest. |
|
|
|
Signed-off-by: Thilo Boehm <tboehm@linux.vnet.ibm.com> |
|
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> |
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> |
|
Signed-off-by: John Ferlan <jferlan@redhat.com> |
|
--- |
|
src/Virt_VirtualSystemManagementService.c | 34 +++++++++++++++++++++++++++++++ |
|
1 file changed, 34 insertions(+) |
|
|
|
diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c |
|
index d626691..d51f230 100644 |
|
--- a/src/Virt_VirtualSystemManagementService.c |
|
+++ b/src/Virt_VirtualSystemManagementService.c |
|
@@ -592,6 +592,38 @@ static bool default_graphics_device(struct domain *domain) |
|
return true; |
|
} |
|
|
|
+static bool default_console_device(struct domain *domain) |
|
+{ |
|
+ /* currently only taking care for s390 guests */ |
|
+ if ((domain->type == DOMAIN_KVM || domain->type == DOMAIN_QEMU) && |
|
+ domain->os_info.fv.arch != NULL && |
|
+ (XSTREQ(domain->os_info.fv.arch, "s390") || |
|
+ XSTREQ(domain->os_info.fv.arch, "s390x" ))) { |
|
+ char * consoletype = NULL; |
|
+ if (domain->os_info.fv.machine != NULL && |
|
+ XSTREQ(domain->os_info.fv.machine, "s390-ccw-virtio")) { |
|
+ consoletype = "sclp"; |
|
+ } else { |
|
+ consoletype = "virtio"; |
|
+ } |
|
+ free(domain->dev_console); |
|
+ domain->dev_console = calloc(1, sizeof(*domain->dev_console)); |
|
+ if (domain->dev_console == NULL) { |
|
+ CU_DEBUG("Failed to allocate default console device."); |
|
+ return false; |
|
+ } |
|
+ CU_DEBUG("Defining default console device for s390."); |
|
+ domain->dev_console->type = CIM_RES_TYPE_CONSOLE; |
|
+ domain->dev_console->dev.console.source_type = |
|
+ CIM_CHARDEV_SOURCE_TYPE_PTY; |
|
+ domain->dev_console->dev.console.target_type = |
|
+ strdup(consoletype); |
|
+ domain->dev_console_ct = 1; |
|
+ } |
|
+ |
|
+ return true; |
|
+} |
|
+ |
|
static bool default_input_device(struct domain *domain) |
|
{ |
|
if (domain->type == DOMAIN_LXC) |
|
@@ -628,6 +660,8 @@ static bool add_default_devs(struct domain *domain) |
|
{ |
|
if (domain->dev_graphics_ct < 1 && |
|
domain->dev_console_ct < 1) { |
|
+ if (!default_console_device(domain)) |
|
+ return false; |
|
if (!default_graphics_device(domain)) |
|
return false; |
|
} |
|
-- |
|
2.1.0
|
|
|