On 30/12/2009 13:25, "LIU Wei" <liuw@liuw.name> wrote:
>
> So, I do following experiment. All operations are done in the
> hypervisor, in a hypercall written by myself:
>
> 1. provide a mfn, denoted as maddr, which refers to a machine frame of
> an running domain.
First of all, an mfn is not the same as a maddr. An mfn represents a range
of maddrs, in the range mfn<<PAGE_SHIFT to
(mfn<<PAGE_SHIFT)+PAGE_SIZE-1.
Basically you need to shift an mfn left by PAGE_SHIFT before passing to
__va().
> 2. calculate vaddr=__va(maddr) .
Secondly, only 64-bit hypervisor has all memory mapped all the time. If you
are running a 32-bit hypervisor then you have to use
map_domain_page()/unmap_domain_page() interfaces to dynamically map/unmap
arbitrary memory pages.
-- Keir
> 3. access this page through vaddr.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel