[Spice-devel] viewing continuous guest virtual memory as continuous in qemu

Gerd Hoffmann kraxel at redhat.com
Tue Oct 11 04:28:12 PDT 2011


   Hi,

> 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.

cheers,
   Gerd



More information about the Spice-devel mailing list