On Fri, Mar 03, 2017 at 01:40:29PM +0800, Wei Wang wrote: > From: Liang Li <liang.z.li@xxxxxxxxx> > > Define the flags and head struct for a new host request virtual > queue. Guest can get requests from host and then responds to > them on this new virtual queue. > Host can make use of this virtqueue to request the guest to do > some operations, e.g. drop page cache, synchronize file system, > etc. The hypervisor can get some of guest's runtime information > through this virtual queue too, e.g. the guest's unused page > information, which can be used for live migration optimization. > > Signed-off-by: Liang Li <liang.z.li@xxxxxxxxx> > Signed-off-by: Wei Wang <wei.w.wang@xxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Cc: Cornelia Huck <cornelia.huck@xxxxxxxxxx> > Cc: Amit Shah <amit.shah@xxxxxxxxxx> > Cc: Dave Hansen <dave.hansen@xxxxxxxxx> > Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx> > Cc: David Hildenbrand <david@xxxxxxxxxx> > Cc: Liang Li <liliang324@xxxxxxxxx> > Cc: Wei Wang <wei.w.wang@xxxxxxxxx> I prefer this squashed into next patch makes review easier. > --- > include/uapi/linux/virtio_balloon.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h > index ed627b2..630b0ef 100644 > --- a/include/uapi/linux/virtio_balloon.h > +++ b/include/uapi/linux/virtio_balloon.h > @@ -35,6 +35,7 @@ > #define VIRTIO_BALLOON_F_STATS_VQ 1 /* Memory Stats virtqueue */ > #define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */ > #define VIRTIO_BALLOON_F_CHUNK_TRANSFER 3 /* Transfer pages in chunks */ > +#define VIRTIO_BALLOON_F_HOST_REQ_VQ 4 /* Host request virtqueue */ > > /* Size of a PFN in the balloon interface. */ > #define VIRTIO_BALLOON_PFN_SHIFT 12 > @@ -94,4 +95,25 @@ struct virtio_balloon_resp_hdr { > __le32 data_len; /* Payload len in bytes */ > }; > > +enum virtio_balloon_req_id { > + /* Get unused page information */ > + BALLOON_GET_UNUSED_PAGES, > +}; > + > +enum virtio_balloon_flag { > + /* Have more data for a request */ > + BALLOON_FLAG_CONT, > + /* No more data for a request */ > + BALLOON_FLAG_DONE, > +}; > + > +struct virtio_balloon_req_hdr { > + /* Used to distinguish different requests */ > + __le16 cmd; > + /* Reserved */ > + __le16 reserved[3]; > + /* Request parameter */ > + __le64 param; > +}; > + > #endif /* _LINUX_VIRTIO_BALLOON_H */ > -- > 2.7.4