All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: groug@kaod.org, clg@kaod.org, aik@ozlabs.ru,
	mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com,
	agraf@suse.de, abologna@redhat.com, armbru@redhat.com,
	qemu-devel@nongnu.org, qemu-ppc@nongnu.org, dgilbert@redhat.com,
	sursingh@redhat.com, sbobroff@redhat.com
Subject: Re: [Qemu-devel] [PATCHv4 2/5] migration: Mark CPU states dirty before incoming migration/loadvm
Date: Tue, 30 May 2017 15:03:23 +0200	[thread overview]
Message-ID: <87tw42fqec.fsf@secure.mitica> (raw)
In-Reply-To: <20170526052319.28096-3-david@gibson.dropbear.id.au> (David Gibson's message of "Fri, 26 May 2017 15:23:16 +1000")

David Gibson <david@gibson.dropbear.id.au> wrote:
> As a rule, CPU internal state should never be updated when
> !cpu->kvm_vcpu_dirty (or the HAX equivalent).  If that is done, then
> subsequent calls to cpu_synchronize_state() - usually safe and idempotent -
> will clobber state.
>
> However, we routinely do this during a loadvm or incoming migration.
> Usually this is called shortly after a reset, which will clear all the cpu
> dirty flags with cpu_synchronize_all_post_reset().  Nothing is expected
> to set the dirty flags again before the cpu state is loaded from the
> incoming stream.
>
> This means that it isn't safe to call cpu_synchronize_state() from a
> post_load handler, which is non-obvious and potentially inconvenient.
>
> We could cpu_synchronize_all_state() before the loadvm, but that would be
> overkill since a) we expect the state to already be synchronized from the
> reset and b) we expect to completely rewrite the state with a call to
> cpu_synchronize_all_post_init() at the end of qemu_loadvm_state().
>
> To clear this up, this patch introduces cpu_synchronize_pre_loadvm() and
> associated helpers, which simply marks the cpu state as dirty without
> actually changing anything.  i.e. it says we want to discard any existing
> KVM (or HAX) state and replace it with what we're going to load.
>
> Cc: Juan Quintela <quintela@redhat.com>
> Cc: Dave Gilbert <dgilbert@redhat.com>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

Reviewed-by: Juan Quintela <quintela@redhat.com>

>  
> +static void do_kvm_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_data arg)
> +{
> +    cpu->kvm_vcpu_dirty = true;
> +}
> +
> +void kvm_cpu_synchronize_pre_loadvm(CPUState *cpu)
> +{
> +    run_on_cpu(cpu, do_kvm_cpu_synchronize_pre_loadvm, RUN_ON_CPU_NULL);
> +}

They are exactly the same, does it make sense to only have a copy?

I don't really know, so I do the reviewed-by anyways.

  parent reply	other threads:[~2017-05-30 13:03 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-26  5:23 [Qemu-devel] [PATCHv4 0/5] Clean up compatibility mode handling David Gibson
2017-05-26  5:23 ` [Qemu-devel] [PATCHv4 1/5] qapi: add explicit null to string input and output visitors David Gibson
2017-05-26  5:23 ` [Qemu-devel] [PATCHv4 2/5] migration: Mark CPU states dirty before incoming migration/loadvm David Gibson
2017-05-29 20:46   ` Greg Kurz
2017-05-30  6:15     ` David Gibson
2017-05-30  9:14       ` Dr. David Alan Gilbert
2017-05-30 13:03   ` Juan Quintela [this message]
2017-05-26  5:23 ` [Qemu-devel] [PATCHv4 3/5] pseries: Move CPU compatibility property to machine David Gibson
2017-06-01  5:44   ` [Qemu-devel] [Qemu-ppc] " Suraj Jitindar Singh
2017-06-01  7:13     ` David Gibson
2017-06-01  7:29     ` Greg Kurz
2017-06-01 12:24       ` David Gibson
2017-06-01 15:44         ` Greg Kurz
2017-05-26  5:23 ` [Qemu-devel] [PATCHv4 4/5] pseries: Reset CPU compatibility mode David Gibson
2017-05-26  5:23 ` [Qemu-devel] [PATCHv4 5/5] ppc: Rework CPU compatibility testing across migration David Gibson
2017-06-01  6:23   ` [Qemu-devel] [Qemu-ppc] " Suraj Jitindar Singh
2017-06-01  8:23   ` [Qemu-devel] " Greg Kurz
2017-06-02  2:25     ` David Gibson
2017-05-29 23:14 ` [Qemu-devel] [PATCHv4 0/5] Clean up compatibility mode handling Greg Kurz
2017-05-30  6:18   ` David Gibson
2017-05-30  8:01     ` Greg Kurz
2017-05-31  2:57       ` David Gibson
2017-05-31  8:58         ` Greg Kurz
2017-06-01  6:52           ` David Gibson
2017-06-01 11:59             ` Cédric Le Goater
2017-06-01 13:09               ` Greg Kurz
2017-06-02  2:00                 ` David Gibson
2017-06-02  8:15                   ` Greg Kurz
2017-06-04 11:09                     ` David Gibson
2017-06-02  1:55               ` David Gibson
2017-06-01  6:59 ` no-reply

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=87tw42fqec.fsf@secure.mitica \
    --to=quintela@redhat.com \
    --cc=abologna@redhat.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=armbru@redhat.com \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=dgilbert@redhat.com \
    --cc=groug@kaod.org \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=nikunj@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=sbobroff@redhat.com \
    --cc=sursingh@redhat.com \
    /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.