qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	qemu-stable@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Subject: [Qemu-devel] [PATCH 43/43] exec: change default exception_index value for migration to -1
Date: Tue, 24 Feb 2015 15:48:18 -0600	[thread overview]
Message-ID: <1424814498-6993-44-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1424814498-6993-1-git-send-email-mdroth@linux.vnet.ibm.com>

From: Paolo Bonzini <pbonzini@redhat.com>

In QEMU 2.2 the exception_index value was added to the migration stream
through a subsection.  The default was set to 0, which is wrong and
should have been -1.

However, 2.2 does not have commit e511b4d (cpu-exec: reset exception_index
correctly, 2014-11-26), hence in 2.2 the exception_index is never used
and is set to -1 on the next call to cpu_exec.  So we can change the
migration stream to make the default -1.  The effects are:

- 2.2.1 -> 2.2.0: cpu->exception_index set incorrectly to 0 if it
were -1 on the source; then reset to -1 in cpu_exec.  This is TCG
only; KVM does not use exception_index.

- 2.2.0 -> 2.2.1: cpu->exception_index set incorrectly to -1 if it
were 0 on the source; but it would be reset to -1 in cpu_exec anyway.
This is TCG only; KVM does not use exception_index.

- 2.2.1 -> 2.1: two bugs fixed: 1) can migrate backwards if
cpu->exception_index is set to -1; 2) should not migrate backwards
(but 2.2.0 allows it) if cpu->exception_index is set to 0

- 2.2.0 -> 2.3.0: 2.2.0 will send the subsection unnecessarily if
exception_index is -1, but that is not a problem.  2.3.0 will set
cpu->exception_index to -1 if it is 0 on the source, but this would
be anyway a problem for 2.2.0 -> 2.2.x migration (due to lack of
commit e511b4d in 2.2.x) so we can ignore it

- 2.2.1 -> 2.3.0: everything works.

In addition, play it safe and never send the subsection unless TCG
is in use.  KVM does not use exception_index (PPC KVM stores values
in it for use in the subsequent call to ppc_cpu_do_interrupt, but
does not need it as soon as kvm_handle_debug returns).  Xen and
qtest do not run any code for the CPU at all.

Reported-by: Igor Mammedov <imammedo@redhat.com>
Tested-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Tested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1418989994-17244-3-git-send-email-pbonzini@redhat.com
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit adee64249ee37e822d578e65a765750e7f2081f6)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 exec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/exec.c b/exec.c
index 71ac104..46fe70e 100644
--- a/exec.c
+++ b/exec.c
@@ -434,7 +434,7 @@ static int cpu_common_pre_load(void *opaque)
 {
     CPUState *cpu = opaque;
 
-    cpu->exception_index = 0;
+    cpu->exception_index = -1;
 
     return 0;
 }
@@ -443,7 +443,7 @@ static bool cpu_common_exception_index_needed(void *opaque)
 {
     CPUState *cpu = opaque;
 
-    return cpu->exception_index != 0;
+    return tcg_enabled() && cpu->exception_index != -1;
 }
 
 static const VMStateDescription vmstate_cpu_common_exception_index = {
-- 
1.9.1

  parent reply	other threads:[~2015-02-24 21:56 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-24 21:47 [Qemu-devel] Patch Round-up for stable 2.2.1, freeze on 2015-03-05 Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 01/43] block: Make essential BlockDriver objects public Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 02/43] block: Omit bdrv_find_format for essential drivers Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 03/43] block/vvfat: qcow driver may not be found Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 04/43] block/nfs: Add create_opts Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 05/43] block: Check create_opts before image creation Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 06/43] qemu-img: " Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 07/43] qemu-img: Check create_opts before image amendment Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 08/43] iotests: Only kill NBD server if it runs Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 09/43] iotests: Add test for unsupported image creation Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 10/43] qcow2: Prevent numerical overflow Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 11/43] qcow2: Flushing the caches in qcow2_close may fail Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 12/43] qcow2: Respect bdrv_truncate() error Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 13/43] block/raw-posix: Fix ret in raw_open_common() Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 14/43] block migration: fix return value Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 15/43] qcow2: Fix header extension size check Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 16/43] qcow2.py: Add required padding for header extensions Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 17/43] block: Don't probe for unknown backing file format Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 18/43] linuxboot: fix loading old kernels Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 19/43] audio: Don't free hw resources until after hw backend is stopped Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 20/43] target-xtensa: fix translation for opcodes crossing page boundary Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 21/43] target-xtensa: test cross-page opcode Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 22/43] migration/block: fix pending() return value Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 23/43] atomic: fix position of volatile qualifier Michael Roth
2015-02-24 21:47 ` [Qemu-devel] [PATCH 24/43] PPC: Fix crash on spapr_tce_table_finalize() Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 25/43] vl.c: fix regression when reading machine type from config file Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 26/43] serial: reset thri_pending on IER writes with THRI=0 Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 27/43] serial: refine serial_thr_ipending_needed Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 28/43] pckbd: set bits 2-3-6-7 of the output port by default Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 29/43] linux-user: Fix broken m68k signal handling on 64 bit hosts Michael Roth
2015-02-25  8:39   ` Laurent Vivier
2015-02-25 11:28     ` Peter Maydell
2015-02-25 11:58       ` Laurent Vivier
2015-02-25 12:14         ` Peter Maydell
2015-02-24 21:48 ` [Qemu-devel] [PATCH 30/43] scsi: fix cancellation when I/O was completed but DMA was not Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 31/43] target-i386: fix movntsd on big-endian hosts Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 32/43] vt82c686: avoid out-of-bounds read Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 33/43] virtio: fix feature bit checks Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 34/43] sb16: fix interrupt acknowledgement Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 35/43] hw/input/hid.c Fix capslock hid code Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 36/43] target-arm/translate-a64: Fix wrong mmu_idx usage for LDT/STT Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 37/43] vfio-pci: Fix missing unparent of dynamically allocated MemoryRegion Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 38/43] qemu-thread: fix qemu_event without futexes Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 39/43] libcacard: stop linking against every single 3rd party library Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 40/43] fix mc146818rtc wrong subsection name to avoid vmstate_subsection_load() fail Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 41/43] block/iscsi: fix uninitialized variable Michael Roth
2015-02-24 21:48 ` [Qemu-devel] [PATCH 42/43] qtest: Fix deadloop by running main loop AIO context's timers Michael Roth
2015-02-24 21:48 ` Michael Roth [this message]
2015-02-25  2:51 ` [Qemu-devel] [Qemu-stable] Patch Round-up for stable 2.2.1, freeze on 2015-03-05 Gonglei (Arei)
2015-02-25  9:33 ` [Qemu-devel] " Leon Alrae

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=1424814498-6993-44-git-send-email-mdroth@linux.vnet.ibm.com \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.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).