[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Sharing dom0 memory with hypervisor across hypercall
Hi, For a research project implementation, I'm trying to allocate a large buffer of memory in dom0, which would then be passed to the hypervisor during a hypercall. I've seen examples of this in xc_domain_save where a dirty bitmap is passed during a log-dirty hypercall to get the log-dirty status of pages. It seems relatively straightforward in its use of guest handles and copy_to_user(). My situation is different in that the hypervisor must copy to the shared memory buffer allocated by dom0 not during the hypervisor call, but upon subsequent faults of another guest domain(specifically, page faults). The copy_to_user() method would fail because I would not be in dom0's address space, but in a guest domain's address space. My approach was to provide a guest handle to the dom0 allocated buffer via a hypercall. The hypercall then determines the mfns of all the pages of the dom0 buffer and stores this in a data structure in the hypervisor. The fault handler then maps the buffer pages into the hypervisor address space using the mfns previousy determined during the hypercall. The fault handler can then copy into dom0's buffer. Am I on the right track or is this not feasible? My implementation does not seem to work correctly. I allocate a buffer in dom0 using xg_memalign(), pin it down with lock_pages(), and perform a hypercall in which I pass the virtual address of the buffer via a guest_handle. In the hypervisor, the hypercall translates the virtual address to an mfn by walking dom0's page tables. These actions seem to work correctly. The fault handler maps the mfn of the buffer using map_domain_page, and a copy is then done. This seems to fail. Any ideas? Have I completely misunderstood something? Thanks, Mike -- msun@xxxxxxxxxx http://msun.bluespot.org _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |