[Spice-devel] viewing continuous guest virtual memory as continuous in qemu
kraxel at redhat.com
Tue Oct 11 04:28:12 PDT 2011
> AFAIU this works only when the guest allocates a continuous range of
> physical pages. This is a large requirement from the guest, which I'd
> like to drop.
Is it? The world is moving to huge pages, with all the stuff needed for
it like moving around userspace pages to compact memory and make huge
page allocation easier. I think these days it is alot easier to
allocate 2M of continuous physical memory than it used to be a few years
ago. At least on linux, dunno about windows.
When allocating stuff at boot time (say qxl kms driver) allocating even
larger chunks shouldn't be a big issue. And having a single big guest
memory chunk, then register that as qxl memory slot is what works best
with the existing interfaces I guess.
Another option we can think about is a 64bit PCI bar for the surfaces
which can be moved out of the low 4G.
> So I would like to have the guest use a regular
> allocator, generating for instance two sequential pages in virtual
> memory that are scattered in physical memory. Those two physical
> guest page addresses (gp1 and gp2) correspond to two host virtual
> memory addresses (hv1, hv2). I would now like to provide to
> spice-server a single virtual address p that maps to those two pages
> in sequence.
Playing mapping tricks like this doesn't come for free. When doing it
this way we probaby still want to register a big chunk of memory as qxl
memory slot so we have the mapping cost only once, not for each and
every surface we create and destroy.
More information about the Spice-devel