qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Glauber Costa <glommer@gmail.com>
Cc: Glauber Costa <glommer@redhat.com>, Avi Kivity <avi@redhat.com>,
	qemu-devel@nongnu.org, kvm-devel <kvm@vger.kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH 3/3] Add KVM support to QEMU
Date: Tue, 28 Oct 2008 18:36:26 -0500	[thread overview]
Message-ID: <4907A1FA.2060106@codemonkey.ws> (raw)
In-Reply-To: <5d6222a80810281604g39708040kf710725dce6413dd@mail.gmail.com>

Glauber Costa wrote:
> On Tue, Oct 28, 2008 at 7:51 PM, Anthony Liguori <anthony@codemonkey.ws> wrote:
>   
>>
>> This is part of the reason for this exercise.  I'd rather introduce KVM
>> support first and then look at abstracting things, than vice versa.  A
>> number of the hooks in the current QEMUAccel tree are there for the wrong
>> reason (to support the out-of-tree IO thread, for instance).
>>
>> If you just introduce something with various hooks and say, these are hooks
>> we'll need, it's not possible to really evaluate whether the hooks are
>> needed because nothing in the tree makes use of them.
>>     
>
> We talked extensively on monday about it, and I'm in agreement with it.
>   

Something I was thinking about this morning, and I think the first place 
where we'll definitely need a hook, is how to deal with 
kvm_load_registers().  I think there's overlap between KVM and the IO 
thread here.

There are two reasons (I can think of) that most of the device model 
code can't run in conjunction with TCG.  The first is that TCG may 
modify CPUState in a non-atomic way.  The device model may need to 
access CPUState although there are very few places that it does.  The 
other reason is accessing guest memory.  TCG does not preserve atomicity 
when a guest accesses device memory.  There are probably only a few 
places in the device model (like virtio) that depend on atomicity.

If we implemented an API that implemented a lock/unlock for CPUState and 
for portions of memory, then I think this could be used both as a hook 
for kvm_load_registers and as a way to introduce an IO thread with TCG.

The CPUState lock/unlock is pretty straight forward.  For the memory 
implementation to be efficient, I think you would have to acquire the 
lock when TCG brings a physical address into the TLB (preferrably, at a 
page granularity), or whenever someone tries to access memory (via 
cpu_physical_memory_rw).  I think in the vast majority of the cases, 
there wouldn't be any contention and both could TCG could run along side 
the IO thread.

Another place "hook" is updating a slot's dirty bitmap.  Right now, with 
my patchset we don't have live migration or the VGA RAM optimization.  
There's nothing about the VGA RAM optimization that wouldn't work for 
QEMU.  I'm not sure that it really is an optimization in the context of 
TCG, but I certainly don't think it's any worse.  The only thing you 
really need is to query the KVM dirty bitmap when it comes time to 
enable start over querying the VGA dirty bits.

The same is needed for live migration, so I think what we really need is 
to change the memory dirty bit tracking API to have a concept of refresh 
that we can use to hook for KVM.

FWIW, I included a TODO in my patch if people are interesting in 
tackling any of these things.

Regards,

Anthony Liguori

Regards,

Anthony Liguori

>> Regards,
>>
>> Anthony Liguori
>>
>>     
>>> surprised,
>>>  Gerd
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>>       
>>
>>
>>     
>
>
>
>   

  reply	other threads:[~2008-10-28 23:36 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-28 20:13 [Qemu-devel] [PATCH 1/3] Add additional CPU flag definitions Anthony Liguori
2008-10-28 20:13 ` [Qemu-devel] [PATCH 2/3] Split CPUID from op_helper Anthony Liguori
2008-10-28 20:13   ` [Qemu-devel] [PATCH 3/3] Add KVM support to QEMU Anthony Liguori
2008-10-28 20:49     ` Hollis Blanchard
2008-10-28 21:10       ` Anthony Liguori
2008-10-28 20:57     ` Andreas Färber
2008-10-28 21:04       ` Glauber Costa
2008-10-28 21:16         ` Anthony Liguori
2008-10-28 21:05       ` Anthony Liguori
2008-11-04 13:25         ` Avi Kivity
2008-10-28 21:41     ` [Qemu-devel] " Gerd Hoffmann
2008-10-28 21:51       ` Anthony Liguori
2008-10-28 23:04         ` Glauber Costa
2008-10-28 23:36           ` Anthony Liguori [this message]
2008-10-29  9:54             ` Avi Kivity
2008-10-29 12:35               ` Glauber Costa
2008-10-29 12:39                 ` Avi Kivity
2008-10-29 12:56                   ` Glauber Costa
2008-10-29 13:07               ` Anthony Liguori
2008-10-29 13:23                 ` Avi Kivity
2008-10-29 13:32                   ` Anthony Liguori
2008-10-29 13:51             ` Hollis Blanchard
2008-10-29 14:09               ` Avi Kivity
2008-10-29 14:16                 ` Fabrice Bellard
2008-10-29 14:23                   ` Anthony Liguori
2008-10-29 19:13                 ` Blue Swirl
2008-11-01 16:25                   ` Blue Swirl
2008-10-29 14:58     ` Glauber Costa
2008-10-29 17:41     ` Glauber Costa
2008-10-29 19:01       ` Anthony Liguori
2008-11-04 13:24     ` Avi Kivity
2008-11-04 14:02       ` Anthony Liguori
2008-11-04 14:46         ` Avi Kivity
2008-11-04 14:50           ` Anthony Liguori

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=4907A1FA.2060106@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=glommer@gmail.com \
    --cc=glommer@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).