spice-protocol/spice
Alon Levy fbf2cfb145 add QXL_IO_FLUSH_{SURFACES,RELEASE} for sleep (S3) support
related RHBZ: 688883

Guest initiated sleep looks like this:

 Guest:
  (0) stop putting new commands into the rings
  (1) QXL_IO_FLUSH_SURFACES
      qxl calls flush_surfaces(), spice-server flushes command rings and
      renders all surfaces, thereby flushing state to device memory.
  (2) QXL_IO_DESTROY_ALL_SURFACES
      zap surfaces
  (3) QXL_IO_FLUSH_RELEASE
      push release queue head into the release ring, so the guest
      will see it and can release everything.
  (4) tell acpi to reset
 Qemu:
  (5) qxl_reset_handler
 Guest:
  (6) sends surface create commands

The QXL_IO_FLUSH_SURFACES is an optimization, to reduce vmexits. It is used to
 flush both command rings and update all surfaces at once (equivalent to
 UPDATE_AREA X NUM_ACTIVE_SURFACES)

 destroy all surfaces to release resources but not destroy the guest side surfaces
 get device to flush all server released resources to the release ring (could use multiple
  calls to OOM - but this is not well defined, would need to loop)
 After (1) there will be no memory allocated on the pci bars.
2011-07-17 13:19:36 +03:00
..
barrier.h define spice_mb MemoryBarrier for WIN64 2011-02-02 11:34:19 +02:00
controller_prot.h protocol: use packed-start/end to pack structures 2011-04-11 13:01:57 +02:00
end-packed.h mingw32: specify packing alignment to 1 byte, to override -mms-bitfield 2010-12-29 16:13:55 +01:00
enums.h spice: enums.h regenerated 2011-06-22 11:55:11 +02:00
error_codes.h Clean up and standardize header guards 2010-02-04 16:47:14 +01:00
foreign_menu_prot.h protocol: use packed-start/end to pack structures 2011-04-11 13:01:57 +02:00
ipc_ring.h Fix up SPICE_SPICE typo 2010-02-04 18:10:50 +01:00
macros.h macros: define INLINE 2011-05-12 11:45:58 +03:00
Makefile.am Add controller protocol 2010-10-18 10:08:45 +02:00
protocol.h protocol: add SPICE_{PLAYBACK,RECORD}_CAP_VOLUME caps 2011-06-22 12:01:10 +02:00
qxl_dev.h add QXL_IO_FLUSH_{SURFACES,RELEASE} for sleep (S3) support 2011-07-17 13:19:36 +03:00
start-packed.h mingw32: specify packing alignment to 1 byte, to override -mms-bitfield 2010-12-29 16:13:55 +01:00
stats.h Clean up and standardize header guards 2010-02-04 16:47:14 +01:00
types.h Add byteswapping macros 2010-05-19 16:02:40 +02:00
vd_agent.h vd_agent.h: Add a VDP_END_PORT to the chunk port enum 2011-03-24 11:28:51 +01:00
vdi_dev.h Always include using <spice/foo.h> style 2010-02-04 16:47:23 +01:00