All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: pkrempa@redhat.com, lersek@redhat.com, marcel.a@redhat.com,
	libvir-list@redhat.com, Hu Tao <hutao@cn.fujitsu.com>,
	qemu-devel@nongnu.org, armbru@redhat.com, rhod@redhat.com,
	kraxel@redhat.com, anthony@codemonkey.ws, lcapitulino@redhat.com,
	afaerber@suse.de
Subject: Re: [Qemu-devel] pvpanic plans?
Date: Thu, 31 Oct 2013 18:14:04 +0200	[thread overview]
Message-ID: <20131031161404.GA10710@redhat.com> (raw)
In-Reply-To: <52727D97.3070209@redhat.com>

On Thu, Oct 31, 2013 at 04:56:07PM +0100, Paolo Bonzini wrote:
> Il 31/10/2013 16:45, Michael S. Tsirkin ha scritto:
> > On Thu, Oct 31, 2013 at 04:26:13PM +0100, Paolo Bonzini wrote:
> >> Il 31/10/2013 16:09, Michael S. Tsirkin ha scritto:
> >>> On Thu, Oct 31, 2013 at 03:56:42PM +0100, Paolo Bonzini wrote:
> >>>> Il 31/10/2013 15:52, Michael S. Tsirkin ha scritto:
> >>>>>>> Yes, it does.
> >>>>> What does it break exactly?
> >>>>
> >>>> The point of a panicked event is to examine the guest at a particular
> >>>> moment in time (e.g. host-initiated crash dump).  If you let the guest
> >>>> run, it may reboot and prevent you from getting a meaningful dump.
> >>>
> >>> Well we trust guest anyway, so I think we can trust it to call halt.
> >>
> >> No, we cannot.  Reboot-in-guest-after-dump-on-host is a perfectly fine
> >> configuration.
> >>
> >>>>>>> But I think that, once we make the pvpanic device is
> >>>>>>> optional, to a large extent there is no bug.  Adding the pvpanic
> >>>>>>> device to the VM will make libvirt obey <oncrash> instead of the
> >>>>>>> in-guest setting, and that's it.
> >>>>>>>
> >>>>>>> Two months have passed and no casualties have been reported due to
> >>>>>>> pvpanic.  Let's just remove the auto-pvpanic from all machine types in
> >>>>>>> 1.7 (yes, that's backwards incompatible in a strict sense), document
> >>>>>>> it in the release notes, and hope that the old QEMU versions with
> >>>>>>> mandatory pvpanic die of old age.
> >>>>>
> >>>>> Nod. I'm fine with that.
> >>>>>
> >>>>> I think we still need to do get rid of the PANICKED state somehow.
> >>>>> If we can't replace it with RUNNING state, let's replace it with PAUSED.
> >>>>>
> >>>>> For example, you can't continue from panicked for some reason.
> >>>>> You can't do a reset.  But you can pause and then continue.
> >>>>
> >>>> We need to keep the PANICKED state, but we can make it a normal
> >>>> "resumable" state.
> >>>
> >>> If it's resumable how is it different from PAUSED?
> >>
> >> If the guest panics while for some reason libvirtd went down, libvirt
> >> can see what happened.  It is similar to the "I/O error" state in this
> >> respect.
> >>
> >>> Looks like all transitions from paused state should be allowed from panicked
> >>> state. So why keep it separate?
> >>
> >> Because you can poll for the state instead of watching an event.
> > 
> > I see. Maybe it was a mistake to use a separate runtime state for
> > this, but oh well.
> 
> Yes, we should have had a list of "reasons" why a guest is stopped (I/O
> error, panic, gdb, ...) and a command to clear one or more of them;
> there can be paused/running/waiting-for-migration/... states, but many
> of the states we have are not necessarily in mutual exclusion.
> 
> But we cannot really choose now.
> 
> > So it should be exactly like paused, we can just find all transitions
> > from PAUSED and it should be same for PANICKED?
> > Why isn't DEBUG allowed from PAUSED but allowed from PANICKED then?
> > Maybe it should be allowed for PAUSED?
> 
> PANICKED->DEBUG was added by commit bc7d0e667.  That commit can be
> reverted if the panicked state is removed from runstate_needs_reset.
> 
> Paolo

Okay so let's drop the code duplication and explicitly make
them the same?

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>


diff --git a/vl.c b/vl.c
index 46c29c4..e12d317 100644
--- a/vl.c
+++ b/vl.c
@@ -638,10 +638,6 @@ static const RunStateTransition runstate_transitions_def[] = {
     { RUN_STATE_WATCHDOG, RUN_STATE_RUNNING },
     { RUN_STATE_WATCHDOG, RUN_STATE_FINISH_MIGRATE },
 
-    { RUN_STATE_GUEST_PANICKED, RUN_STATE_PAUSED },
-    { RUN_STATE_GUEST_PANICKED, RUN_STATE_FINISH_MIGRATE },
-    { RUN_STATE_GUEST_PANICKED, RUN_STATE_DEBUG },
-
     { RUN_STATE_MAX, RUN_STATE_MAX },
 };
 
@@ -660,6 +656,12 @@ static void runstate_init(void)
 
     for (p = &runstate_transitions_def[0]; p->from != RUN_STATE_MAX; p++) {
         runstate_valid_transitions[p->from][p->to] = true;
+        /* Panicked state is same as paused, we only made it different so
+         * management can detect a panic.
+         */
+        if (p->from == RUN_STATE_PAUSED) {
+            runstate_valid_transitions[RUN_STATE_GUEST_PANICKED][p->to] = true;
+        }
     }
 }
 
