All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: qemu-devel@nongnu.org, quintela@redhat.com
Subject: Re: [Qemu-devel] Re: [PATCH] Split machine creation from the main loop
Date: Sun, 27 Feb 2011 13:33:13 +0200	[thread overview]
Message-ID: <4D6A3679.1010009@redhat.com> (raw)
In-Reply-To: <4D669476.2030601@codemonkey.ws>

On 02/24/2011 07:25 PM, Anthony Liguori wrote:
>> Is it really necessary?  What's blocking us from initializing 
>> chardevs early?
>
>
> Well....
>
> We initialize all chardevs at once right now and what set of chardevs 
> there are depends on the machine (by the way defaults are applied).  
> You could initialize chardevs in two stages although that requires 
> quite a bit of additional complexity.

We could initialize chardevs on demand - that should resolve any 
dependencies?

>
>>
>> It would be a pity to divorce the monitor from chardevs, they're 
>> really flexible.
>
> Couple considerations:
>
> 1) chardevs don't support multiple simultaneous connections.  I view 
> this as a blocker for QMP.

What do you mean by that?   Something like ,server which keeps on 
listening after it a connection is established?

>
> 2) Because chardevs don't support multiple connections, we can't 
> reasonably hook on things like connect/disconnect which means that 
> fd's sent via SCM_RIGHTs have to be handled in a very special way.  By 
> going outside of the chardev layer, we can let fd's via SCM_RIGHTS 
> queue up naturally and have getfd/setfd refer to the fd at the top of 
> the queue.  It makes it quite a bit easier to work with (I believe 
> Daniel had actually requested this a while ago).

I really don't follow... what's the connection between SCM_RIGHTS and 
multiple connections?

> 3) By treating QMP as a special case, we don't have to treat chardevs 
> overall as a special case.  This feels more right to me although I 
> can't say I have a strong opinion formed yet.
>
>>
>>> 2) Make qemu_machine_init() take no parameters and just reference 
>>> global state.
>>>
>>> 3) Teach all QMP functions to behave themselves if called before 
>>> qemu_machine_init()
>>>
>>> 4) Introduce QMP function to call qemu_machine_init()
>>
>> An alternative is to remove all guest-visible content from 
>> qemu_machine_init().  So machine->init() would take no parameters and 
>> only build the static devices (power supply?).  Everything else would 
>> be hot-plugged (perhaps some would fail if the machine was started - 
>> cold-plug only).
>
> All that qemu_machine_init() is is guest-visible content.  That's the 
> point of refactoring this.

Sorry, poorly phrased.  Configurable guest visible content.

>>>
>>> (6) can be started right now.  (1) comes with the QAPI merge.  (2) 
>>> is pretty easy to do after applying this patch.  (3) is probably 
>>> something that can be done shortly after (1).  (4) and (5) really 
>>> require everything but (6) to be in place before we can meaningful 
>>> do it.
>>>
>>> I think we can lay out much of the ground work for this in 0.15 and 
>>> I think we can have a total conversion realistically for 0.16.  That 
>>> means that by EOY, we could invoke QEMU with no options and do 
>>> everything through QMP.
>>
>> It's something that I've agitated for a long while, but when I see 
>> all the work needed, I'm not sure it's cost effective.
>
> There's a lot of secondary benefits that come from doing this.  QMP 
> becomes a much stronger interface.  A lot of operations that right now 
> are only specifiable by the command line become dynamic which 
> mitigates reboots in the long term. 

Only the hot-pluggable ones.

> It also lays the ground work for a fully decoupled device model 
> whereas the only interface between the devices and the outside world 
> is a subset of QMP (think seccomp()).
>
> Whether creating a machine with no command line options is high value 
> is probably irrelevant.  I think we want to go in this direction 
> regardless.

I agree it's a good thing.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2011-02-27 11:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-23 21:38 [Qemu-devel] [PATCH] Split machine creation from the main loop Anthony Liguori
2011-02-23 23:00 ` [Qemu-devel] " Juan Quintela
2011-02-23 23:12   ` Anthony Liguori
2011-02-23 23:38     ` Juan Quintela
2011-02-24  0:36       ` Anthony Liguori
2011-02-24 10:19         ` Stefan Hajnoczi
2011-02-24 14:47           ` Anthony Liguori
2011-02-24 16:01     ` Avi Kivity
2011-02-24 17:25       ` Anthony Liguori
2011-02-27 11:33         ` Avi Kivity [this message]
2011-02-28  4:01           ` Anthony Liguori
2011-02-28  8:20             ` Avi Kivity
2011-02-28  8:57               ` Paolo Bonzini
2011-02-28  9:13                 ` Avi Kivity
2011-02-28 10:08                   ` Paolo Bonzini
2011-02-28 12:08                   ` Anthony Liguori
2011-02-25 17:02 ` [Qemu-devel] " Blue Swirl

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=4D6A3679.1010009@redhat.com \
    --to=avi@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /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.