From: Avi K. <av...@qu...> - 2008-01-15 17:53:17
|
Christoph Lameter wrote: > On Tue, 15 Jan 2008, Avi Kivity wrote: > > >>> Duh. Impossible. Two instances of Linux cannot share page structs. So how >>> are you doing this? Or is this just an idea? >>> >> I was describing one Linux host running two guest instances. The page structs >> are in the host, so they are shared by mmap(). >> > > Ahh.. Okay I was talking about a guest exporting its memory to another > guest. > That's not very different, if they are on the same host? > > >> kvm userspace is just an ordinary host process, it can mmap() any file it >> likes and then assign that virtual memory range to the guest (as guest >> physical memory). >> > > But then the guest does not have its own page struct to manage the memory. > > Why not? It's just a block of memory as far as the guest is concerned. It's entirely up to it whether to create page structs or not. Example: qemu 1: p = mmap("/dev/shm/blah", size, ... ); ioctl(vm_fd, KVM_CREATE_MEMORY_REGION_USER, { p, size, 0x10000000, ... }); qemu 2: p = mmap("/dev/shm/blah", size, ... ); ioctl(vm_fd, KVM_CREATE_MEMORY_REGION_USER, { p, size, 0x10000000, ... }); Physical address 0x10000000, of both guests, would map to the same page. Of course, ordinary Linux kernels can't do much with memory that is shared with another guest. I've a feeling we need a whiteboard. -- error compiling committee.c: too many arguments to function |