From: Jason Wang <jasowang@redhat.com>
To: David Vrabel <david.vrabel@citrix.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCHv2] rtl8139: save/load RxMulOk counter (again)
Date: Tue, 21 Jun 2016 09:44:43 +0800 [thread overview]
Message-ID: <57689C0B.2060108@redhat.com> (raw)
In-Reply-To: <1466445226-19808-1-git-send-email-david.vrabel@citrix.com>
On 2016年06月21日 01:53, David Vrabel wrote:
> Commit 9d29cdeaaca3a0383af764000b71492c4fc67c6e (rtl8139: port
> TallyCounters to vmstate) introduced in incompatibility in the v4
> format as it omitted the RxOkMul counter.
>
> There are presumably no users that were impacted by the v4 to v4'
> breakage, so increase the save version to 5 and re-add the field,
> keeping backward compatibility with v4'.
>
> We can't have a field conditional on the section version in
> vmstate_tally_counters since this version checked would not be the
> section version (but the version defined in this structure). So, move
> all the fields into the main state structure.
>
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Migration to old version is important for the user and this patch seems
to break this. How about something like:
- introduce a subsection for RXOKMul
- only migrate it for new version (e.g >= 2.7)
Thanks
> ---
> Cc: Jason Wang <jasowang@redhat.com>
> ---
> hw/net/rtl8139.c | 40 ++++++++++++++--------------------------
> 1 file changed, 14 insertions(+), 26 deletions(-)
>
> diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c
> index 562c1fd..8ccd1d3 100644
> --- a/hw/net/rtl8139.c
> +++ b/hw/net/rtl8139.c
> @@ -1352,29 +1352,6 @@ static void RTL8139TallyCounters_dma_write(RTL8139State *s, dma_addr_t tc_addr)
> pci_dma_write(d, tc_addr + 62, (uint8_t *)&val16, 2);
> }
>
> -/* Loads values of tally counters from VM state file */
> -
> -static const VMStateDescription vmstate_tally_counters = {
> - .name = "tally_counters",
> - .version_id = 1,
> - .minimum_version_id = 1,
> - .fields = (VMStateField[]) {
> - VMSTATE_UINT64(TxOk, RTL8139TallyCounters),
> - VMSTATE_UINT64(RxOk, RTL8139TallyCounters),
> - VMSTATE_UINT64(TxERR, RTL8139TallyCounters),
> - VMSTATE_UINT32(RxERR, RTL8139TallyCounters),
> - VMSTATE_UINT16(MissPkt, RTL8139TallyCounters),
> - VMSTATE_UINT16(FAE, RTL8139TallyCounters),
> - VMSTATE_UINT32(Tx1Col, RTL8139TallyCounters),
> - VMSTATE_UINT32(TxMCol, RTL8139TallyCounters),
> - VMSTATE_UINT64(RxOkPhy, RTL8139TallyCounters),
> - VMSTATE_UINT64(RxOkBrd, RTL8139TallyCounters),
> - VMSTATE_UINT16(TxAbt, RTL8139TallyCounters),
> - VMSTATE_UINT16(TxUndrn, RTL8139TallyCounters),
> - VMSTATE_END_OF_LIST()
> - }
> -};
> -
> static void rtl8139_ChipCmd_write(RTL8139State *s, uint32_t val)
> {
> DeviceState *d = DEVICE(s);
> @@ -3222,7 +3199,7 @@ static void rtl8139_pre_save(void *opaque)
>
> static const VMStateDescription vmstate_rtl8139 = {
> .name = "rtl8139",
> - .version_id = 4,
> + .version_id = 5,
> .minimum_version_id = 3,
> .post_load = rtl8139_post_load,
> .pre_save = rtl8139_pre_save,
> @@ -3293,8 +3270,19 @@ static const VMStateDescription vmstate_rtl8139 = {
> VMSTATE_UINT32(TimerInt, RTL8139State),
> VMSTATE_INT64(TCTR_base, RTL8139State),
>
> - VMSTATE_STRUCT(tally_counters, RTL8139State, 0,
> - vmstate_tally_counters, RTL8139TallyCounters),
> + VMSTATE_UINT64(tally_counters.TxOk, RTL8139State),
> + VMSTATE_UINT64(tally_counters.RxOk, RTL8139State),
> + VMSTATE_UINT64(tally_counters.TxERR, RTL8139State),
> + VMSTATE_UINT32(tally_counters.RxERR, RTL8139State),
> + VMSTATE_UINT16(tally_counters.MissPkt, RTL8139State),
> + VMSTATE_UINT16(tally_counters.FAE, RTL8139State),
> + VMSTATE_UINT32(tally_counters.Tx1Col, RTL8139State),
> + VMSTATE_UINT32(tally_counters.TxMCol, RTL8139State),
> + VMSTATE_UINT64(tally_counters.RxOkPhy, RTL8139State),
> + VMSTATE_UINT64(tally_counters.RxOkBrd, RTL8139State),
> + VMSTATE_UINT32_V(tally_counters.RxOkMul, RTL8139State, 5),
> + VMSTATE_UINT16(tally_counters.TxAbt, RTL8139State),
> + VMSTATE_UINT16(tally_counters.TxUndrn, RTL8139State),
>
> VMSTATE_UINT32_V(cplus_enabled, RTL8139State, 4),
> VMSTATE_END_OF_LIST()
next prev parent reply other threads:[~2016-06-21 1:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 17:53 [Qemu-devel] [PATCHv2] rtl8139: save/load RxMulOk counter (again) David Vrabel
2016-06-21 1:44 ` Jason Wang [this message]
2016-06-21 7:35 ` Paolo Bonzini
2016-06-21 9:36 ` David Vrabel
2016-06-21 10:11 ` Paolo Bonzini
2016-06-22 5:51 ` Jason Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57689C0B.2060108@redhat.com \
--to=jasowang@redhat.com \
--cc=david.vrabel@citrix.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.