aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc
diff options
context:
space:
mode:
authorRobert Phillips <robert.phillips@citrix.com>2013-01-17 11:53:42 +0000
committerRobert Phillips <robert.phillips@citrix.com>2013-01-17 11:53:42 +0000
commitbae850f060b4819188cfe35f65ba925eb6c4f4ac (patch)
treea1fd57c3ce29276f808899f244099d202dfc1cbd /tools/libxc
parentcda084b3d8901dab95f22aa6047e103e1032d486 (diff)
downloadxen-bae850f060b4819188cfe35f65ba925eb6c4f4ac.tar.gz
xen-bae850f060b4819188cfe35f65ba925eb6c4f4ac.tar.bz2
xen-bae850f060b4819188cfe35f65ba925eb6c4f4ac.zip
x86/mm: Provide support for multiple frame buffers in HVM guests.
Support is provided for both shadow and hardware assisted paging (HAP) modes. This code bookkeeps the set of video frame buffers (vram), detects when the guest has modified any of those buffers and, upon request, returns a bitmap of the modified pages. This lets other software components re-paint the portions of the monitor (or monitors) that have changed. Each monitor has a frame buffer of some size at some position in guest physical memory. The set of frame buffers being tracked can change over time as monitors are plugged and unplugged. Signed-off-by: Robert Phillips <robert.phillips@citrix.com> Acked-by: Tim Deegan <tim@xen.org> Removed a stray #include and a few hard tabs. Signed-off-by: Tim Deegan <tim@xen.org> Committed-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'tools/libxc')
-rw-r--r--tools/libxc/xenctrl.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h
index 32122fd303..cd4e1ef0d8 100644
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -1563,15 +1563,23 @@ int xc_hvm_inject_msi(
xc_interface *xch, domid_t dom, uint64_t addr, uint32_t data);
/*
- * Track dirty bit changes in the VRAM area
+ * Track dirty bit changes in a VRAM region defined by
+ * [ first_pfn : first_pfn + nr - 1 ]
*
* All of this is done atomically:
- * - get the dirty bitmap since the last call
- * - set up dirty tracking area for period up to the next call
- * - clear the dirty tracking area.
+ * - gets the dirty bitmap since the last call, all zeroes for
+ * the first call with some new region
+ * - sets up a dirty tracking region for period up to the next call
+ * - clears the specified dirty tracking region.
*
- * Returns -ENODATA and does not fill bitmap if the area has changed since the
- * last call.
+ * Creating a new region causes any existing regions that it overlaps
+ * to be discarded.
+ *
+ * Specifying nr == 0 causes all regions to be discarded and
+ * disables dirty bit tracking.
+ *
+ * If nr is not a multiple of 64, only the first nr bits of bitmap
+ * are well defined.
*/
int xc_hvm_track_dirty_vram(
xc_interface *xch, domid_t dom,