All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: kvm-devel <kvm@vger.kernel.org>
Subject: Re: Heads up: More user-unaccessible x86 states?
Date: Mon, 05 Oct 2009 14:05:44 +0200	[thread overview]
Message-ID: <4AC9E118.8030304@redhat.com> (raw)
In-Reply-To: <4AC9D608.2000205@siemens.com>

On 10/05/2009 01:18 PM, Jan Kiszka wrote:
> Avi Kivity wrote:
>    
>> On 10/05/2009 09:43 AM, Jan Kiszka wrote:
>>      
>>> Avi Kivity wrote:
>>>
>>>        
>>>> On 10/04/2009 09:07 PM, Jan Kiszka wrote:
>>>>
>>>>          
>>>>>> btw, instead of adding a new ioctl, perhaps it makes sense to define a
>>>>>> new KVM_VCPU_STATE structure that holds all current and future state
>>>>>> (with generous reserved space), instead of separating state over a
>>>>>> dozen
>>>>>> ioctls.
>>>>>>
>>>>>>
>>>>>>
>>>>>>              
>>>>> OK, makes sense. With our without lapic state?
>>>>>
>>>>>            
>>>> I'm in two minds.  I'm leaning towards including lapic but would welcome
>>>> arguments either way.
>>>>
>>>>          
>>> The lapic is optional and, thus, typically handled in different code
>>> modules by user space. QEMU even creates a separate device that holds
>>> the state.
>>>        
>> avx registers, nested vmx are optional as well.
>>
>>      
>>> I'm not sure user space will benefit from a unified query/set
>>> interface with regard to this.
>>>
>>>        
>> The main benefit is to avoid creating an ioctl each time we find a
>> missing bit.
>>
>>      
>>>> Note we have to be careful with timers such as the tsc and lapic timer.
>>>> Maybe have a bitmask at the front specifying which elements are active.
>>>>
>>>>          
>>> ...and the lapic timers are another argument.
>>>
>>> Regarding TSC, which means MSRs: I tend to include only states into the
>>> this meta state which have fixed sizes. Otherwise things will get very
>>> hairy. And the GET/SET_MSRS interface is already fairly flexible, the
>>> question would be again: What can we gain by unifying?
>>>
>>>        
>> For MSRs, not much.
>>
>> Note we can make it work, by storing an offset/length at a fixed
>> location and letting userspace point it into the reserved area.
>>      
> Hmm, pointers... That makes me think of a meta IOCTL like this:
>
> struct kvm_vcpu_state {
> 	int substates;
> 	void __user *substate[0];
> };
>
>    

True pointers are no go since we have to deal with compat code (31/32 
bit userspace calling into a 64 bit kernel).  Offsets into the state 
structure are easier.

> #define KVM_VCPU_STATE_REGS  0 /* i.e. substate[0] points to kvm_regs */
> #define KVM_VCPU_STATE_SREGS 1
> #define KVM_VCPU_STATE_LAPIC 2
> ...
>
> We could easily extend the call with more substates just by defining new
> pointer slots. Moreover, user space could define which substates should
> be get/set by simply passing NULL or a valid pointer for substate[n] (or
> by limiting the substates field).
>
> The only ugliness I see is the missing type safety as we would have to
> deal with void pointers to the substate structures here.
>    

For fixed sized state a feature bitmap is sufficient I think.

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


  reply	other threads:[~2009-10-05 12:06 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4AC86404.3090209@web.de>
     [not found] ` <4AC87299.4040508@redhat.com>
     [not found]   ` <4AC87E08.5070908@web.de>
     [not found]     ` <4AC88BF2.7080200@redhat.com>
2009-10-04 19:07       ` Heads up: More user-unaccessible x86 states? Jan Kiszka
2009-10-05  6:18         ` Avi Kivity
2009-10-05  7:43           ` Jan Kiszka
2009-10-05  8:55             ` Avi Kivity
2009-10-05 11:18               ` Jan Kiszka
2009-10-05 12:05                 ` Avi Kivity [this message]
2009-10-05 12:18                   ` Jan Kiszka
2009-10-05 12:34                     ` Avi Kivity
2009-10-05 12:42                       ` Jan Kiszka
2009-10-05 12:55                         ` Avi Kivity

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=4AC9E118.8030304@redhat.com \
    --to=avi@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kvm@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 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.