[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastruct
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure |
Date: |
Thu, 20 Aug 2009 19:42:18 +0200 |
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(-)
- [Qemu-devel] [PATCH 00/23] New VMState table based load/save infrastructure,
Juan Quintela <=
- [Qemu-devel] [PATCH 01/23] move useful type definitons to osdep.h, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 02/23] split do_loadvm() into do_loadvm() and load_vmstate(), Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 03/23] move do_loadvm() to monitor.c, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 04/23] make load_vmstate() return errors, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 06/23] Add vmstate_load() and vmstate_save() functions, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 05/23] Use return value from load_state() call back, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 07/23] New VMstate save/load infrastructure, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 08/23] Add VMState support for pointers, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 09/23] Add VMState support for arrays, Juan Quintela, 2009/08/20
- [Qemu-devel] [PATCH 11/23] Add VMState support for structs, Juan Quintela, 2009/08/20