All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Daniel Henrique Barboza <danielhb413@gmail.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: Question about vmstate_register(), dc->vmsd and instance_id
Date: Thu, 17 Mar 2022 16:29:14 +0000	[thread overview]
Message-ID: <YjNh2jSDpWvLJ1S3@work-vm> (raw)
In-Reply-To: <CAFEAcA8eZ0G=ZxyCv7xCk-ZE7R_t6BnDtbGCsYgSBuLwyHprsQ@mail.gmail.com>

* Peter Maydell (peter.maydell@linaro.org) wrote:
> On Thu, 17 Mar 2022 at 14:03, Daniel Henrique Barboza
> <danielhb413@gmail.com> wrote:
> > I've been looking into converting some vmstate_register() calls to use dc->vmsd,
> > using as a base the docs in docs/devel/migration.rst. This doc mentions that we
> > can either register the vmsd by using vmstate_register() or we can use dc->vmsd
> > for qdev-based devices.
> >
> > When trying to convert this vmstate() call for the qdev alternative (hw/ppc/spapr_drc.c,
> > drc_realize()) I found this:
> >
> >      vmstate_register(VMSTATE_IF(drc), spapr_drc_index(drc), &vmstate_spapr_drc,
> >                       drc);
> >
> > spapr_drc_index() is an unique identifier for these DRC devices and it's being used
> > as instance_id. It is not clear to me how we can keep using this same instance_id when
> > using the dc->vmsd alternative. By looking a bit into migration files I understood
> > that if dc->vmsd is being used the instance_id is always autogenerated. Is that correct?
> 
> Not entirely. It is the intended common setup, but because changing
> the ID value breaks migration compatibility there is a mechanism
> for saying "my device is special and needs to set the instance ID
> to something else" -- qdev_set_legacy_instance_id().

Yes, this is normally only an issue for 'system' or memory mapped
devices;  for things hung off a bus that has it's own device naming,
then each instance of a device has it's own device due to the bus name
so instance_id's aren't used.  Where you've got a few of the
same device with the same name, and no bus for them to be named by, then
the instance_id is used to uniquify them.

Dave

> > Given that this is a 13 year old comment from Anthony Liguori I wanted to confirm its
> > validity. Is there a long term goal of getting rid of instance_id? Can I ignore its
> > role when converting these calls to dc->vmsd?
> 
> Only if you're prepared to break migration compatibility, I think.
> 
> -- PMM
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



  reply	other threads:[~2022-03-17 16:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-17 13:58 Question about vmstate_register(), dc->vmsd and instance_id Daniel Henrique Barboza
2022-03-17 15:04 ` Peter Maydell
2022-03-17 16:29   ` Dr. David Alan Gilbert [this message]
2022-03-18  3:43     ` David Gibson
2022-03-18 19:51       ` Daniel Henrique Barboza
2022-03-19  9:43         ` David Gibson
2022-03-23 21:39     ` Daniel Henrique Barboza

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=YjNh2jSDpWvLJ1S3@work-vm \
    --to=dgilbert@redhat.com \
    --cc=danielhb413@gmail.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=peter.maydell@linaro.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.