From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Vrabel <dvrabel@cantab.net>,
xen-devel@lists.xenproject.org, Andrew Jones <drjones@redhat.com>,
David Vrabel <david.vrabel@citrix.com>,
Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH v3 0/1] Introduce VCPUOP_reset_vcpu_info
Date: Thu, 21 Aug 2014 12:35:36 +0200 [thread overview]
Message-ID: <87mwayku4n.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <20140820215730.GB6411@laptop.dumpdata.com> (Konrad Rzeszutek Wilk's message of "Wed, 20 Aug 2014 17:57:30 -0400")
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> writes:
> On Wed, Aug 20, 2014 at 09:37:42AM -0400, Konrad Rzeszutek Wilk wrote:
>> On Tue, Aug 19, 2014 at 07:59:52PM +0100, David Vrabel wrote:
>> > On 19/08/14 11:04, Vitaly Kuznetsov wrote:
>> > >The patch and guest code are based on the prototype by Konrad Rzeszutek Wilk.
>> > >
>> > >VCPUOP_reset_vcpu_info is required to support kexec performed by smp pvhvm
>> > >guest. It was tested with the guest code listed below.
>> >
>> > Instead of having the guest teardown all these bits of setup. I think it
>> > would be preferable to have the toolstack build a new domain with the same
>> > memory contents from the original VM. The toolstack would then start this
>> > new domain at the kexec entry point.
>>
>> What about kdump case /crash case? We might crash at anytime and would
>> want to start the kdump kernel which hopefully can reset all of the VCPU
>> information such that it can boot with more than one VCPU.
>>
>> >
>> > The advantage of this is you don't need to add new hypercall sub-ops to
>> > teardown all bits and pieces, both for existing stuff and for anything new
>> > that might be added.
>>
>> Sure, except that having an setup and teardown paths provide a nice
>> symetrical states. Doing an 'kexec_guest' hypercall seems to be just
>> a workaround that and giving up on the symmetry.
>>
>> My feeling is that we really ought to have 'init' and 'teardown'
>> for every hypercall. That would also be good to test the locking, memory
>> leaks, etc.
>
> We had a big discussion today at the Xen Developer to talk about it.
I regret I missed this one :-)
> The one hypercall option has the appeal that it will reset the
> guest to the initial boot state (minues whatever memory got ballooned out).
> The semantics of it are similar to a SCHEDOP_shutdown hypercall, but it would
> be a warm_reset type.
>
> I think that going that route and instead of chasing down different
> states (event channels, grants, vcpu's, pagetables, etc) we would
> wipe everything to a nice clean slate. Maybe the hypercall argument
> should be called tabula_rasa :-)
>
> The reason I like this instead of doing a seperate de-alloc hypercalls are:
> 1) Cool name (tabule_rasa!)
> 2) It would not require complicated code paths to iterate for tearing
> down grants, events, etc.
> 3). It is one simple hypercall that could be used by kdump/kexec with an
> understanding of its semantics: it would continue executing after this
> hypercall, it might change the VCPU to a different one (so executing on
> vCPU5 but now we are at VCPU0), IDT and GDTs are reset to their initial
> states, ditto on callbacks, etc. And of course work on both PVHVM and PV(and PVH).
>
> Thoughts?
I think we don't necessary need new hypercall, new reason code for
SCHEDOP_shutdown should work (cool name can go there :-). The op we want
to implement is very similar to rename-restart, we need to copy ram and
vcpu contexts before destroying old domain.
Recreating domain and copying all memory should work but we'll require
host to have free memory, this can be an issue for large guests. If we
try implementing 'reassigning' of memory without making a copy that can
lead to same issues we have now: mounted grants, shared info,...
I can try this approach but it's really hard for me to predict how long
it's going to take me.. On the other hand resetting vcpu_info *should*
be enough for the majority of use cases so we'll have 'full kexec
support' relatively fast..
--
Vitaly
next prev parent reply other threads:[~2014-08-21 10:35 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-19 10:04 [PATCH v3 0/1] Introduce VCPUOP_reset_vcpu_info Vitaly Kuznetsov
2014-08-19 10:04 ` [PATCH v3 1/1] " Vitaly Kuznetsov
2014-08-19 10:21 ` Andrew Cooper
2014-08-19 23:22 ` Jan Beulich
2014-08-19 18:59 ` [PATCH v3 0/1] " David Vrabel
2014-08-20 8:43 ` Vitaly Kuznetsov
2014-08-20 13:37 ` Konrad Rzeszutek Wilk
2014-08-20 21:57 ` Konrad Rzeszutek Wilk
2014-08-21 10:35 ` Vitaly Kuznetsov [this message]
2014-08-22 2:27 ` Konrad Rzeszutek Wilk
2014-08-22 9:08 ` Jan Beulich
2014-08-22 12:41 ` David Vrabel
2014-08-22 13:23 ` Jan Beulich
2014-08-25 13:50 ` Vitaly Kuznetsov
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=87mwayku4n.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=JBeulich@suse.com \
--cc=david.vrabel@citrix.com \
--cc=drjones@redhat.com \
--cc=dvrabel@cantab.net \
--cc=konrad.wilk@oracle.com \
--cc=xen-devel@lists.xenproject.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).