From patchwork Thu Jun 12 10:36:35 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sanidhya Kashyap X-Patchwork-Id: 359075 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 519AD1400AB for ; Thu, 12 Jun 2014 20:39:16 +1000 (EST) Received: from localhost ([::1]:53056 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wv2PZ-0002iI-RA for incoming@patchwork.ozlabs.org; Thu, 12 Jun 2014 06:39:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53004) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wv2Or-0001PO-BP for qemu-devel@nongnu.org; Thu, 12 Jun 2014 06:38:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wv2Of-00074r-J8 for qemu-devel@nongnu.org; Thu, 12 Jun 2014 06:38:29 -0400 Received: from mail-pb0-x230.google.com ([2607:f8b0:400e:c01::230]:50080) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wv2Of-00074X-7h for qemu-devel@nongnu.org; Thu, 12 Jun 2014 06:38:17 -0400 Received: by mail-pb0-f48.google.com with SMTP id rr13so868675pbb.7 for ; Thu, 12 Jun 2014 03:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rhkH89RbptvsRVc/p0Xqjy4MwM6sJi2nY9KUDdmKzEk=; b=DjgNBRs1A91D/zXLW2Qk3ajgiw3Ff7Ui9uUEZL+S1onFYk1rppCZIAHYCkRp6AzdNs BsqyzFY2obTR0u/K5gZY9TqSYJvJAHVu21Nlu78uhgv/dCgL1zyVmUn8+IkG4W65BCl3 mKNESIwpe5vQfQq8bsTRIQKeJqT2wyN4kfljGIfkxxLePG+QCbVbBrH4vkBBrdtpAI5U UV2t6nWd8MnvbVeXDFj0XWe+bgMbDwTlPTqDwjoYycE56Sj1dTPqOSP59pYCpuIPNX/0 1oGHlLIgnQ4hQ7wQFbyWklBi+5CbQT0Pp6BbSM3ZKO23QQIp9D0Uigt6JwDvakcpPPMn lDhQ== X-Received: by 10.69.31.139 with SMTP id km11mr3585497pbd.63.1402569496197; Thu, 12 Jun 2014 03:38:16 -0700 (PDT) Received: from h311.iiit.ac.in ([14.139.82.6]) by mx.google.com with ESMTPSA id xk1sm3337666pac.21.2014.06.12.03.38.13 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Jun 2014 03:38:15 -0700 (PDT) From: Sanidhya Kashyap To: qemu list Date: Thu, 12 Jun 2014 16:06:35 +0530 Message-Id: <1402569400-12242-3-git-send-email-sanidhya.iiith@gmail.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1402569400-12242-1-git-send-email-sanidhya.iiith@gmail.com> References: <1402569400-12242-1-git-send-email-sanidhya.iiith@gmail.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c01::230 Cc: Sanidhya Kashyap , "Dr. David Alan Gilbert" , Juan Quintela Subject: [Qemu-devel] [PATCH v3 2/7] RunState: added two new flags for bitmap dump and migration process X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Changed those files that were directly using the RUN_STATE_RUNNING flag. Now, they have been replaced by the runstate_is_running() function. Signed-off-by: Sanidhya Kashyap --- hw/usb/hcd-ehci.c | 2 +- hw/usb/redirect.c | 6 +++--- qapi-schema.json | 7 ++++++- vl.c | 29 ++++++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index a00a93c..5487edc 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -2393,7 +2393,7 @@ static void usb_ehci_vm_state_change(void *opaque, int running, RunState state) * USB-devices which have async handled packages have a packet in the * ep queue to match the completion with. */ - if (state == RUN_STATE_RUNNING) { + if (runstate_is_running()) { ehci_advance_async_state(ehci); } diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 4c6187b..7023afa 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -283,7 +283,7 @@ static int usbredir_write(void *priv, uint8_t *data, int count) } /* Don't send new data to the chardev until our state is fully synced */ - if (!runstate_check(RUN_STATE_RUNNING)) { + if (!runstate_is_running()) { return 0; } @@ -1290,7 +1290,7 @@ static int usbredir_chardev_can_read(void *opaque) } /* Don't read new data from the chardev until our state is fully synced */ - if (!runstate_check(RUN_STATE_RUNNING)) { + if (!runstate_is_running()) { return 0; } @@ -1340,7 +1340,7 @@ static void usbredir_vm_state_change(void *priv, int running, RunState state) { USBRedirDevice *dev = priv; - if (state == RUN_STATE_RUNNING && dev->parser != NULL) { + if (runstate_is_running() && dev->parser != NULL) { usbredirparser_do_write(dev->parser); /* Flush any pending writes */ } } diff --git a/qapi-schema.json b/qapi-schema.json index 14b498b..f9c75f9 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -142,12 +142,17 @@ # @watchdog: the watchdog action is configured to pause and has been triggered # # @guest-panicked: guest has been panicked as a result of guest OS panic +# +# @migrate: migration process is being executed +# +# @dump-bitmap: dump the writable working set of the guest +# ## { 'enum': 'RunState', 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused', 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm', 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog', - 'guest-panicked' ] } + 'guest-panicked', 'migrate', 'dump-bitmap' ] } ## # @StatusInfo: diff --git a/vl.c b/vl.c index ac0e3d7..08a5c5c 100644 --- a/vl.c +++ b/vl.c @@ -576,31 +576,39 @@ static const RunStateTransition runstate_transitions_def[] = { /* from -> to */ { RUN_STATE_DEBUG, RUN_STATE_RUNNING }, { RUN_STATE_DEBUG, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_DEBUG, RUN_STATE_MIGRATE }, { RUN_STATE_INMIGRATE, RUN_STATE_RUNNING }, { RUN_STATE_INMIGRATE, RUN_STATE_PAUSED }, { RUN_STATE_INTERNAL_ERROR, RUN_STATE_PAUSED }, { RUN_STATE_INTERNAL_ERROR, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_INTERNAL_ERROR, RUN_STATE_MIGRATE }, { RUN_STATE_IO_ERROR, RUN_STATE_RUNNING }, { RUN_STATE_IO_ERROR, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_IO_ERROR, RUN_STATE_MIGRATE }, { RUN_STATE_PAUSED, RUN_STATE_RUNNING }, { RUN_STATE_PAUSED, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_PAUSED, RUN_STATE_MIGRATE }, { RUN_STATE_POSTMIGRATE, RUN_STATE_RUNNING }, { RUN_STATE_POSTMIGRATE, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_POSTMIGRATE, RUN_STATE_MIGRATE }, { RUN_STATE_PRELAUNCH, RUN_STATE_RUNNING }, { RUN_STATE_PRELAUNCH, RUN_STATE_FINISH_MIGRATE }, { RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE }, + { RUN_STATE_PRELAUNCH, RUN_STATE_MIGRATE }, { RUN_STATE_FINISH_MIGRATE, RUN_STATE_RUNNING }, { RUN_STATE_FINISH_MIGRATE, RUN_STATE_POSTMIGRATE }, { RUN_STATE_RESTORE_VM, RUN_STATE_RUNNING }, + { RUN_STATE_DUMP_BITMAP, RUN_STATE_RUNNING}, + { RUN_STATE_RUNNING, RUN_STATE_DEBUG }, { RUN_STATE_RUNNING, RUN_STATE_INTERNAL_ERROR }, { RUN_STATE_RUNNING, RUN_STATE_IO_ERROR }, @@ -611,6 +619,8 @@ static const RunStateTransition runstate_transitions_def[] = { { RUN_STATE_RUNNING, RUN_STATE_SHUTDOWN }, { RUN_STATE_RUNNING, RUN_STATE_WATCHDOG }, { RUN_STATE_RUNNING, RUN_STATE_GUEST_PANICKED }, + { RUN_STATE_RUNNING, RUN_STATE_DUMP_BITMAP }, + { RUN_STATE_RUNNING, RUN_STATE_MIGRATE }, { RUN_STATE_SAVE_VM, RUN_STATE_RUNNING }, @@ -621,12 +631,27 @@ static const RunStateTransition runstate_transitions_def[] = { { RUN_STATE_RUNNING, RUN_STATE_SUSPENDED }, { RUN_STATE_SUSPENDED, RUN_STATE_RUNNING }, { RUN_STATE_SUSPENDED, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_SUSPENDED, RUN_STATE_MIGRATE }, { RUN_STATE_WATCHDOG, RUN_STATE_RUNNING }, { RUN_STATE_WATCHDOG, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_WATCHDOG, RUN_STATE_MIGRATE }, { RUN_STATE_GUEST_PANICKED, RUN_STATE_RUNNING }, { RUN_STATE_GUEST_PANICKED, RUN_STATE_FINISH_MIGRATE }, + { RUN_STATE_GUEST_PANICKED, RUN_STATE_MIGRATE }, + + { RUN_STATE_DUMP_BITMAP, RUN_STATE_RUNNING }, + + { RUN_STATE_MIGRATE, RUN_STATE_POSTMIGRATE }, + { RUN_STATE_MIGRATE, RUN_STATE_PAUSED }, + { RUN_STATE_MIGRATE, RUN_STATE_SHUTDOWN }, + { RUN_STATE_MIGRATE, RUN_STATE_GUEST_PANICKED }, + { RUN_STATE_MIGRATE, RUN_STATE_DEBUG }, + { RUN_STATE_MIGRATE, RUN_STATE_RUNNING }, + { RUN_STATE_MIGRATE, RUN_STATE_INTERNAL_ERROR }, + { RUN_STATE_MIGRATE, RUN_STATE_IO_ERROR }, + { RUN_STATE_MIGRATE, RUN_STATE_WATCHDOG }, { RUN_STATE_MAX, RUN_STATE_MAX }, }; @@ -666,7 +691,9 @@ void runstate_set(RunState new_state) int runstate_is_running(void) { - return runstate_check(RUN_STATE_RUNNING); + return (runstate_check(RUN_STATE_RUNNING) || + runstate_check(RUN_STATE_MIGRATE) || + runstate_check(RUN_STATE_DUMP_BITMAP)); } bool runstate_needs_reset(void)