From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afffR-0005UH-JQ for qemu-devel@nongnu.org; Mon, 14 Mar 2016 23:29:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1afffO-0005LZ-7k for qemu-devel@nongnu.org; Mon, 14 Mar 2016 23:29:09 -0400 Received: from e23smtp02.au.ibm.com ([202.81.31.144]:55424) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afffN-0005LE-LA for qemu-devel@nongnu.org; Mon, 14 Mar 2016 23:29:06 -0400 Received: from localhost by e23smtp02.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 15 Mar 2016 13:18:57 +1000 Received: from d23relay06.au.ibm.com (d23relay06.au.ibm.com [9.185.63.219]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id 3A1372BB0054 for ; Tue, 15 Mar 2016 14:18:50 +1100 (EST) Received: from d23av03.au.ibm.com (d23av03.au.ibm.com [9.190.234.97]) by d23relay06.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u2F3IS4I9568564 for ; Tue, 15 Mar 2016 14:18:50 +1100 Received: from d23av03.au.ibm.com (localhost [127.0.0.1]) by d23av03.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id u2F3I4V0012589 for ; Tue, 15 Mar 2016 14:18:04 +1100 From: Alexey Kardashevskiy Date: Tue, 15 Mar 2016 14:17:36 +1100 Message-Id: <1458011856-44711-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH qemu] vmstate: Define VARRAY with VMS_ALLOC List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexey Kardashevskiy , David Gibson , Juan Quintela This allows dynamic allocation for migrating arrays. Already existing VMSTATE_VARRAY_UINT32 requires an array to be pre-allocated, however there are cases when the size is not known in advance and there is no real need to enforce it. This defines another variant of VMSTATE_VARRAY_UINT32 with WMS_ALLOC flag which tells the receiving side to allocate memory for the array before receiving the data. The first user of it is the "pseries" machine (POWER8) with dynamic DMA windows which existence and size are totally dynamic. Signed-off-by: Alexey Kardashevskiy Reviewed-by: David Gibson Reviewed-by: Thomas Huth --- As David suggested, I am posting it alone (separately from the DDW patchset). It would be nice either to get "ack" to get this pulled via the powerpc tree or get it pulled to the upstream via some other tree. Thanks! --- include/migration/vmstate.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 84ee355..1622638 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -386,6 +386,16 @@ extern const VMStateInfo vmstate_info_bitmap; .offset = vmstate_offset_pointer(_state, _field, _type), \ } +#define VMSTATE_VARRAY_UINT32_ALLOC(_field, _state, _field_num, _version, _info, _type) {\ + .name = (stringify(_field)), \ + .version_id = (_version), \ + .num_offset = vmstate_offset_value(_state, _field_num, uint32_t),\ + .info = &(_info), \ + .size = sizeof(_type), \ + .flags = VMS_VARRAY_UINT32|VMS_POINTER|VMS_ALLOC, \ + .offset = vmstate_offset_pointer(_state, _field, _type), \ +} + #define VMSTATE_VARRAY_UINT16_UNSAFE(_field, _state, _field_num, _version, _info, _type) {\ .name = (stringify(_field)), \ .version_id = (_version), \ -- 2.5.0.rc3