From: Juergen Gross <jgross@suse.com>
To: George Dunlap <George.Dunlap@eu.citrix.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Wei Liu <wei.liu2@citrix.com>, Chunyan Liu <cyliu@suse.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 1/3] libxl: make libxl__need_xenpv_qemu() operate on domain config
Date: Fri, 18 Mar 2016 09:23:08 +0100 [thread overview]
Message-ID: <56EBBAEC.2020407@suse.com> (raw)
In-Reply-To: <CAFLBxZbua-BUcqjbhPcCjQRMqoAaJUGwM-9XOOZmAzV7h-sUxA@mail.gmail.com>
On 17/03/16 17:53, George Dunlap wrote:
> On Thu, Mar 10, 2016 at 3:00 PM, Juergen Gross <jgross@suse.com> wrote:
>> libxl__need_xenpv_qemu() is called with configuration data for console,
>> vfbs, disks and channels today in order to evaluate the need for
>> starting a device model for a pv domain.
>>
>> The console data is local to the caller and setup in a way to never
>> require a device model. All other data is taken from the domain config
>> structure.
>>
>> In order to support other device backends via qemu change the interface
>> of libxl__need_xenpv_qemu() to take the domain config structure as
>> input instead of the single device arrays.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> tools/libxl/libxl_create.c | 9 +------
>> tools/libxl/libxl_dm.c | 59 ++++++++++++--------------------------------
>> tools/libxl/libxl_internal.h | 5 +---
>> 3 files changed, 18 insertions(+), 55 deletions(-)
>>
>> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
>> index 61b5c01..0e2b0a0 100644
>> --- a/tools/libxl/libxl_create.c
>> +++ b/tools/libxl/libxl_create.c
>> @@ -1304,7 +1304,6 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
>> }
>> case LIBXL_DOMAIN_TYPE_PV:
>> {
>> - int need_qemu = 0;
>> libxl__device_console console;
>> libxl__device device;
>>
>> @@ -1314,17 +1313,11 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
>> }
>>
>> init_console_info(gc, &console, 0);
>> -
>> - need_qemu = libxl__need_xenpv_qemu(gc, 1, &console,
>> - d_config->num_vfbs, d_config->vfbs,
>> - d_config->num_disks, &d_config->disks[0],
>> - d_config->num_channels, &d_config->channels[0]);
>> -
>> console.backend_domid = state->console_domid;
>> libxl__device_console_add(gc, domid, &console, state, &device);
>> libxl__device_console_dispose(&console);
>>
>> - if (need_qemu) {
>> + if (libxl__need_xenpv_qemu(gc, d_config)) {
>> dcs->dmss.dm.guest_domid = domid;
>> libxl__spawn_local_dm(egc, &dcs->dmss.dm);
>> return;
>> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
>> index 4aca38e..4b840f4 100644
>> --- a/tools/libxl/libxl_dm.c
>> +++ b/tools/libxl/libxl_dm.c
>> @@ -2107,61 +2107,34 @@ int libxl__destroy_device_model(libxl__gc *gc, uint32_t domid)
>> GCSPRINTF("/local/domain/%d/image/device-model-pid", domid));
>> }
>>
>> -int libxl__need_xenpv_qemu(libxl__gc *gc,
>> - int nr_consoles, libxl__device_console *consoles,
>> - int nr_vfbs, libxl_device_vfb *vfbs,
>> - int nr_disks, libxl_device_disk *disks,
>> - int nr_channels, libxl_device_channel *channels)
>> +int libxl__need_xenpv_qemu(libxl__gc *gc, libxl_domain_config *d_config)
>> {
>> - int i, ret = 0;
>> + int i, ret;
>> uint32_t domid;
>>
>> - /*
>> - * 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 = libxl__get_domid(gc, &domid);
>> + if (ret) goto out;
>
> Doesn't this mean that if libxl__get_domid() fails,
> libxl__need_xenpv_qemu() will effectively return "true"?
>
> I realize this is a bug in the existing code but there's no need to be
> bug-for-bug compatible here. :-)
>
> Maybe add an 'rc' variable, and make this:
>
> rc = libxl__get_domid();
> if(rc) goto out;
Okay, will do (next week).
>
> Other than that, looks good to me.
Thanks,
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-18 8:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-10 15:00 [PATCH 0/3] libxl: add support for qemu base pvusb backend Juergen Gross
2016-03-10 15:00 ` [PATCH 1/3] libxl: make libxl__need_xenpv_qemu() operate on domain config Juergen Gross
2016-03-17 16:53 ` George Dunlap
2016-03-18 8:23 ` Juergen Gross [this message]
2016-03-10 15:00 ` [PATCH 2/3] libxl: add domain config parameter to force start of qemu Juergen Gross
2016-03-17 16:06 ` George Dunlap
2016-03-18 8:11 ` Juergen Gross
2016-03-21 14:28 ` George Dunlap
2016-03-21 14:44 ` Juergen Gross
2016-03-10 15:00 ` [PATCH 3/3] libxl: add new pvusb backend "qusb" provided by qemu Juergen Gross
2016-03-17 16:39 ` George Dunlap
2016-03-18 8:22 ` Juergen Gross
2016-03-17 16:55 ` George Dunlap
2016-03-18 8:24 ` Juergen Gross
2016-03-24 20:07 ` Wei Liu
2016-03-25 6:09 ` Juergen Gross
2016-03-29 9:45 ` George Dunlap
2016-03-29 10:35 ` Juergen Gross
2016-03-30 4:43 ` Juergen Gross
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56EBBAEC.2020407@suse.com \
--to=jgross@suse.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=cyliu@suse.com \
--cc=ian.jackson@eu.citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.