kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Glauber Costa <glommer@redhat.com>
Cc: Avi Kivity <avi@redhat.com>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	aliguori@us.ibm.com
Subject: Re: [PATCH 01/16] KVM-HDR: register KVM basic header infrastructure
Date: Wed, 26 Jan 2011 11:22:27 -0600	[thread overview]
Message-ID: <4D405853.6010003@codemonkey.ws> (raw)
In-Reply-To: <1296056170.3591.14.camel@mothafucka.localdomain>

On 01/26/2011 09:36 AM, Glauber Costa wrote:
> On Wed, 2011-01-26 at 17:12 +0200, Avi Kivity wrote:
>    
>> On 01/26/2011 02:13 PM, Glauber Costa wrote:
>>      
>>>>   - it doesn't lend itself will to live migration.  Extra state must be
>>>>   maintained in the hypervisor.
>>>>          
>>> Yes, but can be queried at any time as well. I don't do it in this
>>> patch, but this is explicitly mentioned in my TODO.
>>>        
>> Using the existing method (MSRs) takes care of this, which reduces churn.
>>      
> No, it doesn't.
>
> First, we have to explicitly list some msrs for save/restore in
> userspace anyway. But also, the MSRs only holds values. For the case I'm
> trying to hit here, being: msrs being used to register something, like
> kvmclock, there is usually accompanying code as well.
>
>
>    
>>>>   - it isn't how normal hardware operates
>>>>          
>>> Since we're trying to go for guest cooperation here, I don't really see
>>> a need to stay close to hardware here.
>>>        
>> For Linux there is not much difference, since we can easily adapt it.
>> But we don't know the impact on other guests, and we can't refactor
>> them.  Staying close to precedent means it will be easier for other
>> guests to work with a kvm host, if they choose.
>>      
> I honestly don't see the difference. I am not proposing anything
> terribly different, in the end, for the sake of this specific point of
> guest supportability it's all 1 msr+cpuid vs n msr+cpuid.
>    

If type becomes implied based on the MSR number, you'd get the best of 
both worlds, no?

I do think advertising features in CPUID is nicer than writing to an MSR 
and then checking for an ack in the memory region.

>>> * This mechanism just bumps us out to userspace if we can't handle a
>>> request. As such, it allows for pure guest kernel ->   userspace
>>> communication, that can be used, for instance, to emulate new features
>>> in older hypervisors one does not want to change. BTW, maybe there is
>>> value in exiting to userspace even if we stick to the
>>> one-msr-per-feature approach?
>>>        
>> Yes.
>>
>> I'm not 100% happy with emulating MSRs in userspace, but we can think
>> about a mechanism that allows userspace to designate certain MSRs as
>> handled by userspace.
>>
>> Before we do that I'd like to see what fraction of MSRs can be usefully
>> emulated in userspace (beyond those that just store a value and ignore it).
>>      
> None of the existing. But for instance, I was discussing this issue with
> anthony a while ago, and he thinks that in order to completely avoid
> bogus softlockups, qemu/userspace, which is the entity here that knows
> when it has stopped (think ctrl+Z or stop + cont, save/restore, etc),
> could notify this to the guest kernel directly through a shared variable
> like this.
>
> See, this is not about "new features", but rather, about between pieces
> of memory. So what I'm doing in the end is just generalizing "an MSR for
> shared memory", instead of one new MSR for each piece of data.
>    

I do think having a standard mechanism for small regions of shared 
memory between the hypervisor and guest is a reasonable thing to do.

Regards,

Anthony Liguori

