All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Liran Alon <liran.alon@oracle.com>
Cc: Idan Brown <idan.brown@oracle.com>,
	ehabkost@redhat.com, kvm list <kvm@vger.kernel.org>,
	mtosatti@redhat.com, qemu-devel@nongnu.org, rth@twiddle.net,
	Jim Mattson <jmattson@google.com>
Subject: Re: [PATCH 2/2] KVM: i386: Add support for save and restore nested state
Date: Mon, 17 Sep 2018 16:35:34 +0200	[thread overview]
Message-ID: <7fae1fd5-59fc-f452-b2c8-f320f1ce35b4@redhat.com> (raw)
In-Reply-To: <6F9299DE-58CA-4CC9-8779-2FE2C4B7C2CE@oracle.com>

On 15/09/2018 22:48, Liran Alon wrote:
> 
> 
>> On 14 Sep 2018, at 18:08, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> On 14/09/2018 16:31, Liran Alon wrote:
>>>> There is still a problem, however, in that the same input stream would
>>>> be parsed differently depending on the kernel version.  In particular,
>>>> if in the future the maximum nested state size grows, you break all
>>>> existing save files.
>>>
>>> I’m not sure I agree with this.
>>> 1) Newer kernels should change struct only by utilizing unused fields in current struct
>>> or enlarging it with extra fields. It should not change the meaning of existing fields.
>>
>> Newer kernels will return a larger size, which is stored in
>> env->nested_state_len, and the file format depends on it:
>>
>>> +        VMSTATE_VBUFFER_UINT32(env.nested_state, X86CPU, 
>>> +                               0, NULL, 
>>> +                               env.nested_state_len), 
>>
> 
> Oh. I thought that QEMU will just receive to dest buffer only what was sent from source buffer.
> I didn’t know that it also enforces that the sizes of the source and dest buffer are equal.
> (I thought that dest_buffer_size only needed to be >= src_buffer_size).

It's much less smarter than that. :)  If env.nested_state_len is 12345,
it reads 12345 bytes.  There's no attempt at type checking.

> Is there a simple way to do this in QEMU’s VMSTATE framework without implementing custom save/load callbacks?

You can store the source code size and use VMSTATE_VALIDATE to test it
against the KVM capability.


>> I agree that the value is small, but it's there.  For example, the
>> debugging commands support AMD nested paging, and sharing the flags
>> means that it works for KVM too, not just TCG.  So I'd prefer to do it
>> the same way for Intel too.
> 
> Can you explain this example? I’m not sure I follow.
> In the solution I proposed above, the nested_state fixed-size header is also shared between hypervisors.
> Thus, flags here are shared exactly the same as hflags are shared.
> Only the blob union-part is not necessarely shared between hypervisors (Which makes sense as it may differ). 
> Am I missing something trivial?

There is already a "hypervisor" (TCG) that implements AMD nested paging,
so it makes sense to reuse the place that TCG uses for its hflags.

Paolo

  parent reply	other threads:[~2018-09-17 14:35 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-14  9:54 [PATCH 2/2] KVM: i386: Add support for save and restore nested state Liran Alon
2018-09-14  9:54 ` [Qemu-devel] " Liran Alon
2018-09-14 10:59 ` Paolo Bonzini
2018-09-14 10:59   ` [Qemu-devel] " Paolo Bonzini
2018-09-14 14:31   ` Liran Alon
2018-09-14 14:31     ` [Qemu-devel] " Liran Alon
2018-09-14 15:08     ` Paolo Bonzini
2018-09-14 15:08       ` [Qemu-devel] " Paolo Bonzini
2018-09-15 20:48       ` Liran Alon
2018-09-15 20:48         ` [Qemu-devel] " Liran Alon
2018-09-15 20:57         ` Liran Alon
2018-09-15 20:57           ` [Qemu-devel] " Liran Alon
2018-09-17 14:35         ` Paolo Bonzini [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-09-14  0:38 [PATCH 0/2]: " Liran Alon
2018-09-14  0:38 ` [PATCH 2/2] " Liran Alon
2018-09-14  7:16   ` Paolo Bonzini

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=7fae1fd5-59fc-f452-b2c8-f320f1ce35b4@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=idan.brown@oracle.com \
    --cc=jmattson@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=liran.alon@oracle.com \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.