qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure
@ 2009-08-20 17:42 Juan Quintela
  2009-08-20 17:42 ` [Qemu-devel] [PATCH 01/23] move useful type definitons to osdep.h Juan Quintela
                   ` (23 more replies)
  0 siblings, 24 replies; 37+ messages in thread
From: Juan Quintela @ 2009-08-20 17:42 UTC (permalink / raw)
  To: qemu-devel

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(-)

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2009-09-09  6:40 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-20 17:42 [Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure Juan Quintela
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

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).