qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC][PATCH] File-backed memory maps


From: Nathan Baum
Subject: Re: [Qemu-devel] [RFC][PATCH] File-backed memory maps
Date: Fri, 18 Sep 2009 16:05:48 +0100

On Fri, 2009-09-18 at 14:59 +0100, Jamie Lokier wrote:
> Nathan Baum wrote:
> > makes two files named "prefix.vga" and "prefix.bios" which contain the
> > respective memory regions. The maps I've named are 640k, before_4g,
> > after_4g, vga, bios and option_rom.
> > 
> > I'm mainly interested in the idea of moving the VNC server into its own
> > process. It would listen for connections as usual and then send
> > framebuffer updates from the file. Doing that also requires a
> > side-channel for communicating graphics mode updates and peripheral
> > input between QEMU and the VNC server. (Something like "-mouse
> > <char-dev-spec> -keyboard <char-dev-spec>", perhaps?)
> 
> Are there any cache coherency issues?

Hmm. I expect so.

I'm not sure what the consequences of this are, or whether cache
decoherence itself is the major issue. Even if cache coherence is
guaranteed, the contents of VRAM can change whilst the "display server"
is processing it, likely with undesirable results, unless it were double
buffered.

If, upon a dpy_update, VRAM was blitted to "prefix.vga" which we then
msync(), a display server could be sure of always seeing its copy of the
VRAM in a consistent state. It seems to me that might as well be
implemented as the new display type I mentioned later in my post, rather
than a double-buffered version of this more general memory sharing
feature (who wants to be blitting 4GB of RAM around anyway?). I assume
that with that arrangement, cache decoherence wouldn't be an issue on
any platform.

I'm not sure that would leave this patch with much to do. :-)

> On architectures other than x86, sometimes data written by one process
> is not visible to another process mapping the same file, until the
> writing process flushes it's cache for those pages.  Whether that's
> necessary depends on the address that pages are mapped to.  Afaik,
> normally Linux chooses an address where this issue is avoided, but if
> you specify it with MAP_FIXED (or whatever KVM does to map pages),
> then there's cache coherency to deal with.

> -- Jamie






reply via email to

[Prev in Thread] Current Thread [Next in Thread]