From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH] libxl: default to xenconsoled for pv guests, even if qemu is running Date: Wed, 25 Apr 2012 12:02:53 +0100 Message-ID: <1335351773.28015.33.camel@zakaz.uk.xensource.com> References: <1335350442.28015.29.camel@zakaz.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: Ian Jackson , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org On Wed, 2012-04-25 at 11:49 +0100, Stefano Stabellini wrote: > I would be OK with that, maybe it is worth adding a comment on > libxl__need_xenpv_qemu to document the behavior. 8<------------------------------------- # HG changeset patch # User Ian Campbell # Date 1335351300 -3600 # Node ID 28f86b71782a099c0373fb237e6b08e0788ff69d # Parent 02f0161ae6201ded5415e7f0c92214b4783c8d72 libxl: default to xenconsoled for pv guests, even if qemu is running. Currently we prefer to use qemu for the disk backend if we are starting qemu anyway (e.g. to service a disk). Unfortunately qemu doesn't log the console, which xenconsoled can do via XENCONSOLED_TRACE=guest. Since xenconsoled is also running anyway it seems like there is no particular reason to prefer qemu just because it happens to be running. However we must use qemu if thereis more than one console (xenconsoled only supports a single console). Therefore push the logic to change the console backend down into libxl__need_xenpv_qemu so that it can do the right thing. Signed-off-by: Ian Campbell --- I'm not sure if this is 4.2 material, perhaps too late to be making this sort of change? diff -r 02f0161ae620 -r 28f86b71782a tools/libxl/libxl_create.c --- a/tools/libxl/libxl_create.c Wed Apr 25 11:30:58 2012 +0100 +++ b/tools/libxl/libxl_create.c Wed Apr 25 11:55:00 2012 +0100 @@ -682,9 +682,6 @@ static int do_domain_create(libxl__gc *g d_config->num_vfbs, d_config->vfbs, d_config->num_disks, &d_config->disks[0]); - if (need_qemu) - console.consback = LIBXL__CONSOLE_BACKEND_IOEMU; - libxl__device_console_add(gc, domid, &console, &state); libxl__device_console_dispose(&console); diff -r 02f0161ae620 -r 28f86b71782a tools/libxl/libxl_dm.c --- a/tools/libxl/libxl_dm.c Wed Apr 25 11:30:58 2012 +0100 +++ b/tools/libxl/libxl_dm.c Wed Apr 25 11:55:00 2012 +0100 @@ -1093,7 +1093,13 @@ int libxl__need_xenpv_qemu(libxl__gc *gc { int i, ret = 0; + /* + * qemu is required in order to support 2 or more consoles. So switch all + * backends to qemu if this is the case + */ if (nr_consoles > 1) { + for (i = 0; i < nr_consoles; i++) + consoles[i].consback = LIBXL__CONSOLE_BACKEND_IOEMU; ret = 1; goto out; }