From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N8L83-0004xu-Vj for qemu-devel@nongnu.org; Wed, 11 Nov 2009 16:53:28 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N8L7y-0004qi-Tm for qemu-devel@nongnu.org; Wed, 11 Nov 2009 16:53:27 -0500 Received: from [199.232.76.173] (port=35118 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N8L7y-0004qP-O2 for qemu-devel@nongnu.org; Wed, 11 Nov 2009 16:53:22 -0500 Received: from mail-yx0-f188.google.com ([209.85.210.188]:64678) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N8L7y-0002eR-D6 for qemu-devel@nongnu.org; Wed, 11 Nov 2009 16:53:22 -0500 Received: by yxe26 with SMTP id 26so1376002yxe.4 for ; Wed, 11 Nov 2009 13:53:21 -0800 (PST) Message-ID: <4AFB324E.7020607@codemonkey.ws> Date: Wed, 11 Nov 2009 15:53:18 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1257962966-22902-1-git-send-email-agraf@suse.de> <1257962966-22902-2-git-send-email-agraf@suse.de> In-Reply-To: <1257962966-22902-2-git-send-email-agraf@suse.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 1/6] Make fw_cfg interface 32-bit aware List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: glommer@redhat.com, qemu-devel@nongnu.org, avi@redhat.com Alexander Graf wrote: > The fw_cfg interface can only handle up to 16 bits of data for its streams. > While that isn't too much of a problem when handling integers, we would > like to stream full kernel images over that interface! > > So let's extend it to 32 bit length variables. > > Signed-off-by: Alexander Graf > --- > hw/fw_cfg.c | 8 ++++---- > hw/fw_cfg.h | 2 +- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c > index a6d811b..3a3f694 100644 > --- a/hw/fw_cfg.c > +++ b/hw/fw_cfg.c > @@ -39,7 +39,7 @@ > #define FW_CFG_SIZE 2 > > typedef struct _FWCfgEntry { > - uint16_t len; > + uint32_t len; > uint8_t *data; > void *callback_opaque; > FWCfgCallback callback; > @@ -48,7 +48,7 @@ typedef struct _FWCfgEntry { > typedef struct _FWCfgState { > FWCfgEntry entries[2][FW_CFG_MAX_ENTRY]; > uint16_t cur_entry; > - uint16_t cur_offset; > + uint32_t cur_offset; > } FWCfgState; > > static void fw_cfg_write(FWCfgState *s, uint8_t value) > @@ -171,12 +171,12 @@ static const VMStateDescription vmstate_fw_cfg = { > .minimum_version_id_old = 1, > .fields = (VMStateField []) { > VMSTATE_UINT16(cur_entry, FWCfgState), > - VMSTATE_UINT16(cur_offset, FWCfgState), > + VMSTATE_UINT32(cur_offset, FWCfgState), > VMSTATE_END_OF_LIST() > } > }; > > -int fw_cfg_add_bytes(void *opaque, uint16_t key, uint8_t *data, uint16_t len) > +int fw_cfg_add_bytes(void *opaque, uint16_t key, uint8_t *data, uint32_t len) > { > FWCfgState *s = opaque; > int arch = !!(key & FW_CFG_ARCH_LOCAL); > We need to bump a version here. > diff --git a/hw/fw_cfg.h b/hw/fw_cfg.h > index 30dfec7..359d45a 100644 > --- a/hw/fw_cfg.h > +++ b/hw/fw_cfg.h > @@ -28,7 +28,7 @@ > #ifndef NO_QEMU_PROTOS > typedef void (*FWCfgCallback)(void *opaque, uint8_t *data); > > -int fw_cfg_add_bytes(void *opaque, uint16_t key, uint8_t *data, uint16_t len); > +int fw_cfg_add_bytes(void *opaque, uint16_t key, uint8_t *data, uint32_t len); > int fw_cfg_add_i16(void *opaque, uint16_t key, uint16_t value); > int fw_cfg_add_i32(void *opaque, uint16_t key, uint32_t value); > int fw_cfg_add_i64(void *opaque, uint16_t key, uint64_t value); >