RE: [RFC qemu 2/4] virtio-balloon: Add a new feature to balloon device

From: Li, Liang Z
Date: Thu Mar 03 2016 - 21:38:50 EST


> On Thu, 3 Mar 2016 18:44:26 +0800
> Liang Li <liang.z.li@xxxxxxxxx> wrote:
>
> > Extend the virtio balloon device to support a new feature, this new
> > feature can help to get guest's free pages information, which can be
> > used for live migration optimzation.
>
> Do you have a spec for this, e.g. as a patch to the virtio spec?

Not yet.
>
> >
> > Signed-off-by: Liang Li <liang.z.li@xxxxxxxxx>
> > ---
> > balloon.c | 30 ++++++++-
> > hw/virtio/virtio-balloon.c | 81 ++++++++++++++++++++++++-
> > include/hw/virtio/virtio-balloon.h | 17 +++++-
> > include/standard-headers/linux/virtio_balloon.h | 1 +
> > include/sysemu/balloon.h | 10 ++-
> > 5 files changed, 134 insertions(+), 5 deletions(-)
>
> > +static int virtio_balloon_free_pages(void *opaque,
> > + unsigned long *free_pages_bitmap,
> > + unsigned long *free_pages_count)
> > +{
> > + VirtIOBalloon *s = opaque;
> > + VirtIODevice *vdev = VIRTIO_DEVICE(s);
> > + VirtQueueElement *elem = s->free_pages_vq_elem;
> > + int len;
> > +
> > + if (!balloon_free_pages_supported(s)) {
> > + return -1;
> > + }
> > +
> > + if (s->req_status == NOT_STARTED) {
> > + s->free_pages_bitmap = free_pages_bitmap;
> > + s->req_status = STARTED;
> > + s->mem_layout.low_mem =
> > + pc_get_lowmem(PC_MACHINE(current_machine));
>
> Please don't leak pc-specific information into generic code.

I have already notice that and just leave it here in this initial RFC version,
the hard part of this solution is how to handle different architecture ...

Thanks!

Liang