> Maybe I was unfortunate to mention async_pf in the description to begin
> with.
>
> --
> 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:[~2011-01-26 17:22 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-24 18:06 [PATCH 00/16] New Proposal for steal time in KVM Glauber Costa
2011-01-24 18:06 ` [PATCH 01/16] KVM-HDR: register KVM basic header infrastructure Glauber Costa
2011-01-26 11:06   ` Avi Kivity
2011-01-26 12:13     ` Glauber Costa
2011-01-26 15:12       ` Avi Kivity
2011-01-26 15:36         ` Glauber Costa
2011-01-26 17:22           ` Anthony Liguori [this message]
2011-01-26 17:49             ` Glauber Costa
2011-01-27 12:31               ` Avi Kivity
2011-01-24 18:06 ` [PATCH 02/16] KVM-HV: KVM - KVM Virtual Memory hypervisor implementation Glauber Costa
2011-01-24 18:06 ` [PATCH 03/16] KVM-HDR: KVM Userspace registering ioctl Glauber Costa
2011-01-26 11:12   ` Avi Kivity
2011-01-26 12:14     ` Glauber Costa
2011-01-26 15:14       ` Avi Kivity
2011-01-26 15:23         ` Glauber Costa
2011-01-24 18:06 ` [PATCH 04/16] KVM-HV: " Glauber Costa
2011-01-24 18:06 ` [PATCH 05/16] KVM-HDR: Implement wallclock over KVM - KVM Virtual Memory Glauber Costa
2011-01-26 11:13   ` Avi Kivity
2011-01-26 12:20     ` Glauber Costa
2011-01-26 15:17       ` Avi Kivity
2011-01-26 15:45         ` Glauber Costa
2011-01-27 12:17           ` Avi Kivity
2011-01-24 18:06 ` [PATCH 06/16] " Glauber Costa
2011-01-24 18:06 ` [PATCH 07/16] KVM-GST: " Glauber Costa
2011-01-24 18:06 ` [PATCH 08/16] KVM-HDR: Implement kvmclock systemtime " Glauber Costa
2011-01-24 18:06 ` [PATCH 09/16] KVM-HV: " Glauber Costa
2011-01-24 18:06 ` [PATCH 10/16] KVM-GST: " Glauber Costa
2011-01-24 18:06 ` [PATCH 11/16] KVM-HDR: KVM Steal time implementation Glauber Costa
2011-01-24 23:06   ` Rik van Riel
2011-01-24 18:06 ` [PATCH 12/16] KVM-HV: " Glauber Costa
2011-01-24 23:15   ` Rik van Riel
2011-01-24 18:06 ` [PATCH 13/16] KVM-HV: KVM Steal time calculation Glauber Costa
2011-01-24 23:20   ` Rik van Riel
2011-01-24 18:06 ` [PATCH 14/16] KVM-GST: KVM Steal time registration Glauber Costa
2011-01-24 23:27   ` Rik van Riel
2011-01-24 23:31   ` Rik van Riel
2011-01-25  1:25     ` Glauber Costa
2011-01-25  1:26       ` Rik van Riel
2011-01-25  1:28         ` Glauber Costa
2011-01-24 18:06 ` [PATCH 15/16] KVM-GST: KVM Steal time accounting Glauber Costa
2011-01-24 23:33   ` Rik van Riel
2011-01-24 18:06 ` [PATCH 16/16] KVM-GST: adjust scheduler cpu power Glauber Costa
2011-01-24 18:32   ` Peter Zijlstra
2011-01-24 18:51     ` Glauber Costa
2011-01-24 19:51       ` Peter Zijlstra
2011-01-24 19:57         ` Glauber Costa
2011-01-25 20:02         ` Glauber Costa
2011-01-25 20:13           ` Peter Zijlstra
2011-01-25 20:47             ` Glauber Costa
2011-01-25 21:07               ` Peter Zijlstra
2011-01-25 21:27                 ` Glauber Costa
2011-01-26  9:57                   ` Peter Zijlstra
2011-01-26 15:43                     ` Glauber Costa
2011-01-26 16:46                       ` Peter Zijlstra
2011-01-26 16:53                         ` Peter Zijlstra
2011-01-26 18:11                         ` Glauber Costa
2011-01-24 19:53       ` Peter Zijlstra

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=4D405853.6010003@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=glommer@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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).