[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/25] VMState cleanups and conversion of network dr
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 00/25] VMState cleanups and conversion of network drivers |
Date: |
Mon, 19 Oct 2009 20:42:45 +0200 |
Hi
This series cleans VMState internals and port all the pc network devices to
VMState (except virtio-net).
- Cleanups:
* we can send partial buffers, and clean how we do it
* refactor all the buffer code.
* refactor all the offset code
* add VARRAY_UINT16_UNSAFE: unsafe here means that type checking is off
(a.k.a. as a cast in C). In this case the problem is that the last
element of one struct is int foo[0], and we allocate the right size
for the array we want. Problem? I haven't been able to abuse^Wuse
gcc + cpp + magic to typecheck that for vmstate:
We have
struct FOO {
int32_t foo[0];
}
We want to "compare the type of foo (t1) with int32_t (t2)
((t1(*)[n])0 - (t2*)0)
This one don't work, because we don't have 'n'
((t1(**))0 - (t2*)0)
This don't work either because t1 is one array.
((t1(*)[])0 - (t2*)0)
Too clever, imposible cast to on array type.
I tried some other variants, but have not able to get one that compiles.
* UNUSED support. This allows to mark some space in the VMStateDescription
as "useless", that is there for backwards compatibility. We don't need
a field in the State to load/save that values anymore.
* SUB_ARRAY(..,start, num, ...)
This allows us to send only slices of one array, i.e. 'num' elemns starting
at position 'start'.
- Network Devices
* rtl8139; Drop support for version < 3, it don't work as non-pci anymore.
* eeprom93xx (only used by eepro100), this one was quite "interesting"
- savevm state had pading by design
- size field changed from 8 bits to 16 bits using the pading space
- VMARRAY with size uint16_t and UNSAFE was needed for this driver
- Wint the price of the more complicated conversion of the series.
* eepro100:
- really, really needed the UNUSED support
- it is the only driver so far that uses a different "name"
* pcnet: nothing special, just port
* ne2000: nothing special, just port
* e1000: after I understood the mac_reg*save arrays just
- unfold them
- save them as SUB_ARRAY
result is clear that previous code.
Reason why cleanup + devices came together is because the cleanups/additons
are needed to implement this devices.
Comments?
Later, Juan.
Juan Quintela (25):
vmstate: Add support for partial buffers transmission
serial: use post_load version_id field and remove pre_load function
vnmstate: fix name for uint8_equal
vmstate: add VMSTATE_UINT16_EQUAL[_V]
vmstate: Rename VMS_VARRAY to VMS_VARRAY_INT32
vmstate: fix indentation
vmstate: factor vmstate_offset_value
vmstate: factor vmstate_offset_pointer
vmstate: factor vmstate_offset_array
vmstate: factor vmstate_offset_buffer
vmstate: factor VMSTATE_*BUFFER* definitions
vmstate: Unfold VMSTATE_INT32_VARRAY() only use and remove it
vmstate: add VMS_VARRAY_UINT16_UNSAFE (varrays with uint16 indexes)
vmstate: Add version arg to VMSTATE_SINGLE_TEST()
vmstate: Add VMSTATE_BUFFER_UNUSED
vmstate: Introduce the concept of sub-arrays
rtl8139: port TallyCounters to vmstate
rtl8139: port to vmstate
eeprom93xx: port to vmstate
eepro100: port to vmstate
pcnet: port to vmstate
ne2000: port to vmstate
e1000: unfold mac_reg_tosave array
e1000: unfold mac_regarraystosave array
e1000: port to vmstate
hw/e1000.c | 185 ++++++++++++---------------
hw/eepro100.c | 195 +++++++++-------------------
hw/eeprom93xx.c | 102 +++++++--------
hw/fdc.c | 2 +-
hw/hw.h | 171 +++++++++++++++---------
hw/ne2000-isa.c | 4 +-
hw/ne2000.c | 133 +++++++------------
hw/ne2000.h | 3 +-
hw/pci.c | 2 +-
hw/pcnet.c | 110 ++++++----------
hw/rtl8139.c | 347 +++++++++++++++----------------------------------
hw/serial.c | 11 +-
savevm.c | 54 +++++++-
target-i386/machine.c | 2 +-
14 files changed, 548 insertions(+), 773 deletions(-)
- [Qemu-devel] [PATCH 00/25] VMState cleanups and conversion of network drivers,
Juan Quintela <=
- [Qemu-devel] [PATCH 01/25] vmstate: Add support for partial buffers transmission, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 03/25] vnmstate: fix name for uint8_equal, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 02/25] serial: use post_load version_id field and remove pre_load function, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 04/25] vmstate: add VMSTATE_UINT16_EQUAL[_V], Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 05/25] vmstate: Rename VMS_VARRAY to VMS_VARRAY_INT32, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 06/25] vmstate: fix indentation, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 07/25] vmstate: factor vmstate_offset_value, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 08/25] vmstate: factor vmstate_offset_pointer, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 09/25] vmstate: factor vmstate_offset_array, Juan Quintela, 2009/10/19
- [Qemu-devel] [PATCH 10/25] vmstate: factor vmstate_offset_buffer, Juan Quintela, 2009/10/19