All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: Andrew Jeffery <andrew@aj.id.au>,
	Peter Maydell <peter.maydell@linaro.org>,
	qemu-arm <qemu-arm@nongnu.org>,
	QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-arm] [PATCH] timer/aspeed: fix vmstate version id
Date: Mon, 23 Apr 2018 11:46:23 +0100	[thread overview]
Message-ID: <20180423104622.GG2518@work-vm> (raw)
In-Reply-To: <a5ca89ac-7c8f-c565-30d0-357bacb1f61e@kaod.org>

* Cédric Le Goater (clg@kaod.org) wrote:
> On 04/23/2018 11:34 AM, Peter Maydell wrote:
> > On 23 April 2018 at 10:28, Cédric Le Goater <clg@kaod.org> wrote:
> >> On 04/23/2018 11:12 AM, Peter Maydell wrote:
> >>>> diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
> >>>> index 50acbf530a3a..7df19bd9df91 100644
> >>>> --- a/hw/timer/aspeed_timer.c
> >>>> +++ b/hw/timer/aspeed_timer.c
> >>>> @@ -498,8 +498,8 @@ static const VMStateDescription vmstate_aspeed_timer = {
> >>>>
> >>>>  static const VMStateDescription vmstate_aspeed_timer_state = {
> >>>>      .name = "aspeed.timerctrl",
> >>>> -    .version_id = 1,
> >>>> -    .minimum_version_id = 1,
> >>>> +    .version_id = 2,
> >>>> +    .minimum_version_id = 2,
> >>>>      .fields = (VMStateField[]) {
> >>>>          VMSTATE_UINT32(ctrl, AspeedTimerCtrlState),
> >>>>          VMSTATE_UINT32(ctrl2, AspeedTimerCtrlState),
> >>> Wouldn't it be simpler to just fix the incorrect value in
> >>> the VMSTATE_STRUCT_ARRAY(timers, AspeedTimerCtrlState,
> >>> line ?
> >>
> >> Yes. Also.
> >>
> >> Or bring back all the version ids to 1, as we never supported
> >> migration before.
> > 
> > I think it's nice to at least do the "bump version" thing, so you
> > get a (hopefully comprehensible) error rather than just wrong
> > data if you do try a cross version migration, 
> 
> On that topic, the error message was :
> 
> 	Missing section footer for aspeed.timerctrl
> 
> which is not very comprehensible for a version mismatch issue.

Was that before your patch?

The VMSTATE fields in the structure have no metadata stored
for them to be parsed with; if you send a different number
of array entries to the number the destination receives you end
up with a corrupt stream. Section footers are just a canary
that tells you something went wrong in that devices data.
It has no more information to give you a more detailed error.

Dave

> Thanks,
> 
> C. 
> 
> > so I would
> > vote for just fixing the one thing that was wrong: the
> > number in VMSTATE_STRUCT_ARRAY is the version to be used of
> > the substruct, so it didn't need to be bumped in commit
> > 1d3e65aa7a; the main version numbers for vmstate_aspeed_timer
> > did need to be bumped because part of the main struct changed.
> > 
> > thanks
> > -- PMM
> > 
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

WARNING: multiple messages have this Message-ID (diff)
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	qemu-arm <qemu-arm@nongnu.org>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Andrew Jeffery <andrew@aj.id.au>
Subject: Re: [Qemu-devel] [PATCH] timer/aspeed: fix vmstate version id
Date: Mon, 23 Apr 2018 11:46:23 +0100	[thread overview]
Message-ID: <20180423104622.GG2518@work-vm> (raw)
In-Reply-To: <a5ca89ac-7c8f-c565-30d0-357bacb1f61e@kaod.org>

* Cédric Le Goater (clg@kaod.org) wrote:
> On 04/23/2018 11:34 AM, Peter Maydell wrote:
> > On 23 April 2018 at 10:28, Cédric Le Goater <clg@kaod.org> wrote:
> >> On 04/23/2018 11:12 AM, Peter Maydell wrote:
> >>>> diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
> >>>> index 50acbf530a3a..7df19bd9df91 100644
> >>>> --- a/hw/timer/aspeed_timer.c
> >>>> +++ b/hw/timer/aspeed_timer.c
> >>>> @@ -498,8 +498,8 @@ static const VMStateDescription vmstate_aspeed_timer = {
> >>>>
> >>>>  static const VMStateDescription vmstate_aspeed_timer_state = {
> >>>>      .name = "aspeed.timerctrl",
> >>>> -    .version_id = 1,
> >>>> -    .minimum_version_id = 1,
> >>>> +    .version_id = 2,
> >>>> +    .minimum_version_id = 2,
> >>>>      .fields = (VMStateField[]) {
> >>>>          VMSTATE_UINT32(ctrl, AspeedTimerCtrlState),
> >>>>          VMSTATE_UINT32(ctrl2, AspeedTimerCtrlState),
> >>> Wouldn't it be simpler to just fix the incorrect value in
> >>> the VMSTATE_STRUCT_ARRAY(timers, AspeedTimerCtrlState,
> >>> line ?
> >>
> >> Yes. Also.
> >>
> >> Or bring back all the version ids to 1, as we never supported
> >> migration before.
> > 
> > I think it's nice to at least do the "bump version" thing, so you
> > get a (hopefully comprehensible) error rather than just wrong
> > data if you do try a cross version migration, 
> 
> On that topic, the error message was :
> 
> 	Missing section footer for aspeed.timerctrl
> 
> which is not very comprehensible for a version mismatch issue.

Was that before your patch?

The VMSTATE fields in the structure have no metadata stored
for them to be parsed with; if you send a different number
of array entries to the number the destination receives you end
up with a corrupt stream. Section footers are just a canary
that tells you something went wrong in that devices data.
It has no more information to give you a more detailed error.

Dave

> Thanks,
> 
> C. 
> 
> > so I would
> > vote for just fixing the one thing that was wrong: the
> > number in VMSTATE_STRUCT_ARRAY is the version to be used of
> > the substruct, so it didn't need to be bumped in commit
> > 1d3e65aa7a; the main version numbers for vmstate_aspeed_timer
> > did need to be bumped because part of the main struct changed.
> > 
> > thanks
> > -- PMM
> > 
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2018-04-23 10:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-23  6:40 [Qemu-arm] [PATCH] timer/aspeed: fix vmstate version id Cédric Le Goater
2018-04-23  6:40 ` [Qemu-devel] " Cédric Le Goater
2018-04-23  9:12 ` [Qemu-arm] " Peter Maydell
2018-04-23  9:12   ` [Qemu-devel] " Peter Maydell
2018-04-23  9:28   ` [Qemu-arm] " Cédric Le Goater
2018-04-23  9:28     ` [Qemu-devel] " Cédric Le Goater
2018-04-23  9:34     ` [Qemu-arm] " Peter Maydell
2018-04-23  9:34       ` [Qemu-devel] " Peter Maydell
2018-04-23  9:55       ` [Qemu-arm] " Cédric Le Goater
2018-04-23  9:55         ` [Qemu-devel] " Cédric Le Goater
2018-04-23 10:00       ` [Qemu-arm] " Cédric Le Goater
2018-04-23 10:00         ` [Qemu-devel] " Cédric Le Goater
2018-04-23 10:46         ` Dr. David Alan Gilbert [this message]
2018-04-23 10:46           ` Dr. David Alan Gilbert
2018-04-23 11:35           ` [Qemu-arm] " Cédric Le Goater
2018-04-23 11:35             ` [Qemu-devel] " Cédric Le Goater

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=20180423104622.GG2518@work-vm \
    --to=dgilbert@redhat.com \
    --cc=andrew@aj.id.au \
    --cc=clg@kaod.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --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.