int xendevicemodel_populate_ram(xendevicemodel_handle *dm,
xen_pfn_t start_gpfn, size_t nr_pages);
+#if 0
+/*
+ * Populate a region of video RAM starting at vram_start_gpfn by
+ * taking nr_pages of backing memory from backing_start_pgfn onwards.
+ *
+ * The guest physical memory region at backing_start_gpfn must
+ * currently be populated with regular memory (such as that from
+ * xendevicemodel_populate_ram) and will become unmapped as a result
+ * of this call.
+ *
+ * The memory region will be given appropriate cache properties for
+ * video RAM.
+ *
+ * On success *r_vram will be set to an opaque cookie.
+ */
+struct xendevicemodel_vram;
+int xendevicemodel_create_vram_region(xendevicemodel_handle *dm,
+ xen_pfn_t vram_start_gpfn,
+ xen_pfn_t backing_start_gpfn,
+ size_t nr_pages,
+ struct xendevicemodel_vram **r_vram);
+
+/*
+ * Undoes (perhaps partially) the effects of a previous
+ * xendevicemodel_populate_vram. Memory which was previously moved
+ * from backing_start_gpfn to vram_start_gpfn will be returned to its
+ * original location.
+ *
+ * The address space at vram_start_gpfn will become unmapped and the
+ * memory at backing_start_gpfn will have cache properties suitable
+ * for standard RAM.
+ *
+ * probably undo the cacheattr, done on populate, which current QEMU
+ * code does not do.
+ *
+ * XXX perhaps have the handle cache a single instance of populate
+ * vram and have this function undo it with no additional arguments
+ * (and have populate EBUSY o/w).
+ */
+int xendevicemodel_destroy_vram(xendevicemodel_handle *dm,
+ struct xendevicemodel_vram *vram,
+ xen_pfn_t vram_start_gpfn,
+ xen_pfn_t backing_start_gpfn,
+ size_t nr_pages);
+
+/* XXX only one at a time (globally, not even per vram), must be a
+ * sub-region of vram */
+/*
+ * Useful to have a start, stop, sync calls, with a single hyercall buffer? */
+int xendevicemodel_vram_dirtybitmap(xendevicemodel_handle *dm,
+ struct xendevicemodel_vram *vram,
+ start, length);
+
+#endif
+
#endif
/*
* Local variables: