> Alon Levy <al...@redhat.com> writes: > > > Signed-off-by: Alon Levy <al...@redhat.com> > > --- > > include/char/char.h | 12 ++++++++++++ > > qemu-char.c | 7 +++++++ > > 2 files changed, 19 insertions(+) > > > > diff --git a/include/char/char.h b/include/char/char.h > > index 0326b2a..0fdcaf9 100644 > > --- a/include/char/char.h > > +++ b/include/char/char.h > > @@ -70,6 +70,7 @@ struct CharDriverState { > > void (*chr_set_echo)(struct CharDriverState *chr, bool echo); > > void (*chr_guest_open)(struct CharDriverState *chr); > > void (*chr_guest_close)(struct CharDriverState *chr); > > + void (*chr_post_load)(struct CharDriverState *chr, int > > connected); > > The character device layer should *not* be messing around with > notifying > migration state. > > I thought we previously discussed this? Just implement a migration > hook > in the spice code.
The thing Gerd objected to when I sent a patch doing just that was the way I used the vmstate, one possible way to not have to use vmstate at all is adding api for querying the current front end connected status, like qemu_fe_is_connected. Is that acceptable? > > Regards, > > Anthony Liguori > > > void *opaque; > > int idle_tag; > > char *label; > > @@ -144,6 +145,17 @@ void qemu_chr_fe_open(struct CharDriverState > > *chr); > > void qemu_chr_fe_close(struct CharDriverState *chr); > > > > /** > > + * @qemu_chr_fe_post_load: > > + * > > + * Indicate to backend that a migration has just completed. Must > > be called when > > + * the vm is in the running state. > > + * > > + * @connected true if frontend is still connected after migration, > > false > > + * otherwise. > > + */ > > +void qemu_chr_fe_post_load(struct CharDriverState *chr, int > > connected); > > + > > +/** > > * @qemu_chr_fe_printf: > > * > > * Write to a character backend using a printf style interface. > > diff --git a/qemu-char.c b/qemu-char.c > > index 4e011df..42c911f 100644 > > --- a/qemu-char.c > > +++ b/qemu-char.c > > @@ -3390,6 +3390,13 @@ void qemu_chr_fe_open(struct CharDriverState > > *chr) > > } > > } > > > > +void qemu_chr_fe_post_load(struct CharDriverState *chr, int > > connected) > > +{ > > + if (chr->chr_post_load) { > > + chr->chr_post_load(chr, connected); > > + } > > +} > > + > > void qemu_chr_fe_close(struct CharDriverState *chr) > > { > > if (chr->chr_guest_close) { > > -- > > 1.8.1.4 > > >