qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure
Date: Thu, 20 Aug 2009 19:42:18 +0200	[thread overview]
Message-ID: <cover.1250788880.git.quintela@redhat.com> (raw)

This this is 3rd version of the series, I changed:

v3:
* Patches are again on top of my loadvm changes, as they use the new
  loadvm functionality.
* Add size paramente to VMState field, it is needed for buffers
* Redo all the STRUCT and ARRAY support. It makes easier to have combinations of
  things.
* Once there created:
  * POINTER: field is a pointer to the real thing
  * VARRAY: This is one array whose size is another field
  * BUFFER: A traditional array. So far it is only for static sized buffers.
            No need for variable sized buffers yet.
* PCIBUS ported to new API
* PCIDevice ported to new API. Here is an example of how to create your own
  function in the config array.  Basically PCI wants to read the array
  and sanitize it before doing anything else with it.
* Add run_after_load() callback.
* Port PS2 devices
* Port ACPI (uses PCIDevice)
* Put const left, right, and center. 

ToDo:
- still not optional test function.  Notice that this can be done
  with a local VMStateInfo struct.  I still think that this is not
  needed.
- Start/end functions: We have run_after_load(), problaby will ned some more
  uhci_save() calls uhci_async_cancel_all() before saving its state.
- Better/Different design for containers?  Just now we can have things like:
  an array of structs pointed from a pointer of dynamic size.
  This means having to create a new a new VMSTATE_FOO() construct.
  Any idea about how to improve this?  I would like something that is componable:
  ARRAY(POINTER(INT32(field, struct), extra), extra2) or somesuch.
  Haven't found a good way to abuse cpp to get this.
- I tested that it loads qemu/master images. It can save/load new ones.
- Next try will be to convert the virtio-* drivers. Basically everything else
  should work with current abstractions.  virtion_load() is a mess, but I think
  that I can get it working with before/after loading functions.
- If you know of any device that does strange things with state, please, let me
  know, to start for there.
- i440fx_load()
  Can we put pci_irq_levels[] array in any struct?  This is the only driver
  that I have found that uses a global variable.  Gerd, can you take a look?
  It is not possible to have the PCIDevice struct inside a PIIXDevice or similar?

Comments, suggestions?

v2:
* Add _V() constructors.  We almost never need the version field.
* Add const to VMStateDescription uses (BlueWirl suggestion)
* Add const to VMStateInfo uses
* Remove VMStateInfo parameter from get/put callbacks. Not needed.
* Load of old versions is done with old foo_load function (Kraxel suggestion)
* Add struct support
* Move i8254 to new infrastructure, to test struct support
* I removed the autostart patches, updated version sent to list

i8254 note:
There is only one timer in the 1st channel, in the other two channels,
the timer is not created ever, this is the reason why I sent the irq_timer
not in the irq channels.

Juan Quintela (23):
  move useful type definitons to osdep.h
  split do_loadvm() into do_loadvm() and load_vmstate()
  move do_loadvm() to monitor.c
  make load_vmstate() return errors
  Use return value from load_state() call back
  Add vmstate_load() and vmstate_save() functions
  New VMstate save/load infrastructure
  Add VMState support for pointers
  Add VMState support for arrays
  Port apic to new VMState design
  Add VMState support for structs
  Add VMState support for arrays of structs
  Port i8254 to new VMState design
  Add VMState support for int32_t check value
  Add VMState support for variable sized arrays
  Port PCI Bus to VMState design
  Add VMState support for static sized buffers (uint_8)
  Port PS2 devices to VMState design
  Add VMState support for int32_t check value
  Add version_id to PCIDevice.
  Port PCIDevice state to VMState
  Add VMState support to run a function after load
  Port ACPI to VMState

 hw/acpi.c  |   55 +++-----
 hw/apic.c  |   67 +++++-----
 hw/hw.h    |  234 ++++++++++++++++++++++++++++++++
 hw/i8254.c |   66 +++++----
 hw/pci.c   |  107 ++++++++-------
 hw/pci.h   |    2 +
 hw/ps2.c   |  119 +++++++---------
 hw/qdev.h  |    3 -
 monitor.c  |   10 ++
 osdep.h    |    3 +
 savevm.c   |  434 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 sysemu.h   |    2 +-
 vl.c       |    7 +-
 13 files changed, 869 insertions(+), 240 deletions(-)

             reply	other threads:[~2009-08-20 17:45 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-20 17:42 Juan Quintela [this message]
2009-08-20 17:42 ` [Qemu-devel] [PATCH 01/23] move useful type definitons to osdep.h Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 02/23] split do_loadvm() into do_loadvm() and load_vmstate() Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 03/23] move do_loadvm() to monitor.c Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 04/23] make load_vmstate() return errors Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 05/23] Use return value from load_state() call back Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 06/23] Add vmstate_load() and vmstate_save() functions Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 07/23] New VMstate save/load infrastructure Juan Quintela
2009-09-09  6:38   ` Michael S. Tsirkin
2009-08-20 17:42 ` [Qemu-devel] [PATCH 08/23] Add VMState support for pointers Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 09/23] Add VMState support for arrays Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 10/23] Port apic to new VMState design Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 11/23] Add VMState support for structs Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 12/23] Add VMState support for arrays of structs Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 13/23] Port i8254 to new VMState design Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 14/23] Add VMState support for int32_t check value Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 15/23] Add VMState support for variable sized arrays Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 16/23] Port PCI Bus to VMState design Juan Quintela
2009-08-21  8:32   ` Gerd Hoffmann
2009-08-21  9:04     ` [Qemu-devel] " Juan Quintela
2009-08-21  9:23       ` Gerd Hoffmann
2009-08-20 17:42 ` [Qemu-devel] [PATCH 17/23] Add VMState support for static sized buffers (uint_8) Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 18/23] Port PS2 devices to VMState design Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 19/23] Add VMState support for int32_t check value Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 20/23] Add version_id to PCIDevice Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 21/23] Port PCIDevice state to VMState Juan Quintela
2009-08-21  8:52   ` Gerd Hoffmann
2009-08-21  9:01     ` [Qemu-devel] " Juan Quintela
2009-08-21  9:14       ` Gerd Hoffmann
2009-08-21  9:30         ` Juan Quintela
2009-08-21 10:07           ` Gerd Hoffmann
2009-08-20 17:42 ` [Qemu-devel] [PATCH 22/23] Add VMState support to run a function after load Juan Quintela
2009-08-20 17:42 ` [Qemu-devel] [PATCH 23/23] Port ACPI to VMState Juan Quintela
2009-08-21  8:58 ` [Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure Gerd Hoffmann
2009-08-21  9:12   ` [Qemu-devel] " Juan Quintela
2009-08-21  9:28     ` Gerd Hoffmann
2009-08-21  9:31       ` Juan Quintela

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=cover.1250788880.git.quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=qemu-devel@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).