From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TNYTD-0001hj-Ex for qemu-devel@nongnu.org; Sun, 14 Oct 2012 20:23:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TNYTA-0001xH-1V for qemu-devel@nongnu.org; Sun, 14 Oct 2012 20:23:47 -0400 From: David Gibson Date: Mon, 15 Oct 2012 10:24:41 +1000 Message-Id: <1350260682-21428-15-git-send-email-david@gibson.dropbear.id.au> In-Reply-To: <1350260682-21428-1-git-send-email-david@gibson.dropbear.id.au> References: <1350260682-21428-1-git-send-email-david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PATCH 14/15] pseries: savevm support for PAPR virtual SCSI List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: agraf@suse.de, quintela@redhat.com Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org, David Gibson This patch adds the necessary support for saving the state of the PAPR VIO virtual SCSI device. This turns out to be trivial, because the generiC SCSI code already quiesces the attached virtual SCSI bus. Signed-off-by: David Gibson --- hw/spapr_vscsi.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hw/spapr_vscsi.c b/hw/spapr_vscsi.c index e3d4b23..8c81326 100644 --- a/hw/spapr_vscsi.c +++ b/hw/spapr_vscsi.c @@ -952,6 +952,33 @@ static Property spapr_vscsi_properties[] = { DEFINE_PROP_END_OF_LIST(), }; +static void spapr_vscsi_pre_save(void *opaque) +{ + VSCSIState *s = opaque; + int i; + + /* Can't save active requests, apparently the general SCSI code + * quiesces the queue for us on vmsave */ + for (i = 0; i < VSCSI_REQ_LIMIT; i++) { + assert(!s->reqs[i].active); + } +} + +static const VMStateDescription vmstate_spapr_vscsi = { + .name = "spapr_vscsi", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .pre_save = spapr_vscsi_pre_save, + .fields = (VMStateField []) { + VMSTATE_SPAPR_VIO(vdev, VSCSIState), + /* VSCSI state */ + /* ???? */ + + VMSTATE_END_OF_LIST() + }, +}; + static void spapr_vscsi_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -966,6 +993,7 @@ static void spapr_vscsi_class_init(ObjectClass *klass, void *data) k->signal_mask = 0x00000001; dc->props = spapr_vscsi_properties; k->rtce_window_size = 0x10000000; + dc->vmsd = &vmstate_spapr_vscsi; } static TypeInfo spapr_vscsi_info = { -- 1.7.10.4