@@ -686,8 +688,7 @@ int runstate_is_running(void)
 bool runstate_needs_reset(void)
 {
     return runstate_check(RUN_STATE_INTERNAL_ERROR) ||
-        runstate_check(RUN_STATE_SHUTDOWN) ||
-        runstate_check(RUN_STATE_GUEST_PANICKED);
+        runstate_check(RUN_STATE_SHUTDOWN);
 }
 
 StatusInfo *qmp_query_status(Error **errp)

  reply	other threads:[~2013-10-31 16:11 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-22 16:10 [Qemu-devel] pvpanic plans? Paolo Bonzini
2013-08-22 16:44 ` Anthony Liguori
2013-08-22 17:53   ` Laszlo Ersek
2013-08-22 18:25     ` Anthony Liguori
2013-08-27  8:42       ` Richard W.M. Jones
2013-08-22 19:16     ` Paolo Bonzini
2013-08-22 20:09       ` Anthony Liguori
2013-08-22 20:36         ` Laszlo Ersek
2013-08-22 20:39           ` Anthony Liguori
2013-08-23  8:52             ` Paolo Bonzini
2013-08-22 21:08         ` Peter Maydell
2013-08-27  8:06         ` Richard W.M. Jones
2013-08-27 13:08           ` Ronen Hod
2013-08-27 13:20             ` Richard W.M. Jones
2013-08-27 13:26               ` Anthony Liguori
2013-08-27 13:57                 ` Richard W.M. Jones
2013-08-27 13:13       ` [Qemu-devel] [libvirt] " Daniel P. Berrange
2013-08-27 13:17         ` Anthony Liguori
2013-08-27 13:21         ` Richard W.M. Jones
2013-08-22 17:15 ` [Qemu-devel] " Laszlo Ersek
2013-08-22 18:33   ` Anthony Liguori
2013-08-22 19:44     ` Christian Borntraeger
2013-08-22 19:19   ` Paolo Bonzini
2013-08-22 19:41     ` Laszlo Ersek
2013-08-22 20:02       ` [Qemu-devel] [libvirt] " Eric Blake
2013-10-24  2:39 ` [Qemu-devel] " Hu Tao
2013-10-29 16:01   ` Markus Armbruster
2013-10-31 14:30   ` Michael S. Tsirkin
2013-10-31 14:32     ` Eric Blake
2013-10-31 14:34       ` Anthony Liguori
2013-10-31 14:39       ` Paolo Bonzini
2013-10-31 14:52         ` Michael S. Tsirkin
2013-10-31 14:56           ` Paolo Bonzini
2013-10-31 15:09             ` Michael S. Tsirkin
2013-10-31 15:26               ` Paolo Bonzini
2013-10-31 15:45                 ` Michael S. Tsirkin
2013-10-31 15:56                   ` Paolo Bonzini
2013-10-31 16:14                     ` Michael S. Tsirkin [this message]
2013-10-31 16:17                       ` Paolo Bonzini
2013-10-31 16:26                         ` Michael S. Tsirkin
2013-10-31 16:38                           ` Paolo Bonzini
2013-10-31 16:48                             ` Michael S. Tsirkin
2013-10-31 16:52                               ` Paolo Bonzini
2013-10-31 17:00                                 ` Michael S. Tsirkin
2013-10-31 17:09                                   ` Paolo Bonzini
2013-10-31 17:01                             ` Michael S. Tsirkin
2013-10-31 17:10                               ` Paolo Bonzini
2013-10-31 17:18                                 ` Michael S. Tsirkin
2013-10-31 18:03                                   ` Paolo Bonzini
2013-10-31 16:28                         ` Michael S. Tsirkin
2013-10-31 14:47       ` Michael S. Tsirkin
2013-10-31 14:49         ` Eric Blake
2013-10-31 15:07           ` Michael S. Tsirkin
2013-11-04  9:25     ` Christian Borntraeger

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=20131031161404.GA10710@redhat.com \
    --to=mst@redhat.com \
    --cc=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=hutao@cn.fujitsu.com \
    --cc=kraxel@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=lersek@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=marcel.a@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rhod@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.