[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 supp
From: |
Alon Levy |
Subject: |
[Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support |
Date: |
Mon, 20 Jun 2011 13:11:52 +0200 |
Add QXL_IO_UPDATE_MEM. Used to reduce vmexits from the guest when it resets the
spice server state before going to sleep.
The implementation requires an updated spice-server (0.8.2) with the new
worker function update_mem.
Cc: Yonit Halperin <address@hidden>
---
hw/qxl.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/hw/qxl.c b/hw/qxl.c
index ca5c8b3..4945d95 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -1016,6 +1016,32 @@ static void ioport_write(void *opaque, uint32_t addr,
uint32_t val)
case QXL_IO_DESTROY_ALL_SURFACES:
d->ssd.worker->destroy_surfaces(d->ssd.worker);
break;
+ case QXL_IO_UPDATE_MEM:
+ dprint(d, 1, "QXL_IO_UPDATE_MEM (%d) entry (%s, s#=%d, res#=%d)\n",
+ val, qxl_mode_to_string(d->mode), d->guest_surfaces.count,
+ d->num_free_res);
+ switch (val) {
+ case (QXL_UPDATE_MEM_RENDER_ALL):
+ d->ssd.worker->update_mem(d->ssd.worker);
+ break;
+ case (QXL_UPDATE_MEM_FLUSH): {
+ QXLReleaseRing *ring = &d->ram->release_ring;
+ if (ring->prod - ring->cons + 1 == ring->num_items) {
+ // TODO - "return" a value to the guest and let it loop?
+ fprintf(stderr,
+ "ERROR: no flush, full release ring [p%d,%dc]\n",
+ ring->prod, ring->cons);
+ }
+ qxl_push_free_res(d, 1 /* flush */);
+ dprint(d, 1, "QXL_IO_UPDATE_MEM exit (%s, s#=%d, res#=%d,%p)\n",
+ qxl_mode_to_string(d->mode), d->guest_surfaces.count,
+ d->num_free_res, d->last_release);
+ break;
+ }
+ default:
+ fprintf(stderr, "ERROR: unexpected value to QXL_IO_UPDATE_MEM\n");
+ }
+ break;
default:
fprintf(stderr, "%s: ioport=0x%x, abort()\n", __FUNCTION__, io_port);
abort();
--
1.7.5.2
- [Qemu-devel] [PATCH 0/2] Suspend (S3) support, Alon Levy, 2011/06/20
- [Qemu-devel] [PATCH 1/2] qxl: interface_get_command: fix reported mode, Alon Levy, 2011/06/20
- [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support,
Alon Levy <=
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Gerd Hoffmann, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Gerd Hoffmann, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Gerd Hoffmann, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Alon Levy, 2011/06/20
- Re: [Qemu-devel] [PATCH 2/2] qxl: add QXL_IO_UPDATE_MEM for guest S3&S4 support, Yonit Halperin, 2011/06/21